Skip to content
Back to skills

Qa Storybook

ASecurity

[Testing] Storybook visual regression: baselines, responsive breakpoints, state variations, Atomic Design.

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 20, 2026
testingtesting

Works with

  • mcp

Security analysis

A100/100

Pro scans all 6 files and shows the line behind each finding

Scanned October 5, 2026

npx -y skills add VirtoCommerce/vc-mcp-testing-module --skill qa-storybook --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Qa Storybook?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Qa Storybook
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/virtocommerce-qa-storybook/badge)](https://www.skillsdirectory.com/skills/virtocommerce-qa-storybook)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: qa-storybook
description: "[Testing] Storybook visual regression: baselines, responsive breakpoints, state variations, Atomic Design."
argument-hint: "component name | atoms | molecules | organisms | all"

---

# /qa-storybook — Storybook Component Testing

Test Storybook components for visual regression, responsive behavior, and state completeness. Delegates to **ui-ux-expert** agent with Chrome DevTools MCP.

## Usage
```
/qa-storybook Button               # Test a specific component
/qa-storybook atoms                 # Test all atom-tier components
/qa-storybook molecules             # Test all molecule-tier components
/qa-storybook organisms             # Test all organism-tier components
/qa-storybook all                   # Full visual regression run
```

## Supporting Files

- **tooling-stack.md** — SB 9 package map (`storybook/test`, `@storybook/addon-vitest`, a11y addon, Chromatic), determinism rules, CI gating, hosted-vs-dev caveat, boundary with `/qa-accessibility`. **Read first.**
- **play-function-patterns.md** — Canonical interaction-test patterns using `storybook/test` (`expect`, `userEvent`, `fn`, `step`); when `play` is the wrong tool.
- **how-to-test-storybook.md** — What to test per component (rendering, a11y, interactions, visual, composition, i18n, error boundaries); negative/edge scenarios.
- **visual-regression-testing.md** — Test case template for visual regression: baselines, state matrix, tool selection (Chromatic default, Playwright fallback), determinism rules.
- **responsive-component-testing.md** — Responsive testing across the DERIVED viewport sweep (`AUDIT_VIEWPORTS_PX` from `scripts/lib/design-tokens.generated.ts`, never a transcribed width list): layout adaptation, touch targets, text reflow, image scaling.

## Execution

1. **Resolve Storybook URL** from environment: `STORYBOOK_URL` (QA) or `STORYBOOK_DEV_URL` (dev)

2. **Identify target components:**
   - If component name: find matching stories in Storybook
   - If tier (atoms/molecules/organisms): test all components in that Atomic Design tier
   - Baselines captured on-demand and stored in test evidence directories

3. **Delegate to ui-ux-expert** via Task tool (`subagent_type: ui-ux-expert`):
   - Pass component name(s), Storybook URL, baseline directory
   - Agent uses Chrome DevTools MCP for screenshot capture
   - Agent reads supporting files from this skill folder for methodology

4. **For each component, test:**
   - All story variations (default, hover, focus, error, loading, disabled)
   - The derived viewport sweep (`AUDIT_VIEWPORTS_PX` — real ui-kit breakpoint edges, just-below, and fluid midpoints; see `responsive-component-testing.md` §Where the widths come from)
   - Compare against existing baselines if present
   - Flag pixel differences > threshold

5. **Output:**
   - Visual diff report with pass/fail per component/state/viewport
   - New baselines saved to test evidence directory (e.g., `reports/tickets/SprintXX-XX/VCST-XXXX/screenshots/`)
   - Summary: X components tested, Y passed, Z regressions found

## Rules
- Always capture all documented states, not just the default
- Use naming convention: `{story-name}-{viewport}.png`
- Baselines are captured on-demand — no persistent `storybook/` directory needed
- If no baseline exists, the first capture becomes the baseline
- Hosted Storybook is a **production build** — `import.meta.env.DEV === false`. Don't verify DEV-only warnings here (see `tooling-stack.md`).
- A11y assertions: on the **Coffee** and **Red** presets (the two WCAG-gated themes); visual diff still covers all themes. Select via `?globals=themePreset:red;darkMode:light` and confirm the preset applied (async import) before asserting.

## Boundary with `/qa-accessibility`
- `/qa-storybook` — a11y addon **inside stories** (component-isolated, axe rules per component).
- `/qa-accessibility` — full-page audits on storefront/admin (keyboard journeys, landmarks, page-level contrast).
- If a finding reproduces in a story, it belongs here. If it only appears once composed into a page, it belongs to `/qa-accessibility`.
- When you need a **programmatic** axe run on a rendered story (outside the addon — e.g. asserting against a specific story iframe), use the shared `axeRunSnippet()` + `classifyAxeResults()` from `scripts/lib/axe-runner.ts` so severity mapping and the "axe-unavailable ⇒ inconclusive, not clean" rule stay identical to `/qa-accessibility`. Visual pixel-diff stays with Chromatic / Playwright `toHaveScreenshot()` (the agent owns the "intentional change?" verdict); there is no JS-snippet differ.

Files in this skill

  • SKILL.md4.4 KB
  • how-to-test-storybook.md3.8 KB
  • play-function-patterns.md5.8 KB
  • responsive-component-testing.md2.3 KB
  • tooling-stack.md5.5 KB
  • visual-regression-testing.md3.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…