Αναφορά ρύθμισης παραμέτρων

Αυτό το άρθρο καταγράφει τη ρύθμιση παραμέτρων 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 Εκτέλεση με επιθεώρηση εντοπισμού σφαλμάτων

Επόμενα βήματα

Δείτε επίσης