Odkaz na konfiguráciu

Tento článok dokumentuje konfiguráciu platformy Playwright použitú ukážkovými testami a vysvetľuje, ako ju prispôsobiť pre svoje vlastné prostredie.

playwright.config.ts

Konfiguračný súbor sa nachádza na adrese 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',
});

Možnosti konfigurácie kľúča

V nasledujúcich častiach sú vysvetlené najdôležitejšie nastavenia v konfiguračnom súbore a dátum ich zmeny.

fullyParallelworkers

Testy Power Platformy zdieľajú jedno prostredie Dataverse. Súbežné spustenie testov vytvorí konflikty medzi údajmi, ako sú napríklad dva testy, ktoré odstránia rovnaký záznam. Nastavte obe možnosti na serializáciu spustenia:

fullyParallel: false,
workers: 1,

Poznámka

Ak máte viacero prostredí, môžete každý projekt zväčšiť workers a izolovať v inom prostredí pomocou samostatných .env súborov alebo premenných na úrovni prostredia.

retries

Retries môže maskovať flakiness v CI. Použite funkciu retries: 1 CI na riešenie prechodných problémov so sieťou. Ak chcete získať okamžitú spätnú väzbu, nastavte retries: 0 ich lokálne:

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

trace, , screenshotvideo

Zaznamenanie diagnostiky len pri zlyhaní na šetrenie miesta na disku:

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

V CI sa artefakty nahrajú po spustení testu. Pozrite si tému Integrácia CI/CD.

projects

Použite projekty platformy Playwright na oddelenie testovacích balíkov plátna a modelom riadených aplikácií. Každý projekt môže používať iný stav úložiska:

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

Spustenie jedného projektu:

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

globalSetup

Pred všetkými testami sa skript globálneho nastavenia spustí raz. Overí stav overenia a spustí bezhlavé overovanie v prípade uplynutia platnosti alebo chýbajúceho stavu úložiska:

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

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

Kontrola overenia:

  • Súbor stavu úložiska existuje
  • Platnosť prístupového tokenu MSAL neuplynie (testy plátna/gen UX)
  • Súbory cookie relácie CRM sú prítomné a platné (testy MDA)

tsconfig.json

Súbor tsconfig.json ovláda nastavenia kompilácie TypeScript pre testovací balík:

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

.env Súbor

Súbor .env v súbore packages/e2e-tests/.env nastaví premenné prostredia pre lokálne spustenia. Úplný odkaz nájdete v téme Premenné prostredia.

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 Skripty

Nasledujúce npm skripty sú k dispozícii v packages/e2e-tests/package.json pre overovanie a vykonanie testu:

Skript Príkaz Description
auth:headful ts-node auth/auth-maker-portal.ts Interaktívne overovanie pre Power Apps (testy plátna)
auth:mda:headful ts-node auth/auth-mda.ts Interaktívne overovanie pre modelom riadené aplikácie
auth ts-node auth/auth-maker-portal.ts --headless Bezhlavá overovanie (CI)
auth:mda ts-node auth/auth-mda.ts --headless Overovanie bezhlavej aplikácie riadenej modelom (CI)
test playwright test Spustiť všetky testy
test:ui playwright test --ui Spustenie pomocou používateľského rozhrania služby Playwright
test:debug playwright test --debug Spustenie pomocou inšpektora ladenia

Ďalšie kroky

Pozrite tiež