Review agent-proposed test cases
Accept, edit or reject every case an AI agent proposes — and watch the acceptance rate to tell whether generation is getting better.
Generating test cases is easy; deciding which ones you are willing to maintain is the hard part. The review queue exists so that the second decision is explicit, fast, and measurable. Meta's published work on execution-filtered test generation reported 73% engineer acceptance — the only public figure of its kind, and a reasonable bar to measure your own generation against.
Open the queue
Go to Review for the project. Cases are grouped by feature, then by folder, with anything unmapped under "Unsectioned".
Each card shows the proposed title, steps and expected result, the execution mode with its reason codes, the readiness score, and which agent, client and model proposed it.
Work down the list. The counters at the top show accepted, edited and rejected for the current generation session.
The three decisions
- The case is right as writtenLikely cause: The agent understood the feature and the steps are executable.Accept. The state moves to ACCEPTED. No revision is written, because nothing about the content changed.
- The case is nearly rightLikely cause: A selector, a step, an expected result or the execution mode needs correcting.Edit and accept. Your edit writes revision N+1 and increments the edited counter — which is the honest signal that generation is close but not there.
- The case should not existLikely cause: Duplicate, out of scope, tests something the product does not do, or is not worth maintaining.Reject with a reason. A revision is written whose change summary is your reason, attached to the session that proposed it. Rejected cases never enter a plan version.
- You are not the right reviewerLikely cause: The case covers an area you do not own.Leave it undecided and move on. The queue is shared; an undecided card stays claimable by whoever does own the area.
Why the counters matter
Each batch of proposals is one generation session, recording which agent, which client and which model produced it, and what the prompt scope was. The queue increments accepted, edited and rejected against that session.
That turns a vague feeling ("the AI cases are a bit off") into a number you can act on. A session with 60% rejections on one feature usually means the agent lacked context — project memory, a fixture, or the codebase map — not that generation is hopeless.
Reviewing from an agent
The queue is also an MCP surface, so an agent can list what is waiting — but a review decision is still a decision, and the same permission and counter rules apply whichever way it arrives.
list_review_queue proposals awaiting a human, grouped by feature
review_test_case accept, edit (revision N+1) or reject one case
classify_test_case re-run the manual-vs-automated rubric, read-onlyCommon questions
Can a proposed case end up in a published plan without review?
No. A case stays <code>PROPOSED</code> until a person accepts it, and only accepted cases are pinned into a plan version.
Does accepting a case create a new revision?
No — accepting changes state, not content. <em>Editing</em> and accepting writes revision N+1, and rejecting writes a revision carrying the rejection reason.
Where do the acceptance numbers come from?
Each batch of proposals is one generation session. Accept, edit and reject counters increment against that session, so you can compare passes over time.
Why should I write a reason when rejecting?
The reason is stored on the proposing session. It is the signal that tunes the next generation pass — a rejection with no reason teaches nothing.
Related articles
- Test plans and versionsPublish a frozen v1 of your test plan, edit freely afterwards, and diff v1 against v2 when the next release ships.
- Manual vs automated: modes and reason codesEvery case gets a mode, a readiness score from 0 to 100, and named reason codes explaining exactly what is blocking automation.
- The agent inbox and task leasesA shared, risk-ranked queue any agent can read — and an exclusive lease so two sessions never work the same task.
- Record Playwright runs with the reporterThree lines in playwright.config.ts and two environment variables turn every test run you already do into recorded, provable results.

