Accessibility Lab
Practice automated accessibility checks: find the problems planted in a form with axe-core, prove the fixed form is clean, and complete a form using only the keyboard.
1. Find the Planted Problems
Challenge Tasks (1)
Tick a task when your script passes it. Tasks with a pass/fail box tick themselves.
2. The Fixed Version
Challenge Tasks (1)
Tick a task when your script passes it. Tasks with a pass/fail box tick themselves.
3. Keyboard Only
Challenge Tasks (1)
Tick a task when your script passes it. Tasks with a pass/fail box tick themselves.
Favourite tool
- Playwright
- Selenium
- Cypress
- WebdriverIO
4. Solutions
Try the challenges yourself first. Reference solutions are hidden until you ask for them.
About this Accessibility Lab page
Accessibility testing checks that people using screen readers, keyboards and other assistive tools can use a page. You practice it by running axe-core against a page with known WCAG violations, fixing or asserting on them, and then completing a form with the keyboard only. This free lab does that and works with Playwright, Selenium and Cypress.
Frequently asked questions
How do I run axe accessibility tests in Playwright?
Install @axe-core/playwright, create an AxeBuilder with your page, call analyze(), and assert that results.violations is empty. You can scope the scan with include() or limit rules with withTags(['wcag2a', 'wcag2aa']). Run the scan after the page reaches the state you want to check.
Can Selenium run axe-core accessibility scans?
Yes. Selenium Java has the com.deque.html.axe-core:selenium package with AxeBuilder, and Python has axe-selenium-python. Both inject axe-core into the page and return a violations list you can assert on. Selenium has no built-in accessibility audit.
What can automated accessibility tests not catch?
Automated tools such as axe find roughly a third to half of WCAG issues, mainly missing labels, bad contrast and invalid ARIA. They cannot judge whether alt text is meaningful, whether focus order makes sense or whether a screen reader flow is usable. Manual and keyboard checks are still needed.
How do I test keyboard navigation in an automated test?
Send Tab, Shift+Tab, Enter and Space key presses and assert which element has focus after each one. In Playwright use page.keyboard.press('Tab') and expect(locator).toBeFocused(). In Selenium use Actions or send_keys with Keys.TAB, then compare the active element.
Where can I practice accessibility testing for free?
The Accessibility Lab on QA Playground has planted axe violations, a task to assert a clean scan after fixes, and a keyboard-only form task. It needs no signup, runs in the browser, and includes reference solutions in Playwright, Selenium Java, Selenium Python and Cypress.
Free developer tools on Randomly.online
QA Playground is part of Randomly.online. These tools help while you write and debug tests:
