Task Progress0 of 3 Tasks
0%

Accessibility Lab

Find planted accessibility problems with axe, prove a fixed form is clean, and complete a form with the keyboard alone. Each task ticks itself when your script gets it right.

1.Find the Planted Problems

Find the planted problemsTo do

We will never share your email.

Which axe rules does the form break?
Tick the rules axe reports
Goal

Scan the form below with axe-core, then tick exactly the rules it reports and press Check.

2.The Fixed Version

Assert the fixed form is cleanTo do
QA Playground banner

We will never share your email.

Goal

Scan this form with axe and assert the violations list is empty. This task ticks once axe has been loaded into the page; the assertion itself lives in your test.

3.Keyboard Only

Keyboard onlyTo do

Favourite tool

  • Playwright
  • Selenium
  • Cypress
  • WebdriverIO
Submit the form using only the keyboard
Goal

Fill in the form, pick Cypress, accept the terms and submit, using only the keyboard. The confirm dialog traps focus: Tab stays inside it and Escape closes it.

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.

Screenshot of the Accessibility Lab practice page on QA Playground. Find planted axe violations, assert a clean scan and finish a form by keyboard.
Accessibility Lab: Find planted axe violations, assert a clean scan and finish a form by keyboard.

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: