WCAG Accessibility Audit Report
Executive Summary
This report summarises an accessibility audit of all 17 pages across Punit Ganjara's interactive e-learning portfolio. Each page was tested in both light and dark theme modes using Google Lighthouse.
- 16 pages pass with Lighthouse 100/100/100 in both themes after twelve fix rounds.
- 1 page (Learning Analytics Dashboard) is an external Veracity LRS redirect — cannot be audited, not a code issue.
- New — Lexiplane 3D Word Hunt (wordgame/text_plane_3d.html) added 13 Aug 2026: passes both themes. Fixes applied during integration — name input bound to an accessible label, overlay marked
role="dialog" aria-modal="true", decorative demo plane setaria-hiddenwithprefers-reduced-motionsupport, and new-tab links carry(opens in new tab)accessible names. Note: the gameplay grid is pointer-driven and not yet fully keyboard-operable (tracked as a known limitation). - Fix rounds completed 6–29 June 2026: Colour contrast fixes (tag badges, dark mode nav, IELTS blue→yellow), heading-order corrections on 4 pages, meta descriptions on 6 pages, high-contrast yellow (#fbbf24) dark-mode treatment across all pages, responsive About Me section fix, Adapt Framework Mini Course accessibility audit with modal focus trap, Escape key, and ARIA attributes, plus SCORM course accessibility fixes.
Per-Page Results
| Page | ☀️ Light | 🌙 Dark | Status |
|---|---|---|---|
| Main Portfolio (index.html) | 100 | 100 | Pass |
| Lexiplane 3D Word Hunt (wordgame) | 100 | 100 | Pass |
| H5P Interactive Timeline | 100 | 100 | Pass |
| Customer Service De-Escalation | 100 | 100 | Pass |
| AI Ethics Training | 100 | 100 | Pass |
| Interactive Quiz (H5P) | 100 | 100 | Pass |
| IELTS Speaking Masterclass | 100 | 100 | Pass |
| IELTS Portfolio Index | 100 | 100 | Pass |
| Design Samples | 100 | 100 | Pass |
| WCAG Accessibility Report | 100 | 100 | Pass |
| Children Psychology — Interactive Video | 100 | 100 | Pass |
| Adapt Framework Mini Course | 100 | 100 | Pass |
| LXD Design Frameworks & Evaluation | 100 | 100 | Pass |
| EFL Teaching Dilemmas (Adapt Framework) | 100 | 100 | Pass |
| Workplace Safety Compliance Training | 100 | 100 | Pass |
| Storyboarding Sample (storyboard.html) | 100 | 100 | Pass |
| Learning Analytics Dashboard | 84 | 84 | External |
Accessibility Issues
1. Missing <main> Landmark Resolved
Most portfolio pages were missing a <main> landmark element — a foundational WCAG
requirement that lets screen reader users jump directly to the primary content area.
This issue has been fully resolved across all portfolio pages.
Fixed in this round (6 pages): index.html, h5p.html, customer-service-mastery.html,
ai-ethics-training.html, ai-literacy/index.html, giving-constructive-feedback/index.html.
Also fixed a nested-<main> in data-privacy-compliance/index.html and added
lang="en" attributes to 3 pages.
2. Color Contrast Issues Resolved
All contrast issues have been fixed across 10 pages over 3 rounds:
index.html — tag badge accent changed from #b85c1a → #9a4a12
(4.61:1 AA), dark-mode --primary tightened from #6fa3e8 → #3d72c4
(4.63:1 AA), hero-label and filter-count overrides added;
customer-service-mastery.html — theme toggle icon colour updated;
ielts-masterclass — all blue text elements changed to #fbbf24 yellow in dark mode
(h1, h2, exam-header-strip, transcript-btn, recorder-info, back-btn);
wcag-report — --fail → #b91c1c (8.91:1),
--pass → #047857 (7.64:1),
section h3 and report-header h1 dark mode overrides added.
All WCAG 2.0 AA colour contrast requirements are now met.
3. Heading Order Resolved
ai-literacy/index.html and giving-constructive-feedback/index.html
have been fixed: <div class="course-title"> upgraded to <h1>,
<h4> labels downgraded to <h3>. Heading hierarchy is now
h1 → h2 → h3 with no skipped levels.
4. Link in Text Block Resolved
wcag-report/index.html: All links now have text-decoration: underline
by default, making them visually distinguishable from surrounding text by more than colour alone.
The wcag-audit-report.json link in the Methodology section now meets WCAG 1.4.1.
Learning Analytics Dashboard External (unfixable)
All issues originate from the embedded Veracity LRS dashboard (a third-party tool). These cannot be fixed from our end — the host page (theme toggle, back button, iframe container) passes all checks.
Unlabelled chart controls
Interactive chart elements are missing labels that screen readers rely on. Learners using assistive technology would find it difficult to understand what each part of the chart represents or how to navigate through the data.
Improper chart structure
Interactive chart components are not structured according to accessibility standards. Screen readers may announce chart elements in confusing ways or skip over data points entirely, making the dashboard hard to interpret for visually impaired learners.
Low contrast text
Some notification messages and timestamp labels use colours that blend into the background. Learners with low vision or colour blindness may struggle to read cookie notices and status updates in the dashboard.
Keyboard navigation conflicts
Some interactive elements are nested inside other interactive regions, creating confusion for learners who navigate by keyboard. Tabbing through the dashboard may skip expected elements or trap focus unexpectedly.
Notes
<main> landmarks to 7 pages (index.html, h5p.html,
customer-service-mastery.html, ai-ethics-training.html, ai-literacy/index.html,
giving-constructive-feedback/index.html, and this report page).
Fixed nested <main> in data-privacy-compliance/index.html. Added
lang="en" attributes to 3 pages. The <main> issue is now
fully resolved across all portfolio pages.
h4→h1+h3).
Added underline to all links for WCAG 1.4.1 compliance.
--primary from #5a92db to #3d72c4
(4.63:1 AA). Fixed .hero-label and .filter-tab.active .count
contrast in dark mode.
#fbbf24 yellow (13.2:1 AA). Fixed Interactive Quiz heading order
(h1→h2→h3) — scored 98→100. Fixed design-samples: iframe titles,
<main> landmark, and meta description (87→100).
Fixed wcag-report h1 contrast and missing meta description (95→100).
<meta name="description"> tags to all 6 pages that lacked them
(h5p.html, ielts-masterclass, interactive-quiz, ai-literacy, data-privacy-compliance,
giving-constructive-feedback). SEO score on all pages now 100.
- Added
role="dialog",aria-labelledby,aria-describedby, andaria-modal="true"to custom modal - Implemented focus trap (Tab cycles within modal when open)
- Added Escape key handler to close modal
- Added auto-focus to OK button when modal opens
- Added visible
:focus-visibleoutlines for back button and modal buttons - Fixed light theme CSS selectors to use
html.theme-light/html.theme-dark(matching Adapt Framework's actual theming mechanism) - Color contrast verified: Light 16.5:1, Dark 15.8:1 (both exceed AAA 7:1)
- All 5 images have descriptive alt text
- Responsive design verified across all breakpoints (desktop, tablet, mobile)
- Colour contrast verified in both light and dark themes — all ratios pass WCAG 2.1 AA (body text 15.2:1, headings 8.43:1, buttons 9.13:1)
- Noted
data-themevs CSStheme-darkclass mismatch — Adapt's internal theme toggle adds/removes CSS classes without updating the inlinedata-themeattribute, but no visual impact on accessibility - Identified
<button role="link">for View Course navigation — ideal fix would be<a>element, but functional for screen readers - Notification drawer colour (
#d0d0d0) persists in dark mode — visual inconsistency but 11.5:1 contrast ratio passes - All colour contrast ratios verified at AAA/AA thresholds — no blocking accessibility issues found
- Added
<main>landmark, skip link, andlang="en" - Added meta description for SEO and screen reader context
- Heading order verified:
h1 → h2with no skipped levels - All buttons have accessible names via
aria-label - All form inputs have associated
<label>elements - Colour contrast verified: body text
rgb(2,6,23)on whitergb(255,255,255)— exceeds AAA 7:1 - Focus indicators present via
:focus-visiblewith 3px primary outline - Granular xAPI tracking statements for every decision choice
- No images on page — decorative gradient strip replaces imagery
- Lighthouse 100/100/100 in both light and dark themes
.section-card-meta from #999 to #595959 for 7:1 ratio in both index.html and scorm.html), scrollable-region-focusable (added tabindex="0" to <nav id="sidebar"> in both HTML files), and aria-prohibited-attr (added role="img" to .checkmark-animated span in scorm.js). Also fixed static server in wcag-audit.mjs that failed to serve directory index.html files via statSync directory check.
Methodology
Each page was tested using Google Lighthouse in an automated browser session. Tests were run at desktop resolution (1280×720) on both light and dark themes, covering WCAG 2.0 Level A and AA, plus WCAG 2.1 Level A and AA accessibility success criteria.
- The theme was toggled before each test to ensure both modes were checked independently.
- Results show confirmed issues from the automated audit. Some items may also require manual review for full WCAG conformance.
- Scores are reported out of 100. A score below 90 indicates one or more accessibility violations.