Referenca konfiguracije

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

Sljedeći koraci

Vidi također