test-setup.ts 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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. const __filename = fileURLToPath(import.meta.url);
  16. const __dirname = dirname(__filename);
  17. const testUsers = JSON.parse(readFileSync(join(__dirname, '../fixtures/test-users.json'), 'utf-8'));
  18. type Fixtures = {
  19. browser: Browser;
  20. adminLoginPage: AdminLoginPage;
  21. dashboardPage: DashboardPage;
  22. userManagementPage: UserManagementPage;
  23. disabilityPersonPage: DisabilityPersonManagementPage;
  24. regionManagementPage: RegionManagementPage;
  25. orderManagementPage: OrderManagementPage;
  26. platformManagementPage: PlatformManagementPage;
  27. companyManagementPage: CompanyManagementPage;
  28. channelManagementPage: ChannelManagementPage;
  29. enterpriseMiniPage: EnterpriseMiniPage;
  30. testUsers: typeof testUsers;
  31. };
  32. export const test = base.extend<Fixtures>({
  33. browser: async ({ browser }, use) => {
  34. await use(browser);
  35. },
  36. adminLoginPage: async ({ page }, use) => {
  37. await use(new AdminLoginPage(page));
  38. },
  39. dashboardPage: async ({ page }, use) => {
  40. await use(new DashboardPage(page));
  41. },
  42. userManagementPage: async ({ page }, use) => {
  43. await use(new UserManagementPage(page));
  44. },
  45. disabilityPersonPage: async ({ page }, use) => {
  46. await use(new DisabilityPersonManagementPage(page));
  47. },
  48. regionManagementPage: async ({ page }, use) => {
  49. await use(new RegionManagementPage(page));
  50. },
  51. orderManagementPage: async ({ page }, use) => {
  52. await use(new OrderManagementPage(page));
  53. },
  54. platformManagementPage: async ({ page }, use) => {
  55. await use(new PlatformManagementPage(page));
  56. },
  57. companyManagementPage: async ({ page }, use) => {
  58. await use(new CompanyManagementPage(page));
  59. },
  60. channelManagementPage: async ({ page }, use) => {
  61. await use(new ChannelManagementPage(page));
  62. },
  63. enterpriseMiniPage: async ({ page }, use) => {
  64. await use(new EnterpriseMiniPage(page));
  65. },
  66. testUsers: async (_fixtures: unknown, use) => {
  67. await use(testUsers);
  68. },
  69. });
  70. // 在所有测试前设置测试模式标志
  71. test.beforeEach(async ({ page }) => {
  72. await page.addInitScript(() => {
  73. (window as Window & { __PLAYWRIGHT_TEST__?: boolean }).__PLAYWRIGHT_TEST__ = true;
  74. });
  75. });
  76. export { expect } from '@playwright/test';