test-setup.ts 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import { test as base } from '@playwright/test';
  2. import { readFileSync } from 'fs';
  3. import { join, dirname } from 'path';
  4. import { fileURLToPath } from 'url';
  5. import { AdminLoginPage } from '../pages/admin/login.page';
  6. import { DashboardPage } from '../pages/admin/dashboard.page';
  7. import { UserManagementPage } from '../pages/admin/user-management.page';
  8. import { DisabilityPersonManagementPage } from '../pages/admin/disability-person.page';
  9. import { RegionManagementPage } from '../pages/admin/region-management.page';
  10. import { OrderManagementPage } from '../pages/admin/order-management.page';
  11. import { PlatformManagementPage } from '../pages/admin/platform-management.page';
  12. import { CompanyManagementPage } from '../pages/admin/company-management.page';
  13. import { ChannelManagementPage } from '../pages/admin/channel-management.page';
  14. const __filename = fileURLToPath(import.meta.url);
  15. const __dirname = dirname(__filename);
  16. const testUsers = JSON.parse(readFileSync(join(__dirname, '../fixtures/test-users.json'), 'utf-8'));
  17. type Fixtures = {
  18. adminLoginPage: AdminLoginPage;
  19. dashboardPage: DashboardPage;
  20. userManagementPage: UserManagementPage;
  21. disabilityPersonPage: DisabilityPersonManagementPage;
  22. regionManagementPage: RegionManagementPage;
  23. orderManagementPage: OrderManagementPage;
  24. platformManagementPage: PlatformManagementPage;
  25. companyManagementPage: CompanyManagementPage;
  26. channelManagementPage: ChannelManagementPage;
  27. testUsers: typeof testUsers;
  28. };
  29. export const test = base.extend<Fixtures>({
  30. adminLoginPage: async ({ page }, use) => {
  31. await use(new AdminLoginPage(page));
  32. },
  33. dashboardPage: async ({ page }, use) => {
  34. await use(new DashboardPage(page));
  35. },
  36. userManagementPage: async ({ page }, use) => {
  37. await use(new UserManagementPage(page));
  38. },
  39. disabilityPersonPage: async ({ page }, use) => {
  40. await use(new DisabilityPersonManagementPage(page));
  41. },
  42. regionManagementPage: async ({ page }, use) => {
  43. await use(new RegionManagementPage(page));
  44. },
  45. orderManagementPage: async ({ page }, use) => {
  46. await use(new OrderManagementPage(page));
  47. },
  48. platformManagementPage: async ({ page }, use) => {
  49. await use(new PlatformManagementPage(page));
  50. },
  51. companyManagementPage: async ({ page }, use) => {
  52. await use(new CompanyManagementPage(page));
  53. },
  54. channelManagementPage: async ({ page }, use) => {
  55. await use(new ChannelManagementPage(page));
  56. },
  57. testUsers: async ({}, use) => {
  58. await use(testUsers);
  59. },
  60. });
  61. // 在所有测试前设置测试模式标志
  62. test.beforeEach(async ({ page }) => {
  63. await page.addInitScript(() => {
  64. (window as any).__PLAYWRIGHT_TEST__ = true;
  65. });
  66. });
  67. export { expect } from '@playwright/test';