import { test as dataTest, TestData } from './fixtures/test-data'; import { LoginPage } from './pages/LoginPage'; import { DashboardPage } from './pages/DashboardPage'; import { MemberManagementPage } from './pages/MemberManagementPage'; import { GroupCourseManagementPage } from './pages/GroupCourseManagementPage'; import { CoachManagementPage } from './pages/CoachManagementPage'; import { StatisticsDashboardPage } from './pages/StatisticsDashboardPage'; import { UserManagementPage } from './pages/UserManagementPage'; import { RoleManagementPage } from './pages/RoleManagementPage'; import { MenuManagementPage } from './pages/MenuManagementPage'; import { DictionaryManagementPage } from './pages/DictionaryManagementPage'; import { SystemConfigPage } from './pages/SystemConfigPage'; import { FileManagementPage } from './pages/FileManagementPage'; import { NotificationPage } from './pages/NotificationPage'; import { OperationLogPage } from './pages/OperationLogPage'; import { LoginLogPage } from './pages/LoginLogPage'; import { ExceptionLogPage } from './pages/ExceptionLogPage'; /** * 统一 Playwright fixtures。 * *

在 {@link TestData} 的基础上注入所有 Page Object,使新 E2E 用例不再直接写选择器。 * 测试文件统一通过 {@code import { test, expect } from '../fixtures'} 引入。

*/ type PageFixtures = { loginPage: LoginPage; dashboardPage: DashboardPage; memberManagementPage: MemberManagementPage; groupCourseManagementPage: GroupCourseManagementPage; coachManagementPage: CoachManagementPage; statisticsDashboardPage: StatisticsDashboardPage; userManagementPage: UserManagementPage; roleManagementPage: RoleManagementPage; menuManagementPage: MenuManagementPage; dictionaryManagementPage: DictionaryManagementPage; systemConfigPage: SystemConfigPage; fileManagementPage: FileManagementPage; notificationPage: NotificationPage; operationLogPage: OperationLogPage; loginLogPage: LoginLogPage; exceptionLogPage: ExceptionLogPage; }; export const test = dataTest.extend({ loginPage: async ({ page }, use) => { await use(new LoginPage(page)); }, dashboardPage: async ({ page }, use) => { await use(new DashboardPage(page)); }, memberManagementPage: async ({ page }, use) => { await use(new MemberManagementPage(page)); }, groupCourseManagementPage: async ({ page }, use) => { await use(new GroupCourseManagementPage(page)); }, coachManagementPage: async ({ page }, use) => { await use(new CoachManagementPage(page)); }, statisticsDashboardPage: async ({ page }, use) => { await use(new StatisticsDashboardPage(page)); }, userManagementPage: async ({ page }, use) => { await use(new UserManagementPage(page)); }, roleManagementPage: async ({ page }, use) => { await use(new RoleManagementPage(page)); }, menuManagementPage: async ({ page }, use) => { await use(new MenuManagementPage(page)); }, dictionaryManagementPage: async ({ page }, use) => { await use(new DictionaryManagementPage(page)); }, systemConfigPage: async ({ page }, use) => { await use(new SystemConfigPage(page)); }, fileManagementPage: async ({ page }, use) => { await use(new FileManagementPage(page)); }, notificationPage: async ({ page }, use) => { await use(new NotificationPage(page)); }, operationLogPage: async ({ page }, use) => { await use(new OperationLogPage(page)); }, loginLogPage: async ({ page }, use) => { await use(new LoginLogPage(page)); }, exceptionLogPage: async ({ page }, use) => { await use(new ExceptionLogPage(page)); }, }); export { expect } from '@playwright/test'; export type { TestUser, TestRole, TestMenu } from './fixtures/test-data';