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.
Nonte
Les fonctionnalités en version préliminaire ne sont pas destinées à une utilisation en production et peuvent être restreintes. Ces fonctionnalités sont disponibles avant une version officielle afin que les clients puissent obtenir un accès anticipé et fournir des commentaires.
Résumé
Power Apps Test Engine utilise Playwright comme technologie d’automatisation du navigateur de base. Cette intégration fournit à Test Engine des capacités de test puissantes, fiables et multi-navigateurs, tout en ajoutant plusieurs couches d’abstraction pour simplifier la création de tests pour les applications Power Platform.
Comment Test Engine améliore Playwright
Alors que Playwright offre d’excellentes capacités d’automatisation du navigateur, Test Engine étend ces capacités spécifiquement pour Power Platform :
| Amélioration de Test Engine | Description |
|---|---|
| Abstractions au niveau de l’application | Test Engine fonctionne avec des objets au niveau de l’application plutôt qu’avec des éléments DOM, ce qui rend les tests plus résilients aux modifications de l’interface utilisateur |
| Intégration de Power Fx | Test Engine ajoute la prise en charge de Power Fx, ce qui permet une approche low-code de la création de tests |
| Authentification intégrée | Les mécanismes d’authentification prédéfinis gèrent Microsoft Entra et les scénarios d’accès conditionnel |
| Intégration de Dataverse | L’intégration directe avec Dataverse permet des tests complets de bout en bout |
| Fournisseurs spécialisés | Fournisseurs optimisés pour les applications canevas et les applications pilotées par modèle |
Mise en œuvre technique
Les sections suivantes décrivent comment Test Engine s’appuie sur la base de l’automatisation du navigateur de Playwright et l’intègre aux abstractions spécifiques de Power Platform, permettant une automatisation des tests robuste et facile à maintenir.
Base d’automatisation du navigateur
Test Engine utilise les fonctionnalités de base de Playwright pour une automatisation cohérente du navigateur :
- Prise en charge inter-navigateurs de Chrome, Firefox et Microsoft Edge
- Mécanismes d’attente fiables qui attendent automatiquement que les éléments soient prêts
- Interception des requêtes réseau pour simuler les réponses d’API
- Outils de traçage et de débogage pour diagnostiquer les échecs de test
Intégration architecturale de Test Engine
- Couche fournisseur : la couche fournisseur de Test Engine s’interface directement avec les API Playwright pour contrôler le comportement du navigateur
- Modèle d’objet : plutôt que de travailler avec des éléments DOM bruts, Test Engine mappe sur des modèles d’objets spécifiques à l’application
- Couche Power Fx : les étapes de test écrites dans Power Fx sont interprétées et exécutées via la couche fournisseur
Fonctionnalités techniques clés
Les sections suivantes mettent en évidence les fonctionnalités techniques importantes que Test Engine ajoute à Playwright, notamment les sélecteurs spécifiques à l’application, la gestion du contexte du navigateur et l’accès direct aux fonctions de Playwright pour les scénarios avancés.
Sélecteurs spécifiques à l’application
Test Engine utilise des sélecteurs spécifiques à l’application au lieu de sélecteurs CSS ou XPath :
# Test Engine (using app-level selectors)
- testSteps: |
Select(Button1)
# Equivalent in raw Playwright (using DOM selectors)
Select(Button1)
# page.locator('div[data-control-name="Button1"]').click();
Gestion du contexte du navigateur
Test Engine gère les contextes du navigateur pour prendre en charge différents scénarios d’authentification :
# Test Engine handles browser context automatically
pac test run `
--provider canvas `
--test-plan-file testplan.te.yaml `
--tenant $tenantId `
--environment-id $environmentId
Fonctions directes de Playwright
Bien que Test Engine fasse abstraction de nombreuses interactions avec Playwright, il existe des scénarios où l’accès direct aux fonctionnalités de Playwright peut être utile. Test Engine fournit plusieurs fonctions de version préliminaire qui permettent une interaction directe avec Playwright à partir de vos étapes de test Power Fx.
Utilisation des fonctions Playwright dans Test Engine
Test Engine inclut les fonctions de version préliminaire suivantes qui vous permettent d’appliquer les fonctionnalités de sélection d’éléments de Playwright :
| Function | Description | Exemple |
|---|---|---|
| Preview.PlaywrightAction | Exécuter une action sur les éléments à l’aide de sélecteurs CSS ou DOM | Preview.PlaywrightAction("//button", "click") Voir des Opérations courantes d’actions Playwright |
| Preview.PlaywrightActionValue | Exécuter une action qui nécessite un paramètre de valeur | Preview.PlaywrightActionValue("//input[@data-id='1']", "fill", "Hello") Voir des Opérations courantes de valeur d’actions Playwright |
| Preview.PlaywrightScript | Exécuter un script C# personnalisé qui s’interface avec Playwright | Preview.PlaywrightScript("sample.csx") Voir Avancé : scripts Playwright personnalisés |
| Preview.Pause | Suspendre l’exécution des tests et afficher l’Inspecteur Playwright | Preview.Pause() |
Nonte
Pour utiliser ces fonctions de version préliminaire, vous devez ajouter les fonctions de version préliminaire à la liste des fonctions autorisées dans la section des paramètres de test.
Opérations courantes d’actions Playwright
Les opérations suivantes peuvent être effectuées avec Preview.PlaywrightAction :
| Action | Description | Exemple |
|---|---|---|
click |
Sélection d’un élément à l’aide d’un événement de clic | Preview.PlaywrightAction("//button[@id='submit']", "click") |
exists |
Vérifier si un élément existe | Preview.PlaywrightAction("//div[@class='error-message']", "exists") |
wait |
Attendre qu’un élément soit disponible | Preview.PlaywrightAction("//table[@data-loading='false']", "wait") |
Opérations courantes sur la valeur de l’action Playwright
Les opérations suivantes peuvent être effectuées avec Preview.PlaywrightActionValue :
| Action | Description | Exemple |
|---|---|---|
fill |
Remplir un champ de formulaire avec du texte | Preview.PlaywrightActionValue("//input[@name='search']", "fill", "Product name") |
select |
Sélectionnez une option dans la liste de sélection | Preview.PlaywrightActionValue("//select", "select", "Option2") |
setAttribute |
Définir un attribut sur un élément | Preview.PlaywrightActionValue("//div", "setAttribute", "data-custom='value'") |
Quand utiliser les fonctions directes de Playwright
Bien que les abstractions au niveau de l’application soient préférables, les fonctions directes de Playwright sont utiles dans les scénarios suivants :
- Interactions complexes de l’interface utilisateur non couvertes par les fonctions standard de Test Engine
- Composants tiers dans les applications Power Platform nécessitant une gestion spéciale
- Débogage de scénarios de test complexes où plus de contrôle est nécessaire
- Validation avancée des états ou des propriétés des éléments
Exemple : Approche combinée
Cet exemple illustre la combinaison d’abstractions au niveau de l’application avec des actions directes de Playwright :
testSteps: |
# Use app-level abstraction for Power Apps control
Select(SubmitButton);
# Use direct Playwright action for a third-party component
Preview.PlaywrightAction("//div[@class='custom-calendar']//button[@data-day='15']", "click");
# Wait for a specific condition using Playwright
Preview.PlaywrightAction("//div[@data-status='complete']", "wait");
# Resume using app-level abstractions
Assert(Label1.Text = "Submission Complete");
Avancé : scripts Playwright personnalisés
Pour les scénarios hautement spécialisés, vous pouvez créer des scripts Playwright personnalisés :
- Créer un fichier
.csxavec votre logique Playwright personnalisée - Référencer les assemblages Playwright requis
- Implémenter la structure de classe requise
- Appelez le script à partir de vos étapes de test
// sample.csx
#r "Microsoft.Playwright.dll"
#r "Microsoft.Extensions.Logging.dll"
using Microsoft.Playwright;
using Microsoft.Extensions.Logging;
public class PlaywrightScript {
public static void Run(IBrowserContext context, ILogger logger) {
Execute(context, logger).Wait();
}
public static async Task Execute(IBrowserContext context, ILogger logger) {
var page = context.Pages.First();
// Custom Playwright logic here
}
}
Nonte
Preview.PlaywrightScript n’est implémenté que pour les versions de débogage de Test Engine créées à partir des sources, et non dans l’outil pac test run publié.
Intégration avec le processus de développement
Les sections suivantes décrivent comment Test Engine et Playwright peuvent être utilisés dans les environnements de développement local et CI/CD, prenant en charge une gamme de workflows allant du débogage interactif à l’exécution automatisée des pipelines.
Développement local
Pour le développement local, Test Engine fournit un environnement complet :
- Exécution du navigateur local avec visibilité de l’interface utilisateur
- Exécution des tests étape par étape
- Journaux et diagnostics détaillés
Intégration de CI/CD
Dans les environnements CI/CD, Test Engine peut exécuter Playwright en mode sans assistance :
# Example Azure DevOps pipeline step
- task: PowerShell@2
displayName: 'Run Test Engine Tests'
inputs:
script: |
pac test run `
--provider canvas `
--test-plan-file "$(Build.SourcesDirectory)/tests/testplan.te.yaml" `
--tenant "$(TenantId)" `
--environment-id "$(EnvironmentId)"
Pratiques recommandées
Lorsque vous utilisez l’intégration Playwright de Test Engine :
- Concentrez-vous sur les objets au niveau de l’application plutôt que sur les éléments DOM
- Utilisez des fonctions Power Fx pour une logique complexe plutôt que du JavaScript brut
- Tirez parti des mécanismes d’authentification intégrés
- Réservez les fonctions de Playwright directs aux scénarios où les abstractions au niveau de l’application sont insuffisantes
- Passez en revue les tests générés pour optimiser la lisibilité et la maintenance