Accessibility Issue: Missing Main Landmark
WCAG Level: A
Severity: Medium
Category: Semantic HTML
Issue Description
The application's main content area lacks a <main> landmark element or role="main" attribute. Screen reader users rely on landmarks to quickly navigate to different sections of a page.
User Impact
- Affected Users: Screen reader users
- Severity: Users cannot quickly jump to the main content area using landmark navigation
Violations Found
File: src/app/app.component.html
Lines: 24-28
<mat-sidenav-content #sideNavContent [perfectScrollbar]>
<div class="inner-sidenav-content" fxLayout="column" fxFlex="100" fxLayoutAlign="start stretch">
<router-outlet #outlet="outlet" />
</div>
</mat-sidenav-content>
Issue: The main content area is wrapped in <mat-sidenav-content> and a generic <div>, but neither has role="main" or uses the <main> element.
Recommended Fix
<mat-sidenav-content #sideNavContent [perfectScrollbar]>
<main id="main-content" class="inner-sidenav-content" fxLayout="column" fxFlex="100" fxLayoutAlign="start stretch">
<router-outlet #outlet="outlet" />
</main>
</mat-sidenav-content>
Or if Angular Material conflicts with semantic elements:
<mat-sidenav-content #sideNavContent [perfectScrollbar]>
<div role="main" id="main-content" class="inner-sidenav-content" fxLayout="column" fxFlex="100" fxLayoutAlign="start stretch">
<router-outlet #outlet="outlet" />
</div>
</mat-sidenav-content>
Changes Made:
- Replace
<div> with <main> element for main content
- Add
id="main-content" for skip link target
- Alternative: add
role="main" if <main> element causes styling issues
Testing Instructions
- Use screen reader (NVDA/VoiceOver) to navigate by landmarks
- Verify main content landmark is announced
- Use landmark navigation shortcut (NVDA: D, VoiceOver: Web Rotor)
- Confirm only one main landmark exists on each page
Resources
Acceptance Criteria
Accessibility Issue: Missing Main Landmark
WCAG Level: A
Severity: Medium
Category: Semantic HTML
Issue Description
The application's main content area lacks a
<main>landmark element orrole="main"attribute. Screen reader users rely on landmarks to quickly navigate to different sections of a page.User Impact
Violations Found
File:
src/app/app.component.htmlLines: 24-28
Issue: The main content area is wrapped in
<mat-sidenav-content>and a generic<div>, but neither hasrole="main"or uses the<main>element.Recommended Fix
Or if Angular Material conflicts with semantic elements:
Changes Made:
<div>with<main>element for main contentid="main-content"for skip link targetrole="main"if<main>element causes styling issuesTesting Instructions
Resources
Acceptance Criteria
<main>element or hasrole="main"