DEVELOPMENT / TESTING

Native project tests

Place literal Dowe tests wherever they best describe the contract. Dowe discovers them without requiring a test folder or a filename convention.

Open Agent docs

UNRESTRICTED PLACEMENT

Use the folder that fits the project

A test-only .dowe file can be below verification, checks, test, or any other project directory. The runner scans eligible Dowe files and executes only files that declare tests.

dowe
verification/release/metadata.dowe
checks/theme-contract.dowe
test/navigation.dowe

NO RESERVED DIRECTORY

Keep intent close

Choose a folder that makes the tested contract easy to find. Dowe does not reserve test or tests.

SAFE DISCOVERY

Ignore managed output

Discovery skips .agents, .dowe, .git, target, and node_modules.

DETERMINISTIC

Sort before running

Cases run by relative path and then source order for stable reports.

LITERAL ASSERTIONS

Start with deterministic contracts

Tests use a quoted name and direct assert declarations. Equal compares Dowe literals structurally without evaluating application code.

dowe
test "release metadata"
  assert true value:true
  assert false value:false
  assert equal actual:{ name:"dowe" channels:["stable", "canary"] } expected:{ name:"dowe" channels:["stable", "canary"] }

assert true

Passes only when value is exactly true.

assert false

Passes only when value is exactly false.

assert equal

Compares strings, numbers, booleans, null, arrays, and objects exactly.

RUNNER

Run all tests or select a path

Use JSON for agents and CI. A failed assertion returns a non-zero status with its source location.

dowe
dowe test
dowe test verification
dowe test checks/theme-contract.dowe
dowe test --json

This first native runner does not execute views, handlers, HTTP, databases, or target runtime code. Use target-specific validation alongside literal tests when a contract needs runtime behavior.