test: initial end to end test with playwright
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
import { Page, expect } from '@playwright/test';
|
||||
|
||||
export const TEST_ADMIN = {
|
||||
username: 'admin',
|
||||
email: 'testadmin@example.com',
|
||||
password: 'TestPassword1!',
|
||||
};
|
||||
|
||||
/**
|
||||
* Log in as the test admin and wait until the main app is ready.
|
||||
*/
|
||||
export async function loginAsAdmin(page: Page) {
|
||||
await goToLoginPage(page);
|
||||
await page.locator('#login-username').fill(TEST_ADMIN.username);
|
||||
await page.locator('#login-password').fill(TEST_ADMIN.password);
|
||||
await page.locator('#login-panel button[type="submit"]').click();
|
||||
await expect(page.locator('#sidebar')).toBeVisible({ timeout: 15_000 });
|
||||
}
|
||||
|
||||
/**
|
||||
* Navigate to `/` and land on the login panel, handling the language selector
|
||||
* if it appears (fresh localStorage). The admin account is guaranteed to exist
|
||||
* because globalSetup created it before any test ran.
|
||||
*/
|
||||
export async function goToLoginPage(page: Page) {
|
||||
await page.goto('/');
|
||||
|
||||
// Both panels start with .hidden — wait for JS to reveal one.
|
||||
await page.waitForSelector('#language-panel:not(.hidden), #login-panel:not(.hidden)');
|
||||
|
||||
if (await page.locator('#language-panel').isVisible()) {
|
||||
await page.locator('#language-continue').click();
|
||||
}
|
||||
|
||||
await expect(page.locator('#login-panel')).toBeVisible();
|
||||
}
|
||||
Reference in New Issue
Block a user