Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
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 .env på packages/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 |