2
0

test-setup.ts 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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. testUsers: async ({ _ }, use) => {
  72. await use(testUsers);
  73. },
  74. });
  75. // 在所有测试前设置测试模式标志
  76. test.beforeEach(async ({ page }) => {
  77. await page.addInitScript(() => {
  78. (window as Window & { __PLAYWRIGHT_TEST__?: boolean }).__PLAYWRIGHT_TEST__ = true;
  79. });
  80. });
  81. export { expect } from '@playwright/test';