Märkus.
Juurdepääs sellele lehele nõuab autoriseerimist. Võite proovida sisse logida või kausta vahetada.
Juurdepääs sellele lehele nõuab autoriseerimist. Võite proovida kausta vahetada.
Selles artiklis kirjeldatakse näidistestide kasutatavat Playwrighti konfiguratsiooni ja selgitatakse, kuidas seda oma keskkonna jaoks kohandada.
playwright.config.ts
Konfiguratsioonifaili asukohaks packages/e2e-tests/playwright.config.tson :
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',
});
Võtmekonfiguratsiooni suvandid
Järgmistes jaotistes selgitatakse konfiguratsioonifaili kõige olulisemaid sätteid ja millal neid muuta.
fullyParallel ja workers
Power Platformi testid jagavad ühte Dataverse'i keskkonda. Paralleelselt käitatavad testid tekitavad andmekonflikte (nt kaks sama kirjet kustutavat testi). Määrake käivitamise serialiseerimiseks mõlemad suvandid.
fullyParallel: false,
workers: 1,
Märkus.
Kui teil on mitu keskkonda, saate iga projekti eraldi failide või keskkonnataseme muutujate abil workers mitmesse keskkonda suurendada .env ja isoleerida.
retries
Retries can mask flakiness in CI. Kasutage retries: 1 CI-s mööduvate võrguprobleemide lahendamiseks. Määrake retries: 0 kohalikult kohe tagasiside saamiseks:
retries: process.env.CI ? 1 : 0,
trace, , screenshotvideo
Jäädvusta diagnostika ainult kettaruumi säästmise nurjumise korral:
trace: 'on-first-retry',
screenshot: 'only-on-failure',
video: 'retain-on-failure',
CI-s laaditakse artefaktid pärast testimist üles. Vt CI/CD integreerimine.
projects
Playwrighti projektide abil saate lõuendi- ja mudelipõhiseid testkomplektisid eraldada. Iga projekt saab kasutada erinevat salvestusruumi olekut.
projects: [
{
name: 'canvas',
use: { storageState: storageStatePath },
testMatch: '**/canvas/**/*.test.ts',
},
{
name: 'mda',
use: { storageState: mdaStorageStatePath },
testMatch: '**/mda/**/*.test.ts',
},
],
Käivita üks projekt:
npx playwright test --project=canvas
npx playwright test --project=mda
globalSetup
Globaalne häälestusskript käivitub üks kord enne kõiki teste. See valideerib autentimisoleku ja käivitab peatu autentimise, kui salvestusruumi olek on aegunud või puudub:
// global-setup.ts
import { validateAndRefreshAuthState } from './utils/validate-auth-state';
export default async function globalSetup() {
await validateAndRefreshAuthState();
}
Valideerimiskontrollid:
- Salvestusruumi olekufail on olemas
- MSAL-i pääsutõend pole aegunud (lõuendi/gen UX-i testid)
- CRM-i seansi küpsised on olemas ja kehtivad (MDA testid)
tsconfig.json
Fail tsconfig.json reguleerib testpaketi TypeScripti kompileerimissätteid.
{
"compilerOptions": {
"target": "ES2020",
"module": "commonjs",
"strict": true,
"esModuleInterop": true,
"resolveJsonModule": true,
"outDir": "dist",
"rootDir": "."
},
"include": ["**/*.ts"],
"exclude": ["node_modules", "dist"]
}
.env-fail
Fail .env seab packages/e2e-tests/.env kohalike käituste keskkonnamuutujad. Täieliku viite leiate teemast Keskkonnamuutujad.
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 Skripte
Autentimiseks ja testimiseks on saadaval packages/e2e-tests/package.json järgmised npm-skriptid:
| Skripti | Käsk | Kirjeldus |
|---|---|---|
auth:headful |
ts-node auth/auth-maker-portal.ts |
Power Apps interaktiivne autentimine (lõuenditestid) |
auth:mda:headful |
ts-node auth/auth-mda.ts |
Interaktiivne autentimine mudelipõhiste rakenduste jaoks |
auth |
ts-node auth/auth-maker-portal.ts --headless |
Headless auth (CI) |
auth:mda |
ts-node auth/auth-mda.ts --headless |
Headless model-driven app auth (CI) |
test |
playwright test |
Käivita kõik testid |
test:ui |
playwright test --ui |
Käivita Playwrighti kasutajaliidesega |
test:debug |
playwright test --debug |
Käivita silumisinspektoriga |