# `mgf-uitest-web` — scope policy

> This is `mgf-uitest-web`'s **scope policy** (federation rule family **SP**),
> independent of `mgf-common`'s SCOPE. A proposed addition belongs here only if it
> passes the gate in §3.

## §1 In scope (SP-01)

`mgf-uitest-web` is the **browser-level UI-testing harness for the Magogi web
consoles** — the tier an in-process `TestClient` can't reach (no CSS, no JS, no
real browser). It provides:

- a **black-box console launcher** (`live_server` / `ConsoleLaunch`) that runs a
  console's own CLI as a subprocess and drives it over HTTP in a real Chromium
  (Playwright);
- the **pillar checks** — layout integrity (`audit_layout`), accessibility
  (`scan_a11y`, axe-core), runtime health (`watch_health`), screenshots
  (`capture`);
- an ergonomic **`Console`** wrapper + a **`pytest11` plugin** (the `console`
  fixture, the responsive `viewport` × `color_scheme` matrix) so a console's UI
  spec is a handful of readable lines.

The boundary: **driving a web console's rendered UI in a real browser.** It is the
web half of the `mgf-uitest` family.

## §2 Out of scope (SP-02) — with reasons

| Not here | Why | Where instead |
|---|---|---|
| Qt / desktop (PySide) UI testing | different runtime (Qt vs browser) | future `mgf-uitest-qt` sibling |
| The consoles themselves | this harness *drives* them as black boxes; it never contains console code | `mgf-fed-web`, `mgf-test-web`, `mgf-cloud-web` |
| Test *execution* / tiering / coverage running | that is the runner's job | `mgf-test-supervisor` |
| The design tokens / component CSS under test | the shared design system | `mgf-brand-web` |
| Pixel-baseline visual regression | layout-integrity geometry is the deterministic signal; screenshots are an eyeball gallery, not a gated baseline | (n/a by design) |

## §3 The gate (SP-03)

A proposed addition is in scope iff: it is **framework-neutral browser-driving or
pillar-checking** that every web console needs, and it does **not** couple to any
one console's internals. Console-specific glue (how to launch it, what to assert)
lives in that console's own `tests/ui/`, not here.
