Skip to Content

API

Level CI – Selenium Java API: LevelAuditor#levelAnalyze

Runs static accessibility analysis on the current page and returns an AnalysisResult object containing all detected violations.


Default Usage

// Default analysis configuration AnalysisConfig analysisConfig = AnalysisConfig.builder() .switchOff(false) // Analysis is enabled .build(); // Audit configuration AuditConfig auditConfig = AuditConfig.builder() .driver(driver) // Selenium WebDriver instance with page loaded .analysisConfiguration(analysisConfig) .saveReport(true) // Save JSON/HTML report .strict(false) // Do not fail on violations .build(); // Run analysis AnalysisResult result = LevelAuditor.levelAnalyze(auditConfig); // Assert violations manually assertEquals(0, result.getViolations().size());

Configuration Classes

AnalysisConfig

public class AnalysisConfig { private Set<Rule> includeRules; // Only these rules will be checked private Set<Rule> excludeRules; // These rules will be ignored (overrides includeRules) private Set<String> ignoreSelectors; // CSS selectors to ignore private Boolean switchOff; // Temporarily disable analysis }

Defaults:

  • includeBestPractices = true
  • includeExperimental = true
  • switchOff = false
  • includeRules = emptySet()
  • excludeRules = emptySet()

AuditConfig

public class AuditConfig { private WebDriver driver; // Selenium WebDriver instance private Duration auditTimeout; // Maximum execution time for analysis private AnalysisConfig analysisConfiguration; // Optional analysis configuration private boolean saveReport; // Save JSON/HTML report private String reportPath; // Directory for reports and screenshots private boolean strict; // Fail immediately if violations found private Set<String> customTags; // Optional tags to categorize scans }

Defaults:

  • saveReport = false
  • reportPath = "./level-ci-reports"
  • strict = false

Example – Full Config

AnalysisConfig analysisConfig = AnalysisConfig.builder() .excludeRules(Set.of(Rule.TARGET_SIZE, Rule.VIDEO_CAPTION, Rule.SVG_IMG_ALT)) .level(Level.AAA) .ignoreSelectors(Set.of(".my-class", "button", "#lettuce")) .switchOff(false) .build(); ChromeOptions options = new ChromeOptions(); options.addArguments("--headless"); WebDriver driver = new ChromeDriver(options); driver.get("https://levelci.org"); AuditConfig auditConfig = AuditConfig.builder() .driver(driver) .analysisConfiguration(analysisConfig) .saveReport(true) .reportPath("./level-ci-reports") .elementScreenshots(true) .build(); AnalysisResult result = LevelAuditor.levelAnalyze(auditConfig); // Assert violations if (auditConfig.isStrict()) { assertEquals(0, result.getViolations().size()); } // Optional: print violations table if (auditConfig.isPrintViolationsTable()) { result.printViolationsTable(auditConfig.getViolationsTablePrintStream()); }

Rules

The Rule enum remains the same as in UserWay:

public enum Rule { ACCESSKEYS, AREA_ALT, ARIA_ALLOWED_ATTR, ARIA_ALLOWED_ROLE, ARIA_COMMAND_NAME, ARIA_DIALOG_NAME, ARIA_HIDDEN_BODY, COLOR_CONTRAST, IMAGE_ALT, LINK_NAME, LANDMARK_ONE_MAIN, PAGE_HAS_HEADING_ONE, VALID_LANG, VIDEO_CAPTION // ... all other existing rules }

Environment Variables

Level CI respects environment variables for overriding configs:

VariableDescription
LEVEL_CI_SWITCH_OFFtrue/false
LEVEL_CI_SAVE_REPORTtrue/false
LEVEL_CI_REPORT_PATHPath for reports
LEVEL_CI_STRICTtrue/false
LEVEL_CI_INCLUDE_RULESComma-separated list
LEVEL_CI_EXCLUDE_RULESComma-separated list
LEVEL_CI_IGNORE_SELECTORSComma-separated CSS selectors
Last updated on