qa-property-based
Property-based testing with Hypothesis (Python), fast-check (JS/TS), proptest (Rust) and jqwik (JVM): generators, shrinking, and CI integration. Agents (property-based-test-author, vacuous-property-critic) write one property per invariant and flag assume-heavy or always-true properties.
/plugin install qa-property-based@testland-qaFirst time? Add the marketplace with /plugin marketplace add testland/qa
- Category
- Functional testing
- Version
v1.2.23- Contents
- 4 skills · 2 agents
Skills4
fast-check-testingUse whenever the task mentions property-based, generative or invariant tests in JavaScript or TypeScript (fast-check): fc.assert and fc.property, arbitraries and composite inputs, map, chain and filter, shrinking and seeds, with Jest, Vitest or Mocha.skillhypothesis-testingUse whenever the task mentions property-based, generative or invariant tests in Python (Hypothesis), e.g. parse/format or encode/decode pairs: @given strategies, composite strategies, assume and filters, settings and CI.skilljqwik-testingUse when a Java or Kotlin project needs property-based tests: invariants, round-trip properties or edge cases example tests miss.skillproptest-testingUse when a Rust project needs property-based tests, especially for parsers, serializers and functions with structured input.skill
Agents2
property-based-test-authorAction-taking agent that authors ONE property-based test per invariant - picks the tool from the plugin README's per-language decision table (or accepts an override), then emits a fast-check / Hypothesis / jqwik / proptest property using the chosen library's arbitraries / strategies / generators.agentvacuous-property-criticAdversarial read-only critic that detects vacuous and trivially-passing property-based tests across fast-check (JS/TS) and Hypothesis (Python) test suites.agent
About qa-property-based
Property-based testing for the QuickCheck-derived family. Per ISTQB: PBT is "a test approach in which test results are verified using specified relations between inputs and expected results of a test case." Each skill ships authoring + run + shrinking + CI integration for its language's canonical PBT library.
Choosing a library
One canonical property-based library per language - detect the language from the project root and pick the matching row:
| Project signal | Language | Library | Skill |
|---|---|---|---|
package.json (with or without TypeScript) | JavaScript / TypeScript | fast-check | fast-check-testing |
pyproject.toml / setup.py | Python | Hypothesis | hypothesis-testing |
pom.xml / build.gradle* | JVM (Java, Kotlin) | jqwik (JUnit 5 platform-native - JUnit 4 doesn't run it; on Kotest, its built-in property module is the alternative) | jqwik-testing |
Cargo.toml | Rust | proptest | proptest-testing |
Languages outside this table (Haskell, Erlang, Elixir, Scala, Go, .NET, Ruby, Swift) are not covered by this plugin - look for language-native alternatives (QuickCheck ports, ScalaCheck, gopter, FsCheck, Rantly, SwiftCheck). A one-off "run the function with random inputs" ask is not a property - use a parameterized unit test; property-based testing earns its keep when there's a meaningful invariant (roundtrip, idempotence, conservation, monotonicity) to assert.