Suivez la fenêtre contextuelle ouverte par votre action.
Liez une nouvelle fenêtre à son action de lancement, puis vérifiez la page souhaitée au lieu d'un onglet arbitraire.

Édition traduite. Les identifiants techniques restent sous leur forme originale.

Un bouton d'aide ouvre une nouvelle fenêtre. Le test continue de lire la page d'origine ou récupère le dernier onglet. Il peut réussir lorsqu'une autre fenêtre est présente et échouer lorsque l'environnement change. Le contrat manquant est la propriété : quelle page cette action a-t-elle créée ?
Ce guide fait suite à la documentation des pages de Playwright avec une fenêtre de support inventée localement. Il ne s'agit pas d'une connexion à un compte ou d'un flux de paiement externe. Le but est d'attacher une popup à son action initiatrice, d'inspecter la page que vous avez réellement reçue et d'éviter de transformer l'ordre de tabulation en preuve.
Attendez sur la page propriétaire de l'action
Démarrez l'attente contextuelle avant de cliquer sur le contrôle qui l'ouvre. Attendez ensuite cette même promesse et conservez la référence de page renvoyée. Une nouvelle fenêtre rapide ne doit pas échapper à l'attente et un autre onglet existant ne doit pas devenir la cible accidentelle.
const pendingPopup = page.waitForEvent('popup');
await page.getByRole('button', { name: 'Open demo help' }).click();
const popup = await pendingPopup;
await expect(popup.getByRole('heading', { name: 'Demo help' })).toBeVisible();Cet exemple suppose que l'application locale ouvre une fenêtre contextuelle avec un en-tête utile. Il ne crée pas de titre ni ne garantit que chaque politique de navigateur autorise tout type de nouvelle fenêtre. Placez l'auditeur avant l'action et vérifiez ensuite le contenu réel attendu.
Le guide des pages décrit également l'écoute d'une nouvelle page dans le contexte du navigateur. Cet événement plus large est utile lorsque la page de lancement n'est pas connue. Lorsqu'il est connu, un événement contextuel au niveau de la page donne une relation plus claire. Étendez l'attente au comportement au lieu d'adopter l'auditeur le plus large par défaut.
Une nouvelle page n'est pas encore la bonne destination
La réception d'un objet Page prouve qu'une fenêtre a été créée. Cela ne prouve pas le contenu prévu chargé ou que la navigation s'est terminée à une origine autorisée. Une popup peut afficher une erreur, une redirection ou un autre document. Vérifiez une URL ou une condition de page significative par rapport aux exigences réelles du produit.
Pour la démo, un titre suffit à démontrer l'appropriation. Pour un flux réel, utilisez la destination attendue approuvée et les informations que la personne doit recevoir. Ne considérez aucun titre visible comme un succès. Ne saisissez pas vos informations d'identification sur une page inattendue car elle s'est ouverte au bon moment.
Utilisez la référence contextuelle renvoyée pour les assertions et les actions. Évitez de vous fier à l'ordre de context.pages(). Le contexte peut déjà contenir un onglet de notification, une fenêtre d'aide antérieure ou des pages créées par l'application. Une hypothèse du dernier onglet est une supposition cachée dans un code autrement lisible.
Séparez la navigation et la réalisation de l'activité
Un document apparaissant dans une autre fenêtre peut ne représenter qu'une étape du parcours. Un article d'assistance doit contenir les conseils promis. Un rapport généré doit correspondre à l'enregistrement sélectionné. Une fenêtre de confirmation doit refléter l'opération réelle. L'événement de nouvelle fenêtre ne peut prouver à lui seul aucun de ces résultats commerciaux.
Utilisez des enregistrements de mise en scène inventés ou approuvés lors de l'élaboration du test. Si la fenêtre contextuelle entre dans un service tiers, établissez la limite de test autorisée avant d'y agir. Une référence pratique du navigateur ne constitue pas une autorisation de soumettre un formulaire, de dépenser de l'argent ou de divulguer des données de compte à un autre site.
Pour les flux de travail qui se terminent dans la fenêtre d'origine, conservez les deux références et nommez-les. Vérifiez l'état suivant de la page d'origine après l'action contextuelle approuvée. Ne fermez pas accidentellement la page parent pour simplifier le nettoyage. Un test doit préserver la relation qu'une personne vit.
Décidez comment le comportement sans popup est signalé
Un produit peut réutiliser intentionnellement le même onglet sur mobile ou dans une configuration différente. Confirmez ce comportement avant d'exiger une fenêtre contextuelle partout. Si la spécification promet une fenêtre contextuelle et qu'aucune n'arrive, une attente d'événement limitée devrait échouer avec cette limite claire plutôt que de s'arrêter indéfiniment.
Ne corrigez pas l'échec en cliquant à plusieurs reprises. Des clics répétés peuvent créer plusieurs fenêtres lorsque la requête initiale est simplement lente. Vérifiez si le clic a eu lieu, si le navigateur a bloqué l'action et si l'application a modifié sa conception de navigation. La bonne correction dépend de ces preuves.
Fermez la fenêtre contextuelle locale lorsque le test a fini de l'inspecter. Conservez les preuves nécessaires conformément à la politique de confidentialité de la suite. Les URL de fenêtre, les titres et les captures d'écran peuvent contenir des détails d'enregistrement privés, de sorte qu'une capture d'écran parent propre ne garantit pas la distribution sûre de chaque fenêtre contextuelle jointe.
AnyTest décrit l'exploration des applications et les tests de bout en bout que les humains examinent. Un évaluateur peut demander quelle fenêtre un parcours généré cible réellement et comment il prouve cette relation. Aucune implémentation contextuelle spécifique dans AnyTest n'est revendiquée. Le résultat utile est une vérification explicite du propriétaire et de la destination de la page, et non une plus grande collection d'onglets.
Questions courantes
Un test doit-il utiliser le dernier onglet ?
Pas lorsque l'action de lancement peut être liée à un événement contextuel. Conservez la référence de la page renvoyée.
Un événement popup est-il le résultat final ?
Non. Vérifiez séparément la destination/le contenu prévu et le résultat commercial.