הערה
הגישה לדף זה מחייבת הרשאה. באפשרותך לנסות להיכנס או לשנות מדריכי כתובות.
הגישה לדף זה מחייבת הרשאה. באפשרותך לנסות לשנות מדריכי כתובות.
מאמר זה מתאר את תצורת 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. השתמש retries: 1 ב- CI כדי לטפל בבעיות רשת ארעיות. הגדר 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 כדי להפריד בין סוויטות בדיקה מונחות-דגמים ובד ציור. כל פרוייקט יכול להשתמש במצב אחסון אחר:
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
קובץ ה- Script של ההגדרה הכללית פועל פעם אחת לפני כל הבדיקות. הוא מאמת מצב אימות ומפעיל אימות ללא ראש אם תוקפו של מצב האחסון פג או חסר:
// global-setup.ts
import { validateAndRefreshAuthState } from './utils/validate-auth-state';
export default async function globalSetup() {
await validateAndRefreshAuthState();
}
בדיקות האימות:
- קובץ מצב אחסון קיים
- תוקפו של אסימון הגישה של MSAL לא פג (בדיקות UX של Canvas/Gen)
- קבצי Cookie של הפעלת CRM קיימים ותקף (בדיקות 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 ב- מגדיר 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 סקריפטים
קבצי ה- Script הבאים של npm זמינים עבור packages/e2e-tests/package.json אימות וביצוע בדיקה:
| קובץ Script | הפקודה | Description |
|---|---|---|
auth:headful |
ts-node auth/auth-maker-portal.ts |
אימות אינטראקטיבי עבור Power Apps (בדיקות בד ציור) |
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 |
test:debug |
playwright test --debug |
הפעל עם מפקח איתור הבאגים |