SDODS
Reference

Attachment and file naming

The names SDODS gives to attachments and files so every tool can find them.

Attachments

NameContent
sdods/shot/scenario/start, sdods/shot/scenario/end, sdods/shot/scenario/failurescenario-level screenshots
sdods/shot/step/NN/before, sdods/shot/step/NN/afterstep screenshots; NN is the zero-based, two-digit step index in the pickle (background steps included, hooks excluded)
sdods/visual/NN/<name>visual baseline comparison
sdods/api/NN/n/request, sdods/api/NN/n/responseAPI call n in step NN
sdods/heal/NN/nheal event
sdods/perf/NN, sdods/a11y/NNmetrics and axe results
sdods/metathe scenario meta document
sdods/cleanup-errorscleanup failures

The runner's own trace, screenshot, video and <name>-expected.png/-actual.png/-diff.png are recognised as well. Names never start with _.

Run directory

.sdods/runs/<runId>/
  run.json  summary.json  run.log
  messages.ndjson | messages.shard-N.ndjson
  pw-results.json          # recorded layer
  html-report/  dashboard/  runner-output/  junit.xml
  <slug>/<fingerprint>/r<retry>/
    meta.json
    visual/<run target>/<name>-expected.png  <name>-actual.png  <name>-diff.png
    visual/<run target>/<name>.failure.json   # read by `sdods baselines`
    scenario-start.png  scenario-end.png  failure.png
    NN-before.png  NN-after.png
    api/NN-n-request.json  api/NN-n-response.json
    perf/NN.json  a11y/NN.json
    heal.jsonl

Identifiers

  • runId: UUID v7, sortable by time; --run-id overrides (CI uses gh-<run id>).
  • Fingerprint: sha256(project, featureUri, scenarioName, exampleIndex, layer) truncated to 16 hex characters.
  • Run target: <slug>--<layer>--<browser> or <slug>--api.

Project files

PathContent
projects/<slug>/sdods.project.yamlthe project definition
projects/<slug>/envs/<env>.yamlone environment
projects/<slug>/roles.matrix.yamlrole × surface matrices referenced by @matrix:<name>; see Role matrices
# sdods:matrix:begin <name> … # sdods:matrix:end <name>comments in a feature file around the Examples blocks sdods matrix expand generates; the lines between them are rewritten, everything else is left alone

Using an AI coding agent? Install SDODS:

Install the SDODS plugin in Claude Code: skills, subagents, commands and the MCP server.

  1. /plugin marketplace add YarlisAISolutions/sdods-skills
  2. /plugin install sdods@sdods
Learn more about using SDODS with AI tools

On this page