Skip to content

Check for drift with plune verify

plune verify sets the project’s automated cases in Plune against the Playwright tests your code has now, and prints what each side has that the other lacks. It only reads: nothing is written to Plune and no id is added to your source. Playwright is the only framework it understands.

The tests come from playwright test --list --reporter=json, which plune verify runs for you (or reads from a file, see --from below). Each test is matched to a case in this order:

  1. By the id it names: a PluneId annotation, or @P<id> in its title.
  2. Otherwise by its path-title key, built the way the Playwright reporter builds it: file#describe#…#title, with the file as Playwright titles it and forward slashes.

Only cases of type automated count. A case in the deprecated state is left out: retiring a case is a person’s decision, so it is never reported as drift.

SideMeaning
In Plune, not in the codeA case no test in the code matches any more. It is either already detached (Plune has noticed), or in another state, in which case a full run would detach it.
In the code, not in PluneA test with no case yet. It is listed by its path-title key.

Seeing both before a run means the drift shows up before a test leaves a regression, not after. A case that is detached is one the platform has marked as having no test behind it.

The text report prints these lines, then a count (N matched. Nothing was changed.), or No drift: N case(s) match the code. when both sides are empty:

In Plune, not in the code (2):
gone removed test [active — a full run would detach it]
old older test [already detached]
In the code, not in Plune (1):
nested/cart.spec.ts#cart#inner#adds @Ptc-9
FlagEffect
--from <file>Read a saved playwright test --list --reporter=json instead of running Playwright.
--playwright-config <path>Passed to playwright test --config.
--jsonPrint the report as JSON instead of text.
--fail-on-driftExit 1 when either side has something the other lacks.

Like pull and push, it needs a saved login or PLUNE_TOKEN.

CodeWhen
0The report was printed (also when there is drift, unless --fail-on-drift is set).
1--fail-on-drift and either side differs, or the platform could not be reached or answered with an error.
2Not logged in, a rejected token, a listing file that cannot be read, a listing that is not JSON, or Playwright’s listing failed.