# Changelog

All notable changes to `mgf-uitest-web` are documented here. The format follows
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and this project adheres
to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.1.1] - 2026-07-16

### Removed
- **The console-specific specs — they now live in the consoles that own them.**
  `tests/e2e/test_fedweb.py` and `tests/e2e/proofwarden/` (plus the top-level
  fed-web `console_launch` glue) moved to `mgf-fed-web` and `mgf-test-web`, each
  under its own `tests/e2e/`. A console's UI gate belongs next to the code it
  gates: a change to fed-web's chrome should red **fed-web's** CI, not this
  library's. It also removes this repo's only cross-repo coupling — the specs
  reached into sibling checkouts via hard-coded absolute paths
  (`/home/bassam/PycharmProjects/...`) and skipped when they were absent, which
  meant the "console specs" silently ran nowhere in CI. Each console now launches
  itself with `sys.executable`, so the console under test is always its own
  checkout.

  Nothing shipped changes: the wheel is unaffected (tests are not packaged in it)
  and the CI coverage gate is untouched at **95%** — it runs tiers 0-2, which
  never selected these tier-3 specs. The version moves because the **sdist** does
  carry `tests/`, so `0.1.0`'s sdist and this one differ in content (PAPER-130:
  a distribution must not mean two different things at one version).

  What stays here is the console-free half: the `Console` contract proven against
  a **stdlib static server**, so the library's own gate covers its ergonomic
  surface with no console repo present.

### Added
- Consoles pick the gate up simply by depending on this package: `mgf-fed`'s
  renderer (≥0.14.0) detects the dependency and splices a dedicated **`ui-gate`**
  step into that console's pipeline (mgf-standard ≥0.1.64 ships the fragment).

## [0.1.0] - 2026-07-16

### Added
- **Initial release — the browser-level UI-testing harness for the Magogi web
  consoles.** Drives each FastAPI + Jinja console in a real Chromium via Playwright
  (as a black-box subprocess) and asserts the pillars an in-process `TestClient`
  cannot see: **layout integrity** (no content spilling past its box), functional
  golden paths, **accessibility** (axe-core), **runtime health** (no console /
  network errors), across a width × theme matrix, plus a screenshot gallery.
- Ships a `pytest11` plugin (the `console` fixture + the responsive matrix) and the
  ergonomic `Console` API, so a console's UI spec is a handful of readable lines.
- Proven on `mgf-fed-web` and `mgf-test-web`; on its first runs it surfaced two real
  UI defects (a mobile-layout overflow and a WCAG-AA contrast failure) that the
  consoles' `TestClient` suites could not see.
- **Typed errors:** `UITestWebError` (the base for everything this library raises;
  subclasses `RuntimeError`) and `ServerStartError`, which carries machine-readable
  `returncode` + drained console `output` alongside its message.
- **The public contract** is documented in `PUBLIC_API.md` — all 15 names with a
  stability tier (all `experimental` at 0.1.0, per AP-11) and a one-line description,
  pinned to `__all__` by a test so it cannot drift.
- **Pinned browser, by design:** only Playwright's bundled Chromium is used — never a
  system-browser fallback. A different browser resolves CSS `@import`/relative URLs
  differently and invents findings that don't reproduce; an import-linter contract
  additionally forbids the harness from importing any web/UI framework, so the
  black-box promise is mechanical rather than aspirational.
- Standards conformance is certified per-rule in
  `docs/inprogress/MGF_STANDARDS_CONFORMANCE.md` (L2; all 265 corpus MUSTs accounted).
