Nota
L'accés a aquesta pàgina requereix autorització. Podeu provar d'iniciar la sessió o de canviar els directoris.
L'accés a aquesta pàgina requereix autorització. Podeu provar de canviar els directoris.
Aquest article documenta la configuració de Playwright utilitzada en les proves de mostra i explica com adaptar-la al teu propi entorn.
playwright.config.ts
El fitxer de configuració és a 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',
});
Opcions de configuració clau
Les seccions següents expliquen les configuracions més importants del fitxer de configuració i quan canviar-les.
fullyParallel i workers
Les proves de Power Platform comparteixen un únic entorn Dataverse. Executar proves en paral·lel genera conflictes de dades, com ara que dues proves esborrin el mateix registre. Configura ambdues opcions per serialitzar l'execució:
fullyParallel: false,
workers: 1,
Nota
Si tens diversos entorns, pots augmentar workers i aïllar cada projecte en un entorn diferent utilitzant fitxers separats .env o variables a nivell d'entorn.
retries
Els reintents poden amagar la descamació en el CI. Ús retries: 1 en CI per gestionar problemes de xarxa transitoris. Configura retries: 0 localment per rebre feedback immediat:
retries: process.env.CI ? 1 : 0,
trace, , screenshotvideo
Captura només diagnòstics en cas de fallada en estalviar espai al disc:
trace: 'on-first-retry',
screenshot: 'only-on-failure',
video: 'retain-on-failure',
En CI, els artefactes es pugen després de la prova. Vegeu integració CI/CD.
projects
Utilitza projectes de Playwright per separar conjunts de proves de llenç i models guiats. Cada projecte pot utilitzar un estat d'emmagatzematge diferent:
projects: [
{
name: 'canvas',
use: { storageState: storageStatePath },
testMatch: '**/canvas/**/*.test.ts',
},
{
name: 'mda',
use: { storageState: mdaStorageStatePath },
testMatch: '**/mda/**/*.test.ts',
},
],
Gestiona un sol projecte:
npx playwright test --project=canvas
npx playwright test --project=mda
globalSetup
L'script global de configuració s'executa una vegada abans de totes les proves. Valida l'estat d'autenticació i executa l'autenticació headless si l'estat d'emmagatzematge està expirat o falta:
// global-setup.ts
import { validateAndRefreshAuthState } from './utils/validate-auth-state';
export default async function globalSetup() {
await validateAndRefreshAuthState();
}
Les comprovacions de validació:
- Existeix el fitxer d'estat d'emmagatzematge
- El token d'accés MSAL no està caducat (tests de Canvas/Gen UX)
- Les galetes de sessió CRM són presents i vàlides (proves MDA)
tsconfig.json
El tsconfig.json fitxer controla la configuració de compilació TypeScript per al paquet de prova:
{
"compilerOptions": {
"target": "ES2020",
"module": "commonjs",
"strict": true,
"esModuleInterop": true,
"resolveJsonModule": true,
"outDir": "dist",
"rootDir": "."
},
"include": ["**/*.ts"],
"exclude": ["node_modules", "dist"]
}
.env Fitxer
El .env fitxer a packages/e2e-tests/.env estableix variables d'entorn per a execucions locals. Per a la referència completa, vegeu Variables d'entorn.
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 Guions
Els següents scripts npm estan disponibles per packages/e2e-tests/package.json a l'autenticació i execució de proves:
| Guió | Ordre | Descripció |
|---|---|---|
auth:headful |
ts-node auth/auth-maker-portal.ts |
Autenticació interactiva per a Power Apps (proves de canvas) |
auth:mda:headful |
ts-node auth/auth-mda.ts |
Autenticació interactiva per a aplicacions basades en models |
auth |
ts-node auth/auth-maker-portal.ts --headless |
Autenticació sense cap (CI) |
auth:mda |
ts-node auth/auth-mda.ts --headless |
Autenticació d'aplicacions guiades per models sense cap (CI) |
test |
playwright test |
Fes totes les proves |
test:ui |
playwright test --ui |
Executa amb la interfície Playwright |
test:debug |
playwright test --debug |
Executa amb l'inspector de depuració |