Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Бұл мақалада үлгі тесттерде қолданылатын Playwright конфигурациясы құжатталып, оны өз ортаңызға қалай бейімдеуге болатынын түсіндіреді.
playwright.config.ts
Конфигурация файлы келесі мекенжайда 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
Power Platform тесттері бір Dataverse ортасын пайдаланады. Тесттерді параллель жүргізу деректер қайшылықтарын тудырады, мысалы, екі тест бір жазбаны өшіреді. Екі опцияны да тізбектеу үшін орнатыңыз:
fullyParallel: false,
workers: 1,
Ескертпе
Егер бірнеше орта болса, әр жобаны бөлек workers файлдар немесе орта деңгейіндегі айнымалылар арқылы әртүрлі ортаға ұлғайтып.env, оқшаулауға болады.
retries
Қайта тырысулар CI-дегі ақаулылықты жасыра алады. CI-де уақытша желі мәселелерін шешу үшін қолданыңыз retries: 1 . Жергілікті деңгейде дереу кері байланыс алу үшін орнатыңыз retries: 0 :
retries: process.env.CI ? 1 : 0,
trace, , screenshotvideo
Диск орнын үнемдеу сәтсіз болған жағдайда ғана диагностиканы жазып алу:
trace: 'on-first-retry',
screenshot: 'only-on-failure',
video: 'retain-on-failure',
CI-де артефактілер сынақтан кейін жүктеледі. CI/CD интеграциясын қараңыз.
projects
Playwright жобаларын Canvas пен модельге негізделген тест жиынтықтарын бөлу үшін қолданыңыз. Әр жоба әртүрлі сақтау күйін қолдана алады:
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
Жаһандық орнату скрипті барлық тесттерден бұрын бір рет орындалады. Ол аутентификация күйін растайды және сақтау күйі мерзімі өтіп кеткен немесе жоқ болса, headless аутентификацияны орындайды:
// global-setup.ts
import { validateAndRefreshAuthState } from './utils/validate-auth-state';
export default async function globalSetup() {
await validateAndRefreshAuthState();
}
Тексеру тексерулері:
- Сақтау күйі файлы бар
- MSAL қолжетімділік токені мерзімі өтпеген (canvas/Gen UX тесттері)
- CRM сессиясының cookie-файлдары бар және жарамды (MDA тесттері)
tsconfig.json
tsconfig.json Файл тест пакеті үшін TypeScript компиляциясын басқарады:
{
"compilerOptions": {
"target": "ES2020",
"module": "commonjs",
"strict": true,
"esModuleInterop": true,
"resolveJsonModule": true,
"outDir": "dist",
"rootDir": "."
},
"include": ["**/*.ts"],
"exclude": ["node_modules", "dist"]
}
.env файл
.env Файл at packages/e2e-tests/.env жергілікті іске қосу үшін қоршаған орта айнымалыларын орнатады. Толық анықтамалық үшін Environment айнымалылары бөлімін қараңыз.
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 Сценарийлер
Аутентификация және тест орындау үшін келесі npm скрипттері packages/e2e-tests/package.json қолжетімді:
| Скрипт | Пәрмен | Сипаттама |
|---|---|---|
auth:headful |
ts-node auth/auth-maker-portal.ts |
Интерактивті аутентификация Power Apps (canvas tests) |
auth:mda:headful |
ts-node auth/auth-mda.ts |
Модельге негізделген қосымшалар үшін интерактивті аутентификация |
auth |
ts-node auth/auth-maker-portal.ts --headless |
Бассыз аутентификация (CI) |
auth:mda |
ts-node auth/auth-mda.ts --headless |
Бассыз модельге негізделген қосымша аутентификация (CI) |
test |
playwright test |
Барлық тесттерді жүргіз |
test:ui |
playwright test --ui |
Playwright UI арқылы жүгіру |
test:debug |
playwright test --debug |
Debug инспекторымен жұмыс істеу |