Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment configurer l’intégration CI/CD pour les tests Playwright de Power Platform dans GitHub Actions et Azure Pipelines. Automatisez l’authentification, exécutez des tests de bout en bout et publiez les résultats en tant qu’artefacts de pipeline et rapports de test.
Prerequisites
Avant de configurer votre pipeline, vérifiez que vous disposez des points suivants :
- Un Azure Key Vault avec un certificat pour votre utilisateur de test
- Le principal de service de votre pipeline a accordé le rôle Key Vault Utilisateur de certificat sur le coffre
- URL de votre application, ID de locataire et e-mail stockés en tant que secrets ou variables de pipeline
Pour la configuration du certificat local, consultez le guide d’authentification.
GitHub Actions
Les étapes suivantes configurent un flux de travail GitHub Actions pour exécuter vos tests Playwright Power Platform à chaque push, pull request ou déclencheur planifié.
Conserver les informations sensibles
Dans votre référentiel, accédez à Paramètres → Secrets et variables → Actions et ajoutez :
| Secret | Description |
|---|---|
MS_AUTH_EMAIL |
E-mail du compte d’utilisateur de test |
AZURE_KEYVAULT_URL |
URL de Key Vault (https://<vault>.vault.azure.net/) |
AZURE_CERTIFICATE_NAME |
Nom du certificat dans Key Vault |
AZURE_TENANT_ID |
ID de client Microsoft Entra |
CANVAS_APP_URL |
URL en mode lecture complète de votre application canevas |
MODEL_DRIVEN_APP_URL |
URL complète de votre application pilotée par modèle |
Fichier de flux de travail
Créez .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
Publier les résultats des tests dans GitHub Actions
Pour afficher les résultats des tests dans la vue de vérification des demandes de tirage, ajoutez l’étape reporter JUnit après l’exécution des tests :
- 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
Les étapes suivantes configurent une définition de Azure Pipelines avec des modèles réutilisables pour exécuter vos tests Power Platform Playwright.
Groupe de variables
Créez un groupe de variables nommé power-platform-e2e-secrets dans Pipelines → Library et ajoutez les mêmes variables que la table de secrets GitHub Actions ci-dessus.
Définition de pipeline
Créez .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
Modèle d’étape de configuration réutilisable
Créez .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
Modèle de résultats de publication réutilisable
Créez .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
Résoudre les défaillances du pipeline CI/CD
Utilisez le tableau suivant pour diagnostiquer et résoudre les problèmes courants lors de l’exécution de tests Playwright dans un pipeline CI.
| Symptôme | Résolution |
|---|---|
| Échec de l’étape d’authentification avec une erreur de certificat | Vérifier Key Vault URL, le nom du certificat et le rôle de fournisseur de services de pipeline |
| Les tests échouent lors de la première exécution dans CI | Augmenter retries à 1 et vérifier les sélecteurs inconstants |
| Artefact non publié | Vérifier que if: always() / condition: always() l’option est définie |
| Délais d’expiration du pipeline | Réduire le nombre de tests ou augmenter timeoutInMinutes |
Cannot find module Erreur |
Exécutez l’étape de génération du kit de ressources avant d’exécuter des tests |