Render states and regression

async layoutlens.capture_state(source, *, viewport='desktop', timeout=30000, wait_for_selector=None, revision=None, browser='chromium', color_scheme='light', reduced_motion='reduce', locale='en-US', timezone_id='UTC', device_scale_factor=None)[source]

Capture a URL or HTML source as a portable render state.

Parameters:
  • source (str | Path) – URL or local HTML file; screenshot-only inputs are unsupported.

  • viewport (ViewportType | tuple[int, int]) – Named browser viewport or (width, height) in CSS pixels.

  • timeout (int) – Navigation and readiness timeout in milliseconds.

  • wait_for_selector (str | None) – Optional application readiness selector.

  • revision (str | None) – Optional source revision recorded for later attribution.

  • browser (str) – Local Playwright engine: chromium, firefox, or webkit.

  • color_scheme (str) – Emulated light, dark, or no-preference color scheme.

  • reduced_motion (str) – Emulated reduce or no-preference motion preference.

  • locale (str) – Browser locale.

  • timezone_id (str) – Browser timezone.

  • device_scale_factor (float | None) – Optional DPR override for the viewport.

Returns:

A versioned render state; use its save method to establish a baseline.

Return type:

RenderState

async layoutlens.capture_page(page, *, source=None, timeout=30000, revision=None, config=None)[source]

Capture an already prepared page without changing its interaction state.

Parameters:
  • page (Page) – Playwright page, including any caller-established interaction state.

  • source (str | None) – Source label recorded in the artifact.

  • timeout (int) – Maximum wait for fonts and images, in milliseconds.

  • revision (str | None) – Optional verified source revision label for attribution.

  • config (BrowserConfig | None) – Requested emulation settings recorded alongside measured conditions.

Returns:

Browser measurements and screenshot with explicit completeness status.

Return type:

RenderState

layoutlens.diff(before, after, *, tolerance_px=1, policy='qualified', qualifications=None, verifications=None, repository=None)[source]

Compare persisted measurements without a browser or model call.

Parameters:
  • before (RenderState) – Baseline render state.

  • after (RenderState) – Candidate render state.

  • tolerance_px (float) – Significance tolerance for geometric movement in CSS pixels.

  • policy (GatePolicy) – Qualified gates by default, explicit findings, or report-only nothing.

  • qualifications (list[Qualification] | None) – Independent rule qualification records; none ship by default.

  • verifications (list[Verification] | None) – Recorded review or independent evidence for individual findings.

  • repository (str | Path | None) – Optional local repository for revision-verified git attribution.

Returns:

Structured observations, candidate regressions, and completeness status.

Return type:

DiffReport

class layoutlens.RenderState(*, schema_version=2, source, environment, graph, capabilities=<factory>, geometry=<factory>, loading=<factory>, accessibility=<factory>, dom='', detector_evidence=<factory>, detector_config=<factory>, rule_version='1', coverage_gaps=<factory>, stable=True, revision=None, screenshot=b'')[source]

A replayable capture with screenshot bytes kept outside its manifest.

Parameters:
property fingerprint: str

Bind review evidence to the exact captured facts and screenshot.

save(directory)[source]

Save a new artifact directory; refuse to overwrite a baseline.

Parameters:

directory (str | Path)

Return type:

Path

classmethod load(path)[source]

Load a versioned artifact and verify every referenced asset.

Parameters:

path (str | Path)

Return type:

RenderState

diff(after, **options)[source]

Compare this baseline with a candidate without opening a browser.

Parameters:
Return type:

DiffReport

class layoutlens.DiffReport(*, schema_version=1, before, after, matches=<factory>, deltas=<factory>, incomplete_reasons=<factory>, policy='qualified', tolerance_px=1, explanation=None)[source]

Structured comparison whose gate status never depends on prose.

Parameters:
property gate_status: Literal['pass', 'fail', 'incomplete']

Distinguish missing evidence from a successful comparison.

to_json()[source]

Serialize evidence and the derived gate status.

Return type:

str

summary()[source]

Describe the result without interpreting observations as defects.

Return type:

str

class layoutlens.VisualDelta(*, element, before_element=None, after_element=None, before_bbox=None, after_bbox=None, changed_properties=<factory>, pixel_region=<factory>, measured_delta=<factory>, defect_class=None, evidence=<factory>, severity='note', level='observation', status='changed', likely_source=<factory>, gateability=<factory>)[source]

Measured change, diagnosis, and independently evaluated gate decision.

Parameters:
class layoutlens.Qualification(*, rule, rule_version, configuration, conditions, dataset_sha256, independent, sealed, true_positives, false_positives, provenance)[source]

Independent, sealed precision evidence for one versioned rule.

Parameters:
property precision_interval: tuple[float, float]

Return the two-sided 95% Wilson interval, including empty samples.

qualifies(rule, version, configuration, conditions)[source]

Require exact rule/configuration and applicable capture conditions.

Parameters:
Return type:

bool

class layoutlens.Verification(*, state_sha256, rule, selector, evidence, reviewer, resolved_exceptions=<factory>, independent_support=False)[source]

Auditable exception resolution or independent support for one finding.

Parameters:
  • state_sha256 (str)

  • rule (str)

  • selector (str)

  • evidence (str)

  • reviewer (str)

  • resolved_exceptions (list[str])

  • independent_support (bool)

supports(finding, state_sha256)[source]

Require complete exception resolution and recorded supporting evidence.

Parameters:
  • finding (dict)

  • state_sha256 (str)

Return type:

bool