Konfiguratsiooniviide

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

Järgmised sammud

Vt ka