agentsclimarketplace

Test

Skill kriscard/Skills/skills/dev/test

A opinionated collection of agent skills organized by domain: dev, writing, productivity, and knowledge management

Install
npx -y skills add kriscard/Skills --skill test

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 12 stars12 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Applies test-pyramid, red-green-refactor, and behavioral testing practices for common JS/Python/Ruby stacks and other projects after detecting the runner. Use when the user says "write tests", "add tests", "TDD", "test coverage", "this test is failing", or mentions Jest/Vitest/pytest/RSpec/Playwright/ Cypress. Also use when a feature is implemented without tests.

SKILL.md

6.3 KB, as published. Nobody here has run it

Test

Pick the Right Layer First

Writing tests at the wrong layer is the most common testing mistake. A unit test that mocks everything doesn't catch integration bugs; an E2E test for a pure function is slow and fragile.

LayerWhat it testsSpeedWhen to use
UnitPure functions, isolated logic~msBusiness logic, utilities, transformations
IntegrationService boundaries, DB queries, API contracts~secondsRepository layer, HTTP handlers, queue consumers
E2EUser flows in a real browser~minutesCritical paths only (checkout, auth, onboarding)

The pyramid holds: many units, fewer integrations, minimal E2E. Done only when the selected layer is named and justified.

Detect the Framework

Check before choosing:

cat package.json | grep -E '"jest"|"vitest"|"mocha"|"jasmine"'
cat pyproject.toml | grep -E 'pytest|unittest'
cat Gemfile | grep rspec

Don't assume Jest. Vitest is increasingly common in Vite/Next.js projects. Mixing test runners in a project is rarely intentional. For unfamiliar stacks, inspect project config and docs before writing tests.

Universal Quality Checks

  • Tests cover error paths and edge cases, not just the happy path
  • Tests verify behavior, not implementation — if you rename a private method, tests shouldn't break
  • Mocks are used sparingly — over-mocking makes tests pass while real code breaks
  • Test names read like specs: should return 404 when user is not found beats test user endpoint
  • AAA pattern: Arrange → Act → Assert, with a blank line between sections

Red-Green-Refactor Flow (when requested)

  1. Red — write a failing behavioral test that describes the desired behavior; done only when the relevant test command fails for the expected reason
  2. Green — write the minimal code to make it pass; done only when the same command passes
  3. Refactor — clean up while keeping tests green; done only when the command still passes after cleanup

Integration Test Methodology

Integration tests validate service boundaries — not business logic (that's unit tests) and not full user flows (that's E2E).

What to test at this layer:

  • API endpoints: request/response structure, auth, error codes
  • Database queries: ORM behavior, transactions, constraint violations
  • Service-to-service contracts (Pact consumer-driven contract tests)
  • Message queue consumers and event handlers

Data isolation — non-negotiable:

  • Wrap each test in a transaction and roll back, or reset the test DB between runs
  • Tests that share state cause order-dependent failures — the hardest class of flakiness to debug
  • Mock third-party APIs, not your own services

Load references for runner-specific APIs, mocks, environments, MSW, Browser Mode, snapshots, type testing, coverage, and configuration.

E2E Test Methodology

E2E tests are expensive. Use them only for critical paths: checkout, auth, onboarding, file upload. Prefer accessible selectors, smart waits, unique test data, and cleanup via API or DB reset. Cover edge cases in unit/integration tests, not E2E.

Common Pitfalls

  • Testing the mock, not the code — if the test only asserts a mock was called, it may not test behavior
  • Fragile E2E selectors — use roles or stable test IDs instead of layout selectors
  • No cleanup in integration tests — shared DB state causes order-dependent failures
  • Snapshot tests as a crutch — use snapshots only for stable, serializable outputs

Completion Gate

Complete test work only after:

  • the selected layer is named
  • the relevant test command has been run
  • failures are either fixed or reported with evidence
  • new tests would fail against the old behavior when that can be checked
  • red/green command output is reported for TDD work

References

PriorityLoad whenReference
1 — HighWriting Vitest test blocks, test.each, or test modifiersreferences/core-test-api.md
1 — HighWriting Vitest assertions, spies, soft assertions, or custom matchersreferences/core-expect.md
1 — HighMocking modules, timers, globals, or partial implementations in Vitestreferences/features-mocking.md
2 — HighConfiguring Vitest projects, pools, environments, globals, or defineConfigreferences/core-config.md
2 — HighUsing Vitest hooks such as beforeEach, afterEach, beforeAll, afterAll, aroundEach, or onTestFinishedreferences/core-hooks.md
3 — MediumCoverage providers, thresholds, reporters, or ignore commentsreferences/features-coverage.md
3 — MediumReal browser testing via Vitest Browser Mode / Playwright providerreferences/browser-mode.md
3 — MediumSnapshots, inline snapshots, custom serializers, or updating snapshotsreferences/features-snapshots.md
3 — MediumCLI filtering, --changed, tags, test.only, or test.skipreferences/features-filtering.md
4 — LowNested suites, describe.concurrent, or describe.eachreferences/core-describe.md
4 — LowVitest CLI watch mode, sharding, or package.json scriptsreferences/core-cli.md
4 — Lowtest.concurrent, file parallelism, sequence, or shufflereferences/features-concurrency.md
4 — Lowtest.extend, fixture scopes, or auto fixturesreferences/features-context.md
4 — Lowjsdom vs happy-dom vs node, custom environments, or CSS handlingreferences/advanced-environments.md
4 — LowexpectTypeOf, assertType, .test-d.ts, or vitest typecheckreferences/advanced-type-testing.md
4 — LowFake timers, vi.waitFor, or vi.mocked deep divereferences/advanced-vi.md
4 — LowMonorepo or multi-project Vitest setupsreferences/advanced-projects.md
4 — LowMSW v2 http.*/HttpResponse handlers, Node setup, or v1→v2 migrationreferences/msw-v2.md

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.