Конфигурациялық сілтеме

Бұл мақалада үлгі тесттерде қолданылатын Playwright конфигурациясы құжатталып, оны өз ортаңызға қалай бейімдеуге болатынын түсіндіреді.

playwright.config.ts

Конфигурация файлы келесі мекенжайда packages/e2e-tests/playwright.config.tsорналасқан:

import { defineConfig, devices } from '@playwright/test';
import path from 'path';
import { getStorageStatePath } from 'power-platform-playwright-toolkit';
import dotenv from 'dotenv';

dotenv.config();

const storageStatePath = getStorageStatePath(process.env.MS_AUTH_EMAIL!);
const mdaStorageStatePath = path.join(
  path.dirname(storageStatePath),
  `state-mda-${process.env.MS_AUTH_EMAIL}.json`
);

export default defineConfig({
  testDir: './tests',
  fullyParallel: false,         // Power Platform tests share a single org; run serially
  forbidOnly: !!process.env.CI,
  retries: process.env.CI ? 1 : 0,
  workers: 1,                   // Single worker prevents auth conflicts
  reporter: [
    ['html', { outputFolder: 'playwright-report' }],
    ['junit', { outputFile: 'test-results/results.xml' }],
  ],
  use: {
    baseURL: process.env.CANVAS_APP_URL,
    trace: 'on-first-retry',
    screenshot: 'only-on-failure',
    video: 'retain-on-failure',
  },
  projects: [
    {
      name: 'canvas',
      use: {
        ...devices['Desktop Chrome'],
        storageState: storageStatePath,
      },
      testMatch: '**/canvas/**/*.test.ts',
    },
    {
      name: 'mda',
      use: {
        ...devices['Desktop Chrome'],
        storageState: mdaStorageStatePath,
      },
      testMatch: '**/mda/**/*.test.ts',
    },
  ],
  globalSetup: './globals/global-setup',
  globalTeardown: './globals/global-teardown',
});

Негізгі конфигурация параметрлері

Келесі бөлімдерде конфигурация файлындағы ең маңызды баптаулар және оларды қашан өзгерту керектігі түсіндіріледі.

fullyParallel және workers

Power Platform тесттері бір Dataverse ортасын пайдаланады. Тесттерді параллель жүргізу деректер қайшылықтарын тудырады, мысалы, екі тест бір жазбаны өшіреді. Екі опцияны да тізбектеу үшін орнатыңыз:

fullyParallel: false,
workers: 1,

Ескертпе

Егер бірнеше орта болса, әр жобаны бөлек workers файлдар немесе орта деңгейіндегі айнымалылар арқылы әртүрлі ортаға ұлғайтып.env, оқшаулауға болады.

retries

Қайта тырысулар CI-дегі ақаулылықты жасыра алады. CI-де уақытша желі мәселелерін шешу үшін қолданыңыз retries: 1 . Жергілікті деңгейде дереу кері байланыс алу үшін орнатыңыз retries: 0 :

retries: process.env.CI ? 1 : 0,

trace, , screenshotvideo

Диск орнын үнемдеу сәтсіз болған жағдайда ғана диагностиканы жазып алу:

trace: 'on-first-retry',
screenshot: 'only-on-failure',
video: 'retain-on-failure',

CI-де артефактілер сынақтан кейін жүктеледі. CI/CD интеграциясын қараңыз.

projects

Playwright жобаларын Canvas пен модельге негізделген тест жиынтықтарын бөлу үшін қолданыңыз. Әр жоба әртүрлі сақтау күйін қолдана алады:

projects: [
  {
    name: 'canvas',
    use: { storageState: storageStatePath },
    testMatch: '**/canvas/**/*.test.ts',
  },
  {
    name: 'mda',
    use: { storageState: mdaStorageStatePath },
    testMatch: '**/mda/**/*.test.ts',
  },
],

Бір жобаны іске қосу:

npx playwright test --project=canvas
npx playwright test --project=mda

globalSetup

Жаһандық орнату скрипті барлық тесттерден бұрын бір рет орындалады. Ол аутентификация күйін растайды және сақтау күйі мерзімі өтіп кеткен немесе жоқ болса, headless аутентификацияны орындайды:

// global-setup.ts
import { validateAndRefreshAuthState } from './utils/validate-auth-state';

export default async function globalSetup() {
  await validateAndRefreshAuthState();
}

Тексеру тексерулері:

  • Сақтау күйі файлы бар
  • MSAL қолжетімділік токені мерзімі өтпеген (canvas/Gen UX тесттері)
  • CRM сессиясының cookie-файлдары бар және жарамды (MDA тесттері)

tsconfig.json

tsconfig.json Файл тест пакеті үшін TypeScript компиляциясын басқарады:

{
  "compilerOptions": {
    "target": "ES2020",
    "module": "commonjs",
    "strict": true,
    "esModuleInterop": true,
    "resolveJsonModule": true,
    "outDir": "dist",
    "rootDir": "."
  },
  "include": ["**/*.ts"],
  "exclude": ["node_modules", "dist"]
}

.env файл

.env Файл at packages/e2e-tests/.env жергілікті іске қосу үшін қоршаған орта айнымалыларын орнатады. Толық анықтамалық үшін Environment айнымалылары бөлімін қараңыз.

MS_AUTH_EMAIL=testuser@contoso.com
MS_AUTH_CREDENTIAL_TYPE=password
MS_USER_PASSWORD=<your-password>

CANVAS_APP_URL=https://apps.powerapps.com/play/<app-id>?tenantId=<tenant-id>
MODEL_DRIVEN_APP_URL=https://<org>.crm.dynamics.com/main.aspx?appid=<app-id>
CUSTOM_PAGE_NAME=AccountsCustomPage

package.json Сценарийлер

Аутентификация және тест орындау үшін келесі npm скрипттері packages/e2e-tests/package.json қолжетімді:

Скрипт Пәрмен Сипаттама
auth:headful ts-node auth/auth-maker-portal.ts Интерактивті аутентификация Power Apps (canvas tests)
auth:mda:headful ts-node auth/auth-mda.ts Модельге негізделген қосымшалар үшін интерактивті аутентификация
auth ts-node auth/auth-maker-portal.ts --headless Бассыз аутентификация (CI)
auth:mda ts-node auth/auth-mda.ts --headless Бассыз модельге негізделген қосымша аутентификация (CI)
test playwright test Барлық тесттерді жүргіз
test:ui playwright test --ui Playwright UI арқылы жүгіру
test:debug playwright test --debug Debug инспекторымен жұмыс істеу

Келесі қадамдар

Тағы қараңыз