Skip to content

Platform — Getting started

The Plune platform is the hosted half of Plune: it keeps your test cases, records every run, and holds the queue where machine-proposed tests wait for a human decision. The CLI and the GitHub Action produce results; the platform is where they accumulate and become a history you can ask questions of.

betainvite only

  1. Open beta.plune.ai and enter the address your invite was issued to.

  2. Open the magic link in the email. There is no password to choose and none to lose — the link opens a session, and that session is what mints your API tokens.

  3. You land on your runs. It is empty until something reports into it, which is the next step.

The web session drives the dashboard; a bearer token is what a runner or CI uses. Create one in Settings → API tokens. It is shown once, so put it straight into your secret store.

Tokens live 90 days and can be revoked individually or all at once. Signing out of the dashboard does not revoke them — a token outlives the session that created it on purpose, because CI has no session.

You do not need to adopt a new runner. Anything that emits JUnit XML — pytest, Jest, Vitest, Playwright, Go, JUnit itself — already speaks a format the platform reads.

Terminal window
npm i -g @plune-ai/cli
export PLUNE_TOKEN=plune_# the token you just minted
plune run import junit.xml --create # --create opens cases for tests it has never seen

--create does not silently add test cases. It offers them: each unknown test arrives in the review queue as a proposal, and stays a proposal until a person accepts it. Re-importing the same report after accepting matches the existing cases instead of offering them again. A mature suite is thousands of such offers at once — for that, Settings → Trusted sources lets you say that tests discovered by a given runner are yours and become cases on arrival; the review queue page explains what that does and does not skip.

No provider key, no account with anyone else: this road costs nothing but the token. There are two more, and the platform does not care which one a result came by:

The queue is the product’s one firm rule: nothing enters your test suite silently. Two kinds of entry land there, and they arrive from opposite directions —

  • Proposals — tests a runner reported that this project has no case for.
  • Disputes — a result whose verdict a human should look at rather than trust.

Both wait for the same decision, and a rejection has to carry a reason. Accepting a proposal is what creates the test case; the case then outlives the run that suggested it, and outlives its deletion.

The run appears at the top of Runs with its five counters — passed, failed, broken, blocked, skipped — and, from the second run on, Trends draws the pass-rate line between them. One run is a snapshot; the platform earns its keep from the third or fourth, when a test that has never failed before does.

Every test the run named is now a case with a history: open one from Cases and the history lists each run it took part in. The identity a JUnit report carries is the file path plus the title, so a renamed or moved test arrives as a new test on the next import — offered to the queue, or created straight away from a trusted source — while the old case keeps its history. Keep titles stable where you want a long line. With Playwright there is a way out: a @P<id> token in the title names the case outright and survives any rename — the reporter and the JSON import both read it. The JUnit road does not read it yet.

ActionReversible?
Delete a runYes — recoverable for six months, then purged for good. Test cases it created survive either way.
Approve or reject a queue entryYes — the audit log records every change, and a change can be restored from it.
Revoke a tokenNo. Mint a new one.

Three things look like failures and are not:

You seeWhat it means
Asked for a sign-in link, no email cameThe address is not on the invite list — see the note at the top. Reply to your invite and it will be added.
plune: the API token was refusedThe token was revoked or has expired (they live 90 days). Mint a new one in Settings → API tokens.
plune: 0 accepted · N written to .plune/pending-results.jsonlThe platform could not be reached or refused the run; nothing is lost. The line above it says why, and plune run report sends the file once it is fixed.

Everything else — write to [email protected]. It is read by the people who build the platform, and each report becomes a row in the beta punch-list with a severity and a decision you will hear back about. Include the CLI version (plune --version), the exact command, every plune: line it printed, and the run id from the dashboard if there is one.