Accessibility

Accessibility at Pulse

Pulse's dashboard is a web app, and this is what its code, its tests, and an axe-core scan run for this site show today. It has a skip link, landmarks, labeled controls, and an automated axe test that passes in jsdom. The same axe-core run in a real browser on every captured view finds serious color-contrast failures (white text on the app's violet accent, 2.9 to 1) and a labeling failure on clickable breakdown rows. It has not been tested with a screen reader. We do not claim a conformance level for the app, and the app's README claim of WCAG 2.1 AA is not one this site repeats.

Illustration: a quiet public reading room in soft light, with a wide level entrance, a low service counter, and clear open aisles between the shelves.
The product

What Pulse supports today

Each line says what the product does, how we know, and where to look. “Not yet tested” means exactly that: we have not checked, and we do not claim it.

  • Partly supported

    Keyboard operation

    Every page starts with a "Skip to main content" link, the site switcher is a labeled select, the navigation items are links, and each clickable row in a breakdown is a button that takes Tab focus and answers Enter and Space. The date range and tab controls are buttons. Nobody has walked every flow with only a keyboard, and the heatmap canvas and charts have no keyboard equivalent.

    Evidence

    • frontend/src/components/layout/Layout.tsx: the skip link to #main-content
    • frontend/src/components/charts/BarBreakdown.tsx: role button, tabIndex 0, Enter and Space open the filter
    • No keyboard-only walkthrough of the app is on record.
  • Partly supported

    Screen reader landmarks and labels

    Controls carry labels, and the site's own pages have landmarks. An automated vitest-axe test passes on the app and eight routes in jsdom. The browser axe run found two structural gaps: the pages open with a second-level heading and no first-level one, and the clickable breakdown rows have a label ("Filter by /") that does not contain the text shown. Pulse has not been tested with VoiceOver, NVDA, or JAWS, whatever the app's README says.

    Evidence

    • frontend/src/__tests__/accessibility.test.tsx: vitest-axe on the app and on eight routes (passing on 10/29/2026)
    • axe-core in a real browser on 13 captured views in light and dark, 10/29/2026: page-has-heading-one on 13 views and label-content-name-mismatch on 3
    • No screen-reader run is on record.
  • Not supported

    Contrast in light and dark

    The app's violet accent behind white text, used for primary buttons and the active date range, measures 2.9 to 1, below the 4.5 to 1 that WCAG AA asks for. axe-core reported color-contrast failures on all 13 captured views, in light and in dark, 325 elements in all. Most of the rest of the palette comes from the Renkara design system and was not measured on its own.

    Evidence

    • axe-core color-contrast rule, real browser, 13 views in light and dark, 10/29/2026: serious, 325 elements; the first is white on the accent at 2.92 to 1
    • frontend/src/index.css: --brand-accent 280 70% 57% light, 280 70% 69% dark
  • Partly supported

    Reduced motion

    The design system's global stylesheet shortens animations and transitions to almost nothing when the system asks for reduced motion. The Realtime page's counter pulse is drawn with an animation library, and nobody has confirmed in a browser with the setting on that it stops.

    Evidence

    • node_modules/@renkara/design-system/dist/tokens.css: a prefers-reduced-motion block
    • frontend/src/pages/Realtime.tsx: the counter glow uses framer-motion; not checked with reduced motion turned on
  • Not yet tested

    Text resize and zoom

    Nobody has tested Pulse at larger text sizes or browser zoom. Several labels are set in small fixed sizes (11 to 13 pixels), so large text may crowd them.

  • Not yet tested

    Mobile and touch

    Nobody has run the dashboard at 375 pixels. Reading the code, the left navigation is hidden below 768 pixels and the top bar is given no menu items for a site's pages, so on a phone there may be no way to move between Dashboard, Realtime, Goals, and the rest. That is unverified in a browser.

No WCAG conformance level is claimed for the Pulse dashboard. Two automated checks exist: a vitest-axe test in jsdom on the app and eight routes (passing, but jsdom cannot compute color contrast), and an axe-core run in a real browser against the 13 views captured for this site, in light and dark (26 states, 10/29/2026), which found serious violations in every view. No keyboard-only walkthrough and no screen-reader test is on record. This site's own pages are scanned by the kit's axe-core run at 375 and 1440 pixels in light and dark.

Product notes

More about Pulse

What the tracked sites’ visitors get

The accessibility of the dashboard is one question. The other is what Pulse does to the pages it counts, and there the answer is short: the script adds no visible interface, no pop-up, and no consent banner, and it sets no cookie.

It does listen to clicks and scrolling to count them (heatmaps are off until a site turns them on), and it never reads what a visitor types.

Known gaps

What does not work yet

  • White text on the violet accent is 2.9 to 1 (primary buttons, the active date range), and axe-core reports contrast failures on all 13 captured views.
  • Pages open at a second-level heading with no first-level heading, and clickable breakdown rows are labeled with text that does not contain what they show.
  • No screen-reader test and no keyboard-only walkthrough is on record, and the app's README claims of VoiceOver, NVDA, and JAWS testing and of WCAG 2.1 AA are unsupported.
  • Larger text sizes and the Increase Contrast setting are untested, and the dashboard was not run on a phone; its left navigation looks hidden there.
  • The charts and the heatmap have text summaries only in the tables beside them, not in an alternative description.
This website

How this site is built and checked

This site targets WCAG 2.2 level AA. That is a target we build and test toward, not a certification, and no one has audited it for conformance.

  • Structure

    A skip link, labeled landmarks (header, navigation, main, footer), one h1 per page, and headings that do not skip levels.

  • Keyboard and focus

    Links and buttons are native elements, so they work from the keyboard. Focus is drawn as a visible ring, and the menu closes with Escape.

  • Contrast

    Text meets 4.5 to 1 in both the light and dark themes, checked against the stylesheet by the test suite.

  • Motion

    Transitions and animation switch off when your system asks for reduced motion.

  • Small screens and zoom

    Layouts hold at 375 pixels wide with no sideways scrolling, text resizes with the browser, and touch targets are at least 44 pixels.

  • Automated scan

    Every page is scanned with axe-core at 375 and 1440 pixels in light and dark, and the checks fail on any serious or critical violation. Automated tools find only part of the problems, so this is a floor, not proof.

  • Images

    Every product screenshot has a text description and comes in a light and a dark version that follows your theme.

  • Your theme choice

    The theme follows your system setting until you pick one with the button in the header.

Feedback

Tell us what is in your way

If something here or in Pulse does not work for you, write to Renkara Media Group. Say what you were doing, what you used, and what happened, and a person will answer.

Statement last reviewed 10/29/2026.