CodeVetter
← All unpacks
CodeVetter · Repo Unpack evidence

dubzzz/fast-check

Scanned commit ecf7193810 dated 2026-10-01 — last upstream commit. Generated by codevetter 1.15.0 on 2026-10-02.

github.com/dubzzz/fast-check ↗ · 1032 files · 4.4 MB

Deep analysis by cli:codex via the codex CLI on 2026-10-02 (494s) — every claim below links to its cited source files. Source inspection; upstream code and tests were not executed.

Overview

fast-check is a TypeScript property-based testing library for JavaScript and TypeScript developers: users describe input generators and predicates, and the library generates cases, shrinks failures, and reports reproducible seed/path coordinates. At commit ecf7193810d1057253808105444e147d948051a1, the core exposes asyncProperty and promise-returning check/assert APIs, alongside model-based testing, controlled promise scheduling, and execution plugins. The pnpm monorepo also contains Jest, Vitest, and AVA integrations, Node worker execution, packaging and global-poisoning utilities, and a Docusaurus documentation website.

System map

The system centers on an importable testing library rather than an application server. Generation, execution, shrinking, and reporting are separate core modules; adapters and worker orchestration form additional runtime boundaries. Builds produce publishable library artifacts and a static documentation site. The inspected runner retains execution state in memory and exposes replay coordinates through its reports.

Feature catalog

Users primarily consume a programmatic API for generative testing and reproducible failure diagnosis. Generator composition, model commands, and promise scheduling support more complex test scenarios. Plugins and framework adapters customize execution and integration. Companion packages and the documentation website provide additional developer-facing capabilities.

Data flow

Input data enters through arbitrary factories, predicates, and execution parameters. Generated values carry shrink context, while runner-owned state records execution outcomes and replay coordinates. Plugins transform generation and predicate execution before results reach reporting. Worker execution introduces message serialization or RNG-state reconstruction as an additional boundary.

Behavior traces

Source reads followed ordinary assertion, failure replay, worker-backed assertion, and framework registration through their output boundaries. Additional traces cover sampling, model commands, scheduler release, and website onboarding. These are execution-order reconstructions from source, not observed runtime results. The replay flow reconstructs a failure from seed/path rather than loading persisted execution objects.

Testing signals

Tests and CI were inspected, not executed; no passing result or coverage percentage is asserted. Vitest discovers tests across packages, examples, and website, with both colocated specifications and package-level integration suites. The inspected tests address execution, replay, generator invariants, scheduler behavior, worker timeouts, and adapter subprocess integration. Coverage configuration and documentation filters impose explicit limits, and this inventory is bounded rather than exhaustive.

Risk map

These risks are source observations or explicitly labeled hypotheses, not confirmed vulnerabilities. The main runtime sensitivities are nonterminating generation, user-controlled execution, cleanup ordering, and compatibility assumptions. Filesystem deletion and release automation require separate operational caution. Partial inspection does not establish whole-repository absence of authentication, network activity, tests, or other safeguards.

Extension points

Most extension mechanisms are typed APIs and composable factories. Arbitraries define generation and shrinking, plugins wrap execution, and custom RNG factories control randomness. Commands and scheduler hooks adapt testing to stateful or asynchronous systems. Documentation and build configuration provide additional repository-level extension surfaces.

Contributor handoff

Tests and CI were inspected, not executed, and this brief is a bounded source inventory rather than an exhaustive audit. Future agents should verify the pinned API and execution contracts before changing generators, plugins, or adapters. Prefer small changes and the existing package/project scripts when implementation and execution are authorized. Publication, destructive packaging, documentation rewriting, and external submission need distinct handling.

Languages

LanguageFilesShare of source
TypeScript63287%
Markdown204docs/config
JavaScript8812%
JSON30docs/config
YAML23docs/config
CSS9docs/config
Shell30%

Start reading here

Probable source entrypoint: packages/ — inferred from the directory tree and manifest, not the upstream docs.

Source roots

packages/ (664 files)

Repository structure

Top-level pathFiles
packages/664
website/218
examples/51
.changeset/50
.github/29
.devcontainer/3
skills/1
scripts/1

Docs found: CONTRIBUTING.md

Package

package.json — @fast-check/monorepo, 17 declared dependencies.

@atproto/api@changesets/cli@fast-check/packaged@types/jest@types/node@vitest/coverage-v8all-contributors-clicross-envoxfmtoxlintoxlint-tsgolintpkg-pr-new

CI & config entrypoints

Structural health signals

Average score 8.5/10 across 96 analyzed source files; 1 hotspot surfaced.

These are deterministic review leads — size, churn, and structural signals — not proof of a bug in this project.

Recent history