Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>Bumi - Accessibility Linter (WCAG/a11y)New to Visual Studio Code? Get it now.
Bumi - Accessibility Linter (WCAG/a11y)

Bumi - Accessibility Linter (WCAG/a11y)

Flat Electronics Canada Limited

|
6 installs
| (0) | Free
Accessibility linter for React, Vue, Angular & HTML. Catch a11y issues while coding with WCAG 2.2 diagnostics, quick fixes, and detailed rationale.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Bumi - Accessibility Linter (WCAG/a11y)

Accessibility linter for React, Vue, Angular & HTML. Catch a11y issues while coding with WCAG 2.2 diagnostics, quick fixes, and detailed rationale.

Developed by: Flat Electronics Canada Limited
Website: bumi.ca

Features

Real-time Accessibility Diagnostics

Get instant feedback on accessibility issues directly in your editor:

  • Squiggly underlines highlight potential issues
  • Color-coded by severity (Critical, Serious, Moderate, Minor)
  • Issues appear in the Problems panel
  • Supports React (JSX/TSX), Vue, Angular, HTML, and Razor

Quick Fixes

One-click fixes for common accessibility issues:

  • Add missing alt attributes to images
  • Add aria-label to buttons and links
  • Add keyboard accessibility attributes
  • Fix role and tabindex issues

Rich Hover Tooltips

Hover over any issue to see:

  • What is checked
  • Why it matters
  • Who is affected
  • Limitations of the check
  • Manual verification steps

Rule Explorer

Browse all 18 accessibility rules in the sidebar:

  • Search by ID, title, or WCAG criterion
  • Filter by framework, severity, or WCAG principle
  • View detailed rule documentation

Report Export

Export accessibility reports for documentation:

  • JSON format for CI/CD integration
  • HTML format with accessible formatting

Supported File Types

Framework Extensions
React .jsx, .tsx
Vue .vue
Angular .html (with Angular syntax)
HTML .html, .htm
Razor .cshtml, .razor

Baseline Rules (18)

Rule ID Description Severity
IMG_MISSING_ALT Image missing alt attribute Critical
IMG_SUSPICIOUS_ALT Suspicious alt text detected Moderate
BUTTON_NO_NAME Button missing accessible name Critical
LINK_NO_NAME Link missing accessible name Critical
FORM_CONTROL_NO_LABEL Form control missing label Critical
LABEL_FOR_MISMATCH Label for attribute mismatch Serious
DUPLICATE_ID Duplicate ID detected Serious
ARIA_INVALID_ATTR Invalid ARIA attribute Serious
ARIA_INVALID_ROLE Invalid ARIA role Serious
ARIA_REQUIRED_ATTR_MISSING Required ARIA attribute missing Serious
INTERACTIVE_NON_INTERACTIVE Non-interactive element has click handler Serious
MISSING_LANG_ATTR Missing lang attribute on html Serious
HEADING_NO_H1 Page may be missing H1 Moderate
HEADING_SKIP_LEVEL Heading level skipped Moderate
INPUT_PLACEHOLDER_AS_LABEL Placeholder used as label Serious
ONCLICK_NO_KEYBOARD_EQUIV Click handler may lack keyboard equivalent Moderate
FOCUSABLE_HIDDEN Focusable element hidden from AT Serious
ROLE_ON_NON_INTERACTIVE Interactive role on non-interactive element Serious

Commands

Command Description
Bumi: Scan Current File Run accessibility scan on active file
Bumi: Scan Workspace Scan all supported files in workspace
Bumi: Fix Safe Issues in Current File Apply safe quick fixes
Bumi: Open Rule Explorer Open the Rule Explorer sidebar
Bumi: Toggle Auto-Scan on Save Enable/disable automatic scanning
Bumi: Export Report (JSON) Export accessibility report as JSON
Bumi: Export Report (HTML) Export accessible HTML report

Settings

Setting Default Description
bumi.enabled true Enable/disable the extension
bumi.scan.onSave true Scan files automatically on save
bumi.scan.onType false Scan files as you type
bumi.scan.debounceMs 400 Debounce delay for on-type scanning
bumi.wcag.version 2.2 WCAG version (2.0, 2.1, 2.2)
bumi.wcag.level AA Conformance level (A, AA, AAA)
bumi.rules.disabled [] List of rule IDs to disable
bumi.severityOverrides {} Override severity for specific rules
bumi.frameworks.react true Enable React/JSX support
bumi.frameworks.vue true Enable Vue support
bumi.frameworks.angular true Enable Angular support
bumi.frameworks.html true Enable HTML support
bumi.frameworks.razor true Enable Razor support

Configuration File

Create bumi.config.json in your project root for project-specific settings:

{
  "rules": {
    "disabled": ["HEADING_NO_H1"],
    "severityOverrides": {
      "IMG_SUSPICIOUS_ALT": "minor"
    }
  },
  "ignore": ["dist/**", "build/**"],
  "customComponents": {
    "buttons": ["CustomButton", "IconButton"],
    "links": ["NavLink", "RouterLink"]
  }
}

Privacy & Principles

  • Local-first: All scanning happens on your machine. No code is sent externally.
  • Explainable: Every diagnostic includes WCAG mapping, rationale, and limitations.
  • Conservative fixes: Quick fixes are safe and reversible.
  • Fast: Designed for instant feedback on save.
  • Non-absolute language: We use "may help identify" and "potential issue" rather than claiming guaranteed compliance.

Important Disclaimer

This extension is designed to assist developers in identifying potential accessibility issues during development. Automated accessibility testing may help identify approximately 30% of accessibility issues. Manual testing with assistive technologies is recommended for comprehensive accessibility evaluation.

This tool does not guarantee WCAG conformance. Consult with qualified accessibility professionals for complete assessments.

Publishing to VS Code Marketplace

Prerequisites

  1. Create a Microsoft Account at https://account.microsoft.com
  2. Create an Azure DevOps Organization at https://dev.azure.com
  3. Generate a Personal Access Token (PAT):
    • Go to Azure DevOps > User Settings > Personal Access Tokens
    • Create new token with:
      • Organization: All accessible organizations
      • Scopes: Marketplace > Manage
    • Copy and save the token securely

Publishing Steps

  1. Install vsce (VS Code Extension Manager):

    npm install -g @vscode/vsce
    
  2. Create a Publisher:

    vsce create-publisher flat-electronics-canada
    

    Follow the prompts and enter your PAT when asked.

  3. Login to your Publisher:

    vsce login flat-electronics-canada
    
  4. Build the Extension:

    cd vscode-extension
    npm install
    npm run compile
    
  5. Package the Extension:

    vsce package
    

    This creates a .vsix file.

  6. Publish to Marketplace:

    vsce publish
    

Alternative: Manual Upload

  1. Go to https://marketplace.visualstudio.com/manage
  2. Sign in with your Microsoft account
  3. Click "New Extension" > "Visual Studio Code"
  4. Upload the .vsix file

Version Updates

To publish updates:

  1. Update version in package.json
  2. Run vsce publish minor (or major/patch)

Or specify exact version:

vsce publish 1.0.1

License

MIT License

Copyright (c) 2024 Flat Electronics Canada Limited


Made in Canada 🍁

For support, contact: support@bumi.ca

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft