npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

snap-ally

v1.0.1

Published

A custom Playwright reporter for Accessibility testing using Axe, with HTML reporting and Azure DevOps integration.

Readme

snap-ally 📸♿

npm version License: MIT ko-fi

A powerful, developer-friendly Playwright reporter for Accessibility testing using Axe-core. Beyond just reporting, it provides visual evidence to help developers fix accessibility issues faster.


🤔 Why the name "Snap-Ally"?

  • Snap: Like a snapshot, it provides an instant picture of a website's accessibility state at the moment the tests are executed.
  • Ally: It resembles a11y (the abbreviation for accessibility) and serves as an ally that allows you to create bugs in Azure DevOps more easily.

💡 Motivation

I have seen closely how much people with disabilities struggle with something as fundamental as finding a job.

I believe that with relatively simple changes in HTML, good color contrast, among other things, systems should work and help all people equally. Since about 15% of the world's population lives with some form of disability.


📺 Demo

▶️ Watch the Demo Video


✨ Features

  • Beautiful HTML Reporting: Comprehensive summary and detail pages.
  • Visual Overlays: Highlights violations directly on the page in screenshots.
  • Automated Bug Preview: Generates bug-like reports for each violation with clear technical details.
  • Azure DevOps (ADO) Integration: Link directly to your ADO project to create/manage accessibility bugs.
  • Video & Screenshots: Automatically captures and attaches video/screenshots of the failing state.
  • Configurable Axe Rules: Enable/Disable specific rules or filter by WCAG tags.

🚀 Installation

npm install snap-ally --save-dev

🛠️ Setup

Add snap-ally to your playwright.config.ts:

import { defineConfig } from '@playwright/test';

export default defineConfig({
    reporter: [
        [
            'snap-ally',
            {
                outputFolder: 'a11y-report',
                // Optional: Visual Customization
                colors: {
                    critical: '#b91c1c',
                    serious: '#c2410c',
                    moderate: '#a16207',
                    minor: '#1e40af',
                },
                verbose: true,      // Show in terminal
                consoleLog: true,   // Show in browser console
                // Optional: Azure DevOps Integration
                ado: {
                    organization: 'your-org',
                    project: 'your-project',
                    areaPath: 'your-project\\your-team', // Optional: Define where bugs should be created
                },
            },
        ],
    ],
});

📖 Usage

Import and use checkAccessibility within your Playwright tests:

import { test } from '@playwright/test';
import { checkAccessibility } from 'snap-ally';

test('verify page accessibility', async ({ page }, testInfo) => {
    await page.goto('https://example.com');

    // Basic scan
    await checkAccessibility(page, testInfo);

    // Advanced scan with configuration
    await checkAccessibility(page, testInfo, {
        verbose: true, // Log results to terminal
        consoleLog: true, // Log results to browser console
        pageKey: 'Homepage', // Custom name for the report file
        tags: ['wcag2a', 'wcag2aa'],
        rules: {
            'color-contrast': { enabled: false },
        },
    });
});

⚙️ Configuration Options

Reporter Options (in playwright.config.ts)

| Option | Type | Description | | ------------------ | -------- | --------------------------------------------------------------- | | outputFolder | string | Where to save the reports. Defaults to steps-report. | | colors | object | Customize severity colors (critical, serious, moderate, minor). | | verbose | boolean | Default: true. Show violations in terminal. | | consoleLog | boolean | Default: true. Show violations in browser console. | | ado | object | Azure DevOps configuration for deep linking. | | ado.organization | string | Your Azure DevOps organization name. | | ado.project | string | Your Azure DevOps project name. | | ado.areaPath | string | Optional: The Area Path where bugs should be created. |

checkAccessibility Options

| Option | Type | Description | | ------------ | ---------- | -------------------------------------------------------------------------- | | include | string | CSS selector to limit the scan to a specific element. | | verbose | boolean | Terminal Logs: Print violations to terminal. Defaults to true. | | consoleLog | boolean | Browser Logs: Print violations to browser console. Defaults to true. | | rules | object | Axe-core rule configuration. | | tags | string[] | List of Axe-core tags to run (e.g., ['wcag2aa']). | | pageKey | string | Custom identifier for the report file name. |


🛡️ License

This project is licensed under the MIT License - see the LICENSE file for details.


⚠️ Known Limitations

Automated accessibility testing with Axe-core detects approximately 30–40% of WCAG violations — those that are deterministic and can be evaluated programmatically, such as:

  • Missing alt text on images
  • Insufficient color contrast
  • Missing form labels
  • Empty buttons or links
  • Missing ARIA roles and attributes

The remaining ~60–70% require manual testing, including:

  • Keyboard-only navigation walkthroughs
  • Screen reader testing (NVDA, VoiceOver, JAWS)
  • Cognitive load and reading flow evaluation
  • User testing with people with disabilities

snap-ally automates the "easy wins" in your CI/CD pipeline so your team can focus manual effort on the complex interactions that tools cannot evaluate.


🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.