Back to Plate

Slate v2 Test Candidate Map: 5558-5480

docs/slate-issues/test-candidate-map/5558-5480.md

53.0.68.6 KB
Original Source

Slate v2 Test Candidate Map: 5558-5480

Scope

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


Issue #5558

  • package: slate
  • TDD readiness: not-a-test-candidate
  • public test seam: Operation-specific type guards

Why Not A Direct Test Candidate

This is an API-surface request, not one failing behavior with a canonical red assertion.

Issue #5557

  • package: slate
  • TDD readiness: ready-now
  • public test seam: Transforms.moveNodes later-sibling destination semantics

Minimal Repro Setup

  • document with four sibling blocks
  • match the first two blocks
  • call Transforms.moveNodes(editor, { at: [], to: [2], match })

Expected Failing Assertion

  • destination semantics should be defined against the pre-operation tree, not drift with each intermediate move

Issue #5551

  • package: ecosystem
  • TDD readiness: not-a-test-candidate
  • public test seam: Firefox rowspan table selection

Why Not A Direct Test Candidate

This depends on a custom table plugin plus Firefox-specific selection behavior. It is too ecosystem-specific for a default core red test.

Issue #5550

  • package: ecosystem
  • TDD readiness: not-a-test-candidate
  • public test seam: Web Component selection drag boundary

Why Not A Direct Test Candidate

Web Component encapsulation changes the DOM ownership model itself. That is outside the normal supported renderer contract.

Issue #5548

  • package: docs-only
  • TDD readiness: not-a-test-candidate
  • public test seam: Editor.start root-path usage

Why Not A Direct Test Candidate

The thread already resolves this with the correct API usage.

Issue #5538

  • package: slate-react
  • TDD readiness: blocked-on-repro
  • public test seam: focus-to-end scroll jump

Current Blocker

The thread mixes app-specific focus logic with a later broader complaint, but never lands a clean reduced repro.

Issue #5537

  • package: docs-only
  • TDD readiness: not-a-test-candidate
  • public test seam: raw DOM focus across multiple editors

Why Not A Direct Test Candidate

No reduced repro, and the reported focus method bypasses Slate’s own focus utilities.

Issue #5533

  • package: cross-package
  • TDD readiness: not-a-test-candidate
  • public test seam: op-first collaboration layer without Yjs

Why Not A Direct Test Candidate

This is a roadmap and architecture requirement, not a single failing behavior.

Issue #5532

  • package: cross-package
  • TDD readiness: ready-now
  • public test seam: triple-click drag anchor stability

Minimal Repro Setup

  • official richtext example
  • enough lines to allow triple-click block selection
  • triple-click a block, then keep dragging the mouse

Expected Failing Assertion

  • selection anchor should remain stable during one continuous block-selection gesture

Issue #5524

  • package: slate
  • TDD readiness: ready-with-minor-setup
  • public test seam: vertical navigation across soft breaks

Minimal Repro Setup

  • text node containing embedded soft breaks like `text in here

another line`

  • place cursor at end of first visual line
  • move with ArrowDown into the empty line

Expected Failing Assertion

  • the resulting selection point should reflect the new soft-break position consistently, not reuse the old line state

Issue #5520

  • package: docs-only
  • TDD readiness: not-a-test-candidate
  • public test seam: Node.common docs wording

Why Not A Direct Test Candidate

This is reference wording, not a runtime failure.

Issue #5515

  • package: slate-history
  • TDD readiness: not-a-test-candidate
  • public test seam: global undo/redo semantics

Why Not A Direct Test Candidate

This is a semantics and API design request, not a single broken current behavior.

Issue #5509

  • package: slate-react
  • TDD readiness: ready-with-minor-setup
  • public test seam: MobX observer rerender DOM point resolution

Minimal Repro Setup

  • wrap a parent component in mobx-react-lite observer
  • render <Slate> below it
  • trigger parent rerenders while typing

Expected Failing Assertion

  • DOM point resolution should stay stable without needing an extra memo boundary around the editor subtree

Issue #5508

  • package: slate
  • TDD readiness: ready-now
  • public test seam: CustomEditor override of OmitFirstArg members

Minimal Repro Setup

  • define CustomEditor as in the Slate TypeScript docs
  • override one BaseEditor member typed with OmitFirstArg
  • check the inferred editor type in examples or a compile test

Expected Failing Assertion

  • the inferred editor type should stay specific instead of collapsing to any

Issue #5507

  • package: repo-only
  • TDD readiness: not-a-test-candidate
  • public test seam: dependency maintenance and test coverage debt

Why Not A Direct Test Candidate

This is repo maintenance, not a product or runtime behavior.

Issue #5498

  • package: ecosystem
  • TDD readiness: not-a-test-candidate
  • public test seam: leaf padding cursor skip

Why Not A Direct Test Candidate

Padding text leaves changes the consumer-rendered DOM shape itself. That is not a stable core contract bug.

Issue #5493

  • package: slate-react
  • TDD readiness: ready-with-minor-setup
  • public test seam: Android first-letter duplication and missing set_selection

Minimal Repro Setup

  • Android Chrome or equivalent emulation with composition input
  • empty editor or first-character composition path
  • type the first composed character

Expected Failing Assertion

  • the first composed character should be inserted once, with the correct set_selection progression rather than duplicate text

Issue #5490

  • package: slate
  • TDD readiness: ready-now
  • public test seam: Transforms.setNodes merge callback typing

Minimal Repro Setup

  • TypeScript compile test around Transforms.setNodes with a typed merge callback
  • use both object-valued and scalar-valued props

Expected Failing Assertion

  • merge should be typed to the actual per-key values it receives instead of a generic object-only shape

Issue #5488

  • package: slate-react
  • TDD readiness: not-a-test-candidate
  • public test seam: external value replacement without controlled value

Why Not A Direct Test Candidate

This is an API-design and ergonomics issue, not one broken runtime invariant.

Issue #5487

  • package: slate
  • TDD readiness: ready-now
  • public test seam: createEditor base type in plugin composition

Minimal Repro Setup

  • compose two plugins where the second depends on the first
  • start from createEditor()
  • check whether incorrect plugin order fails at compile time

Expected Failing Assertion

  • createEditor() should expose a base type that allows plugin-order mistakes to be caught instead of being masked by the global Editor type

Issue #5485

  • package: cross-package
  • TDD readiness: ready-with-minor-setup
  • public test seam: Chrome backspace then retype caret placement

Minimal Repro Setup

  • Chrome editor instance
  • type a word like testing
  • backspace the last character and type it again

Expected Failing Assertion

  • after retyping, the caret should remain after the inserted character instead of jumping behind it

Issue #5484

  • package: cross-package
  • TDD readiness: ready-with-minor-setup
  • public test seam: Keyman Malayalam composition

Minimal Repro Setup

  • public richtext example
  • Keyman with the Mozhi Malayalam keyboard
  • type the provided Malayalam sequence

Expected Failing Assertion

  • composed Malayalam text should preserve the intended letters instead of dropping characters

Issue #5482

  • package: repo-only
  • TDD readiness: not-a-test-candidate
  • public test seam: release policy and semver expectations

Why Not A Direct Test Candidate

This is release-process feedback, not a product behavior that belongs in a red test.

Issue #5481

  • package: cross-package
  • TDD readiness: ready-now
  • public test seam: iOS placeholder non-selectability

Minimal Repro Setup

  • official Slate examples on iOS Safari or WebView
  • clear the editor so the placeholder shows
  • double-tap or select the placeholder text

Expected Failing Assertion

  • placeholder text should not become partially selectable at all

Issue #5480

  • package: cross-package
  • TDD readiness: not-a-test-candidate
  • public test seam: browser spellcheck replacement side effects

Why Not A Direct Test Candidate

The thread points at an upstream Chromium fix and a later real-world confirmation that the issue is gone.