QA The Other WayKwaliteitsborging voor het tijdperk van door AI geschreven tests. QA The Other Way.
Praktische QA

Volg de pop-up die uw actie heeft geopend.

Bind een nieuw venster aan de initiërende actie en controleer vervolgens de bedoelde pagina in plaats van een willekeurig tabblad.

7 minuten leestijdQA The Other Way
Een geschreven oudervenster dat is verbonden met de beoogde pop-up.
Geschreven redactionele illustratie.
Illustratieve video bij dit artikel. Engelse tekst op het scherm; selecteer ondertitels voor deze taal.

Vertaalde editie. Technische identificatiegegevens blijven in hun oorspronkelijke vorm.

Bind een nieuw venster aan de initiërende actie en controleer vervolgens de bedoelde pagina in plaats van een willekeurig tabblad.
Illustratieve lokale demo met verzonnen inputs, geen klant- of leveranciersinterface.

Een helpknop opent een nieuw venster. De test blijft de originele pagina lezen, of pakt het tabblad dat het laatste is. Het kan voorbijgaan als er een ander venster aanwezig is en mislukken als de omgeving verandert. Het ontbrekende contract is eigendom: welke pagina is door deze actie gemaakt?

Deze handleiding volgt de documentatie van Playwright's pagina's met een lokaal uitgevonden ondersteuningsvenster. Het is geen accountaanmelding of een externe betalingsstroom. Het doel is om een ​​pop-up aan de initiërende actie toe te voegen, de pagina te inspecteren die u daadwerkelijk heeft ontvangen en te voorkomen dat de tabvolgorde als bewijs wordt omgezet.

Wacht op de pagina die eigenaar is van de actie

Start de pop-up en wacht voordat u op het besturingselement klikt waarmee deze wordt geopend. Wacht dan op diezelfde belofte en bewaar de geretourneerde paginareferentie. Een snel nieuw venster mag niet aan het wachten ontsnappen, en een ander bestaand tabblad mag niet per ongeluk het doelwit worden.

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 dit voorbeeld wordt ervan uitgegaan dat de lokale toepassing een pop-up opent met een nuttige kop. Het creëert geen kop of garandeert niet dat elk browserbeleid elk soort nieuw venster toestaat. Zet de luisteraar vóór de actie en verifieer daarna de daadwerkelijk verwachte inhoud.

De paginagids beschrijft ook het luisteren naar een nieuwe pagina in de browsercontext. Die bredere gebeurtenis is handig als de initiërende pagina niet bekend is. Als het bekend is, geeft een pop-upgebeurtenis op paginaniveau een duidelijker verband. Bereik het wachten op het gedrag in plaats van standaard de breedste luisteraar te gebruiken.

Een nieuwe pagina is nog niet de juiste bestemming

Het ontvangen van een Page-object bewijst dat er een venster is gemaakt. Het bewijst niet dat de beoogde inhoud is geladen of dat de navigatie op een toegestane oorsprong is geëindigd. Een pop-up kan een fout, een omleiding of een ander document tonen. Controleer een betekenisvolle URL of paginavoorwaarde ten opzichte van de daadwerkelijke productvereiste.

Voor de demo is een kop voldoende om eigendom aan te tonen. Voor een echte flow gebruik je de goedgekeurde verwachte bestemming en de informatie die de persoon zou moeten ontvangen. Beschouw geen enkele zichtbare kop als succes. Voer geen inloggegevens in op een onverwachte pagina, omdat deze op het juiste moment is geopend.

Gebruik de geretourneerde pop-upreferentie voor beweringen en acties. Vertrouw niet op de volgorde van context.pages(). De context bevat mogelijk al een notificatietabblad, een eerder helpvenster of pagina's die door de toepassing zijn gemaakt. Een aanname op het laatste tabblad is een gok die verborgen is in anderszins leesbare code.

Houd navigatie en zakelijke afhandeling gescheiden

Een document dat in een ander venster verschijnt, kan slechts één stap in de reis zijn. Een ondersteuningsartikel moet de beloofde richtlijnen bevatten. Een gegenereerd rapport moet overeenkomen met het geselecteerde record. Een bevestigingsvenster moet de daadwerkelijke werking weergeven. Het nieuwe-venster-evenement kan op zichzelf geen van deze bedrijfsresultaten bewijzen.

Gebruik bedachte of goedgekeurde testregistraties tijdens het ontwikkelen van de test. Als de pop-up een service van derden binnengaat, stel dan de toegestane testgrens vast voordat u daar actie onderneemt. Een handige browserreferentie is geen toestemming om een ​​formulier in te dienen, geld uit te geven of accountgegevens vrij te geven aan een andere site.

Voor workflows die eindigen in het oorspronkelijke venster, bewaart u beide verwijzingen en geeft u deze een naam. Controleer de volgende status van de oorspronkelijke pagina na de goedgekeurde pop-upactie. Sluit niet per ongeluk de bovenliggende pagina om het opruimen eenvoudiger te maken. Een test moet de relatie die iemand ervaart in stand houden.

Bepaal hoe geen-pop-upgedrag wordt gerapporteerd

Een product kan opzettelijk hetzelfde tabblad opnieuw gebruiken op mobiel of in een andere configuratie. Bevestig dat gedrag voordat u overal een pop-up nodig heeft. Als de specificatie een pop-up belooft en er komt er geen, dan zou een begrensde gebeurteniswachting met die duidelijke grens moeten mislukken in plaats van voor onbepaalde tijd te blijven hangen.

Los de fout niet op door herhaaldelijk te klikken. Herhaalde klikken kunnen meerdere vensters creëren als het oorspronkelijke verzoek alleen maar traag is. Controleer of de klik heeft plaatsgevonden, of de browser de actie heeft geblokkeerd en of de applicatie het navigatieontwerp heeft gewijzigd. De juiste correctie hangt af van dat bewijsmateriaal.

Sluit de lokale pop-up wanneer de test klaar is met het inspecteren ervan. Bewaar het benodigde bewijsmateriaal volgens het privacybeleid van de suite. Venster-URL's, titels en schermafbeeldingen kunnen details van privérecords bevatten, dus een schoon bovenliggende schermafbeelding zorgt er niet voor dat elke bijgevoegde pop-up veilig kan worden verspreid.

AnyTest beschrijft het verkennen van applicaties en end-to-end-tests die door mensen worden beoordeeld. Een recensent kan vragen op welk venster een gegenereerde reis zich eigenlijk richt en hoe deze relatie wordt bewezen. Er wordt geen specifieke pop-upimplementatie in AnyTest geclaimd. Het nuttige resultaat is een expliciete pagina-eigenaar en bestemmingscontrole, en niet een grotere verzameling tabbladen.

Veelgestelde vragen

Moet een test het laatste tabblad gebruiken?

Niet wanneer de initiërende actie kan worden gekoppeld aan een pop-upgebeurtenis. Bewaar de geretourneerde paginaverwijzing.

Is een pop-upevenement het eindresultaat?

Nee. Controleer de beoogde bestemming/inhoud en het bedrijfsresultaat afzonderlijk.

Bronnen