Yapılandırma referansı

Bu makalede, örnek testler tarafından kullanılan Playwright yapılandırması belgelenerek kendi ortamınız için nasıl uyarlanacağınız açıklanır.

playwright.config.ts

Yapılandırma dosyası konumundadır 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',
});

Anahtar yapılandırma seçenekleri

Aşağıdaki bölümlerde yapılandırma dosyasındaki en önemli ayarlar ve bunların ne zaman değiştireceği açıklanmaktadır.

fullyParallel ve workers

Power Platform testleri tek bir Dataverse ortamını paylaşır. Testleri paralel olarak çalıştırmak, iki testin aynı kaydı silmesi gibi veri çakışmaları oluşturur. Yürütmeyi serileştirmek için iki seçeneği de ayarlayın:

fullyParallel: false,
workers: 1,

Note

Birden çok ortamınız varsa, ayrı workers dosyalar veya ortam düzeyinde değişkenler kullanarak her projeyi farklı bir ortama yükseltebilir .env ve yalıtabilirsiniz.

retries

Yeniden denemeler CI'daki zayıflığı maskeleyebilir. Geçici ağ sorunlarını işlemek için CI'de kullanın retries: 1 . Anında geri bildirim almak için yerel olarak ayarlayın retries: 0 :

retries: process.env.CI ? 1 : 0,

trace, screenshot, video

Tanılamaları yalnızca disk alanından tasarruf etme hatasında yakalayın:

trace: 'on-first-retry',
screenshot: 'only-on-failure',
video: 'retain-on-failure',

CI'de yapıtlar test çalıştırmasının ardından karşıya yüklenir. Bkz. CI/CD tümleştirmesi.

projects

Tuval ve model temelli test paketlerini ayırmak için Playwright projelerini kullanın. Her proje farklı bir depolama durumu kullanabilir:

projects: [
  {
    name: 'canvas',
    use: { storageState: storageStatePath },
    testMatch: '**/canvas/**/*.test.ts',
  },
  {
    name: 'mda',
    use: { storageState: mdaStorageStatePath },
    testMatch: '**/mda/**/*.test.ts',
  },
],

Tek bir proje çalıştırma:

npx playwright test --project=canvas
npx playwright test --project=mda

globalSetup

Genel kurulum betiği tüm testlerin öncesinde bir kez çalıştırılır. Kimlik doğrulama durumunu doğrular ve depolama durumunun süresi dolarsa veya eksikse başsız kimlik doğrulaması çalıştırır:

// global-setup.ts
import { validateAndRefreshAuthState } from './utils/validate-auth-state';

export default async function globalSetup() {
  await validateAndRefreshAuthState();
}

Doğrulama denetimleri:

  • Depolama durumu dosyası var
  • MSAL erişim belirtecinin süresi dolmadı (tuval/Gen UX testleri)
  • CRM oturum tanımlama bilgileri mevcut ve geçerlidir (MDA testleri)

tsconfig.json

Dosya, tsconfig.json test paketi için TypeScript derleme ayarlarını denetler:

{
  "compilerOptions": {
    "target": "ES2020",
    "module": "commonjs",
    "strict": true,
    "esModuleInterop": true,
    "resolveJsonModule": true,
    "outDir": "dist",
    "rootDir": "."
  },
  "include": ["**/*.ts"],
  "exclude": ["node_modules", "dist"]
}

.env dosyası

konumundaki .envpackages/e2e-tests/.env dosya, yerel çalıştırmalar için ortam değişkenlerini ayarlar. Tam başvuru için bkz . Ortam değişkenleri.

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 Komut dosyaları

Kimlik doğrulaması ve test yürütme için içinde packages/e2e-tests/package.json aşağıdaki npm betikleri kullanılabilir:

Script Komut Description
auth:headful ts-node auth/auth-maker-portal.ts Power Apps için etkileşimli kimlik doğrulaması (tuval testleri)
auth:mda:headful ts-node auth/auth-mda.ts Model temelli uygulamalar için etkileşimli kimlik doğrulaması
auth ts-node auth/auth-maker-portal.ts --headless Başsız kimlik doğrulaması (CI)
auth:mda ts-node auth/auth-mda.ts --headless Başsız model temelli uygulama kimlik doğrulaması (CI)
test playwright test Tüm testleri çalıştırma
test:ui playwright test --ui Playwright kullanıcı arabirimiyle çalıştırma
test:debug playwright test --debug Hata ayıklama denetçisi ile çalıştırma

Sonraki Adımlar

Ayrıca bakınız