Intelligente Geleide Tests
De analyze tool kan Deque's Geautomatiseerde Intelligente Geleide Tests (IGTs) uitvoeren tegen de pagina die het scant, in dezelfde oproep, direct na de Axe-scan. Geef de optionele igtTools array door waarin aangegeven wordt welke IGTs uitgevoerd moeten worden:
| Waarde | IGT | Wat het controleert |
|---|---|---|
"keyboard" |
Toetsenbord | Tab-volgorde, elementen die onbereikbaar zijn via het toetsenbord, focustrappen, ontbrekende of zwakke focusindicatoren, en elementen die formulieren indienen bij focus |
"interactive-elements" |
Interactieve Elementen | Of knoppen, links en aangepaste controles de juiste toegankelijke naam, rol en status hebben. Zie Interactieve Elementen IGT. |
"modal" |
Modaal Dialoogvenster | Of de focus binnen een modaal blijft, de semantiek van het modale dialoogvenster en (bij aanwezigheid van een trigger) of het kan worden gesloten en waar de focus daarna heen gaat. Zie Modaal Dialoogvenster IGT. |
{
"url": "http://localhost:3000",
"igtTools": ["keyboard"]
}Stuur uw AI-agent aan in natuurlijke taal — de agent vertaalt uw intentie naar de tool-oproep:
Scan http://localhost:3000 for accessibility issues and run the keyboard IGT on itElke aangevraagde IGT wordt in volgorde na de Axe-scan uitgevoerd, in de volgorde waarin u ze vermeldt, tegen dezelfde pagina, in dezelfde browser, bij dezelfde viewportbreedte. Alles wat de pagina voorbereidt wordt eenmaal uitgevoerd en geldt voor de scan en elke IGT: before acties, cookie-injectie, en de viewport parameters.
{
"url": "http://localhost:3000",
"igtTools": ["keyboard"],
"before": [
{
"action": "fill",
"selector": "#username",
"value": "<resolved-from-.env.local>"
},
{ "action": "click", "selector": "button[type=submit]" },
{ "action": "waitFor", "selector": "#main-content" }
]
}Reactievorm
Het instellen van igtTools verandert de vorm van data. Zonder het, is data de Axe-problemenreeks. Met het, heeft data twee sleutels op hetzelfde niveau, axe en igt, met één igt vermelding per aangevraagde IGT:
{
"pageUrl": "http://localhost:3000",
"data": {
"axe": [],
"igt": {
"keyboard": {
"status": "complete",
"issues": [],
"igtElements": [],
"terminatedReason": "keyboard-trap"
},
"modal": {
"status": "complete",
"issues": [],
"igtElements": []
}
}
}
}status—"complete"of"error". Controleer het voordat u iets anders leest:issuesenigtElementszijn alleen aanwezig op"complete", enerroralleen op"error". Gefaseerde selectie voegt drie extra statussen toe voor de Interactieve Elementen IGT.issues— de toegankelijkheidsproblemen die de IGT vond. Het aantal problemen is de lengte van deze reeks.igtElements— elke element dat de IGT heeft verwerkt, niet alleen die met problemen. Vermeldingen metanalysisFailed: truekonden niet door AI worden geanalyseerd en moeten handmatig worden beoordeeld. Elke vermelding is beperkt tot alleen de identificerende velden:vnodeId,selector,tagName,role,accessibleName,states, enanalysisFailed, elk alleen aanwezig wanneer het element deze heeft.terminatedReason— aanwezig alleen wanneer het uitvoeren eindigde voordat elke stap voltooid was, zodat de resultaten mogelijk gedeeltelijk zijn. Het is geen fout. Zie Beëindigingsredenen.
Een oproep zonder igtTools is ongewijzigd. data blijft de Axe-problemenreeks precies zoals voorheen, zodat bestaande prompts, agentinstructies en integraties zonder wijziging blijven werken.
Beëindigingsredenen
terminatedReason |
IGT | Betekenis |
|---|---|---|
insufficient-credits |
Elke | Het account had geen AI-credits meer tijdens het uitvoeren. |
subscription-missing |
Elke | Het account heeft niet het Axe DevTools voor Web-abonnement dat de IGT vereist. |
keyboard-trap |
Toetsenbord | De test liep tegen een focustrapping die het niet kon ontsnappen. |
dismissibility-unavailable |
Modaal | Er was geen trigger (een modalSelector-alleen of before-alleen uitvoering), dus de test kon niet controleren of het modaal kan worden gesloten. Verwacht wanneer die modi het modaal succesvol beoordelen, geen falen. |
focus-restoration-unavailable |
Modaal | Er was geen trigger voor de focus om naar terug te keren, dus de test kon niet controleren waar de focus naartoe gaat nadat het modaal sluit. Verwacht voor niet-trigger modi, geen falen. |
modal-not-detected |
Modaal | Er werd geen modaal gevonden om te beoordelen. |
modal-dismiss-failed |
Modaal | Het modaal kon niet worden gesloten tijdens de beoordeling. |
trigger-not-resolved |
Modaal | modalTriggerSelector kwam niet overeen met een element op de pagina, dus er werd geen modaal geopend. |
modal-selector-not-resolved |
Modaal | modalSelector kwam niet overeen met een element op de pagina. |
modal-selector-not-visible |
Modaal | modalSelector kwam overeen met een element dat niet zichtbaar is. Als het modaal opent via een interactie, open het dan met before. |
modal-fallback-not-resolved |
Modaal | De fallback modalSelector (meegegeven met een trigger) kwam niet overeen met een element op de pagina. |
modal-fallback-not-visible |
Modaal | De fallback modalSelector (meegegeven met een trigger) kwam overeen met een element dat niet zichtbaar is. |
De Interactieve Elementen IGT heeft geen eigen redenen voor beëindiging. Een pagina zonder interactieve elementen geeft een "complete" resultaat terug met lege arrays.
Storingen worden geïsoleerd
Een IGT die faalt, faalt niet de oproep niet en heeft nooit invloed op de Axe-resultaten of de andere IGT's. De storing wordt gemeld als de eigen status: "error" van die IGT met een bericht. De Axe-resultaten en elke andere IGT's resultaten komen normaal terug. Dit geldt ook wanneer de machine learning-instelling van uw organisatie is uitgeschakeld, in welk geval bij elke IGT wordt uitgelegd dat machine learning vereist is.
Kredietgebruik
IGT's worden aangedreven door AI en maken deel uit van de AI Kredietbeheersysteem. Elke uitvoering verbruikt AI-kredieten van de maandelijkse toewijzing van uw organisatie; de Axe-scan zelf niet. Vraag IGT's doelgericht aan in plaats van ze aan elke scan toe te voegen. Voor de Interactieve Elementen IGT afbakening of elementen kiezen vermindert het aantal geanalyseerde elementen, en daarmee de verbruikte kredieten.
Als uw aangepaste agentinstructies de agent opdrachten geven om de standalone igt tool aan te roepen, update ze dan om analyze met igtTools in plaats daarvan te gebruiken — één oproep dekt zowel de scan als de IGT, en de standalone tool is verouderd.
Interactieve Elementen IGT
De Interactieve Elementen IGT vindt de knoppen, links en aangepaste besturingselementen op de pagina en gebruikt AI om de toegankelijke naam, rol en status van elk te controleren. Standaard analyseert het elke interactief element dat het in één oproep vindt:
{
"url": "http://localhost:3000",
"igtTools": ["interactive-elements"]
}Analyze http://localhost:3000 and run the interactive elements guided testElk geanalyseerd element verbruikt AI-kredieten, dus op een grote pagina — een dataraster, een lang navigatiemenu, een productoverzicht — kan de standaarduitvoering veel gebruiken. Twee opties beperken wat er geanalyseerd wordt.
Afgebakend met includeSelectors
Geef includeSelectors, een reeks CSS-selectors, door om alleen de elementen te analyseren die ermee overeenkomen. Elementen buiten de selectors worden niet geanalyseerd:
{
"url": "http://localhost:3000",
"igtTools": ["interactive-elements"],
"includeSelectors": ["#main", "nav.primary"]
}Analyze http://localhost:3000 and run the interactive elements guided test,
but only on the elements inside #main and nav.primaryincludeSelectors is anders dan het selector van analyze. selector beperkt welk deel van de pagina de Axe-scan dekt, terwijl includeSelectors beperkt welke elementen de Interactieve Elementen IGT analyseert. U kunt een van beide gebruiken, of beide. includeSelectors vereist "interactive-elements" in igtTools.
Kiezen welke elementen te testen
Wanneer u van tevoren niet weet welke elementen van belang zijn, gebruik gefaseerde selectie. Het splitst de test op in twee oproepen van de tool, met een pauze ertussen zodat u kunt kiezen wat er geanalyseerd wordt:
- Eerste oproep — elementen vinden. De agent roept
analyzeaan metinteractive: true. De Axe-scan wordt zoals gebruikelijk uitgevoerd, en de IGT vindt de interactieve elementen van de pagina, maar voert geen AI-analyse op hen uit. De uitvoering pauzeert en retourneert de lijst met elementen die het heeft gevonden, plus eensessionID. - U kiest. De agent toont u de lijst — de rol, toegankelijke naam en status van elk element, gegroepeerd per component of rol waar mogelijk — en u geeft aan welke getest moeten worden.
- Tweede oproep — analyseren. De agent roept
analyzeopnieuw aan met desessionIDen de door u gekozenselectedIDs. De gepauzeerde uitvoering gaat verder in dezelfde browsersessie, zonder de pagina opnieuw te laden of elementen opnieuw te vinden, en retourneert een normaal"complete"-resultaat alleen voor de geselecteerde elementen.
Een prompt die erom vraagt:
Analyze http://localhost:3000 and run the interactive elements guided test.
Show me the interactive elements it finds first and let me choose which
ones to test.De eerste oproep:
{
"url": "http://localhost:3000",
"igtTools": ["interactive-elements"],
"interactive": true
}retourneert de Axe-resultaten en de kandidaten:
{
"pageUrl": "http://localhost:3000",
"data": {
"axe": [],
"igt": {
"interactive-elements": {
"status": "needs_selection",
"sessionID": "3f9c…",
"candidates": [
{ "vnodeId": 12, "role": "button", "name": "Add to cart" },
{ "vnodeId": 31, "role": "link", "name": "Checkout" }
],
"componentGroups": { "intelligent": [], "role": [] }
}
}
}
}De tweede oproep noemt de gekozen kandidaten bij vnodeId:
{
"url": "http://localhost:3000",
"igtTools": ["interactive-elements"],
"sessionID": "3f9c…",
"selectedIDs": [12]
}Houd rekening met het volgende bij het gebruik van gefaseerde selectie:
- Het voert alleen de Interactieve Elementen IGT uit.
igtToolsmoeten precies["interactive-elements"]zijn bij beide oproepen. Om de Keyboard of Modal IGT's ook uit te voeren, voert u ze in een aparte oproep uit. - De tweede oproep laat
data.axeweg. De Axe-resultaten kwamen terug bij de eerste oproep. Bij de tweede oproep worden alle opzetparameters (viewportWidth,viewportHeight,cookies,before,selector,advancedRules,screenshot,chromePath) genegeerd, omdat de gepauzeerde browsersessie ongewijzigd wordt hergebruikt.urlis nog steeds vereist. includeSelectorsis nog steeds van toepassing. Geef het door bij de eerste oproep om te beperken welke elementen in de lijst verschijnen.selectedIDsmoet van de lijst komen. Als een ID niet in de kandidaten stond, retourneert de oproepstatus: "invalid_selection"met de onbekende IDs inunknownIDs. De uitvoering blijft gepauzeerd, zodat de agent het kan opnieuw proberen met geldige IDs.- Gepauzeerde uitvoeringen verlopen. Een uitvoering die niet binnen 3 minuten wordt voortgezet, wordt afgesloten en retourneert
status: "session_expired". Er kunnen maximaal 3 gepauzeerde uitvoeringen tegelijk open zijn. Beide limieten zijn configureerbaar metSELECTION_SESSION_TTL_MSenMAX_SELECTION_SESSIONS. Na een verloopdatum begint u opnieuw met een nieuweinteractive: true-oproep.
Gefaseerde selectie is de meest krediet-efficiënte manier om een grote pagina te testen. De eerste oproep voert geen AI-analyse uit op interactieve elementen, en de tweede oproep analyseert alleen de door u gekozen elementen.
Modaal Dialoogvenster IGT
De Modalvenster IGT controleert een enkel modaal venster op de pagina. Het controleert of de toetsenbordfocus binnen het modaalvenster blijft terwijl het geopend is en of het modaal de juiste dialoogsemantiek heeft (aria-modal en de rol van de modaalcontainer). Wanneer de test het element heeft dat het modaalvenster opent, controleert het ook of het modaal kan worden afgesloten en of de focus keert terug naar een redelijke plaats daarna.
De test moet weten welk modaalvenster gecontroleerd moet worden. Er zijn drie manieren om dit aan te geven:
| Targetmodus | Hoe | Wat wordt beoordeeld |
|---|---|---|
| Trigger (aanbevolen) | modalTriggerSelector — het element dat het modaal opent |
Focusbehoud, dialoogsemantiek, sluiten en focus terugkeer |
| Modaal element | modalSelector — het modale element zelf |
Alleen focusbehoud en dialoogsemantiek |
before stappen alleen |
Geen selector — uw before acties openen het modaalvenster |
Alleen focusbehoud en dialoogsemantiek |
Gebruik modalTriggerSelector wanneer het modaal een trigger heeft — het is de enige modus die alles controleert. De test klikt zelf op de trigger:
{
"url": "http://localhost:3000",
"igtTools": ["modal"],
"modalTriggerSelector": "#open-dialog"
}Analyze http://localhost:3000 and run the modal guided test on the dialog
opened by #open-dialogGebruik modalSelector wanneer er geen trigger is om op te klikken, zoals bij een modaalvenster dat wordt geopend wanneer de pagina laadt. Als het modaal alleen verschijnt na enige interactie, gebruik dan before om het eerst te openen:
{
"url": "http://localhost:3000",
"igtTools": ["modal"],
"modalSelector": "#newsletter-dialog"
}Zonder selector controleert de test welk modaal geopend is zodra de before stappen voltooid zijn. Gebruik dit voor modalen die niet door een enkel element worden geopend, zoals een die verschijnt na een reeks toetsaanslagen of een sessie-time-out:
{
"url": "http://localhost:3000",
"igtTools": ["modal"],
"before": [
{ "action": "click", "selector": "#settings" },
{ "action": "click", "selector": "#delete-account" }
]
}Beide selectors accepteren een CSS-string voor een element in het bovenste kader, of een array van selectors om een element binnen een iframe te bereiken (bijvoorbeeld, ["iframe#app", "#open-dialog"]), hetzelfde formaat als selector.
Zonder een trigger betekent een lege issues lijst niet dat het modaal gesloten kan worden. Wanneer een modalSelector-alleen of before-alleen run het modaal vindt en beoordeelt, eindigt het met terminatedReason: "dismissibility-unavailable". Dit is zoals verwacht en betekent dat sluiten en focusterugkeer niet beoordeeld waren — niet dat ze geslaagd zijn. Als het modaal niet gevonden kan worden, eindigt de run met een andere reden, zoals modal-not-detected of modal-selector-not-resolved; zie Beëindigingsredenen.
Een reserve modaalselector bieden
Als je zowel de trigger als het modale element kent, geef dan beide door. De test begint nog steeds vanaf de trigger en controleert nog steeds alles. De modalSelector wordt alleen gebruikt als de test het modaal niet kan identificeren na op de trigger te klikken — meestal omdat het modaal niet-standaard markup gebruikt:
{
"url": "http://localhost:3000",
"igtTools": ["modal"],
"modalTriggerSelector": "#open-dialog",
"modalSelector": "#custom-dialog"
}Het resultaat zegt niet of de reserve gebruikt is. Een run die het nodig had, controleerde een element dat de test niet kon herkennen als een modaal, dus beschouw een lege issues lijst van een run met beide selectors als zwakker bewijs dan een van een trigger-alleen run.
Open het modaal niet zelf
Wanneer je modalTriggerSelector doorgeeft, klikt de test op de trigger om het modaal te openen. Als het modaal al open is, sluit die klik het meestal weer. Dus:
- Klik niet op de trigger in
before. Eenbeforeklik op dezelfde selector alsmodalTriggerSelectorwordt met een fout afgewezen. Gebruikbeforeom de paginastatus te bereiken waar de trigger zich in bevindt, zoals inloggen of naar een specifieke weergave gaan. - Geef geen trigger door voor een modaal dat al open is, hetzij bij het laden van de pagina of vanuit een
beforestap. GebruikmodalSelectorop zichzelf in plaats daarvan.
modalTriggerSelector en modalSelector hebben allebei "modal" nodig in igtTools.
Alles in één keer uitvoeren
Elke IGT heeft zijn eigen opties, zodat één analyze oproep de Axe-scan, Geavanceerde regels, en elke IGT op dezelfde pagina kan uitvoeren. De pagina wordt één keer geladen en voorbereid, en elk resultaat komt terug onder zijn eigen sleutel.
Analyze http://localhost:3000 for accessibility issues with thorough
advanced rules. Also run the keyboard, interactive elements, and modal
guided tests (test the modal triggered by button#open-dialog).De agent lost de prompt op en roept het analyze gereedschap aan met een laadmiddel gelijkend op:
{
"url": "http://localhost:3000",
"advancedRules": "thorough",
"igtTools": ["keyboard", "interactive-elements", "modal"],
"modalTriggerSelector": "button#open-dialog"
}en ontvangt de Axe-resultaten (inclusief bevindingen van Geavanceerde Regels) onder data.axe en één invoer per IGT onder data.igt:
{
"pageUrl": "http://localhost:3000",
"advancedRules": { "value": "thorough", "source": "tool_arg" },
"data": {
"axe": [],
"igt": {
"keyboard": { "status": "complete", "issues": [], "igtElements": [] },
"interactive-elements": {
"status": "complete",
"issues": [],
"igtElements": []
},
"modal": { "status": "complete", "issues": [], "igtElements": [] }
}
}
}De IGT's worden na elkaar uitgevoerd, in de volgorde vermeld in igtTools, en elk rapporteert afzonderlijk — een toetsenbordval of een modaal dat niet gevonden kan worden stopt de anderen niet. Dit werkt ook met elke andere analyze optie: before stappen en cookies voor een pagina achter een login, viewportWidth voor een mobiele breekpunt, selector om de Axe-scan te reiken, en screenshot.
Gefaseerde selectie kan niet gecombineerd worden met andere IGT's. Om de interactieve elementen IGT te beperken in een multi-IGT-oproep, gebruik includeSelectors.
Het igtgereedschap
Het igt gereedschap is verouderd. Gebruik in plaats daarvan de analyze parameter van het igtTools gereedschap — deze voert dezelfde Intelligente Geleide Tests uit tegen dezelfde pagina in een enkele oproep, naast de Axe-scan.
igt blijft volledig functioneel en levert dezelfde resultaten als voorheen, dus niets breekt vandaag. Het zal worden verwijderd in een toekomstige release. Als je aangepaste agentinstructies de naam van het igt gereedschap, werk deze dan bij om analyze met igtTools op te roepen.
Het igt gereedschap voert Deque's Geautomatiseerde Intelligente Geleide Tests uit tegen een webpagina als een op zichzelf staande oproep. Alles wat het doet, doet analyze nu in dezelfde oproep als de toegankelijkheidsscan — zie de rest van deze pagina voor gebruik en kredietverbruik, die hetzelfde zijn voor beide.
Het resultaatobject per test is ook hetzelfde voor beide — status, issues, igtElements, en een optionele terminatedReason, zoals beschreven in Reactievorm. Alleen de envelop verschilt: igt retourneert de resultaten direct onder data, gesorteerd op testnaam (data.keyboard), terwijl analyze deze nestelt onder data.igt naast data.axe.
