Skip to content

Plan one working happy path for every command the binary answers to - #170

Closed
wmadden-electric wants to merge 1 commit into
mainfrom
plan-e2e-coverage
Closed

Plan one working happy path for every command the binary answers to#170
wmadden-electric wants to merge 1 commit into
mainfrom
plan-e2e-coverage

Conversation

@wmadden-electric

@wmadden-electric wmadden-electric commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

The prisma binary answers to 89 commands. 40 have an e2e test. 49 do not.

Counted by walking --help from the root through every group, diffed against the describeCommand blocks in packages/cli/e2e/*.e2e.ts. Nothing in the suite names a command the binary does not mount.

What the test has to be

One happy path per command, run through the assembled binary, doing the thing and succeeding. Not --help, not "it parses its arguments", not "it fails honestly without credentials" — those prove a command is reachable, not that it works.

The reason this repo has to do it rather than lean on the owning repos: the product repos test their commands exhaustively, but none of them can reproduce the configuration this binary assembles. The mount paths, the engine version actually linked, several families' config sections at once, the credential wiring, and the dependency tree inside the published tarball exist only here. A command can pass its owner's entire suite and still be broken the moment it is mounted.

26 of the 49 come from other packages — 22 from @prisma/orm-toolchain, 4 from @prisma/composer — and not one is run by this repo's e2e suite.

The fixtures decide the order, not the command groups

Most of the 49 are blocked on the same few things, so the work is to build those and the commands follow in bulk:

  • A deployed service unlocks ~16 — the seven service deployment verbs, service open, service show, the five service domain verbs, and build logs. Highest value and most expensive: it creates real infrastructure the suite must then remove.
  • A project directory with a contract unlocks most of the ORM familyformat, orm init, contract, the eight migration verbs, ref. No API needed; tests/fixtures/orm-project already exists to build on.
  • A database unlocks the restdb init|schema|sign|update|verify and migrate. The suite already creates Prisma Postgres databases, so this is wiring.
  • Smaller ones: a GitHub repo for git connect|disconnect, a second workspace for project transfer, a project with real backups for postgres restore.

Four need a ruling before anyone writes them

  • auth login drives a browser, and every other test authenticates with a service token — so the one command whose job is obtaining a credential is the one the suite cannot exercise normally.
  • feedback posts real feedback to the CLI team unless it can be pointed at a test endpoint.
  • composer dev/log never settle on their own, so "happy path" needs a definition — started, served one request, shut down cleanly.
  • lsp speaks LSP on stdio; its happy path is an answered initialize, a different harness from everything else here.

Plan only, no code. Nothing to be written as a skipped test in the meantime — a skipped test reads as coverage.

@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@wmadden-electric, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 94 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 200ea201-7b5e-42e0-a7d0-4063b8c30b28

📥 Commits

Reviewing files that changed from the base of the PR and between 55193f7 and d4f0318.

📒 Files selected for processing (1)
  • .drive/projects/prisma-cli-v8/plan.md

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@pkg-pr-new

pkg-pr-new Bot commented Aug 12, 2026

Copy link
Copy Markdown

Open in StackBlitz

npx https://pkg.pr.new/@prisma/cli@170
npx https://pkg.pr.new/@prisma/cli-engine@170

commit: d4f0318

@wmadden-electric wmadden-electric changed the title Plan e2e coverage for every mounted command Plan e2e coverage for every command the binary answers to Aug 13, 2026
The binary answers to 89 commands, counted by walking --help from the
root. 40 have an e2e test. 49 do not.

The requirement is one happy path per command, run through the assembled
binary and succeeding — not --help, not "it parses its arguments". The
product repos test their own commands exhaustively but cannot reproduce
the configuration this binary assembles: the mount paths, the linked
engine version, several families' config sections at once, the
credential wiring, and the published tarball's dependency tree exist
only here.

The 49 are blocked on a handful of shared fixtures rather than on
themselves, so the plan orders the fixtures: a deployed service unlocks
about 16, an ORM project directory unlocks most of that family, a
database unlocks the rest. Four commands need a ruling before anyone
writes them.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: willbot <w.a.madden+machine@gmail.com>
Signed-off-by: Will Madden <madden@prisma.io>
@wmadden-electric wmadden-electric changed the title Plan e2e coverage for every command the binary answers to Plan one working happy path for every command the binary answers to Aug 13, 2026
@wmadden-electric

Copy link
Copy Markdown
Contributor Author

Closing as superseded, and stale enough to be worth saying why.

The convention this planned already exists in enforced code — packages/cli/tests/e2e-coverage.test.ts requires a real-API happy path for every mounted command, holds the exclusions and the backlog with reasons, and fails CI when an entry rots. #178 extended it with eight new happy paths and corrected two of its claims against the API.

This document went stale in a day, which is the argument against keeping it:

  • It says 40 of 89 commands are covered. It is 48 now.
  • It says a deployed service "unlocks about 16" and that only composer deploy can produce one. Deploy a real service in e2e, and cover the eight commands that needed one #178 showed this repo can produce one through the management API, and that the domain verbs then need a DNS record on top — the most important fact in the section, and the one it gets wrong.
  • Its "four that need a ruling" are all already in EXCLUSIONS with reasons.

The one paragraph worth keeping is the rationale — why this repo owes a happy path per command, rather than leaning on the product repos, with #171 as the proof. That moves into the header of e2e-coverage.test.ts, next to the rule it justifies.

wmadden-electric added a commit that referenced this pull request Aug 17, 2026
The rule was stated; the reason was not, and it lived in a plan
document instead. Plan documents go stale silently — that one said 40
of 89 commands were covered and that only Composer could produce a
deployment, both wrong within a day. This file fails CI when it rots,
so the reason belongs here beside the rule it justifies.

Rescued from the closed PR #170.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: willbot <w.a.madden+machine@gmail.com>
Signed-off-by: Will Madden <madden@prisma.io>
wmadden-electric added a commit that referenced this pull request Aug 17, 2026
The rule was stated; the reason was not, and it lived in a plan
document instead. Plan documents go stale silently — that one said 40
of 89 commands were covered and that only Composer could produce a
deployment, both wrong within a day. This file fails CI when it rots,
so the reason belongs here beside the rule it justifies.

Rescued from the closed PR #170.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: willbot <w.a.madden+machine@gmail.com>
Signed-off-by: Will Madden <madden@prisma.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants