Konfigurationsreference

I denne artikel dokumenteres den konfiguration af afspilningsforfatteren, der bruges af eksempeltestene, og det forklares, hvordan du tilpasser den til dit eget miljø.

playwright.config.ts

Konfigurationsfilen er på 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',
});

Indstillinger for nøglekonfiguration

I følgende afsnit forklares de vigtigste indstillinger i konfigurationsfilen, og hvornår de skal ændres.

fullyParallel Og workers

Power Platform-test deler et enkelt Dataverse-miljø. Hvis du kører test parallelt, oprettes der datakonflikter, f.eks. to test, der sletter den samme post. Angiv begge indstillinger for at serialisere udførelsen:

fullyParallel: false,
workers: 1,

Bemærkning

Hvis du har flere miljøer, kan du øge workers og isolere hvert projekt til et andet miljø ved hjælp af separate .env filer eller variabler på miljøniveau.

retries

Nye forsøg kan maskere flakiness i CI. Bruges retries: 1 i CI til at håndtere midlertidige netværksproblemer. Angiv retries: 0 lokalt for at få øjeblikkelig feedback:

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

trace, , , screenshotvideo

Hent kun diagnosticering, hvis der ikke kunne spares diskplads:

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

I CI uploades artefakter efter testkørslen. Se CI/CD-integration.

projects

Brug Playwright-projekter til at adskille lærreds- og modeldrevne testpakker. Hvert projekt kan bruge en anden lagertilstand:

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

Kør et enkelt projekt:

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

globalSetup

Det globale installationsscript kører én gang før alle test. Den validerer godkendelsestilstanden og kører en godkendelse uden hoved, hvis lagertilstanden er udløbet eller mangler:

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

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

Valideringskontrollen:

  • Lagringstilstandsfilen findes
  • MSAL-adgangstokenet er ikke udløbet (lærreds-/gen-UX-test)
  • CRM-sessionscookies er til stede og gyldige (MDA-test)

tsconfig.json

Filen tsconfig.json styrer indstillingerne for TypeScript-kompilering for testpakken:

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

.env Fil

Filen .env med packages/e2e-tests/.env angiver miljøvariabler for lokale kørsler. Du kan se den komplette reference under Miljøvariabler.

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 Scripts

Følgende npm-scripts er tilgængelige i packages/e2e-tests/package.json til godkendelse og udførelse af test:

Script Kommando Beskrivelse
auth:headful ts-node auth/auth-maker-portal.ts Interaktiv godkendelse til Power Apps (lærredstest)
auth:mda:headful ts-node auth/auth-mda.ts Interaktiv godkendelse til modeldrevne apps
auth ts-node auth/auth-maker-portal.ts --headless Hovedløs godkendelse (CI)
auth:mda ts-node auth/auth-mda.ts --headless Hovedløs modeldreven appgodkendelse (CI)
test playwright test Kør alle test
test:ui playwright test --ui Kør med playwright-brugergrænseflade
test:debug playwright test --debug Kør med fejlfindingsfremviser

Næste trin

Se også