Intelligent geführte Tests
Der analyze-Tool kann Deques Automatisierte Intelligent geführte Tests (IGTs) auf der Seite, die er scannt, im selben Aufruf direkt nach dem Axe-Scan ausführen. Übergeben Sie das optionale igtTools-Array, in dem festgelegt wird, welche IGTs ausgeführt werden sollen:
| Wert | IGT | Was es überprüft |
|---|---|---|
"keyboard" |
Tastatur | Tabreihenfolge, Elemente, die mit der Tastatur nicht erreichbar sind, Fokusfallen, fehlende oder schwache Fokusindikatoren und Elemente, die beim Fokussieren Formulare absenden |
"interactive-elements" |
Interaktive Elemente | Ob Schaltflächen, Links und benutzerdefinierte Steuerungen den richtigen zugänglichen Namen, die richtige Rolle und den richtigen Status haben. Siehe Interaktive Elemente IGT. |
"modal" |
Modales Dialogfeld | Ob der Fokus innerhalb eines modalen Dialogs bleibt, die Semantik des modalen Dialogs und (bei Vorhandensein eines Triggers) ob es geschlossen werden kann und wohin der Fokus danach geht. Siehe Modales Dialogfeld IGT. |
{
"url": "http://localhost:3000",
"igtTools": ["keyboard"]
}Geben Sie Ihrem KI-Agenten Eingaben in natürlicher Sprache — der Agent übersetzt Ihre Absicht in den Toolaufruf:
Scan http://localhost:3000 for accessibility issues and run the keyboard IGT on itJedes angeforderte IGT läuft in Folge nach dem Axe-Scan, in der Reihenfolge, in der Sie sie auflisten, gegen dieselbe Seite, im selben Browser, bei derselben Viewport-Breite. Alles, was die Seite vorbereitet, wird einmal ausgeführt und gilt für den Scan und jedes IGT: before-Aktionen, Cookie-Injektion und die Viewport-Parameter.
{
"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" }
]
}Antwortstruktur
Das Setzen von igtTools ändert die Struktur von data. Ohne sie ist data das Axe-Issue-Array. Mit ihr hat data zwei Schlüssel auf derselben Ebene, axe und igt, mit einem igt-Eintrag pro angefordertes IGT:
{
"pageUrl": "http://localhost:3000",
"data": {
"axe": [],
"igt": {
"keyboard": {
"status": "complete",
"issues": [],
"igtElements": [],
"terminatedReason": "keyboard-trap"
},
"modal": {
"status": "complete",
"issues": [],
"igtElements": []
}
}
}
}status—"complete"oder"error". Prüfen Sie dies, bevor Sie etwas anderes lesen:issuesundigtElementssind nur bei"complete"vorhanden, underrornur bei"error". Phasenweise Auswahl fügt drei weitere Status für das Interaktive Elemente IGT hinzu.issues— die Barrierefreiheitsprobleme, die das IGT gefunden hat. Die Anzahl der Probleme entspricht der Länge dieses Arrays.igtElements— jedes-Element, das das IGT verarbeitet hat, nicht nur die mit Problemen. Einträge mitanalysisFailed: truekonnten von der KI nicht analysiert werden und sollten manuell überprüft werden. Jeder Eintrag ist nur auf identifizierende Felder gekürzt:vnodeId,selector,tagName,role,accessibleName,statesundanalysisFailed, von denen jeder nur dann vorhanden ist, wenn das Element ihn besitzt.terminatedReason— vorhanden nur, wenn der Lauf endete, bevor jeder Schritt abgeschlossen war, sodass die Ergebnisse möglicherweise unvollständig sind. Es ist kein Fehler. Siehe Abbruchgründe.
Ein Aufruf ohne igtTools bleibt unverändert. data bleibt das Axe-Issue-Array genau wie vorher, sodass vorhandene Eingabeaufforderungen, Agenten-Anweisungen und Integrationen ohne Änderungen weiterhin funktionieren.
Abbruchgründe
terminatedReason |
IGT | Bedeutung |
|---|---|---|
insufficient-credits |
Jeder | Das Konto hat während des Laufs keine KI-Guthaben mehr. |
subscription-missing |
Jeder | Das Konto hat nicht das Axe DevTools für Web-Abonnement, das das IGT erfordert. |
keyboard-trap |
Tastatur | Der Test stieß auf eine Fokusfalle, aus der er nicht entkommen konnte. |
dismissibility-unavailable |
Modal | Es gab keinen Auslöser (ein modalSelector-nur- oder before-nur-Lauf), daher konnte der Test nicht überprüfen, ob das Modal geschlossen werden kann. Erwartet wenn diese Modi den Modaldialog erfolgreich beurteilen, kein Fehler. |
focus-restoration-unavailable |
Modal | Es gab keinen Auslöser, zu dem der Fokus zurückkehren konnte, daher konnte der Test nicht überprüfen, wohin der Fokus geht, nachdem das Modal geschlossen wurde. Erwartet für Keine-Auslöser-Modi, kein Fehler. |
modal-not-detected |
Modal | Es wurde kein Modal gefunden, das bewertet werden kann. |
modal-dismiss-failed |
Modal | Das Modal konnte während der Bewertung nicht geschlossen werden. |
trigger-not-resolved |
Modal | modalTriggerSelector stimmte mit keinem Element auf der Seite überein, sodass kein Modal geöffnet wurde. |
modal-selector-not-resolved |
Modal | modalSelector stimmte mit keinem Element auf der Seite überein. |
modal-selector-not-visible |
Modal | modalSelector entsprach einem Element, das nicht sichtbar ist. Wenn das Modal aus einer Interaktion geöffnet wird, öffnen Sie es mit before. |
modal-fallback-not-resolved |
Modal | Der Fallback modalSelector (mit einem Auslöser übergeben) entsprach keinem Element auf der Seite. |
modal-fallback-not-visible |
Modal | Der Fallback modalSelector (mit einem Auslöser übergeben) entsprach einem Element, das nicht sichtbar ist. |
Das Interaktive Elemente IGT hat keine eigenen Abbruchgründe. Eine Seite ohne interaktive Elemente gibt ein "complete" Ergebnis mit leeren Arrays zurück.
Fehler sind isoliert
An IGT that fails does nicht fail the call and never affects the Axe results or the other IGTs. The failure is reported as that IGT's own status: "error" with a message. The Axe results and every other IGT's results come back normally. This includes when your organization's machine learning setting is disabled, in which case each IGT's entry explains that machine learning is required.
Kreditauslastung
IGTs sind KI-gestützt und Teil des AI-Kreditmanagementsystem. Jeder Durchlauf verbraucht KI-Kredite aus dem monatlichen Kontingent Ihrer Organisation; der Axe-Scan selbst tut dies nicht. Fordern Sie IGTs bewusst an, anstatt sie zu jedem Scan hinzuzufügen. Für das Interactive Elements IGT, Abgrenzung oder Elemente auswählen reduziert die Anzahl der analysierten Elemente und somit die verbrauchten Kredite.
Wenn Ihre kundenspezifische Agentenanweisungen dem Agenten mitteilen, das eigenständige igt-Tool aufzurufen, aktualisieren Sie sie, um stattdessen analyze mit igtTools zu verwenden – ein Aufruf deckt sowohl den Scan als auch das IGT ab, und das eigenständige Tool ist veraltet.
Interaktive Elemente IGT
Das Interactive Elements IGT findet die Schaltflächen, Links und benutzerdefinierten Steuerelemente auf der Seite und nutzt KI, um den zugänglichen Namen, die Rolle und den Zustand jedes einzelnen zu überprüfen. Standardmäßig analysiert es jedes interaktives Element, das es in einem einzigen Aufruf findet:
{
"url": "http://localhost:3000",
"igtTools": ["interactive-elements"]
}Analyze http://localhost:3000 and run the interactive elements guided testJedes analysierte Element verbraucht KI-Kredite, sodass auf einer großen Seite – einem Datenraster, einem langen Navigationsmenü, einer Produktliste – der Standarddurchlauf viel verbrauchen kann. Zwei Optionen begrenzen, was analysiert wird.
Abgrenzung mit includeSelectors
Übergeben Sie includeSelectors, ein Array von CSS-Selektoren, um nur die Elemente zu analysieren, die übereinstimmen. Elemente außerhalb der Selektoren werden nicht analysiert:
{
"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 unterscheidet sich von analyze's selector. selector begrenzt, welchen Teil der Seite der Axe-Scan abdeckt, während includeSelectors begrenzt, welche Elemente der Interaktive Elemente IGT analysiert. Sie können entweder einen oder beide verwenden. includeSelectors erfordert "interactive-elements" in igtTools.
Auswahl der zu testenden Elemente
Wenn Sie im Voraus nicht wissen, welche Elemente wichtig sind, verwenden Sie Phasenweise Auswahl. Es teilt den Test in zwei Tool-Aufrufe auf, mit einer Pause dazwischen, damit Sie auswählen können, was analysiert wird:
- Erster Aufruf – Elemente finden. Der Agent ruft
analyzemitinteractive: trueauf. Der Axe-Scan läuft wie gewohnt, und das IGT findet die interaktiven Elemente der Seite, führt jedoch keine KI-Analyse nicht darauf aus. Der Lauf pausiert und gibt die Liste der gefundenen Elemente sowie einsessionIDzurück. - Sie wählen aus. Der Agent zeigt Ihnen die Liste – die Rolle, den zugänglichen Namen und den Zustand jedes Elements, wo möglich nach Komponente oder Rolle gruppiert – und Sie sagen ihm, welche getestet werden sollen.
- Zweiter Aufruf – analysieren. Der Agent ruft
analyzeerneut mit demsessionIDund den von Ihnen gewähltenselectedIDsauf. Der pausierte Lauf wird in derselben Browsersitzung fortgesetzt, ohne die Seite erneut zu laden oder Elemente erneut zu finden, und gibt ein normales"complete"-Ergebnis nur für die ausgewählten Elemente zurück.
Eine Eingabeaufforderung, die danach fragt:
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.Der erste Aufruf:
{
"url": "http://localhost:3000",
"igtTools": ["interactive-elements"],
"interactive": true
}gibt die Axe-Ergebnisse und die Kandidaten zurück:
{
"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": [] }
}
}
}
}Der zweite Aufruf benennt die gewählten Kandidaten nach vnodeId:
{
"url": "http://localhost:3000",
"igtTools": ["interactive-elements"],
"sessionID": "3f9c…",
"selectedIDs": [12]
}Beachten Sie Folgendes bei der phased selection:
- Es führt nur das Interactive Elements IGT aus.
igtToolsmuss bei beiden Aufrufen genau["interactive-elements"]sein. Um auch die Keyboard- oder Modal-IGTs auszuführen, führen Sie diese in einem separaten Aufruf durch. - Der zweite Aufruf lässt
data.axeaus. Die Axe-Ergebnisse kamen beim ersten Aufruf zurück. Beim zweiten Aufruf werden alle Setup-Parameter (viewportWidth,viewportHeight,cookies,before,selector,advancedRules,screenshot,chromePath) ignoriert, da die pausierte Browsersitzung unverändert wiederverwendet wird.urlist weiterhin erforderlich. includeSelectorsgilt weiterhin. Übergeben Sie es beim ersten Aufruf, um zu begrenzen, welche Elemente in der Liste erscheinen.selectedIDsmuss aus der Liste stammen. Wenn eine ID nicht bei den Kandidaten war, gibt der Aufrufstatus: "invalid_selection"mit den unbekannten IDs inunknownIDszurück. Der Lauf bleibt pausiert, sodass der Agent es mit gültigen IDs erneut versuchen kann.- Pausierte Läufe verfallen. Ein Lauf, der nicht innerhalb von 3 Minuten fortgesetzt wird, wird geschlossen und gibt
status: "session_expired"zurück. Maximal 3 pausierte Läufe können gleichzeitig offen sein. Beide Limits sind mitSELECTION_SESSION_TTL_MSundMAX_SELECTION_SESSIONSkonfigurierbar. Nach einem Ablauf beginnen Sie mit einem neueninteractive: true-Aufruf von vorne.
Phased Selection ist die krediteffizienteste Methode, um eine große Seite zu testen. Der erste Aufruf führt keine KI-Analyse an interaktiven Elementen durch, und der zweite Aufruf analysiert nur die von Ihnen ausgewählten Elemente.
Modales Dialogfeld IGT
Der Modal Dialog IGT überprüft einen einzelnen modalen Dialog auf der Seite. Es wird überprüft, dass der Tastaturfokus im modalen Dialog bleibt, solange er geöffnet ist, und dass der Dialog über die korrekten Semantiken verfügt (aria-modal und die Rolle des modal-Containers). Wenn der Test das Element hat, das den modalen Dialog öffnet, wird auch überprüft, dass der modale Dialog kann geschlossen werden und dass der Fokus kehrt an einen sinnvollen Ort zurück danach.
Der Test muss wissen, welcher modale Dialog geprüft werden soll. Es gibt drei Möglichkeiten, dies anzugeben:
| Zielmodus | Wie | Was wird geprüft |
|---|---|---|
| Auslöser (empfohlen) | modalTriggerSelector — das Element, das den modalen Dialog öffnet |
Fokus-Einschluss, Dialogsemantiken, Schließen und Fokus-Rückkehr |
| Modales Element | modalSelector — das modale Element selbst |
Nur Fokus-Einschluss und Dialogsemantiken |
Nur before-Schritte |
Kein Selektor — Ihre before-Aktionen öffnen den modalen Dialog |
Nur Fokus-Einschluss und Dialogsemantiken |
Verwenden Sie modalTriggerSelector, wann immer der modale Dialog einen Auslöser hat — es ist der einzige Modus, der alles prüft. Der Test klickt selbst auf den Auslöser:
{
"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-dialogVerwenden Sie modalSelector, wenn es keinen Auslöser zum Klicken gibt, wie z. B. einen modalen Dialog, der beim Laden der Seite geöffnet wird. Wenn der modale Dialog nur nach einer Interaktion erscheint, verwenden Sie before, um ihn zuerst zu öffnen:
{
"url": "http://localhost:3000",
"igtTools": ["modal"],
"modalSelector": "#newsletter-dialog"
}Ohne Selektor überprüft der Test jeden offenen modalen Dialog, sobald die before-Schritte abgeschlossen sind. Verwenden Sie dies für modale Dialoge, die kein einzelnes Element öffnet, wie solche, die nach einer Tastensequenz oder einem Sitzungstimeout erscheinen:
{
"url": "http://localhost:3000",
"igtTools": ["modal"],
"before": [
{ "action": "click", "selector": "#settings" },
{ "action": "click", "selector": "#delete-account" }
]
}Beide Selektoren akzeptieren einen CSS-String für ein Element im oberen Frame oder ein Array von Selektoren, um ein Element in einem iframe zu erreichen (zum Beispiel ["iframe#app", "#open-dialog"]), im selben Format wie selector.
Ohne einen Auslöser bedeutet eine leere issues-Liste nicht, dass der modale Dialog geschlossen werden kann. Wenn ein modalSelector-nur- oder before-nur-Durchlauf den modalen Dialog findet und bewertet, endet er mit terminatedReason: "dismissibility-unavailable". Dies wird erwartet und bedeutet, dass Schließen und Fokus-Rückkehr nicht bewertet waren — nicht, dass sie bestanden haben. Wenn der modale Dialog nicht gefunden werden kann, endet der Durchlauf stattdessen mit einem anderen Grund, wie modal-not-detected oder modal-selector-not-resolved; siehe Abbruchgründe.
Bereitstellung eines Ersatz-Selektors für modalen Dialog
Wenn Sie sowohl den Auslöser als auch das modale Element kennen, übergeben Sie beide. Der Test beginnt trotzdem mit dem Auslöser und überprüft dennoch alles. Der modalSelector wird nur verwendet, wenn der Test den modalen Dialog nach Klicken auf den Auslöser nicht identifizieren kann — normalerweise, weil der modale Dialog nicht standardmäßiges Markup verwendet:
{
"url": "http://localhost:3000",
"igtTools": ["modal"],
"modalTriggerSelector": "#open-dialog",
"modalSelector": "#custom-dialog"
}Das Ergebnis sagt nicht aus, ob der Ersatz verwendet wurde. Ein Durchlauf, der ihn benötigte, hat ein Element geprüft, das der Test nicht als modalen Dialog erkennen konnte, deshalb betrachten Sie eine leere issues-Liste aus einem Durchlauf mit beiden Selektoren als schwächere Evidenz als eine aus einem Durchlauf mit nur einem Auslöser.
Öffnen Sie den modalen Dialog nicht selbst
Wenn Sie modalTriggerSelector übergeben, klickt der Test auf den Auslöser, um den modalen Dialog zu öffnen. Wenn der modale Dialog bereits geöffnet ist, schließt dieser Klick ihn normalerweise wieder. Also:
- Klicken Sie nicht auf den Auslöser in
before. Einbefore-Klick auf denselben Selektor wiemodalTriggerSelectorwird mit einem Fehler abgelehnt. Verwenden Siebefore, um den Seitenzustand zu erreichen, in dem der Auslöser sich befindet, wie z. B. eine Anmeldung oder das Aufrufen einer bestimmten Ansicht. - Übergeben Sie keinen Auslöser für einen bereits geöffneten modalen Dialog, entweder beim Laden der Seite oder von einem
before-Schritt. Verwenden Sie stattdessen ausschließlichmodalSelector.
modalTriggerSelector und modalSelector erfordern jeweils "modal" in igtTools.
Alles in einem Aufruf ausführen
Jeder IGT hat seine eigenen Optionen, sodass ein analyze-Aufruf den Axe-Scan, Erweiterte Regeln und jeden IGT auf derselben Seite ausführen kann. Die Seite wird einmal geladen und vorbereitet, und jedes Ergebnis wird unter seinem eigenen Schlüssel zurückgegeben.
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).Der Agent löst die Eingabeaufforderung auf und ruft das analyze-Werkzeug mit einem ähnlichen Payload auf:
{
"url": "http://localhost:3000",
"advancedRules": "thorough",
"igtTools": ["keyboard", "interactive-elements", "modal"],
"modalTriggerSelector": "button#open-dialog"
}und erhält die Axe-Ergebnisse (einschließlich der Ergebnisse der Erweiterten Regeln) unter data.axe und einen Eintrag pro IGT unter 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": [] }
}
}
}Die IGTs laufen nacheinander, in der Reihenfolge, die in igtTools aufgeführt ist, und jedes berichtet separat — eine Tastaturfalle oder ein nicht auffindbarer modaler Dialog stoppt die anderen nicht. Dies funktioniert auch mit jeder anderen analyze-Option: before-Schritte und cookies für eine Seite hinter einem Login, viewportWidth für einen mobilen Breakpoint, selector um den Axe-Scan einzuschränken, und screenshot.
Phasenweise Auswahl kann nicht mit anderen IGTs kombiniert werden. Um das interaktive Elemente-IGT in einem Multi-IGT-Aufruf zu begrenzen, verwenden Sie includeSelectors.
Das igt-Werkzeug
Das igt-Werkzeug ist veraltet. Verwenden Sie stattdessen das Parameter des analyze-Werkzeugs' igtTools — es führt dieselben Intelligent Guided Tests gegen dieselbe Seite in einem einzigen Aufruf aus, zusammen mit dem Axe-Scan.
igt bleibt vollständig funktionsfähig und liefert dieselben Ergebnisse wie zuvor, sodass heute nichts bricht. Es wird in einer zukünftigen Version entfernt. Wenn Ihre kundenspezifische Agentenanweisungen den Namen des igt-Werkzeugs nennen, aktualisieren Sie sie, um analyze mit igtTools aufzurufen.
Das igt-Werkzeug führt Deques Automatisierte Intelligent Guided Tests gegen eine Webseite als eigenständigen Aufruf aus. Alles, was es tut, macht analyze jetzt im selben Aufruf wie der Barrierefreiheits-Scan — siehe den Rest dieser Seite für Nutzung und Kreditverbrauch, die für beide gleich sind.
Das Ergebnisobjekt pro Test ist auch für beide gleich — status, issues, igtElements und ein optionales terminatedReason, wie in Antwortstruktur beschrieben. Nur der Umschlag unterscheidet sich: igt gibt seine Ergebnisse direkt unter data zurück, nach Testnamen geordnet (data.keyboard), während analyze sie unter data.igt neben data.axe verschachtelt.
