Riferimento alla norma · aggiornato il 2 settembre 2026

WCAG 2.2 AA, senza la prosa della norma

EN 301 549 rimanda a WCAG 2.2 livello AA per i contenuti web, quindi questa è la lista rispetto a cui il tuo cliente viene misurato. Ecco cosa è cambiato, cosa vede uno scanner e dove una persona deve sedersi con una tastiera.

Pubblicato
Raccomandazione del W3C, ottobre 2023
Nuovi criteri
Nove aggiunti, sei in A o AA
Rimosso
4.1.1 Analisi sintattica, obsoleto
Automazione
Vede circa un quarto o un terzo

Cosa significa davvero il livello AA

WCAG è organizzato in tre livelli. A è il minimo, AA è il livello da cui partono gli appalti pubblici europei ed EN 301 549, e AAA è un obiettivo che nessuno è tenuto a raggiungere su un intero sito. Quando una gara d’appalto chiede « WCAG 2.2 AA », intende ogni criterio di successo A e AA, su ogni pagina nell’ambito, in ogni stato che un utente può raggiungere.

I criteri di successo sono affermazioni verificabili, non tecniche. « Contrasto (minimo) » non ti dice quale token cambiare; ti dice il rapporto misurato che un testo deve superare. Questa distinzione conta in un audit: un riscontro è difendibile quando nomina il criterio, l’elemento e la misurazione, non quando nomina uno strumento.

Un sito non passa o fallisce nel suo insieme. La conformità si dichiara per pagina, e un solo elemento non conforme su una pagina rimuove la dichiarazione per quella pagina. Ecco perché il monitoraggio continuo batte un audit una tantum: un aggiornamento del tema può annullare la dichiarazione di cento pagine in una volta.

I nove criteri aggiunti da WCAG 2.2

Sei di essi sono in A o AA, quindi rientrano nell’ambito di una valutazione EN 301 549. L’ultima colonna dice se uno scanner può giudicarlo o se deve farlo una persona.

Criteri di successo aggiunti in WCAG 2.2, il loro livello e come ciascuno viene testato
CSNomeLivelloCome viene testato
2.4.11Focus non oscurato (minimo)AAmanuale
2.4.12Focus non oscurato (avanzato)AAAmanuale
2.4.13Aspetto del focusAAAmanuale
2.5.7Movimenti di trascinamentoAAmanuale
2.5.8Dimensione del bersaglio (minimo)AAautomatico
3.2.6Aiuto coerenteAmanuale
3.3.7Inserimento ridondanteAmanuale
3.3.8Autenticazione accessibile (minimo)AAparzialmente automatico
3.3.9Autenticazione accessibile (avanzato)AAAmanuale

Cosa controlla lo scanner, regola per regola

Ogni regola automatica porta entrambi i riferimenti, così un riscontro si legge come un criterio di successo WCAG per lo sviluppatore e come una clausola di EN 301 549 per il revisore. Queste sono le regole precaricate nella tabella di corrispondenza pubblica; il catalogo nel prodotto è più ampio ed è mantenuto centralmente.74 rules seeded
Regole automatiche precaricate con i loro criteri di successo WCAG, le clausole EN 301 549 e l’impatto tipico
RegolaWhat it detectsWCAGEN 301 549Impatto tipico
accesskeysTwo elements claim the same access key2.1.19.2.1.1serious
area-altImage map region without alternative text1.1.1, 2.4.4, 4.1.29.1.1.1, 9.2.4.4, 9.4.1.2critical
aria-allowed-attrARIA attribute not allowed on this role4.1.29.4.1.2critical
aria-command-nameCustom button, link or menu item without a name4.1.29.4.1.2serious
aria-hidden-bodyWhole document hidden from assistive technology4.1.29.4.1.2critical
aria-hidden-focusFocusable element hidden from assistive technology1.3.1, 4.1.29.1.3.1, 9.4.1.2serious
aria-input-field-nameCustom input field without an accessible name4.1.29.4.1.2serious
aria-meter-nameMeter without an accessible name1.1.19.1.1.1serious
aria-progressbar-nameProgress indicator without an accessible name1.1.19.1.1.1serious
aria-required-attrARIA role missing a required attribute4.1.29.4.1.2critical
aria-required-childrenComposite role without its required child roles1.3.19.1.3.1critical
aria-required-parentARIA role placed outside its required container1.3.19.1.3.1critical
aria-rolesRole value is not a recognised ARIA role4.1.29.4.1.2critical
aria-toggle-field-nameCheckbox, radio or switch without an accessible name4.1.29.4.1.2serious
aria-tooltip-nameTooltip role without any text4.1.29.4.1.2serious
aria-valid-attrAttribute name is not a valid ARIA attribute4.1.29.4.1.2critical
aria-valid-attr-valueARIA attribute points at a value that does not resolve4.1.29.4.1.2critical
audio-captionAudio without a captions or transcript track1.2.19.1.2.1critical
autocomplete-validautocomplete value not recognised1.3.59.1.3.5serious
avoid-inline-spacingText spacing locked by an inline style1.4.129.1.4.12serious
blinkBlinking content that cannot be stopped2.2.29.2.2.2serious
button-nameButton without an accessible name4.1.29.4.1.2critical
bypassNo way to skip the repeated navigation2.4.19.2.4.1serious
color-contrastText contrast below the required ratio1.4.39.1.4.3serious
css-orientation-lockContent locked to one screen orientation1.3.49.1.3.4serious
definition-listDefinition list built from the wrong children1.3.19.1.3.1serious
dlitemDefinition term or description outside a list1.3.19.1.3.1serious
document-titlePage has no title2.4.29.2.4.2serious
duplicate-id-activeDuplicate id on an interactive element4.1.19.4.1.1serious
empty-headingHeading with no text1.3.19.1.3.1minor
empty-table-headerTable header cell with no text1.3.19.1.3.1minor
focus-order-semanticsFocusable element with no interactive role2.4.39.2.4.3minor
form-field-multiple-labelsField bound to more than one label3.3.29.3.3.2moderate
frame-titleFrame without a title2.4.1, 4.1.29.2.4.1, 9.4.1.2serious
heading-orderHeading level skipped1.3.19.1.3.1moderate
html-has-langPage language not declared3.1.19.3.1.1serious
html-lang-validPage language code is not valid3.1.19.3.1.1serious
html-xml-lang-mismatchlang and xml:lang disagree3.1.19.3.1.1moderate
identical-links-same-purposeLinks with the same text lead somewhere different2.4.99.2.4.9minor
image-altImage without a text alternative1.1.19.1.1.1critical
input-button-nameInput button with no value or label4.1.29.4.1.2critical
input-image-altImage button without alternative text1.1.1, 4.1.29.1.1.1, 9.4.1.2critical
labelForm field without a programmatic label1.3.1, 4.1.29.1.3.1, 9.4.1.2critical
landmark-banner-is-top-levelBanner landmark nested inside another region1.3.19.1.3.1moderate
landmark-complementary-is-top-levelComplementary landmark nested inside another region1.3.19.1.3.1moderate
landmark-no-duplicate-mainMore than one main landmark on the page1.3.19.1.3.1moderate
landmark-one-mainPage has no single main landmark1.3.1, 2.4.19.1.3.1, 9.2.4.1moderate
landmark-uniqueTwo landmarks share a role and a name1.3.19.1.3.1moderate
link-nameLink without discernible text2.4.4, 4.1.29.2.4.4, 9.4.1.2serious
listList contains elements that are not list items1.3.19.1.3.1moderate
listitemList item outside a list1.3.19.1.3.1serious
marqueeScrolling marquee content2.2.29.2.2.2serious
meta-viewportZoom disabled by the viewport meta tag1.4.49.1.4.4serious
nested-interactiveInteractive control nested inside another4.1.29.4.1.2serious
no-autoplay-audioAudio starts on its own for more than three seconds1.4.29.1.4.2moderate
object-altEmbedded object without a text alternative1.1.19.1.1.1serious
p-as-headingParagraph styled to look like a heading1.3.19.1.3.1serious
page-has-heading-onePage has no level one heading1.3.19.1.3.1moderate
presentation-role-conflictPresentation role cancelled by other markup4.1.29.4.1.2minor
regionContent sits outside any landmark1.3.19.1.3.1moderate
role-img-altElement with role img has no alternative text1.1.19.1.1.1serious
scrollable-region-focusableScrollable area cannot be reached by keyboard2.1.19.2.1.1serious
select-nameSelect element without an accessible name1.3.1, 4.1.29.1.3.1, 9.4.1.2critical
server-side-image-mapServer-side image map in use2.1.19.2.1.1minor
summary-nameDisclosure summary without a name4.1.29.4.1.2serious
svg-img-altMeaningful SVG without a text alternative1.1.19.1.1.1serious
tabindexPositive tabindex overrides the natural focus order2.4.39.2.4.3serious
table-fake-captionTable title styled as a caption instead of marked as one1.3.19.1.3.1serious
target-sizeTouch target smaller than 24 by 24 pixels2.5.89.2.5.8moderate
td-has-headerData cell in a large table has no header1.3.19.1.3.1serious
td-headers-attrData cell not associated with a header1.3.19.1.3.1serious
th-has-data-cellsTable header with no data cells attached1.3.19.1.3.1serious
valid-langLanguage of a passage is not a valid code3.1.29.3.1.2serious
video-captionVideo without a captions track1.2.29.1.2.2critical

Cosa può vedere l’automazione e cosa no

Accanto a ogni punteggio in Conforma c’è la stessa frase, perché il numero è solo una parte del quadro. Le regole automatiche sono eccellenti sulle proprietà misurabili e cieche all’intenzione.

25–33%
delle barriere reali trovate dalle sole regole automatiche, su un tipico sito di marketing
12
criteri manuali nella nostra checklist principale: tastiera, ordine di focus, flusso dello screen reader, alternative al trascinamento
0
certificati emessi. Produciamo misurazioni e prove; la dichiarazione resta all’operatore

I test automatizzati coprono solo una parte delle barriere all’accessibilità. Per una valutazione completa è necessaria una verifica manuale.

Come Conforma testa WCAG 2.2 AA

  • Le regole automatiche girano su ogni pagina di una scansione, e ogni violazione viene scritta come un riscontro con la regola, il selettore, il frammento HTML e uno screenshot dell’elemento al suo posto.
  • Ogni riscontro porta entrambi i riferimenti: il criterio di successo WCAG e la clausola di EN 301 549, così un rapporto si legge allo stesso modo per uno sviluppatore e per un revisore degli appalti.
  • Ai riscontri viene assegnata un’impronta da regola, selettore e percorso. Una correzione che ritorna dopo un deploy viene segnalata come regressione invece di essere silenziosamente conteggiata come nuovo lavoro.
  • La checklist manuale copre ciò che le regole non possono giudicare, con prova video, la tecnologia assistiva usata e un tester con nome, ed è sigillata nello stesso pacchetto di prove dell’esecuzione automatica.

Le domande che ci vengono poste

WCAG 2.2 AA equivale a soddisfare la legge sull’accessibilità?

No. L’European Accessibility Act è la legge, EN 301 549 è la norma armonizzata usata per dimostrarla, ed EN 301 549 fa riferimento a WCAG 2.2 livello AA per i contenuti web. Raggiungere l’AA è la base tecnica di una dichiarazione, non un certificato.

Dobbiamo passare da 2.1 a 2.2 ora?

Per tutto ciò che è nuovo, la risposta prudente è sì. WCAG 2.2 è retrocompatibile: un contenuto che soddisfa 2.2 soddisfa anche 2.1, quindi testare rispetto alla versione più recente non costa nulla e copre entrambe.

Un punteggio automatico perfetto significa che il sito è conforme?

Significa che nessuna violazione automatica è stata rilevata sulle pagine scansionate. L’uso da tastiera, l’ordine di focus e il flusso dello screen reader richiedono ancora una persona prima di qualsiasi affermazione.

Vedi i criteri applicati alle tue pagine

Un dominio, dieci pagine, senza account. Ottieni i riscontri mappati e un riepilogo di due pagine lo stesso giorno.