The linter keeps scenarios robust — stable selectors, no silent waits. Override any rule under linter.rules in your config ("off" | "warn" | "error").
| Rule | Default | Purpose |
|---|---|---|
lint:deep-css | warn | Reject deep / brittle CSS selectors. Prefer role/label/testid. |
lint:xpath | warn | Reject XPath selectors. |
lint:obfuscated-class | warn | Reject hashed class names (Tailwind JIT, CSS Modules). |
lint:pause-explicit | warn | Discourage pause(ms) without a // reason: comment. |
lint:disambig-by-index | off | Flag index-only refinement (.nth) as fragile (info). |
lint:evaluate-discouraged | warn | Discourage bare evaluate() — prefer typed helpers. |
lint:scenario-in-root | error | Scenarios must live in a feature subfolder, not the e2e root. |
lint:mustache-in-dsl | error | No {{VAR}} string literals — reference bare identifiers. |
validator:unknown-function | error | Unknown DSL function (typo, unsupported call). |
validator:dsl | error | Shape / argument / unsupported-syntax violations. |