---
id: TST-CRM-ENT-797
title: CRM configuration layout fixtures
kind: browser-lifecycle
product_area: crm
module: entities
revision: 1
status: draft
source_sha:
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
repository: react-console
files:
  - e2e/layout/contact-types-list.spec.ts
  - e2e/layout/organization-type-editor.spec.ts
implements: []
environment: mock
implementation_state: implemented
latest_result: not-run
latest_run_at: null
latest_run_ref: null
conformance: not-verified
estimated_minutes: null
estimate_basis: >-
  No measured duration is available for this cohesive group; per-file allowances
  are not runtime estimates.
isolation: >-
  The layout harness supplies catalogue fixtures and isolates browser state. It
  owns generated screenshots and snapshot comparisons, not development CRM rows.
  Only the two Entities configuration files are selected; shell, form-engine and
  data-job layouts remain with their owning modules.
binding_scope: >-
  Bindings preserve the existing assertion contributions and exact source file.
  Composite scenarios still require every bound contribution and any unbound
  checks; consolidation does not certify conformance.
bindings: []
evidence:
  - 'react-console:e2e/layout/contact-types-list.spec.ts'
  - 'react-console:e2e/layout/organization-type-editor.spec.ts'
source_observations:
  - provenance: test
    source: 'react-console:e2e/layout/contact-types-list.spec.ts'
    declared_test_titles:
      - \n
      - >-
        the table has no ID or Status column, and only an inactive row wears a
        pill beside its name
      - Copy ID copies the row's id from the keyboard and changes nothing else
      - Copy ID reports a refused clipboard
      - 'search, Show Inactive, sort and selection still work'
    skipped_declarations: []
    dependency_summary: >-
      The console and browser render real components while fixture handlers
      supply remote responses.
  - provenance: test
    source: 'react-console:e2e/layout/organization-type-editor.spec.ts'
    declared_test_titles:
      - 'the five panels are siblings, in order, and none contains another'
      - 'every header switch is vertically centred in its header, at every width'
      - 'the editor renders at the Standard page width, like a configuration list'
      - 'a chosen role in Applicable Contact Roles carries one tick, not two'
      - >-
        opening Applicable Contact Roles focuses its search without moving the
        page
      - >-
        opening a compliance rule's role picker focuses its search without
        moving the page
      - >-
        CC and BCC are hidden until asked for, and collapsing them keeps what
        was typed
      - a saved CC or BCC is on screen the moment the editor opens
      - >-
        switching the notification off and on again keeps the e-mail that was
        written
      - >-
        there is no way to remove the e-mail: it is part of a notification that
        is on
      - 'the editor, with compliance and its notice switched on'
      - the editor at a narrow width
      - 'the preview dialog, rendered for one of the mock organization''s contacts'
    skipped_declarations: []
    dependency_summary: >-
      The console and browser render real components while fixture handlers
      supply remote responses.
product_intent: proposed
implementation_evidence: observed
narrative:
  status: enriched
retries: none
proves_controls: []
lifecycles:
  create: not-exercised
  change: not-exercised
  archive: not-applicable
  delete: not-exercised
  merge: not-applicable
  reconcile: not-applicable
lifecycle_gaps:
  - FND-CRM-ENT-091
  - FND-CRM-ENT-092
  - FND-CRM-ENT-094
command: >-
  npx playwright test --config playwright.layout.config.ts --workers 1 --retries
  0 e2e/layout/contact-types-list.spec.ts
  e2e/layout/organization-type-editor.spec.ts
---

# CRM configuration layout fixtures

## Verification Boundary

The selected crm configuration layout fixtures files cross the browser interaction boundary described below.

## What This Suite Proves

The configuration layout fixtures inspect contact-type list presentation and organization-type editor geometry and interactions using browser-rendered components. They establish only their visual and interaction assertions under the fixture viewport. No control is claimed without an independently mapped refusal case.

## What It Does Not Prove

A layout snapshot cannot establish stored catalogue creation, permission enforcement or deletion. It cannot certify a screen-reader audit or every viewport. Live configuration journeys own catalogue persistence; these fixtures are supplementary presentation evidence.

## Level and Rationale

Browser rendering is required to establish interactions and layout under the selected fixtures. Pure component functions cannot establish the displayed composition. The absence of a real backend limits the level’s claim to presentation; choosing a browser runner does not make these fixtures end-to-end record proof.

## Lifecycle Coverage

Create, change and delete are not exercised against persisted catalogues. Archive does not apply to classification presentation, and inactive display is a change. Reconcile is outside the layout proof boundary; merge belongs to Data Quality.

## Real Dependencies and Test Doubles

The browser and rendered console components are real; fixture handlers supply CRM records and remote answers. This boundary does not include a real CRM database or service authorizer. The environment is mock, and the empty proof bindings prevent a fixture-rendered value from becoming a persistence claim.

## Must Not Be Doubled

Keep the actual rendered components and browser interactions under test. Do not replace the editor’s state changes with precomputed screens. Fixture responses are explicitly allowed here, but they must stay identified as fixtures; no persisted record or server-side authority assertion may rely on them.

## Fixtures and Isolation

The layout harness supplies catalogue fixtures and isolates browser state. It owns generated screenshots and snapshot comparisons, not development CRM rows. Only the two Entities configuration files are selected; shell, form-engine and data-job layouts remain with their owning modules.

## Determinism and Retries

The invocation fixes worker count and disables retries. Snapshot tolerances are whatever the pinned layout tests declare; this register invents no visual-fidelity threshold and reports no snapshot pass.

## How It Runs

Use the exact command in the frontmatter from the owning repository. The command selects this register’s browser boundary and limits worker count. Acceptance commands use run-marked development fixtures; fixture and controlled projects retain their distinct environments. The register remains not-run because this authoring pass produces no execution report.

## Coverage Gaps

The lifecycle findings linked above identify every applicable partial or absent lifecycle in this register. A layout snapshot cannot establish stored catalogue creation, permission enforcement or deletion. It cannot certify a screen-reader audit or every viewport. Live configuration journeys own catalogue persistence; these fixtures are supplementary presentation evidence. Existing unbound files supply engineering observations; they do not silently implement additional capability or screen scenarios.
