Common Accessibility Testing Issues Found in Web Applications
Hey there! If you've ever built or tested a web app, you know the thrill of seeing it come to life—smooth animations, slick forms, responsive design. But have you ever paused to think: Can everyone actually use this?
I remember my first real wake-up call during an accessibility audit. We had this beautiful dashboard with subtle gray text on white backgrounds. It looked modern and clean to me, but when I ran it through a screen reader and simulated low vision, it was basically invisible for some users. That moment shifted how I approach development forever.
Accessibility testing isn't just a checkbox for compliance—it's about real people. According to recent reports like the WebAIM Million (updated through 2025), over 96% of homepages still have detectable WCAG failures, with an average of 50+ errors per page. In web applications—think complex SPAs, forms, modals, dynamic content—the issues multiply because of JavaScript, custom components, and user interactions.
In this post, we'll dive into the most common accessibility testing issues I (and teams at SDETTech) see in real-world web apps. I'll share examples, why they matter, how they fail WCAG, and practical fixes. Let's make the web better together.
1. Insufficient Color Contrast – The Silent Barrier
This tops almost every list, including WebAIM's 2025 data where low contrast text appeared on ~79% of pages.
Why it happens: Designers love elegant palettes—light gray text (#AAAAAA) on white, or blue links on light backgrounds. It looks great on high-end monitors but fails for users with low vision, color blindness, or even in bright sunlight.
WCAG reference: 1.4.3 Contrast (Minimum) – Level AA requires 4.5:1 for normal text, 3:1 for large text.
Real-world example: A login form with placeholder text in #999 on white. Screen readers might read it, but users with reduced contrast can't distinguish it from the background.
How to fix it:
- Use tools like WebAIM Contrast Checker or browser extensions during design.
- Aim for 7:1 where possible for better readability.
- Don't rely on color alone—add underlines or icons for links.
- In code: Test dynamically generated themes in your app.
At SDETTech, we integrate contrast checks into our automated pipelines so devs catch this early.
2. Missing or Poor Alternative Text for Images
Another perennial offender—missing alt text on ~55% of pages per recent stats.
Why it matters: Screen readers announce images to blind users. Without alt text, they hear "image" or nothing, losing context. Decorative images need alt="", but meaningful ones (logos, charts, icons) need descriptive text.
Common pitfalls in web apps:
- Hero banners without alt.
- Icons in buttons (e.g., search magnifying glass) with no alt or aria-label.
- Charts/graphs without alt or longdesc.
Fixes:
- Always add alt: <img src="chart.png" alt="Sales growth: 15% increase in Q4 2025">
- For SVG icons: Use aria-label or title.
- Test with screen readers like NVDA or VoiceOver—does it make sense without the visual?
Pro tip: In React/Angular apps, enforce alt via lint rules (eslint-plugin-jsx-a11y).
3. Missing or Improper Form Labels and Inputs
Forms are everywhere in web apps—logins, searches, checkouts. Yet ~34-48% have unlabeled inputs.
The issue: Inputs without associated or aria-label confuse screen readers. Users hear "edit box" but no clue what to enter.
Examples:
- Placeholder-only fields (placeholders aren't labels!).
- Checkboxes/radios without labels.
- Dynamic forms where labels aren't programmatically linked.
Solutions:
- Use explicit labels: <label for="email">Email</label> <input id="email">
- Or implicit: <label>Email <input></label>
- ARIA backups: aria-labelledby for complex cases.
- Test: Tab through and listen—does the reader announce label + input?
Keyboard testing reveals this fast—more on that next.
4. Keyboard Navigation Problems – Traps and Invisible Focus
Many apps work fine with mouse but break for keyboard-only users (motor impairments, power users).
Common fails:
- No visible focus outline (or hidden via outline: none without replacement).
- Keyboard traps in modals (focus can't escape).
- Custom components (dropdowns, tabs) not handling Tab/Arrow keys.
- Focus order illogical (e.g., jumps around).
WCAG: 2.1.1 Keyboard, 2.4.7 Focus Visible (Level AA).
Fixes:
- Never remove outline without high-contrast replacement (e.g., box-shadow).
- For modals: Trap focus inside using JS (first/last element focus loops).
- Use semantic HTML: <button>, , role="tablist" etc.
- Manual test: Unplug mouse, tab through everything. Does focus follow logical order? Is it visible?
I once fixed a trap in a multi-step wizard—users were stuck in a date picker. Simple focus management saved the day.
5. Improper Use of ARIA and Semantic HTML
ARIA is powerful but often misused, creating more harm.
Issues:
- Redundant ARIA (role="button" on <button>).
- Missing roles on custom widgets (e.g., no role="dialog" on modals).
- aria-hidden on visible content.
- Overuse leading to screen reader noise.
Best practice: Use native HTML first (semantics are king). ARIA only when needed to bridge gaps.
Example fix: For a custom accordion: Use <button> for headers, aria-expanded, aria-controls.
Test with screen readers—does it announce states correctly?
6. Non-Descriptive Links and Buttons
"Click here," "Read more," "Submit"—empty link text.
Why bad: Screen readers list links out of context. Users hear "click here" 20 times, no idea where it goes.
WCAG: 2.4.4 Link Purpose (In Context) – Level AA.
Fixes:
- Descriptive: "Download our 2025 Annual Report PDF"
- For icons: Combine text + aria-label or screen-reader-only text.
7. Other Sneaky Ones in Web Apps
- Dynamic content: Live regions not announced (use aria-live="polite").
- Tables: No headers, complex tables without scope.
- Media: Videos without captions, audio without transcripts.
- Zoom/Responsive: Text doesn't reflow at 400% zoom (WCAG 1.4.4).
Integrating Accessibility Testing into Your SDLC – The SDETTech Way
Accessibility shouldn't be an afterthought. At SDETTech, we advocate "shift-left" — bake it in early.
How to do it:
- Planning/Requirements: Include WCAG 2.1/2.2 AA in user stories ("As a screen reader user, I can...").
- Design: Contrast checks, semantic wireframes.
- Development: Lint rules, axe-core in IDE.
- Testing: Automated (Lighthouse, axe in CI/CD), manual (keyboard + screen reader), user testing with disabled folks.
- Deployment/Maintenance: Regression checks, monitor user feedback.
Automate what you can—30-40% of issues (contrast, alt text, labels) catch in pipelines. Manual catches the rest.
Tools we love at SDETTech:
- axe DevTools / Lighthouse
- WAVE
- NVDA / VoiceOver
- Color contrast analyzers
Wrapping Up: Let's Build Inclusively
Accessibility testing reveals that the web still has a long way to go, but every fix counts. Start small—pick one issue from this list and audit your app today.
The payoff? Happier users, better SEO, reduced legal risk, and the satisfaction of knowing your work includes everyone.

