AI Test Auditor
A local-first CLI that reads JavaScript and TypeScript test source without executing it, then reports source-located FAKE and WEAK findings.
Latest release v1.2.1 ↗
Try it now
Built-in v1 benchmark fixture Filter the sample findings by type, then inspect source locations and remediation guidance.
Audit summary4 / 5Extracted test cases
FAKE findings2
WEAK signals2
UNASSESSED1
FAKEUT012Line 4
Bare expect call 4expect(result);
Calls expect without a matcher assertion.
FAKEUT013Line 8
Contradictory assertion count 8expect.assertions(0);
Declares zero expected assertions while the test also contains a matcher assertion.
WEAKUT014Line 13
Mock interaction only 13expect(mock).toHaveBeenCalled();
Verifies mock interaction without showing a value or state outcome.
WEAKUT015Line 17
Snapshot only 17expect(value).toMatchSnapshot();
Static analysis cannot determine whether the snapshot is an adequate oracle.
Showing 4 of 4 findings
Quick start
Run from a source checkout
Build the local CLI, then review a test directory and inspect the JSON evidence.
Command npm install
npm run build
node dist/cli.js review ./tests --format json
Use the packaged command
The installed package exposes the same workflow through the ata command.
Command npm install -g ai-test-auditor
ata review ./tests --format html
Audit capabilities
search Source-backed findings
Read JavaScript and TypeScript test source without importing or executing it, then locate deterministic findings in the file.
rule FAKE and WEAK rules
Inspect direct Jest, Vitest, Playwright, and Node node:test callbacks, then report narrow findings with remediation guidance.
difference Change-aware review
Review supported test files changed since a local ref, compare against a baseline, or add optional mutation evidence.
gavel Explicit quality boundaries
Keep static audit, runtime quality, coverage, mutation score, and release readiness as separate decisions.
Evidence boundaries
FAKE FAKE
Deterministic syntactic evidence that a test does not verify an observable behavior.
WEAK WEAK
A non-blocking signal that deserves review but does not decide a release by itself.
UNASSESSED UNASSESSED
An unflagged test is not proven strong; runtime behavior and production relevance remain outside this audit.
Release notes
Current releasev1.2.1
Corrected advisory GitHub Actions workflow exit semantics; FAKE and WEAK findings remain non-blocking in advisory mode.
- Advisory workflow findings no longer fail the job; invalid input and the explicit FAKE-only gate keep their existing exit behavior.
View GitHub Release↗ Release history ⌄
v1.2.0 v1.2.0 release · See GitHub for the detailed changes. ⌄
- Version history is maintained in the upstream GitHub release.
View GitHub Release↗ v1.1.1 v1.1.1 release · See GitHub for the detailed changes. ⌄
- Version history is maintained in the upstream GitHub release.
View GitHub Release↗ v1.1.0 v1.1.0 release · See GitHub for the detailed changes. ⌄
- Version history is maintained in the upstream GitHub release.
View GitHub Release↗ v1.0.3 v1.0.3 release · See GitHub for the detailed changes. ⌄
- Version history is maintained in the upstream GitHub release.
View GitHub Release↗ v1.0.2 v1.0.2 release · See GitHub for the detailed changes. ⌄
- Version history is maintained in the upstream GitHub release.
View GitHub Release↗ v1.0.1 v1.0.1 release · See GitHub for the detailed changes. ⌄
- Version history is maintained in the upstream GitHub release.
View GitHub Release↗ v1.0.0 v1.0.0 release · See GitHub for the detailed changes. ⌄
- Version history is maintained in the upstream GitHub release.
View GitHub Release↗ v0.9.0 v0.9.0 release · See GitHub for the detailed changes. ⌄
- Version history is maintained in the upstream GitHub release.
View GitHub Release↗ v0.8.0 v0.8.0 release · See GitHub for the detailed changes. ⌄
- Version history is maintained in the upstream GitHub release.
View GitHub Release↗ v0.7.0 v0.7.0 release · See GitHub for the detailed changes. ⌄
- Version history is maintained in the upstream GitHub release.
View GitHub Release↗ v0.6.0 v0.6.0 release · See GitHub for the detailed changes. ⌄
- Version history is maintained in the upstream GitHub release.
View GitHub Release↗ v0.5.0 v0.5.0 release · See GitHub for the detailed changes. ⌄
- Version history is maintained in the upstream GitHub release.
View GitHub Release↗ v0.4.0 v0.4.0 release · See GitHub for the detailed changes. ⌄
- Version history is maintained in the upstream GitHub release.
View GitHub Release↗ v0.3.0 v0.3.0 release · See GitHub for the detailed changes. ⌄
- Version history is maintained in the upstream GitHub release.
View GitHub Release↗ v0.2.0 v0.2.0 release · See GitHub for the detailed changes. ⌄
- Version history is maintained in the upstream GitHub release.
View GitHub Release↗ v0.1.0 v0.1.0 release · See GitHub for the detailed changes. ⌄
- Version history is maintained in the upstream GitHub release.
View GitHub Release↗