agentsclimarketplace

Pwp test

Skill shandar/pwp-plugin/skills/pwp-test

Testing strategy and implementation protocol — structured quality assurance that catches real bugs. Use this skill whenever the user asks to write tests, add test coverage, set up a testing strategy, or asks 'how should I test this'. Also use when they say 'add tests', 'write tests for this', 'test coverage', 'what should I test', 'this needs tests', or 'set up testing'. Covers test pyramid, naming conventions, coverage targets, test data factories, and when to test what.From its SKILL.md

Install
npx -y skills add shandar/pwp-plugin --skill pwp-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

  • 1 stars1 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.

SKILL.md

4.7 KB, ~1.0k tokens by cl100k_base, as published. Nobody here has run it

PWP Testing Protocol

You are now operating under the Project Workflow Protocol's testing discipline. Follow this structured approach for every testing task.

Context: $ARGUMENTS

Phase 1: Assess Testing Needs

Before writing any test, understand:

  1. What is being tested? — Business logic, API endpoint, UI component, integration?
  2. What layer of the test pyramid? — Unit (fast, many), Integration (medium, some), E2E (slow, few)
  3. What already exists? — Check for existing test files, test utils, and coverage reports
  4. What's the testing stack? — Jest, Vitest, Playwright, Cypress, React Testing Library, etc.

Phase 2: Apply the Test Pyramid

Distribute testing effort intentionally:

LayerWhat It TestsSpeedQuantity
UnitPure functions, utilities, isolated logicFast (ms)Many
IntegrationComponent interactions, API endpoints, DB queriesMedium (s)Some
E2EFull user journeys through real UISlow (min)Few

Always Test

  • Business logic and calculations
  • Data transformations and parsing
  • Edge cases: empty inputs, null values, boundary conditions
  • Error paths: what happens when things fail
  • API contracts: request/response shapes
  • Auth and permission logic

Test With Judgment

  • Component rendering (test behavior, not snapshot every div)
  • Form validation rules
  • State transitions
  • Navigation flows

Rarely Test

  • Third-party library internals (trust the library, mock the boundary)
  • Pure styling (visual regression tools handle this better)
  • One-line getters or trivial pass-through functions
  • Framework boilerplate

Phase 3: Write Tests

File Naming

Co-locate test files with source:

src/utils/formatCurrency.ts
src/utils/formatCurrency.test.ts      ← co-located
src/components/InvoiceTable.tsx
src/components/InvoiceTable.test.tsx   ← co-located
__tests__/integration/checkout.test.ts ← integration in dedicated folder

Test Case Naming

Pattern: it('should {expected behavior} when {condition}')

describe('formatCurrency')
  it('should format positive numbers with two decimals')
  it('should return "$0.00" when given zero')
  it('should handle negative numbers with a minus prefix')
  it('should throw when given NaN')

Test Data Rules

  • Use factories, not fixtures. Generate test data with overridable defaults.
  • No production data. Use realistic but synthetic data.
  • Isolate state. Each test sets up and tears down its own state.
  • Name clearly. validUser, expiredToken, emptyCart — not testData1.

Phase 4: When to Write Tests

ScenarioApproach
New business logicWrite tests alongside implementation
Bug fixWrite failing test first, then fix (TDD for bugs)
RefactoringEnsure tests exist BEFORE refactoring (safety net)
Exploratory/prototypeSkip tests, but flag as untested
Performance-critical pathAdd benchmark tests with baseline thresholds

Phase 5: Coverage Targets

ContextTargetRationale
Business logic / utils90%+Most testable and most critical
API routes / controllers80%+Integration tests cover important paths
UI components60%+Test behavior and interactions
Overall project70%+Meaningful floor that compounds confidence

Coverage is a compass, not a destination.

Philosophy (non-negotiable)

  • Test behavior, not implementation. Tests should survive refactors.
  • Tests are documentation. A well-named test suite tells the next dev what the code does.
  • Diminishing returns are real. 80% meaningful coverage beats 100% checkbox coverage.
  • Flaky tests are worse than no tests. A flaky test erodes trust in the entire suite. Fix or delete.

Verification Checklist

After writing tests, confirm:

  • New business logic has corresponding tests
  • Bug fixes include a regression test
  • Tests are named descriptively (behavior + condition)
  • Test data is synthetic, isolated, and clearly named
  • No test depends on another test's state
  • Flaky tests are fixed or removed
  • Coverage targets met for changed code
  • Test suite passes with exit code 0

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. 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.