Skip to main content
Names resolve to archetypes first, then to saved packs. Several can run in one command. The last line counts the spec’s operations the run’s request steps reached, so you can see what the bound archetypes did not touch.

Reading the result

Each step line shows the step’s status, key and summary. NOT_EVALUATED marks steps with no assertions of their own, such as arming or clearing a fault. When the sandbox has a webhook sink, a sink summary follows each scenario. A failed request step carries the request as one curl line, so the person who looks into it can send the same request to a running sandbox without reading the pack:
$PIKOPOD_URL is the sandbox server, http://127.0.0.1:4600 under pikopod up, and $PIKOPOD_CREDENTIAL the credential sandbox list prints. The credential itself never appears in the output. The same line ends every requests --explain, and an incident bundle carries one built from the recording.

Flags

Reports a build can be gated on

--format junit writes one testsuite per scenario and one testcase per step. A failed step’s summary is the failure message, and the curl line to reproduce it is the body; NOT_EVALUATED steps are skipped cases. Notes and the exit line go to stderr, so stdout is the artifact:
--format githubactions prints one ::error per failed step, with the pack file and the line of the step’s key when the scenario is a pack, so the failure lands inline on the pull request. The unexercised operations become one ::notice:
--format json carries every run’s full result plus failed, errored, exercised and unexercised:
Exit codes are the same in every format. A complete workflow that uploads the JUnit file is under CI integration.

Ephemeral by default

Each run drives its own requests at a throwaway copy of the sandbox, so a test never pollutes the served sandbox’s state, and no pikopod up needs to be running. Faults, seeded state, the virtual clock, the webhook outbox and the request journal all exist inside the run.

Against a real endpoint

Only REQUEST, NOTE and SNAPSHOT steps are allowed. A real endpoint has no fault arming, seeded state, virtual clock, webhook outbox or request journal to consult, so any other step type is refused before anything runs. Header values are never printed.

In CI

Pin --seed so transcripts are byte-identical between runs. See CI integration.