35 lines
1.2 KiB
TypeScript
35 lines
1.2 KiB
TypeScript
import { test, expect } from '@playwright/test';
|
|
|
|
test.describe('Welcome page', () => {
|
|
test.beforeEach(async ({ page }) => {
|
|
await page.route('**/api/review/feed**', (route) =>
|
|
route.fulfill({
|
|
status: 200,
|
|
contentType: 'application/json',
|
|
body: JSON.stringify({ code: 200, data: [] }),
|
|
}),
|
|
);
|
|
|
|
await page.goto('/login');
|
|
await page.evaluate(() => localStorage.setItem('isLoggedIn', 'true'));
|
|
await page.goto('/welcome');
|
|
await page.waitForSelector('.welcome-page', { timeout: 10_000 });
|
|
});
|
|
|
|
test('shows welcome banner and quick action cards', async ({ page }) => {
|
|
await expect(page.locator('.page-title')).toContainText('欢迎回来');
|
|
await expect(page.locator('.page-subtitle')).toBeVisible();
|
|
await expect(page.locator('.quick-card')).toHaveCount(2);
|
|
});
|
|
|
|
test('clicking start study navigates to /study', async ({ page }) => {
|
|
await page.locator('.quick-card').first().locator('button').click();
|
|
await expect(page).toHaveURL(/\/study/);
|
|
});
|
|
|
|
test('clicking start review navigates to /review', async ({ page }) => {
|
|
await page.locator('.quick-card').nth(1).locator('button').click();
|
|
await expect(page).toHaveURL(/\/review/);
|
|
});
|
|
});
|