test-setup.ts 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import { test as base, type Browser } 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. import { EnterpriseMiniPage } from '../pages/mini/enterprise-mini.page';
  15. import { TalentMiniPage } from '../pages/mini/talent-mini.page';
  16. const __filename = fileURLToPath(import.meta.url);
  17. const __dirname = dirname(__filename);
  18. const testUsers = JSON.parse(readFileSync(join(__dirname, '../fixtures/test-users.json'), 'utf-8'));
  19. type Fixtures = {
  20. browser: Browser;
  21. adminLoginPage: AdminLoginPage;
  22. dashboardPage: DashboardPage;
  23. userManagementPage: UserManagementPage;
  24. disabilityPersonPage: DisabilityPersonManagementPage;
  25. regionManagementPage: RegionManagementPage;
  26. orderManagementPage: OrderManagementPage;
  27. platformManagementPage: PlatformManagementPage;
  28. companyManagementPage: CompanyManagementPage;
  29. channelManagementPage: ChannelManagementPage;
  30. enterpriseMiniPage: EnterpriseMiniPage;
  31. talentMiniPage: TalentMiniPage;
  32. testUsers: typeof testUsers;
  33. };
  34. export const test = base.extend<Fixtures>({
  35. browser: async ({ browser }, use) => {
  36. await use(browser);
  37. },
  38. adminLoginPage: async ({ page }, use) => {
  39. await use(new AdminLoginPage(page));
  40. },
  41. dashboardPage: async ({ page }, use) => {
  42. await use(new DashboardPage(page));
  43. },
  44. userManagementPage: async ({ page }, use) => {
  45. await use(new UserManagementPage(page));
  46. },
  47. disabilityPersonPage: async ({ page }, use) => {
  48. await use(new DisabilityPersonManagementPage(page));
  49. },
  50. regionManagementPage: async ({ page }, use) => {
  51. await use(new RegionManagementPage(page));
  52. },
  53. orderManagementPage: async ({ page }, use) => {
  54. await use(new OrderManagementPage(page));
  55. },
  56. platformManagementPage: async ({ page }, use) => {
  57. await use(new PlatformManagementPage(page));
  58. },
  59. companyManagementPage: async ({ page }, use) => {
  60. await use(new CompanyManagementPage(page));
  61. },
  62. channelManagementPage: async ({ page }, use) => {
  63. await use(new ChannelManagementPage(page));
  64. },
  65. enterpriseMiniPage: async ({ page }, use) => {
  66. await use(new EnterpriseMiniPage(page));
  67. },
  68. talentMiniPage: async ({ page }, use) => {
  69. await use(new TalentMiniPage(page));
  70. },
  71. // 自定义 fixture 不需要依赖其他 fixtures 时,使用空对象解构参数
  72. testUsers: async ({ _ }: { _: void }, use) => {
  73. await use(testUsers);
  74. },
  75. });
  76. // 在所有测试前设置测试模式标志
  77. test.beforeEach(async ({ page }) => {
  78. await page.addInitScript(() => {
  79. (window as Window & { __PLAYWRIGHT_TEST__?: boolean }).__PLAYWRIGHT_TEST__ = true;
  80. });
  81. });
  82. export { expect } from '@playwright/test';