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.
Le générateur de code intégré (codegen) de Playwright enregistre les interactions de votre navigateur en tant que code de test TypeScript. Combinez-le avec un assistant de codage IA pour nettoyer l’enregistrement, appliquer les conventions du kit de ressources Playwright Power Platform et produire des tests prêts pour la production sans écrire manuellement des sélecteurs.
Fonctionnement du flux de travail
-
Enregistrement: exécutez
playwright codegencontre votre application Power Platform. Playwright capture chaque clic, remplissage et navigation en tant que code de test brut. - Coller : déposez le code enregistré dans votre conversation IA en même temps que les documents de l’API du kit de ressources ou vos instructions personnalisées.
-
Réécriture : Demandez à l'IA de réécrire l'enregistrement à l'aide de
AppProvider,ModelDrivenAppPage,GridComponentet d'autres classes de la boîte à outils. - Révision : Vérifiez l'exactitude du test généré, ajustez les délais d'expiration, puis validez les modifications.
Ce flux de travail est particulièrement utile lorsque vous débutez avec l’API du kit de ressources ou que vous utilisez une application inconnue.
Étape 1 : Enregistrer avec le codegen Playwright
Utilisez l’outil codegen de Playwright pour enregistrer vos interactions de navigateur et générer le code de test brut que vous affinerez dans les étapes ultérieures.
Installer des navigateurs Playwright
Avant d’enregistrer, vérifiez que le navigateur Chromium est installé pour Playwright.
cd packages/e2e-tests
npx playwright install chromium
Exécuter codegen sur votre application
Démarrez le générateur de code de Playwright pointant vers l’URL de votre application Power Platform. Cela ouvre un navigateur en parallèle avec l’inspecteur Playwright, qui enregistre chaque interaction en tant que TypeScript.
npx playwright codegen --save-storage=.playwright-ms-auth/state-record.json \
"https://apps.powerapps.com/play/<your-app-id>"
Cette commande ouvre un navigateur et un Playwright Inspector côte à côte. Interagir avec votre application : cliquez sur des boutons, remplissez des formulaires et naviguez. L’inspecteur enregistre chaque action en tant que TypeScript.
Conseil / Astuce
Si votre application nécessite une authentification, authentifiez d’abord et transmettez l’état de stockage :
npx playwright codegen --load-storage=.playwright-ms-auth/state-<email>.json \
"https://apps.powerapps.com/play/<your-app-id>"
Copier le code généré
Lorsque vous avez terminé, copiez le test généré à partir de l’inspecteur Playwright. Il ressemblera à ceci :
import { test, expect } from '@playwright/test';
test('test', async ({ page }) => {
await page.goto('https://apps.powerapps.com/play/...');
await page.frameLocator('iframe[name="fullscreen-app-host"]')
.locator('[data-control-name="icon3"]').click();
await page.frameLocator('iframe[name="fullscreen-app-host"]')
.locator('input[aria-label="Account Name"]').fill('Contoso');
// ...
});
Étape 2 : Réécrire avec l’IA
Collez l’enregistrement dans votre conversation IA. Ensuite, demandez :
Réécrire cet enregistrement de génération de code Playwright en tant que test approprié à l’aide de l’ensemble d'outils Power Platform Playwright. Utiliser
AppProviderpour lancer l'application, attribuer le localisateur de trame à une variable, ajouter des appels appropriéswaitForavant les interactions, et utiliser les assertionsexpectde@playwright/test.
Si vous avez configuré un fichier d’instructions personnalisé , l’IA applique automatiquement vos conventions de projet. Sinon, partagez l’extrait de code approprié à partir de canvas-application.md ou de model-driven-application.md en tant que contexte.
Exemple : test de canevas réécrit par IA
L’exemple suivant montre comment la sortie raw codegen se transforme en un test propre et facile à maintenir à l’aide de la boîte à outils Power Platform Playwright.
Avant (sortie codegen) :
test('test', async ({ page }) => {
await page.goto('https://apps.powerapps.com/play/<app-id>');
await page.frameLocator('iframe[name="fullscreen-app-host"]')
.locator('[data-control-name="icon3"]').click();
await page.frameLocator('iframe[name="fullscreen-app-host"]')
.locator('input[aria-label="Account Name"]').fill('Contoso');
await page.frameLocator('iframe[name="fullscreen-app-host"]')
.locator('[data-control-name="IconButton_Accept1"] [role="button"]').click();
});
Après (réécriture par IA) :
import { test, expect } from '@playwright/test';
import { AppProvider, AppType, AppLaunchMode, buildCanvasAppUrlFromEnv } from 'power-platform-playwright-toolkit';
test('should add a new account', async ({ page, context }) => {
const app = new AppProvider(page, context);
await app.launch({
app: 'Accounts App',
type: AppType.Canvas,
mode: AppLaunchMode.Play,
skipMakerPortal: true,
directUrl: buildCanvasAppUrlFromEnv(),
});
const canvasFrame = page.frameLocator('iframe[name="fullscreen-app-host"]');
// Wait for app to load
await canvasFrame
.locator('[data-control-part="gallery-item"]')
.first()
.waitFor({ state: 'visible', timeout: 60000 });
// Click Add
await canvasFrame.locator('[data-control-name="icon3"]').click();
// Fill form
await canvasFrame.locator('input[aria-label="Account Name"]').fill('Contoso');
// Save
await canvasFrame
.locator('[data-control-name="IconButton_Accept1"] [role="button"]')
.click();
// Verify record appears
const newItem = canvasFrame
.locator('[data-control-part="gallery-item"]')
.filter({ hasText: 'Contoso' });
await expect(newItem).toBeVisible({ timeout: 30000 });
});
Étape 3 : Utiliser codegen en mode dirigé pour les applications basées sur des modèles
Pour les applications basées sur des modèles, enregistrez les interactions de grille et de formulaire de navigation :
npx playwright codegen --load-storage=.playwright-ms-auth/state-mda-<email>.json \
"https://<org>.crm.dynamics.com/main.aspx?appid=<app-id>"
Ensuite, demandez à l’IA de réécrire à l’aide de ModelDrivenAppPage
« Réécrire cet enregistrement de génération de code pour utiliser
ModelDrivenAppPage. » Remplacez les clics de grille brutepage.locator()parmda.grid.filterByKeyword(),mda.grid.openRecord(),mda.form.getAttribute()etmda.form.save().
Utiliser gitHub Copilot Chat pour la création de tests
Dans VS Code avec GitHub Copilot, vous pouvez créer des tests directement dans le volet de conversation sans codegen :
Ouvrez le fichier de test approprié dans l’éditeur.
Ouvrez Copilot Chat (
Ctrl+Shift+I).Demande :
« @workspace Écrire un test dans
tests/northwind/canvas/canvas-app-crud.test.tslequel ouvre la galerie, recherche l’élément intitulé « Northwind Traders », clique dessus, modifie le champ de téléphone et enregistre. »
Copilot lit votre fichier de test et votre kit de ressources existants pour produire du code de test contextuel précis.
Note
Pour obtenir de meilleurs résultats, conservez un test de référence bien écrit dans le même fichier ou dossier. Copilot l’utilise comme modèle pour correspondre à votre style.
Utiliser Claude pour des suites de test plus volumineuses
Claude (via Claude Code ou Claude.ai) excelle à générer plusieurs tests connexes à la fois :
« Étant donné la structure de l'application canvas [insérer le contenu de canvas-application.md], générez une suite de tests complète couvrant : (1) le chargement de la galerie avec des éléments, (2) le filtrage des résultats de recherche, (3) la création d'un nouvel enregistrement, (4) la modification d'un enregistrement existant, (5) la suppression d'un enregistrement. »
Claude génère les cinq tests dans une seule réponse, en suivant les modèles dans votre contexte.
Playwright CLI pour la rapide génération de tests
L’interface CLI Playwright fournit des utilitaires supplémentaires pour la gestion des tests :
# Install
npm install -g @playwright/cli
# Generate test stubs for a URL
playwright-cli generate --url "https://apps.powerapps.com/play/<app-id>"
# List all tests in a project
playwright-cli list
# Show test tree
playwright-cli show-tree packages/e2e-tests
Note
L’interface CLI Playwright est un package distinct de l’exécuteur de test Playwright. Il ajoute des commandes pratiques pour la découverte de tests et la création de structures de support.
Meilleures pratiques pour les tests générés par l’IA
-
Passez toujours en revue les sélecteurs générés : l’IA peut créer des sélecteurs trop fragiles ou trop larges. Vérifiez les
data-control-namevaleurs par rapport au DOM réel. -
Vérifier les délais d’expiration : l’IA ne connaît pas le temps de chargement de votre application. Ajoutez des délais d’expiration de 60 secondes pour les appels de galerie
waitForsur les applications basées sur Dataverse. -
Utilisez des données de test uniques : les tests générés par l’IA utilisent souvent des chaînes codées en dur. Remplacez-les par des suffixes
Date.now()pour éviter les conflits entre les exécutions de test. -
Valider avec
expect: Les enregistrements codegen manquent souvent d’assertions. Demandez à l’IA d’ajouter des appels significatifsexpectaprès chaque action.