Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se muestra cómo configurar la integración de CI/CD para pruebas de Power Platform Playwright en Acciones de GitHub y Azure Pipelines. Automatice la autenticación, ejecute pruebas de extremo a extremo y publique los resultados como artefactos de pipeline e informes de prueba.
Prerrequisitos
Antes de configurar la canalización, asegúrese de que tiene:
- Un Azure Key Vault con un certificado para el usuario de prueba
- La entidad de servicio de tu canalización concedió el rol Usuario de certificados de Key Vault en la bóveda.
- Las direcciones URL de la aplicación, el identificador de inquilino y el correo electrónico almacenados como secretos de canalización o variables
Para la configuración del certificado local, consulte Guía de autenticación.
Acciones de GitHub
Los siguientes pasos configuran un flujo de trabajo de Acciones de GitHub para ejecutar las pruebas de Power Platform Playwright en cada acción de inserción, pull request o acción programada.
Almacenamiento de secretos
En el repositorio, vaya a Configuración → Secretos y variables → Acciones y agregue:
| Secreto | Descripción |
|---|---|
MS_AUTH_EMAIL |
Correo electrónico de la cuenta de usuario de prueba |
AZURE_KEYVAULT_URL |
dirección URL de Key Vault (https://<vault>.vault.azure.net/) |
AZURE_CERTIFICATE_NAME |
Nombre del certificado en Key Vault |
AZURE_TENANT_ID |
id. de inquilino de Microsoft Entra |
CANVAS_APP_URL |
Dirección URL completa del modo de ejecución de la aplicación canvas |
MODEL_DRIVEN_APP_URL |
Dirección URL completa de la aplicación controlada por modelos |
Archivo de flujo de trabajo
Creación de .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
Publicación de resultados de pruebas en Acciones de GitHub
Para mostrar los resultados de las pruebas en la vista de comprobación de PR, agregue el paso del reportador JUnit después de ejecutar las pruebas.
- 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
Los pasos siguientes configuran una definición de Azure Pipelines con plantillas reutilizables para ejecutar las pruebas de Power Platform Playwright.
Grupo de variables
Cree un grupo de variables denominado power-platform-e2e-secrets en Pipelines → Library y agregue las mismas variables que la tabla de secretos de Acciones de GitHub anterior.
Definición de la canalización
Creación de .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
Plantilla de paso de instalación reutilizable
Creación de .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
Plantilla de resultados de publicación reutilizable
Creación de .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
Solución de problemas de errores de canalización de CI/CD
Use la tabla siguiente para diagnosticar y resolver problemas comunes al ejecutar pruebas de Playwright en una canalización de CI.
| Síntoma | Resolution |
|---|---|
| Falla en el paso de autenticación debido a un error de certificado | Verificar la URL de Key Vault, el nombre del certificado y el rol del principal del servicio de la canalización |
| Se produce un error en las pruebas en la primera ejecución en CI | Aumente retries a 1 y compruebe si hay selectores poco fiables. |
| Artefacto no publicado | Asegúrese de que if: always() / condition: always() está establecido |
| El tiempo de espera de la tubería se agota | Reducir el número de pruebas o aumentar timeoutInMinutes |
Cannot find module con error |
Ejecutar el paso de compilación del kit de herramientas antes de ejecutar pruebas |
Pasos siguientes
Consulte también
- documentación de Acciones de GitHub
- documentación de Azure Pipelines
- Configuración de CI de Playwright