Strumento di Analisi

This page is not available in the language you requested. You have been redirected to the English version of the page.
Link to this page copied to clipboard
Not for use with personal data

Lo strumento analyze esegue un'analisi completa dell'accessibilità delle pagine web effettuando una scansione tramite l'Axe DevTools Browser Extension in un ambiente browser reale. Funziona perfettamente con URL di sviluppo locali (ad es., localhost:3000) e URL di produzione remoti.

Cosa fa

  1. Autenticazione - Convalida le credenziali dell'utente (sia una chiave API che un token di accesso OAuth 2.0) per garantire l'accesso autorizzato
  2. Recupero Configurazione - Recupera le impostazioni specifiche dell'organizzazione dell'utente Configurazione Axe, inclusi:
    • Standard di Test di Accessibilità (ad es., WCAG 2.2 AA)
    • versione di axe-core
    • Bisogna rivedere / migliori pratiche
    • preset Regole Avanzate
  3. Analisi Basata su Browser - Avvia un'istanza del browser in background con l'estensione Axe DevTools montata
  4. Navigazione tra le Pagine - Naviga all'URL fornito dall'utente nel loro prompt all'agente AI
  5. Scansione di Accessibilità - Esegue un'analisi completa dell'accessibilità sulla pagina renderizzato utilizzando l'Axe DevTools Browser Extension, garantendo che venga testata la vera esperienza utente (non semplicemente l'HTML statico)
  6. Consegna dei Risultati - Restituisce i risultati dell'analisi completa all'agente in un formato strutturato

Test di Responsività

Lo strumento analyze supporta parametri opzionali viewportWidth e viewportHeight, consentendo di testare le pagine a specifiche dimensioni del viewport. Questo è utile per individuare problemi di accessibilità che si manifestano solo a determinate dimensioni dello schermo, come punti di interruzione per dispositivi mobili o tablet.

Analyze http://localhost:3000 for accessibility issues at a mobile viewport of 375x812

Quando entrambi i parametri sono omessi, la scansione viene eseguita a 1000×1080. L'uso di viewportWidth da solo imposta l'altezza di default a 1080; viewportHeight richiede che viewportWidth sia impostato. Entrambe le dimensioni possono essere fino a 7680 pixel.

Scansioni di Pagine Parziali

Di default, lo strumento analyze esegue la scansione dell'intera pagina. Per limitare la scansione a una regione specifica, passa il parametro opzionale selector — utile per concentrarsi su un singolo componente o escludere parti della pagina rumorose e non pertinenti dai risultati.

  • Una singola stringa selettore CSS mira a un elemento nel frame superiore:

    {
      "url": "http://localhost:3000",
      "selector": "#main"
    }
  • Un array di selettori CSS attraversa i confini di iframe o shadow-DOM — ogni segmento seleziona il contenitore per il prossimo. Usa un array solo quando l'obiettivo risiede all'interno di un iframe o di una radice shadow:

    {
      "url": "http://localhost:3000",
      "selector": ["iframe#checkout", "#payment-form"]
    }

Un array supporta fino a 10 segmenti. Se il selettore non trova corrispondenza con alcun elemento sulla pagina, la scansione restituisce un errore. Quando selector è omesso, viene eseguita la scansione di tutta la pagina.

Chiedi al tuo agente AI in linguaggio naturale: l'agente traduce la tua intenzione nella chiamata dello strumento:

Scan only the #main region of http://localhost:3000 for accessibility issues

Interazioni con il Browser Prima della Scansione

Lo strumento analyze supporta un array opzionale before di passaggi interattivi che vengono eseguiti dopo il caricamento della pagina ma prima della scansione di accessibilità. Questo permette diversi scenari di test realistici:

  • Pagine con login richiesto — compila le credenziali e inviale prima di scansionare la pagina post-login
  • Bandiere dei cookie/consenso — elimina le bandiere che altrimenti coprirebbero o oscurerebbero il contenuto della pagina
  • Contenuto dinamico — aspetta che il contenuto reso dal client (cambiamenti di percorso, DOM iniettati in ritardo) appaia prima di scansionare

I passaggi vengono eseguiti in ordine di array, nel stesso contesto del browser della scansione, così cookie, localStorage e eventuali cambiamenti di percorso innescati da click o fill persistono nella scansione.

L'array before supporta fino a 20 passaggi. Ogni passaggio ha il proprio timeout di BROWSER_TIMEOUT_MS (default 30000 ms); non c'è nessuna eccezione per ogni singolo passaggio.

Azioni Supportate

Azione Campi obbligatori Campi facoltativi Scopo
click selector Fare clic sull'elemento che corrisponde al CSS selector (ad esempio, un pulsante di invio, un pulsante "Chiudi" su un banner).
fill selector, value Compilare un input che corrisponde a selector con value. Usare per credenziali, query di ricerca o campi modulo. Una stringa vuota cancella l'input.
waitFor selector state — uno di "visible" (default), "attached", "hidden", "detached" Attendere che l'elemento che corrisponde a selector raggiunga state. Usare per gestire il passo successivo o la scansione stessa. Scegliere un selettore che esiste solo nello stato post-interazione (ad esempio, un pulsante di logout o un'intestazione del cruscotto) — selettori generici come body o #app esistono già prima dell'interazione e si risolvono istantaneamente, quindi non gestiranno nulla.
wait ms Pausa per ms millisecondi (1–5000), quindi continua. Usare solo quando nulla sulla pagina indica che è pronta — ad esempio, il termine di una transizione CSS, un timer di debounce che scatta, un disegno su tela che si completa. Se un elemento appare o cambia, usare waitFor invece: è più rapido e non fa supposizioni. Richiede v1.5.0 o successiva.
tip

Preferire waitFor anziché wait. Una pausa fissa attende più a lungo del necessario o non abbastanza, e rallenta ogni scansione per tutta la sua durata completa. La somma di tutti i passaggi wait in un array before è limitata a 10000 ms; una richiesta oltre il limite viene rifiutata. La pausa viene aggiunta alla breve stabilizzazione automatica dopo ogni interazione; non la sostituisce.

Esempio: accesso prima della scansione

Chiedi al tuo agente AI in linguaggio naturale: l'agente traduce la tua intenzione nella chiamata dello strumento:

Analyze http://localhost:3000 for accessibility issues. Before running
the analysis, fill in the #username and #password fields with USERNAME
and PASSWORD from ./.env.local, click the button[type=submit] button,
and wait for #main-content to appear.

L'agente risolve il prompt e chiama lo strumento analyze con un payload simile a:

{
  "url": "http://localhost:3000",
  "before": [
    {
      "action": "fill",
      "selector": "#username",
      "value": "<resolved-from-.env.local>"
    },
    {
      "action": "fill",
      "selector": "#password",
      "value": "<resolved-from-.env.local>"
    },
    { "action": "click", "selector": "button[type=submit]" },
    { "action": "waitFor", "selector": "#main-content" }
  ]
}
important

fill.value è trattato come sensibile. Il server Axe MCP non registra mai fill.value, non lo ripete mai nei messaggi di errore e non lo invia mai alla telemetria. Usare fill per qualsiasi input fornito dall'utente o segreto (password, token API, ecc.) in modo che i segreti rimangano occultati in tutto il pipeline — e non inserire mai valori sensibili in un selector, che fa appaiono nei log e nei messaggi di errore.

note

L'agente risolve value, non il server. Il server Axe MCP tratta value come una stringa letterale — non non legge file, espande variabili d'ambiente o interpreta la sintassi dei segnaposto come ${VAR}, $VAR o {{VAR}}. È responsabilità del tuo agente AI (Claude, Copilot, Cursor, ecc.) risolvere l'intento dell'utente in una stringa concreta prima di chiamare lo strumento.

In pratica, ciò significa:

  • Formulare i prompt in modo naturale — "usa NOME UTENTE/PASSWORD da .env.local" funziona. L'agente legge il file con i suoi strumenti del filesystem e sostituisce i valori.
  • Non incollare la sintassi del segnaposto — scrivere value: "${USERNAME}" in un prompt farà sì che la stringa letterale ${USERNAME} venga digitata nell'input.
  • Essere espliciti su fonti ambigue — se dici "usa le mie credenziali salvate" senza indirizzare l'agente a un file o a una variabile d'ambiente, un agente ben progettato chiederà invece di fare supposizioni. Indica dove cercare.
caution

Alcuni flussi di autenticazione non sono supportati. before actions drive the page through Playwright-style interactions in a Dockerized Chromium instance. The following are intentionally out of scope:

  • Captcha sfide (reCAPTCHA, hCaptcha, ecc.)
  • 2FA / TOTP / SMS codici di verifica
  • SSO di terze parti catene di reindirizzamento (ad es. "Accedi con Google", pagine di login gestite da Okta)

Quando il tuo flusso di login reale richiede uno qualsiasi dei precedenti, analizzare un punto di ingresso alternativo:

  • Un cookie di sessione pre-autenticato iniettato con Iniezione di cookie — autenticarsi una volta in un vero browser, quindi passare il cookie di sessione risultante in modo che la scansione inizi già connessa
  • Un token di sessione o URL di bypass che il tuo team utilizza per i test automatizzati
  • Un URL di staging con autenticazione disabilitata per i test di accessibilità

Lo strumento analyze supporta un array opzionale cookies che imposta i cookie sul contesto del browser prima della navigazione — così da farli viaggiare con la primissima richiesta alla pagina. Questo è distinto da azioni before, che viene eseguito dopo navigazione e quindi non può influenzare come viene indirizzata la richiesta iniziale. Due usi comuni:

  • Instradamento ambientale — imposta un cookie di selezione per staging o feature-branch che un livello di edge o CDN legge per decidere quale versione del sito servire.
  • Sessioni pre-autenticate — inietta un cookie di sessione valido così che la scansione inizi già autenticata, senza passare attraverso un modulo di login tramite before.

L'array cookies supporta fino a 20 cookie.

Campo Richiesto Descrizione
name Nome del cookie. Appare nei log e nei messaggi di errore — non mettere mai valori segreti qui.
value Valore del cookie. Trattato come sensibile: non viene mai loggato, riportato negli errori o inviato alla telemetria. Fino a 10.000 caratteri (sufficienti per JWT e token di sessione).
domain Dominio del cookie. Richiesto in modo che l'ambito sia esplicito. Usa un punto iniziale (.example.com) per condividere il cookie tra i sottodomini.
path No Percorso del cookie. Per impostazione predefinita,/.
sameSite No Uno tra "Strict", "Lax" o "None". "None" richiede secure: true.
secure No Booleano.
httpOnly No Booleano.
expires No Scadenza come timestamp Unix in secondi. Omesso per un cookie di sessione.

Esempio: Arrivo su una pagina pre-autenticata

Chiedi al tuo agente AI in linguaggio naturale: l'agente traduce la tua intenzione nella chiamata dello strumento:

Analyze https://app.example.com for accessibility issues. Set the session
cookie for app.example.com from ./.env.local so the scan starts already
logged in.

L'agente risolve il valore del cookie e chiama lo strumento analyze con un payload simile a:

{
  "url": "https://app.example.com",
  "cookies": [
    {
      "name": "session",
      "value": "<resolved-from-.env.local>",
      "domain": "app.example.com"
    }
  ]
}
important

cookies[*].value è trattato come sensibile. Così come con fill.value, il server Axe MCP non registra mai il value di un cookie, non lo riporta mai nei messaggi di errore e non lo invia mai alla telemetria. Tuttavia, il name di un cookie fa appare nei log e nei messaggi di errore — mantieni i segreti in value, mai in name.

note

L'agente risolve value, non il server. I valori dei cookie seguono la stessa regola di fill.value in azioni before: il server tratta value come una stringa letterale e non non legge file, espande variabili di ambiente o interpreta sintassi di segnaposto come ${VAR}. Il tuo agente AI risolve l'intento dell'utente in una stringa concreta prima di chiamare lo strumento.

Screenshot

Lo strumento analyze può restituire uno screenshot della pagina insieme al report di violazione, così puoi vedere cosa è stato scansionato. Passa il parametro opzionale screenshot per aderire — un oggetto vuoto è sufficiente:

{
  "url": "http://localhost:3000",
  "screenshot": {}
}

PNG è il predefinito. Imposta format a "jpeg" per un'immagine più piccola su pagine con molte foto:

{
  "url": "http://localhost:3000",
  "screenshot": { "format": "jpeg" }
}

L'immagine viene restituita come un blocco di contenuti immagine MCP standard, dopo il report di violazione.

Cosa mostra lo screenshot

  • Il viewport visibile, non l'intera pagina. Il contenuto al di sotto della piega non è incluso. Per catturare più della pagina, passa un viewportHeight alto (es. 4096) in modo che l'area visibile copra ciò che vuoi vedere.
  • La pagina com'era immediatamente prima che la scansione iniziasse. La cattura avviene subito prima di axe.run(), quindi le modifiche al DOM che si verificano durante la scansione — rielaborazioni SPA, aggiornamenti useEffect, animazioni, richieste in corso — non sono riflessi. Nelle app a pagina singola questo disallineamento è comune.
caution

Non trattare lo screenshot come la fonte di verità di ciò che Axe ha visto. A causa del disallineamento temporale sopra, un elemento visibile nell'immagine potrebbe non essere ciò che Axe ha valutato. Chiedi al tuo agente di non narrare elementi visibili ma non flaggati come se fossero risultati di scansione — il report di violazione è autorevole.

Costo e supporto client

tip

Richiedi screenshot deliberatamente. Un blocco di contenuti immagine costa token di input immagine al turno successivo del tuo agente — all'incirca un ordine di grandezza in più rispetto al testo equivalente. Richiedi uno screenshot quando vuoi davvero vedere la pagina, piuttosto che aggiungerlo a ogni scansione.

Il fatto che l'immagine venga resa inline dipende dal tuo client MCP. Il server restituisce sempre un blocco immagine valido per lo standard, ma alcuni client comprimono i risultati degli strumenti o omettono le anteprime delle immagini — VS Code con Copilot le visualizza, mentre Cursor e Claude Desktop potrebbero no. Una anteprima mancante è una limitazione della visualizzazione sul lato client, non un errore di acquisizione.

Salvataggio degli screenshot su disco

Lo screenshot può anche essere scritto su un file, che è il modo affidabile per vedere un'acquisizione in un client che non rende le immagini inline. Imposta saveTo a un percorso assoluto:

{
  "url": "http://localhost:3000",
  "screenshot": { "saveTo": "/Users/me/Desktop/home.png" }
}

Oppure imposta save: true per lasciare che il server scelga il nome del file:

{
  "url": "http://localhost:3000",
  "screenshot": { "save": true }
}
Campo Tipo Scopo
saveTo string Percorso assoluto per scrivere l'immagine. Se punta a una directory esistente, viene scritto un nome di file generato al suo interno. Implica il salvataggio, quindi save non è necessario insieme ad esso.
save boolean Scrivi l'immagine sotto un nome di file generato nella directory degli screenshot del server (AXE_SCREENSHOT_DIR, di default la directory temporanea del tuo sistema operativo). Ignorato quando saveTo è impostato.
inline boolean Se allegare anche l'immagine come blocco inline (predefinito true). Imposta false per saltare l'immagine inline e restituire solo il percorso salvato.

Il percorso assoluto che è stato scritto viene restituito nell'array messages della risposta, così il tuo agente può dirti dove trovare il file.

tip

Abbina un salvataggio con inline: false per evitare di pagare due volte l'immagine. Se il tuo client non può rendere comunque l'immagine inline, { "save": true, "inline": false } scrive il file e salta il blocco contenuti immagine — risparmiando i token di input immagine che altrimenti costerebbe nel prossimo turno del tuo agente.

inline: false ha effetto solo una volta che il salvataggio ha avuto effettivamente successo. Se la scrittura fallisce, l'immagine viene comunque restituita inline, quindi l'acquisizione non va persa.

important

Sotto la distribuzione Docker, il file viene scritto all'interno del container. Per raggiungerlo dal tuo host, monta un volume sopra la directory target e indirizza saveTo (o AXE_SCREENSHOT_DIR) al percorso lato container. Il server non rileva se esiste un mount — senza di esso, il file viene scritto e poi eliminato insieme al container.

Il salvataggio si applica a solo scansioni riuscite. Se la scansione fallisce dopo che lo screenshot è stato catturato, l'immagine viene restituita in linea insieme all'errore indipendentemente da inline, e non viene mai scritta su disco.

Quando la cattura fallisce

La cattura dello screenshot è un tentativo al meglio delle possibilità e non causa mai il fallimento di una scansione. Se la cattura va in timeout, la scansione restituisce comunque i suoi risultati con una nota nell'array messages della risposta:

Screenshot capture failed: <reason>

Se la stessa scansione fallisce dopo che lo screenshot è stato scattato, l'immagine viene comunque restituita con la risposta di errore — lo stato visivo della pagina al momento del guasto è di solito la prova di debugging più utile che hai.

note

Gli screenshot che richiedi non vengono inviati a Deque. L'immagine è catturata localmente e restituita direttamente al tuo agente. Questo è separato dallo screenshot a pagina intera che Regole Avanzate carica per la valutazione lato server; vedi Cosa viene inviato a Deque.

Regole Avanzate

Oltre al set di regole standard di axe-core, lo strumento analyze può eseguire Regole Avanzate — test automatici che utilizzano screenshot, visione artificiale e modelli linguistici di grandi dimensioni per individuare problemi che axe-core da solo non può rilevare, come intestazioni che sembrano intestazioni o immagini informative con testo alternativo poco utile.

Quale preset viene eseguito è governato dai Configurazione Axe della tua organizzazione e — dove il tuo amministratore lo consente — può essere sostituito per server con AXE_ADVANCED_RULES o per scansione con l'argomento advancedRules:

{
  "url": "http://localhost:3000",
  "advancedRules": "thorough"
}

Ogni risposta riporta il preset che è stato effettivamente eseguito e da dove proviene:

{
  "advancedRules": {
    "value": "thorough",
    "source": "tool_arg"
  }
}

Le Regole Avanzate sono incluse nel tuo abbonamento Axe DevTools per Web — lo stesso che ti dà l'Axe MCP Server. Aggiungono circa 15-20 secondi a una scansione, consumano Crediti AI e sono l'unico caso in cui analyze invia dati della pagina (uno screenshot a pagina intera più la struttura della pagina) a Deque per la valutazione. Vedi Regole Avanzate per preset, precedenza, messaggi di degradazione e dettagli sulla privacy.

Benefici Chiave

  • Test nel Browser Reale - Testa la pagina effettivamente renderizzata, non solo il codice sorgente, garantendo risultati accurati
  • Standard Organizzativi - Rispetta le impostazioni di configurazione Axe del tuo team per test coerenti tra tutti gli utenti
  • Copertura Completa - Sfrutta la piattaforma Axe all'avanguardia del settore
  • Test di Responsività - Testa a dimensioni di viewport specifiche per rilevare problemi di accessibilità specifici per breakpoint
  • Scansioni Mirate - Limita una scansione a una regione specifica, iframe o shadow root con il parametro selector
  • Pagine Autenticate e Interattive - Scansiona pagine dietro un login, chiudi banner sui cookie, o attendi contenuti dinamici usando azioni before
  • Cookie di Sessione e di Ambiente - Atterra già autenticato, o indirizza a un ambiente specifico, iniettando cookie prima della navigazione con il parametro cookies
  • Contesto Visivo - Restituisci uno screenshot della pagina insieme al report con il parametro screenshot, anche quando una scansione fallisce
  • Regole Avanzate - Scopri problemi che richiedono ragionamento visivo o contestuale, a una soglia di confidenza controllata dalla tua organizzazione
  • Test Guidati Intelligenti - Esegui gli IGT (Keyboard, Interactive Elements, e Modal Dialog) sulla stessa pagina nella stessa chiamata con il parametro igtTools

Output

Lo strumento restituisce una risposta JSON strutturata che contiene:

  • Tutte le violazioni di accessibilità trovate
  • Livelli di gravità delle violazioni (critico, serio, moderato, minore)
  • Selettori di elementi specifici e codice sorgente
  • ID e descrizioni delle regole
  • Un blocco advancedRules che riporta il preset Regole Avanzate che è stato eseguito e da dove proviene
  • Un array messages che trasporta eventuali note sulla corsa (per esempio, una cattura dello screenshot fallita, una corsa di regole avanzate degradata, o il percorso a cui uno screenshot è stato salvato)

Quando screenshot è impostato, un blocco di contenuti dell'immagine segue il report. Quando igtTools è impostato, i risultati IGT sono restituiti insieme ai risultati Axe, indicizzati per nome IGT.