false-green-tests

Solid

Find out why the tests pass but the app is broken. Catches false greens — a green suite over a feature that does not work, a mocked API standing in for a real one, an assertion that holds no matter what the app does, a click handler wired to nothing. Use when the suite is green and the user says it is broken, when a test never fails, when coverage looks fine but bugs still ship, or before trusting a passing run you did not watch.

Testing & QA 326 stars 69 forks Updated today NOASSERTION

Install

View on GitHub

Quality Score: 79/100

Stars 20%
84
Recency 20%
100
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
50
License 10%
100
Description 5%
100

Skill Content

# The suite is green and the app is broken A green test is evidence about the test, not about the app. This skill separates the two by running the real app and comparing what it _does_ against what the test _claims_. It uses **Reticle**, which observes the running app from the inside: DOM, network, console, routing, and framework state. Not installed? `RETICLE_INSTALL_SOURCE=npx_skill npx @reticlehq/server@latest init`, then see the [`install-and-verify`](https://github.com/reticlehq/reticle/blob/main/skills/install-and-verify/SKILL.md) skill. ## The five shapes, in the order they are worth checking **1. The assertion cannot fail.** Read the test the user trusts. If it only asserts absence — no console error, no thrown exception, no rejected promise — it passes on a control wired to nothing. A dead button throws nothing, fires nothing, and changes nothing. Prove it in the app instead: ``` reticle_act_and_wait({ sessionId, ref, action: "click", until: { kind: "allOf", predicates: [ { kind: "net", method: "POST", urlContains: "/api/...", status: 200 }, { kind: "signal", name: "..." }, ]}}) ``` A verdict of `no` here, against a green suite, is the false green. **2. The test drove a mock and the app drives an API.** Compare what the app actually requested with what the test stubbed: ``` reticle_network({ sessionId, since }) ``` No request where the test asserted one means the suite verified a fixture. A stale client cache is the same failure with no request at all...

Details

Author
reticlehq
Repository
reticlehq/reticle
Created
2 months ago
Last Updated
today
Language
TypeScript
License
NOASSERTION

Integrates with

Similar Skills

Semantically similar based on skill content — not just same category

Testing & QA Solid

agentic-tdd

Test-driven development for behaviour a unit test cannot reach, by writing the expectation against the running app before writing the code. Declare the consequence first, watch it fail, implement, watch it pass. Use when building a user-facing feature, when the user asks for TDD on UI or full-stack work, when a unit test cannot express the outcome that matters, or when you want a red-green loop that runs against the real app instead of mocks.

326 Updated today
reticlehq
Testing & QA Listed

testing

How to WRITE real, maintainable tests in any stack — assertions that fail when the code is broken, the test pyramid and AAA structure, behavior-over-implementation, mocking discipline, fixtures, coverage that means something, and the ship gates (test-count-never-decrease, no self-mocking, prove-RED-first). Language-generic with concrete examples in TypeScript/JavaScript, Python, Rust, and Go. Use when asked to "add tests", "write a test", "improve coverage", "fix a flaky test", "how do I test X", when turning a hollow assertion into a real one, deciding what layer a test belongs in, or when a change must not drop test quality. The construction counterpart to the crucible-detective agent's fraud hunt.

5 Updated today
nxtg-ai
Testing & QA Solid

test-error-states

Force the states a happy-path run never reaches — a failing API, an empty list, a slow request, a timeout, an expired session, a toast that auto-dismisses — and check the UI actually handles them. Use when error handling was written but never run, when a loading or empty state needs verifying, when a bug only happens on a slow connection, or when a timer, poll, debounce or retry needs testing without sleeping.

326 Updated today
reticlehq