---
id: TST-CRM-DQ-179
title: Duplicate console with mock responses
kind: browser-lifecycle
product_area: crm
module: data-quality
revision: 1
status: draft
source_sha:
  services-crm: a8d1364f1dd44b723bb5f9acba12f983e9ec8d69
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
  rhythm-v2-docs: 61315bb0538e230286687677da2b04b1d33f162b
repository: react-console
files:
  - e2e/mock/duplicates/entry-points.spec.ts
  - e2e/mock/duplicates/merge.mock.spec.ts
  - e2e/mock/duplicates/review.mock.spec.ts
implements: []
environment: mock
command: npx playwright test -c playwright.mock.config.ts e2e/mock/duplicates --workers=3
gate: >-
  This is the mock browser tier; passing results need separate service evidence for
  persisted behavior.
implementation_state: implemented
implementation_evidence: observed
latest_result: not-run
conformance: not-verified
estimated_minutes: 30
isolation: Each browser context uses mock fixtures; no deployed configuration is changed.
retries: none
proves_controls: []
evidence:
  - provenance: test
    source:
      - 'react-console:e2e/mock/duplicates/entry-points.spec.ts'
      - 'react-console:e2e/mock/duplicates/merge.mock.spec.ts'
      - 'react-console:e2e/mock/duplicates/review.mock.spec.ts'
  - provenance: documented
    source: 'rhythm-v2-docs:specs/CONVENTIONS.md#10.6 Executable Test Suite'
lifecycles:
  create: partial
  change: partial
  archive: not-applicable
  delete: not-exercised
  merge: partial
  reconcile: not-applicable
lifecycle_gaps:
  - FND-CRM-DQ-074
lifecycle_notes:
  archive: >-
    Archiving ordinary CRM records belongs to Entities; these tests concern duplicate
    review and identity combination.
  reconcile: This runner does not establish deployed recovery.
  delete: Browser fixture teardown does not establish deletion of a persisted CRM record.
---

# Duplicate console with mock responses

## Verification Boundary

A real browser and production console components consume MSW responses. CRM transactions, background jobs and permission evaluation are replaced by handlers.

## What This Suite Proves

The queue, record entry points and merge workspace use the console adapters, display refusals and expose actions according to supplied permission keys. No capability scenario is mapped to this selection yet; its file inventory records existing executable coverage without assigning product proof. No control claim is assigned without a check that fails when the control is removed.

## What It Does Not Prove

Mock responses do not prove service authorization, persistence or atomicity. The service integration and local API registers carry those boundaries.

## Level and Rationale

A browser is needed to check the visible controls, navigation and adapter requests. Lower-level service checks cannot establish those screen outcomes.

## Lifecycle Coverage

Plan creation, review changes and merge completion receive partial credit only for their browser behavior against mock responses. They establish no CRM persistence or transaction result. Deletion is not exercised: closing a browser context is fixture cleanup, not a record lifecycle assertion. Archive and reconciliation remain outside this selection.

## Real Dependencies and Test Doubles

A real browser and production console components consume MSW responses. CRM transactions, background jobs and permission evaluation are replaced by handlers.

## Must Not Be Doubled

Keep the rendered components and request adapters real; replacing them would remove the console behavior under examination.

## Fixtures and Isolation

The mock project supplies fixed records and response handlers in each browser context. These selections do not change deployed rules or need shared-service cleanup.

## Determinism and Retries

The register records no new runtime result. Existing polling and fixture clocks remain part of the authored tests; polling for completion is not a retry of a failed case. Run with at most three workers and diagnose a failure before rerunning it.

## How It Runs

The frontmatter records the scoped command and its runner tier. Supply the configuration and fixtures required by that Playwright project.

## Coverage Gaps

The selection has no scenario mapping; mapping requires comparing the assertions with a complete scenario outcome. The capability gap records identify unbound obligations, and the grouped-suite finding records incomplete lifecycle and runtime coverage.
