Del via


Konfigurasjonsreferanse

Denne artikkelen dokumenterer Playwright-konfigurasjonen som brukes av eksempeltestene, og forklarer hvordan du tilpasser den til ditt eget miljø.

playwright.config.ts

Konfigurasjonsfilen 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',
});

Alternativer for nøkkelkonfigurasjon

Avsnittene nedenfor forklarer de viktigste innstillingene i konfigurasjonsfilen og når du skal endre dem.

fullyParallel Og workers

Power Platform-tester deler ett enkelt dataversmiljø. Kjøring av tester parallelt oppretter datakonflikter, for eksempel to tester som sletter samme post. Angi begge alternativene for å serialisere kjøring:

fullyParallel: false,
workers: 1,

Bemerkning

Hvis du har flere miljøer, kan du øke workers og isolere hvert prosjekt til et annet miljø ved hjelp av separate .env filer eller variabler på miljønivå.

retries

Nye forsøk kan maskere flakiness i CI. Bruk retries: 1 i CI til å håndtere midlertidige nettverksproblemer. Angi retries: 0 lokalt for å få umiddelbar tilbakemelding:

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

trace, , screenshotvideo

Oppfang diagnostikk bare ved manglende lagring av diskplass:

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

I CI lastes artefakter opp etter testkjøringen. Se CI/CD-integrasjon.

projects

Bruk Playwright-prosjekter til å skille lerrets- og modelldrevne testpakker. Hvert prosjekt kan bruke en annen lagringstilstand:

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

Kjør ett enkelt prosjekt:

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

globalSetup

Det globale konfigurasjonsskriptet kjører én gang før alle testene. Den validerer godkjenningstilstanden og kjører hodeløs godkjenning hvis lagringstilstanden er utløpt eller mangler:

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

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

Valideringskontrollene:

  • Lagringsstatusfilen finnes
  • MSAL-tilgangstokenet er ikke utløpt (lerrets-/gen-UX-tester)
  • CRM-øktinformasjonskapsler finnes og er gyldige (MDA-tester)

tsconfig.json

Filen tsconfig.json kontrollerer innstillingene 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 Filen

Filen .envpackages/e2e-tests/.env angir miljøvariabler for lokale kjøringer. Hvis du vil ha den fullstendige referansen, kan du se 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 Skript

Følgende npm-skript er tilgjengelige packages/e2e-tests/package.json for godkjenning og testkjøring:

Skript Kommando Beskrivelse
auth:headful ts-node auth/auth-maker-portal.ts Interaktiv godkjenning for Power Apps (lerretstester)
auth:mda:headful ts-node auth/auth-mda.ts Interaktiv godkjenning for modelldrevne apper
auth ts-node auth/auth-maker-portal.ts --headless Hodeløs godkjenning (CI)
auth:mda ts-node auth/auth-mda.ts --headless Hodeløs modelldrevet app-godkjenning (CI)
test playwright test Kjør alle tester
test:ui playwright test --ui Kjør med playwright-brukergrensesnittet
test:debug playwright test --debug Kjør med feilsøkingsinspeksjon

Neste trinn

Se også