Back to Plate

Slate v2 Test Candidate Map: 6038-6007

docs/slate-issues/test-candidate-map/6038-6007.md

53.0.65.2 KB
Original Source

Slate v2 Test Candidate Map: 6038-6007

Scope

These TDD handoff notes cover issues #6038 through #6007 from the pilot set. Use the top-level index for range navigation and the dossiers for fuller thread context.


Issue #6038

  • package: slate
  • TDD readiness: not-a-test-candidate
  • public test seam: Editor.withBatch, Transforms.applyBatch, editor.apply

Why Not A Direct Test Candidate

This is an architecture/performance tracking issue, not a single failing user behavior with one canonical red assertion.

Useful Test Extraction

  • perf harness seam: packages/slate/test/perf/set-nodes-bench.js
  • semantic seams already implicated:
    • Transforms.applyBatch(editor, ops)
    • Editor.withBatch(editor, fn)
    • editor.apply(op) wrappers
    • mid-batch editor.children observation

Red-Test Direction

Do not write one giant “fix #6038” test. Slice it into concrete behaviors:

  • batched exact set_node preserves published-node immutability
  • custom editor.apply wrapper still observes correct state after downstream apply
  • mixed batched tree ops match manual batched semantics

Issue #6034

  • package: slate-dom and slate-react
  • TDD readiness: ready-now
  • public test seam: table example style editor with DOM selection and arrow-key navigation

Minimal Repro Setup

  • editor whose last top-level node is a table
  • no trailing paragraph after the table
  • DOM-backed selection at the end of the last table cell

Minimal Sequence

  1. Render the official table example shape with the table as the last node.
  2. Place the caret at the last valid position inside the table.
  3. Fire ArrowDown.
  4. Insert a character.

Expected Red Assertion

  • the selection should remain at a valid editor position
  • the inserted character should appear only once
  • no DOM selection should end up outside the table/editor boundary

Notes

This wants an integration-style DOM test, not a unit test against private helpers. The bug is about browser/editor boundary behavior, so anything lower-level would be lying.


Issue #6022

  • package: slate-dom and slate-react
  • TDD readiness: ready-with-minor-setup
  • public test seam: mobile/IME-style mark toggle plus typing on collapsed selection

Minimal Repro Setup

  • editor with a collapsed selection inside a text node
  • mark toggle command available through the public editor surface
  • test harness able to model or approximate the Android selection/typing sequence

Minimal Sequence

  1. Focus the editor with a collapsed selection.
  2. Toggle a mark such as bold.
  3. Type one character.

Expected Red Assertion

  • the selection should advance to the inserted marked text
  • it should not oscillate back to the previous text node
  • typing should continue from the new marked position rather than collapsing the input session

Current Blocker

The issue is richly specified, but true Android keyboard-dismiss behavior may not be directly testable in the current browser test harness. The likely first red test is the selection oscillation, not the keyboard dismissal itself.

Useful Thread Evidence Already Extracted

  • observed op sequence:
    • insert_node
    • repeated set_selection bouncing between [0,0] and [0,1]
  • workaround implied by reporter:
    • applying the mark on an expanded selection avoids the failure

Issue #6016

  • package: slate-dom and slate-react
  • TDD readiness: ready-now
  • public test seam: dual-editor render with the same Slate value reference

Minimal Repro Setup

  • two editors rendered concurrently
  • both editors receive the same exact node-object graph as their initial value

Minimal Sequence

  1. Create one Slate value object.
  2. Render two <Slate> editors using that same object reference.
  3. Focus or interact so DOM selection resolution runs.

Expected Failing Assertion

  • rendering or interaction should not crash with node-path lookup failure across editors

Important Qualification

This is ready as a v2 capability test, not as a current-Slate obligation. For current Slate, the thread strongly suggests this usage is unsupported.


Issue #6013

  • package: slate-react
  • TDD readiness: ready-now
  • public test seam: <Slate editor={editor}> render without initialValue

Minimal Repro Setup

  • create an editor instance
  • assign a valid non-empty editor.children
  • render the Slate component without initialValue

Minimal Sequence

  1. Create editor.
  2. Set editor.children to a valid document.
  3. Render <Slate editor={editor}>...</Slate>.

Expected Failing Assertion

  • render should succeed without the current initialValue is invalid error

Notes

If this is ever implemented, the test should also cover the guardrail case discussed in the thread: empty editor.children without initialValue should still produce an intentional warning or explicit behavior.


Issue #6007

  • package: docs-only
  • TDD readiness: not-a-test-candidate
  • public test seam: none

Why Not A Direct Test Candidate

This is release-process integrity, not editor behavior.

Useful Extraction

  • if this matters later, it belongs in release automation or supply-chain verification checks, not Slate editor tests