@qa-ai-stlc/cli
v1.16.0
Published
The qa command: init, doctor and every deterministic engine operation exposed for CI and humans.
Readme
@qa-ai-stlc/cli
The qa command: a thin client over @qa-ai-stlc/core and @qa-ai-stlc/explorer for CI and
humans. qa init creates the .qa/ store, runs the testing scope survey, and writes a commented
.qa/config.local.yaml.example showing the optional local configuration layer's syntax (ADR-011);
qa doctor checks Node, browsers, identities and environment reachability before a run, and
prints every relaxation the local layer introduces; qa explore crawls the
configured environment, optionally merges static source analysis (--static) and pick-mode
entries (--pick <url>), and writes the selector registry and a generated locator module;
qa explore --verify re-checks stored selectors against the live page without re-crawling.
qa api-diff compares the OpenAPI 3.x contract named by api.source (a file, an allowlisted URL or
discover) with the endpoints the last explore observed and writes selectors/api-diff.json.
qa config set testing.<type> <value> changes a scope decision after init, and qa config set ui.componentLibrary <none|kendo-jquery|kendo-angular> the UI component library (also qa init --component-library); qa config add
environment <name> --base-url <url> --allowlist <a,b,c> and qa config add identity <name> --auth
<cdp-attach|storage-state> --secret <QA_...> [--login-url <url>] [--username <user>] add a
schema-validated entry instead of hand-editing config.yaml. qa config show [--explain] prints
the effective configuration — .qa/config.yaml merged with its optional local layer
(.qa/config.local.yaml, or the file QA_CONFIG_LOCAL names) — and every relaxation the local
layer introduces; --explain also names the source layer (committed, local or a schema default)
of every value. qa scope --from file --path <path>
or qa scope --from text --content <text> --label <label> extracts requirements (one per
level-2 Markdown heading) into artifacts/scope.json, upserting by requirement id on a repeated
call and keeping any in-scope decision already made; a requirement whose heading left the source is
reported as no longer in the source but still in scope. qa scope set <in-scope|out-of-scope>
<requirement-id>... takes requirements out of scope or puts them back; an out-of-scope requirement
stays in the file but is left out of coverage and the traceability matrix, and changing it reopens
an approved scope gate. qa cases add --path <path> validates a test case written as JSON — it must link to at
least one requirement, and every linked id must actually exist in artifacts/scope.json — and
registers it under artifacts/cases/<id>.json. qa cases render <id> renders a registered test
case as a numbered Markdown document (metadata, preconditions, steps, expected result), so it can
be handed to a stakeholder instead of raw JSON. qa approve <gate> --artifact <path>
--approved-by <name> [--note <text>] hash-binds an approval to a pipeline gate (scope, cases,
approved in order); qa validate recomputes every gate's status from the approval ledger and
re-checks every registered case's requirement links, exiting non-zero for a reopened gate or an
unlinked case. qa validate --run also sweeps every recorded run result for a fabricated
evidence link or a failed result with no registered evidence, whether it came from qa run or
from interactive case execution. qa run --spec <path> [--spec <path> ...] [--test-type e2e] [--environment <name>] [--identity <name>] [--workers <n>] [--timeout-ms <ms>]
runs a spec set through the runner for its test type and persists every result under
.qa/runs/<run-id>/. Browser specs start signed in as --identity, else the environment's identity
(P6-89); the run record names it. qa report [--run <run-id>] [--format markdown|html] renders that run's
summary and the current requirement → case → result → evidence traceability matrix — defaulting to
the most recently started run — from the canonical JSON already recorded under .qa/, with no
hand-written report path. --output [path] also saves the full Markdown run-result report (summary, case
table, failure reasons, spec runs, accessibility, defects, approved RCA) to artifacts/reports/run-result-<date>.md
or the given .md path. Every command supports --json for machine-readable output and exits
non-zero on failure.
Part of QA-AI-STLC. See the repository root for license, contributing and security information.
