Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
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 |