Beslis het dialoogantwoord vóór de klik.
Beantwoord de native bevestiging bewust en controleer de werkelijke gevolgen van accepteren en annuleren.

Vertaalde editie. Technische identificatiegegevens blijven in hun oorspronkelijke vorm.

De test klikt op Democoncept verwijderen. Een browserbevestiging verschijnt. Een listener logt het bericht maar antwoordt niet. De klik eindigt nooit: de app wacht op een antwoord, niet op een nieuwe timeout. Alleen observeren kan een eenvoudige test laten vastlopen.
Deze gids volgt Playwrights dialoogdocumentatie met een verzonnen lokaal concept. Er wordt geen echt document verwijderd en geen server aangeroepen. Beide antwoorden op confirm en hun zichtbare resultaten worden getest. Het antwoordbeleid staat vast vóór het openen.
Native bevestiging is geen paginamodal
Een JavaScript-confirm is browserinterface, niet een HTML-element dat getByRole kan bedienen. Een modal van de app is anders: die kan een dialoogrol en gewone knoppen hebben. Stel eerst het mechanisme vast.
Zonder listener sluit Playwright native dialogen automatisch. Zodra er een listener is, moet die accepteren of sluiten. Alleen het bericht loggen kan de actie blokkeren. Daarom kan extra debuguitvoer testgedrag veranderen.
Registreer het antwoord vóór de actie
Plaats de handler vóór de klik. Gebruik een eenmalige listener als precies één dialoog wordt verwacht, en maak het gekozen antwoord zichtbaar. Voor annuleren met behoud van het concept:
let observed;
page.once('dialog', async dialog => {
observed = { type: dialog.type(), message: dialog.message() };
await dialog.dismiss();
});
await page.getByRole('button', { name: 'Remove demo draft' }).click();
expect(observed).toEqual({ type: 'confirm', message: 'Remove demo draft?' });
await expect(page.getByRole('status')).toHaveText('Demo draft kept');Dit veronderstelt de gecontroleerde opstelling en geïmporteerde expect. De handler antwoordt eerst; na de klik controleert de test type en bericht. Een mislukte controle binnen de handler laat zo geen onbeantwoorde dialoog open.
Voor een toegestane acceptatie voeg je een nieuwe accept()-handler toe, herhaal je op een verse opstelling en controleer je de lokale toestand. Gebruik geen algemene alles-accepteren-listener voor andere trajecten. Een latere bevestiging kan een andere schadelijke actie vragen en stil een ja krijgen.
Annuleren heeft een productverwachting nodig
Sluiten bewijst het gegeven antwoord, niet dat de app het respecteert. Controleer dat het concept beschikbaar blijft en de volgende nuttige actie werkt. Voeg in een echt product ondersteund bewijs toe dat het serverrecord niet verdween.
Accepteren vraagt dezelfde zorg. Een verdwenen bevestiging bewijst geen verwijdering. Bepaal record, toegestane testomgeving en eindresultaat. De demo verandert alleen een status; haar schermafbeelding bewijst geen servereffect.
Onverwachte dialogen moeten duidelijk mislukken in plaats van verdwijnen door een brede handler. Bewaar voldoende context zonder privétekst te publiceren. Berichten kunnen recordnamen of accountgegevens bevatten.
Beperk de levensduur van de handler
Een on()-listener blijft actief tot verwijdering of het sluiten van de pagina. Dat kan passen bij een bewuste reeks, maar benoem dan typen, berichten en antwoorden. once() drukt één verwachte dialoog beter uit.
Prompt-dialogen voegen invoer toe aan accepteren. beforeunload heeft eigen gedocumenteerde afhandeling en sluitopties. Deze bevestigingsdemo dekt ze niet automatisch. Lees de passende API voordat je de suite uitbreidt.
De uitkomstnotitie kan kort zijn: verwacht bericht, annuleren bewaart, toegestane acceptatie verwijdert en serverbewijs staat apart. Dat helpt meer dan alleen loggen wanneer de dialoog verscheen.
AnyTest beschrijft beoordeelbare tests na appverkenning. Vraag of het traject de verwachte bevestiging beantwoordt of alles accepteert. Er wordt geen AnyTest-dialoogfunctie geclaimd. Bewuste antwoorden beschermen de betekenis, controles daarna de functie.
Veelgestelde vragen
Waarom kan een listener die alleen logt de klik blokkeren?
Native dialogen blokkeren de pagina. Een geregistreerde listener moet accepteren of sluiten.
Bewijst het sluiten van de bevestiging dat annuleren werkt?
Nee. Controleer de behouden toestand en zo nodig het serverbewijs.