Konfigurācijas atsauce

Š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

Nākamās darbības

Skatiet arī: