Where do the generated spec files live? Git does not see them and neither do I
Asked 7,200 views2 answers
20votes
I understand roughly that the Gherkin gets turned into runner specs before a run. I cannot find them. Nothing appears in my working tree during a run, git status stays clean, and after the run there is no trace.
Two questions: where are they while the run is happening, and what should I be putting in .gitignore?
They go to .sdods/generated/<runId>/<slug>/<layer>/ and are removed when the run ends. (The run reference page still calls this .features-gen/; it is out of date — check the path on disk mid-run if you want to be sure.) The run id is in the path on purpose: two runs on the same machine — a shard and someone's local run, say — never write to the same place and never race.
They are an implementation detail, so do not read them and do not commit them. What you do want to know about is the artefacts directory, which persists:
text
.sdods/runs/<runId>/run.json the manifest: command, env, git sha, exit code
.sdods/runs/<runId>/summary.json totals and durations
.sdods/runs/<runId>/messages.ndjson what ingest reads
.sdods/runs/<runId>/html-report/ the report
.sdods/runs/<runId>/dashboard/
.sdods/ is what belongs in .gitignore. The run id is printed at the top of every run:
The run id printed on the ingest line is the directory name under .sdods/runs
On CI you often want the artefacts somewhere other than the checkout — a mounted volume, or a path your artefact upload already watches. --artifacts-dir <dir> moves the whole <runId> tree, and the paths printed at the end of the run follow it.
Upload that directory unconditionally rather than on success. The runs you want the trace for are the failed ones.