Classe AxeWatcherOptions
Configura Axe Watcher per i test di accessibilità nei test Java di Selenium e Playwright con opzioni personalizzabili
La classe AxeWatcherOptions fornisce opzioni di configurazione per le integrazioni di Axe Watcher con Selenium e Playwright Java. Questa classe consente di personalizzare come Axe Watcher esegue i test di accessibilità durante i test automatici del browser, inclusi i dettagli di connessione al server, il comportamento dell'esecuzione dei test e gli standard di accessibilità.
Costruttore
AxeWatcherOptions()
Crea una nuova istanza di AxeWatcherOptions con le impostazioni predefinite. I valori predefiniti sono:
serverUrl:https://axe.deque.comautoAnalyze:truegit:true
AxeWatcherOptions options = new AxeWatcherOptions();Metodi
setApiKey(String apiKey)
Imposta la chiave API per l'autenticazione con Axe Developer Hub. Questo è richiesto per utilizzare Axe Watcher.
Parametri:
apiKey- La tua chiave API di Axe Developer Hub
Restituisce:
AxeWatcherOptions- L'istanza corrente per concatenare i metodi
Esempio:
AxeWatcherOptions options = new AxeWatcherOptions();
options.setApiKey("your-api-key-here");setProjectId(String projectId)
Parametri:
projectId- L'ID del progetto del progetto per ricevere i risultati di accessibilità
Restituisce:
AxeWatcherOptions- L'istanza corrente per concatenare i metodi
Esempio:
AxeWatcherOptions options = new AxeWatcherOptions();
options.setProjectId("your-project-ID-here"); // a uuid identifying the projectsetServerUrl(String serverUrl)
Imposta l'URL del server a cui inviare i risultati di accessibilità. Il valore predefinito è https://axe.deque.com.
Parametri:
serverUrl- URL del server a cui inviare i risultati di accessibilità
Restituisce:
AxeWatcherOptions- L'istanza corrente per concatenare i metodi
Esempio:
AxeWatcherOptions options = new AxeWatcherOptions();
options.setServerUrl("https://custom.axe-instance.com");setBuildId(String buildId)
Imposta l'ID build per i test runner paralleli. Quando non è nullo, questo consente ai test runner paralleli di generare risultati che appaiono come un singolo test nell'Axe Developer Hub.
Parametri:
buildId- ID build per aggregare i risultati, tipicamente un ID build di CI/CD
Restituisce:
AxeWatcherOptions- L'istanza corrente per concatenare i metodi
Esempio:
AxeWatcherOptions options = new AxeWatcherOptions();
// Using a CI build ID from an environment variable
options.setBuildId(System.getenv("GITHUB_RUN_ID"));setAutoAnalyze(boolean autoAnalyze)
Imposta se analizzare automaticamente la pagina sotto test. Il valore predefinito è true.
Parametri:
autoAnalyze- Se analizzare automaticamente la pagina sotto test
Restituisce:
AxeWatcherOptions- L'istanza corrente per concatenare i metodi
Esempio:
AxeWatcherOptions options = new AxeWatcherOptions();
// Disable automatic analysis for manual control
options.setAutoAnalyze(false);setRunContext(AxeRunContext runContext)
Imposta il contesto della pagina sotto test per limitare l'ambito dell'analisi o escludere alcuni elementi dall'analisi.
Parametri:
runContext- Contesto di esecuzione per l'analisi di axe-core
Restituisce:
AxeWatcherOptions- L'istanza corrente per concatenare i metodi
Esempio:
AxeWatcherOptions options = new AxeWatcherOptions();
// Only analyze main content and exclude navigation
AxeRunContext context = new AxeRunContext()
.setInclude(Arrays.asList("#main-content"))
.setExclude(Arrays.asList("#navigation"));
options.setRunContext(context);setRunOptions(AxeRunOptions runOptions)
Imposta opzioni aggiuntive per l'analisi di axe-core, come quali regole eseguire o disabilitare.
Parametri:
runOptions- Opzioni di esecuzione per l'analisi di axe-core
Restituisce:
AxeWatcherOptions- L'istanza corrente per concatenare i metodi
Esempio:
AxeWatcherOptions options = new AxeWatcherOptions();
// Disable the color contrast rule and focus on WCAG 2.1 AA
Map<String, AxeRuleOptions> rules = new HashMap<>();
rules.put("color-contrast", new AxeRuleOptions().setEnabled(false));
AxeRunOnly runOnly = new AxeRunOnly()
.setType("tag")
.setValues(Arrays.asList("wcag21aa"));
AxeRunOptions runOptions = new AxeRunOptions()
.setRules(rules)
.setRunOnly(runOnly);
options.setRunOptions(runOptions);setExcludeUrlPatterns(String[] excludeUrlPatterns)
Imposta i modelli URL da escludere dall'analisi. Utilizza la libreria Minimatch per confrontare gli URL.
Parametri:
excludeUrlPatterns- Modelli URL da escludere dall'analisi
Restituisce:
AxeWatcherOptions- L'istanza corrente per concatenare i metodi
Esempio:
AxeWatcherOptions options = new AxeWatcherOptions();
// Exclude login pages and admin dashboard
options.setExcludeUrlPatterns(new String[] {
"https://example.com/login*",
"https://example.com/admin/*"
});setAllowedOrigins(String[] allowedOrigins)
Imposta le origini il cui contenuto di tipo cross-origin <iframe> è analizzato. Richiede Watcher 4.6.0 o successivo.
Per impostazione predefinita, vengono analizzati solo i frame della stessa origine e i problemi di accessibilità all'interno di un frame cross-origin sono esclusi completamente dai risultati. Chiama questo metodo per effettuare l'opt-in per le origini che hai nominato. Non includere l'origine della tua applicazione, che è sempre consentita.
Ogni voce deve essere un'origine e nient'altro: uno schema (http o https), un host e una porta opzionale. Una barra finale e una porta predefinita (:80 per http, :443 per https) vengono rimosse, l'host viene convertito in minuscolo e i duplicati eliminati. I caratteri jolly non sono supportati, quindi ogni origine deve essere nominata esplicitamente. Un dominio contenente caratteri al di fuori dell'alfabeto inglese deve essere fornito nella sua forma punycode (la forma equivalente che inizia con xn-- utilizzata internamente dai browser).
Consulta Analizza iframes Cross-Origin per le implicazioni di fiducia, l'effetto sulla durata dell'analisi e l'interazione con l'analisi automatica.
Parametri:
allowedOrigins- Origini i cui iframes cross-origin dovrebbero essere analizzati
Restituisce:
AxeWatcherOptions- L'istanza corrente per concatenare i metodi
Genera eccezioni:
IllegalArgumentException- Se una voce non è un'origine semplicehttpohttps, contiene un carattere jolly, un percorso, una query, un frammento o credenziali, o utilizza un dominio con caratteri esterni all'alfabeto inglese. Le voci sono rifiutate anziché ignorate, perché un errore vicino al bersaglio lascerebbe il frame non analizzato mentre il test risulterebbe comunque un successo.
Esempio:
AxeWatcherOptions options = new AxeWatcherOptions()
.setApiKey(System.getenv("ACCESSIBILITY_API_KEY"))
.setProjectId(System.getenv("PROJECT_ID"))
.setAllowedOrigins(new String[] {"https://pay.example.com"});setGit(boolean git)
Stabilisce se Watcher raccoglie informazioni Git per l'esecuzione del test corrente. Il valore predefinito è true. Impostare su false quando si esegue in ambienti senza Git, o quando la raccolta dei dati Git non è necessaria.
Parametri:
git- Se raccogliere informazioni Git
Restituisce:
AxeWatcherOptions- L'istanza corrente per concatenare i metodi
Esempio:
AxeWatcherOptions options = new AxeWatcherOptions();
// Disable Git info collection
options.setGit(false);setGitInfo(AxeWatcherGitInfo gitInfo)
Imposta metadati Git espliciti per l'esecuzione del test corrente, aggirando il rilevamento automatico di Git. Usa questa opzione quando i tuoi test vengono eseguiti in un repository separato da quello sotto test, o in ambienti CI dove il rilevamento automatico di Git è inaffidabile (ad esempio, clonazioni superficiali o stato 'detached HEAD').
Quando viene impostato un AxeWatcherGitInfo non nullo, esso ha la precedenza su setGit(boolean) — i metadati forniti vengono inviati anche se setGit(false) è stata precedentemente chiamata. Passando null vengono cancellati i metadati precedentemente impostati e si ritorna al comportamento controllato da setGit(boolean).
Vedi Fornitura dei Metadati Git e AxeWatcherGitInfo per maggiori informazioni.
Parametri:
gitInfo- Metadati Git espliciti da usare. Passanullper cancellare i metadati precedentemente impostati e tornare al comportamento di auto-rilevamento.
Restituisce:
AxeWatcherOptions- L'istanza corrente per concatenare i metodi
Esempio:
AxeWatcherOptions options = new AxeWatcherOptions()
.setApiKey(System.getenv("AXE_DEVELOPER_HUB_API_KEY"))
.setProjectId(System.getenv("AXE_DEVELOPER_HUB_PROJECT_ID"))
.setGitInfo(new AxeWatcherGitInfo()
.setCommitSha(System.getenv("GIT_COMMIT"))
.setBranch(System.getenv("GIT_BRANCH"))
.setDefaultBranch("main"));setConfigurationOverrides(ConfigurationOverrides configurationOverrides)
Imposta le sovrascritture di configurazione in base alle impostazioni di configurazione globale dell'Account Axe della tua organizzazione.
Parametri:
configurationOverrides- Sovrascritture di configurazione
Restituisce:
AxeWatcherOptions- L'istanza corrente per concatenare i metodi
Esempio:
AxeWatcherOptions options = new AxeWatcherOptions();
// Override to use WCAG 2.2 AA and enable best practices
ConfigurationOverrides overrides = new ConfigurationOverrides()
.setAccessibilityStandard(ConfigurationOverrides.AccessibilityStandard.WCAG22AA)
.setEnableBestPractices(true);
options.setConfigurationOverrides(overrides);setTakeScreenshots(boolean takeScreenshots)
Stabilisce se catturare uno screenshot della pagina quando vengono trovate delle violazioni.
Parametri:
takeScreenshots- Se catturare screenshot quando vengono trovate violazioni (predefinito:false)
Restituisce:
AxeWatcherOptions- L'istanza corrente per concatenare i metodi
Esempio:
AxeWatcherOptions options = new AxeWatcherOptions();
options.setTakeScreenshots(true);setScreenshotDir(String screenshotDir)
Imposta la directory dove gli screenshot vengono salvati localmente, oltre ad essere caricati su Axe Developer Hub. Non ha effetto a meno che non venga chiamato anche setTakeScreenshots(true).
Quando impostato, gli screenshot vengono scritti in {screenshotDir}/YYYYMMDDTHHmmssSSS-{screenshot_id}.png. I percorsi relativi vengono risolti rispetto alla directory di lavoro della JVM. Se la creazione della directory o la scrittura del file fallisce, viene registrato un avviso e la suite di test continua.
Parametri:
screenshotDir- Directory in cui salvare gli screenshot. Passanullo una stringa vuota per disabilitare il salvataggio locale.
Restituisce:
AxeWatcherOptions- L'istanza corrente per concatenare i metodi
Esempio:
AxeWatcherOptions options = new AxeWatcherOptions()
.setTakeScreenshots(true)
.setScreenshotDir("./axe-screenshots");setElementInternals(boolean elementInternals)
Abilita il supporto per ElementInternals per elementi personalizzati. Quando abilitato, Axe Watcher raccoglie i ruoli e le proprietà ARIA impostati tramite l'API ElementInternals, riducendo i falsi positivi su pagine che utilizzano elementi personalizzati con attachInternals(). Richiede la versione 4.12.0 o successiva di axe-core.
Parametri:
elementInternals- Se abilitare il supporto per ElementInternals (predefinito:false)
Restituisce:
AxeWatcherOptions- L'istanza corrente per concatenare i metodi
Esempio:
AxeWatcherOptions options = new AxeWatcherOptions()
.setElementInternals(true);getApiKey()
Ottiene la chiave API corrente.
Restituisce:
String- La chiave API corrente
Esempio:
AxeWatcherOptions options = new AxeWatcherOptions();
options.setApiKey("my-api-key");
String apiKey = options.getApiKey(); // Returns "my-api-key"getProjectId()
Ottiene l'ID del progetto corrente. L'ID del progetto identifica il progetto che riceve i risultati di accessibilità di Axe Watcher.
Restituisce:
String- L'ID del progetto corrente
Esempio:
AxeWatcherOptions options = new AxeWatcherOptions();
options.setProjectId("my-project-ID"); // should be a uuid identifying the project
String projectId = options.getProjectId(); // Returns the project IDgetServerUrl()
Ottiene l'URL del server corrente.
Restituisce:
String- L'URL del server corrente
Esempio:
AxeWatcherOptions options = new AxeWatcherOptions();
String serverUrl = options.getServerUrl(); // Returns default "https://axe.deque.com"getBuildId()
Ottiene l'ID della build corrente.
Restituisce:
String- L'ID della build corrente
Esempio:
AxeWatcherOptions options = new AxeWatcherOptions();
options.setBuildId("build-123");
String buildId = options.getBuildId(); // Returns "build-123"getAutoAnalyze()
Ottiene se l'analisi automatica è abilitata.
Restituisce:
boolean- Se l'analisi automatica è abilitata
Esempio:
AxeWatcherOptions options = new AxeWatcherOptions();
boolean autoAnalyze = options.getAutoAnalyze(); // Returns true (default)getRunContext()
Ottiene il contesto di esecuzione corrente.
Restituisce:
AxeRunContext- Il contesto di esecuzione corrente
Esempio:
AxeWatcherOptions options = new AxeWatcherOptions();
AxeRunContext context = new AxeRunContext();
options.setRunContext(context);
AxeRunContext currentContext = options.getRunContext();getRunOptions()
Ottiene le opzioni di esecuzione correnti.
Restituisce:
AxeRunOptions- Le opzioni di esecuzione correnti
Esempio:
AxeWatcherOptions options = new AxeWatcherOptions();
AxeRunOptions runOptions = new AxeRunOptions();
options.setRunOptions(runOptions);
AxeRunOptions currentOptions = options.getRunOptions();getExcludeUrlPatterns()
Ottiene gli schemi URL da escludere correnti.
Restituisce:
String[]- Gli schemi URL da escludere correnti
Esempio:
AxeWatcherOptions options = new AxeWatcherOptions();
options.setExcludeUrlPatterns(new String[] {"https://example.com/login*"});
String[] patterns = options.getExcludeUrlPatterns();getAllowedOrigins()
Ottiene le origini i cui iframes cross-origin sono analizzati. Restituisce i valori normalizzati, che possono differire da quelli passati a setAllowedOrigins(): una barra finale e una porta predefinita vengono rimosse, l'host è convertito in minuscolo e i duplicati sono eliminati.
Restituisce:
String[]- Le origini attualmente consentite, oppurenullse nessuna è impostata
Esempio:
AxeWatcherOptions options = new AxeWatcherOptions();
options.setAllowedOrigins(new String[] {"https://Pay.example.com:443/"});
String[] origins = options.getAllowedOrigins(); // {"https://pay.example.com"}getGit()
Ottiene se la raccolta delle informazioni di Git è abilitata.
Restituisce:
boolean-truese la raccolta delle info di Git è abilitata (predefinito), false se disabilitata
Esempio:
AxeWatcherOptions options = new AxeWatcherOptions();
boolean git = options.getGit(); // Returns true (default)getGitInfo()
Ottiene i metadati Git espliciti attualmente configurati, o null se non sono stati impostati metadati espliciti.
Restituisce:
AxeWatcherGitInfo- I metadati Git espliciti correnti, onullse non impostati
Esempio:
AxeWatcherOptions options = new AxeWatcherOptions()
.setGitInfo(new AxeWatcherGitInfo().setBranch("main"));
AxeWatcherGitInfo gitInfo = options.getGitInfo(); // Returns the configured AxeWatcherGitInfogetConfigurationOverrides()
Ottiene le sovrascritture della configurazione corrente.
Restituisce:
ConfigurationOverrides- Le sovrascritture della configurazione corrente
Esempio:
AxeWatcherOptions options = new AxeWatcherOptions();
ConfigurationOverrides overrides = new ConfigurationOverrides();
options.setConfigurationOverrides(overrides);
ConfigurationOverrides current = options.getConfigurationOverrides();getTakeScreenshots()
Ottiene se la cattura degli screenshot è abilitata.
Restituisce:
boolean-truese gli screenshot vengono catturati quando vengono trovate violazioni,falsealtrimenti
Esempio:
AxeWatcherOptions options = new AxeWatcherOptions();
options.setTakeScreenshots(true);
boolean takeScreenshots = options.getTakeScreenshots(); // Returns truegetScreenshotDir()
Ottiene la directory degli screenshot corrente, o null se non è stata impostata una directory di salvataggio locale.
Restituisce:
String- La directory degli screenshot corrente, onull
Esempio:
AxeWatcherOptions options = new AxeWatcherOptions()
.setScreenshotDir("./screenshots");
String dir = options.getScreenshotDir(); // Returns "./screenshots"getElementInternals()
Ottiene se il supporto a ElementInternals è abilitato.
Restituisce:
boolean-truese il supporto a ElementInternals è abilitato,falsealtrimenti
Esempio:
AxeWatcherOptions options = new AxeWatcherOptions();
boolean enabled = options.getElementInternals(); // Returns false (default)toJson()
Serializza l'istanza AxeWatcherOptions in una stringa JSON.
Restituisce:
String- Una stringa JSON che rappresenta le opzioni
Genera eccezioni:
RuntimeException- SeconfigurationOverrideserunOptions.runOnlysono usati insieme (sono mutuamente esclusivi)
Esempio:
AxeWatcherOptions options = new AxeWatcherOptions()
.setApiKey("my-api-key")
.setProjectId("my-project-id")
.setServerUrl("https://custom.axe-instance.com");
String json = options.toJson();Limitazioni della configurazione
Quando si configura AxeWatcherOptions, tenere presente le seguenti limitazioni:
-
La chiave API è richiesta:
options.setApiKey("your-api-key"); // Required -
È richiesto il Project ID:
options.setProjectId("your-project-ID"); // Required -
Opzioni mutuamente esclusive:
Non è possibile utilizzare insieme
runOptions.runOnlyeconfigurationOverrides.accessibilityStandard. Se è necessario impostare uno standard di accessibilità specifico, utilizzareConfigurationOverridescome mostrato di seguito:// Correct: Using ConfigurationOverrides options.setConfigurationOverrides( new ConfigurationOverrides() .setAccessibilityStandard(ConfigurationOverrides.AccessibilityStandard.WCAG22AA) ); // Correct: Using RunOptions.runOnly options.setRunOptions( new AxeRunOptions() .setRunOnly(new AxeRunOnly().setType("tag").setValues(Arrays.asList("wcag22aa"))) ); // Incorrect: Using both together will throw an exception options.setConfigurationOverrides( new ConfigurationOverrides() .setAccessibilityStandard(ConfigurationOverrides.AccessibilityStandard.WCAG22AA) ).setRunOptions( new AxeRunOptions() .setRunOnly(new AxeRunOnly().setType("tag").setValues(Arrays.asList("wcag21aa"))) ); -
L'analisi automatica non rileva le modifiche effettuate all'interno di un iframe:
Con
setAutoAnalyze(true), Watcher osserva solo la pagina di livello superiore, quindi una modifica apportata all'interno di un iframe (di stessa origine o cross-origin) lascia la pagina apparentemente invariata e l'analisi automatica è saltata. Un iframe viene quindi analizzato a partire dall'ultima modifica della pagina di livello superiore. Dopo aver interagito all'interno di un frame, torna al frame di livello superiore e chiama esplicitamenteanalyze(), poiché un'analisi che richiedi tu stesso non è mai saltata:// The automatic analysis after this interaction is skipped: the top-level page is unchanged driver.switchTo().frame("pay"); driver.findElement(By.id("submit")).click(); // Return to the top-level frame, then analyze the resulting state driver.switchTo().defaultContent(); ((AxeWatcherDriver) driver).axeWatcher().analyze();Consulta Analizza iframes Cross-Origin per ulteriori informazioni.
