QA The Other WayKwaliteitsborging in het tijdperk van AI-automatisering. QA The Other Way.
Praktische QA

Twee overeenkomsten vragen een productkeuze.

Beperk de herhaalde knop tot het bedoelde record voordat de klik slaagt.

5 minuten leestijdQA The Other Way
Twee Apply-knoppen, één binnen het gebied voor wekelijkse updates.
Eigen 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.

Beperk de herhaalde knop tot het bedoelde record voordat de klik slaagt.
Lokaal voorbeeld met verzonnen data, geen klant- of leveranciersinterface.

Een instellingenpagina heeft twee Apply-knoppen: wekelijkse updates en beveiligingsmeldingen. Een gegenereerde test krijgt een strictness-fout. first() laat de klik werken, maar de documentvolgorde kiest nu de gewijzigde instelling. De test heeft het bedoelde record nodig.

De locatorhandleiding vereist één doel voor bewerkingen op een element. Meerdere overeenkomsten maken klikken dubbelzinnig. count() mag meerdere elementen tellen. Twee tellen en niet kunnen klikken zijn dus verenigbaar.

Bekijk beide overeenkomsten

Lees knoppen met hun koppen, labels en records. Herhaling in verschillende kaarten kan juist zijn; een toevallig duplicaat binnen één kaart kan een fout zijn. Controleer de producteis voordat u de selector wijzigt.

Ons verzonnen voorbeeld heeft twee benoemde gebieden met Apply en een lokale status. Geen server, echt account of opgeslagen instelling. We controleren het gewijzigde gebied en de ongewijzigde buur.

const weekly = page.getByRole('region', { name: 'Weekly updates' });
const apply = weekly.getByRole('button', { name: 'Apply', exact: true });
await expect(apply).toHaveCount(1);
await apply.click();
await expect(weekly.getByRole('status')).toHaveText('Applied');

De code vereist de Playwright-testrunner en geïmporteerde expect. De fixture levert gebiedsnaam en klikhandler. De status bewijst een lokaal interface-effect, geen opslag of bezorging.

Geef de afbakening een reden

Kies de ouder vanuit het bedoelde record. Hier werkt de toegankelijke gebiedsnaam. Een andere interface kan een gefilterde rij of afgesproken test-ID nodig hebben. Controleer de identiteit na sorteren of invoegen.

Exacte tekst onderscheidt geen identieke knoppen binnen hetzelfde gebied. De aantalscontrole toont een onjuiste aanname van uniciteit vóór de actie. Controleer ook het globale aantal als de herhaalde structuur bij de eis hoort.

Een locator wordt bij gebruik opgelost. De pagina kan tussen waarnemingen veranderen; tellen vergrendelt geen DOM-knoop. Playwright past nog steeds zijn eigen klikcontroles toe. Een voorafgaand aantal garandeert geen onveranderde pagina.

Positie vereist een volgordecontract

first(), last() en nth() kunnen na veranderingen een ander element kiezen. Een positie is passend bij een expliciete volgorde-eis, zoals het eerste gerangschikte resultaat. Controleer volgorde en identiteit. Een verdwenen fout is onvoldoende reden.

De lokale test bevestigt twee overeenkomsten, vangt de strikte klikfout op en controleert ongewijzigde statussen. Daarna klikt hij binnen Weekly updates en controleert beveiliging ongewijzigd. Dit test die grens, niet elke strictness-oorzaak.

Noteer component, stabiele identiteit en verwachte wijziging. AnyTest beschrijft appverkenning en tests voor menselijke review. Beoordeel herhaalde controls tegen het bedoelde record. Geen specifiek AnyTest-selectiealgoritme wordt beweerd.

Veelgestelde vragen

Onderscheidt exacte tekst identieke labels?

Nee. Beperk ook het gebied of record.

Is first() altijd fout?

Nee. Het vereist een expliciete volgorde en gecontroleerde identiteit.

Bronnen