Pastaba.
Prieigai prie šio puslapio reikalingas įgaliojimas. Galite bandyti prisijungti arba pakeisti katalogus.
Prieigai prie šio puslapio reikalingas įgaliojimas. Galite bandyti pakeisti katalogus.
Šiame straipsnyje aprašoma "Playwright" konfigūracija, kurią naudoja pavyzdiniai testai, ir paaiškinama, kaip pritaikyti ją savo aplinkai.
playwright.config.ts
Konfigūracijos failas yra 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',
});
Raktų konfigūravimo parinktys
Tolesniuose skyriuose paaiškinti svarbiausi konfigūracijos failo parametrai ir kada juos pakeisti.
„fullyParallel“ ir „workers“
"Power Platform" testai bendrina vieną "Dataverse" aplinką. Vykdant testus lygiagrečiai sukuriami duomenų konfliktai, pvz., du bandymai naikina tą patį įrašą. Nustatykite abi parinktis, kad vykdymas būtų nuosekliai išdėstytas:
fullyParallel: false,
workers: 1,
Pastaba.
Jei turite kelias aplinkas, galite padidinti workers ir atskirti kiekvieną projektą skirtingose aplinkose naudodami atskirus .env failus arba aplinkos lygio kintamuosius.
retries
Retries can mask flakiness in CI. Naudokite retries: 1 CI laikinų tinklo problemų apdorodami. Nustatykite retries: 0 vietoje, kad gautumėte skubius atsiliepimus:
retries: process.env.CI ? 1 : 0,
trace, , screenshotvideo
Užfiksuoti diagnostiką tik nepavykus sutaupyti vietos diske:
trace: 'on-first-retry',
screenshot: 'only-on-failure',
video: 'retain-on-failure',
Ci, artefaktai nusiunčiami po bandymo vykdymo. Žr . CI / CD integravimas.
projects
Naudokite "Playwright" projektus, kad atskirtumėte drobės ir modeliu pagrįstus testų paketus. Kiekvienas projektas gali naudoti skirtingą saugyklos būseną:
projects: [
{
name: 'canvas',
use: { storageState: storageStatePath },
testMatch: '**/canvas/**/*.test.ts',
},
{
name: 'mda',
use: { storageState: mdaStorageStatePath },
testMatch: '**/mda/**/*.test.ts',
},
],
Vykdyti vieną projektą:
npx playwright test --project=canvas
npx playwright test --project=mda
globalSetup
Visuotinis sąrankos scenarijus paleidžiamas vieną kartą prieš visus testus. Ji patikrina autentifikavimo būseną ir paleidžia be galvos autentifikavimą, jei saugyklos būsena yra pasibaigusi arba jos nėra:
// global-setup.ts
import { validateAndRefreshAuthState } from './utils/validate-auth-state';
export default async function globalSetup() {
await validateAndRefreshAuthState();
}
Tikrinimo tikrinimai:
- Saugyklos būsenos failas yra
- MSAL prieigos atpažinimo ženklas nėra pasibaigęs (drobės / genų UX testai)
- CRM seansų slapukai yra ir jie galioja (MDA testai)
tsconfig.json
Failas tsconfig.json valdo testo paketo TypeScript kompiliavimo parametrus:
{
"compilerOptions": {
"target": "ES2020",
"module": "commonjs",
"strict": true,
"esModuleInterop": true,
"resolveJsonModule": true,
"outDir": "dist",
"rootDir": "."
},
"include": ["**/*.ts"],
"exclude": ["node_modules", "dist"]
}
.env failas
Failas .envpackages/e2e-tests/.env , esantis vietinio paleidimo aplinkos kintamųjų rinkiniuose. Visą nuorodą žr. Aplinkos kintamieji.
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 Scenarijus
Autentifikavimui ir testo vykdymui galimi packages/e2e-tests/package.json šie npm scenarijai:
| Scenarijus | Komanda | Aprašą |
|---|---|---|
auth:headful |
ts-node auth/auth-maker-portal.ts |
Interaktyvus autentifikavimas Power Apps (drobės testai) |
auth:mda:headful |
ts-node auth/auth-mda.ts |
Interaktyvus autentifikavimas modeliu pagrįstoms programėlėms |
auth |
ts-node auth/auth-maker-portal.ts --headless |
Be galvos autentifikavimas (CI) |
auth:mda |
ts-node auth/auth-mda.ts --headless |
Be galvos modeliu pagrįstas programėlės autentifikavimas (CI) |
test |
playwright test |
Paleisti visus testus |
test:ui |
playwright test --ui |
Vykdyti naudojant "Playwright" vartotojo sąsają |
test:debug |
playwright test --debug |
Paleisti naudojant derinimo inspektorių |