Skip to content

Adventure Idea: define intermediate and expert levels for The Accessibility Nightmare - #90

Merged
sinduri-g merged 2 commits into
off-on-dev:mainfrom
sindurigf:idea/accessibility-nightmare-intermediate-expert
Sep 7, 2026
Merged

Adventure Idea: define intermediate and expert levels for The Accessibility Nightmare#90
sinduri-g merged 2 commits into
off-on-dev:mainfrom
sindurigf:idea/accessibility-nightmare-intermediate-expert

Conversation

@sindurigf

@sindurigf sindurigf commented Sep 4, 2026

Copy link
Copy Markdown
Contributor
  • Intermediate, The Checkout Trap. Three broken checkout components on a page axe-core reports clean before and after the repair. Automated scanning cannot see behavior.
  • Expert, The Compliance Engine. The player builds the check that can, then proves what was audited and records what cannot be fixed.
  • Four tools, each reaching a different distance: eslint on source, axe-core on the rendered DOM, Playwright on behavior, Guidepup's Virtual Screen Reader on announcements.
  • Storybook is out to keep it lean.
  • Pa11y reads the same layer axe-core already covers.
  • The monitoring objective stays, as a small in-page beacon rather than a separate stack.
  • NVDA runs on Windows and VoiceOver on macOS, so neither reaches a Linux Codespace. Guidepup's Virtual Screen Reader takes their place, running headless and documented as a simulation rather than a substitute for real assistive technology.
  • Beginner: three lines updated to name the tools the level uses. Story, objectives and implementation untouched. docs/beginner.yaml gains topics, contributor and meta_description.

What does this PR do?

Closes #

Type of PR

  • 💡 Adventure Idea
  • 🗺️ New Adventure Level
  • 📖 Solution Walkthrough
  • 🐛 Bug fix / 📝 Documentation improvement / Other

💡 Adventure Idea

  • Idea file is placed in ideas/ (not ideas/.implemented/)

🗺️ New Adventure Level

  • Devcontainer tested from scratch in a new Codespace
  • verify.sh passes when the challenge is solved
  • verify.sh fails with helpful error messages when not solved
  • Docs complete: story, objectives, hints, no spoilers
  • All links in docs work
  • Idea file moved to ideas/.implemented/ (first level PR only)
  • Tracking issue linked above (Part of # for earlier levels, Closes # for the last one)

📖 Solution Walkthrough

  • External link (blog post, video, etc.) — linked from the adventure's solutions page
  • In-repo markdown (adventures/XX-.../docs/solutions/level.md)
  • The challenge deadline has passed
  • Walkthrough explains why things work, not just what to do

📝 Other

  • Commits are focused and minimal
  • Documentation updated if needed

…bility Nightmare

- Intermediate (The Checkout Trap): drops the Storybook component-library
  framing. Three checkout components built from role-free containers, on a page
  axe-core reports clean before and after the repair. Verified on a React build
  in development and production across all six reachable states.
- Expert (The Compliance Engine): drops Real User Monitoring, OpenTelemetry and
  Grafana as three levels of scope in one. Now about audit coverage, centred on
  a keyboard trap in a vendor payment widget that no DOM scanner reports,
  because a trap is a behavior rather than a property of the markup.
- Removes NVDA and VoiceOver, which are Windows and macOS only and cannot run in
  a Codespace. Replaced by the Virtual Screen Reader, documented as a simulation
  rather than a substitute for real assistive technology.
- Removes Pa11y as redundant with axe-core.
- Expert gate runs locally because forks disable Actions by default, not because
  Actions cannot be triggered from a Codespace.
- Reframes the opening around the customers affected rather than the penalties,
  across the Theme, README, and index.yaml backstory and overview. Overview no
  longer names tooling.
- Beginner: corrects three lines naming tooling the level does not use, screen
  readers to Playwright, axe DevTools to axe-core, Next.js to Vite. Story,
  objectives and Lighthouse figure unchanged, implementation untouched.
- docs/beginner.yaml gains topics, contributor and meta_description with no
  existing line modified.

Signed-off-by: sindurigf <sinduri.g@gmail.com>
@sindurigf sindurigf changed the title Adventure Idea: define intermediate and expert levels for The Accessi… Adventure Idea: define intermediate and expert levels for The Accessibility Nightmare Sep 4, 2026
KatharinaSick
KatharinaSick previously approved these changes Sep 7, 2026

@KatharinaSick KatharinaSick left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A bit of context: Sinduri will be implementing intermediate & expert of this adventure :)

… the answer

- Story gives the symptom only. It previously described the keyboard cycling,
  which handed the player the diagnosis the level exists to reach.
- Objectives return to the original three, multi-step flows, production
  monitoring and a compliance report, with catching the barrier as the middle
  beat. Drops the pre-render objective, which reveals nothing once the homepage
  is already clean.
- Records that the vendor widget must be a same-document script, never an
  iframe. Focus and key events do not cross an iframe boundary, so a page-level
  beacon cannot observe the trap through one. Verified by spike.
- Adds the schedule gap: a gate only ever checks the widget as of the last
  build, and the vendor can ship on a day when nobody pushes.
- index.yaml overview now names all four layers, lint, scan, drive, observe,
  and what each one reaches.

Signed-off-by: sindurigf <sinduri.g@gmail.com>
@sinduri-g
sinduri-g merged commit 9878bf7 into off-on-dev:main Sep 7, 2026
1 check passed
@sindurigf
sindurigf deleted the idea/accessibility-nightmare-intermediate-expert branch September 7, 2026 09:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants