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 = trueincludeExperimental = trueswitchOff = falseincludeRules = 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 = falsereportPath = "./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:
| Variable | Description |
|---|---|
LEVEL_CI_SWITCH_OFF | true/false |
LEVEL_CI_SAVE_REPORT | true/false |
LEVEL_CI_REPORT_PATH | Path for reports |
LEVEL_CI_STRICT | true/false |
LEVEL_CI_INCLUDE_RULES | Comma-separated list |
LEVEL_CI_EXCLUDE_RULES | Comma-separated list |
LEVEL_CI_IGNORE_SELECTORS | Comma-separated CSS selectors |
Last updated on