Piezīmes
Lai piekļūtu šai lapai, ir nepieciešama autorizācija. Varat mēģināt pierakstīties vai mainīt direktorijus.
Lai piekļūtu šai lapai, ir nepieciešama autorizācija. Varat mēģināt mainīt direktorijus.
Šajā rakstā ir dokumentēta Playwright konfigurācija, kas tiek izmantota parauga testos, un paskaidrots, kā to pielāgot savai videi.
playwright.config.ts
Konfigurācijas fails ir :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',
});
Galvenās konfigurācijas opcijas
Nākamajās sadaļās ir izskaidroti svarīgākie konfigurācijas faila iestatījumi un to mainīšanas laiks.
fullyParallel un workers
Power Platform testi koplieto vienu Dataverse vidi. Paralēli veicot testus, rodas datu konflikti, piemēram, divi testi dzēš vienu un to pašu ierakstu. Iestatiet abas opcijas, lai serializētu izpildi:
fullyParallel: false,
workers: 1,
Piezīmes
Ja jums ir vairākas vides, katru projektu var palielināt workers un izolēt citā vidē, izmantojot atsevišķus .env failus vai vides līmeņa mainīgos.
retries
Atkārtoti mēģinājumi var maskēt zvīņošanos CI. Izmantojiet retries: 1 CI, lai risinātu īslaicīgas tīkla problēmas. Iestatiet retries: 0 lokāli, lai saņemtu tūlītēju atgriezenisko saiti:
retries: process.env.CI ? 1 : 0,
trace, screenshot, video
Tveriet diagnostiku tikai tad, ja neizdodas ietaupīt vietu diskā:
trace: 'on-first-retry',
screenshot: 'only-on-failure',
video: 'retain-on-failure',
CI artefakti tiek augšupielādēti pēc testa brauciena. Skatīt CI/CD integrāciju.
projects
Izmantojiet dramaturgu projektus, lai atdalītu audekla un modeļa vadītus testa komplektus. Katram projektam var izmantot atšķirīgu krātuves stāvokli:
projects: [
{
name: 'canvas',
use: { storageState: storageStatePath },
testMatch: '**/canvas/**/*.test.ts',
},
{
name: 'mda',
use: { storageState: mdaStorageStatePath },
testMatch: '**/mda/**/*.test.ts',
},
],
Palaidiet vienu projektu:
npx playwright test --project=canvas
npx playwright test --project=mda
globalSetup
Globālās iestatīšanas skripts tiek izpildīts vienu reizi pirms visiem testiem. Tas apstiprina autentifikācijas stāvokli un palaiž bezgalvas autentifikāciju, ja krātuves statusa derīguma termiņš ir beidzies vai tā nav:
// global-setup.ts
import { validateAndRefreshAuthState } from './utils/validate-auth-state';
export default async function globalSetup() {
await validateAndRefreshAuthState();
}
Validācijas pārbaudes:
- Krātuves stāvokļa fails pastāv
- MSAL piekļuves marķiera derīguma termiņš nav beidzies (audekla/Gen UX testi)
- CRM sesijas sīkdatnes ir pieejamas un derīgas (MDA testi)
tsconfig.json
Fails tsconfig.json kontrolē testa pakotnes TypeScript kompilācijas iestatījumus:
{
"compilerOptions": {
"target": "ES2020",
"module": "commonjs",
"strict": true,
"esModuleInterop": true,
"resolveJsonModule": true,
"outDir": "dist",
"rootDir": "."
},
"include": ["**/*.ts"],
"exclude": ["node_modules", "dist"]
}
.env fails
Fails .env vietnē packages/e2e-tests/.env iestata vides mainīgos lokālajām izpildēm. Pilnu atsauci skatiet sadaļā Vides mainīgie.
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 Skripti
Autentifikācijai un testa izpildei ir pieejami packages/e2e-tests/package.json šādi npm skripti:
| Skriptu | Komanda | Apraksts |
|---|---|---|
auth:headful |
ts-node auth/auth-maker-portal.ts |
Interaktīvā autentifikācija Power Apps (audekla testi) |
auth:mda:headful |
ts-node auth/auth-mda.ts |
Interaktīva autentifikācija modeļa vadītām programmām |
auth |
ts-node auth/auth-maker-portal.ts --headless |
Autentifikācija bez galvas (CI) |
auth:mda |
ts-node auth/auth-mda.ts --headless |
Bezgalvas modeļa vadītas programmas autentifikācija (CI) |
test |
playwright test |
Visu testu izpilde |
test:ui |
playwright test --ui |
Palaist ar dramaturga lietotāja interfeisu |
test:debug |
playwright test --debug |
Palaist ar atkļūdošanas inspektoru |