Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk a mintatesztek által használt Playwright-konfigurációt ismerteti, és ismerteti, hogyan lehet azt a saját környezetéhez igazítani.
playwright.config.ts
A konfigurációs fájl a következő helyen packages/e2e-tests/playwright.config.tstalálható:
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',
});
Kulcskonfigurációs beállítások
A következő szakaszok ismertetik a konfigurációs fájl legfontosabb beállításait, és hogy mikor kell módosítani őket.
fullyParallel és workers
A Power Platform-tesztek egyetlen Dataverse-környezetet használnak. A tesztek párhuzamos futtatása adatütközéseket okoz, például két teszt törli ugyanazt a rekordot. Mindkét beállítás beállítása a végrehajtás szerializálásához:
fullyParallel: false,
workers: 1,
Megjegyzés:
Ha több környezettel rendelkezik, az egyes projekteket külön workers fájlok vagy környezeti szintű változók használatával növelheti .env és elkülönítheti egy másik környezethez.
retries
Az újrapróbálkozások elfedhetik a pelyhességet a CI-ben. A CI-ben az átmeneti hálózati problémák kezelésére használható retries: 1 . Helyi beállítással retries: 0 azonnali visszajelzést kaphat:
retries: process.env.CI ? 1 : 0,
\, \, \
Csak akkor rögzítse a diagnosztikát, ha nem sikerült lemezterületet mentenie:
trace: 'on-first-retry',
screenshot: 'only-on-failure',
video: 'retain-on-failure',
A CI-ben az összetevők a teszt futtatása után lesznek feltöltve. Lásd a CI/CD-integrációt.
projects
A Forgatókönyv-projektek segítségével különválaszthatja a vászon- és modellalapú tesztcsomagokat. Minden projekt más tárolási állapotot használhat:
projects: [
{
name: 'canvas',
use: { storageState: storageStatePath },
testMatch: '**/canvas/**/*.test.ts',
},
{
name: 'mda',
use: { storageState: mdaStorageStatePath },
testMatch: '**/mda/**/*.test.ts',
},
],
Egyetlen projekt futtatása:
npx playwright test --project=canvas
npx playwright test --project=mda
globalSetup
A globális beállítási szkript az összes teszt előtt egyszer fut. Ellenőrzi a hitelesítési állapotot, és fej nélküli hitelesítést futtat, ha a tárolási állapot lejárt vagy hiányzik:
// global-setup.ts
import { validateAndRefreshAuthState } from './utils/validate-auth-state';
export default async function globalSetup() {
await validateAndRefreshAuthState();
}
Az érvényesítési ellenőrzések:
- Tárolóállapot-fájl létezik
- Az MSAL hozzáférési jogkivonata nem járt le (vászon-/gen UX-tesztek)
- A CRM-munkamenet cookie-k jelen vannak és érvényesek (MDA-tesztek)
tsconfig.json
A tsconfig.json fájl a TypeScript fordítási beállításait szabályozza a tesztcsomaghoz:
{
"compilerOptions": {
"target": "ES2020",
"module": "commonjs",
"strict": true,
"esModuleInterop": true,
"resolveJsonModule": true,
"outDir": "dist",
"rootDir": "."
},
"include": ["**/*.ts"],
"exclude": ["node_modules", "dist"]
}
.env-fájl
A .env fájl a packages/e2e-tests/.env helyi futtatások környezeti változóit állítja be. A teljes referenciaért tekintse meg a környezeti változókat.
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 Parancsfájlok
A hitelesítéshez és a tesztelés végrehajtásához az alábbi npm-szkriptek érhetők el packages/e2e-tests/package.json :
| Script | Parancs | Description |
|---|---|---|
auth:headful |
ts-node auth/auth-maker-portal.ts |
Interaktív hitelesítési Power Apps (vászontesztek) |
auth:mda:headful |
ts-node auth/auth-mda.ts |
Interaktív hitelesítés modellalapú alkalmazásokhoz |
auth |
ts-node auth/auth-maker-portal.ts --headless |
Fej nélküli hitelesítés (CI) |
auth:mda |
ts-node auth/auth-mda.ts --headless |
Fej nélküli modellalapú alkalmazás hitelesítése (CI) |
test |
playwright test |
Az összes teszt futtatása |
test:ui |
playwright test --ui |
Futtatás playwright felhasználói felülettel |
test:debug |
playwright test --debug |
Futtatás hibakeresővel |