# `mix excessibility`
[🔗](https://github.com/lessthanseventy/excessibility/blob/v0.18.1/lib/mix/tasks/excessibility.ex#L1)

Runs axe-core accessibility checks on HTML snapshots.

## Usage

With no arguments, checks ALL existing snapshots:

    mix excessibility

With arguments, runs tests first then checks NEW snapshots only:

    # Run a test file
    mix excessibility test/my_app_web/live/page_live_test.exs

    # Run a specific test by line number
    mix excessibility test/my_app_web/live/page_live_test.exs:42

    # Run tests with a tag
    mix excessibility --only a11y

    # Run a describe block
    mix excessibility test/my_test.exs:10

    # Scan each snapshot at several widths (WCAG 1.4.10 Reflow only
    # shows up at narrow viewports)
    mix excessibility --viewports 1440x900,320x800

    # Also flag interactive elements that are mostly outside the
    # visible area, and page-level horizontal overflow
    mix excessibility --viewports 1440x900,320x800 --check-clipping

## Configuration

- `:axe_disable_rules` - List of axe rule IDs to disable (default: `[]`)
- `:viewports` - List of `{width, height}` tuples to scan each snapshot
  at (default: single 1280x720 scan). Equivalent to the `--viewports`
  flag; the flag wins when both are given.
- `:check_clipping` - Flag interactive elements whose visible width falls
  below `:clipping_ratio`, plus page-level horizontal overflow (default:
  `false`). Equivalent to the `--check-clipping` flag.
- `:clipping_ratio` - Minimum visible-width ratio before an element counts
  as clipped (default: `0.9`)
- `:excessibility_output_path` - Base directory for snapshots (default: `"test/excessibility"`)
- `:cross_snapshot_enabled?` - Diff consecutive snapshots of the same test
  to flag content that changed without an `aria-live` region (default:
  `true`). Only fires on snapshots that carry capture metadata.

## Prerequisites

Run `mix excessibility.install` first to install axe-core and Playwright via npm.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
