Σημείωμα
Η πρόσβαση σε αυτήν τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να εισέλθετε ή να αλλάξετε καταλόγους.
Η πρόσβαση σε αυτήν τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να αλλάξετε καταλόγους.
Αυτό το άρθρο καταγράφει τη ρύθμιση παραμέτρων 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,
Note
Εάν έχετε πολλά περιβάλλοντα, μπορείτε να αυξήσετε workers και να απομονώσετε κάθε έργο σε ένα διαφορετικό περιβάλλον, χρησιμοποιώντας ξεχωριστά .env αρχεία ή μεταβλητές σε επίπεδο περιβάλλοντος.
retries
Οι επανατυλίξεις μπορούν να αποκρύψουν το flakiness στη CI. Χρησιμοποιήστε retries: 1 το στη CI για τον χειρισμό προσωρινών προβλημάτων δικτύου. Ορίστε τοπικά retries: 0 για να λάβετε άμεσα σχόλια:
retries: process.env.CI ? 1 : 0,
trace, screenshot, video
Καταγραφή διαγνωστικών μόνο στην αποτυχία εξοικονόμησης χώρου στον δίσκο:
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
Η δέσμη ενεργειών καθολικής εγκατάστασης εκτελείται μία φορά πριν από όλες τις δοκιμές. Επικυρώνει την κατάσταση ελέγχου ταυτότητας και εκτελεί έλεγχο ταυτότητας χωρίς έλεγχο ταυτότητας εάν η κατάσταση αποθήκευσης έχει λήξει ή απουσιάζει:
// global-setup.ts
import { validateAndRefreshAuthState } from './utils/validate-auth-state';
export default async function globalSetup() {
await validateAndRefreshAuthState();
}
Οι έλεγχοι επικύρωσης:
- Υπάρχει αρχείο κατάστασης αποθήκευσης
- Το διακριτικό πρόσβασης MSAL δεν έχει λήξει (δοκιμές UX καμβά/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 Δέσμες ενεργειών
Οι παρακάτω δέσμες ενεργειών npm είναι διαθέσιμες στο packages/e2e-tests/package.json για έλεγχο ταυτότητας και εκτέλεση δοκιμής:
| Δέσμη ενεργειών | Εντολή | Περιγραφή |
|---|---|---|
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 |
Εκτέλεση με επιθεώρηση εντοπισμού σφαλμάτων |