QA The Other WayQualitätssicherung für das Zeitalter KI-geschriebener Tests. QA The Other Way.
Praktischer QA

Folgen Sie dem Popup, das durch Ihre Aktion geöffnet wurde.

Binden Sie ein neues Fenster an seine auslösende Aktion und überprüfen Sie dann die beabsichtigte Seite anstelle einer beliebigen Registerkarte.

7 Minuten LesezeitQA The Other Way
Ein erstelltes übergeordnetes Fenster, das mit dem vorgesehenen Popup verbunden ist.
Verfasste redaktionelle Illustration.
Illustratives Video zu diesem Artikel. Englischer Bildschirmtext; Wählen Sie Untertitel für diese Sprache aus.

Übersetzte Ausgabe. Technische Kennungen bleiben in ihrer ursprünglichen Form.

Binden Sie ein neues Fenster an seine auslösende Aktion und überprüfen Sie dann die beabsichtigte Seite anstelle einer beliebigen Registerkarte.
Anschauliche lokale Demo mit erfundenen Eingaben, keiner Kunden- oder Lieferantenschnittstelle.

Eine Hilfeschaltfläche öffnet ein neues Fenster. Der Test liest weiterhin die Originalseite oder greift auf die zuletzt zuletzt angezeigte Registerkarte. Es kann passieren, wenn ein anderes Fenster vorhanden ist, und fehlschlagen, wenn sich die Umgebung ändert. Der fehlende Vertrag ist Eigentum: Welche Seite wurde durch diese Aktion erstellt?

Diese Anleitung folgt Playwrights Seitendokumentation mit einem lokal erfundenen Supportfenster. Es handelt sich nicht um eine Kontoanmeldung oder einen externen Zahlungsfluss. Ziel ist es, ein Popup an die auslösende Aktion anzuhängen, die Seite, die Sie tatsächlich erhalten haben, zu überprüfen und zu vermeiden, dass die Tab-Reihenfolge als Beweismittel dient.

Warten Sie auf der Seite, der die Aktion gehört

Starten Sie das Popup und warten Sie, bevor Sie auf das Steuerelement klicken, das es öffnet. Warten Sie dann auf dasselbe Versprechen und behalten Sie die zurückgegebene Seitenreferenz bei. Ein schnelles neues Fenster sollte der Wartezeit nicht entgehen, und ein anderer vorhandener Tab sollte nicht zum zufälligen Ziel werden.

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();

In diesem Beispiel wird davon ausgegangen, dass die lokale Anwendung ein Popup mit einer nützlichen Überschrift öffnet. Es erstellt keine Überschrift und garantiert nicht, dass jede Browserrichtlinie jede Art von neuem Fenster zulässt. Stellen Sie den Listener vor die Aktion und überprüfen Sie anschließend den tatsächlich erwarteten Inhalt.

Der Seitenleitfaden beschreibt auch das Warten auf eine neue Seite im Browserkontext. Dieses umfassendere Ereignis ist nützlich, wenn die initiierende Seite nicht bekannt ist. Wenn es bekannt ist, ergibt ein Popup-Ereignis auf Seitenebene eine klarere Beziehung. Beschränken Sie die Wartezeit auf das Verhalten, anstatt standardmäßig den breitesten Listener zu übernehmen.

Eine neue Seite ist noch nicht das richtige Ziel

Der Empfang eines Page-Objekts beweist, dass ein Fenster erstellt wurde. Es beweist nicht, dass der beabsichtigte Inhalt geladen wurde oder dass die Navigation an einem zulässigen Ursprung endete. Ein Popup kann einen Fehler, eine Weiterleitung oder ein anderes Dokument anzeigen. Vergleichen Sie eine aussagekräftige URL oder Seitenbedingung mit der tatsächlichen Produktanforderung.

Für die Demo genügt eine Überschrift, um die Inhaberschaft zu verdeutlichen. Für einen echten Fluss verwenden Sie das genehmigte erwartete Ziel und die Informationen, die die Person erhalten soll. Betrachten Sie keine sichtbare Überschrift als Erfolg. Geben Sie Ihre Anmeldeinformationen nicht auf einer unerwarteten Seite ein, da diese im richtigen Moment geöffnet wurde.

Verwenden Sie die zurückgegebene Popup-Referenz für Behauptungen und Aktionen. Vermeiden Sie es, sich auf die Reihenfolge von context.pages() zu verlassen. Der Kontext enthält möglicherweise bereits eine Benachrichtigungsregisterkarte, ein früheres Hilfefenster oder von der Anwendung erstellte Seiten. Eine Last-Tab-Annahme ist eine Vermutung, die in ansonsten lesbarem Code verborgen ist.

Halten Sie Navigation und Geschäftsabschluss getrennt

Ein Dokument, das in einem anderen Fenster erscheint, ist möglicherweise nur ein Schritt auf dem Weg. Ein Support-Artikel sollte die versprochene Anleitung enthalten. Ein generierter Bericht sollte dem ausgewählten Datensatz entsprechen. Ein Bestätigungsfenster sollte den tatsächlichen Vorgang widerspiegeln. Das New-Window-Event allein kann keines dieser Geschäftsergebnisse beweisen.

Verwenden Sie bei der Entwicklung des Tests erfundene oder genehmigte Staging-Aufzeichnungen. Wenn das Popup einen Drittanbieterdienst betritt, legen Sie die zulässige Testgrenze fest, bevor Sie dort agieren. Ein praktischer Browser-Verweis ist keine Erlaubnis, ein Formular abzusenden, Geld auszugeben oder Kontodaten an eine andere Website weiterzugeben.

Behalten Sie für Workflows, die wieder im ursprünglichen Fenster beendet werden, beide Referenzen bei und benennen Sie sie. Überprüfen Sie den nächsten Status der Originalseite nach der genehmigten Popup-Aktion. Schließen Sie die übergeordnete Seite nicht versehentlich, um die Bereinigung zu vereinfachen. Ein Test soll die Beziehung bewahren, die eine Person erlebt.

Entscheiden Sie, wie das Nicht-Popup-Verhalten gemeldet wird

Ein Produkt kann auf Mobilgeräten oder in einer anderen Konfiguration absichtlich dieselbe Registerkarte wiederverwenden. Bestätigen Sie dieses Verhalten, bevor Sie überall ein Popup benötigen. Wenn die Spezifikation ein Popup verspricht und keines eintrifft, sollte eine begrenzte Ereigniswartezeit mit dieser klaren Grenze fehlschlagen und nicht auf unbestimmte Zeit hängen bleiben.

Beheben Sie den Fehler nicht durch wiederholtes Klicken. Wiederholte Klicks können mehrere Fenster erstellen, wenn die ursprüngliche Anfrage nur langsam ist. Überprüfen Sie, ob der Klick stattgefunden hat, ob der Browser die Aktion blockiert hat und ob die Anwendung ihr Navigationsdesign geändert hat. Die richtige Korrektur hängt von diesen Beweisen ab.

Schließen Sie das lokale Popup, wenn der Test die Prüfung abgeschlossen hat. Bewahren Sie die erforderlichen Nachweise gemäß der Datenschutzrichtlinie der Suite auf. Fenster-URLs, Titel und Screenshots können private Datensatzdetails enthalten, sodass ein sauberer übergeordneter Screenshot nicht die Verbreitung jedes angehängten Popups sicher macht.

AnyTest beschreibt Anwendungsexploration und End-to-End-Tests, die von Menschen überprüft werden. Ein Prüfer kann fragen, auf welches Fenster eine generierte Journey tatsächlich abzielt und wie sie diese Beziehung beweist. Es wird keine spezifische Popup-Implementierung in AnyTest beansprucht. Das nützliche Ergebnis ist eine explizite Überprüfung des Seiteneigentümers und Ziels, nicht einer größeren Sammlung von Registerkarten.

Häufige Fragen

Sollte ein Test die letzte Registerkarte verwenden?

Nicht, wenn die auslösende Aktion mit einem Popup-Ereignis verknüpft werden kann. Behalten Sie die zurückgegebene Seitenreferenz bei.

Ist ein Popup-Event das Endergebnis?

Nein. Überprüfen Sie das beabsichtigte Ziel/den Inhalt und das Geschäftsergebnis separat.

Quellen