Partager via


Intégration de Test Engine et de Playwright (version préliminaire)

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 :

  1. Créer un fichier .csx avec votre logique Playwright personnalisée
  2. Référencer les assemblages Playwright requis
  3. Implémenter la structure de classe requise
  4. 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