Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 |