Packages

A real-browser external-app verifier for patch-safe Phoenix LiveView interactions, with secondary unstyled reference components.

Current section

Files

Jump to
Raw

CHANGELOG.md

# Changelog
## 1.3.0
### Added
- Deterministic directory suites through `--contracts DIR --out-dir DIR`. Suites
discover only first-level regular `*.json` files in lexical filename order, run
every valid contract independently, retain per-contract schema-v1 evidence, and
print a complete verdict summary.
- Whole-suite static preflight before browser launch, including duplicate contract
IDs, target policy, output mapping, and stale-result safety. `--validate-only`
validates the complete suite without creating its output directory.
- Explicit suite exit reduction: error (3), then inconclusive (2), then fail (1),
otherwise all pass (0). Existing single-contract exit behavior is unchanged.
- More legible deterministic terminal diagnostics with phase status, probe selector,
and one mismatch per line without changing result schema v1.
- `CUSTOM_APP_CONTRACTS.md`, an application-author guide based on real SeatMap,
Canvas, ScrollSpy, and Tooltip dogfood patterns.
Contract and result schema versions remain 1. Existing single-contract CLI fields,
result fields, verdicts, and exit codes are unchanged.
## 1.2.0
### Added
- Activation actions `{"type":"hover","selector":"..."}` and
`{"type":"scroll","selector":"..."}`. They use Playwright hit testing and
Playwright's deterministic `scrollIntoViewIfNeeded`.
- Patch triggers may use a real click or a restricted
`{"type":"press","selector":"...","key":"Enter"}` action. Keys are limited
to `Enter` and `Space`, allowing a patch while the pointer remains over a
hover-owned interaction without synthetic DOM clicks.
- Attribute expectations with a required selector and attribute, and exact
`before`/`after` `value` assertions. Values are strings or `null`, where `null`
asserts attribute absence.
- Optional `selector` on `node_identity`, retaining and comparing that target's
exact pre-patch DOM object; omission continues to target the subject.
- Optional unique selectors on `popover` and `dialog` probes, while preserving
subject-local patch proof. Probe selectors are not restricted to descendants.
- Deterministic polling of declared activation and post-patch expected state within
the existing timeout, plus action-target convergence after navigation, without
sleeps in the public vocabulary.
Contract and result schema versions remain 1. Existing fields, verdicts, and exit
codes are unchanged.
## 1.1.0
### Added
- `mix live_interaction_contracts.check` for running strict v1 interaction
contracts against an already-started LiveView application in a real browser.
- Portable `node_identity`, `popover`, `dialog`, and `focus` probes with explicit
subject-local patch acknowledgment.
- Atomic JSON evidence with distinct `pass`, `fail`, `inconclusive`, and `error`
verdicts and stable exit codes 0–3.
- Consumer runner integration tests, isolated Hex package smoke coverage, and CI
dogfood for coherent and intentionally torn interactions.
- A versioned product blueprint for the AI generation-to-evidence workflow.
### Changed
- Updated the stable evidence target to Phoenix LiveView 1.2.7, Phoenix 1.8.9,
and Plug 1.20.3.
- Bound generated delegation ledgers to the evidence produced by the same harness
run and added a durable LiveView 1.2.7 three-browser baseline.
- Preserved caller toolchain paths when the conformance task launches its shell,
allowing mise/asdf-managed Elixir installations to run the fixture.
### Security
- Consumer contract runs reject cross-origin navigation and unexpected pages.
- Output/contract path collisions are rejected, and stale evidence is removed or
atomically replaced so an old pass cannot hide a new failure.
No existing 1.x Mix task, component API, or dependency requirement is removed.