spectoflow 0.17.0 → 0.17.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -174,12 +174,18 @@ question at a time**, each with a recommendation anchored in the project's goals
174
174
  until the need is crisp; then it runs the normal workflow. It's additive: it feeds the router, never
175
175
  replaces it, and it's mode-aware.
176
176
 
177
- **End-to-end tests via Playwright MCP.** `init` idempotently wires a `playwright` entry into the target
178
- project's `.mcp.json` (and `.cursor/mcp.json` for Cursor) so the QA agent can drive a real browser and
179
- generate/run Playwright specs `npx` fetches the server on first use, so spectoflow stays zero-dep
180
- (the config lives in *your* project). If the MCP isn't available, `write-e2e-tests` falls back down a
181
- ladder (native browser tooling local Playwright write the spec and raise a `need`), never faking a
182
- pass. The durable artifact is always the committed `*.spec.ts`.
177
+ **End-to-end tests run headed, in the real browser, by default.** `write-e2e-tests` defaults to
178
+ **Playwright lib, `--headed`** for its own local runs — the browser window is visible so a flow that
179
+ "passes" for the wrong reason gets caught, not just a bare pass/fail line. `--ui` mode is used for
180
+ authoring a flow or chasing a failure interactively. It only steps down to headless, then
181
+ **Playwright MCP**, then the client's native browser tooling (e.g. Claude Code's Chrome extension), then
182
+ writing the spec and raising a `need` when you asked for something else or headed genuinely can't
183
+ launch, and it **always says why** via the `::spectoflow` sentinel, never a silent switch. CI keeps
184
+ running the committed suite headless — that's the pipeline's job, not a fallback. `init` idempotently
185
+ wires a `playwright` entry into the target project's `.mcp.json` (and `.cursor/mcp.json` for Cursor) so
186
+ the MCP rung works out of the box — `npx` fetches the server on first use, so spectoflow stays zero-dep
187
+ (the config lives in *your* project). The durable artifact is always the committed `*.spec.ts`; the
188
+ Workflow tab's End-to-end step shows this policy in its dashboard popover.
183
189
 
184
190
  A `governance` capability adds a **Spec Source Guardian** (skill `audit-source`): it keeps the spec
185
191
  (intent) and the code/tests (reality) coherent — flagging drift in both directions, never auto-fixing,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spectoflow",
3
- "version": "0.17.0",
3
+ "version": "0.17.5",
4
4
  "description": "Agent-agnostic spec-driven development framework + real-time local control plane. Markdown artifacts, intent router, workflow-by-scope.",
5
5
  "keywords": [
6
6
  "spec-driven-development",
@@ -66,6 +66,10 @@ Your **artifacts are markdown, and they live at the project root, not in here**:
66
66
  - **The framework lives here**; per-agent entry files are thin shims that point back — never duplicate
67
67
  framework content per agent.
68
68
  - **Agents are stable personas; skills are the evolving procedures.** Workflow → capability → agent → skill.
69
+ - **End-to-end tests run headed, in the real browser, by default** (`write-e2e-tests`) — Playwright lib
70
+ with `--headed`, `--ui` for authoring/debugging, stepping down (headless → Playwright MCP → native
71
+ browser tooling → write-and-raise-a-need) only when asked or blocked, always saying why. CI stays
72
+ headless — see the Workflow tab's End-to-end step for the details.
69
73
  - **Mode ≠ policy.** Mode is routine friction; policy is approvals required regardless of mode.
70
74
  - **Spec-anchored:** the spec is the intent of record; the code and tests are the enforced reality; the
71
75
  `spec-source-guardian` keeps them from drifting apart (it flags, it never silently auto-fixes).
@@ -32,11 +32,14 @@ after-the-fact check. Owns the test suite's health (signal, speed, isolation), n
32
32
  edge cases and failure paths — not just the happy path. Prefer the fastest level (unit) that gives
33
33
  real confidence; escalate to integration or `write-e2e-tests` only when the behaviour crosses a
34
34
  boundary (network, DB, filesystem, another service) that a unit test cannot honestly exercise.
35
- - **For end-to-end flows, drive the browser via Playwright MCP when available** (wired into the
36
- project's `.mcp.json` by `spectoflow init`), falling back down the `write-e2e-tests` capability
37
- ladder (native browser tooling local Playwright headed/codegen write the spec and raise a
38
- `need`). The committed Playwright spec is always the deliverable; live driving is only the means, and
39
- a flow you couldn't actually run is reported as such, never as a pass.
35
+ - **For end-to-end flows, run directly in the browser by default** — Playwright lib, **headed**
36
+ (`--headed`), so the run is watched live rather than judged by a bare pass/fail line; `--ui` for
37
+ authoring or chasing a failure interactively. Step down only when the user asked otherwise or headed
38
+ genuinely can't launch, following the `write-e2e-tests` ladder (headless Playwright MCP native
39
+ browser tooling write the spec and raise a `need`) **always announcing why** via the
40
+ `::spectoflow` sentinel, never a silent switch. CI keeps running the committed suite headless — that
41
+ is the pipeline's job, not a fallback. The committed Playwright spec is always the deliverable; live
42
+ driving is only the means, and a flow you couldn't actually run is reported as such, never as a pass.
40
43
 
41
44
  ## Definition of done
42
45
  Every acceptance criterion has a corresponding test, plus its meaningful edge cases (empty/null,