Where does a run actually write its files? I cannot find the report
Example threads. These questions and answers were written by the SDODS team to document real problems and how to fix them. The people named are illustrative, not real users. Questions asked on this site are marked new.
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.