Skip to content

Release evidence, not just green checks

SDODS runs BDD tests for UI and API flows and keeps the proof: a screenshot before and after every step, the requests behind it, and the history of every run. Anyone on the team can look at a release and say yes.

Free under the Apache-2.0 license.

Successful login shows the products

auth/login.feature, passed

  1. 1Given I am on the login page
  2. 2When I login with "standard_user" and "{{standardPassword}}"
  3. 3Then I should be on the inventory page
  4. 4And the inventory title should be "Products"
SauceDemo login form before the login step runs

Before step 2

SauceDemo inventory page after the login step

After step 2

What a run leaves behind

A green pipeline says the tests finished. The run page says what they did: which scenario failed and why, which ones only passed on a retry, and what changed in the page objects along the way. This is a real nightly run of the demo project.

SDODS run page for a nightly regression run of demo-shop on staging: scenarios grouped by module, one failed and linked to DEMO-12, one flaky and healed
The run page in the SDODS web UI.
Failures point at a ticket
The wrong-password example failed, and its @jira tag links it to DEMO-12.
Flaky and healed are named
"Products are displayed" passed on its second attempt, after one locator was healed.
Organised like the code
Scenarios are grouped by module and feature file, with the browser and time of each.
Exports for other tools
The same run as an HTML report, JUnit XML or NDJSON events.

Open the step timeline, API panels and pixel diffs in the demo.

Three layers, one line through them

A test suite answers two questions: what should the product do, and did it do it this time. SDODS keeps those answers in separate layers and ties them together one step at a time, so any line in a feature file leads to the code that ran it and the screenshots it left.

Feature files, the agreement
Scenarios in Gherkin that product, QA and engineering can all read. Tags say whether each one is UI, API or hybrid, and which suite runs it.
Steps and page objects, the binding
Every line of a scenario matches one step definition. Steps are shared across features, and page objects hold the locators, so a UI change is fixed in one place.
Evidence and history, the record
Running a step leaves proof: screenshots either side of it, the requests it made, and a result that joins every earlier run of the same scenario.
The dashed line is one step: its scenario, the step definition it matched, and the before and after screenshots it left.

What ships in the box

Write the tests

UI, API and hybrid in one language
Gherkin with one merged fixture set, so a scenario can seed data through the API and check the result in the browser.
Data and user pools
CSV, JSON, YAML, database tables and faker factories per environment. Each worker leases its own account and reuses its login state.
MCP server and agents
86 tools for Claude Code, Codex, Cursor, VS Code, Gemini CLI and any MCP client, plus planner, generator, healer and upgrader agents.

Run them anywhere

Many apps, many environments
One YAML file per project and one per environment, with a precedence you can explain. Secrets only ever arrive through ${VAR}.
Every browser you ship to
Chromium, Edge, Firefox, WebKit and mobile emulation. --project-matrix runs them all, and lint checks every @skip:<browser>.
CI, GitHub and Jira
Check runs, PR comments, deduplicated issues and @jira:KEY links. Schedule runs from the server, crontab, systemd or Actions.

Keep the proof

Before and after every step
A screenshot either side of each UI step, request and response snapshots for API steps, and visual baselines chosen per suite tag.
Locators that heal
When a locator breaks, SDODS scores candidate replacements, records what it chose and proposes the fix to the page object.
Run history that remembers
Results in SQLite or Postgres show flaky scenarios, fragile locators, unstable environments and suite health over time.

How it works

Everything starts from the command line. The web UI, the MCP server and the scheduler run the same commands and stream their output, so CI needs nothing but Node and the repository.

  1. sdods CLI

    You, CI or the scheduler start a run.

  2. Config and registry

    Project and environment YAML resolve; steps load.

  3. Browser and API runs

    Playwright drives each scenario.

  4. Evidence

    NDJSON events and screenshots are written.

  5. History

    Results land in SQLite or Postgres.

  6. Review

    The web UI, MCP server and agents read it back.

Your first run

Three commands from nothing to a run you can open. The demo project tests a public shop, so you do not need an app of your own yet.

Other package managers, upgrades and uninstalling are on the install page.

  1. 1

    Install the CLI

    On macOS, Linux or Windows. Node 22 is the only requirement.

    curl -fsSL https://sdods.com/install.sh | sh
  2. 2

    Create a workspace

    sdods init writes a workspace with the demo project in it.

    sdods init ~/my-tests && cd ~/my-tests
  3. 3

    Run the API and UI suites

    Then sdods serve --open shows the run page from above.

    sdods run -p demo-shop -e staging -l api
    sdods run -p demo-shop -e staging -l ui -b chromium -t @smoke

Works with your AI coding tools

Claude Code, Codex, Cursor, VS Code, Gemini CLI, Windsurf and any MCP client. Install the plugin or the skills, then ask your assistant to plan, write, run, heal or review tests. Agents reuse your logged-in CLI session, so no API key is required.

A team can also share one SDODS server and connect every assistant to its /mcp endpoint with a scoped token. The AI coding tools guide covers each client.

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
Every tool, the MCP endpoint and skills

Missing something you need?

Feature requests and feedback go straight to the maintainers by email. You do not need an account with us.

Send feedback

Support SDODS

SDODS is free, with no paid tier and no limit on API tokens. If it saves your team time, sponsoring it funds its development.