Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird erläutert, wie Sie die CI/CD-Integration für Power Platform Playwright-Tests in GitHub Actions und Azure Pipelines konfigurieren. Automatisieren Sie die Authentifizierung, führen Sie End-to-End-Tests aus, und veröffentlichen Sie Ergebnisse als Pipelineartefakte und Testberichte.
Voraussetzungen
Bevor Sie Ihre Pipeline konfigurieren, stellen Sie sicher, dass Sie folgendes haben:
- Ein Azure Key Vault mit einem Zertifikat für Ihren Testbenutzer
- Der Dienstprinzipal für Ihre Pipeline erteilte die Rolle "Key Vault Certificate User" für den Tresor
- Ihre App-URLs, Mandanten-ID und E-Mails, die als Pipelineschlüssel oder Variablen gespeichert sind
Informationen zum einrichten von lokalen Zertifikaten finden Sie im Authentifizierungshandbuch.
GitHub Actions
Die folgenden Schritte konfigurieren einen GitHub Actions-Workflow, um Ihre Power Platform Playwright-Tests auf jedem Push-, Pull-Anforderungs- oder geplanten Trigger auszuführen.
Geheime Schlüssel speichern
Wechseln Sie in Ihrem Repository zu "Einstellungen" → "Geheime Schlüssel" und "Variablen" → "Aktionen ", und fügen Sie Folgendes hinzu:
| Geheimnis | Beschreibung |
|---|---|
MS_AUTH_EMAIL |
E-Mail des Testbenutzerkontos |
AZURE_KEYVAULT_URL |
Key Vault-URL (https://<vault>.vault.azure.net/) |
AZURE_CERTIFICATE_NAME |
Name des Zertifikats in Key Vault |
AZURE_TENANT_ID |
Microsoft Entra Mandanten-ID |
CANVAS_APP_URL |
Vollständige URL für den Abspielmodus Ihrer Canvas-App |
MODEL_DRIVEN_APP_URL |
Vollständige URL Ihrer modellgesteuerten App |
Workflowdatei
Erstellen Sie .github/workflows/e2e.yml:
name: Power Platform E2E Tests
on:
push:
branches: [main]
pull_request:
branches: [main]
schedule:
- cron: '0 6 * * 1-5' # Weekdays at 6 AM UTC
jobs:
e2e:
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install Rush dependencies
run: node common/scripts/install-run-rush.js install
- name: Build toolkit
run: node common/scripts/install-run-rush.js build --to power-platform-playwright-toolkit
- name: Install Playwright browsers
working-directory: packages/e2e-tests
run: npx playwright install chromium --with-deps
- name: Authenticate to Power Platform (Canvas)
working-directory: packages/e2e-tests
env:
MS_AUTH_EMAIL: ${{ secrets.MS_AUTH_EMAIL }}
MS_AUTH_CREDENTIAL_TYPE: certificate
MS_AUTH_CREDENTIAL_PROVIDER: azure-keyvault
AZURE_KEYVAULT_URL: ${{ secrets.AZURE_KEYVAULT_URL }}
AZURE_CERTIFICATE_NAME: ${{ secrets.AZURE_CERTIFICATE_NAME }}
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
CANVAS_APP_URL: ${{ secrets.CANVAS_APP_URL }}
MODEL_DRIVEN_APP_URL: ${{ secrets.MODEL_DRIVEN_APP_URL }}
run: npm run auth
- name: Authenticate to Power Platform (MDA)
working-directory: packages/e2e-tests
env:
MS_AUTH_EMAIL: ${{ secrets.MS_AUTH_EMAIL }}
MS_AUTH_CREDENTIAL_TYPE: certificate
MS_AUTH_CREDENTIAL_PROVIDER: azure-keyvault
AZURE_KEYVAULT_URL: ${{ secrets.AZURE_KEYVAULT_URL }}
AZURE_CERTIFICATE_NAME: ${{ secrets.AZURE_CERTIFICATE_NAME }}
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
MODEL_DRIVEN_APP_URL: ${{ secrets.MODEL_DRIVEN_APP_URL }}
run: npm run auth:mda
- name: Run Playwright tests
working-directory: packages/e2e-tests
env:
MS_AUTH_EMAIL: ${{ secrets.MS_AUTH_EMAIL }}
CANVAS_APP_URL: ${{ secrets.CANVAS_APP_URL }}
MODEL_DRIVEN_APP_URL: ${{ secrets.MODEL_DRIVEN_APP_URL }}
CUSTOM_PAGE_NAME: AccountsCustomPage
CI: true
run: npx playwright test
- name: Upload test results
if: always()
uses: actions/upload-artifact@v4
with:
name: playwright-report
path: packages/e2e-tests/playwright-report/
retention-days: 30
- name: Upload JUnit results
if: always()
uses: actions/upload-artifact@v4
with:
name: test-results
path: packages/e2e-tests/test-results/
retention-days: 30
Veröffentlichen von Testergebnissen in GitHub Actions
Um Testergebnisse in der PR-Prüfansicht anzuzeigen, fügen Sie den JUnit Reporter-Schritt nach ausführung der Tests hinzu:
- name: Publish test results
if: always()
uses: dorny/test-reporter@v1
with:
name: Playwright Tests
path: packages/e2e-tests/test-results/results.xml
reporter: java-junit
Azure Pipelines
Die folgenden Schritte konfigurieren eine Azure Pipelines Definition mit wiederverwendbaren Vorlagen, um Ihre Power Platform Playwright-Tests auszuführen.
Variablengruppe
Erstellen Sie eine Variablengruppe mit dem Namen power-platform-e2e-secrets in Pipelines → Library und fügen Sie die gleichen Variablen wie die GitHub Actions geheime Tabelle oben hinzu.
Definition der Pipeline
Erstellen Sie .azure-pipelines/e2e-tests.yml:
trigger:
branches:
include:
- main
pr:
branches:
include:
- main
schedules:
- cron: '0 6 * * 1-5'
displayName: Weekday morning run
branches:
include:
- main
pool:
vmImage: ubuntu-latest
variables:
- group: power-platform-e2e-secrets
- name: NODE_VERSION
value: '20'
stages:
- stage: E2E
displayName: End-to-End Tests
jobs:
- job: PlaywrightTests
displayName: Power Platform Playwright Tests
timeoutInMinutes: 60
steps:
- template: steps/e2e-setup.yml
- task: Bash@3
displayName: Authenticate (Canvas)
env:
MS_AUTH_EMAIL: $(MS_AUTH_EMAIL)
MS_AUTH_CREDENTIAL_TYPE: certificate
MS_AUTH_CREDENTIAL_PROVIDER: azure-keyvault
AZURE_KEYVAULT_URL: $(AZURE_KEYVAULT_URL)
AZURE_CERTIFICATE_NAME: $(AZURE_CERTIFICATE_NAME)
AZURE_TENANT_ID: $(AZURE_TENANT_ID)
CANVAS_APP_URL: $(CANVAS_APP_URL)
MODEL_DRIVEN_APP_URL: $(MODEL_DRIVEN_APP_URL)
script: |
cd packages/e2e-tests
npm run auth
- task: Bash@3
displayName: Authenticate (MDA)
env:
MS_AUTH_EMAIL: $(MS_AUTH_EMAIL)
MS_AUTH_CREDENTIAL_TYPE: certificate
MS_AUTH_CREDENTIAL_PROVIDER: azure-keyvault
AZURE_KEYVAULT_URL: $(AZURE_KEYVAULT_URL)
AZURE_CERTIFICATE_NAME: $(AZURE_CERTIFICATE_NAME)
AZURE_TENANT_ID: $(AZURE_TENANT_ID)
MODEL_DRIVEN_APP_URL: $(MODEL_DRIVEN_APP_URL)
script: |
cd packages/e2e-tests
npm run auth:mda
- task: Bash@3
displayName: Run Playwright Tests
env:
MS_AUTH_EMAIL: $(MS_AUTH_EMAIL)
CANVAS_APP_URL: $(CANVAS_APP_URL)
MODEL_DRIVEN_APP_URL: $(MODEL_DRIVEN_APP_URL)
CUSTOM_PAGE_NAME: AccountsCustomPage
CI: 'true'
script: |
cd packages/e2e-tests
npx playwright test
- template: steps/e2e-publish-results.yml
Vorlage für wiederverwendbare Einrichtungsschritte
Erstellen Sie .azure-pipelines/steps/e2e-setup.yml:
steps:
- task: NodeTool@0
displayName: Install Node.js
inputs:
versionSpec: $(NODE_VERSION)
- task: Bash@3
displayName: Install Rush dependencies
script: node common/scripts/install-run-rush.js install
- task: Bash@3
displayName: Build toolkit
script: node common/scripts/install-run-rush.js build --to power-platform-playwright-toolkit
- task: Bash@3
displayName: Install Playwright browsers
script: |
cd packages/e2e-tests
npx playwright install chromium --with-deps
Vorlage für wiederverwendbare Veröffentlichungsergebnisse
Erstellen Sie .azure-pipelines/steps/e2e-publish-results.yml:
steps:
- task: PublishTestResults@2
displayName: Publish JUnit test results
condition: always()
inputs:
testResultsFormat: JUnit
testResultsFiles: packages/e2e-tests/test-results/results.xml
testRunTitle: Power Platform Playwright Tests
- task: PublishPipelineArtifact@1
displayName: Publish Playwright report
condition: always()
inputs:
targetPath: packages/e2e-tests/playwright-report
artifact: playwright-report
publishLocation: pipeline
Fehlerbehebung bei CI/CD-Pipelinefehlern
Verwenden Sie die folgende Tabelle, um häufige Probleme beim Ausführen von Playwright-Tests in einer CI-Pipeline zu diagnostizieren und zu beheben.
| Symptom | Resolution |
|---|---|
| Fehler beim Authentifikationsschritt mit Zertifikatfehler | Überprüfen Sie die Key Vault-URL, den Zertifikatnamen und die Rolle des Pipeline-SP. |
| Bei der ersten Ausführung in CI schlagen die Tests fehl. | Erhöhen Sie retries auf 1 und überprüfen Sie die instabilen Selektoren |
| Artefakt nicht veröffentlicht | Sicherstellen, dass if: always() / condition: always() festgelegt ist |
| Pipeline-Zeitüberschreitung | Reduzieren der Testanzahl oder Erhöhung timeoutInMinutes |
Cannot find module Fehler |
Ausführen des Buildschritts für das Toolkit vor dem Ausführen von Tests |