नोट
इस पेज तक पहुँच के लिए प्रमाणन की आवश्यकता होती है. आप साइन इन करने या निर्देशिकाओं को बदलने का प्रयास कर सकते हैं.
इस पेज तक पहुँच के लिए प्रमाणन की आवश्यकता होती है. आप निर्देशिकाओं को बदलने का प्रयास कर सकते हैं.
यह लेख नमूना परीक्षणों द्वारा उपयोग किए जाने वाले नाटककार कॉन्फ़िगरेशन का दस्तावेजीकरण करता है और बताता है कि इसे अपने स्वयं के वातावरण के लिए कैसे अनुकूलित किया जाए।
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/CD एकीकरण देखें।
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();
}
सत्यापन जांचता है:
- संग्रहण स्थिति फ़ाइल मौजूद है
- MSAL एक्सेस टोकन की समय सीमा समाप्त नहीं हुई है (कैनवास/जेन UX परीक्षण)
- सीआरएम सत्र कुकीज़ मौजूद और मान्य हैं (एमडीए परीक्षण)
tsconfig.json
फ़ाइल परीक्षण पैकेज के लिए TypeScript संकलन सेटिंग्स को नियंत्रित करती है 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 लिपियों
प्रमाणीकरण और परीक्षण निष्पादन के लिए निम्नलिखित npm स्क्रिप्ट उपलब्ध packages/e2e-tests/package.json हैं:
| लिपि | Command | विवरण |
|---|---|---|
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 |
हेडलेस ऑथ (सीआई) |
auth:mda |
ts-node auth/auth-mda.ts --headless |
हेडलेस मॉडल-चालित ऐप प्रमाणीकरण (सीआई) |
test |
playwright test |
सभी परीक्षण चलाएँ |
test:ui |
playwright test --ui |
Playwright UI के साथ चलाएँ |
test:debug |
playwright test --debug |
डीबग इंस्पेक्टर के साथ चलाएं |