79a66612bd
新增文件: - e2e/fixtures/test-data.ts - 测试数据固件 - e2e/fixtures/auth.ts - 认证固件 - e2e/fixtures/storage-state.ts - 存储状态固件 - e2e/fixtures/index.ts - 导出索引文件 功能特性: - 提供标准化的测试数据(新闻、产品、服务、案例) - 支持环境变量配置管理员账号 - 封装认证流程,简化测试编写 - 支持存储状态复用,提升测试效率 - 提供XSS等安全测试数据 技术说明: - 添加 ESLint 禁用注释,因为 Playwright fixture 的 use 函数不是 React Hook
30 lines
918 B
TypeScript
30 lines
918 B
TypeScript
/* eslint-disable react-hooks/rules-of-hooks */
|
|
import { test as base } from '@playwright/test';
|
|
import path from 'path';
|
|
|
|
const AUTH_FILE = path.join(__dirname, '../.auth/admin.json');
|
|
|
|
type StorageStateFixtures = {
|
|
adminStorageState: string;
|
|
};
|
|
|
|
export const test = base.extend<StorageStateFixtures>({
|
|
adminStorageState: async ({ browser }, use) => {
|
|
const context = await browser.newContext();
|
|
const page = await context.newPage();
|
|
|
|
await page.goto('/admin/login');
|
|
await page.fill('#email', process.env.ADMIN_EMAIL || 'admin@novalon.cn');
|
|
await page.fill('#password', process.env.ADMIN_PASSWORD || 'admin123456');
|
|
await page.click('button[type="submit"]');
|
|
await page.waitForURL(/\/admin(?!\/login)/);
|
|
|
|
await page.context().storageState({ path: AUTH_FILE });
|
|
await context.close();
|
|
|
|
await use(AUTH_FILE);
|
|
},
|
|
});
|
|
|
|
export { expect } from '@playwright/test';
|