Napomena
Za pristup ovoj stranici potrebna je autorizacija. Možete se pokušati prijaviti ili promijeniti direktorije.
Za pristup ovoj stranici potrebna je autorizacija. Možete pokušati promijeniti direktorije.
U ovom se članku dokumentira konfiguracija servisa Playwright koju koriste ogledni testovi te se objašnjava kako je prilagoditi u vlastito okruženje.
playwright.config.ts
Konfiguracijska datoteka je na 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',
});
Ključne mogućnosti konfiguracije
U sljedećim su odjeljcima objašnjene najvažnije postavke konfiguracijske datoteke i kada ih promijeniti.
fullyParallel i workers
Testovi platforme Power Platform dijele jedno okruženje Dataverse. Pokretanjem testova paralelno se stvaraju sukobi podataka, kao što su dva testova kojima se briše isti zapis. Postavite obje mogućnosti za serijalizaciju izvršavanja:
fullyParallel: false,
workers: 1,
Napomena
Ako imate više okruženja, svaki workers projekt možete povećati i izolirati u drugo okruženje pomoću .env zasebnih datoteka ili varijabli na razini okruženja.
retries
Ponovni pokušaji mogu prikriti ljuštivost u CI. Koristi se retries: 1 u ci za rješavanje privremenih problema s mrežom. Lokalno postavite retries: 0 da biste odmah dobili povratne informacije:
retries: process.env.CI ? 1 : 0,
trace, , screenshotvideo
Bilježite dijagnostiku samo ako ne želite uštedjeti prostor na disku:
trace: 'on-first-retry',
screenshot: 'only-on-failure',
video: 'retain-on-failure',
U CI artefakti se prenose nakon izvođenja testa. Pročitajte članak Integracija ci/CD-a.
projects
Projekte servisa Playwright koristite za odvajanje testnih kompleta na platnu i modela. Svaki projekt može koristiti drugo stanje pohrane:
projects: [
{
name: 'canvas',
use: { storageState: storageStatePath },
testMatch: '**/canvas/**/*.test.ts',
},
{
name: 'mda',
use: { storageState: mdaStorageStatePath },
testMatch: '**/mda/**/*.test.ts',
},
],
Pokretanje jednog projekta:
npx playwright test --project=canvas
npx playwright test --project=mda
globalSetup
Globalna skripta za postavljanje pokreće se jednom prije svih testova. Provjerava stanje provjere autentičnosti i pokreće provjeru autentičnosti bez glave ako je stanje pohrane isteklo ili nedostaje:
// global-setup.ts
import { validateAndRefreshAuthState } from './utils/validate-auth-state';
export default async function globalSetup() {
await validateAndRefreshAuthState();
}
Provjere valjanosti:
- Postoji datoteka stanja pohrane
- Pristupni token za MSAL nije istekao (testi platna/gen. korisničkog sučelja)
- Crm session cookies are present and valid (MDA tests)
tsconfig.json
Postavke tsconfig.json kompiliranje TypeScript kontrole za testni paket:
{
"compilerOptions": {
"target": "ES2020",
"module": "commonjs",
"strict": true,
"esModuleInterop": true,
"resolveJsonModule": true,
"outDir": "dist",
"rootDir": "."
},
"include": ["**/*.ts"],
"exclude": ["node_modules", "dist"]
}
.env Datoteku
Datoteka .env u postavlja packages/e2e-tests/.env varijable okruženja za lokalne pokretanja. Potpunu referencu potražite u članku Varijable okruženja.
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
Sljedeće su npm skripte dostupne za provjeru autentičnosti packages/e2e-tests/package.json i izvršavanje testa:
| Skripta | Command | Opis |
|---|---|---|
auth:headful |
ts-node auth/auth-maker-portal.ts |
Interaktivna auth za Power Apps (testovi platna) |
auth:mda:headful |
ts-node auth/auth-mda.ts |
Interaktivna auth za aplikacije utemeljene na modelu |
auth |
ts-node auth/auth-maker-portal.ts --headless |
Bezglava auth (CI) |
auth:mda |
ts-node auth/auth-mda.ts --headless |
Auth aplikacija utemeljena na modelu bez glave (CI) |
test |
playwright test |
Pokreni sve testove |
test:ui |
playwright test --ui |
Pokreni s sučeljem Playwright |
test:debug |
playwright test --debug |
Pokreni s inspektorom za ispravljanje pogrešaka |