Landmark

Accessibilitybeginner

// Definition

An ARIA region role (or native HTML5 element) that maps the major areas of a page — `banner`/`<header>`, `navigation`/`<nav>`, `main`/`<main>`, `contentinfo`/`<footer>`. Screen-reader users jump between landmarks to navigate a page structurally, the way a sighted user scans layout. Native semantic elements provide them implicitly.

// Why it matters

Landmarks are how screen-reader users skip the boilerplate and jump to content — without them, every visit means tabbing through the whole nav each time. QA cares because using one <main>, sensible <nav>s, and a <footer> is a low-effort, high-impact accessibility win that's easy to verify and easy to get wrong (multiple <main>s, missing landmarks).

// How to test

// Assert the page's structural landmarks exist and are singular where required
cy.get('main').should('have.length', 1)        // exactly one main
cy.get('nav, [role=navigation]').should('exist')
cy.get('header, [role=banner]').should('exist')
cy.injectAxe(); cy.checkA11y(null, { runOnly: ['cat.semantics'] })

// Common mistakes

  • No <main> (or several), so "skip to content" has nowhere to go
  • Everything in <div>s, giving screen readers no structural map
  • Duplicate landmarks with no aria-label to tell them apart

// Related terms