2022-09-02 22:18:23 +03:00
import { test , expect } from '@playwright/test' ;
2024-06-28 19:15:51 +03:00
import { login_user , save_visual , load_logged_in_context } from './utils_e2e.ts' ;
2022-09-02 22:18:23 +03:00
test . beforeAll ( async ( { browser } , workerInfo ) = > {
await login_user ( browser , workerInfo , 'user2' ) ;
} ) ;
2024-06-28 19:15:51 +03:00
test ( 'homepage' , async ( { page } ) = > {
2022-09-02 22:18:23 +03:00
const response = await page . goto ( '/' ) ;
2024-07-03 18:48:14 +03:00
expect ( response ? . status ( ) ) . toBe ( 200 ) ; // Status OK
2022-09-02 22:18:23 +03:00
await expect ( page ) . toHaveTitle ( /^Gitea: Git with a cup of tea\s*$/ ) ;
await expect ( page . locator ( '.logo' ) ) . toHaveAttribute ( 'src' , '/assets/img/logo.svg' ) ;
} ) ;
2024-06-28 19:15:51 +03:00
test ( 'register' , async ( { page } , workerInfo ) = > {
2022-09-02 22:18:23 +03:00
const response = await page . goto ( '/user/sign_up' ) ;
2024-07-03 18:48:14 +03:00
expect ( response ? . status ( ) ) . toBe ( 200 ) ; // Status OK
await page . locator ( 'input[name=user_name]' ) . fill ( ` e2e-test- ${ workerInfo . workerIndex } ` ) ;
await page . locator ( 'input[name=email]' ) . fill ( ` e2e-test- ${ workerInfo . workerIndex } @test.com ` ) ;
await page . locator ( 'input[name=password]' ) . fill ( 'test123test123' ) ;
await page . locator ( 'input[name=retype]' ) . fill ( 'test123test123' ) ;
2023-09-19 01:05:31 +03:00
await page . click ( 'form button.ui.primary.button:visible' ) ;
2022-09-02 22:18:23 +03:00
// Make sure we routed to the home page. Else login failed.
2024-07-03 18:48:14 +03:00
expect ( page . url ( ) ) . toBe ( ` ${ workerInfo . project . use . baseURL } / ` ) ;
2024-03-23 02:54:09 +03:00
await expect ( page . locator ( '.secondary-nav span>img.ui.avatar' ) ) . toBeVisible ( ) ;
2023-08-08 18:25:05 +03:00
await expect ( page . locator ( '.ui.positive.message.flash-success' ) ) . toHaveText ( 'Account was successfully created. Welcome!' ) ;
2022-09-02 22:18:23 +03:00
save_visual ( page ) ;
} ) ;
2024-06-28 19:15:51 +03:00
test ( 'login' , async ( { page } , workerInfo ) = > {
2022-09-02 22:18:23 +03:00
const response = await page . goto ( '/user/login' ) ;
2024-07-03 18:48:14 +03:00
expect ( response ? . status ( ) ) . toBe ( 200 ) ; // Status OK
2022-09-02 22:18:23 +03:00
2024-07-03 18:48:14 +03:00
await page . locator ( 'input[name=user_name]' ) . fill ( ` user2 ` ) ;
await page . locator ( 'input[name=password]' ) . fill ( ` password ` ) ;
2023-09-19 01:05:31 +03:00
await page . click ( 'form button.ui.primary.button:visible' ) ;
2022-09-02 22:18:23 +03:00
2024-06-28 19:15:51 +03:00
await page . waitForLoadState ( 'networkidle' ) ; // eslint-disable-line playwright/no-networkidle
2022-09-02 22:18:23 +03:00
2024-07-03 18:48:14 +03:00
expect ( page . url ( ) ) . toBe ( ` ${ workerInfo . project . use . baseURL } / ` ) ;
2022-09-02 22:18:23 +03:00
save_visual ( page ) ;
} ) ;
2024-06-28 19:15:51 +03:00
test ( 'logged in user' , async ( { browser } , workerInfo ) = > {
2022-09-02 22:18:23 +03:00
const context = await load_logged_in_context ( browser , workerInfo , 'user2' ) ;
const page = await context . newPage ( ) ;
await page . goto ( '/' ) ;
// Make sure we routed to the home page. Else login failed.
2024-07-03 18:48:14 +03:00
expect ( page . url ( ) ) . toBe ( ` ${ workerInfo . project . use . baseURL } / ` ) ;
2022-09-02 22:18:23 +03:00
save_visual ( page ) ;
} ) ;