Where does a run actually write its files? I cannot find the report
Asked 16,210 views3 answers
44votes
First real run finished and the console printed the totals, but I have no idea where anything landed. I was expecting a reports/ folder next to features/.
There is a .sdods directory in the workspace root. I do not want to poke around in it blind — what is in a run directory, and which file am I supposed to open?
Everything a run produces goes under .sdods/runs/<runId>/. The run id is a UUID v7, so the directories sort by time on their own.
text
.sdods/runs/<runId>/
run.json manifest: project, env, tags, browsers, git, command
summary.json totals and status
messages.ndjson cucumber messages, the canonical ingest format
playwright-report/ the HTML report
dashboard/ index.html + metrics.json
demo-shop/<fingerprint>/r0/ one directory per scenario attempt
You do not have to find it by hand:
bash
sdods report --last --open
That prints the totals and the report paths, then opens the HTML report and the dashboard. The dashboard is the one to send round: it is self-contained and survives being mailed.
sdods run --artifacts-dir <dir> writes the tree somewhere else. If you do that, set SDODS_ARTIFACTS_DIR too, because report only learns the new root from the environment variable.
And when you want it in a script rather than on a terminal, sdods report --last --json gives you { runId, dir, manifest, summary, reports } as one object. Much better than parsing the table.
The bit that took me a while to appreciate: the <fingerprint> directory under the project slug is stable across runs and across browsers. So the same scenario in run A and run B is the same path, and diffing two runs by eye actually works.
r0 is the first attempt, r1 the first retry, and so on. Inside each you get meta.json, scenario-start.png, scenario-end.png, failure.png when it failed, the numbered before/after step images, and api/ for API steps.