Белешка
Приступ овој страници захтева ауторизацију. Можете покушати да се пријавите или промените директоријуме.
Приступ овој страници захтева ауторизацију. Можете покушати да промените директоријуме.
Овај чланак документује конфигурацију драмског писца који користе тестови узорака и објашњава како да је прилагодите сопственом окружењу.
playwright.config.тс
Конфигурациони фајл је на 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',
});
Кључне опције конфигурације
Следећи одељци објашњавају најважнија подешавања у конфигурационом фајлу и када их мењати.
fullyParallel И workers
Повер Платформ тестови деле једно Датаверсе окружење. Паралелно покретање тестова ствара конфликте података, као што су два теста који бришу исти запис. Подесите обе опције за серијализацију извршења:
fullyParallel: false,
workers: 1,
Белешка
Ако имате више окружења, можете повећати workers и изоловати сваки пројекат у различито окружење користећи одвојене .env датотеке или варијабле на нивоу окружења.
retries
Поновни покушаји могу прикрити љускавост у ЦИ. Користите retries: 1 у ЦИ за решавање пролазних мрежних проблема. Поставите retries: 0 локално да бисте добили тренутне повратне информације:
retries: process.env.CI ? 1 : 0,
trace
screenshot , ,video
Снимање дијагностику само у случају неуспеха да се уштеди простор на диску:
trace: 'on-first-retry',
screenshot: 'only-on-failure',
video: 'retain-on-failure',
У ЦИ, артефакти се учитавају након пробног рада. Погледајте ЦИ / ЦД интеграцију .
projects
Користите пројекте драмских писаца да бисте одвојили тестне пакете на платну и моделу. Сваки пројекат може да користи другачије стање складиштења:
projects: [
{
name: 'canvas',
use: { storageState: storageStatePath },
testMatch: '**/canvas/**/*.test.ts',
},
{
name: 'mda',
use: { storageState: mdaStorageStatePath },
testMatch: '**/mda/**/*.test.ts',
},
],
Покрени један пројекат:
npx playwright test --project=canvas
npx playwright test --project=mda
globalSetup
Скрипта за глобално подешавање покреће се једном пре свих тестова. Потврђује стање аутентификације и покреће аутентификацију без главе ако је стање складиштења истекло или недостаје:
// global-setup.ts
import { validateAndRefreshAuthState } from './utils/validate-auth-state';
export default async function globalSetup() {
await validateAndRefreshAuthState();
}
Провера валидације:
- Датотека стања складиштења постоји
- МСАЛ приступни токен није истекао (платно / Ген УКС тестови)
- ЦРМ колачићи сесије су присутни и важећи (МДА тестови)
tsconfig.json
Фајл tsconfig.json контролише ТипеСцрипт подешавања компилације за тест пакет:
{
"compilerOptions": {
"target": "ES2020",
"module": "commonjs",
"strict": true,
"esModuleInterop": true,
"resolveJsonModule": true,
"outDir": "dist",
"rootDir": "."
},
"include": ["**/*.ts"],
"exclude": ["node_modules", "dist"]
}
.env Фајл
Фајл .env у packages/e2e-tests/.env поставља системске променљиве за локалне трчања. За комплетну референцу, погледајте Варијабле окружења .
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 Скрипте
Следеће нпм скрипте су доступне за packages/e2e-tests/package.json аутентификацију и извршење теста:
| Скрипте | Команда | Опис |
|---|---|---|
auth:headful |
ts-node auth/auth-maker-portal.ts |
Интерактивна аутентификација за < ДИЦТ__Поwер ⚐ Аппс > Поwер Аппс (платно тестови) |
auth:mda:headful |
ts-node auth/auth-mda.ts |
Интерактивна аутентификација за апликације засноване на моделу |
auth |
ts-node auth/auth-maker-portal.ts --headless |
Безглава аутентификација (ЦИ) |
auth:mda |
ts-node auth/auth-mda.ts --headless |
Безглава аутентификација апликација (ЦИ) |
test |
playwright test |
Покрени све тестове |
test:ui |
playwright test --ui |
Покрени са интерфејсом за драмског писца |
test:debug |
playwright test --debug |
Покрени са инспектором за отклањање грешака |