Skip to content

Local Plugin Testing

The agentic-acss-plugins repo ships three complementary test paths under tests/. Which ones you must run depends on what you changed:

  • tests/run.sh — required on every PR.
  • tests/e2e.sh — required when you change component generation, theming, or any skill that emits TSX/SCSS.
  • tests/setup.sh sandbox — required for at least one manual run when you change a slash command or a skill’s user-facing flow.

The e2e and sandbox flows are conditional requirements, not optional extras — skipping them on a relevant change is what the pre-submit checklist is checking for.

ScriptTimeWhat it coversWhen to run
tests/run.sh~30 sTSX syntax, SCSS var() fallbacks, theme contrast, manifest integrityEvery PR
tests/e2e.sh~2–4 minTS type-check, SCSS compile, jsdom render, axe-core a11yWhen changing component or theme generation
tests/setup.shone-timeSandbox project for interactive /kit-add, /theme-create, etc.Manual smoke testing

The default check. Catches “banned imports, malformed TSX, missing var() fallbacks, theme contrast regressions, manifest/structure drift” without launching a browser.

Terminal window
npm --prefix tests ci
pip3 install --user tinycss2
tests/run.sh

run.sh excludes the component-form skill, which still requires manual verification.

Required for any PR that touches component generation, theming, or skills that emit code. Deeper checks for generated artefacts:

  • Type-checks extracted components against React types
  • Compiles SCSS
  • Renders components into HTML via jsdom
  • Runs axe-core to fail on serious or critical accessibility violations
Terminal window
npm --prefix tests ci
tests/e2e.sh

Creates tests/sandbox/ — a minimal React + TypeScript project — so you can exercise the slash commands the way a real user would.

Terminal window
tests/setup.sh
cd tests/sandbox
claude --plugin-dir ../../plugins/acss-kit

Inside the sandbox session you can run /setup, /kit-add button card, /theme-create "#4f46e5", and so on. The --plugin-dir flag bypasses the marketplace and picks up local edits on every invocation, which makes for fast iteration.

Before opening a PR:

  1. tests/run.sh passes.
  2. If you touched component generation or theming → tests/e2e.sh passes.
  3. If you touched a slash command → exercise it once in the sandbox.
  4. plugin.json version bumped (only there — never in marketplace.json).
  5. CHANGELOG entries updated for both the affected plugin and the repo root.
  6. fpkit/acss cross-references use full GitHub URLs pinned to a tag or SHA — never blob/main.