plate Documentation

Rich-text editor with AI and shadcn/ui

16,651 stars TypeScript TypeScript 1 file ยท ~180,604 tokens #ai#mcp#react#shadcn-ui#slate#typescript#wysiwyg
RAW Doc

Technical Documentation: udecode/plate

โ„น๏ธ Provenance: Multi-Tier Ingestion ยท CodeWiki Reference

Overview (`README.md`)

Plate

Templates

You can choose one of the following templates to get started:

Option Plate Plugins AI Backend
Notion-like template โœ… โœ… โœ… โœ…
Plate playground template โœ… โœ… โœ…
Plate minimal template โœ…

Documentation

You can learn more about Plate by checking out our documentation.

Contributing

To get started, check out our contributing guide.

Contributors

We'd love for you to join us! Whether it's through giving us a ๐ŸŒŸ star, making a ๐Ÿ“ฅ pull request, or sharing your plugins, your help is always appreciated.

Need more help? Join us on Discord. We're always here to guide you.

ไธญๆ–‡ๆ–‡ๆกฃ

ๆ‚จๅฏไปฅ้€š่ฟ‡ๆŸฅ็œ‹ๆˆ‘ไปฌ็š„ไธญๆ–‡ๆ–‡ๆกฃไบ†่งฃๆ›ดๅคšๅ…ณไบŽPlate็š„ไฟกๆฏใ€‚ๅฆ‚ๆžœๆ‚จ้œ€่ฆไธญๆ–‡ๆ”ฏๆŒ๏ผŒๆฌข่ฟŽๅŠ ๅ…ฅๆˆ‘ไปฌ็š„Discordไธญๆ–‡้ข‘้“๏ผŒๆˆ‘ไปฌ็š„็คพๅŒบๆˆๅ‘˜ๅฐ†ๅพˆไนๆ„็”จไธญๆ–‡ไธบๆ‚จ่งฃ็ญ”้—ฎ้ข˜ใ€‚

ๅฏนไบŽ่ดก็Œฎ่€…๏ผŒๆˆ‘ไปฌไนŸๆไพ›ไบ†ไธญๆ–‡่ดก็ŒฎๆŒ‡ๅ—๏ผŒๅธฎๅŠฉๆ‚จๅ‚ไธŽๅˆฐPlate็š„ๅผ€ๅ‘ไธญใ€‚


Overview (`.changeset/README.md`)

Changesets

Hello and welcome! This folder has been automatically generated by @changesets/cli, a build tool that works
with multi-package repos, or single-package repos to help you version and publish your code. You can
find the full documentation for it in our repository

We have a quick list of common questions to get you started engaging with this project in
our documentation.


Overview (`apps/www/README.md`)

Documentation

This is the documentation for the Plate project.

Usage

Anytime you make a change in the registry folder, run:

bash
pnpm build:registry

License

MIT


Overview (`benchmarks/editor/README.md`)

Editor Evidence

This directory is an Evidence Kit lab for editor framework benchmark research.

It replaces the old standalone Next/Vite benchmark app. The default owner is
now evidence artifacts, not browser app scaffolding.

Commands

sh
npm run evidence:inspect
npm run research:list
npm run research:editor-frameworks:fetch
npm run test:evidence
npm run fuzz
npm run bench:evidence
npm run bench:rich-text:check
npm run bench:startup:check
npm run bench:package:gates
npm run bench:scope
npm run evidence:health
npm run evidence:refresh
npm run docs:perf
npm run docs:perf:search -- editor benchmark
npm run evidence:full

Source Map

Primary target list:

  • Slate v2
  • Slate

Primary source config:

  • research/editor-frameworks-sources.json

Primary benchmark registry:

  • research/benchmark-registry.json

Active Benchmark Matrix

benchmarks/results/rich-text-editors-latest.json is the broad benchmark
matrix. It imports active artifacts from research/benchmark-registry.json.
Old one-off benchmark JSON files do not count unless they are registered there.
The active scope is Slate v2 vs Slate only.

Measured Slate v2 families:

  • React huge-document legacy compare
  • React rerender breadth
  • React huge-document overlays
  • React huge-document browser trace
  • React active typing breakdown
  • Core normalization, query/ref observation, node transforms, text/selection,
    editor store, and refs/projection
  • Core huge-document, normalization, observation, and history compares against
    Slate
  • Clipboard large payload, collab readiness, and issue #6038 transaction
    execution rows

Local source targets:

  • Slate v2
  • Slate

Slate baseline rule:

  • Use Slate chunk-on as the baseline. Do not emit chunk-off rows in active
    comparison output.

The first direct runtime comparison still lives in:

  • benchmarks/results/slate-v2-legacy-latest.json

The comprehensive result lives in:

  • benchmarks/results/rich-text-editors-latest.json

The health and next-action report lives in:

  • benchmarks/results/benchmark-health-latest.json

Rule

Do not restore the old app/template lab by default. Do not promote random
historical tmp JSON. Add a registry entry, target-owned adapter, fuzzer, corpus
case, benchmark row, or source-pass note when a comparison needs new evidence.


Overview (`benchmarks/targets/README.md`)

Benchmark Targets

This directory is the migration spine for Slate benchmark work.

The target registry answers one question: what benchmark decision are we
measuring, and how does an agent run or optimize it?

Ownership

  • Benchmark implementation lives beside the runtime/package code it measures.
  • benchmarks/targets/slate-v2.json names active benchmark targets, cohorts,
    metrics, commands, correctness checks, artifacts, and source links.
  • Autoresearch sessions optimize one target id at a time.
  • Evidence Kit is a legacy import/report archive until generated reports move
    to this registry.

Commands

bash
pnpm bench:targets:list
pnpm bench:targets:check
pnpm bench:targets:report
pnpm bench:targets:report:check
pnpm bench:targets:dry-run -- react-active-typing-breakdown
pnpm bench:targets:run -- react-active-typing-breakdown
node tooling/scripts/bench-targets.mjs autoresearch-init react-active-typing-breakdown

bench:targets:dry-run is read-only. It checks the registry and prints the
Autoresearch setup plan for the target. Use autoresearch-init only when you
want to create or replace the real .tmp/slate-v2/autoresearch.* session files.
For operator workflows, invoke the slate-ar* skills instead of package
scripts.

Use pnpm bench:targets:import-evidence-kit only while migrating active rows
from benchmarks/editor/research/benchmark-registry.json. After the cutover,
edit target definitions here directly.

Target Contract

Each target has:

  • id: stable command-facing id
  • question: decision the benchmark answers
  • owner: runtime/package owner
  • family and kind: grouping for reports
  • cwd and command: repo-relative run location and command
  • metrics: primary metric, direction, unit, and whether output prints
    METRIC name=value
  • correctness: command that prevents speed wins from breaking editor behavior
  • artifacts: result files produced by the target
  • docs: supporting evidence links
  • migration: temporary provenance while Evidence Kit is being retired

Benchmark output should move toward native METRIC and ARTIFACT lines. Until
then, Autoresearch can wrap timing with metrics.printsMetric: false.

Generated Outputs

pnpm bench:targets:report writes:

  • benchmarks/targets/history/slate-v2-latest.json
  • benchmarks/targets/reports/slate-v2.md

These are the target-registry replacement for Evidence Kit's active
health/report surface. They summarize target status from registered artifacts.
They do not run expensive benchmarks.

pnpm bench:targets:dry-run -- <target-id> checks the registry, builds the
report model in memory, and asks Autoresearch for a setup plan for that target.
Use it before starting a real optimization loop.


Overview (`docs/editor-behavior/README.md`)

Editor Behavior Docs

This directory is the source of truth for editor-behavior standards and
coverage.

Use it to answer three different questions:

  1. What is the decision model?
  2. What behavior do we want?
  3. What is actually covered right now?

Start Here

  • Read markdown-standards.md first.
    It defines the authority methodology:
    • syntax specs first
    • choose references per concrete surface, not by broad category default
    • use candidate pools such as Typora, Obsidian, Google Docs, Notion,
      GitHub, and Milkdown as routing hints, not governing winners
  • If you want to resume or operate this lane without re-reading everything,
    start with
    commands/README.md.

File Guide

  • markdown-parity-matrix.md
    The family-level coverage gate.
    Use this to see:

    • which existing feature families are covered
    • what evidence exists
    • what is deferred
    • what still blocks a release
  • master-roadmap.md
    The canonical remaining implementation roadmap.
    Use this to see:

    • what is already closed
    • what still remains to implement
    • lane order and next-batch sequencing
    • which supporting plans own each remaining lane
  • editor-protocol-matrix.md
    The exhaustive scenario matrix.
    Use this to see:

    • the protocol schema for scenario-complete behavior coverage
    • row-level scenarios, authorities, and evidence mapping
    • scenario dimensions for full behavior coverage
    • which rows are tested, specified, partial, or deferred
    • which interaction classes are still deferred into the integration red suite
  • markdown-editing-spec.md
    The normative behavior spec.
    Use this to see:

    • invariants
    • ownership rules
    • canonical behavior examples
    • locked policy calls
  • markdown-editing-reference-audit.md
    Reference evidence.
    Use this to see:

    • what the first Typora / Milkdown audit says
    • where that first audit still matters
    • where newer Obsidian research adds stronger product pressure
    • where Plate had to choose
  • editor-behavior-architecture.md
    Long-horizon architecture.
    Use this when the question is:

    • should behavior stay plugin-scattered?
    • what would a profile-driven model look like?
    • how would Plate support Typora / Obsidian / Notion / Docs-style profiles cleanly?

Supporting Dirs

Reading Order

If you want the big picture

  1. markdown-standards.md
  2. editor-behavior-architecture.md
  3. markdown-parity-matrix.md
  4. master-roadmap.md

If you want the current release gate

  1. markdown-parity-matrix.md
  2. commands/README.md
  3. 2026-04-02-editor-behavior-major-execution.md only when you need the historical execution trail

If you want to resume or maintain the lane

  1. commands/README.md
  2. master-roadmap.md
  3. markdown-parity-matrix.md
  4. 2026-04-02-editor-behavior-major-execution.md when you need batch history

If you want concrete behavior rules

  1. markdown-editing-spec.md
  2. markdown-editing-reference-audit.md
  3. docs/research when you need the
    compiled external-reference layer behind the audit

If you want exhaustive protocol coverage

  1. editor-protocol-matrix.md
  2. markdown-editing-spec.md
  3. markdown-parity-matrix.md

Practical Rule

  • Use the spec to define behavior.
  • Use the protocol matrix to enumerate exhaustive scenarios.
  • Use the parity matrix to decide whether a family is covered enough.
  • Use the audit when a rule needs external grounding.
  • Use the architecture doc only when the question is structural, not behavioral.
  • If two docs appear to say the same thing, the spec wins for law, the protocol
    matrix wins for exhaustive cases, and the parity matrix wins for ship gate.

Overview (`docs/performance/README.md`)

Performance Docs

This directory is the human-facing source of truth for Plate editor
performance work.

Read Order

  1. editor-performance-master-plan.md
    • the main program document
    • current state, key wins, remaining red lanes, and sequencing
  2. plate-vs-slate-benchmarks.md
    • benchmark narrative and forensic history
    • use this when you need to understand why a cut mattered
  3. editor-performance-next-phase-consensus.md
    • planning artifact for the earlier โ€œwhat nextโ€ decision
    • useful for rationale, not for the latest numbers
  4. performance-benchmark-spec.md
    • benchmark contract for the public Performance guide
    • defines scope, workloads, and claim boundaries
  5. 2026-04-04-standalone-benchmark-gap-analysis.md
    • why the standalone rich-markdown lab exposed a Plate mount gap
    • current diagnosis and next optimization targets
  6. 2026-04-03-affinity-redesign-plan.md
    • plan for the hard-affinity code-mark redesign
  7. 2026-04-03-remaining-basic-nodes-benchmark.md
    • plan for the remaining @platejs/basic-nodes census extension

Artifact Policy

  • Durable markdown lives here.
  • Raw benchmark JSON lives in .tmp/.
  • Older docs may still mention docs/plans/*.json from before the raw
    artifact move. When that happens, prefer the matching file in .tmp/.
  • Internal one-off planning/proof notes belong under docs/plans/, not
    here, unless they are directly useful to understanding the performance story.

Release Snapshot

As of 2026-04-03:

  • plain core is good enough versus Slate
  • insert-text perf is good enough
  • nodeId is no longer the cliff
  • the dedicated nodeId paste/import lane now exists, and it shows:
    • raw import is basically cheap
    • duplicate-id paste is the only remaining meaningful withNodeId hotspot
  • code-affinity redesign landed and materially improved the worst core-plugin
    lane
  • newly benchmarked remaining basic-nodes plugins split cleanly:
    • green enough: KbdPlugin, SubscriptPlugin, SuperscriptPlugin
    • still red: HighlightPlugin, StrikethroughPlugin

What Is Left After Release

If we ship now, the meaningful remaining performance work is:

  1. HighlightPlugin
    • currently still well behind Slate on the activated lane
  2. StrikethroughPlugin
    • same story; cheap mark path still too expensive
  3. Table selection
    • still a separate real hotspot, not solved by core editor work
  4. Performance-doc cleanup
    • some historical JSON artifact links still need cleanup/consolidation

What Is Not Worth Chasing Right Now

  • more cheap-mark surgery on bold/italic/underline
  • insert-text perf
  • more init-time nodeId surgery without a new duplicate-paste result
  • chunking rhetoric without a new workload
  • more code-affinity tuning unless behavior bugs appear

Overview (`docs/research/README.md`)

Agent Research Layer

This is the compiled research layer for Plate.

It exists to give future agents a stable, low-token, persistent reference
surface that sits between raw evidence and day-to-day task execution.

This is not a human PKM system. It is not an Obsidian workflow. It is not a
generic RAG bucket.

The raw evidence layer lives outside this repo in ../raw relative to the
Plate repo root. That private repo is assumed to be cloned locally when agents
need to verify or deepen compiled summaries.

Core idea

Most agent work still behaves like raw RAG:

  • read the repo
  • search scattered docs
  • search issues, plans, and learnings
  • stitch the answer together again from scratch

That works, but it wastes tokens and keeps rediscovering the same decisions,
the same caveats, and the same contradictions.

The better model is a compiled research layer:

  • raw evidence stays in ../raw
  • compiled summaries, decisions, concepts, and system maps live here
  • agents read this layer first
  • agents drop to ../raw only when they need verification, conflict
    resolution, or deeper evidence

The valuable artifact is not one answer in one chat. It is the maintained
markdown layer that makes the next agent faster and less likely to repeat old
mistakes.

Layers

1. Raw evidence

Private, source-heavy, and often copyright-sensitive material.

Expected location:

  • ../raw

Examples:

  • captured third-party editor docs
  • screenshots
  • extracted page text
  • local corpora
  • transcripts
  • external-source inventories

This layer is the evidence base. It is not the default answer surface.

Raw acquisition policy

Prefer the strongest stable acquisition method:

  1. official git repo clone
  2. official export or local cache
  3. page capture or scrape only when no better source exists

If an official git repo exists, use that as the canonical raw source instead of
inventing a scrape.

Examples:

  • Milkdown: official repo cloned under ../raw/milkdown/repo
  • Obsidian: official help and developer-docs repos cloned under ../raw/obsidian
  • Typora: local cached corpus copied into ../raw/typora

Raw snapshot metadata

Every raw source family should record enough metadata that future agents can
trust what they are reading.

Record at least:

  • canonical source URL or repo URL
  • local raw path
  • snapshot date
  • current revision when available:
    • git commit hash for repos
    • fetched timestamp for caches or exports
  • lightweight counts when useful

Raw sync policy

Do not refresh every raw source on every task. That is wasteful and noisy.

Refresh raw sources when:

  • the area is active in the current task
  • drift matters to the decision
  • the source has likely changed since the last meaningful ingest

When a raw source is refreshed:

  • update its raw README or metadata
  • append ../raw/log.md
  • refresh affected compiled pages if the new evidence changes them

2. Compiled research

This directory, docs/research, is the agent-facing compiled layer.

It contains:

  • source summaries
  • decisions
  • concepts
  • systems
  • entities
  • open questions
  • index and log files

This layer should be:

  • concise
  • metadata-first
  • link-heavy
  • easy to grep
  • safe to keep in the public repo

3. Agent contract

Agents should treat this directory as the default read layer for repo
knowledge.

The rule is simple:

  1. read docs/research/index.md
  2. read the relevant compiled pages
  3. only then drop to ../raw or broader repo search

Design rules

Stable paths beat cute structure

Keep the layout boring and guessable.

Current top-level structure:

  • index.md
  • log.md
  • schema.md
  • commands/
  • sources/
  • decisions/
  • concepts/
  • systems/
  • entities/
  • open-questions/

Do not split the research layer into parallel goal-specific silos like:

  • editor-behavior/
  • architecture/
  • plate-v2/
  • slate-v2/

That looks tidy for a week and then turns into duplicate pages and drifting
taxonomy.

Use one research layer, many domains, one page-type system.

commands/ is the one intentional support surface that is not a knowledge-type
bucket. It exists for repeatable operational workflows, not for domain pages.

One concept per file

Do not build giant mixed essays.

Good:

  • one file for one source summary
  • one file for one decision
  • one file for one concept
  • one file for one system map
  • one file for one entity

Bad:

  • giant pages that mix multiple concerns and force future agents to dig through
    noise

Organize by knowledge type, not by temporary project goal

This research layer should be DRY at the page-type level.

Use:

  • sources/ for compiled source summaries
  • entities/ for concrete named things
  • concepts/ for reusable abstractions and vocabulary
  • systems/ for larger maps and architecture surfaces
  • decisions/ for explicit conclusions
  • open-questions/ for unresolved ambiguity

Do not duplicate the same thing across multiple goal folders.

Examples:

  • one page for Typora
  • one page for Slate
  • one page for directional-affinity
  • one page for inline-void-atom
  • one page for editor-architecture-landscape
  • one page for footnote-refs-are-inline-void-atoms

That page can serve many goals:

  • editor-behavior work
  • Plate v2 architecture work
  • Slate v2 comparison work
  • plugin-system analysis

The page type stays stable even when the project focus changes.

Claims point outward

This research layer is a normalized interpretation layer, not a vibe layer.

Durable claims should point to evidence in:

  • ../raw
  • repo files
  • source-of-truth docs
  • plans
  • learnings

Compiled pages stay derived

Do not copy raw third-party docs into this repo.

This research layer should contain:

  • paraphrased summaries
  • normalized decisions
  • compact cross-source synthesis
  • Plate-specific conclusions

This research layer should not contain:

  • screenshots from vendor docs
  • raw captured pages
  • one-to-one source-card layers
  • long source-shaped summaries
  • quote-heavy mirrors of external docs

Rule of thumb:

  • one source file -> one summary card = raw layer
  • many source files -> one synthesized page = research layer

Promote durable knowledge only

This research layer is not where every exploratory note goes.

Only promote content here when it is:

  • reusable
  • likely to matter again
  • stable enough to deserve a home
  • clearer as a maintained page than as one-off chat or scratch analysis

Leave temporary exploration in docs/analysis or docs/plans.

Coverage gaps are expected unless agents maintain them proactively

This research layer will fail if agents only update it reactively from the narrow task in
front of them.

Failure modes:

  • a task touches only one source, but other relevant raw evidence in ../raw
    never gets ingested
  • a raw source exists, but no compiled source page was ever written
  • a compiled page exists, but the relevant decision or concept page was never
    updated
  • the agent answers from the visible local slice and misses a gap somewhere
    else in the corpus

So the maintenance model cannot be "update whatever file the current task
happened to mention." That is how holes accumulate.

Page types

`commands/`

Operational command specs for repeatable agent workflows.

Use this for:

  • full research passes
  • maintenance passes
  • gap-detection workflows
  • ingest workflows

Do not use it to store domain knowledge itself.

`schema.md`

The minimal metadata contract for page types in this layer.

Keep it small and stable.

`index.md`

The entrypoint catalog.

This is what an agent should read first.

It should answer:

  • what exists
  • where it lives
  • what each page is for

`log.md`

Append-only history of meaningful wiki operations.

Use it for:

  • new source ingests
  • important restructures
  • lint passes
  • major corrections

Do not turn it into a second index.

`sources/`

Compiled summaries of raw evidence.

Each source summary should say:

  • what the source is
  • what it added
  • what it confirmed
  • what it contradicted
  • what compiled pages it should affect

This is where source-specific work belongs. If a page still mostly smells like
"what this source said", it probably belongs in sources/.

`decisions/`

Canonical repo-relevant choices.

These pages should say:

  • the question
  • the chosen answer
  • the reason
  • competing options
  • source refs
  • blast radius

If a page answers "what won?", it belongs in decisions/.

`concepts/`

Shared vocabulary and abstractions.

These pages should say:

  • what the term means
  • what it is not
  • where it is used

If a page answers "what does this idea mean across the repo?", it belongs in
concepts/.

`systems/`

Architecture or authority maps.

These pages should say:

  • boundaries
  • ownership
  • important internal links
  • how to navigate the area

If a page answers "how does this whole area fit together?", it belongs in
systems/.

`entities/`

Concrete named things.

Examples:

  • editors
  • reference products
  • Plate packages
  • plugins

If a page is about one concrete named thing, it belongs in entities/.

`open-questions/`

Known ambiguity that should not be silently โ€œresolvedโ€ by agent confidence.

Use this to preserve real uncertainty.

If a page answers "we still do not know", it belongs in open-questions/.

Relationship To Other Docs

This repo should use three different layers for three different jobs.

`docs/analysis`

Scratch and exploratory thinking.

Use it for:

  • workbench comparisons
  • candidate lists
  • ranking drafts
  • architecture exploration
  • temporary synthesis that is not stable yet

This is where something like
editor-architecture-candidates.md
starts.

`docs/research`

Compiled reusable knowledge.

Use it for:

  • source summaries worth keeping
  • reusable concept pages
  • architecture maps worth reusing
  • entity pages that future agents will need
  • explicit decisions

This is the research brain.

`docs/editor-behavior`

Normative law and ship gate.

Use it for:

  • authority model
  • behavior law
  • exhaustive protocol rows
  • release gating

This is the law layer, not the research archive.

Rule Of Thumb

  • docs/analysis = exploratory
  • docs/research = compiled reusable knowledge
  • docs/editor-behavior = normative spec

Do not make one directory do all three jobs.

Migration Rules

When migrating existing docs into the research layer:

  1. do not move a file just because it exists
  2. first ask what job the file is doing:
    • scratch exploration
    • compiled knowledge
    • normative law
  3. only move it into docs/research if it is durable compiled knowledge

Good migration examples

  • a source-heavy comparison doc becomes:
    • one systems/... page
    • several entities/... pages
    • maybe a few decisions/... pages
  • repeated terminology explanations become concepts/...
  • repeated product or repo summaries become entities/...

Bad migration examples

  • dumping docs/analysis/* wholesale into docs/research
  • copying docs/editor-behavior/* into docs/research just to have a second copy
  • making one giant "Slate v2 + Plate v2 + plugins + references" page

Specific guidance for architecture work

Something like
editor-architecture-candidates.md
should not be copied as one giant research page.

Its durable parts should decompose into pages like:

  • systems/editor-architecture-landscape.md
  • entities/prosemirror.md
  • entities/lexical.md
  • entities/slate.md
  • entities/tiptap.md
  • later, if needed, decisions/... pages for explicit Plate choices

Core operations

Ingest

When new evidence arrives:

  1. read the raw source
  2. classify what it affects
  3. write or update a source summary
  4. update any impacted decision, concept, system, or entity pages
  5. update index.md
  6. append log.md

Ingest alone is not enough. It only handles known sources that were already
noticed.

Query

When answering a task:

  1. start from index.md
  2. read the relevant compiled pages
  3. answer from the compiled research layer first
  4. verify against raw evidence when needed

Lint

Periodically check for:

  • stale claims
  • duplicated concepts
  • orphan pages
  • dead terminology
  • contradictions
  • overgrown pages that should be split
  • open questions that now have answers

Lint should also detect coverage gaps, not just stale wording.

Autonomous Maintenance

This research layer should eventually be maintained by a dedicated autonomous skill or
workflow, not only by incidental task work.

Its job is to proactively improve both layers:

  • the private raw evidence layer in ../raw
  • the compiled layer in docs/research

Why this is needed

If the user asks a question about a goal area and the relevant evidence was
never ingested or compiled, the agent may miss the answer entirely.

That means the system must support:

  • gap detection
  • proactive ingest
  • proactive compilation
  • targeted refresh

without waiting for a human to notice every missing page manually.

The right future skill is something like:

  • research-maintainer
  • or research-gap-filler

Its mission is not just to summarize.
Its mission is to keep the reference system complete enough that future agents
do not fall through obvious holes.

Inputs

The skill should accept a goal, area, or question such as:

  • editor behavior references
  • plate v2 architecture
  • slate v2 risks
  • plugin model

Loop

Given a goal, the skill should:

  1. infer the likely entities, systems, concepts, and decisions involved
  2. scan docs/research for existing compiled coverage
  3. scan ../raw for relevant raw evidence
  4. classify gaps:
    • raw missing
    • raw exists but compiled summary missing
    • compiled summary exists but decision/concept/system pages missing
    • stale compiled pages
    • contradictions between compiled pages
    • weakly sourced claims
  5. fill the highest-value gaps it can safely fill
  6. record what it changed in log.md
  7. leave explicit open-questions/... pages where the gap cannot be filled yet

Gap classes

Use these gap classes explicitly:

  • Raw gap: no relevant evidence exists in ../raw
  • Compile gap: raw evidence exists, but docs/research/sources/... is missing
  • Synthesis gap: source summaries exist, but no concept/system/decision page
    captures the reusable conclusion
  • Freshness gap: compiled page exists, but newer evidence likely changed it
  • Contradiction gap: two compiled pages disagree or point in different
    directions
  • Structure gap: pages exist, but they are duplicated, orphaned, or split
    at the wrong boundaries

Safe autofill rules

The skill should be aggressive about structure and conservative about claims.

Safe actions:

  • create missing source summary pages from existing raw evidence
  • add missing backlinks and index.md entries
  • split giant mixed pages into clearer page types
  • create entity or concept stubs when the source support is obvious
  • open explicit question pages when evidence is still thin

Unsafe actions that need stronger evidence:

  • inventing decisions without source support
  • claiming coverage where only one weak source exists
  • silently resolving contradictions
  • creating fake completeness from repo-local vibes

Output

Each run should leave:

  • updated research pages
  • updated index.md
  • appended log.md
  • explicit open questions for unresolved gaps

And, when useful, a concise gap report saying:

  • what was missing
  • what was filled
  • what still needs raw evidence

Trigger points

This maintenance skill should be used:

  • before major research or migration tasks
  • after finishing major research or migration tasks
  • periodically as a research health pass
  • whenever an agent notices it is answering from thin or incomplete coverage

Rule of thumb

If the current task depends on a domain that feels bigger than the currently
visible pages, do not trust the visible pages alone.

Run a gap-detection pass first.

Retrieval order

The default retrieval order is:

  1. docs/research
  2. primary raw evidence in ../raw
  3. broader repo search
  4. external sources if still needed

If an agent searches the whole repo before checking docs/research, this layer is
failing its job.

Operational Surface

The commands in commands/ are the executable mental model for applying this
research layer in practice.

Start with:

That is the heavyweight command for improving the research layer from a goal or
domain instead of answering only from the currently visible slice.

Use schema.md to keep page
metadata consistent while the layer is still small.

Initial scope

Start with one narrow evidence corpus from ../raw, prove the ingest and
retrieval workflow, then expand to additional sources only after the first path
is stable.

Agent rules

  • never edit ../raw while compiling conclusions unless the task is explicitly
    about curating raw evidence
  • never add a durable claim here without evidence
  • never flatten contradictions into fake certainty
  • never treat compiled summaries as stronger than primary sources
  • never let a reusable analysis die in chat if it belongs in this research layer

Overview (`packages/ai/README.md`)

Plate ai

Visit https://platejs.org/docs/ai to view the documentation.

License

MIT


Overview (`packages/basic-nodes/README.md`)

Plate basic elements plugin

This package implements the basic elements in a single plugin:

  • block quote
  • code block
  • heading
  • paragraph

Documentation

Check out
Basic Elements.

License

MIT


Overview (`packages/basic-styles/README.md`)

Plate basic styles

Visit https://platejs.org/docs/text-align to view the documentation.

License

MIT


Overview (`packages/callout/README.md`)

Plate callout plugins

This package implements the callout block plugins for Plate.

License

MIT


Overview (`packages/code-block/README.md`)

Plate code block plugin

This package implements the code block plugin for Plate.

Documentation

Check out
Basic Elements.

License

MIT


Overview (`packages/code-drawing/README.md`)

Plate code-drawing plugin

This package implements the code-drawing plugin for Plate, supporting PlantUml, Graphviz, Flowchart, and Mermaid diagrams.

Documentation

Check out Code Drawing.

License

MIT


Overview (`packages/combobox/README.md`)

Plate combobox

This package implements the combobox for Plate.

Documentation

Check out Playground and
Combobox.

License

MIT


Overview (`packages/comment/README.md`)

Plate comments plugin

This package implements the comments plugin for Plate.

Documentation

Check out comments.

License

MIT


Overview (`packages/core/README.md`)

Plate Core

This package provides the foundational structure of the Plate editor framework.

Documentation

Visit https://platejs.org/docs/api/core to view the documentation.

License

MIT


Overview (`packages/csv/README.md`)

Plate CSV serializer plugin

This package implements the CSV serializer for Plate.

Documentation

Check out Playground.

License

MIT


Overview (`packages/cursor/README.md`)

Plate Cursor Overlay

This package implements a cursor overlay for Plate.

Documentation

Check out
Cursor Overlay.

License

MIT


Overview (`packages/date/README.md`)

Plate date plugin

This package implements the date plugin for Plate.

Documentation

Check out date.

License

MIT


Overview (`packages/diff/README.md`)

Compute a diff of two Slate documents

License

See LICENSE


Overview (`packages/dnd/README.md`)

Plate Drag & Drop

Visit https://platejs.org/docs/dnd to view the documentation.

License

MIT


Overview (`packages/docx/README.md`)

Plate Docx serializer plugin

This package implements the docx deserializer for Plate.

Documentation

License

MIT


Overview (`packages/emoji/README.md`)

Plate emoji plugin

This package implements the emoji plugin for Plate.

Documentation

Check out Emoji.

License

MIT


Overview (`packages/excalidraw/README.md`)

Plate excalidraw plugin

This package implements the excalidraw plugin for Plate.

Documentation

Check out
Excalidraw.

License

MIT


Overview (`packages/find-replace/README.md`)

Plate find and replace plugin

This package implements the find and replace plugin for Plate.

Documentation

Check out Find & Replace.

License

MIT


Overview (`packages/floating/README.md`)

Plate floating UI

This package implements the floating UI for Plate.

Documentation

See Link, Mention.

License

MIT


Overview (`packages/footnote/README.md`)

@platejs/footnote

Footnote plugins for Plate.

This package adds dedicated footnote reference and footnote definition nodes,
plus transforms and queries for inserting, resolving, navigating, and repairing
footnotes.

Features

  • Parse GFM footnote references and definitions into Plate nodes
  • Serialize footnote nodes back to markdown footnotes
  • Insert a reference and matching definition with one transform
  • Allocate the next free numeric identifier automatically
  • Create a missing definition for an unresolved reference
  • Detect and repair later duplicate definitions
  • Navigate between references and definitions

Installation

bash
npm install @platejs/footnote @platejs/markdown remark-gfm

Usage

tsx
import {
  FootnoteDefinitionPlugin,
  FootnoteReferencePlugin,
} from '@platejs/footnote/react';
import { MarkdownPlugin } from '@platejs/markdown';
import { createPlateEditor } from 'platejs/react';
import remarkGfm from 'remark-gfm';

const editor = createPlateEditor({
  plugins: [
    FootnoteReferencePlugin,
    FootnoteDefinitionPlugin,
    MarkdownPlugin.configure({
      options: {
        remarkPlugins: [remarkGfm],
      },
    }),
  ],
});

Package Surface

Queries:

  • api.footnote.nextId
  • api.footnote.definition
  • api.footnote.definitions
  • api.footnote.definitionText
  • api.footnote.duplicateDefinitions
  • api.footnote.duplicateIdentifiers
  • api.footnote.hasDuplicateDefinitions
  • api.footnote.isDuplicateDefinition
  • api.footnote.isResolved
  • api.footnote.references

Transforms:

  • tf.insert.footnote
  • tf.footnote.createDefinition
  • tf.footnote.focusDefinition
  • tf.footnote.focusReference
  • tf.footnote.normalizeDuplicateDefinition

Documentation

License

MIT


Overview (`packages/indent/README.md`)

Plate block indentation plugin

This package implements block indentation support for Plate.

Documentation

Check out Indentation.

License

MIT


Overview (`packages/juice/README.md`)

Plate juice plugin

This package implements the juice plugin for Plate.

Given inserted HTML, juice will inline the CSS properties into the style attribute.

Documentation

Check out
Serializing HTML.

License

MIT


This package implements the link plugin for Plate.

Documentation

Check out Link.

License

MIT


Overview (`packages/list-classic/README.md`)

Plate list plugin

This package implements the list plugin for Plate.

Documentation

Check out List.

License

MIT


Overview (`packages/list/README.md`)

Plate indent list plugin

This package implements the indent list plugin for Plate.
It's a mix of indent and list plugins, also called as a "flat list"
because the list structure has no children.

Documentation

Check out List.

License

MIT


Overview (`packages/markdown/README.md`)

Plate MD serializer plugin

This package implements the Markdown serializer for Plate.

Documentation

Check out
Serializing Markdown.

License

MIT


Overview (`packages/math/README.md`)

Plate math plugin

This package implements the math plugin for Plate.

Documentation

Check out math.

License

MIT


Overview (`packages/media/README.md`)

Plate media plugins

This package implements the media plugins for Plate. It allows inserting
embeddable media such as images, YouTube or Vimeo videos and tweets into your
editor.

Includes:

  • caption
  • resizable
  • media
  • image
  • iframe

Documentation

License

MIT


Overview (`packages/mention/README.md`)

Plate mention plugin

This package implements the mention plugin for Plate. It allows
autocompletion from user input.

Documentation

Check out Mention.

License

MIT


Overview (`packages/playwright/README.md`)

Interact with a Plate editor from inside a Playwright test

License

See LICENSE


Overview (`packages/selection/README.md`)

Plate plugin for block selection

Plugin that allows you to select blocks in the drag area using the mouse or touch.

Documentation

Check out
Block Selection.

License

MIT


Overview (`packages/slash-command/README.md`)

Plate slash commands plugin

This package implements the slash commands plugin for Plate.

License

MIT


Overview (`packages/slate/README.md`)

Slate extension

Documentation

Visit https://platejs.org/docs/api/slate to view the documentation.

License

MIT


Overview (`packages/suggestion/README.md`)

Plate plugin for suggestion

License

MIT


Overview (`packages/tabbable/README.md`)

Plate tabbable plugin

This package programmatically corrects the tab order for tabbable elements inside the editor

Documentation

Check out
Tabbable.

License

MIT


Overview (`packages/table/README.md`)

Plate table plugin

This package implements the table plugin for Plate.

Documentation

Check out Table.

License

MIT


Overview (`packages/tag/README.md`)

Plate tag plugin

This package implements the tag plugin for Plate.

Documentation

Check out Tag.

License

MIT


Overview (`packages/test-utils/README.md`)

Plate test utilities

This package implements the test utilities for Plate.

License

MIT


Overview (`packages/toc/README.md`)

Table of Contents plugin

This package implements the table of contents plugin for Plate.

Documentation

Check out
Table of Contents.

License

MIT


Overview (`packages/toggle/README.md`)

Plate toggle plugin

This package implements the toggle plugin for Plate.
It's similar to the indent list plugin, in that it relies on the indent of siblings.

Documentation

Check out Toggle.

Ideas to improve this plugin

  1. Adding an option initialValue of open toggleIds and a callback onChange, for instance to store the state of open toggles in local storage and remember the state upon browser refresh.
  2. Adding an option defaultOpen. Currently, toggles are closed on initial rendering.
  3. Adding an option to specify how to get the indent value of elements, right now we are relying on this being the default KEY_ELEMENT from the indent plugin
  4. An option to specify how to get the id of elements, right now we are using the default id attribute from the node-id plugin.
  5. Adding a placeholder below the toggle, like Notion does, when the toggle is expanded without any elements below.
  6. Make toggle button more accessible
  7. When indenting an element right of a closed toggle, it becomes hidden. This makes sense, but a nicer UI would be to open the toggle in that case, like Notion does.

License

MIT


Overview (`packages/utils/README.md`)

Plate utils

Documentation

Visit https://platejs.org/docs/api/utils to view the documentation.

License

MIT


Overview (`packages/yjs/README.md`)

Plate Yjs plugin

@platejs/yjs binds Plate editors to a shared Yjs document. It ships provider wrappers for IndexedDB, Hocuspocus, and WebRTC, and accepts custom providers that implement the same UnifiedProvider interface.

Read the main docs at platejs.org/docs/yjs.

Installation

Install the plugin.

bash
npm install @platejs/yjs

Install network provider packages as needed:

bash
npm install @hocuspocus/provider
bash
npm install y-webrtc

Usage

Configure YjsPlugin with a providers array. Every configured provider receives the same plugin-owned Y.Doc and Awareness instance.

tsx
import { YjsPlugin } from '@platejs/yjs/react';
import { createPlateEditor } from 'platejs/react';

const editor = createPlateEditor({
  plugins: [
    YjsPlugin.configure({
      options: {
        providers: [
          {
            type: 'indexeddb',
            options: {
              docName: 'document-1',
            },
          },
          {
            type: 'hocuspocus',
            options: {
              name: 'document-1',
              url: 'wss://collab.example.com',
            },
          },
          {
            type: 'webrtc',
            options: {
              roomName: 'document-1',
            },
          },
        ],
      },
    }),
  ],
  skipInitialization: true,
});

Call init after the editor mounts, and call destroy when it unmounts:

tsx
await editor.getApi(YjsPlugin).yjs.init({
  id: 'document-1',
  value: initialValue,
});

editor.getApi(YjsPlugin).yjs.destroy();

Providers

Type Package Purpose Options
indexeddb y-indexeddb Browser-local document persistence { docName: string }
hocuspocus @hocuspocus/provider WebSocket server collaboration HocuspocusProviderConfiguration
webrtc y-webrtc Peer-to-peer collaboration { roomName: string; signaling?: string[]; password?: string; maxConns?: number; peerOpts?: object }

Use the same document identifier across providers that should share one document. For example, pair docName: 'document-1' with name: 'document-1' or roomName: 'document-1'.

IndexedDB only persists Yjs updates locally. It does not transport awareness, cursors, or remote users; combine it with Hocuspocus or WebRTC for multi-user collaboration.

Shared Documents

Pass ydoc when another part of your app owns the document:

tsx
import * as Y from 'yjs';

const ydoc = new Y.Doc();

YjsPlugin.configure({
  options: {
    ydoc,
    providers: [
      {
        type: 'indexeddb',
        options: {
          docName: 'document-1',
        },
      },
    ],
  },
});

Use sharedType when the editor content lives inside a nested Y.XmlText:

tsx
const parentDoc = new Y.Doc();
const editors = parentDoc.getMap('editors');
const mainContent = new Y.XmlText();

editors.set('main', mainContent);

YjsPlugin.configure({
  options: {
    sharedType: mainContent,
    ydoc: parentDoc,
    providers: [
      {
        type: 'indexeddb',
        options: {
          docName: 'document-1',
        },
      },
    ],
  },
});

Custom Providers

Use a pre-instantiated provider directly when you need behavior outside the built-in wrappers:

tsx
import type { UnifiedProvider } from '@platejs/yjs';

const provider: UnifiedProvider = new MyProvider({ awareness, doc: ydoc });

YjsPlugin.configure({
  options: {
    providers: [provider],
  },
});

Register reusable provider classes with registerProviderType:

tsx
import { registerProviderType } from '@platejs/yjs';

registerProviderType('custom', CustomProviderWrapper);

YjsPlugin.configure({
  options: {
    providers: [
      {
        type: 'custom',
        options: {
          roomName: 'document-1',
        },
      },
    ],
  },
});

License

MIT


Overview (`templates/plate-playground-template/README.md`)

Playground Template

A Next.js template with Plate AI, plugins and components.

Features

Requirements

  • Node.js 20+
  • bun

Installation

Choose one of these methods:

bash
npx shadcn@latest add @plate/editor-ai

2. Using Template

Use this template, then install dependencies:

bash
bun install

Development

Copy the example env file:

bash
cp .env.example .env.local

Configure .env.local:

  • UPLOADTHING_TOKEN โ€“ UploadThing API key (get one here)

Enter your own AI Gateway key in the editor settings to use AI. The example API routes use the caller's key.

Uploads work in local development. Before enabling production uploads, replace the development check in src/lib/uploadthing.ts with your application's session and permission checks. Add per-user upload limits.

If your application uses a shared server AI credential, authorize each request and enforce per-user usage limits before calling the provider. Keep server credentials out of client code.

Start the development server:

bash
bun dev

Visit http://localhost:3000/editor to see the editor in action.


Overview (`templates/plate-template/README.md`)

Playground Template

A minimal template for building rich-text editors with Plate and Next.js.

Features

Requirements

  • Node.js 20+
  • bun

Installation

Choose one of these methods:

bash
npx shadcn@latest add @plate/editor-basic

2. Using Template

Use this template, then install dependencies:

bash
bun install

Development

bash
bun dev

Visit http://localhost:3000/editor to see the editor in action.

Upgrade

Using the CLI, you can upgrade to editor-ai by running:

bash
npx shadcn@latest add @plate/editor-ai -o

Overview (`tooling/cn/README.md`)

Plate

ๆจกๆฟ

ๆ‚จๅฏไปฅ้€‰ๆ‹ฉไปฅไธ‹ๆจกๆฟไน‹ไธ€ๅผ€ๅง‹ไฝฟ็”จ๏ผš

้€‰้กน Plate ๆ’ไปถ AI ๅŽ็ซฏ
็ฑปNotionๆจกๆฟ โœ… โœ… โœ… โœ…
Plateๆผ”็คบๆจกๆฟ โœ… โœ… โœ…
Plateๆœ€ๅฐๆจกๆฟ โœ…

ๆ–‡ๆกฃ

ๆ‚จๅฏไปฅ้€š่ฟ‡ๆŸฅ็œ‹ๆˆ‘ไปฌ็š„ๆ–‡ๆกฃไบ†่งฃๆ›ดๅคšๅ…ณไบŽPlate็š„ไฟกๆฏใ€‚

่ดก็Œฎ

่ฆๅผ€ๅง‹่ดก็Œฎ๏ผŒ่ฏทๆŸฅ็œ‹ๆˆ‘ไปฌ็š„่ดก็ŒฎๆŒ‡ๅ—ใ€‚

่ดก็Œฎ่€…

ๆˆ‘ไปฌๅธŒๆœ›ๆ‚จ่ƒฝๅŠ ๅ…ฅๆˆ‘ไปฌ๏ผๆ— ่ฎบๆ˜ฏ็ป™ๆˆ‘ไปฌไธ€ไธช๐ŸŒŸๆ˜Ÿๆ ‡๏ผŒๆไบคไธ€ไธช๐Ÿ“ฅๆ‹‰ๅ–่ฏทๆฑ‚๏ผŒ่ฟ˜ๆ˜ฏๅˆ†ไบซๆ‚จ็š„ๆ’ไปถ๏ผŒๆ‚จ็š„ๅธฎๅŠฉๆ€ปๆ˜ฏๅ€ผๅพ—็งฐ่ตž็š„ใ€‚

้œ€่ฆๆ›ดๅคšๅธฎๅŠฉ๏ผŸๅŠ ๅ…ฅๆˆ‘ไปฌ็š„Discordใ€‚ๆˆ‘ไปฌ้šๆ—ถไธบๆ‚จๆไพ›ๆŒ‡ๅฏผใ€‚(ๅฏไปฅๅœจไธญๆ–‡้ข‘้“ไฝฟ็”จไธญๆ–‡่ฟ›่กŒๆ้—ฎ)


Overview (`.agents/skills/autogoal/README.md`)

Autogoal

Autogoal asks Codex to write a goal-backed plan ending with autoreview.

Install

sh
npx skills add udecode/dotai --skill autogoal

Use

Use autogoal for non-trivial work with an auditable finish line:

  • debugging loops
  • migrations
  • benchmarks
  • architecture plans
  • pass-gated reviews
  • multi-step issue work

Skip it for one-off answers, typo fixes, or tiny edits where the final response
can carry the evidence.

Flow

  1. Define the outcome, completion threshold, verification surface, constraints,
    boundaries, and blocked condition.
  2. Create or continue the active Codex goal with a short objective handle.
  3. Create a plan from a built-in or project template and put the full contract
    there.
  4. First checkpoint: copy every explicit prompt requirement into the plan as
    checkable rows before implementation.
  5. Work in slices and record evidence as you go.
  6. Run autoreview, then fix or record accepted findings.
  7. Run the completion check.
  8. Mark the goal complete only when the outcome is true and the plan passes.

Helpers

sh
node .agents/skills/autogoal/scripts/create-goal-scratchpad.mjs \
  --template task \
  --with browser \
  --title "short title"
sh
node .agents/skills/autogoal/scripts/check-complete.mjs docs/plans/<plan>.md
sh
node .agents/skills/autogoal/scripts/init-templates.mjs

Templates

Autogoal ships generic templates in skills/autogoal/assets/templates.
Installed skills expose them under .agents/skills/autogoal/assets/templates.

Project repos can keep their own templates in docs/plans/templates; the helper
prefers project templates before built-in templates.


Overview (`.agents/skills/react-useeffect/README.md`)

React useEffect Best Practices

A comprehensive guide teaching when to use useEffect in React, and more importantly, when NOT to use it. This skill is based on official React documentation and provides practical alternatives to common useEffect anti-patterns.

Purpose

Effects are an escape hatch from React's reactive paradigm. They let you synchronize with external systems like browser APIs, third-party widgets, or network requests. However, many developers overuse Effects for tasks that React handles better through other means.

This skill helps you:

  • Identify when you truly need an Effect vs. when you don't
  • Recognize common anti-patterns and their fixes
  • Apply better alternatives like useMemo, key prop, and event handlers
  • Write Effects that are clean, maintainable, and free from race conditions

When to Use This Skill

Use this skill when you're:

  • Writing or reviewing useEffect code
  • Using useState to store derived values
  • Implementing data fetching or subscriptions
  • Synchronizing state between components
  • Facing bugs with stale data or race conditions
  • Wondering if your Effect is necessary

Trigger phrases:

  • "Should I use useEffect for this?"
  • "How do I fix this useEffect?"
  • "My Effect is causing too many re-renders"
  • "Data fetching with useEffect"
  • "Reset state when props change"
  • "Derived state from props"

How It Works

This skill provides guidance through three key resources:

  1. Quick Reference Table - Fast lookup for common scenarios with DO/DON'T patterns
  2. Decision Tree - Visual flowchart to determine the right approach
  3. Detailed Anti-Patterns - 9 common mistakes with explanations and fixes
  4. Better Alternatives - 8 proven patterns to replace unnecessary Effects

The skill teaches you to ask the right questions:

  • Is there an external system involved?
  • Am I responding to a user event or component appearance?
  • Can this value be calculated during render?
  • Do I need to reset state when a prop changes?

Key Features

1. Quick Reference Guide

Visual table showing the DO/DON'T for common scenarios:

  • Derived state from props/state
  • Expensive calculations
  • Resetting state on prop change
  • User event responses
  • Notifying parent components
  • Data fetching

2. Decision Tree

Clear flowchart that guides you from "Need to respond to something?" to the correct solution:

  • User interaction โ†’ Event handler
  • Component appeared โ†’ Effect (for external sync/analytics)
  • Derived value needed โ†’ Calculate during render (+ useMemo if expensive)
  • Reset state on prop change โ†’ Key prop

3. Anti-Pattern Recognition

Detailed examples of 9 common mistakes:

  1. Redundant state for derived values
  2. Filtering/transforming data in Effect
  3. Resetting state on prop change
  4. Event-specific logic in Effect
  5. Chains of Effects
  6. Notifying parent via Effect
  7. Passing data up to parent
  8. Fetching without cleanup (race conditions)
  9. App initialization in Effect

Each anti-pattern includes:

  • Bad example with explanation
  • Good example with fix
  • Why the anti-pattern is problematic

4. Better Alternatives

8 proven patterns to replace unnecessary Effects:

  1. Calculate during render for derived state
  2. useMemo for expensive calculations
  3. key prop to reset state
  4. Store ID instead of object for stable references
  5. Event handlers for user actions
  6. useSyncExternalStore for external stores
  7. Lifting state up for shared state
  8. Custom hooks for data fetching with cleanup

Usage Examples

Example 1: Derived State

Bad - Unnecessary Effect:

tsx
function Form() {
  const [firstName, setFirstName] = useState('Taylor');
  const [lastName, setLastName] = useState('Swift');
  const [fullName, setFullName] = useState('');

  useEffect(() => {
    setFullName(firstName + ' ' + lastName);
  }, [firstName, lastName]);
}

Good - Calculate during render:

tsx
function Form() {
  const [firstName, setFirstName] = useState('Taylor');
  const [lastName, setLastName] = useState('Swift');
  const fullName = firstName + ' ' + lastName; // Just compute it
}

Example 2: Resetting State

Bad - Effect to reset:

tsx
function ProfilePage({ userId }) {
  const [comment, setComment] = useState('');

  useEffect(() => {
    setComment('');
  }, [userId]);
}

Good - Key prop:

tsx
function ProfilePage({ userId }) {
  return <Profile userId={userId} key={userId} />;
}

function Profile({ userId }) {
  const [comment, setComment] = useState(''); // Resets automatically
}

Example 3: Data Fetching with Cleanup

Bad - Race condition:

tsx
function SearchResults({ query }) {
  const [results, setResults] = useState([]);

  useEffect(() => {
    fetchResults(query).then(json => {
      setResults(json); // "hello" response may arrive after "hell"
    });
  }, [query]);
}

Good - Cleanup flag:

tsx
function SearchResults({ query }) {
  const [results, setResults] = useState([]);

  useEffect(() => {
    let ignore = false;

    fetchResults(query).then(json => {
      if (!ignore) setResults(json);
    });

    return () => { ignore = true; };
  }, [query]);
}

Example 4: Event Handler Instead of Effect

Bad - Effect watching state:

tsx
function ProductPage({ product, addToCart }) {
  useEffect(() => {
    if (product.isInCart) {
      showNotification(`Added ${product.name}!`);
    }
  }, [product]);

  function handleBuyClick() {
    addToCart(product);
  }
}

Good - Handle in event:

tsx
function ProductPage({ product, addToCart }) {
  function handleBuyClick() {
    addToCart(product);
    showNotification(`Added ${product.name}!`);
  }
}

When You DO Need Effects

Effects are appropriate for:

  • Synchronizing with external systems - Browser APIs, third-party widgets, non-React code
  • Subscriptions - WebSocket connections, global event listeners (prefer useSyncExternalStore)
  • Analytics/logging - Code that needs to run because the component displayed
  • Data fetching - With proper cleanup (or use your framework's built-in mechanism)

When You DON'T Need Effects

Avoid Effects for:

  1. Transforming data for rendering - Calculate at the top level instead
  2. Handling user events - Use event handlers where you know exactly what happened
  3. Deriving state - Just compute it: const fullName = firstName + ' ' + lastName
  4. Chaining state updates - Calculate all next state in the event handler
  5. Notifying parent components - Call the callback in the same event handler
  6. Resetting state - Use the key prop to create a fresh component instance

Best Practices

1. Start Without an Effect

Before adding an Effect, ask: "Is there an external system involved?" If no, you probably don't need an Effect.

2. Prefer Derived State

If you can calculate a value from props or state, don't store it in state with an Effect updating it.

3. Use the Right Tool

  • Expensive calculation โ†’ useMemo
  • User interaction โ†’ Event handler
  • Reset on prop change โ†’ key prop
  • External subscription โ†’ useSyncExternalStore
  • Shared state โ†’ Lift state up

4. Always Clean Up

If your Effect subscribes, fetches, or sets timers, return a cleanup function to prevent memory leaks and race conditions.

5. Avoid Effect Chains

Multiple Effects triggering each other causes unnecessary re-renders and makes code hard to follow. Calculate everything in one place (usually an event handler).

6. Test in Strict Mode

React 18+ Strict Mode mounts components twice in development to expose missing cleanup. If your Effect breaks, you need cleanup.

7. Consider Framework Solutions

For data fetching, prefer your framework's built-in solution (Next.js, Remix) or libraries (React Query, SWR) over manual Effects.

Reference Files

This skill includes three detailed reference documents:

  1. SKILL.md - Quick reference table and decision tree
  2. anti-patterns.md - 9 common mistakes with detailed explanations
  3. alternatives.md - 8 better alternatives with code examples

Common Pitfalls

Multiple Re-renders

Symptom: Component re-renders many times in quick succession.

Cause: Effect that sets state based on state it depends on, creating a loop.

Fix: Calculate the final value in an event handler or during render.

Stale Data

Symptom: UI shows outdated values briefly before updating.

Cause: Using Effect to update derived state causes an extra render pass.

Fix: Calculate derived values during render instead of in state.

Race Conditions

Symptom: Fast typing shows results for old queries after new ones.

Cause: Missing cleanup in data fetching Effect.

Fix: Use cleanup flag (ignore variable) or AbortController.

Runs Twice in Development

Symptom: Effect runs twice on component mount in development.

Cause: React 18 Strict Mode intentionally mounts components twice to expose bugs.

Fix: Add proper cleanup. If it's app initialization that shouldn't run twice, use a module-level guard.

Resources

This skill is based on:

Summary

The golden rule: Effects are an escape hatch from React. If you're not synchronizing with an external system, you probably don't need an Effect.

Before writing useEffect, ask yourself:

  1. Is this responding to a user interaction? โ†’ Use event handler
  2. Is this a value I can calculate from props/state? โ†’ Calculate during render
  3. Is this resetting state when a prop changes? โ†’ Use key prop
  4. Is this synchronizing with an external system? โ†’ Use Effect with cleanup

Follow these patterns, and your React code will be more maintainable, performant, and bug-free.


Overview (`.agents/skills/vercel-react-best-practices/README.md`)

React Best Practices

A structured repository for creating and maintaining React Best Practices optimized for agents and LLMs.

Structure

  • rules/ - Individual rule files (one per rule)
    • _sections.md - Section metadata (titles, impacts, descriptions)
    • _template.md - Template for creating new rules
    • area-description.md - Individual rule files
  • src/ - Build scripts and utilities
  • metadata.json - Document metadata (version, organization, abstract)
  • AGENTS.md - Compiled output (generated)
  • test-cases.json - Test cases for LLM evaluation (generated)

Getting Started

  1. Install dependencies:

    bash
    pnpm install
  2. Build AGENTS.md from rules:

    bash
    pnpm build
  3. Validate rule files:

    bash
    pnpm validate
  4. Extract test cases:

    bash
    pnpm extract-tests

Creating a New Rule

  1. Copy rules/_template.md to rules/area-description.md
  2. Choose the appropriate area prefix:
    • async- for Eliminating Waterfalls (Section 1)
    • bundle- for Bundle Size Optimization (Section 2)
    • server- for Server-Side Performance (Section 3)
    • client- for Client-Side Data Fetching (Section 4)
    • rerender- for Re-render Optimization (Section 5)
    • rendering- for Rendering Performance (Section 6)
    • js- for JavaScript Performance (Section 7)
    • advanced- for Advanced Patterns (Section 8)
  3. Fill in the frontmatter and content
  4. Ensure you have clear examples with explanations
  5. Run pnpm build to regenerate AGENTS.md and test-cases.json

Rule File Structure

Each rule file should follow this structure:

markdown
---
title: Rule Title Here
impact: MEDIUM
impactDescription: Optional description
tags: tag1, tag2, tag3
---

## Rule Title Here

Brief explanation of the rule and why it matters.

**Incorrect (description of what's wrong):**

```typescript
// Bad code example

Correct (description of what's right):

typescript
// Good code example

Optional explanatory text after examples.

Reference: Link

File Naming Convention

  • Files starting with _ are special (excluded from build)
  • Rule files: area-description.md (e.g., async-parallel.md)
  • Section is automatically inferred from filename prefix
  • Rules are sorted alphabetically by title within each section
  • IDs (e.g., 1.1, 1.2) are auto-generated during build

Impact Levels

  • CRITICAL - Highest priority, major performance gains
  • HIGH - Significant performance improvements
  • MEDIUM-HIGH - Moderate-high gains
  • MEDIUM - Moderate performance improvements
  • LOW-MEDIUM - Low-medium gains
  • LOW - Incremental improvements

Scripts

  • pnpm build - Compile rules into AGENTS.md
  • pnpm validate - Validate all rule files
  • pnpm extract-tests - Extract test cases for LLM evaluation
  • pnpm dev - Build and validate

Contributing

When adding or modifying rules:

  1. Use the correct filename prefix for your section
  2. Follow the _template.md structure
  3. Include clear bad/good examples with explanations
  4. Add appropriate tags
  5. Run pnpm build to regenerate AGENTS.md and test-cases.json
  6. Rules are automatically sorted by title - no need to manage numbers!

Acknowledgments

Originally created by @shuding at Vercel.


Overview (`docs/editor-behavior/commands/README.md`)

Editor Behavior Commands

This is the operator surface for resuming and maintaining
docs/editor-behavior.

Use it when you do not want to rediscover the workflow from scattered plans,
spec docs, and .omx artifacts.

This pack has two lanes:

  • doc-governance:
    maintain standards, spec, protocol, parity, audit, and evidence truth
  • implementation/runtime:
    choose, launch, and close real code/test/product batches from the roadmap

Canonical Artifacts

Command Set

Doc-Governance Lane

  • reconsolidate-law-stack.md
    Re-sync the standards/spec/protocol/parity/audit stack when truth drifted,
    including after runtime work changed behavior.
  • refresh-evidence-ledger.md
    Refresh the evidence layer from research when doc truth or runtime planning is
    blocked on weak authority.
  • reinterview-open-authority-gaps.md
    Re-open authority questions when the law stack cannot answer them and either
    doc maintenance or implementation planning is blocked by that ambiguity.

Implementation / Runtime Lane

Fast Routing

If You Are In A Doc-Governance Problem

  • If the docs disagree with each other, or a runtime batch changed behavior
    without the law stack catching up, start with
    reconsolidate-law-stack.md.
  • If the audit or research feels stale, or an implementation lane is blocked on
    weak evidence, start with
    refresh-evidence-ledger.md.
  • If the lane cannot answer โ€œwhat should win here?โ€, โ€œwhat next?โ€, or โ€œwhat
    should move up/down in priority?โ€, run
    reinterview-open-authority-gaps.md
    before planning.

If You Are In An Implementation / Runtime Problem

  • After authority is clear and you need the next executable runtime slice, run
    replan-next-batch.md.
  • If the gate is already closed but you still need the remaining backlog order
    or a narrower next slice, run
    replan-next-batch.md.
  • When the next runtime batch is approved and concrete, run
    launch-next-ralph-batch.md.
  • If runtime work exposes law drift, evidence debt, or unresolved authority,
    bounce back to the doc-governance lane instead of forcing more code work.

Overview (`docs/research/commands/README.md`)

Research Commands

This directory contains command specs for operating the research layer.

Primary reusable entrypoint:

These pages are not knowledge pages like sources/ or concepts/.
They are operational docs that describe repeatable agent workflows.

Use them to define:

  • full ingest-and-compile passes
  • maintenance passes
  • per-corpus completion rules for full mode
  • official-source discovery checks before declaring corpus gaps
  • local-raw exhaustiveness rules before declaring evidence gap

Current commands:


Overview (`docs/research/concepts/README.md`)

Concepts

This directory contains shared vocabulary and abstractions.

Each concept page should define one term cleanly and link to the systems,
decisions, entities, and sources that rely on it.

Current editor-architecture additions include:


Overview (`docs/research/decisions/README.md`)

Decisions

This directory contains normalized choices and policy calls.

Each decision page should answer:

  • what question was decided
  • what answer won
  • why it won
  • what it overruled
  • what sources support it

Overview (`docs/research/entities/README.md`)

Entities

This directory contains concrete named things.

Examples:

  • editors like Typora or Obsidian
  • reference products like Google Docs
  • internal packages or plugins

Overview (`docs/research/open-questions/README.md`)

Open Questions

This directory contains unresolved ambiguity that should stay explicit.

Use it when the evidence is mixed, thin, or incomplete.

Do not silently resolve those gaps in summary pages.


Overview (`docs/research/sources/README.md`)

Sources

This directory contains compiled research summaries of raw evidence.

Each page here should summarize one raw source or one tightly related source
group from ../raw.

Do not store raw captures here.


Overview (`docs/research/systems/README.md`)

Systems

This directory contains system maps and authority maps.

Use it for larger structures:

  • editor-behavior authority models
  • package or subsystem maps
  • cross-editor comparison surfaces

Current editor-architecture pages include:


Overview (`docs/slate-v2-draft/archive/README.md`)


date: 2026-04-07 topic: slate-v2-archive-readme

Slate v2 Archive

Archive only. Historical reference doc. For current queue and roadmap truth, see master-roadmap.md.

This folder keeps retired historical docs from the old docs/slate-v2 root
stack. These files are for archaeology, not the current replacement verdict.

Read these first instead:

Archive contents:

  • historical benchmark and hardening writeups
  • historical migration and compatibility writeups
  • frozen roadmap and phase-plan artifacts
  • older synthesis and status docs

Overview (`docs/slate-v2-draft/ledgers/README.md`)


date: 2026-04-13 topic: slate-v2-exact-ledgers-index

Slate v2 Exact Ledgers

Exact 1:1 legacy-file ledgers that complement the human control ledger in
release-file-review-ledger.md.

Rule:

Status key:

  • mapped-mirrored: current proof already carries the legacy file value
  • mapped-recovered: current proof recovered the legacy file value on a new owner
  • mapped-mixed: one legacy file splits into mirrored, recovered, and/or
    explicit-skip subclaims
  • same-path-current: the same relative current test file still exists in slate-v2
  • explicit-skip: intentionally outside the live contract
  • needs-triage: no honest exact mapping exists yet

Overview (`docs/slate-v2/ledgers/README.md`)


date: 2026-04-16 topic: slate-v2-ledgers-readme status: active

Ledgers

Use this folder for package, API, test, and example inventories during the
fresh-branch migration.

Status words:

  • recovered
  • extended
  • mixed
  • open
  • post RC
  • cut

Current live ledgers:

Current tranche-3 owner docs:

Current tranche-3 landed waves:

Historical tranche-3 planning docs:


Overview (`docs/sync/shadcn/README.md`)

Sync Shadcn

This directory tracks Plate's sync point against upstream shadcn-ui/ui
docs in ../shadcn/apps/v4.

  • status.json records the current upstream commit baseline.
  • decisions.md records durable keep/fork/exclude policy for Plate docs.
  • runs/ stores range-specific audits, inventories, patches, and plans.

Use .agents/skills/sync-shadcn/SKILL.md before pulling newer upstream
shadcn docs changes into apps/www.

The baseline only moves after every upstream change in a range is accounted for
as adopted, smart-merged, intentionally forked, or explicitly excluded.


Overview (`packages/udecode/cmdk/README.md`)

cmdk

Fork of cmdk with control actions.

  • useCommandActions hook to control the command menu.

License

MIT


Overview (`packages/udecode/cn/README.md`)

`cn` utils

React & Tailwind utils used by Plate UI.

Documentation

Visit https://platejs.org/docs/api/cn to view the documentation.

License

MIT


Overview (`packages/udecode/depset/README.md`)

depset

A command-line tool to synchronize package dependencies in your package.json to their latest versions, a specific target version, or versions matching a pattern.

Invocation

Run depset using your preferred package manager:

  • npx:
    bash
    npx depset@latest [args...]
  • pnpm:
    bash
    pnpm dlx depset@latest [args...]
  • yarn:
    bash
    yarn dlx depset@latest [args...]
  • bun:
    bash
    bunx depset@latest [args...]

Usage

bash
depset [package-specifier] [target-version] [options]

Arguments

  • [package-specifier] (Optional)
    The package name or pattern to target. If omitted (and --yes is not used), you will be prompted.

    • Exact Name: e.g., lodash, @babel/core
    • Scope: e.g., @myorg (targets packages like @myorg/component-a, @myorg/utils)
    • Prefix: e.g., eslint-* (targets packages like eslint-plugin-react, eslint-config-next)
  • [target-version] (Optional)
    The maximum version to synchronize to (e.g., "1", "1.2", "1.2.3"). If omitted (and neither --latest nor --yes are used), you will be prompted. If --latest is used, this is ignored.

Options

txt
Usage: depset [options] [package-specifier] [target-version]

Synchronize package dependencies to their latest or a specific version.

Arguments:
  package-specifier   Package name or pattern (e.g., "@scope/foo*", "my-package", "@myorg").
                      Prompts if not provided (unless -y is used).
  target-version      Target version (e.g., "1.2.3"). Prompts if not provided (unless -L or -y is used).
                      Defaults to latest if left blank in prompt or if -L is used.

Options:
  -L, --latest        Use the latest version, skip version prompt. (default: false)
  -i, --install       Automatically run install after updating package.json. (default: false)
  -y, --yes           Skip all confirmation prompts. (default: false)
  -c, --cwd     Set the current working directory. (default: current directory)
  -s, --silent        Silence all output except for errors. (default: false)
  -v, --version       Display the version number.
  -h, --help          Display help for command.

Examples

  1. Sync lodash to its latest version (prompts for version if not specified with --latest):

    bash
    npx depset@latest lodash
  2. Sync all packages in the @babel scope to their absolute latest versions, and install, skipping all prompts:

    bash
    npx depset@latest @babel --latest --install --yes
  3. Sync packages starting with eslint- up to version 8.50.0:

    bash
    npx depset@latest "eslint-*" 8.50.0

    (You will be prompted to confirm changes and installation unless -y is used)

  4. Run interactively, prompting for all inputs:

    bash
    npx depset@latest

Overview (`packages/udecode/react-hotkeys/README.md`)

Udecode react-hotkeys-hook fork

This is a fork of the original [email protected] and the following changes.

Documentation

Visit https://platejs.org/docs/api/react-utils to view the documentation.

License

MIT


Overview (`packages/udecode/react-utils/README.md`)

Udecode React utils

React utils used by the many packages of the Udecode ecosystem.

Documentation

Visit https://platejs.org/docs/api/react-utils to view the documentation.

License

MIT


Overview (`packages/udecode/utils/README.md`)

Udecode Utils

Utils used by the many packages of the Udecode ecosystem.

License

MIT


Overview (`tooling/templates/plate-playground-template/README.md`)

Playground Template

A Next.js template with Plate AI, plugins and components.

Features

Requirements

  • Node.js 20+
  • bun

Installation

Choose one of these methods:

bash
npx shadcn@latest add @plate/editor-ai

2. Using Template

Use this template, then install dependencies:

bash
bun install

Development

Copy the example env file:

bash
cp .env.example .env.local

Configure .env.local:

  • UPLOADTHING_TOKEN โ€“ UploadThing API key (get one here)

Enter your own AI Gateway key in the editor settings to use AI. The example API routes use the caller's key.

Uploads work in local development. Before enabling production uploads, replace the development check in src/lib/uploadthing.ts with your application's session and permission checks. Add per-user upload limits.

If your application uses a shared server AI credential, authorize each request and enforce per-user usage limits before calling the provider. Keep server credentials out of client code.

Start the development server:

bash
bun dev

Visit http://localhost:3000/editor to see the editor in action.


Overview (`docs/research/sources/editor-architecture/README.md`)

Editor Architecture Sources

This directory holds compiled summaries for the editor-architecture comparison
lane.

Current scope:

  • decorations / annotations / widget architecture
  • React 19.2 perf architecture
  • read/update lifecycle architecture across Lexical, ProseMirror, and Tiptap
  • node/text/mark/render DX across ProseMirror, Lexical, and Tiptap

If future editor-architecture work moves into other surfaces, add separate
cluster pages instead of bloating a single mixed summary.

Current evidence is grounded in normalized raw families under ../raw, official
local repo clones under ../, plus the local plan docs that already captured
the Slate v2 decorations / annotations research.

Raw Corpus Availability

As of 2026-04-23, the Lexical, ProseMirror, Tiptap, and Tiptap Docs raw source
families are normalized under ../raw.

Current raw evidence:

  • ../raw/lexical/repo: official Lexical repo clone.
  • ../raw/prosemirror/repo: official ProseMirror umbrella repo clone.
  • ../raw/prosemirror/packages/*: official ProseMirror package clones for
    architecture evidence.
  • ../raw/tiptap/repo: official Tiptap repo clone.
  • ../raw/tiptap/docs: official Tiptap Docs repo clone.

Disposition:

  • strongest evidence found: normalized official raw clones under ../raw
  • raw gap: closed for the current read/update architecture pass
  • compile gap: closed for read/update architecture; broader product areas such
    as tables, comments/suggestions, and AI tooling need separate passes if they
    become active

Current pages:

This directory should not turn into a dump of one-off notes.

Split it further only when the lane needs deeper per-corpus source pages.


Overview (`docs/research/sources/lexical/README.md`)

Lexical Sources

This directory contains compiled research summaries derived from the official
Lexical monorepo at /Users/zbeyens/git/lexical plus the live docs entrypoints
on https://lexical.dev.

Current pages:

This layer is source-oriented. It is not yet the final decision layer.


Overview (`docs/research/sources/milkdown/README.md`)

Milkdown Sources

This directory contains compiled research summaries derived from the upstream
Milkdown raw clone in ../raw/milkdown/repo and the raw entrypoint in
../raw/milkdown.

Current pages:

This layer is source-oriented. It is not yet the final concept/decision layer.


Overview (`docs/research/sources/obsidian/README.md`)

Obsidian Sources

This directory contains compiled research summaries derived from:

  • ../raw/obsidian/help
  • ../raw/obsidian/developer

Current pages:


Overview (`docs/research/sources/prosemirror/README.md`)

ProseMirror Sources

This directory contains compiled research summaries derived from the official
ProseMirror docs entrypoints on https://prosemirror.net plus the local repo at
/Users/zbeyens/git/prosemirror.

Current pages:

This layer is source-oriented. It is not yet the final decision layer.


Overview (`docs/research/sources/slate/README.md`)

Slate Sources

This directory contains compiled research summaries derived from the official
Slate repo and docs at /Users/zbeyens/git/slate and https://docs.slatejs.org.

Current pages:

This layer is source-oriented. It is not yet the final decision layer.


Overview (`docs/research/sources/tiptap/README.md`)

Tiptap Sources

This directory contains compiled research summaries derived from the normalized
Tiptap raw source family under ../raw/tiptap.

Raw entrypoints:

  • docs: ../raw/tiptap/docs
  • source/packages: ../raw/tiptap/repo
  • catalog: ../raw/tiptap/catalog.md

Current pages:

This layer is source-oriented. It is not yet the final decision layer.


Overview (`docs/research/sources/typora/README.md`)

Typora Sources

This directory will hold compiled summaries derived from ../raw/typora.

It should contain:

  • summary pages for important Typora docs or release-note evidence
  • compact behavior extracts
  • links to impacted decision, concept, and system pages

Do not store raw captured Typora docs here.

Current pages:

One-to-one source-card material now lives in:

  • ../raw/typora/page-cards/
  • ../raw/typora/catalog.md

Overview (`templates/plate-playground-template/.agents/skills/react-useeffect/README.md`)

React useEffect Best Practices

A comprehensive guide teaching when to use useEffect in React, and more importantly, when NOT to use it. This skill is based on official React documentation and provides practical alternatives to common useEffect anti-patterns.

Purpose

Effects are an escape hatch from React's reactive paradigm. They let you synchronize with external systems like browser APIs, third-party widgets, or network requests. However, many developers overuse Effects for tasks that React handles better through other means.

This skill helps you:

  • Identify when you truly need an Effect vs. when you don't
  • Recognize common anti-patterns and their fixes
  • Apply better alternatives like useMemo, key prop, and event handlers
  • Write Effects that are clean, maintainable, and free from race conditions

When to Use This Skill

Use this skill when you're:

  • Writing or reviewing useEffect code
  • Using useState to store derived values
  • Implementing data fetching or subscriptions
  • Synchronizing state between components
  • Facing bugs with stale data or race conditions
  • Wondering if your Effect is necessary

Trigger phrases:

  • "Should I use useEffect for this?"
  • "How do I fix this useEffect?"
  • "My Effect is causing too many re-renders"
  • "Data fetching with useEffect"
  • "Reset state when props change"
  • "Derived state from props"

How It Works

This skill provides guidance through three key resources:

  1. Quick Reference Table - Fast lookup for common scenarios with DO/DON'T patterns
  2. Decision Tree - Visual flowchart to determine the right approach
  3. Detailed Anti-Patterns - 9 common mistakes with explanations and fixes
  4. Better Alternatives - 8 proven patterns to replace unnecessary Effects

The skill teaches you to ask the right questions:

  • Is there an external system involved?
  • Am I responding to a user event or component appearance?
  • Can this value be calculated during render?
  • Do I need to reset state when a prop changes?

Key Features

1. Quick Reference Guide

Visual table showing the DO/DON'T for common scenarios:

  • Derived state from props/state
  • Expensive calculations
  • Resetting state on prop change
  • User event responses
  • Notifying parent components
  • Data fetching

2. Decision Tree

Clear flowchart that guides you from "Need to respond to something?" to the correct solution:

  • User interaction โ†’ Event handler
  • Component appeared โ†’ Effect (for external sync/analytics)
  • Derived value needed โ†’ Calculate during render (+ useMemo if expensive)
  • Reset state on prop change โ†’ Key prop

3. Anti-Pattern Recognition

Detailed examples of 9 common mistakes:

  1. Redundant state for derived values
  2. Filtering/transforming data in Effect
  3. Resetting state on prop change
  4. Event-specific logic in Effect
  5. Chains of Effects
  6. Notifying parent via Effect
  7. Passing data up to parent
  8. Fetching without cleanup (race conditions)
  9. App initialization in Effect

Each anti-pattern includes:

  • Bad example with explanation
  • Good example with fix
  • Why the anti-pattern is problematic

4. Better Alternatives

8 proven patterns to replace unnecessary Effects:

  1. Calculate during render for derived state
  2. useMemo for expensive calculations
  3. key prop to reset state
  4. Store ID instead of object for stable references
  5. Event handlers for user actions
  6. useSyncExternalStore for external stores
  7. Lifting state up for shared state
  8. Custom hooks for data fetching with cleanup

Usage Examples

Example 1: Derived State

Bad - Unnecessary Effect:

tsx
function Form() {
  const [firstName, setFirstName] = useState('Taylor');
  const [lastName, setLastName] = useState('Swift');
  const [fullName, setFullName] = useState('');

  useEffect(() => {
    setFullName(firstName + ' ' + lastName);
  }, [firstName, lastName]);
}

Good - Calculate during render:

tsx
function Form() {
  const [firstName, setFirstName] = useState('Taylor');
  const [lastName, setLastName] = useState('Swift');
  const fullName = firstName + ' ' + lastName; // Just compute it
}

Example 2: Resetting State

Bad - Effect to reset:

tsx
function ProfilePage({ userId }) {
  const [comment, setComment] = useState('');

  useEffect(() => {
    setComment('');
  }, [userId]);
}

Good - Key prop:

tsx
function ProfilePage({ userId }) {
  return ;
}

function Profile({ userId }) {
  const [comment, setComment] = useState(''); // Resets automatically
}

Example 3: Data Fetching with Cleanup

Bad - Race condition:

tsx
function SearchResults({ query }) {
  const [results, setResults] = useState([]);

  useEffect(() => {
    fetchResults(query).then(json => {
      setResults(json); // "hello" response may arrive after "hell"
    });
  }, [query]);
}

Good - Cleanup flag:

tsx
function SearchResults({ query }) {
  const [results, setResults] = useState([]);

  useEffect(() => {
    let ignore = false;

    fetchResults(query).then(json => {
      if (!ignore) setResults(json);
    });

    return () => { ignore = true; };
  }, [query]);
}

Example 4: Event Handler Instead of Effect

Bad - Effect watching state:

tsx
function ProductPage({ product, addToCart }) {
  useEffect(() => {
    if (product.isInCart) {
      showNotification(`Added ${product.name}!`);
    }
  }, [product]);

  function handleBuyClick() {
    addToCart(product);
  }
}

Good - Handle in event:

tsx
function ProductPage({ product, addToCart }) {
  function handleBuyClick() {
    addToCart(product);
    showNotification(`Added ${product.name}!`);
  }
}

When You DO Need Effects

Effects are appropriate for:

  • Synchronizing with external systems - Browser APIs, third-party widgets, non-React code
  • Subscriptions - WebSocket connections, global event listeners (prefer useSyncExternalStore)
  • Analytics/logging - Code that needs to run because the component displayed
  • Data fetching - With proper cleanup (or use your framework's built-in mechanism)

When You DON'T Need Effects

Avoid Effects for:

  1. Transforming data for rendering - Calculate at the top level instead
  2. Handling user events - Use event handlers where you know exactly what happened
  3. Deriving state - Just compute it: const fullName = firstName + ' ' + lastName
  4. Chaining state updates - Calculate all next state in the event handler
  5. Notifying parent components - Call the callback in the same event handler
  6. Resetting state - Use the key prop to create a fresh component instance

Best Practices

1. Start Without an Effect

Before adding an Effect, ask: "Is there an external system involved?" If no, you probably don't need an Effect.

2. Prefer Derived State

If you can calculate a value from props or state, don't store it in state with an Effect updating it.

3. Use the Right Tool

  • Expensive calculation โ†’ useMemo
  • User interaction โ†’ Event handler
  • Reset on prop change โ†’ key prop
  • External subscription โ†’ useSyncExternalStore
  • Shared state โ†’ Lift state up

4. Always Clean Up

If your Effect subscribes, fetches, or sets timers, return a cleanup function to prevent memory leaks and race conditions.

5. Avoid Effect Chains

Multiple Effects triggering each other causes unnecessary re-renders and makes code hard to follow. Calculate everything in one place (usually an event handler).

6. Test in Strict Mode

React 18+ Strict Mode mounts components twice in development to expose missing cleanup. If your Effect breaks, you need cleanup.

7. Consider Framework Solutions

For data fetching, prefer your framework's built-in solution (Next.js, Remix) or libraries (React Query, SWR) over manual Effects.

Reference Files

This skill includes three detailed reference documents:

  1. SKILL.md - Quick reference table and decision tree
  2. anti-patterns.md - 9 common mistakes with detailed explanations
  3. alternatives.md - 8 better alternatives with code examples

Common Pitfalls

Multiple Re-renders

Symptom: Component re-renders many times in quick succession.

Cause: Effect that sets state based on state it depends on, creating a loop.

Fix: Calculate the final value in an event handler or during render.

Stale Data

Symptom: UI shows outdated values briefly before updating.

Cause: Using Effect to update derived state causes an extra render pass.

Fix: Calculate derived values during render instead of in state.

Race Conditions

Symptom: Fast typing shows results for old queries after new ones.

Cause: Missing cleanup in data fetching Effect.

Fix: Use cleanup flag (ignore variable) or AbortController.

Runs Twice in Development

Symptom: Effect runs twice on component mount in development.

Cause: React 18 Strict Mode intentionally mounts components twice to expose bugs.

Fix: Add proper cleanup. If it's app initialization that shouldn't run twice, use a module-level guard.

Resources

This skill is based on:

Summary

The golden rule: Effects are an escape hatch from React. If you're not synchronizing with an external system, you probably don't need an Effect.

Before writing useEffect, ask yourself:

  1. Is this responding to a user interaction? โ†’ Use event handler
  2. Is this a value I can calculate from props/state? โ†’ Calculate during render
  3. Is this resetting state when a prop changes? โ†’ Use key prop
  4. Is this synchronizing with an external system? โ†’ Use Effect with cleanup

Follow these patterns, and your React code will be more maintainable, performant, and bug-free.


Overview (`templates/plate-playground-template/.agents/skills/vercel-react-best-practices/README.md`)

React Best Practices

A structured repository for creating and maintaining React Best Practices optimized for agents and LLMs.

Structure

  • rules/ - Individual rule files (one per rule)
    • _sections.md - Section metadata (titles, impacts, descriptions)
    • _template.md - Template for creating new rules
    • area-description.md - Individual rule files
  • src/ - Build scripts and utilities
  • metadata.json - Document metadata (version, organization, abstract)
  • AGENTS.md - Compiled output (generated)
  • test-cases.json - Test cases for LLM evaluation (generated)

Getting Started

  1. Install dependencies:

    bash
    pnpm install
  2. Build AGENTS.md from rules:

    bash
    pnpm build
  3. Validate rule files:

    bash
    pnpm validate
  4. Extract test cases:

    bash
    pnpm extract-tests

Creating a New Rule

  1. Copy rules/_template.md to rules/area-description.md
  2. Choose the appropriate area prefix:
    • async- for Eliminating Waterfalls (Section 1)
    • bundle- for Bundle Size Optimization (Section 2)
    • server- for Server-Side Performance (Section 3)
    • client- for Client-Side Data Fetching (Section 4)
    • rerender- for Re-render Optimization (Section 5)
    • rendering- for Rendering Performance (Section 6)
    • js- for JavaScript Performance (Section 7)
    • advanced- for Advanced Patterns (Section 8)
  3. Fill in the frontmatter and content
  4. Ensure you have clear examples with explanations
  5. Run pnpm build to regenerate AGENTS.md and test-cases.json

Rule File Structure

Each rule file should follow this structure:

markdown
---
title: Rule Title Here
impact: MEDIUM
impactDescription: Optional description
tags: tag1, tag2, tag3
---

## Rule Title Here

Brief explanation of the rule and why it matters.

**Incorrect (description of what's wrong):**

```typescript
// Bad code example

Correct (description of what's right):

typescript
// Good code example

Optional explanatory text after examples.

Reference: Link

File Naming Convention

  • Files starting with _ are special (excluded from build)
  • Rule files: area-description.md (e.g., async-parallel.md)
  • Section is automatically inferred from filename prefix
  • Rules are sorted alphabetically by title within each section
  • IDs (e.g., 1.1, 1.2) are auto-generated during build

Impact Levels

  • CRITICAL - Highest priority, major performance gains
  • HIGH - Significant performance improvements
  • MEDIUM-HIGH - Moderate-high gains
  • MEDIUM - Moderate performance improvements
  • LOW-MEDIUM - Low-medium gains
  • LOW - Incremental improvements

Scripts

  • pnpm build - Compile rules into AGENTS.md
  • pnpm validate - Validate all rule files
  • pnpm extract-tests - Extract test cases for LLM evaluation
  • pnpm dev - Build and validate

Contributing

When adding or modifying rules:

  1. Use the correct filename prefix for your section
  2. Follow the _template.md structure
  3. Include clear bad/good examples with explanations
  4. Add appropriate tags
  5. Run pnpm build to regenerate AGENTS.md and test-cases.json
  6. Rules are automatically sorted by title - no need to manage numbers!

Acknowledgments

Originally created by @shuding at Vercel.


Overview (`templates/plate-template/.agents/skills/react-useeffect/README.md`)

React useEffect Best Practices

A comprehensive guide teaching when to use useEffect in React, and more importantly, when NOT to use it. This skill is based on official React documentation and provides practical alternatives to common useEffect anti-patterns.

Purpose

Effects are an escape hatch from React's reactive paradigm. They let you synchronize with external systems like browser APIs, third-party widgets, or network requests. However, many developers overuse Effects for tasks that React handles better through other means.

This skill helps you:

  • Identify when you truly need an Effect vs. when you don't
  • Recognize common anti-patterns and their fixes
  • Apply better alternatives like useMemo, key prop, and event handlers
  • Write Effects that are clean, maintainable, and free from race conditions

When to Use This Skill

Use this skill when you're:

  • Writing or reviewing useEffect code
  • Using useState to store derived values
  • Implementing data fetching or subscriptions
  • Synchronizing state between components
  • Facing bugs with stale data or race conditions
  • Wondering if your Effect is necessary

Trigger phrases:

  • "Should I use useEffect for this?"
  • "How do I fix this useEffect?"
  • "My Effect is causing too many re-renders"
  • "Data fetching with useEffect"
  • "Reset state when props change"
  • "Derived state from props"

How It Works

This skill provides guidance through three key resources:

  1. Quick Reference Table - Fast lookup for common scenarios with DO/DON'T patterns
  2. Decision Tree - Visual flowchart to determine the right approach
  3. Detailed Anti-Patterns - 9 common mistakes with explanations and fixes
  4. Better Alternatives - 8 proven patterns to replace unnecessary Effects

The skill teaches you to ask the right questions:

  • Is there an external system involved?
  • Am I responding to a user event or component appearance?
  • Can this value be calculated during render?
  • Do I need to reset state when a prop changes?

Key Features

1. Quick Reference Guide

Visual table showing the DO/DON'T for common scenarios:

  • Derived state from props/state
  • Expensive calculations
  • Resetting state on prop change
  • User event responses
  • Notifying parent components
  • Data fetching

2. Decision Tree

Clear flowchart that guides you from "Need to respond to something?" to the correct solution:

  • User interaction โ†’ Event handler
  • Component appeared โ†’ Effect (for external sync/analytics)
  • Derived value needed โ†’ Calculate during render (+ useMemo if expensive)
  • Reset state on prop change โ†’ Key prop

3. Anti-Pattern Recognition

Detailed examples of 9 common mistakes:

  1. Redundant state for derived values
  2. Filtering/transforming data in Effect
  3. Resetting state on prop change
  4. Event-specific logic in Effect
  5. Chains of Effects
  6. Notifying parent via Effect
  7. Passing data up to parent
  8. Fetching without cleanup (race conditions)
  9. App initialization in Effect

Each anti-pattern includes:

  • Bad example with explanation
  • Good example with fix
  • Why the anti-pattern is problematic

4. Better Alternatives

8 proven patterns to replace unnecessary Effects:

  1. Calculate during render for derived state
  2. useMemo for expensive calculations
  3. key prop to reset state
  4. Store ID instead of object for stable references
  5. Event handlers for user actions
  6. useSyncExternalStore for external stores
  7. Lifting state up for shared state
  8. Custom hooks for data fetching with cleanup

Usage Examples

Example 1: Derived State

Bad - Unnecessary Effect:

tsx
function Form() {
  const [firstName, setFirstName] = useState('Taylor');
  const [lastName, setLastName] = useState('Swift');
  const [fullName, setFullName] = useState('');

  useEffect(() => {
    setFullName(firstName + ' ' + lastName);
  }, [firstName, lastName]);
}

Good - Calculate during render:

tsx
function Form() {
  const [firstName, setFirstName] = useState('Taylor');
  const [lastName, setLastName] = useState('Swift');
  const fullName = firstName + ' ' + lastName; // Just compute it
}

Example 2: Resetting State

Bad - Effect to reset:

tsx
function ProfilePage({ userId }) {
  const [comment, setComment] = useState('');

  useEffect(() => {
    setComment('');
  }, [userId]);
}

Good - Key prop:

tsx
function ProfilePage({ userId }) {
  return <Profile userId={userId} key={userId} />;
}

function Profile({ userId }) {
  const [comment, setComment] = useState(''); // Resets automatically
}

Example 3: Data Fetching with Cleanup

Bad - Race condition:

tsx
function SearchResults({ query }) {
  const [results, setResults] = useState([]);

  useEffect(() => {
    fetchResults(query).then(json => {
      setResults(json); // "hello" response may arrive after "hell"
    });
  }, [query]);
}

Good - Cleanup flag:

tsx
function SearchResults({ query }) {
  const [results, setResults] = useState([]);

  useEffect(() => {
    let ignore = false;

    fetchResults(query).then(json => {
      if (!ignore) setResults(json);
    });

    return () => { ignore = true; };
  }, [query]);
}

Example 4: Event Handler Instead of Effect

Bad - Effect watching state:

tsx
function ProductPage({ product, addToCart }) {
  useEffect(() => {
    if (product.isInCart) {
      showNotification(`Added ${product.name}!`);
    }
  }, [product]);

  function handleBuyClick() {
    addToCart(product);
  }
}

Good - Handle in event:

tsx
function ProductPage({ product, addToCart }) {
  function handleBuyClick() {
    addToCart(product);
    showNotification(`Added ${product.name}!`);
  }
}

When You DO Need Effects

Effects are appropriate for:

  • Synchronizing with external systems - Browser APIs, third-party widgets, non-React code
  • Subscriptions - WebSocket connections, global event listeners (prefer useSyncExternalStore)
  • Analytics/logging - Code that needs to run because the component displayed
  • Data fetching - With proper cleanup (or use your framework's built-in mechanism)

When You DON'T Need Effects

Avoid Effects for:

  1. Transforming data for rendering - Calculate at the top level instead
  2. Handling user events - Use event handlers where you know exactly what happened
  3. Deriving state - Just compute it: const fullName = firstName + ' ' + lastName
  4. Chaining state updates - Calculate all next state in the event handler
  5. Notifying parent components - Call the callback in the same event handler
  6. Resetting state - Use the key prop to create a fresh component instance

Best Practices

1. Start Without an Effect

Before adding an Effect, ask: "Is there an external system involved?" If no, you probably don't need an Effect.

2. Prefer Derived State

If you can calculate a value from props or state, don't store it in state with an Effect updating it.

3. Use the Right Tool

  • Expensive calculation โ†’ useMemo
  • User interaction โ†’ Event handler
  • Reset on prop change โ†’ key prop
  • External subscription โ†’ useSyncExternalStore
  • Shared state โ†’ Lift state up

4. Always Clean Up

If your Effect subscribes, fetches, or sets timers, return a cleanup function to prevent memory leaks and race conditions.

5. Avoid Effect Chains

Multiple Effects triggering each other causes unnecessary re-renders and makes code hard to follow. Calculate everything in one place (usually an event handler).

6. Test in Strict Mode

React 18+ Strict Mode mounts components twice in development to expose missing cleanup. If your Effect breaks, you need cleanup.

7. Consider Framework Solutions

For data fetching, prefer your framework's built-in solution (Next.js, Remix) or libraries (React Query, SWR) over manual Effects.

Reference Files

This skill includes three detailed reference documents:

  1. SKILL.md - Quick reference table and decision tree
  2. anti-patterns.md - 9 common mistakes with detailed explanations
  3. alternatives.md - 8 better alternatives with code examples

Common Pitfalls

Multiple Re-renders

Symptom: Component re-renders many times in quick succession.

Cause: Effect that sets state based on state it depends on, creating a loop.

Fix: Calculate the final value in an event handler or during render.

Stale Data

Symptom: UI shows outdated values briefly before updating.

Cause: Using Effect to update derived state causes an extra render pass.

Fix: Calculate derived values during render instead of in state.

Race Conditions

Symptom: Fast typing shows results for old queries after new ones.

Cause: Missing cleanup in data fetching Effect.

Fix: Use cleanup flag (ignore variable) or AbortController.

Runs Twice in Development

Symptom: Effect runs twice on component mount in development.

Cause: React 18 Strict Mode intentionally mounts components twice to expose bugs.

Fix: Add proper cleanup. If it's app initialization that shouldn't run twice, use a module-level guard.

Resources

This skill is based on:

Summary

The golden rule: Effects are an escape hatch from React. If you're not synchronizing with an external system, you probably don't need an Effect.

Before writing useEffect, ask yourself:

  1. Is this responding to a user interaction? โ†’ Use event handler
  2. Is this a value I can calculate from props/state? โ†’ Calculate during render
  3. Is this resetting state when a prop changes? โ†’ Use key prop
  4. Is this synchronizing with an external system? โ†’ Use Effect with cleanup

Follow these patterns, and your React code will be more maintainable, performant, and bug-free.


Overview (`templates/plate-template/.agents/skills/vercel-react-best-practices/README.md`)

React Best Practices

A structured repository for creating and maintaining React Best Practices optimized for agents and LLMs.

Structure

  • rules/ - Individual rule files (one per rule)
    • _sections.md - Section metadata (titles, impacts, descriptions)
    • _template.md - Template for creating new rules
    • area-description.md - Individual rule files
  • src/ - Build scripts and utilities
  • metadata.json - Document metadata (version, organization, abstract)
  • AGENTS.md - Compiled output (generated)
  • test-cases.json - Test cases for LLM evaluation (generated)

Getting Started

  1. Install dependencies:

    bash
    pnpm install
  2. Build AGENTS.md from rules:

    bash
    pnpm build
  3. Validate rule files:

    bash
    pnpm validate
  4. Extract test cases:

    bash
    pnpm extract-tests

Creating a New Rule

  1. Copy rules/_template.md to rules/area-description.md
  2. Choose the appropriate area prefix:
    • async- for Eliminating Waterfalls (Section 1)
    • bundle- for Bundle Size Optimization (Section 2)
    • server- for Server-Side Performance (Section 3)
    • client- for Client-Side Data Fetching (Section 4)
    • rerender- for Re-render Optimization (Section 5)
    • rendering- for Rendering Performance (Section 6)
    • js- for JavaScript Performance (Section 7)
    • advanced- for Advanced Patterns (Section 8)
  3. Fill in the frontmatter and content
  4. Ensure you have clear examples with explanations
  5. Run pnpm build to regenerate AGENTS.md and test-cases.json

Rule File Structure

Each rule file should follow this structure:

markdown
---
title: Rule Title Here
impact: MEDIUM
impactDescription: Optional description
tags: tag1, tag2, tag3
---

## Rule Title Here

Brief explanation of the rule and why it matters.

**Incorrect (description of what's wrong):**

```typescript
// Bad code example

Correct (description of what's right):

typescript
// Good code example

Optional explanatory text after examples.

Reference: Link

File Naming Convention

  • Files starting with _ are special (excluded from build)
  • Rule files: area-description.md (e.g., async-parallel.md)
  • Section is automatically inferred from filename prefix
  • Rules are sorted alphabetically by title within each section
  • IDs (e.g., 1.1, 1.2) are auto-generated during build

Impact Levels

  • CRITICAL - Highest priority, major performance gains
  • HIGH - Significant performance improvements
  • MEDIUM-HIGH - Moderate-high gains
  • MEDIUM - Moderate performance improvements
  • LOW-MEDIUM - Low-medium gains
  • LOW - Incremental improvements

Scripts

  • pnpm build - Compile rules into AGENTS.md
  • pnpm validate - Validate all rule files
  • pnpm extract-tests - Extract test cases for LLM evaluation
  • pnpm dev - Build and validate

Contributing

When adding or modifying rules:

  1. Use the correct filename prefix for your section
  2. Follow the _template.md structure
  3. Include clear bad/good examples with explanations
  4. Add appropriate tags
  5. Run pnpm build to regenerate AGENTS.md and test-cases.json
  6. Rules are automatically sorted by title - no need to manage numbers!

Acknowledgments

Originally created by @shuding at Vercel.


Overview (`apps/www/src/__tests__/package-integration/__deferred__/README.md`)

Deferred Integration Red Suite

This folder is for future-contract integration tests that are intentionally red.

Use it when:

  • the protocol doc names an interaction class we still do not implement
  • the expected future behavior is clear enough to write down now
  • mixing the red spec into the normal green suite would be stupid

Do not use it for:

  • vague ideas
  • duplicate green tests
  • package-local unit seams

Rules:

  • keep specs under domain folders like clipboard, ime, mouse-selection,
    and platform-shortcuts
  • use *.deferred.spec.ts[x]
  • reference the future protocol lane or spec ID in the title or file
  • keep the assertions public-interface focused
  • do not import app-registry fluff if a smaller seam exists

Normal pnpm test and pnpm test:slow ignore this folder.

Run it explicitly with:

bash
pnpm test:deferred

That command expects the suite to stay red. If everything suddenly passes, the
runner fails so the specs get promoted instead of rotting here.


Overview (`apps/www/src/registry/changelog/entries/README.md`)

Registry changelog entries

This directory is the source for Plate UI registry changelog entries.

One file equals one changelog event. Generated public JSON lives one directory
up in apps/www/src/registry/changelog/*.json; do not edit that JSON by hand.

Create an Entry

bash
node tooling/scripts/generate-ui-changelog-entries.mjs \
  --new 2026-06-15-fix-editor-wrapping \
  --summary "Fix editor wrapping" \
  --items editor,editor-static \
  --kind fix

Then regenerate and verify:

bash
node tooling/scripts/generate-ui-changelog-entries.mjs --write
node tooling/scripts/generate-ui-changelog-entries.mjs --check

Shape

mdx
---
id: 2026-06-15-fix-editor-wrapping
date: 2026-06-15
status: draft
kind: fix
summary: "Fix editor wrapping"
change: {"type":"source","date":"2026-06-15","commits":[]}
release: {"status":"unresolved"}
diagnostics: []
---

- **`editor`**, **`editor-static`**: Fix preserved-space wrapping in editable and static editors.

Keep prose user-facing. Do not include implementation notes, test notes, or
internal architecture rationale.


Docs Index (`content/docs/index.mdx`)


title: Introduction

Plate is a React framework for building rich-text editors. It gives you a headless editor runtime, composable plugins, and optional Plate UI components that you copy into your app. Start with Plate UI for a complete editor, or use the packages directly when you need a headless setup.

Choose a Path

What Plate Owns

Layer What it owns Start here
platejs Core editor runtime, React bindings, and editor APIs. Installation
@platejs/* packages Headless plugins for nodes, marks, serialization, collaboration, AI, and editor behavior. Plugin guide
Plate UI registry App-local UI components, kits, editor templates, and API routes installed through the shadcn CLI. Plate UI
Your app The copied component code, styling, routing, data model, and product-specific editor behavior. Plugin Components

Why Plate UI?

Plate UI follows the shadcn/ui model: you copy the code, own it, and keep editing it in your app.

  • Open code: The UI layer is app-local code, not a sealed component package.
  • Composition: Components use predictable React and shadcn/ui conventions.
  • CLI distribution: Add kits, templates, components, API routes, and docs through the shadcn CLI.
  • AI-ready: Open component code and consistent registry metadata give agents real context.
  • MCP-ready: The MCP setup lets AI tools inspect and apply Plate registry items.

Done. You can install the full UI path, drop down to headless packages, or start from an editor template.

FAQ

Plate works in React environments. Use the [Next.js guide](/docs/installation/next) for server-rendered apps, the [React guide](/docs/installation/react) for Vite and client-side apps, [RSC](/docs/installation/rsc) for server components, and [Node.js](/docs/installation/node) for backend-only processing. **Plate** is the headless editor framework: runtime, plugins, transforms, APIs, and React bindings. **Plate UI** is the copied UI layer: components, kits, editor templates, and API routes installed into your app. Yes. Plate and Plate UI are free for personal and commercial projects. Attribution is not required. No. Plate UI uses [shadcn/ui](https://ui.shadcn.com/) conventions for editor-specific UI. Use shadcn/ui for the rest of your application. Package behavior updates through `platejs` and `@platejs/*` dependencies. Copied UI code is yours, so update it by comparing the Plate registry source with your local files or by using the [MCP setup](/docs/installation/mcp). The copied component layer lets you change markup, styles, toolbar behavior, and product details without waiting for a package API to expose every option. No. Plate UI is distributed as registry code through the shadcn CLI so the UI layer stays owned by your app.

Credits

  • shadcn/ui - For UI inspiration, documentation, and the CLI.
  • Radix UI - For the unstyled, accessible primitives.
  • Vercel - For hosting.
  • Shu Ding - Typography style adapted from Nextra.
  • cmdk - For the <Command /> component.

Research Index (`docs/research/index.md`)

Research Index

This is the entrypoint for the compiled agent research layer.

Top Level

  • README.md
    Source of truth for the research pattern, operating rules, and layer boundaries.
  • log.md
    Append-only operational history for research ingests and restructures.
  • schema.md
    Minimal metadata contract for the research page types.

Directories

First Targets


Slate Browser Overview (`docs/slate-browser/overview.md`)


date: 2026-04-03 topic: slate-browser-testing-framework-overview

Slate Browser Testing Framework Overview

Specialist testing/proof doc. For current queue and roadmap truth, see master-roadmap.md.

Purpose

This doc defines the specialist testing/proof lane for editor work and the
future testing-framework direction it draws from
editor-architecture-candidates.md.

This is not a โ€œpick one runner and call it doneโ€ doc.

Strong take:

  • the best editor testing framework is layered
  • one runner to rule them all is a trap
  • speed, fidelity, and coverage want different tools

slate-browser is a good name for this doc area because the main unsolved gap
is browser-facing editor behavior, not pure core semantics. This repo keeps
internal docs under docs/, so the doc lives in docs/slate-browser/.

Follow-up docs:

Current package:

Canonical root commands:

  • yarn build:slate-browser:playwright
  • yarn setup:slate-browser
  • yarn test:slate-browser
  • yarn test:slate-browser:core
  • yarn test:slate-browser:dom
  • yarn test:slate-browser:selection
  • yarn test:slate-browser:e2e
  • yarn test:slate-browser:e2e:local
  • yarn test:slate-browser:ime
  • yarn test:slate-browser:ime:local
  • yarn test:slate-browser:anchors
  • yarn test:replacement:compat:local
  • yarn test:replacement:gate:local

Current role:

Migration Review Rule

When a browser lane disappears or changes shape, the acceptance bar is not
"there used to be a file with that name."

The acceptance bar is:

  • the contributor-facing concept still exists
  • the proof owner is explicit in
    proof-lane-matrix.md
    or the live docs/slate-v2 verdict docs
  • the moved or removed lane is documented in the maintainer diff story

What We Are Optimizing For

  1. fast local feedback
  2. real browser behavior when browser behavior is the thing under test
  3. first-class IME/composition coverage
  4. deterministic selection assertions
  5. performance lanes that measure instead of hand-wave
  6. future agent-native extensibility, so an agent layer can be added later
    without distorting the deterministic core design

Best Ideas By Repo

Lexical

Best steal:

  • real browser IME tests with Chromium CDP
  • selection assertions as first-class artifacts
  • explicit browser matrix for e2e

Key files:

Take:

  • this is the best model for the IME lane
  • do not try to reinvent IME testing in jsdom when Lexical already proved the
    right browser seam

Slate

Best steal:

  • example-driven Playwright integration already exists
  • mixed unit/dom/browser stack already covers real product surfaces

Key files:

Take:

  • keep Slateโ€™s Playwright harness
  • grow it instead of replacing it

edix

Best steal:

  • Vitest project split between fast unit and browser tests
  • Playwright e2e plus direct IME cases in the same repo

Key files:

Take:

  • this is the best small-repo shape for โ€œfast browser contract testsโ€
  • especially useful for focused DOM/selection assertions that are too browser-ish
    for jsdom but too small for heavyweight e2e suites

rich-textarea

Best steal:

  • composition-aware selection compensation
  • split between unit, browser-story, and Playwright e2e

Key files:

Take:

  • good model for lightweight surfaces and composition-aware selection helpers
  • not enough on its own for rich-contenteditable editor coverage

Tiptap

Best steal:

  • good placeholder extension tests
  • decent product-DX test posture with unit + Cypress

Key files:

Take:

  • useful for extension behavior and product-layer regression shape
  • not the best IME or low-level browser harness model

Premirror

Best steal:

  • the cleanest written testing strategy for layout, determinism, and perf

Key file:

Take:

  • best source for test-lane taxonomy and perf-governance language
  • especially useful once editor testing expands into composition/layout/perf

Pretext

Best steal:

  • accuracy and benchmark checks as first-class scripts

Key file:

Take:

  • useful for measurement/perf verification design
  • not a general editor-testing framework model

VS Code

Best steal:

  • layered test entrypoints:
    node, browser, extension, smoke, perf

Key file:

Take:

  • strongest structure for โ€œmany lanes, explicit commands, no one-suite delusionโ€

ProseMirror

Best steal:

  • almost nothing framework-specific here for our testing problem beyond
    disciplined core tests

Key file:

Take:

  • good engine influence
  • weak direct testing-framework influence for this problem

use-editable and markdown-editor

Best steal:

  • no strong testing-framework leverage for this problem

Key files:

Take:

  • useful product/code references
  • not testing-framework references

urql and TanStack DB

Best steal:

  • project-split Vitest discipline
  • explicit e2e subpackages

Key files:

Take:

  • useful for repo-wide test-lane organization
  • not editor-specific behavior coverage

Agent-Browser / Dev-Browser / OMX

Best steal:

  • agent-native lane for actions Playwright does poorly or too rigidly
  • explicit capability-coverage thinking

Key files:

Take:

  • agent-native testing should be designed in as a future extension seam
  • but it should not shape the first deterministic framework layers

This is a layered base with a few specialized lanes on top of it.

  • Layers are about dependency order.
  • Lanes are about specialized risk classes.

Layer 0: Core Fast Tests

Purpose:

  • pure model, transform, selection, and projection semantics

Tools:

  • fast package-local runner
  • current Slate mix is acceptable short-term
  • longer-term, Vitest-style project splits are cleaner than Mocha/Jest drift

Steal from:

  • Slate v2 proof packages
  • edix Vitest split
  • TanStack DB / urql test organization

Layer 1: DOM Contract Tests

Purpose:

  • DOM translation, selection math, placeholder shape, clipboard DOM adaptation
  • focused browser-backed contracts for one seam at a time
  • no example-app orchestration

Tools:

  • fast browser-backed contract tests, not only jsdom
  • best future direction: Vitest browser + Playwright provider for small contract
    lanes

Steal from:

  • edix vitest.config.ts
  • rich-textarea vitest.config.ts

Layer 2: Example Integration Tests

Purpose:

  • assert real editor behavior on real app/example surfaces
  • cross-feature flows and product-shaped regressions
  • use when the behavior only makes sense once the full example is mounted

Tools:

  • Playwright

Steal from:

  • Slate existing Playwright example tests
  • VS Code multi-entry lane organization

Lane A: IME / Composition

Purpose:

  • empty-state composition
  • placeholder-sensitive composition
  • range/selection after commit
  • browser-ordering quirks

Tools:

  • Chromium Playwright + CDP for first lane
  • later WebKit/Safari regression lanes where needed

Steal from:

  • Lexical IME e2e tests
  • edix IME e2e tests

Strong take:

  • this lane must exist
  • jsdom composition is not enough

Lane B: Agent-Native

Purpose:

  • cover actions that humans can do but deterministic browser scripts either
    express badly or not at all

Examples:

  • weird selection drags
  • multi-step context-menu workflows
  • visual proofreading of cursor/toolbar state
  • copy/paste flows where OS/browser glue matters

Tools:

  • dev-browser
  • agent-browser

Rules:

  • every agent-native test still needs explicit assertions or artifacts
  • screenshots, DOM dumps, selection dumps, and event logs must be captured
  • this lane complements deterministic suites; it does not replace them

Lane C: Performance

Purpose:

  • benchmark real editor behaviors without mixing them into correctness suites

Steal from:

  • Premirror testing strategy
  • Pretext benchmark/accuracy scripts
  • VS Code explicit perf command separation

Agent-Native Review

Using the agent-native-reviewer lens, the future framework should require:

  1. Every critical user action has at least one deterministic test lane.
  2. Every action Playwright cannot faithfully express has an agent-native lane.
  3. Agent-native runs operate in the same workspace and examples as human tests.
  4. Capabilities are explicit, not tribal knowledge.

Current gap:

  • Slate has Playwright example tests, but no first-class documented
    agent-native lane for editor actions

That is a real framework gap.

Do not chase a single universal runner.

Best stack is:

  • fast local/unit layer:
    current package runners, converging toward Vitest-style project splits
  • browser contract layer:
    Vitest browser + Playwright provider
  • integration/e2e layer:
    Playwright
  • IME layer:
    Playwright + Chromium CDP composition helpers
  • perf layer:
    explicit benchmark scripts
  • agent-native layer:
    dev-browser / agent-browser

Adoption Order

  1. Keep the current public package/API tranche stable.
  2. Strengthen openExample(...) into a real readiness contract.
  3. Build the renderer/input-policy gauntlet for zero-width and IME-sensitive
    empty-state behavior.
  4. Add test:slate-browser:cross only after that contract is stable.
  5. Add test:slate-browser:perf and maybe test:slate-browser:accuracy
    after correctness lanes stop moving.
  6. Keep the agent-native lane as a later extension seam, not the next core
    tranche.

Bottom Line

The best future testing framework is:

  • Lexicalโ€™s IME realism
  • Slateโ€™s example-driven Playwright harness
  • edix and rich-textareaโ€™s browser-contract speed
  • Premirrorโ€™s determinism/perf discipline
  • VS Codeโ€™s layered lane organization
  • agent-browser/dev-browser for agent-native parity

Not:

  • one runner
  • one suite
  • one fake jsdom composition test pretending it solved IME

Slate V2 Draft Overview (`docs/slate-v2-draft/overview.md`)


date: 2026-04-08 topic: slate-v2-overview

Slate v2 Overview

Purpose

Front door to the live docs/slate-v2 stack.

Current Read

  • live verdict now treats Target A as Go on the proved default stack
  • the broader Target B claim is still reopened under the exhaustive
    API/public-surface audit challenge
  • the curated perf gate package currently clears on blocker-facing lanes in
    replacement-gates-scoreboard.md
  • completed roadmap groundwork is now called POC RC
  • the core packages/slate/test/** deleted-family bucket is closed
  • the full packages/slate-react/** deleted-family bucket is closed
  • the full packages/slate-history/** package bucket is closed
  • major file/test deletion review is now explicitly closed
  • extension model / behavior interception is now explicitly closed
  • schema / normalization extensibility is now explicitly closed
  • non-React / headless core usability is now explicitly closed
  • operation-history-collaboration integrity is now explicitly closed
  • the decoration source-scoped invalidation tranche is now the banked overlay
    authority, not the next broad blocker lane
  • the earlier package-matrix public-surface pass is banked, but exhaustive
    API/public-surface contract-width audit remains reopened under challenge
  • maximum parity with legacy for all examples is now reopened as a sibling
    blocker lane
  • direct 1:1 legacy fixture proof now exists for Editor.nodes/** and the
    non-Editor interfaces/** namespaces
  • the direct transform audit at
    /Users/zbeyens/git/slate-v2/packages/slate/test/legacy-transforms-fixtures.ts
    is green again, so the transform lane is no longer a blanket reopened family
  • the remaining transform debt is narrower:
    • explicit-skip rows
  • the overlay architecture lock is complete, and its next perfection tranche is
    active:
    • decoration sources own inline projected decoration
    • Bookmark owns durable public anchors
    • annotation stores own anchored data
    • widget stores own widget UI
  • the broader program is still called True Slate RC
  • the current execution owners are now:
  • browser/input external-evidence work is now post-RC follow-up, not the active
    current blocker lane
  • local Firefox and Android structural/browser rows are exhausted; the current
    broader blocker lanes are exhaustive API/public-surface audit plus example
    parity, and external Android keyboard-feature evidence plus broader iOS
    evidence remain post-RC follow-up
  • the zero-regression diff seed in
    true-slate-rc-proof-ledger.md
    is EMPTY, so there are no hidden unreviewed browser/input files left in the
    current scoped diff

Ownership

Class Start here
verdict release-readiness-decision.md (primary); supporting live surfaces: replacement-family-ledger.md, replacement-gates-scoreboard.md
sequence master-roadmap.md
evidence true-slate-rc-proof-ledger.md, release-file-review-ledger.md, docs/slate-browser/proof-lane-matrix.md
perf gate replacement-gates-scoreboard.md
protocol deletion-closure-protocol.md
reference architecture-contract.md, live-shape-register.md, normalization-reference.md
maintainer context pr-description.md

Vocabulary

Historical term Current meaning
Target A the live default-stack verdict that corresponds to completed POC RC work
Target B the older broad-replacement label that now maps to the broader True Slate RC destination

Read In This Order

  1. release-readiness-decision.md
  2. replacement-gates-scoreboard.md
  3. replacement-family-ledger.md
  4. master-roadmap.md
  5. release-file-review-ledger.md
  6. true-slate-rc-proof-ledger.md
  7. decoration-roadmap.md
  8. 2026-04-13-slate-v2-full-no-regression-story-plan.md
  9. pr-description.md

Command Entry

Reference / Historical Specs

These do not own queue or verdict truth.

Current read:

  • slate-batch-engine.md is legacy retrofit context, not active remaining-work
    ownership
  • chunking-review.md is historical design analysis; the live runtime posture
    is selector-first rendering plus semantic islands, not child-count chunking

Slate V2 Overview (`docs/slate-v2/overview.md`)


date: 2026-04-18 topic: slate-v2-overview status: active

Slate v2 Overview

Purpose

Front door to the live slate-v2 migration program.

This stack now describes the final-state program for the fresh .tmp/slate-v2
clone. It is not the old rewrite archive.

Current Read

  • .tmp/slate-v2 is the live target
  • .tmp/slate-v2-draft is the evidence/value bank
  • docs/slate-v2/** is the final-state spec lane
  • docs/slate-v2-draft/** is the archived prior doc lane
  • tranche 1 is complete:
    • Bun root/tooling graph
    • Bun test ownership
    • package-manifest build owners
    • docs ownership reset
  • tranche 2 is complete:
    • React 19.2.5 baseline
    • Next 16.2.4 for the site/runtime lane
    • TypeScript 6.0.3 baseline
    • package-src HMR without package rebuilds
    • low-risk compatibility fallout only
  • tranche 3 is the live redesign lane:
    • packages/slate is being redesigned toward the native transaction engine
      and snapshot/store-first API described in
      architecture-contract.md
    • support-package work stays blocked until the slate core API is honestly
      settled
    • backward compatibility is no longer the default value; compatibility keeps
      only what still earns its weight
    • hard cuts are allowed when retrofit baggage blocks the better API
    • current packages/slate proof and perf floors stay active guardrails while
      the redesign lands
  • merged corpus docs now exist for:
    • slate
    • slate-history
    • slate-hyperscript
    • slate-dom
    • slate-react
  • the live stack again has explicit north-star docs for:
    • absolute architecture release claim
    • post-closure proof hardening plan
    • architecture contract
    • overlay roadmap
    • decorations/annotations rationale
    • chunking rejection and huge-doc posture

Read Order

  1. absolute-architecture-release-claim.md
  2. docs/plans/2026-04-25-slate-v2-editing-epoch-kernel-regression-closure-plan.md
  3. docs/plans/2026-04-24-slate-v2-post-closure-proof-hardening-plan.md
  4. docs/plans/2026-04-24-slate-v2-absolute-architecture-closure-plan.md
  5. references/architecture-contract.md
  6. master-roadmap.md
  7. release-readiness-decision.md
  8. replacement-gates-scoreboard.md
  9. true-slate-rc-proof-ledger.md
  10. fresh-branch-migration-plan.md
  11. release-file-review-ledger.md
  12. historical context only:
    2026-04-18-001-refactor-slate-v2-parity-first-migration-plan.md
  13. decoration-roadmap.md
  14. decorations-annotations-cluster.md
  15. references/chunking-review.md
  16. final-api-hard-cuts-status.md
  17. pr-description.md
  18. ledgers/README.md

Ownership

Class Owner
architecture claim absolute-architecture-release-claim.md
execution plan 2026-04-25-slate-v2-editing-epoch-kernel-regression-closure-plan.md, 2026-04-24-slate-v2-post-closure-proof-hardening-plan.md, 2026-04-24-slate-v2-absolute-architecture-closure-plan.md, and fresh-branch-migration-plan.md
tranche order master-roadmap.md
review state release-file-review-ledger.md
readiness claim release-readiness-decision.md
gate status replacement-gates-scoreboard.md
proof status true-slate-rc-proof-ledger.md
maintainer drift story pr-description.md

Archive Rule

If a doc belongs to the old rewrite program and is not live migration truth, it
belongs in docs/slate-v2-draft/**.


Editor Test Harvester Lexical Test Index (`docs/editor-test-harvester/lexical/test-index.md`)

Lexical Portable Test-Name Index

source report: report.md
target: ../lexical
generated_at: 2026-05-08
last_consolidated_at: 2026-05-09
consolidation: portable runnable file count still 137; extracted line count still 1996; no missing or stale index files.

Indexed runnable portable and portable-mixed files: 137.
Extracted test/describe/it lines: 1996.
Files with zero extracted names: 0.

The extractor records literal, dynamic, and multiline titles by line pointer. Dynamic rows still need local reading before an apply pass, but they are no longer hidden behind a file-name-only route.

`../lexical/packages/lexical-code-shiki/src/__tests__/unit/LexicalCodeNodeTabs.test.ts`

category: portable
family: core package behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-code-shiki/src/__tests__/unit/LexicalCodeNodeTabs.test.ts:47 describe: LexicalCodeNode tests
  • ../lexical/packages/lexical-code-shiki/src/__tests__/unit/LexicalCodeNodeTabs.test.ts:49 describe: Tabs
  • ../lexical/packages/lexical-code-shiki/src/__tests__/unit/LexicalCodeNodeTabs.test.ts:96 test: testing ${scenario[2]}: ${scenario[0]} => ${scenario[1]} (${direction})

`../lexical/packages/lexical-code/src/__tests__/unit/LexicalCodeNode.test.ts`

category: portable
family: core package behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-code/src/__tests__/unit/LexicalCodeNode.test.ts:60 describe: LexicalCodeNode tests
  • ../lexical/packages/lexical-code/src/__tests__/unit/LexicalCodeNode.test.ts:62 test: CodeNode.constructor
  • ../lexical/packages/lexical-code/src/__tests__/unit/LexicalCodeNode.test.ts:73 test: CodeNode.createDOM()
  • ../lexical/packages/lexical-code/src/__tests__/unit/LexicalCodeNode.test.ts:90 test: CodeNode.updateDOM()
  • ../lexical/packages/lexical-code/src/__tests__/unit/LexicalCodeNode.test.ts:111 test: CodeNode.exportJSON() should return and object conforming to the expected schema
  • ../lexical/packages/lexical-code/src/__tests__/unit/LexicalCodeNode.test.ts:133 test: CodeNode.insertNewAfter()
  • ../lexical/packages/lexical-code/src/__tests__/unit/LexicalCodeNode.test.ts:167 test: $createCodeNode()
  • ../lexical/packages/lexical-code/src/__tests__/unit/LexicalCodeNode.test.ts:179 test: can tab with collapsed selection
  • ../lexical/packages/lexical-code/src/__tests__/unit/LexicalCodeNode.test.ts:215 test: can tab with non-collapsed selection
  • ../lexical/packages/lexical-code/src/__tests__/unit/LexicalCodeNode.test.ts:239 test: can indent/outdent one line by forward selecting all line (with tabs)
  • ../lexical/packages/lexical-code/src/__tests__/unit/LexicalCodeNode.test.ts:279 test: can indent/outdent one line by backward selecting all line (with tabs)
  • ../lexical/packages/lexical-code/src/__tests__/unit/LexicalCodeNode.test.ts:319 test: can indent/outdent with collapsed selection at start of line (with tabs)
  • ../lexical/packages/lexical-code/src/__tests__/unit/LexicalCodeNode.test.ts:357 test: can indent/outdent multiline (with tabs)
  • ../lexical/packages/lexical-code/src/__tests__/unit/LexicalCodeNode.test.ts:391 test: can indent at the start of the second line
  • ../lexical/packages/lexical-code/src/__tests__/unit/LexicalCodeNode.test.ts:409 test: can indent when selection has a CodeNode element (with indent)
  • ../lexical/packages/lexical-code/src/__tests__/unit/LexicalCodeNode.test.ts:435 test: can outdent at arbitrary points in the line (with tabs)
  • ../lexical/packages/lexical-code/src/__tests__/unit/LexicalCodeNode.test.ts:459 test: code blocks can shift lines (with tab)
  • ../lexical/packages/lexical-code/src/__tests__/unit/LexicalCodeNode.test.ts:479 test: code blocks can shift multiple lines (with tab)
  • ../lexical/packages/lexical-code/src/__tests__/unit/LexicalCodeNode.test.ts:513 describe: arrows
  • ../lexical/packages/lexical-code/src/__tests__/unit/LexicalCodeNode.test.ts:514 describe: rtl code lines
  • ../lexical/packages/lexical-code/src/__tests__/unit/LexicalCodeNode.test.ts:537 test: MOVE_TO_END moves caret to visual right
  • ../lexical/packages/lexical-code/src/__tests__/unit/LexicalCodeNode.test.ts:559 test: MOVE_TO_START moves caret to visual left
  • ../lexical/packages/lexical-code/src/__tests__/unit/LexicalCodeNode.test.ts:1006 describe: initial editor state before transforms
  • ../lexical/packages/lexical-code/src/__tests__/unit/LexicalCodeNode.test.ts:1007 test: can be registered after initial editor state (regression #7014)

`../lexical/packages/lexical-code/src/__tests__/unit/LexicalCodeNodeTabs.test.ts`

category: portable
family: core package behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-code/src/__tests__/unit/LexicalCodeNodeTabs.test.ts:34 describe: LexicalCodeNode tests
  • ../lexical/packages/lexical-code/src/__tests__/unit/LexicalCodeNodeTabs.test.ts:36 describe: Tabs
  • ../lexical/packages/lexical-code/src/__tests__/unit/LexicalCodeNodeTabs.test.ts:83 test: testing ${scenario[2]}: ${scenario[0]} => ${scenario[1]} (${direction})

`../lexical/packages/lexical-history/src/__tests__/unit/LexicalHistory.test.tsx`

category: portable
family: core package behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-history/src/__tests__/unit/LexicalHistory.test.tsx:205 describe: LexicalHistory tests
  • ../lexical/packages/lexical-history/src/__tests__/unit/LexicalHistory.test.tsx:248 test: LexicalHistory after clearing
  • ../lexical/packages/lexical-history/src/__tests__/unit/LexicalHistory.test.tsx:284 test: LexicalHistory.Redo after Quote Node
  • ../lexical/packages/lexical-history/src/__tests__/unit/LexicalHistory.test.tsx:352 test: LexicalHistory in sequence: change, undo, redo, undo, change
  • ../lexical/packages/lexical-history/src/__tests__/unit/LexicalHistory.test.tsx:437 test: undoStack selection points to the same editor
  • ../lexical/packages/lexical-history/src/__tests__/unit/LexicalHistory.test.tsx:481 test: Changes to TextNode leaf are detected properly #6409
  • ../lexical/packages/lexical-history/src/__tests__/unit/LexicalHistory.test.tsx:541 describe: SharedHistoryExtension
  • ../lexical/packages/lexical-history/src/__tests__/unit/LexicalHistory.test.tsx:542 test: can create a parent editor

`../lexical/packages/lexical-html/src/__tests__/unit/LexicalHtml.test.ts`

category: portable
family: core package behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-html/src/__tests__/unit/LexicalHtml.test.ts:25 describe: HTML
  • ../lexical/packages/lexical-html/src/__tests__/unit/LexicalHtml.test.ts:42 test: [Lexical -> HTML]: ${name}
  • ../lexical/packages/lexical-html/src/__tests__/unit/LexicalHtml.test.ts:64 test: [Lexical -> HTML]: Use provided selection
  • ../lexical/packages/lexical-html/src/__tests__/unit/LexicalHtml.test.ts:111 test: [Lexical -> HTML]: Default selection (undefined) should serialize entire editor state
  • ../lexical/packages/lexical-html/src/__tests__/unit/LexicalHtml.test.ts:156 test: dynamic or multiline title
  • ../lexical/packages/lexical-html/src/__tests__/unit/LexicalHtml.test.ts:186 test: If alignment is set on the paragraph, it should take precedence over its parent block alignment
  • ../lexical/packages/lexical-html/src/__tests__/unit/LexicalHtml.test.ts:216 test: It should output correctly nodes whose export is DocumentFragment

`../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts`

category: portable
family: serialization-parsing / marks-inline
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-history/test; .tmp/slate-v2/playwright/integration/examples/richtext.test.ts

  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:44 describe: LexicalListItemNode tests
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:46 test: ListItemNode.constructor
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:60 test: ListItemNode.createDOM()
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:85 describe: ListItemNode.updateDOM()
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:86 test: base
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:119 test: nested list
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:158 describe: ListItemNode.replace()
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:206 test: another list item node
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:239 test: first list item with a non list item node
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:294 test: last list item with a non list item node
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:323 test: middle list item with a non list item node
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:354 test: the only list item with a non list item node
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:397 describe: ListItemNode.remove()
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:401 test: siblings are not nested
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:469 test: the previous sibling is nested
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:549 test: the next sibling is nested
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:629 test: both siblings are nested
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:718 test: the previous sibling is nested deeper than the next sibling
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:828 test: the next sibling is nested deeper than the previous sibling
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:939 test: both siblings are deeply nested
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:1063 describe: ListItemNode.insertNewAfter(): non-empty list items
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:1111 test: first list item
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:1142 test: last list item
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:1173 test: middle list item
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:1204 test: the only list item
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:1251 test: $createListItemNode()
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:1265 test: $isListItemNode()
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:1275 describe: ListItemNode.setIndent()
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:1296 it: indents and outdents list item
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:1356 it: handles fractional indent values
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:1369 test: Can serialize a node that is not attached
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:1388 test: ListItemNode marker style inheritance on indent
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:1415 test: Default: Splitting a list resets numbering to 1 (Backward Compatibility)
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListItemNode.test.ts:1455 test: Option Enabled: Splitting a list preserves numbering (Smart Behavior)

`../lexical/packages/lexical-list/src/__tests__/unit/LexicalListNode.test.ts`

category: portable
family: serialization-parsing / marks-inline
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-history/test; .tmp/slate-v2/playwright/integration/examples/richtext.test.ts

  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListNode.test.ts:54 describe: LexicalListNode tests
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListNode.test.ts:56 test: ListNode.constructor
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListNode.test.ts:70 test: ListNode.getTag()
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListNode.test.ts:83 test: ListNode.createDOM()
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListNode.test.ts:108 test: ListNode.createDOM() correctly applies classes to a nested ListNode
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListNode.test.ts:189 test: ListNode.updateDOM()
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListNode.test.ts:214 test: ListNode.append() should properly transform a ListItemNode
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListNode.test.ts:231 test: ListNode.append() should properly transform a ListNode
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListNode.test.ts:253 test: ListNode.append() should properly transform a ParagraphNode
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListNode.test.ts:269 test: ListNode.append() should wrap an InlineNode in a ListItemNode without converting it to TextNode
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListNode.test.ts:308 test: ListNode.splice() should wrap multiple non-ListItem nodes in individual ListItem nodes
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListNode.test.ts:341 test: Should update list children when switching from checklist to bullet
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListNode.test.ts:367 test: Should clear checklist attributes when nesting lists
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListNode.test.ts:425 test: $createListNode()
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListNode.test.ts:439 test: $isListNode()
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListNode.test.ts:449 test: $createListNode() with tag name (backward compatibility)
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListNode.test.ts:462 describe: LexicalListNode subclassing tests ($config)
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListNode.test.ts:494 describe: ListNode as-is
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListNode.test.ts:497 test: applies transform
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListNode.test.ts:513 describe: ListNodeConfig (no replacement)
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListNode.test.ts:516 test: applies transform
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListNode.test.ts:532 describe: ListNodeSubclass (no replacement)
  • ../lexical/packages/lexical-list/src/__tests__/unit/LexicalListNode.test.ts:535 test: applies transform

`../lexical/packages/lexical-list/src/__tests__/unit/ListExtension.test.ts`

category: portable
family: serialization-parsing / marks-inline
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-history/test; .tmp/slate-v2/playwright/integration/examples/richtext.test.ts

  • ../lexical/packages/lexical-list/src/__tests__/unit/ListExtension.test.ts:23 describe: ListExtension
  • ../lexical/packages/lexical-list/src/__tests__/unit/ListExtension.test.ts:36 it: Creates the list
  • ../lexical/packages/lexical-list/src/__tests__/unit/ListExtension.test.ts:47 describe: CheckListExtension
  • ../lexical/packages/lexical-list/src/__tests__/unit/ListExtension.test.ts:61 it: Preserves numbering when configured via extension
  • ../lexical/packages/lexical-list/src/__tests__/unit/ListExtension.test.ts:118 it: Creates the list

`../lexical/packages/lexical-list/src/__tests__/unit/formatList.test.ts`

category: portable
family: serialization-parsing / marks-inline
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-history/test; .tmp/slate-v2/playwright/integration/examples/richtext.test.ts

  • ../lexical/packages/lexical-list/src/__tests__/unit/formatList.test.ts:82 describe: insertList
  • ../lexical/packages/lexical-list/src/__tests__/unit/formatList.test.ts:84 test: inserting with empty root selection
  • ../lexical/packages/lexical-list/src/__tests__/unit/formatList.test.ts:106 test: inserting in root selection with existing child
  • ../lexical/packages/lexical-list/src/__tests__/unit/formatList.test.ts:131 test: inserting with empty shadow root selection
  • ../lexical/packages/lexical-list/src/__tests__/unit/formatList.test.ts:160 test: formatting empty list items
  • ../lexical/packages/lexical-list/src/__tests__/unit/formatList.test.ts:187 test: preserves element-anchored selection when converting paragraph with linebreak to list
  • ../lexical/packages/lexical-list/src/__tests__/unit/formatList.test.ts:233 describe: $handleListInsertParagraph
  • ../lexical/packages/lexical-list/src/__tests__/unit/formatList.test.ts:235 test: exits list when list item is completely empty
  • ../lexical/packages/lexical-list/src/__tests__/unit/formatList.test.ts:262 test: exits list when list item contains only whitespace
  • ../lexical/packages/lexical-list/src/__tests__/unit/formatList.test.ts:291 test: extends list when list item contains non-whitespace content
  • ../lexical/packages/lexical-list/src/__tests__/unit/formatList.test.ts:317 test: extends list when list item contains a decorator node
  • ../lexical/packages/lexical-list/src/__tests__/unit/formatList.test.ts:343 test: splits list when the empty element is not the last one
  • ../lexical/packages/lexical-list/src/__tests__/unit/formatList.test.ts:386 describe: $handleIndent
  • ../lexical/packages/lexical-list/src/__tests__/unit/formatList.test.ts:389 test: creates a new nested sublist
  • ../lexical/packages/lexical-list/src/__tests__/unit/formatList.test.ts:422 describe: $handleOutdent
  • ../lexical/packages/lexical-list/src/__tests__/unit/formatList.test.ts:424 test: removes the nested list and replaces list item

`../lexical/packages/lexical-list/src/__tests__/unit/registerListStrictIndentTransform.test.ts`

category: portable
family: serialization-parsing / marks-inline
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-history/test; .tmp/slate-v2/playwright/integration/examples/richtext.test.ts

  • ../lexical/packages/lexical-list/src/__tests__/unit/registerListStrictIndentTransform.test.ts:19 describe: Lexical List StrictIndentTransform tests
  • ../lexical/packages/lexical-list/src/__tests__/unit/registerListStrictIndentTransform.test.ts:26 test: applyStrictListIndentation

`../lexical/packages/lexical-list/src/__tests__/unit/utils.test.ts`

category: portable
family: core package behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-list/src/__tests__/unit/utils.test.ts:15 describe: Lexical List Utils tests
  • ../lexical/packages/lexical-list/src/__tests__/unit/utils.test.ts:17 test: getListDepth should return the 1-based depth of a list with one levels
  • ../lexical/packages/lexical-list/src/__tests__/unit/utils.test.ts:35 test: getListDepth should return the 1-based depth of a list with two levels
  • ../lexical/packages/lexical-list/src/__tests__/unit/utils.test.ts:68 test: getListDepth should return the 1-based depth of a list with five levels
  • ../lexical/packages/lexical-list/src/__tests__/unit/utils.test.ts:113 test: getTopListNode should return the top list node when the list is a direct child of the RootNode
  • ../lexical/packages/lexical-list/src/__tests__/unit/utils.test.ts:144 test: getTopListNode should return the top list node when the list is not a direct child of the RootNode
  • ../lexical/packages/lexical-list/src/__tests__/unit/utils.test.ts:176 test: getTopListNode should return the top list node when the list item is deeply nested.
  • ../lexical/packages/lexical-list/src/__tests__/unit/utils.test.ts:214 test: isLastItemInList should return true if the listItem is the last in a nested list.
  • ../lexical/packages/lexical-list/src/__tests__/unit/utils.test.ts:249 test: isLastItemInList should return true if the listItem is the last in a non-nested list.
  • ../lexical/packages/lexical-list/src/__tests__/unit/utils.test.ts:275 test: isLastItemInList should return false if the listItem is not the last in a nested list.
  • ../lexical/packages/lexical-list/src/__tests__/unit/utils.test.ts:310 test: isLastItemInList should return true if the listItem is not the last in a non-nested list.

`../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts`

category: portable
family: serialization-parsing / marks-inline
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-history/test; .tmp/slate-v2/playwright/integration/examples/richtext.test.ts

  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:257 describe: Markdown
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:818 it: dynamic or multiline title
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:866 it: dynamic or multiline title
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:916 it: dynamic or multiline title
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:950 it: should not remove leading node and transform if replace returns false
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:997 it: should remove leading node and execute transform if replace does not return false
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1044 it: can round-trip nested fenced code blocks (4 backticks wrapping 3 backticks)
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1080 it: can round-trip deeply nested fenced code blocks (5 backticks wrapping 4 backticks)
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1117 it: computes fence dynamically when code block content contains backticks
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1145 describe: list marker
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1146 it: should remember marker used on import
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1168 it: should not use [ as a marker for an implicit check list
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1192 it: should remember the marker for checkbox with an explicit marker
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1217 it: should remember marker used on export
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1245 describe: Enter key triggers
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1246 it: dynamic or multiline title
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1286 it: dynamic or multiline title
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1326 it: should not transform on Enter when replace returns false
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1381 describe: normalizeMarkdown - shouldMergeAdjacentLines = true
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1382 it: should combine lines separated by a single \n unless they are in a codeblock
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1446 it: tables
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1455 it: merges adjacent plain text lines with a single space
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1461 it: merges while trimming the next line and inserting a single space
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1467 it: does not merge across HTML-like tags (opening, content, closing, after)
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1476 it: does not merge the fence line with the first line after a code block
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1482 it: trims hard-break trailing spaces when merging adjacent lines
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1488 it: treats whitespace-only lines as empty separators (no merge across them)
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1498 it: mdx start tag followed by content, than closing tag preceded by content
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1507 describe: normalizeMarkdown - shouldMergeAdjacentLines = false
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1508 it: should not combine lines separated by a single \n
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1575 it: tables
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1584 it: preserves trailing whitespace on content lines
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1589 it: collapses whitespace-only lines to empty (paragraph separator)
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1594 it: preserves leading whitespace on content lines
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1600 describe: markdown hard line break import
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1601 it: preserves hard line break when shouldPreserveNewLines is true
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1641 it: preserves backslash hard line break when shouldPreserveNewLines is true
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1682 describe: markdown whitespace import (default mode)
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1696 it: preserves trailing whitespace on a standalone paragraph line (default mode)
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1722 it: preserves leading whitespace on a standalone paragraph line (default mode)
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/LexicalMarkdown.test.ts:1747 it: handles two-space hard line break in default mode (adjacent lines merged into LineBreak)

`../lexical/packages/lexical-markdown/src/__tests__/unit/MarkdownTransformers.test.ts`

category: portable
family: serialization-parsing / marks-inline
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-history/test; .tmp/slate-v2/playwright/integration/examples/richtext.test.ts

  • ../lexical/packages/lexical-markdown/src/__tests__/unit/MarkdownTransformers.test.ts:52 describe: LINK
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/MarkdownTransformers.test.ts:53 test: text before a markdown link is preserved
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/MarkdownTransformers.test.ts:68 test: formatted text before a markdown link is preserved
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/MarkdownTransformers.test.ts:90 test: LINK is not too greedy if there is a preceding match that was not processed
  • ../lexical/packages/lexical-markdown/src/__tests__/unit/MarkdownTransformers.test.ts:123 test: markdown link should not be created inside another link.

category: portable-mixed
family: selection-dom-mapping / void-atom
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-react/test/editable-behavior.test.tsx; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:29 describe: Auto Links
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:32 test: Can convert url-like text into links
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:33 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:63 test: Can convert url-like text into links for email
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:67 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:92 test: Can destruct links if add non-spacing text in front or right after it
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:96 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:156 test: Can create link when pasting text with urls
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:160 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:191 test: Can create link for email when pasting text with urls
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:195 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:225 test: Does not create redundant auto-link
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:226 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:263 test: Can create links when pasting text with multiple autolinks in a row separated by non-alphanumeric characters, but not whitespaces
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:267 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:300 test: Handles multiple autolinks in a row
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:301 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:337 test: Handles autolink following an invalid autolink
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:341 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:360 test: Handles autolink following an invalid autolink to email
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:364 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:391 test: Can convert url-like text with formatting into links
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:395 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:440 test: Can convert url-like text with styles into links
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:444 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:491 test: Can convert URL into an autolink
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:542 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:543 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:567 test: Can convert URL into an email autolink
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:583 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:584 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:607 test: Can not convert bad URLs into links
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:639 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:655 test: Can not convert bad URLs into email links
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:678 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:694 test: Can unlink the autolink and then make it link again
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:698 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:755 test: Unlinked autolink is preserved when adding punctuation before or after it
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:759 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:842 test: Adding an invalid character will destruct an unlinked autolink
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:846 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:896 test: Adding an emoji inside an unlinked autolink will destruct it
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:900 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:955 test: Pressing Enter inside an AutoLinkNode does not insert extra paragraph
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoLinks.spec.mjs:959 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/AutoScroll.spec.mjs`

category: portable
family: beforeinput-input / browser-engine
target: .tmp/slate-v2/packages/slate-react/test/model-input-strategy-contract.test.ts; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoScroll.spec.mjs:17 test: Auto scroll while typing
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoScroll.spec.mjs:66 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/AutoScroll.spec.mjs:69 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/Autocomplete.spec.mjs`

category: portable-mixed
family: mixed portable invariant
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/e2e/Autocomplete.spec.mjs:27 test: Autocomplete
  • ../lexical/packages/lexical-playground/__tests__/e2e/Autocomplete.spec.mjs:31 test: Can autocomplete a word
  • ../lexical/packages/lexical-playground/__tests__/e2e/Autocomplete.spec.mjs:79 test: Can autocomplete in the same format as the original text
  • ../lexical/packages/lexical-playground/__tests__/e2e/Autocomplete.spec.mjs:83 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Autocomplete.spec.mjs:161 test: Undo does not cause an exception
  • ../lexical/packages/lexical-playground/__tests__/e2e/Autocomplete.spec.mjs:166 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Autocomplete.spec.mjs:168 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/CharacterLimit.spec.mjs`

category: portable-mixed
family: mixed portable invariant
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/e2e/CharacterLimit.spec.mjs:24 test: displays overflow on text
  • ../lexical/packages/lexical-playground/__tests__/e2e/CharacterLimit.spec.mjs:25 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CharacterLimit.spec.mjs:82 test: handles auto link nodes
  • ../lexical/packages/lexical-playground/__tests__/e2e/CharacterLimit.spec.mjs:83 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CharacterLimit.spec.mjs:124 test: displays overflow on token nodes
  • ../lexical/packages/lexical-playground/__tests__/e2e/CharacterLimit.spec.mjs:130 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CharacterLimit.spec.mjs:160 test: can type new lines inside overflow
  • ../lexical/packages/lexical-playground/__tests__/e2e/CharacterLimit.spec.mjs:165 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CharacterLimit.spec.mjs:215 test: can delete text in front and overflow is recomputed
  • ../lexical/packages/lexical-playground/__tests__/e2e/CharacterLimit.spec.mjs:220 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CharacterLimit.spec.mjs:287 test: can delete text in front and overflow is recomputed (token nodes)
  • ../lexical/packages/lexical-playground/__tests__/e2e/CharacterLimit.spec.mjs:291 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CharacterLimit.spec.mjs:332 test: can overflow in lists
  • ../lexical/packages/lexical-playground/__tests__/e2e/CharacterLimit.spec.mjs:333 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CharacterLimit.spec.mjs:353 test: can delete an overflowed paragraph
  • ../lexical/packages/lexical-playground/__tests__/e2e/CharacterLimit.spec.mjs:358 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CharacterLimit.spec.mjs:393 test: handles accented characters
  • ../lexical/packages/lexical-playground/__tests__/e2e/CharacterLimit.spec.mjs:394 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CharacterLimit.spec.mjs:426 test: handles graphemes
  • ../lexical/packages/lexical-playground/__tests__/e2e/CharacterLimit.spec.mjs:427 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CharacterLimit.spec.mjs:444 test: CharacterLimit
  • ../lexical/packages/lexical-playground/__tests__/e2e/CharacterLimit.spec.mjs:445 test: UTF-16
  • ../lexical/packages/lexical-playground/__tests__/e2e/CharacterLimit.spec.mjs:453 test: UTF-8

`../lexical/packages/lexical-playground/__tests__/e2e/ClearFormatting.spec.mjs`

category: portable
family: serialization-parsing / marks-inline
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-history/test; .tmp/slate-v2/playwright/integration/examples/richtext.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/ClearFormatting.spec.mjs:34 test: Clear All Formatting
  • ../lexical/packages/lexical-playground/__tests__/e2e/ClearFormatting.spec.mjs:36 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/ClearFormatting.spec.mjs:39 test: Can clear BIU formatting
  • ../lexical/packages/lexical-playground/__tests__/e2e/ClearFormatting.spec.mjs:60 test: Should preserve the default styling of links and quoted text
  • ../lexical/packages/lexical-playground/__tests__/e2e/ClearFormatting.spec.mjs:107 test: Should preserve the default styling of hashtags and mentions
  • ../lexical/packages/lexical-playground/__tests__/e2e/ClearFormatting.spec.mjs:188 test: Can clear left/center/right alignment when BIU formatting already applied
  • ../lexical/packages/lexical-playground/__tests__/e2e/ClearFormatting.spec.mjs:210 test: Can clear left/center/right alignment when BIU formatting not applied
  • ../lexical/packages/lexical-playground/__tests__/e2e/ClearFormatting.spec.mjs:231 test: Can clear when only indent/outdent alignment is applied
  • ../lexical/packages/lexical-playground/__tests__/e2e/ClearFormatting.spec.mjs:252 test: Can clear indent/outdent alignment when other formatting options like BIU or left/right/center align are also applied
  • ../lexical/packages/lexical-playground/__tests__/e2e/ClearFormatting.spec.mjs:279 test: Should clear formatting of selected text which spans over 1 paragraph

`../lexical/packages/lexical-playground/__tests__/e2e/CodeBlock.spec.mjs`

category: portable
family: serialization-parsing / marks-inline
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-history/test; .tmp/slate-v2/playwright/integration/examples/richtext.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/CodeBlock.spec.mjs:34 test: CodeBlock
  • ../lexical/packages/lexical-playground/__tests__/e2e/CodeBlock.spec.mjs:36 test: Can create code block with markdown
  • ../lexical/packages/lexical-playground/__tests__/e2e/CodeBlock.spec.mjs:108 test: Can create code block with markdown and wrap existing text
  • ../lexical/packages/lexical-playground/__tests__/e2e/CodeBlock.spec.mjs:173 test: Can select multiple paragraphs and convert to code block
  • ../lexical/packages/lexical-playground/__tests__/e2e/CodeBlock.spec.mjs:177 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CodeBlock.spec.mjs:234 test: Can select partial paragraphs and convert to code block
  • ../lexical/packages/lexical-playground/__tests__/e2e/CodeBlock.spec.mjs:238 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CodeBlock.spec.mjs:300 test: Can select a line within line breaks and convert to code block
  • ../lexical/packages/lexical-playground/__tests__/e2e/CodeBlock.spec.mjs:304 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CodeBlock.spec.mjs:351 test: Can switch highlighting language in a toolbar
  • ../lexical/packages/lexical-playground/__tests__/e2e/CodeBlock.spec.mjs:423 test: Can maintain indent when creating new lines
  • ../lexical/packages/lexical-playground/__tests__/e2e/CodeBlock.spec.mjs:428 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CodeBlock.spec.mjs:515 test: Can indent text via tab when selecting the line with Shift+Down
  • ../lexical/packages/lexical-playground/__tests__/e2e/CodeBlock.spec.mjs:520 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CodeBlock.spec.mjs:603 test: Can (un)indent multiple lines at once
  • ../lexical/packages/lexical-playground/__tests__/e2e/CodeBlock.spec.mjs:608 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CodeBlock.spec.mjs:924 test: Can move around lines with option+arrow keys
  • ../lexical/packages/lexical-playground/__tests__/e2e/CodeBlock.spec.mjs:928 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CodeBlock.spec.mjs:1111 test: prevents selection and typing outside code block boundaries
  • ../lexical/packages/lexical-playground/__tests__/e2e/CodeBlock.spec.mjs:1115 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CodeBlock.spec.mjs:1267 test: When pressing CMD/Ctrl + Left, CMD/Ctrl + Right, the cursor should go to the start of the code
  • ../lexical/packages/lexical-playground/__tests__/e2e/CodeBlock.spec.mjs:1271 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CodeBlock.spec.mjs:1350 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CodeBlock.spec.mjs:1410 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/Collaboration.spec.mjs`

category: portable
family: collaboration-remote / history-undo-redo
target: .tmp/slate-v2/packages/slate/test/collab-history-runtime-contract.ts; future slate-yjs browser lane

  • ../lexical/packages/lexical-playground/__tests__/e2e/Collaboration.spec.mjs:33 test: Collaboration
  • ../lexical/packages/lexical-playground/__tests__/e2e/Collaboration.spec.mjs:36 test: Undo with collaboration on
  • ../lexical/packages/lexical-playground/__tests__/e2e/Collaboration.spec.mjs:42 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Collaboration.spec.mjs:220 test: Remove dangling text from YJS when there is no preceding text node
  • ../lexical/packages/lexical-playground/__tests__/e2e/Collaboration.spec.mjs:226 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Collaboration.spec.mjs:295 test: Merge dangling text into preceding text node
  • ../lexical/packages/lexical-playground/__tests__/e2e/Collaboration.spec.mjs:301 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Collaboration.spec.mjs:387 test: Undo/redo where text node is split by formatting change
  • ../lexical/packages/lexical-playground/__tests__/e2e/Collaboration.spec.mjs:393 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Collaboration.spec.mjs:512 test: Undo/redo where text node is split by inline element node
  • ../lexical/packages/lexical-playground/__tests__/e2e/Collaboration.spec.mjs:518 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Collaboration.spec.mjs:644 test: $handleNormalizationMergeConflicts handles nodes that have been reparented
  • ../lexical/packages/lexical-playground/__tests__/e2e/Collaboration.spec.mjs:648 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/ColumnLayoutBackspaceAtEnd.spec.mjs`

category: portable-mixed
family: mixed portable invariant
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/e2e/ColumnLayoutBackspaceAtEnd.spec.mjs:17 test: Layout - removes layout completely when both columns are empty and backspace is pressed at the first layout item
  • ../lexical/packages/lexical-playground/__tests__/e2e/ColumnLayoutBackspaceAtEnd.spec.mjs:22 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/Composition.spec.mjs`

category: portable
family: ime-composition / history-undo-redo
target: .tmp/slate-v2/playwright/stress/generated-editing.test.ts; .tmp/slate-v2/packages/slate-browser/src/playwright/ime.ts; .tmp/slate-v2/packages/slate-history/test

  • ../lexical/packages/lexical-playground/__tests__/e2e/Composition.spec.mjs:33 test: Composition
  • ../lexical/packages/lexical-playground/__tests__/e2e/Composition.spec.mjs:35 test: Handles Hiragana characters
  • ../lexical/packages/lexical-playground/__tests__/e2e/Composition.spec.mjs:88 test: Handles Arabic characters with diacritics
  • ../lexical/packages/lexical-playground/__tests__/e2e/Composition.spec.mjs:173 test: IME
  • ../lexical/packages/lexical-playground/__tests__/e2e/Composition.spec.mjs:174 test: Can type Hiragana via IME
  • ../lexical/packages/lexical-playground/__tests__/e2e/Composition.spec.mjs:176 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Composition.spec.mjs:258 test: Can type Hiragana via IME between line breaks
  • ../lexical/packages/lexical-playground/__tests__/e2e/Composition.spec.mjs:263 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Composition.spec.mjs:371 test: Can type Hiragana via IME into a new bold format
  • ../lexical/packages/lexical-playground/__tests__/e2e/Composition.spec.mjs:377 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Composition.spec.mjs:445 test: Can type Hiragana via IME between emojis
  • ../lexical/packages/lexical-playground/__tests__/e2e/Composition.spec.mjs:449 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Composition.spec.mjs:636 test: Can type Hiragana via IME at the end of a mention
  • ../lexical/packages/lexical-playground/__tests__/e2e/Composition.spec.mjs:641 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Composition.spec.mjs:746 test: Can type Hiragana via IME part way through a mention
  • ../lexical/packages/lexical-playground/__tests__/e2e/Composition.spec.mjs:751 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Composition.spec.mjs:852 test: Typing after mention with IME should not break it
  • ../lexical/packages/lexical-playground/__tests__/e2e/Composition.spec.mjs:858 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Composition.spec.mjs:920 test: Can type Hiragana via IME with hashtags
  • ../lexical/packages/lexical-playground/__tests__/e2e/Composition.spec.mjs:926 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Composition.spec.mjs:1078 test: Can type, delete and cancel Hiragana via IME
  • ../lexical/packages/lexical-playground/__tests__/e2e/Composition.spec.mjs:1083 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Composition.spec.mjs:1211 test: Floating toolbar should not be displayed when using IME
  • ../lexical/packages/lexical-playground/__tests__/e2e/Composition.spec.mjs:1217 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Composition.spec.mjs:1276 test: Typeahead menu should not close during IME composition
  • ../lexical/packages/lexical-playground/__tests__/e2e/Composition.spec.mjs:1281 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Composition.spec.mjs:1325 test: Can replace multiple formatted text nodes with IME composition (Korean)
  • ../lexical/packages/lexical-playground/__tests__/e2e/Composition.spec.mjs:1331 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/HTMLCopyAndPaste.spec.mjs`

category: portable
family: clipboard-paste / browser-engine
target: .tmp/slate-v2/packages/slate/test/clipboard-contract.ts; .tmp/slate-v2/packages/slate-dom/test/clipboard-boundary.test.ts; .tmp/slate-v2/playwright/integration/examples/paste-html.test.ts; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/HTMLCopyAndPaste.spec.mjs:22 test: HTML CopyAndPaste
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/HTMLCopyAndPaste.spec.mjs:25 test: Copy + paste multi line html with extra newlines
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/HTMLCopyAndPaste.spec.mjs:30 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/HTMLCopyAndPaste.spec.mjs:53 test: Copy + paste a code block with BR
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/HTMLCopyAndPaste.spec.mjs:54 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/HTMLCopyAndPaste.spec.mjs:135 test: Copy + paste a paragraph element between horizontal rules
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/HTMLCopyAndPaste.spec.mjs:140 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/HTMLCopyAndPaste.spec.mjs:199 test: Paste top level element in the middle of paragraph
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/HTMLCopyAndPaste.spec.mjs:204 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/ImageHTMLCopyAndPaste.spec.mjs`

category: portable
family: clipboard-paste / browser-engine
target: .tmp/slate-v2/packages/slate/test/clipboard-contract.ts; .tmp/slate-v2/packages/slate-dom/test/clipboard-boundary.test.ts; .tmp/slate-v2/playwright/integration/examples/paste-html.test.ts; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/ImageHTMLCopyAndPaste.spec.mjs:26 test: HTML Image CopyAndPaste
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/ImageHTMLCopyAndPaste.spec.mjs:31 test: Copy + paste HTML of a figure with img and figcaption
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/ImageHTMLCopyAndPaste.spec.mjs:37 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/ImageHTMLCopyAndPaste.spec.mjs:134 test: Copy + paste an image
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/ImageHTMLCopyAndPaste.spec.mjs:135 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/ImageHTMLCopyAndPaste.spec.mjs:172 test: Copy + paste + undo multiple image
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/ImageHTMLCopyAndPaste.spec.mjs:177 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/LinksHTMLCopyAndPaste.spec.mjs`

category: portable
family: clipboard-paste / browser-engine
target: .tmp/slate-v2/packages/slate/test/clipboard-contract.ts; .tmp/slate-v2/packages/slate-dom/test/clipboard-boundary.test.ts; .tmp/slate-v2/playwright/integration/examples/paste-html.test.ts; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/LinksHTMLCopyAndPaste.spec.mjs:34 test: HTML Links CopyAndPaste
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/LinksHTMLCopyAndPaste.spec.mjs:37 test: Copy + paste an anchor element
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/LinksHTMLCopyAndPaste.spec.mjs:38 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/LinksHTMLCopyAndPaste.spec.mjs:99 test: Copy + paste in front of or after a link
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/LinksHTMLCopyAndPaste.spec.mjs:103 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/LinksHTMLCopyAndPaste.spec.mjs:130 test: Copy + paste link by selecting its (partial) content
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/LinksHTMLCopyAndPaste.spec.mjs:134 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/LinksHTMLCopyAndPaste.spec.mjs:166 test: Copy + paste empty link #3193
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/LinksHTMLCopyAndPaste.spec.mjs:167 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/LinksHTMLCopyAndPaste.spec.mjs:213 test: Paste a link into text
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/LinksHTMLCopyAndPaste.spec.mjs:214 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/LinksHTMLCopyAndPaste.spec.mjs:247 test: Paste text into a link
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/LinksHTMLCopyAndPaste.spec.mjs:248 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/LinksHTMLCopyAndPaste.spec.mjs:284 test: Paste formatted text into a link
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/LinksHTMLCopyAndPaste.spec.mjs:285 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/LinksHTMLCopyAndPaste.spec.mjs:326 test: Paste a link into a link
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/LinksHTMLCopyAndPaste.spec.mjs:327 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/LinksHTMLCopyAndPaste.spec.mjs:366 test: Paste multiple blocks into a link
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/LinksHTMLCopyAndPaste.spec.mjs:367 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/ListsHTMLCopyAndPaste.spec.mjs`

category: portable
family: clipboard-paste / browser-engine
target: .tmp/slate-v2/packages/slate/test/clipboard-contract.ts; .tmp/slate-v2/packages/slate-dom/test/clipboard-boundary.test.ts; .tmp/slate-v2/playwright/integration/examples/paste-html.test.ts; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/ListsHTMLCopyAndPaste.spec.mjs:21 test: HTML Lists CopyAndPaste
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/ListsHTMLCopyAndPaste.spec.mjs:24 test: Copy + paste a list element
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/ListsHTMLCopyAndPaste.spec.mjs:25 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/ListsHTMLCopyAndPaste.spec.mjs:93 test: Copy + paste a Lexical nested list
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/ListsHTMLCopyAndPaste.spec.mjs:94 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/ListsHTMLCopyAndPaste.spec.mjs:129 test: Copy + paste (Nested List - directly nested ul)
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/ListsHTMLCopyAndPaste.spec.mjs:133 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/ListsHTMLCopyAndPaste.spec.mjs:217 test: Copy + paste (Nested List - li with non-list content plus ul child)
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/ListsHTMLCopyAndPaste.spec.mjs:221 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/ListsHTMLCopyAndPaste.spec.mjs:299 test: Copy + paste a checklist
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/ListsHTMLCopyAndPaste.spec.mjs:300 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/ListsHTMLCopyAndPaste.spec.mjs:372 test: Paste top level element in the middle of list
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/ListsHTMLCopyAndPaste.spec.mjs:377 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/ListsHTMLCopyAndPaste.spec.mjs:425 test: Copy + paste a nested divs in a list
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/ListsHTMLCopyAndPaste.spec.mjs:426 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/TablesHTMLCopyAndPaste.spec.mjs`

category: portable
family: clipboard-paste / browser-engine
target: .tmp/slate-v2/packages/slate/test/clipboard-contract.ts; .tmp/slate-v2/packages/slate-dom/test/clipboard-boundary.test.ts; .tmp/slate-v2/playwright/integration/examples/paste-html.test.ts; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/TablesHTMLCopyAndPaste.spec.mjs:19 test: HTML Tables CopyAndPaste
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/TablesHTMLCopyAndPaste.spec.mjs:24 test: Copy + paste (Table - Google Docs)
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/TablesHTMLCopyAndPaste.spec.mjs:29 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/TablesHTMLCopyAndPaste.spec.mjs:31 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/TablesHTMLCopyAndPaste.spec.mjs:95 test: Copy + paste (Table - Google Docs with custom widths)
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/TablesHTMLCopyAndPaste.spec.mjs:100 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/TablesHTMLCopyAndPaste.spec.mjs:161 test: Copy + paste (Table - Quip)
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/TablesHTMLCopyAndPaste.spec.mjs:162 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/TablesHTMLCopyAndPaste.spec.mjs:233 test: Copy + paste (Table - Google Sheets)
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/TablesHTMLCopyAndPaste.spec.mjs:234 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/TablesHTMLCopyAndPaste.spec.mjs:306 test: Copy + paste - Merge Grids
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/TablesHTMLCopyAndPaste.spec.mjs:307 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/TablesHTMLCopyAndPaste.spec.mjs:308 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/TablesHTMLCopyAndPaste.spec.mjs:434 test: Copy + paste nested block and inline html in a table
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/TablesHTMLCopyAndPaste.spec.mjs:439 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/TablesHTMLCopyAndPaste.spec.mjs:441 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/TablesHTMLCopyAndPaste.spec.mjs:534 test: Copy + paste table with merged cells and unequal number of cells in rows
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/TablesHTMLCopyAndPaste.spec.mjs:539 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/TablesHTMLCopyAndPaste.spec.mjs:691 test: Copy + paste table with empty row
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/TablesHTMLCopyAndPaste.spec.mjs:696 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/TextFormatHTMLCopyAndPaste.spec.mjs`

category: portable
family: clipboard-paste / browser-engine
target: .tmp/slate-v2/packages/slate/test/clipboard-contract.ts; .tmp/slate-v2/packages/slate-dom/test/clipboard-boundary.test.ts; .tmp/slate-v2/playwright/integration/examples/paste-html.test.ts; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/TextFormatHTMLCopyAndPaste.spec.mjs:17 test: HTML CopyAndPaste
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/TextFormatHTMLCopyAndPaste.spec.mjs:20 test: Copy + paste html with BIU formatting
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/TextFormatHTMLCopyAndPaste.spec.mjs:21 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/TextFormatHTMLCopyAndPaste.spec.mjs:70 test: Copy + paste html with highlight formatting
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/html/TextFormatHTMLCopyAndPaste.spec.mjs:74 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/ContextMenuCopyAndPaste.spec.mjs`

category: portable
family: clipboard-paste / browser-engine
target: .tmp/slate-v2/packages/slate/test/clipboard-contract.ts; .tmp/slate-v2/packages/slate-dom/test/clipboard-boundary.test.ts; .tmp/slate-v2/playwright/integration/examples/paste-html.test.ts; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/ContextMenuCopyAndPaste.spec.mjs:23 test: ContextMenuCopyAndPaste
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/ContextMenuCopyAndPaste.spec.mjs:29 test: Basic copy-paste #6231
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/ContextMenuCopyAndPaste.spec.mjs:30 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/ContextMenuCopyAndPaste.spec.mjs:56 test: Rich text Copy and Paste with different Font Size
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/ContextMenuCopyAndPaste.spec.mjs:62 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/CopyAndPaste.spec.mjs`

category: portable
family: clipboard-paste / browser-engine
target: .tmp/slate-v2/packages/slate/test/clipboard-contract.ts; .tmp/slate-v2/packages/slate-dom/test/clipboard-boundary.test.ts; .tmp/slate-v2/playwright/integration/examples/paste-html.test.ts; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/CopyAndPaste.spec.mjs:33 test: CopyAndPaste
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/CopyAndPaste.spec.mjs:35 test: Basic copy + paste
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/CopyAndPaste.spec.mjs:222 test: Copy and paste heading
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/CopyAndPaste.spec.mjs:228 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/CopyAndPaste.spec.mjs:229 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/CopyAndPaste.spec.mjs:230 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/CopyAndPaste.spec.mjs:278 test: Copy and paste between sections
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/CopyAndPaste.spec.mjs:743 test: Copy and paste an inline element into a leaf node
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/CopyAndPaste.spec.mjs:747 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/CopyAndPaste.spec.mjs:796 test: Copy + paste multi-line plain text into rich text produces separate paragraphs
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/CopyAndPaste.spec.mjs:800 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/CopyAndPaste.spec.mjs:819 test: Pasting a decorator node on a blank line inserts before the line
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/CopyAndPaste.spec.mjs:826 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/CopyAndPaste.spec.mjs:875 test: Copy and paste paragraph into quote
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/CopyAndPaste.spec.mjs:876 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/CopyAndPaste.spec.mjs:905 test: Process font-size from content copied from Google Docs/MS Word
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/CopyAndPaste.spec.mjs:909 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/CopyAndPaste.spec.mjs:933 test: test font-size in pt and px both are processed correctly
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/CopyAndPaste.spec.mjs:937 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/CopyAndPaste.spec.mjs:965 test: Cut then copy empty selection preserves clipboard

`../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/ListsCopyAndPaste.spec.mjs`

category: portable
family: clipboard-paste / browser-engine
target: .tmp/slate-v2/packages/slate/test/clipboard-contract.ts; .tmp/slate-v2/packages/slate-dom/test/clipboard-boundary.test.ts; .tmp/slate-v2/playwright/integration/examples/paste-html.test.ts; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/ListsCopyAndPaste.spec.mjs:30 test: Lists CopyAndPaste
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/ListsCopyAndPaste.spec.mjs:33 test: Copy and paste of partial list items into an empty editor
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/ListsCopyAndPaste.spec.mjs:37 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/ListsCopyAndPaste.spec.mjs:139 test: Copy and paste of partial list items into the list
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/ListsCopyAndPaste.spec.mjs:143 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/ListsCopyAndPaste.spec.mjs:280 test: Copy list items and paste back into list
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/ListsCopyAndPaste.spec.mjs:285 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/ListsCopyAndPaste.spec.mjs:399 test: Copy list items and paste into list
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/ListsCopyAndPaste.spec.mjs:404 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/ListsCopyAndPaste.spec.mjs:405 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/ListsCopyAndPaste.spec.mjs:533 test: Copy and paste of list items and paste back into list on an existing item
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/ListsCopyAndPaste.spec.mjs:538 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/ListsCopyAndPaste.spec.mjs:663 test: Copy and paste two paragraphs into list on an existing item
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/ListsCopyAndPaste.spec.mjs:667 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/ListsCopyAndPaste.spec.mjs:766 test: Copy and paste two paragraphs at the end of a list
  • ../lexical/packages/lexical-playground/__tests__/e2e/CopyAndPaste/lexical/ListsCopyAndPaste.spec.mjs:770 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/DateTime.spec.mjs`

category: portable-mixed
family: mixed portable invariant
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/e2e/DateTime.spec.mjs:20 test: DateTime
  • ../lexical/packages/lexical-playground/__tests__/e2e/DateTime.spec.mjs:23 test: can insert a DateTime node via the Insert dropdown
  • ../lexical/packages/lexical-playground/__tests__/e2e/DateTime.spec.mjs:27 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/DateTime.spec.mjs:62 test: Datetime should be inserted into the link
  • ../lexical/packages/lexical-playground/__tests__/e2e/DateTime.spec.mjs:66 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/DateTime.spec.mjs:114 test: Datetime should apply the current selection format
  • ../lexical/packages/lexical-playground/__tests__/e2e/DateTime.spec.mjs:118 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/DraggableBlock.spec.mjs`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/e2e/DraggableBlock.spec.mjs:18 test: DraggableBlock
  • ../lexical/packages/lexical-playground/__tests__/e2e/DraggableBlock.spec.mjs:21 test: Paragraph one can be successfully dragged below paragraph two
  • ../lexical/packages/lexical-playground/__tests__/e2e/DraggableBlock.spec.mjs:27 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/DraggableBlock.spec.mjs:28 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/DraggableBlock.spec.mjs:29 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/DraggableBlock.spec.mjs:70 test: Dragging a paragraph to the end of itself does not change the content
  • ../lexical/packages/lexical-playground/__tests__/e2e/DraggableBlock.spec.mjs:76 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/DraggableBlock.spec.mjs:77 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/DraggableBlock.spec.mjs:78 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/DraggableBlock.spec.mjs:112 test: Drag a paragraph to the bottom of its previous paragraph and nothing happens
  • ../lexical/packages/lexical-playground/__tests__/e2e/DraggableBlock.spec.mjs:118 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/DraggableBlock.spec.mjs:119 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/DraggableBlock.spec.mjs:120 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/DraggableBlock.spec.mjs:154 test: Dragging the first paragraph to an empty space in the middle of the editor works correctly
  • ../lexical/packages/lexical-playground/__tests__/e2e/DraggableBlock.spec.mjs:160 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/DraggableBlock.spec.mjs:161 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/DraggableBlock.spec.mjs:162 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/ElementFormat.spec.mjs`

category: portable
family: serialization-parsing / marks-inline
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-history/test; .tmp/slate-v2/playwright/integration/examples/richtext.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/ElementFormat.spec.mjs:20 test: Element format
  • ../lexical/packages/lexical-playground/__tests__/e2e/ElementFormat.spec.mjs:22 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/ElementFormat.spec.mjs:26 test: Can indent/align paragraph when caret is within link
  • ../lexical/packages/lexical-playground/__tests__/e2e/ElementFormat.spec.mjs:59 test: Can center align an empty paragraph

`../lexical/packages/lexical-playground/__tests__/e2e/Emoticons.spec.mjs`

category: portable-mixed
family: mixed portable invariant
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/e2e/Emoticons.spec.mjs:24 test: Emoticons
  • ../lexical/packages/lexical-playground/__tests__/e2e/Emoticons.spec.mjs:26 test: Can handle a single emoticon
  • ../lexical/packages/lexical-playground/__tests__/e2e/Emoticons.spec.mjs:107 test: Can enter multiple emoticons
  • ../lexical/packages/lexical-playground/__tests__/e2e/Emoticons.spec.mjs:573 test: Can handle single emoticon replaced with text

`../lexical/packages/lexical-playground/__tests__/e2e/EquationNode.spec.mjs`

category: portable-mixed
family: mixed portable invariant
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/e2e/EquationNode.spec.mjs:60 test: EquationNode
  • ../lexical/packages/lexical-playground/__tests__/e2e/EquationNode.spec.mjs:62 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/EquationNode.spec.mjs:68 test: inline EquationNode is wrapped in a paragraph
  • ../lexical/packages/lexical-playground/__tests__/e2e/EquationNode.spec.mjs:86 test: block EquationNode is a child of the root

`../lexical/packages/lexical-playground/__tests__/e2e/Events.spec.mjs`

category: portable
family: beforeinput-input / browser-engine
target: .tmp/slate-v2/packages/slate-react/test/model-input-strategy-contract.test.ts; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/Events.spec.mjs:18 test: Events
  • ../lexical/packages/lexical-playground/__tests__/e2e/Events.spec.mjs:21 test: Autocapitalization (MacOS specific)
  • ../lexical/packages/lexical-playground/__tests__/e2e/Events.spec.mjs:96 test: Add period with double-space after emoji (MacOS specific) #3953

`../lexical/packages/lexical-playground/__tests__/e2e/Extensions.spec.mjs`

category: portable
family: clipboard-paste / browser-engine
target: .tmp/slate-v2/packages/slate/test/clipboard-contract.ts; .tmp/slate-v2/packages/slate-dom/test/clipboard-boundary.test.ts; .tmp/slate-v2/playwright/integration/examples/paste-html.test.ts; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/Extensions.spec.mjs:23 test: Extensions
  • ../lexical/packages/lexical-playground/__tests__/e2e/Extensions.spec.mjs:25 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Extensions.spec.mjs:47 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Extensions.spec.mjs:128 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Extensions.spec.mjs:183 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Extensions.spec.mjs:189 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Extensions.spec.mjs:190 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Extensions.spec.mjs:237 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Extensions.spec.mjs:274 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/Focus.spec.mjs`

category: portable
family: beforeinput-input / browser-engine
target: .tmp/slate-v2/packages/slate-react/test/model-input-strategy-contract.test.ts; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/Focus.spec.mjs:18 test: Focus
  • ../lexical/packages/lexical-playground/__tests__/e2e/Focus.spec.mjs:20 test: can tab out of the editor
  • ../lexical/packages/lexical-playground/__tests__/e2e/Focus.spec.mjs:23 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Focus.spec.mjs:34 test: selection remains internally when clicking outside the editor
  • ../lexical/packages/lexical-playground/__tests__/e2e/Focus.spec.mjs:38 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/Hashtags.spec.mjs`

category: portable
family: selection-dom-mapping / void-atom
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-react/test/editable-behavior.test.tsx; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/Hashtags.spec.mjs:28 test: Hashtags
  • ../lexical/packages/lexical-playground/__tests__/e2e/Hashtags.spec.mjs:30 test: Can handle a single hashtag
  • ../lexical/packages/lexical-playground/__tests__/e2e/Hashtags.spec.mjs:90 test: Can handle adjacent hashtags
  • ../lexical/packages/lexical-playground/__tests__/e2e/Hashtags.spec.mjs:195 test: Can insert many hashtags mixed with text and delete them all correctly
  • ../lexical/packages/lexical-playground/__tests__/e2e/Hashtags.spec.mjs:269 test: Hashtag inherits format
  • ../lexical/packages/lexical-playground/__tests__/e2e/Hashtags.spec.mjs:270 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Hashtags.spec.mjs:290 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Hashtags.spec.mjs:329 test: Should not break while skipping invalid hashtags #5703
  • ../lexical/packages/lexical-playground/__tests__/e2e/Hashtags.spec.mjs:365 test: Can handle hashtags following multiple invalid hashtags
  • ../lexical/packages/lexical-playground/__tests__/e2e/Hashtags.spec.mjs:420 test: Should not break when pasting multiple matches
  • ../lexical/packages/lexical-playground/__tests__/e2e/Hashtags.spec.mjs:424 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Hashtags.spec.mjs:444 test: Should not break while importing and exporting multiple matches
  • ../lexical/packages/lexical-playground/__tests__/e2e/Hashtags.spec.mjs:448 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/Headings/HeadingsBackspaceAtStart.spec.mjs`

category: portable
family: serialization-parsing / marks-inline
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-history/test; .tmp/slate-v2/playwright/integration/examples/richtext.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/Headings/HeadingsBackspaceAtStart.spec.mjs:19 test: Headings - stays as a heading when you backspace at the start of a heading with no previous sibling nodes present
  • ../lexical/packages/lexical-playground/__tests__/e2e/Headings/HeadingsBackspaceAtStart.spec.mjs:24 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/Headings/HeadingsEnterAtEnd.spec.mjs`

category: portable
family: serialization-parsing / marks-inline
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-history/test; .tmp/slate-v2/playwright/integration/examples/richtext.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/Headings/HeadingsEnterAtEnd.spec.mjs:18 test: Headings - changes to a paragraph when you press enter at the end of a heading
  • ../lexical/packages/lexical-playground/__tests__/e2e/Headings/HeadingsEnterAtEnd.spec.mjs:23 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/Headings/HeadingsEnterInMiddle.spec.mjs`

category: portable
family: serialization-parsing / marks-inline
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-history/test; .tmp/slate-v2/playwright/integration/examples/richtext.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/Headings/HeadingsEnterInMiddle.spec.mjs:23 test: Headings - stays as a heading when you press enter in the middle of a heading
  • ../lexical/packages/lexical-playground/__tests__/e2e/Headings/HeadingsEnterInMiddle.spec.mjs:28 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/HorizontalRule.spec.mjs`

category: portable
family: selection-dom-mapping / void-atom
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-react/test/editable-behavior.test.tsx; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/HorizontalRule.spec.mjs:35 test: HorizontalRule
  • ../lexical/packages/lexical-playground/__tests__/e2e/HorizontalRule.spec.mjs:37 test: Can create a horizontal rule and move selection around it
  • ../lexical/packages/lexical-playground/__tests__/e2e/HorizontalRule.spec.mjs:41 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/HorizontalRule.spec.mjs:158 test: Will add a horizontal rule at the end of a current TextNode and move selection to the new ParagraphNode.
  • ../lexical/packages/lexical-playground/__tests__/e2e/HorizontalRule.spec.mjs:162 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/HorizontalRule.spec.mjs:210 test: Will add a horizontal rule and split a TextNode across 2 paragraphs if the caret is in the middle of the TextNode, moving selection to the start of the new ParagraphNode.
  • ../lexical/packages/lexical-playground/__tests__/e2e/HorizontalRule.spec.mjs:214 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/HorizontalRule.spec.mjs:272 test: Will add a horizontal rule and split a TextNode across 2 ListItemNode if the caret is in the middle of the TextNode, moving selection to the start of the new ParagraphNode
  • ../lexical/packages/lexical-playground/__tests__/e2e/HorizontalRule.spec.mjs:276 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/HorizontalRule.spec.mjs:341 test: Will add a horizontal rule and split a TextNode across 2 ListItemNode if the caret is in an empty ListItemNode, moving selection to the start of the new ListItemNode (#6849)
  • ../lexical/packages/lexical-playground/__tests__/e2e/HorizontalRule.spec.mjs:345 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/HorizontalRule.spec.mjs:399 test: Can copy and paste a horizontal rule
  • ../lexical/packages/lexical-playground/__tests__/e2e/HorizontalRule.spec.mjs:400 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/HorizontalRule.spec.mjs:489 test: Can delete empty paragraph after a horizontal rule without deleting the horizontal rule
  • ../lexical/packages/lexical-playground/__tests__/e2e/HorizontalRule.spec.mjs:495 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/Images.spec.mjs`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/e2e/Images.spec.mjs:35 test: Images
  • ../lexical/packages/lexical-playground/__tests__/e2e/Images.spec.mjs:37 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Images.spec.mjs:40 test: Can create a decorator and move selection around it
  • ../lexical/packages/lexical-playground/__tests__/e2e/Images.spec.mjs:45 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Images.spec.mjs:219 test: Can add images and delete them correctly
  • ../lexical/packages/lexical-playground/__tests__/e2e/Images.spec.mjs:223 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Images.spec.mjs:391 test: Can add images by arbitrary URL
  • ../lexical/packages/lexical-playground/__tests__/e2e/Images.spec.mjs:396 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Images.spec.mjs:442 test: Can be dragged and dropped correctly when the image is clicked
  • ../lexical/packages/lexical-playground/__tests__/e2e/Images.spec.mjs:448 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Images.spec.mjs:449 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Images.spec.mjs:450 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Images.spec.mjs:535 test: Cannot be dragged without being clicked
  • ../lexical/packages/lexical-playground/__tests__/e2e/Images.spec.mjs:539 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Images.spec.mjs:577 test: Select image, then select text - EditorState._selection updates with mousedown #2901
  • ../lexical/packages/lexical-playground/__tests__/e2e/Images.spec.mjs:584 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Images.spec.mjs:585 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Images.spec.mjs:615 test: Node selection: can select multiple image nodes and replace them with a new image
  • ../lexical/packages/lexical-playground/__tests__/e2e/Images.spec.mjs:620 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Images.spec.mjs:725 test: Can resolve selection correctly when the image is clicked and dragged right
  • ../lexical/packages/lexical-playground/__tests__/e2e/Images.spec.mjs:731 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Images.spec.mjs:770 test: Verifies image dimensions are properly calculated for both SVG and JPG formats
  • ../lexical/packages/lexical-playground/__tests__/e2e/Images.spec.mjs:775 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Images.spec.mjs:820 test: Dimensionless SVG renders with a visible bounding box instead of collapsing
  • ../lexical/packages/lexical-playground/__tests__/e2e/Images.spec.mjs:825 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/Indentation.spec.mjs`

category: portable
family: serialization-parsing / marks-inline
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-history/test; .tmp/slate-v2/playwright/integration/examples/richtext.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/Indentation.spec.mjs:41 test: Identation
  • ../lexical/packages/lexical-playground/__tests__/e2e/Indentation.spec.mjs:46 test: Can create content and indent and outdent it all
  • ../lexical/packages/lexical-playground/__tests__/e2e/Indentation.spec.mjs:53 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Indentation.spec.mjs:461 test: Can only indent paragraph until the max depth
  • ../lexical/packages/lexical-playground/__tests__/e2e/Indentation.spec.mjs:465 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Indentation.spec.mjs:479 test: Can only indent until the max depth when list is empty
  • ../lexical/packages/lexical-playground/__tests__/e2e/Indentation.spec.mjs:483 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Indentation.spec.mjs:591 test: Can only indent until the max depth when list has content
  • ../lexical/packages/lexical-playground/__tests__/e2e/Indentation.spec.mjs:595 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Indentation.spec.mjs:704 test: Can only indent until the max depth a list with nested lists
  • ../lexical/packages/lexical-playground/__tests__/e2e/Indentation.spec.mjs:708 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Indentation.spec.mjs:1007 test: Cannot have negative indents (#7410)
  • ../lexical/packages/lexical-playground/__tests__/e2e/Indentation.spec.mjs:1008 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/Keyboard.spec.mjs`

category: portable
family: beforeinput-input / browser-engine
target: .tmp/slate-v2/packages/slate-react/test/model-input-strategy-contract.test.ts; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/Keyboard.spec.mjs:21 test: Keyboard shortcuts
  • ../lexical/packages/lexical-playground/__tests__/e2e/Keyboard.spec.mjs:26 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Keyboard.spec.mjs:32 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/KeyboardShortcuts.spec.mjs`

category: portable
family: beforeinput-input / browser-engine
target: .tmp/slate-v2/packages/slate-react/test/model-input-strategy-contract.test.ts; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/KeyboardShortcuts.spec.mjs:179 test: Keyboard shortcuts
  • ../lexical/packages/lexical-playground/__tests__/e2e/KeyboardShortcuts.spec.mjs:181 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/KeyboardShortcuts.spec.mjs:186 test: Can use ${format} format with the shortcut
  • ../lexical/packages/lexical-playground/__tests__/e2e/KeyboardShortcuts.spec.mjs:211 test: Can use ${alignment} with the shortcut
  • ../lexical/packages/lexical-playground/__tests__/e2e/KeyboardShortcuts.spec.mjs:229 test: Can use ${style} with the shortcut
  • ../lexical/packages/lexical-playground/__tests__/e2e/KeyboardShortcuts.spec.mjs:246 test: Can increase and decrease font size with the shortcuts
  • ../lexical/packages/lexical-playground/__tests__/e2e/KeyboardShortcuts.spec.mjs:264 test: Can clear formatting with the shortcut
  • ../lexical/packages/lexical-playground/__tests__/e2e/KeyboardShortcuts.spec.mjs:312 test: Can toggle Insert Code Block with the shortcut
  • ../lexical/packages/lexical-playground/__tests__/e2e/KeyboardShortcuts.spec.mjs:335 test: Can indent and outdent with the shortcuts

`../lexical/packages/lexical-playground/__tests__/e2e/Keywords.spec.mjs`

category: portable-mixed
family: selection-dom-mapping / void-atom
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-react/test/editable-behavior.test.tsx; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/Keywords.spec.mjs:24 test: Keywords
  • ../lexical/packages/lexical-playground/__tests__/e2e/Keywords.spec.mjs:26 test: Can create a decorator and move selection around it
  • ../lexical/packages/lexical-playground/__tests__/e2e/Keywords.spec.mjs:190 test: Can type congrats[Team]!
  • ../lexical/packages/lexical-playground/__tests__/e2e/Keywords.spec.mjs:217 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Keywords.spec.mjs:223 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Keywords.spec.mjs:354 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Keywords.spec.mjs:358 test: dynamic or multiline title

category: portable
family: selection-dom-mapping / void-atom
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-react/test/editable-behavior.test.tsx; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:39 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:42 describe: Links
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:44 test: Can convert a text node into a link
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:127 test: Can convert multi-formatted text into a link (backward)
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:244 test: Can convert multi-formatted text into a link (forward)
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:361 test: Can create a link in a list and insert a paragraph at the start
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:410 test: Can create a link with some text after, insert paragraph, then backspace, it should merge correctly
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:495 test: Can backspace across a link and it deletes text, not the whole link
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:551 test: Can create a link then replace it with plain text
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:590 test: Can create a link then replace it with plain text #2
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:616 test: Can create a link then partly replace it with plain text
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:649 test: Inserting text either side of links
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:673 test: Inserting text before links
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:674 test: Start-of-paragraph links
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:721 test: Can insert text before a start-of-paragraph link, via typing
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:727 test: Can insert text before a start-of-paragraph link, via pasting plain text
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:734 test: Can insert text before a start-of-paragraph link, via pasting HTML
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:741 test: Can insert text before a start-of-paragraph link, via pasting Lexical text
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:748 test: Mid-paragraph links
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:795 test: Can insert text before a mid-paragraph link, via typing
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:801 test: Can insert text before a mid-paragraph link, via pasting plain text
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:807 test: Can insert text before a mid-paragraph link, via pasting HTML
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:813 test: Can insert text before a mid-paragraph link, via pasting Lexical text
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:820 test: End-of-paragraph links
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:865 test: Can insert text before an end-of-paragraph link, via typing
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:871 test: Can insert text before an end-of-paragraph link, via pasting plain text
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:878 test: Can insert text before an end-of-paragraph link, via pasting HTML
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:885 test: Can insert text before an end-of-paragraph link, via pasting Lexical text
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:893 test: Inserting text after links
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:894 test: Start-of-paragraph links
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:940 test: Can insert text after a start-of-paragraph link, via typing
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:946 test: Can insert text after a start-of-paragraph link, via pasting plain text
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:953 test: Can insert text after a start-of-paragraph link, via pasting HTML
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:960 test: Can insert text after a start-of-paragraph link, via pasting Lexical text
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:967 test: Mid-paragraph links
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:1014 test: Can insert text after a mid-paragraph link, via typing
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:1020 test: Can insert text after a mid-paragraph link, via pasting plain text
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:1027 test: Can insert text after a mid-paragraph link, via pasting HTML
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:1034 test: Can insert text after a mid-paragraph link, via pasting Lexical text
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:1041 test: End-of-paragraph links
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:1087 test: Can insert text after an end-of-paragraph link, via typing
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:1093 test: Can insert text after an end-of-paragraph link, via pasting plain text
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:1100 test: Can insert text after an end-of-paragraph link, via pasting HTML
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:1107 test: Can insert text after an end-of-paragraph link, via pasting Lexical text
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:1116 test: Can convert multi-formatted text into a link and then modify text after
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:1241 test: It can insert text inside a link after a formatted text node
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:1326 test: It can insert text inside a link before a formatted text node
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:1414 test: Can edit link with collapsed selection
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:1454 test: Can type text before and after
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:1506 test: Can delete text up to a link and then add text after
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:1570 test: Can convert part of a text node into a link with forwards selection
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:1662 test: Can convert part of a text node into a link with backwards selection
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:1766 test: Can convert part of a text node into a link and change block type
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:1814 test: Can create multiline links
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:1850 test: Can handle pressing Enter inside a Link
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:1888 test: Can handle pressing Enter inside a Link containing multiple TextNodes
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:1931 test: Can handle pressing Enter at the beginning of a Link
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:1965 test: Can handle pressing Enter at the end of a Link
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:1969 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:1999 test: Can add, edit and remove links on images
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:2005 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:2150 test: Can add, edit and remove links on multiple selected images
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:2156 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:2406 test: Link attributes
  • ../lexical/packages/lexical-playground/__tests__/e2e/Links.spec.mjs:2411 test: Can add attributes with paste

`../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs`

category: portable
family: serialization-parsing / marks-inline
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-history/test; .tmp/slate-v2/playwright/integration/examples/richtext.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:75 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:78 test: Checklist focus option
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:79 test: (shouldDisableFocusOnClickChecklist: true) Keeps focus outside the editor when clicking a checklist item
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:83 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:120 test: (shouldDisableFocusOnClickChecklist: false) Moves focus into the editor/listItem when clicking a checklist item
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:124 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:169 describe: Nested List
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:172 test: Can create a list and partially copy some content out of it
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:224 test: Should outdent if indented when the backspace key is pressed
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:316 test: Should outdent if indented when the backspace key is pressed only at the front
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:367 test: Should retain selection style when exiting list
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:447 test: Can indent/outdent multiple list nodes in a list with multiple levels of indentation
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:671 test: Can indent a list with a list item in between nested lists
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:719 test: Can create a list and then toggle it back to original state.
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:923 test: Can toggle format for multi-line list of each type without losing indentation state.
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:1242 test: Can create a list containing inline blocks and then toggle it back to original state.
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:1329 test: Can create multiple bullet lists and then toggle off the list.
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:1446 test: Can create an unordered list and convert it to an ordered list
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:1487 test: Can create a single item unordered list with text and convert it to an ordered list
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:1523 test: Can create a multi-line unordered list and convert it to an ordered list
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:1614 test: Can create a multi-line unordered list and convert it to an ordered list when no nodes are in the selection
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:1698 test: Can create an indented multi-line unordered list and convert it to an ordered list
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:1831 test: Can create an indented multi-line unordered list and convert individual lists in the nested structure to a numbered list.
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:2117 test: Should merge selected nodes into existing list siblings of the same type when formatting to a list
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:2194 test: Should NOT merge selected nodes into existing list siblings of a different type when formatting to a list
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:2270 test: Should create list with start number markdown
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:2301 test: Should not process paragraph markdown inside list.
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:2318 test: Un-indents list empty list items when the user presses enter
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:2371 test: Converts a List with one ListItem to a Paragraph when Normal is selected in the format menu
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:2400 test: Converts the last ListItem in a List with multiple ListItem to a Paragraph when Normal is selected in the format menu
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:2439 test: Converts the middle ListItem in a List with multiple ListItem to a Paragraph when Normal is selected in the format menu
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:2489 test: Can create check list, toggle it to bullet-list and back
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:2617 test: can navigate and check/uncheck with keyboard
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:2683 test: replaces existing element node
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:2707 test: remove list breaks when selection in empty nested list item
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:2739 test: remove list breaks when selection in empty nested list item 2
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:2789 test: new list item should preserve format from previous list item even after new list item is indented
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:2827 test: collapseAtStart for trivial bullet list
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:2848 test: collapseAtStart for bullet list with text
  • ../lexical/packages/lexical-playground/__tests__/e2e/List.spec.mjs:2873 test: collapseAtStart for bullet list with text inside autolink

`../lexical/packages/lexical-playground/__tests__/e2e/Markdown.spec.mjs`

category: portable
family: serialization-parsing / marks-inline
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-history/test; .tmp/slate-v2/playwright/integration/examples/richtext.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/Markdown.spec.mjs:55 describe: Markdown
  • ../lexical/packages/lexical-playground/__tests__/e2e/Markdown.spec.mjs:219 test: Should create stylized (e.g. BIUS) text from plain text using a markdown shortcut e.g. ${markdownText}
  • ../lexical/packages/lexical-playground/__tests__/e2e/Markdown.spec.mjs:224 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Markdown.spec.mjs:250 test: Should create stylized (e.g. BIUS) text from already stylized text using a markdown shortcut e.g. ${markdownText}
  • ../lexical/packages/lexical-playground/__tests__/e2e/Markdown.spec.mjs:255 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Markdown.spec.mjs:308 test: Should test markdown with the (${markdownText}) trigger. Should include undo and redo.
  • ../lexical/packages/lexical-playground/__tests__/e2e/Markdown.spec.mjs:313 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Markdown.spec.mjs:333 test: Should test importing markdown (${markdownText}) trigger.
  • ../lexical/packages/lexical-playground/__tests__/e2e/Markdown.spec.mjs:338 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Markdown.spec.mjs:380 describe: Markdown
  • ../lexical/packages/lexical-playground/__tests__/e2e/Markdown.spec.mjs:382 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Markdown.spec.mjs:654 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Markdown.spec.mjs:678 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Markdown.spec.mjs:690 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Markdown.spec.mjs:698 test: can undo/redo nested transformations
  • ../lexical/packages/lexical-playground/__tests__/e2e/Markdown.spec.mjs:763 test: can convert already styled text (overlapping ranges)
  • ../lexical/packages/lexical-playground/__tests__/e2e/Markdown.spec.mjs:810 test: can convert markdown text into rich text
  • ../lexical/packages/lexical-playground/__tests__/e2e/Markdown.spec.mjs:839 test: can type text with markdown
  • ../lexical/packages/lexical-playground/__tests__/e2e/Markdown.spec.mjs:845 test: intraword text format
  • ../lexical/packages/lexical-playground/__tests__/e2e/Markdown.spec.mjs:871 test: can export text format next to a newline
  • ../lexical/packages/lexical-playground/__tests__/e2e/Markdown.spec.mjs:907 test: can import single decorator node (#2604)
  • ../lexical/packages/lexical-playground/__tests__/e2e/Markdown.spec.mjs:909 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Markdown.spec.mjs:941 test: can import several text match transformers in a same line (#5385)
  • ../lexical/packages/lexical-playground/__tests__/e2e/Markdown.spec.mjs:945 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Markdown.spec.mjs:1007 test: does not use code-formatted text in text format transformers (#7349)
  • ../lexical/packages/lexical-playground/__tests__/e2e/Markdown.spec.mjs:1028 test: can adjust selection after text match transformer
  • ../lexical/packages/lexical-playground/__tests__/e2e/Markdown.spec.mjs:1055 test: keep list marker on its own items
  • ../lexical/packages/lexical-playground/__tests__/e2e/Markdown.spec.mjs:1069 test: keep list marker on its own items with copy/paste

`../lexical/packages/lexical-playground/__tests__/e2e/MaxLength.spec.mjs`

category: portable-mixed
family: mixed portable invariant
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/e2e/MaxLength.spec.mjs:24 test: MaxLength
  • ../lexical/packages/lexical-playground/__tests__/e2e/MaxLength.spec.mjs:29 test: can restrict the text to specified length
  • ../lexical/packages/lexical-playground/__tests__/e2e/MaxLength.spec.mjs:56 test: can restrict pasted text to specified length
  • ../lexical/packages/lexical-playground/__tests__/e2e/MaxLength.spec.mjs:73 test: can restrict emojis on boundaries
  • ../lexical/packages/lexical-playground/__tests__/e2e/MaxLength.spec.mjs:125 test: paste with empty paragraph in between #3773
  • ../lexical/packages/lexical-playground/__tests__/e2e/MaxLength.spec.mjs:142 test: paste with empty paragraph at end #3773

`../lexical/packages/lexical-playground/__tests__/e2e/Mentions.spec.mjs`

category: portable
family: selection-dom-mapping / void-atom
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-react/test/editable-behavior.test.tsx; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/Mentions.spec.mjs:29 test: Mentions
  • ../lexical/packages/lexical-playground/__tests__/e2e/Mentions.spec.mjs:32 test: Can enter the Luke Skywalker mention
  • ../lexical/packages/lexical-playground/__tests__/e2e/Mentions.spec.mjs:105 test: Can enter and delete part of the Luke Skywalker mention
  • ../lexical/packages/lexical-playground/__tests__/e2e/Mentions.spec.mjs:200 test: Can enter and backspace part of the Luke Skywalker mention in the middle
  • ../lexical/packages/lexical-playground/__tests__/e2e/Mentions.spec.mjs:276 test: Can enter and delete part of the Luke Skywalker mention in the middle
  • ../lexical/packages/lexical-playground/__tests__/e2e/Mentions.spec.mjs:352 test: Can enter and backspace part of the Luke Skywalker mention
  • ../lexical/packages/lexical-playground/__tests__/e2e/Mentions.spec.mjs:524 test: Can enter multiple Luke Skywalker mentions and then delete them from start
  • ../lexical/packages/lexical-playground/__tests__/e2e/Mentions.spec.mjs:858 test: Can enter a mention then delete it and partially remove text after
  • ../lexical/packages/lexical-playground/__tests__/e2e/Mentions.spec.mjs:940 test: Pasting over a mention does not lead to crash
  • ../lexical/packages/lexical-playground/__tests__/e2e/Mentions.spec.mjs:992 test: Sets correct attributes on typeahead menu container
  • ../lexical/packages/lexical-playground/__tests__/e2e/Mentions.spec.mjs:996 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/Mutations.spec.mjs`

category: portable
family: beforeinput-input / browser-engine
target: .tmp/slate-v2/packages/slate-react/test/model-input-strategy-contract.test.ts; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/Mutations.spec.mjs:51 test: Mutations
  • ../lexical/packages/lexical-playground/__tests__/e2e/Mutations.spec.mjs:53 test: Text mutation observers also manage the selection
  • ../lexical/packages/lexical-playground/__tests__/e2e/Mutations.spec.mjs:156 test: Can restore the DOM to the editor state state

`../lexical/packages/lexical-playground/__tests__/e2e/Navigation.spec.mjs`

category: portable
family: selection-dom-mapping / void-atom
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-react/test/editable-behavior.test.tsx; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/Navigation.spec.mjs:44 test: Keyboard Navigation
  • ../lexical/packages/lexical-playground/__tests__/e2e/Navigation.spec.mjs:47 test: can type several paragraphs
  • ../lexical/packages/lexical-playground/__tests__/e2e/Navigation.spec.mjs:66 test: can move to the beginning of the current line, then back to the end of the current line
  • ../lexical/packages/lexical-playground/__tests__/e2e/Navigation.spec.mjs:105 test: can move to the top of the editor
  • ../lexical/packages/lexical-playground/__tests__/e2e/Navigation.spec.mjs:116 test: can move one word to the right
  • ../lexical/packages/lexical-playground/__tests__/e2e/Navigation.spec.mjs:153 test: can move to the beginning of the previous word
  • ../lexical/packages/lexical-playground/__tests__/e2e/Navigation.spec.mjs:198 test: can move to the bottom of the editor
  • ../lexical/packages/lexical-playground/__tests__/e2e/Navigation.spec.mjs:219 test: can move to the beginning of the current paragraph
  • ../lexical/packages/lexical-playground/__tests__/e2e/Navigation.spec.mjs:242 test: can move to the top of the editor, then to the bottom of the current paragraph
  • ../lexical/packages/lexical-playground/__tests__/e2e/Navigation.spec.mjs:260 test: can navigate through the plain text word by word
  • ../lexical/packages/lexical-playground/__tests__/e2e/Navigation.spec.mjs:474 test: can navigate through the formatted text word by word
  • ../lexical/packages/lexical-playground/__tests__/e2e/Navigation.spec.mjs:795 test: can navigate through the text with emoji word by word

`../lexical/packages/lexical-playground/__tests__/e2e/Placeholder.spec.mjs`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/e2e/Placeholder.spec.mjs:20 test: Placeholder
  • ../lexical/packages/lexical-playground/__tests__/e2e/Placeholder.spec.mjs:22 test: Displays a placeholder when no content is present

`../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs`

category: portable
family: selection-dom-mapping / void-atom
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-react/test/editable-behavior.test.tsx; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:59 describe: Selection
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:63 test: does not focus the editor on load
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:84 test: keeps single active selection for nested editors
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:90 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:139 test: can wrap post-linebreak nodes into new element
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:143 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:171 test: can delete text by line backwards with CMD+delete
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:175 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:210 test: can delete text by line forwards with opt+CMD+delete
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:214 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:258 test: can delete text by line forwards with control+K
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:268 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:312 test: can delete line which ends with element backwards with CMD+delete
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:316 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:351 test: can delete line which starts with element forwards with opt+CMD+delete
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:355 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:511 test: can delete line by collapse
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:512 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:532 test: Can insert inline element within text and put selection after it
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:536 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:552 test: Can delete at boundary #4221
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:553 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:590 test: Can select all with node selection
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:591 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:606 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:611 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:649 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:654 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:697 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:698 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:737 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:738 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:780 test: Can delete block elements
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:781 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:836 test: Can delete sibling elements forward
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:842 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:860 test: Can adjust triple click selection
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:865 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:891 test: Can adjust triple click selection with
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:896 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:933 test: Select all from Node selection #4658
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:935 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:952 test: Select all (DecoratorNode at start) #4670
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:957 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:976 test: Can use block controls on selections including decorator nodes #5371
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:981 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1008 test: Select previous with RTL (DecoratorNode) #7685
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1013 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1035 test: Select next with RTL (DecoratorNode) #7685
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1040 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1063 test: Move left from DecoratorNode in RTL #7771
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1068 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1096 test: Move right from DecoratorNode in RTL #7771
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1101 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1128 test: Move right from last node in RTL #7775
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1133 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1145 test: Move left from last node in RTL #7775
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1151 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1152 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1170 test: Can delete table node present at the end #5543
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1176 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1193 test: Triple-clicking last cell in table should not select entire document
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1199 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1248 test: Selecting table cell then dragging to outside of table should select entire table
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1254 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1295 test: Can persist the text format from the paragraph
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1299 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1338 test: toggle format at the start of paragraph to a different format persists the format
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1342 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1379 test: formatting is persisted after deleting all nodes from the paragraph node
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1383 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1410 test: Can persist the text style (color) from the paragraph
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1414 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1449 test: shift+arrowdown into a table selects the whole table
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1455 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1456 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1471 test: shift+arrowup into a table selects the whole table
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1477 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1478 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1493 test: shift+arrowdown into a table, when the table is the last node, selects the whole table
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1497 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1515 test: shift+arrowup into a table, when the table is the first node, selects the whole table
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1519 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1537 test: shift+arrowdown into a table, when the table is the only node, selects the whole table
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1541 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1566 test: shift+arrowup into a table, when the table is the only node, selects the whole table
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1572 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1597 test: shift+arrowdown into a table does not select element after
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1603 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1622 test: shift+arrowup into a table does not select element before
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1628 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1646 test: programatic update on blurred editor does not kill selection
  • ../lexical/packages/lexical-playground/__tests__/e2e/Selection.spec.mjs:1651 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/SelectionAlwaysOnDisplay.spec.mjs`

category: portable-mixed
family: selection-dom-mapping / void-atom
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-react/test/editable-behavior.test.tsx; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/SelectionAlwaysOnDisplay.spec.mjs:20 test: SelectionAlwaysOnDisplay
  • ../lexical/packages/lexical-playground/__tests__/e2e/SelectionAlwaysOnDisplay.spec.mjs:24 test: retain selection works
  • ../lexical/packages/lexical-playground/__tests__/e2e/SelectionAlwaysOnDisplay.spec.mjs:25 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/SelectionAlwaysOnDisplay.spec.mjs:62 test: retain selection works with reverse selection
  • ../lexical/packages/lexical-playground/__tests__/e2e/SelectionAlwaysOnDisplay.spec.mjs:67 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/SpecialTexts.spec.mjs`

category: portable-mixed
family: mixed portable invariant
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/e2e/SpecialTexts.spec.mjs:18 test: Special Text
  • ../lexical/packages/lexical-playground/__tests__/e2e/SpecialTexts.spec.mjs:27 test: should handle a single special text
  • ../lexical/packages/lexical-playground/__tests__/e2e/SpecialTexts.spec.mjs:45 test: should handle multiple special texts
  • ../lexical/packages/lexical-playground/__tests__/e2e/SpecialTexts.spec.mjs:69 test: should not work when the option to use brackets for highlighting is disabled

`../lexical/packages/lexical-playground/__tests__/e2e/Tab.spec.mjs`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/e2e/Tab.spec.mjs:20 test: Tab
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tab.spec.mjs:22 test: can tab + IME
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tab.spec.mjs:27 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tab.spec.mjs:94 test: can tab inside code block #4399
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tab.spec.mjs:95 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tab.spec.mjs:124 test: can go to start of line after a tab character
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tab.spec.mjs:128 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs`

category: portable
family: tables-grid / selection-dom-mapping
target: .tmp/slate-v2/playwright/stress/generated-editing.test.ts; .tmp/slate-v2/playwright/integration/examples/tables.test.ts; .tmp/slate-v2/packages/slate/test/transforms/insertFragment

  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:92 describe: Tables
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:93 test: Can a table be inserted from the toolbar
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:98 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:137 test: Can type inside of table cell
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:142 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:185 test: Can exit the first cell of a table
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:190 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:231 test: Can exit the last cell of a table
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:236 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:276 test: Can exit the first cell of a nested table into the parent table cell
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:281 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:304 test: Can exit the last cell of a nested table into the parent table cell
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:309 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:334 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:340 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:441 test: Can type text after a table that is the last node
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:447 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:499 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:505 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:593 test: Can enter a table from a paragraph underneath via the left arrow key
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:598 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:621 describe: Can navigate table with keyboard
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:622 test: Can navigate cells horizontally
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:627 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:721 test: Can navigate cells vertically
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:726 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:756 test: Should not navigate cells when typeahead menu is open and focused
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:761 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:795 test: Can select cells using Table selection
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:801 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:857 test: Can select cells using Table selection via keyboard
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:863 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:941 test: Can style text using Table selection
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:947 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:1008 test: Can style on empty table cells and paragraphs with no text
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:1013 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:1071 test: Align selection style for table cells
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:1076 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:1143 test: Can copy + paste (internal) using Table selection
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:1149 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:1238 test: Can clear text using Table selection
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:1244 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:1303 test: Range Selection is corrected when it contains a partial Table.
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:1308 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:1344 test: Select All when document contains tables adds custom table styles.
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:1349 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:1399 test: Can delete all with node selection
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:1404 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:1423 test: Can delete all with range selection anchored in table
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:1428 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:1464 test: Horizontal rule inside cell
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:1465 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:1500 test: Table selection: can select multiple cells and insert a decorator
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:1506 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:1564 test: Table selection: can backspace lines, backspacing empty cell does not destroy it #3278
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:1569 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:1642 test: Can remove new lines in a collapsible section inside of a table
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:1648 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:1747 test: Resize merged cells width (1)
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:1753 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:1757 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:1834 test: Resize merged cells width (2)
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:1840 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:1918 test: Resize merged cells height
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:1924 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:1925 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:2013 test: Merge/unmerge cells (1)
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:2014 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:2105 test: Merge/unmerge cells (2)
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:2106 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:2241 test: Merge/unmerge with already merged cells
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:2247 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:2556 test: Merged cell tab navigation forward
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:2561 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:2562 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:2702 test: Merged cell tab navigation reverse
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:2707 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:2708 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:2850 test: Merge with content
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:2851 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:2939 test: Select multiple merged cells (selection expands to a rectangle)
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:2945 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:3077 test: Merge multiple merged cells and then unmerge
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:3083 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:3222 test: Insert row above (with conflicting merged cell)
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:3227 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:3290 test: Insert column before (with conflicting merged cell)
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:3295 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:3356 test: Insert column before (with selected cell with rowspan > 1)
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:3361 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:3416 test: Insert column before (with 1+ selected cells in a row)
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:3421 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:3493 test: Delete rows (with conflicting merged cell)
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:3499 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:3561 test: Delete selected rows (with merged cell overflowing selection from top and bottom)
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:3566 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:3752 test: Delete selected rows (with merged cell overflowing selection from the top)
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:3757 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:3947 test: Delete selected rows (with merged cell overflowing selection from the bottom)
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:3952 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:4142 test: Delete columns (with conflicting merged cell)
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:4147 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:4208 test: Delete columns backward
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:4214 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:4263 test: Delete columns forward at end of table
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:4268 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:4316 test: Deselect when click outside #3785 #4138
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:4321 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:4345 test: Background color to cell
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:4346 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:4382 test: Cell merge feature disabled
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:4383 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:4479 test: Cell background color feature disabled
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:4484 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:4521 test: Add column header after merging cells #4378
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:4526 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:4622 test: Can align text using Table selection
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:4628 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:4702 test: Paste and insert new lines after unmerging cells
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:4707 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:4875 test: Can delete table row when previous cell is a merged cell
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:4880 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:5100 test: Can delete table row when siblings are merged cell
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:5105 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:5318 test: Can insert multiple rows above the selection
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:5324 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:5325 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:5521 test: Can insert multiple rows below the selection
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:5527 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:5528 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:5723 test: with context menu
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:5725 test: Can select cells using Table selection and cut them with the context menu
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:5732 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:5735 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:5841 test: Cannot insert nested tables
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:5842 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:5889 test: Cannot paste tables inside table cells
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:5894 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:5948 test: Can paste tables inside table cells (with hasNestedTables)
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:5953 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:6031 test: Can paste and autofit tables inside table cells (with hasNestedTables, hasFitNestedTables)
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:6036 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:6037 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:6128 test: Click and drag to create selection in Firefox #7245
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:6133 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:6522 test: Resize row with merged cells spanning multiple rows
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:6528 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:6529 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:6619 test: Table action menu is hidden when cell overflows
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:6627 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:6628 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:6665 test: Can expand table to fit content when pasting table into table
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:6670 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:6904 test: Can paste table containing merged cells into table
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:6909 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7127 test: Can paste table into table while having table selection
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7132 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7227 test: Can delete table when fully selected with merged cells
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7232 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7233 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7273 test: Ctrl+A selects all cells in table with merged cells when table is only content
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7279 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7333 test: Drag-select column in 2x2 table selects all cells in that column
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7338 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7514 test: Can clear table selection in table by selecting cell in another table
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7519 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7573 test: Table selection is properly cleared when clicking and dragging a cell in the same table
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7578 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7638 test: shift-selection tests
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7639 test: Range-select from above table into it selects the entire table
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7644 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7676 test: Range-select from below table into it selects the entire table
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7681 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7711 test: Range-select from inside table to text above it selects the entire table
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7716 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7747 test: Range-select from inside table to text below it selects the entire table
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7752 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7782 test: nested table shift-selection tests
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7800 test: Range-select from above nested table into it selects the entire table, but not the outer table
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7806 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7807 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7808 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7837 test: Range-select from below nested table into it selects the entire table, but not the outer table
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7843 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7844 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7867 test: Range-select from inside nested table to text above it selects the entire table, but not the outer table
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7873 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7874 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7875 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7901 test: Range-select from inside nested table to text below it selects the entire table, but not the outer table
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7907 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7908 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Tables.spec.mjs:7909 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/TextEntry.spec.mjs`

category: portable
family: beforeinput-input / browser-engine
target: .tmp/slate-v2/packages/slate-react/test/model-input-strategy-contract.test.ts; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/TextEntry.spec.mjs:27 test: TextEntry
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextEntry.spec.mjs:29 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextEntry.spec.mjs:49 test: Can insert text and replace it
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextEntry.spec.mjs:50 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextEntry.spec.mjs:69 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextEntry.spec.mjs:73 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextEntry.spec.mjs:113 test: Can insert a paragraph between two text nodes
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextEntry.spec.mjs:117 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextEntry.spec.mjs:146 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextEntry.spec.mjs:174 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextEntry.spec.mjs:202 test: Paragraphed text entry and selection
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextEntry.spec.mjs:273 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextEntry.spec.mjs:301 test: Can type characters, and select and replace a part
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextEntry.spec.mjs:353 test: Can select and delete a word
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextEntry.spec.mjs:395 test: First paragraph backspace handling
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextEntry.spec.mjs:476 test: Mix of paragraphs and break points
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextEntry.spec.mjs:600 test: Empty paragraph and new line node selection

`../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs`

category: portable
family: serialization-parsing / marks-inline
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-history/test; .tmp/slate-v2/playwright/integration/examples/richtext.test.ts

  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:37 describe: TextFormatting
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:39 test: Can create bold text using the shortcut
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:43 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:93 test: Can create italic text using the shortcut
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:97 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:147 test: Can select text and boldify it with the shortcut
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:151 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:203 test: Should not format the text in the subsequent paragraph after a triple click selection event.
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:207 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:245 test: Can select text and italicify it with the shortcut
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:249 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:301 test: Can select text and underline+strikethrough
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:305 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:424 test: Can select text and change it to ${format}
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:428 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:500 test: Pressing ${key} resets ${format} format
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:504 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:532 test: Can select text and increase the font-size
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:536 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:571 test: Can select text with different size and increase the font-size relatively
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:575 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:596 test: Can select text and decrease the font-size
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:600 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:635 test: Can select text with different size and decrease the font-size relatively
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:639 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:660 test: Can select text and change the font-size and font-family
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:664 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:749 test: Can select text and update font size by entering the value
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:753 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:790 test: Can select text with different size and update font size by entering the value
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:794 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:817 test: Can select multiple text parts and format them with shortcuts
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:822 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:996 test: Can insert range of formatted text and select part and replace with character
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:1000 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:1093 test: Regression #2439: can format backwards when at first text node boundary
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:1097 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:1144 test: The active state of the button in the toolbar should to be displayed correctly
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:1148 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:1182 test: Regression #2523: can toggle format when selecting a TextNode edge followed by a non TextNode;
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:1186 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:1240 test: Multiline selection format ignores new lines
  • ../lexical/packages/lexical-playground/__tests__/e2e/TextFormatting.spec.mjs:1245 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/e2e/Toolbar.spec.mjs`

category: portable-mixed
family: mixed portable invariant
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/e2e/Toolbar.spec.mjs:33 test: Toolbar
  • ../lexical/packages/lexical-playground/__tests__/e2e/Toolbar.spec.mjs:43 test: Insert image caption + table
  • ../lexical/packages/lexical-playground/__tests__/e2e/Toolbar.spec.mjs:50 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Toolbar.spec.mjs:271 test: Center align image
  • ../lexical/packages/lexical-playground/__tests__/e2e/Toolbar.spec.mjs:273 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Toolbar.spec.mjs:351 test: When we select three textNodes with different formatting at the same time, the selection formatting should show no formatting at all
  • ../lexical/packages/lexical-playground/__tests__/e2e/Toolbar.spec.mjs:356 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/e2e/Toolbar.spec.mjs:373 test: Selecting empty paragraphs has empty selection format
  • ../lexical/packages/lexical-playground/__tests__/e2e/Toolbar.spec.mjs:378 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/regression/1055-fast-typing-undo.spec.mjs`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/regression/1055-fast-typing-undo.spec.mjs:18 test: Regression test #1055
  • ../lexical/packages/lexical-playground/__tests__/regression/1055-fast-typing-undo.spec.mjs:20 test: Adds new editor state into undo stack right after undo was done
  • ../lexical/packages/lexical-playground/__tests__/regression/1055-fast-typing-undo.spec.mjs:24 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/regression/1083-backspace-with-element-at-front.spec.mjs`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/regression/1083-backspace-with-element-at-front.spec.mjs:23 test: Regression test #1083
  • ../lexical/packages/lexical-playground/__tests__/regression/1083-backspace-with-element-at-front.spec.mjs:25 test: Backspace with ElementNode at the front of the paragraph
  • ../lexical/packages/lexical-playground/__tests__/regression/1083-backspace-with-element-at-front.spec.mjs:29 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/regression/1083-backspace-with-element-at-front.spec.mjs:66 test: Backspace with ElementNode at the front of the selection
  • ../lexical/packages/lexical-playground/__tests__/regression/1083-backspace-with-element-at-front.spec.mjs:70 test: dynamic or multiline title

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/regression/1113-link-newline-at-end.spec.mjs:18 test: Regression test #1113
  • ../lexical/packages/lexical-playground/__tests__/regression/1113-link-newline-at-end.spec.mjs:20 test: Selects new line when inserting a new line at the end of a link
  • ../lexical/packages/lexical-playground/__tests__/regression/1113-link-newline-at-end.spec.mjs:24 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/regression/1258-delete-forward.spec.mjs`

category: portable
family: selection-dom-mapping / void-atom
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-react/test/editable-behavior.test.tsx; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/regression/1258-delete-forward.spec.mjs:22 test: Regression test #1258
  • ../lexical/packages/lexical-playground/__tests__/regression/1258-delete-forward.spec.mjs:24 test: Can delete forward with keyboard

`../lexical/packages/lexical-playground/__tests__/regression/1384-insert-nodes.spec.mjs`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/regression/1384-insert-nodes.spec.mjs:21 test: Regression test #1384
  • ../lexical/packages/lexical-playground/__tests__/regression/1384-insert-nodes.spec.mjs:23 test: Properly pastes in code blocks
  • ../lexical/packages/lexical-playground/__tests__/regression/1384-insert-nodes.spec.mjs:28 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/regression/1730-delete-backword.spec.mjs`

category: portable
family: selection-dom-mapping / void-atom
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-react/test/editable-behavior.test.tsx; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/regression/1730-delete-backword.spec.mjs:19 test: Regression test #1730
  • ../lexical/packages/lexical-playground/__tests__/regression/1730-delete-backword.spec.mjs:21 test: Can delete backward with keyboard

`../lexical/packages/lexical-playground/__tests__/regression/221-editing-hashtags.spec.mjs`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/regression/221-editing-hashtags.spec.mjs:20 test: Regression test #221
  • ../lexical/packages/lexical-playground/__tests__/regression/221-editing-hashtags.spec.mjs:22 test: Can handle space in hashtag
  • ../lexical/packages/lexical-playground/__tests__/regression/221-editing-hashtags.spec.mjs:64 test: Can handle delete in hashtag
  • ../lexical/packages/lexical-playground/__tests__/regression/221-editing-hashtags.spec.mjs:106 test: Can handle backspace into hashtag

`../lexical/packages/lexical-playground/__tests__/regression/230-navigation-around-hashtags.spec.mjs`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/regression/230-navigation-around-hashtags.spec.mjs:20 test: Regression test #230
  • ../lexical/packages/lexical-playground/__tests__/regression/230-navigation-around-hashtags.spec.mjs:22 test: Is able to right arrow before hashtag after inserting text node

`../lexical/packages/lexical-playground/__tests__/regression/231-empty-text-nodes.spec.mjs`

category: portable
family: core package behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/regression/231-empty-text-nodes.spec.mjs:24 test: Regression test #231
  • ../lexical/packages/lexical-playground/__tests__/regression/231-empty-text-nodes.spec.mjs:26 test: Does not generate segment error when editing empty text nodes

`../lexical/packages/lexical-playground/__tests__/regression/3136-insert-nodes-adjacent-to-inline.spec.mjs`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/regression/3136-insert-nodes-adjacent-to-inline.spec.mjs:24 test: Regression test #3136
  • ../lexical/packages/lexical-playground/__tests__/regression/3136-insert-nodes-adjacent-to-inline.spec.mjs:26 test: Correctly pastes rich content when the selection is followed by an inline element
  • ../lexical/packages/lexical-playground/__tests__/regression/3136-insert-nodes-adjacent-to-inline.spec.mjs:30 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/regression/3136-insert-nodes-adjacent-to-inline.spec.mjs:47 it: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/regression/3136-insert-nodes-adjacent-to-inline.spec.mjs:67 test: Correctly pastes rich content when the selection is preceded by an inline element
  • ../lexical/packages/lexical-playground/__tests__/regression/3136-insert-nodes-adjacent-to-inline.spec.mjs:71 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/regression/3136-insert-nodes-adjacent-to-inline.spec.mjs:89 it: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/regression/3433-merge-markdown-lists.spec.mjs`

category: portable
family: core package behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/regression/3433-merge-markdown-lists.spec.mjs:17 test: Regression test #3433
  • ../lexical/packages/lexical-playground/__tests__/regression/3433-merge-markdown-lists.spec.mjs:19 test: can merge markdown lists created immediately before existing lists
  • ../lexical/packages/lexical-playground/__tests__/regression/3433-merge-markdown-lists.spec.mjs:23 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/regression/379-backspace-with-mentions.spec.mjs`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/regression/379-backspace-with-mentions.spec.mjs:20 test: Regression test #379
  • ../lexical/packages/lexical-playground/__tests__/regression/379-backspace-with-mentions.spec.mjs:22 test: Is able to correctly handle backspace press at the line boundary

`../lexical/packages/lexical-playground/__tests__/regression/399-open-line.spec.mjs`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/regression/399-open-line.spec.mjs:20 test: Regression test #399
  • ../lexical/packages/lexical-playground/__tests__/regression/399-open-line.spec.mjs:22 test: Supports Ctrl-O as an open line command

`../lexical/packages/lexical-playground/__tests__/regression/429-swapping-emoji.spec.mjs`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/regression/429-swapping-emoji.spec.mjs:19 test: Regression test #429
  • ../lexical/packages/lexical-playground/__tests__/regression/429-swapping-emoji.spec.mjs:21 test: Can add new lines before the line with emoji

`../lexical/packages/lexical-playground/__tests__/regression/4661-insert-column-selection.spec.mjs`

category: portable
family: core package behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/regression/4661-insert-column-selection.spec.mjs:22 test: Regression test #4661
  • ../lexical/packages/lexical-playground/__tests__/regression/4661-insert-column-selection.spec.mjs:26 test: inserting 2 columns before inserts before selection
  • ../lexical/packages/lexical-playground/__tests__/regression/4661-insert-column-selection.spec.mjs:31 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/regression/4661-insert-column-selection.spec.mjs:98 test: inserting 2 columns after inserts after selection
  • ../lexical/packages/lexical-playground/__tests__/regression/4661-insert-column-selection.spec.mjs:103 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/regression/4697-repeated-table-selection.spec.mjs`

category: portable
family: core package behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/regression/4697-repeated-table-selection.spec.mjs:19 test: Regression test #4697
  • ../lexical/packages/lexical-playground/__tests__/regression/4697-repeated-table-selection.spec.mjs:21 test: repeated table selection results in table selection
  • ../lexical/packages/lexical-playground/__tests__/regression/4697-repeated-table-selection.spec.mjs:27 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/regression/4872-full-row-span-cell-merge.spec.mjs`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/regression/4872-full-row-span-cell-merge.spec.mjs:19 test: Regression test #4872
  • ../lexical/packages/lexical-playground/__tests__/regression/4872-full-row-span-cell-merge.spec.mjs:21 test: merging two full rows does not break table selection
  • ../lexical/packages/lexical-playground/__tests__/regression/4872-full-row-span-cell-merge.spec.mjs:27 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/regression/4876-unmerge-cell.spec.mjs`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/regression/4876-unmerge-cell.spec.mjs:21 test: Regression test #4876
  • ../lexical/packages/lexical-playground/__tests__/regression/4876-unmerge-cell.spec.mjs:23 test: unmerging cells should add cells to correct rows
  • ../lexical/packages/lexical-playground/__tests__/regression/4876-unmerge-cell.spec.mjs:28 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/regression/5251-paste-into-inline-element.spec.mjs`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/regression/5251-paste-into-inline-element.spec.mjs:29 test: Regression test #5251
  • ../lexical/packages/lexical-playground/__tests__/regression/5251-paste-into-inline-element.spec.mjs:31 test: Correctly pastes rich content inside an inline element
  • ../lexical/packages/lexical-playground/__tests__/regression/5251-paste-into-inline-element.spec.mjs:35 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/regression/5583-select-list-followed-by-element-node.spec.mjs`

category: portable
family: core package behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/regression/5583-select-list-followed-by-element-node.spec.mjs:25 test: Regression test #5251
  • ../lexical/packages/lexical-playground/__tests__/regression/5583-select-list-followed-by-element-node.spec.mjs:27 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/regression/5583-select-list-followed-by-element-node.spec.mjs:31 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/regression/6870-table-left-arrow-selection.spec.mjs`

category: portable
family: tables-grid / selection-dom-mapping
target: .tmp/slate-v2/playwright/stress/generated-editing.test.ts; .tmp/slate-v2/playwright/integration/examples/tables.test.ts; .tmp/slate-v2/packages/slate/test/transforms/insertFragment

  • ../lexical/packages/lexical-playground/__tests__/regression/6870-table-left-arrow-selection.spec.mjs:22 test: Regression test #6870
  • ../lexical/packages/lexical-playground/__tests__/regression/6870-table-left-arrow-selection.spec.mjs:24 test: left arrow moves selection around decorators near tables
  • ../lexical/packages/lexical-playground/__tests__/regression/6870-table-left-arrow-selection.spec.mjs:29 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/regression/6870-table-left-arrow-selection.spec.mjs:30 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/regression/6870-table-left-arrow-selection.spec.mjs:66 test: left arrow expands selection around decorators near tables
  • ../lexical/packages/lexical-playground/__tests__/regression/6870-table-left-arrow-selection.spec.mjs:71 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/regression/6870-table-left-arrow-selection.spec.mjs:72 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/regression/6974-delete-character-backward.spec.mjs`

category: portable
family: selection-dom-mapping / void-atom
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-react/test/editable-behavior.test.tsx; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/regression/6974-delete-character-backward.spec.mjs:21 test: Regression tests for #6974
  • ../lexical/packages/lexical-playground/__tests__/regression/6974-delete-character-backward.spec.mjs:26 test: deleteCharacter merges children from adjacent blocks even if the previous leaf is an inline decorator
  • ../lexical/packages/lexical-playground/__tests__/regression/6974-delete-character-backward.spec.mjs:31 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/regression/7163-graphemes.spec.mjs`

category: portable
family: selection-dom-mapping / void-atom
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-react/test/editable-behavior.test.tsx; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/regression/7163-graphemes.spec.mjs:21 test: Grapheme deleteCharacter
  • ../lexical/packages/lexical-playground/__tests__/regression/7163-graphemes.spec.mjs:133 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/regression/7163-graphemes.spec.mjs:135 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/regression/7246-delete-character-backward-list.spec.mjs`

category: portable
family: selection-dom-mapping / void-atom
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-react/test/editable-behavior.test.tsx; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/regression/7246-delete-character-backward-list.spec.mjs:21 test: Regression tests for #7246
  • ../lexical/packages/lexical-playground/__tests__/regression/7246-delete-character-backward-list.spec.mjs:26 test: deleteCharacter merges children from block adjacent to ListNode
  • ../lexical/packages/lexical-playground/__tests__/regression/7246-delete-character-backward-list.spec.mjs:31 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/regression/7266-column-header-merged-cells.spec.mjs`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/regression/7266-column-header-merged-cells.spec.mjs:22 test: Regression test #7266
  • ../lexical/packages/lexical-playground/__tests__/regression/7266-column-header-merged-cells.spec.mjs:25 test: toggling column header with merged column cells should only apply column header to the selected column
  • ../lexical/packages/lexical-playground/__tests__/regression/7266-column-header-merged-cells.spec.mjs:30 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/regression/7266-column-header-merged-cells.spec.mjs:136 test: toggling row header with merged row cells should only apply row header to the selected row
  • ../lexical/packages/lexical-playground/__tests__/regression/7266-column-header-merged-cells.spec.mjs:141 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/regression/7319-delete-character-backward-nodeselection.spec.mjs`

category: portable
family: selection-dom-mapping / void-atom
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-react/test/editable-behavior.test.tsx; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/regression/7319-delete-character-backward-nodeselection.spec.mjs:19 test: Regression tests for #7319
  • ../lexical/packages/lexical-playground/__tests__/regression/7319-delete-character-backward-nodeselection.spec.mjs:24 test: deleteCharacter after hr with RangeSelection
  • ../lexical/packages/lexical-playground/__tests__/regression/7319-delete-character-backward-nodeselection.spec.mjs:29 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/regression/7319-delete-character-backward-nodeselection.spec.mjs:62 test: deleteCharacter after hr with NodeSelection
  • ../lexical/packages/lexical-playground/__tests__/regression/7319-delete-character-backward-nodeselection.spec.mjs:67 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/regression/7354-firefox-decorator-paste.spec.mjs`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/regression/7354-firefox-decorator-paste.spec.mjs:23 test: HTML CopyAndPaste
  • ../lexical/packages/lexical-playground/__tests__/regression/7354-firefox-decorator-paste.spec.mjs:26 test: Copy + paste multi line html with extra newlines
  • ../lexical/packages/lexical-playground/__tests__/regression/7354-firefox-decorator-paste.spec.mjs:31 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/regression/7635-SELECTION_INSERT_CLIPBOARD_NODES_COMMAND.spec.mjs`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-playground/__tests__/regression/7635-SELECTION_INSERT_CLIPBOARD_NODES_COMMAND.spec.mjs:34 test: Regression #7635
  • ../lexical/packages/lexical-playground/__tests__/regression/7635-SELECTION_INSERT_CLIPBOARD_NODES_COMMAND.spec.mjs:39 test: Paste into image caption
  • ../lexical/packages/lexical-playground/__tests__/regression/7635-SELECTION_INSERT_CLIPBOARD_NODES_COMMAND.spec.mjs:40 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/regression/8153-safari-ime-delete-selection.spec.mjs`

category: portable
family: ime-composition / history-undo-redo
target: .tmp/slate-v2/playwright/stress/generated-editing.test.ts; .tmp/slate-v2/packages/slate-browser/src/playwright/ime.ts; .tmp/slate-v2/packages/slate-history/test

  • ../lexical/packages/lexical-playground/__tests__/regression/8153-safari-ime-delete-selection.spec.mjs:36 test: Regression #8153
  • ../lexical/packages/lexical-playground/__tests__/regression/8153-safari-ime-delete-selection.spec.mjs:39 test: Can delete all text selected with Cmd+A after IME composition end on Safari
  • ../lexical/packages/lexical-playground/__tests__/regression/8153-safari-ime-delete-selection.spec.mjs:45 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/regression/8153-safari-ime-delete-selection.spec.mjs:46 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/regression/8153-safari-ime-delete-selection.spec.mjs:47 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/regression/8153-safari-ime-delete-selection.spec.mjs:73 test: Can delete multi-paragraph selection with Shift+ArrowUp after IME composition end on Safari
  • ../lexical/packages/lexical-playground/__tests__/regression/8153-safari-ime-delete-selection.spec.mjs:79 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/regression/8153-safari-ime-delete-selection.spec.mjs:80 test: dynamic or multiline title
  • ../lexical/packages/lexical-playground/__tests__/regression/8153-safari-ime-delete-selection.spec.mjs:81 test: dynamic or multiline title

`../lexical/packages/lexical-playground/__tests__/unit/ImageHTML.test.ts`

category: portable-mixed
family: clipboard-paste / browser-engine
target: .tmp/slate-v2/packages/slate/test/clipboard-contract.ts; .tmp/slate-v2/packages/slate-dom/test/clipboard-boundary.test.ts; .tmp/slate-v2/playwright/integration/examples/paste-html.test.ts; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-playground/__tests__/unit/ImageHTML.test.ts:26 describe: ImageNode HTML serialization
  • ../lexical/packages/lexical-playground/__tests__/unit/ImageHTML.test.ts:27 describe: ImageNode export
  • ../lexical/packages/lexical-playground/__tests__/unit/ImageHTML.test.ts:28 it: with no caption
  • ../lexical/packages/lexical-playground/__tests__/unit/ImageHTML.test.ts:54 it: with plain text caption

`../lexical/packages/lexical-rich-text/src/__tests__/unit/LexicalHeadingNode.test.ts`

category: portable
family: core package behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-rich-text/src/__tests__/unit/LexicalHeadingNode.test.ts:38 describe: LexicalHeadingNode tests
  • ../lexical/packages/lexical-rich-text/src/__tests__/unit/LexicalHeadingNode.test.ts:40 test: HeadingNode.constructor
  • ../lexical/packages/lexical-rich-text/src/__tests__/unit/LexicalHeadingNode.test.ts:51 test: HeadingNode.createDOM()
  • ../lexical/packages/lexical-rich-text/src/__tests__/unit/LexicalHeadingNode.test.ts:75 test: HeadingNode.updateDOM()
  • ../lexical/packages/lexical-rich-text/src/__tests__/unit/LexicalHeadingNode.test.ts:101 test: HeadingNode.insertNewAfter() empty
  • ../lexical/packages/lexical-rich-text/src/__tests__/unit/LexicalHeadingNode.test.ts:123 test: HeadingNode.insertNewAfter() middle
  • ../lexical/packages/lexical-rich-text/src/__tests__/unit/LexicalHeadingNode.test.ts:147 test: HeadingNode.insertNewAfter() end
  • ../lexical/packages/lexical-rich-text/src/__tests__/unit/LexicalHeadingNode.test.ts:173 test: HeadingNode.setTag()
  • ../lexical/packages/lexical-rich-text/src/__tests__/unit/LexicalHeadingNode.test.ts:200 test: $createHeadingNode()
  • ../lexical/packages/lexical-rich-text/src/__tests__/unit/LexicalHeadingNode.test.ts:211 test: $isHeadingNode()
  • ../lexical/packages/lexical-rich-text/src/__tests__/unit/LexicalHeadingNode.test.ts:219 test: creates a h2 with text and can insert a new paragraph after

`../lexical/packages/lexical-rich-text/src/__tests__/unit/LexicalQuoteNode.test.ts`

category: portable
family: core package behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-rich-text/src/__tests__/unit/LexicalQuoteNode.test.ts:21 describe: LexicalQuoteNode tests
  • ../lexical/packages/lexical-rich-text/src/__tests__/unit/LexicalQuoteNode.test.ts:23 test: QuoteNode.constructor
  • ../lexical/packages/lexical-rich-text/src/__tests__/unit/LexicalQuoteNode.test.ts:33 test: QuoteNode.createDOM()
  • ../lexical/packages/lexical-rich-text/src/__tests__/unit/LexicalQuoteNode.test.ts:49 test: QuoteNode.updateDOM()
  • ../lexical/packages/lexical-rich-text/src/__tests__/unit/LexicalQuoteNode.test.ts:66 test: QuoteNode.insertNewAfter()
  • ../lexical/packages/lexical-rich-text/src/__tests__/unit/LexicalQuoteNode.test.ts:87 test: $createQuoteNode()

`../lexical/packages/lexical-rich-text/src/__tests__/unit/LexicalTabNode.test.ts`

category: portable
family: clipboard-paste / browser-engine
target: .tmp/slate-v2/packages/slate/test/clipboard-contract.ts; .tmp/slate-v2/packages/slate-dom/test/clipboard-boundary.test.ts; .tmp/slate-v2/playwright/integration/examples/paste-html.test.ts; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-rich-text/src/__tests__/unit/LexicalTabNode.test.ts:23 describe: LexicalTabNode tests
  • ../lexical/packages/lexical-rich-text/src/__tests__/unit/LexicalTabNode.test.ts:25 test: INSERT_TAB_COMMAND applies selection format and style to TabNode
  • ../lexical/packages/lexical-rich-text/src/__tests__/unit/LexicalTabNode.test.ts:58 test: format preserved when typing between tabs inserted in bold text

`../lexical/packages/lexical-selection/src/__tests__/unit/$sliceSelectedTextNodeContent.test.ts`

category: portable
family: core package behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-selection/src/__tests__/unit/$sliceSelectedTextNodeContent.test.ts:21 describe: $sliceSelectedTextNodeContent
  • ../lexical/packages/lexical-selection/src/__tests__/unit/$sliceSelectedTextNodeContent.test.ts:55 describe: clone
  • ../lexical/packages/lexical-selection/src/__tests__/unit/$sliceSelectedTextNodeContent.test.ts:56 test: does not clone with full selection (both nodes)
  • ../lexical/packages/lexical-selection/src/__tests__/unit/$sliceSelectedTextNodeContent.test.ts:72 test: clones only with partial selection (last node)
  • ../lexical/packages/lexical-selection/src/__tests__/unit/$sliceSelectedTextNodeContent.test.ts:95 test: clones only with partial selection (first node)
  • ../lexical/packages/lexical-selection/src/__tests__/unit/$sliceSelectedTextNodeContent.test.ts:116 test: can slice a node from both sides

`../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx`

category: portable
family: selection-dom-mapping / void-atom
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-react/test/editable-behavior.test.tsx; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:125 describe: LexicalSelection tests
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:228 test: Expect initial output to be a block with no text.
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:234 test: Bold format preserved when typing between consecutive line breaks
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:294 test: dynamic or multiline title
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:1295 test: dynamic or multiline title
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:1309 test: insert text one selected node element selection
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:1333 test: getNodes resolves nested block nodes
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:1355 describe: Block selection moves when new nodes are inserted
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:1958 describe: Selection correctly resolves to a sibling ElementNode when a node is removed
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:1959 test: dynamic or multiline title
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:1988 describe: Selection correctly resolves to a sibling ElementNode when a selected node child is removed
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:1989 test: dynamic or multiline title
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:2023 describe: Selection correctly resolves to a sibling ElementNode that has multiple children with the correct offset when a node is removed
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:2024 test: dynamic or multiline title
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:2075 test: isBackward
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:2119 describe: Decorator text content for selection
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:2200 it: dynamic or multiline title
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:2234 describe: insertParagraph
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:2235 test: three text nodes at offset 0 on third node
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:2280 test: four text nodes at offset 0 on third node
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:2328 it: adjust offset for inline elements text formatting
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:2373 describe: Node.replace
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:2428 test: dynamic or multiline title
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:2447 describe: Testing that $getStyleObjectFromRawCSS handles unformatted css text
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:2448 test: dynamic or multiline title
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:2503 describe: Testing that getStyleObjectFromRawCSS handles values with colons
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:2504 test: dynamic or multiline title
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:2559 describe: $patchStyle
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:2560 it: should patch the style with the new style object
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:2610 it: should patch the style with property function
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:2666 describe: $setBlocksType
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:2667 test: Collapsed selection in text
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:2706 test: Collapsed selection in element
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:2741 test: Two elements, same top-element
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:2780 test: Two empty elements, same top-element
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:2821 test: Two elements, same top-element
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:2860 test: Collapsed in element inside top-element
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:2904 test: Collapsed in text inside top-element
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:2948 test: Full editor selection with a mix of top-elements
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:3012 test: Paragraph with links to heading with links
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:3060 test: Nested list
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelection.test.tsx:3103 test: Nested list with listItem twice indented from its parent

`../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts`

category: portable
family: selection-dom-mapping / void-atom
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-react/test/editable-behavior.test.tsx; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:90 describe: LexicalSelectionHelpers tests
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:91 describe: Collapsed
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:92 test: Can handle a text point
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:267 test: Has correct text point after removal after merge
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:348 test: Has correct text point after removal after merge (2)
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:424 test: Has correct text point adjust to element point after removal of a single empty text node
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:485 test: Has correct element point after removal of an empty text node in a group #1
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:551 test: Has correct element point after removal of an empty text node in a group #2
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:627 test: Has correct text point after removal of an empty text node in a group #3
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:703 test: Can handle an element point on empty element
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:840 test: Can handle a start element point
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:993 test: Can handle an end element point
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:1146 test: Has correct element point after merge from middle
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:1217 test: Has correct element point after merge from end
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:1289 describe: Simple range
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:1290 test: Can handle multiple text points
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:1467 test: Can handle multiple element points
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:1624 test: Can handle a mix of text and element points
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:1794 describe: can insert non-element nodes correctly
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:1795 describe: with an empty paragraph node selected
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:1796 test: a single text node
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:1835 test: two text nodes
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:1876 test: link insertion without parent element
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:1921 test: a single heading node with a child text node
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:1965 describe: with a paragraph node selected on some existing text
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:1966 test: a single text node
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2007 test: two text nodes
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2052 test: a single heading node with a child text node
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2099 test: a paragraph with a child text and a child italic text and a child text
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2171 describe: with a fully-selected text node
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2172 test: a single text node
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2214 describe: with a fully-selected text node followed by an inline element
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2215 test: a single text node
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2261 describe: with a fully-selected text node preceded by an inline element
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2262 test: a single text node
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2308 test: can insert a linebreak node before an inline element node
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2333 describe: can insert block element nodes correctly
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2334 describe: with a fully-selected text node
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2335 test: a paragraph node
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2380 describe: with a fully-selected text node followed by an inline element
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2381 test: a paragraph node
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2430 describe: with a fully-selected text node preceded by an inline element
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2431 test: a paragraph node
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2480 test: Can insert link into empty paragraph
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2499 test: Can insert link into empty paragraph (2)
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2519 test: Can insert an ElementNode after ShadowRoot
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2541 describe: extract
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2542 test: Should return the selected node when collapsed on a TextNode
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2578 describe: insertNodes
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2583 it: can insert element next to top level decorator node
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2614 it: can insert when previous selection was null
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2643 it: can insert when before empty text node
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2663 it: last node is LineBreakNode
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2691 describe: $patchStyleText
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2692 test: can patch a selection anchored to the end of a TextNode before an inline element
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2748 test: can patch a selection anchored to the end of a TextNode at the end of a paragraph
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2798 test: can patch a selection that ends on an element
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2851 test: can patch a reversed selection that ends on an element
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2904 test: can patch a selection that starts and ends on an element
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2946 test: can clear a style
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:2984 test: can toggle a style on a collapsed selection
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:3033 test: updates cached styles when setting on a collapsed selection
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:3082 test: $getSelectionStyleValueForProperty returns consistent value regardless of selection direction
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:3141 test: $getSelectionStyleValueForProperty ignores nodes with zero characters selected at boundaries
  • ../lexical/packages/lexical-selection/src/__tests__/unit/LexicalSelectionHelpers.test.ts:3232 test: preserve backward selection when changing style of 2 different text nodes

`../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableCellNode.test.ts`

category: portable
family: tables-grid / selection-dom-mapping
target: .tmp/slate-v2/playwright/stress/generated-editing.test.ts; .tmp/slate-v2/playwright/integration/examples/tables.test.ts; .tmp/slate-v2/packages/slate/test/transforms/insertFragment

  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableCellNode.test.ts:32 describe: LexicalTableCellNode tests
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableCellNode.test.ts:34 test: TableCellNode.constructor
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableCellNode.test.ts:48 test: TableCellNode.createDOM()
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableCellNode.test.ts:103 test: TableCellNode.importDOM
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableCellNode.test.ts:255 test: dynamic or multiline title
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableCellNode.test.ts:270 test: dynamic or multiline title
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableCellNode.test.ts:285 test: DOM Conversion: without scope defaults to ROW header
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableCellNode.test.ts:304 test: DOM Conversion: in first row without scope becomes ROW header
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableCellNode.test.ts:324 test: DOM Conversion: in first column of non-first row becomes COLUMN header
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableCellNode.test.ts:350 test: DOM Conversion: in thead without scope becomes ROW header

`../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableExtension.test.ts`

category: portable
family: tables-grid / selection-dom-mapping
target: .tmp/slate-v2/playwright/stress/generated-editing.test.ts; .tmp/slate-v2/playwright/integration/examples/tables.test.ts; .tmp/slate-v2/packages/slate/test/transforms/insertFragment

  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableExtension.test.ts:51 describe: TableExtension
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableExtension.test.ts:67 it: Creates a table with INSERT_TABLE_COMMAND
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableExtension.test.ts:101 it: Prevents nested tables by default
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableExtension.test.ts:141 it: Allows nested tables when hasNestedTables is true
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableExtension.test.ts:184 describe: $insertGeneratedNodes
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableExtension.test.ts:185 test: SELECTION_INSERT_CLIPBOARD_NODES_COMMAND handler prevents pasting whole table into cells by default
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableExtension.test.ts:236 test: SELECTION_INSERT_CLIPBOARD_NODES_COMMAND handler allows pasting whole table into a single cell when hasNestedTables is true
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableExtension.test.ts:292 test: SELECTION_INSERT_CLIPBOARD_NODES_COMMAND handler allows extending table when hasNestedTables is true
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableExtension.test.ts:365 describe: colWidths
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableExtension.test.ts:366 it: removes colWidths if it is an empty array
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableExtension.test.ts:388 it: uses the last column width if the column count is greater than the number of column widths
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableExtension.test.ts:410 it: shortens the colWidths if the column count is less than the number of column widths
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableExtension.test.ts:433 describe: SELECT_ALL_COMMAND
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableExtension.test.ts:434 it: Selects all cells in table without merged cells when table is only content
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableExtension.test.ts:519 it: Selects all cells in table with merged cells when table is only content
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableExtension.test.ts:618 it: Does not intercept SELECT_ALL_COMMAND when cursor is outside table
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableExtension.test.ts:656 it: Does not intercept SELECT_ALL_COMMAND when there is paragraph after table

`../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableMobileSelection.test.tsx`

category: portable
family: tables-grid / selection-dom-mapping
target: .tmp/slate-v2/playwright/stress/generated-editing.test.ts; .tmp/slate-v2/playwright/integration/examples/tables.test.ts; .tmp/slate-v2/packages/slate/test/transforms/insertFragment

  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableMobileSelection.test.tsx:53 describe: LexicalTableMobileSelection
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableMobileSelection.test.tsx:108 test: mouse click should set anchor cell for selection (existing behavior)
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableMobileSelection.test.tsx:137 test: touch tap on single cell should not create table selection
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableMobileSelection.test.tsx:164 test: touch tap between different cells should not create table selection
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableMobileSelection.test.tsx:201 test: touch drag (with isSelecting=true) should still create table selection
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableMobileSelection.test.tsx:241 test: mixed pointer types should be handled correctly
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableMobileSelection.test.tsx:272 test: mouse leaving browser window during selection should stop selection

`../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableNode.test.tsx`

category: portable
family: tables-grid / selection-dom-mapping
target: .tmp/slate-v2/playwright/stress/generated-editing.test.ts; .tmp/slate-v2/playwright/integration/examples/tables.test.ts; .tmp/slate-v2/packages/slate/test/transforms/insertFragment

  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableNode.test.tsx:105 describe: LexicalTableNode tests
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableNode.test.tsx:107 describe: hasHorizontalScroll={${hasHorizontalScroll}}
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableNode.test.tsx:140 test: TableNode.constructor
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableNode.test.tsx:152 test: TableNode.createDOM()
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableNode.test.tsx:169 test: TableNode.createDOM() and updateDOM() style
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableNode.test.tsx:278 test: TableNode.exportDOM() with range selection
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableNode.test.tsx:349 test: TableNode.exportDOM() with partial table selection
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableNode.test.tsx:405 test: Copy table from an external source
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableNode.test.tsx:456 test: Copy table with caption/tbody/thead/tfoot from an external source
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableNode.test.tsx:600 test: Copy table with caption from an external source
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableNode.test.tsx:770 test: Copy table from an external source like gdoc with formatting
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableNode.test.tsx:835 test: Cut table in the middle of a range selection
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableNode.test.tsx:865 test: Cut table as last node in range selection
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableNode.test.tsx:893 test: Cut table as first node in range selection
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableNode.test.tsx:921 test: Cut table is whole selection, should remove it
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableNode.test.tsx:962 test: Cut subsection of table cells, should just clear contents
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableNode.test.tsx:1067 test: Table plain text output validation
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableNode.test.tsx:1117 test: Toggle row striping ON/OFF
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableNode.test.tsx:1182 test: Toggle frozen first column ON/OFF
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableNode.test.tsx:1696 test: Change Table-level alignment
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableNode.test.tsx:1759 test: Update column widths
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableNode.test.tsx:1841 describe: hasHorizontalScroll false -> true
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableNode.test.tsx:1859 test: table is re-rendered when scroll changes

`../lexical/packages/lexical-table/src/__tests__/unit/LexicalTablePlugin.test.tsx`

category: portable
family: tables-grid / selection-dom-mapping
target: .tmp/slate-v2/playwright/stress/generated-editing.test.ts; .tmp/slate-v2/playwright/integration/examples/tables.test.ts; .tmp/slate-v2/packages/slate/test/transforms/insertFragment

  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTablePlugin.test.tsx:26 describe: LexicalTablePlugin
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTablePlugin.test.tsx:43 test: INSERT_TABLE_COMMAND inserts a table
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTablePlugin.test.tsx:77 test: INSERT_TABLE_COMMAND inserts a table when the editor is blurred

`../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableRowNode.test.ts`

category: portable
family: tables-grid / selection-dom-mapping
target: .tmp/slate-v2/playwright/stress/generated-editing.test.ts; .tmp/slate-v2/playwright/integration/examples/tables.test.ts; .tmp/slate-v2/packages/slate/test/transforms/insertFragment

  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableRowNode.test.ts:20 describe: LexicalTableRowNode tests
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableRowNode.test.ts:22 test: TableRowNode.constructor
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableRowNode.test.ts:34 test: TableRowNode.createDOM()

`../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableSelection.test.tsx`

category: portable
family: tables-grid / selection-dom-mapping
target: .tmp/slate-v2/playwright/stress/generated-editing.test.ts; .tmp/slate-v2/playwright/integration/examples/tables.test.ts; .tmp/slate-v2/packages/slate/test/transforms/insertFragment

  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableSelection.test.tsx:34 describe: table selection
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableSelection.test.tsx:70 describe: regression #7076
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableSelection.test.tsx:71 test: $patchStyleText works on a TableSelection
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableSelection.test.tsx:93 test: $patchStyleText applies styles to empty table cells
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableSelection.test.tsx:127 describe: regression #7140
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableSelection.test.tsx:128 test: selection points to missing nodes after deleting table rows

`../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableUtils.test.ts`

category: portable
family: tables-grid / selection-dom-mapping
target: .tmp/slate-v2/playwright/stress/generated-editing.test.ts; .tmp/slate-v2/playwright/integration/examples/tables.test.ts; .tmp/slate-v2/packages/slate/test/transforms/insertFragment

  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableUtils.test.ts:58 describe: $moveTableColumn
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableUtils.test.ts:73 test: moves a column forward
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableUtils.test.ts:105 test: moves a column backward
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableUtils.test.ts:137 test: moves a column to the first position
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableUtils.test.ts:169 test: moves a column to the last position
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableUtils.test.ts:201 test: is a no-op when origin equals target
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableUtils.test.ts:233 test: is a no-op when origin is out of bounds
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableUtils.test.ts:265 test: is a no-op when target is out of bounds
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableUtils.test.ts:297 test: is a no-op when origin is negative
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableUtils.test.ts:329 test: reorders colWidths when present
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableUtils.test.ts:360 test: does not modify table with merged cells
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableUtils.test.ts:425 test: swaps adjacent columns
  • ../lexical/packages/lexical-table/src/__tests__/unit/LexicalTableUtils.test.ts:458 test: preserves table structure after move

`../lexical/packages/lexical-utils/src/__tests__/unit/LexicalUtilsInsertNodeToNearestRoot.test.tsx`

category: portable
family: core package behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-utils/src/__tests__/unit/LexicalUtilsInsertNodeToNearestRoot.test.tsx:26 describe: LexicalUtils#insertNodeToNearestRoot
  • ../lexical/packages/lexical-utils/src/__tests__/unit/LexicalUtilsInsertNodeToNearestRoot.test.tsx:139 it: dynamic or multiline title

`../lexical/packages/lexical-utils/src/__tests__/unit/LexicalUtilsSplitNode.test.tsx`

category: portable
family: core package behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical-utils/src/__tests__/unit/LexicalUtilsSplitNode.test.tsx:18 describe: LexicalUtils#splitNode
  • ../lexical/packages/lexical-utils/src/__tests__/unit/LexicalUtilsSplitNode.test.tsx:104 it: dynamic or multiline title
  • ../lexical/packages/lexical-utils/src/__tests__/unit/LexicalUtilsSplitNode.test.tsx:138 it: throws when splitting root

`../lexical/packages/lexical/src/__tests__/unit/CodeBlock.test.ts`

category: portable
family: serialization-parsing / marks-inline
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-history/test; .tmp/slate-v2/playwright/integration/examples/richtext.test.ts

  • ../lexical/packages/lexical/src/__tests__/unit/CodeBlock.test.ts:23 describe: CodeBlock tests
  • ../lexical/packages/lexical/src/__tests__/unit/CodeBlock.test.ts:117 test: Code block html paste: ${testCase.name}

`../lexical/packages/lexical/src/__tests__/unit/HTMLCopyAndPaste.test.ts`

category: portable
family: clipboard-paste / browser-engine
target: .tmp/slate-v2/packages/slate/test/clipboard-contract.ts; .tmp/slate-v2/packages/slate-dom/test/clipboard-boundary.test.ts; .tmp/slate-v2/playwright/integration/examples/paste-html.test.ts; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical/src/__tests__/unit/HTMLCopyAndPaste.test.ts:24 describe: HTMLCopyAndPaste tests
  • ../lexical/packages/lexical/src/__tests__/unit/HTMLCopyAndPaste.test.ts:110 test: HTML copy paste: ${testCase.name}
  • ../lexical/packages/lexical/src/__tests__/unit/HTMLCopyAndPaste.test.ts:135 test: iOS fix: Word predictions should be handled as plain text to maintain selection formatting

`../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:167 describe: LexicalEditor tests
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:244 describe: registerNodeTransform
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:245 it: Calls the RootNode transform last on every update
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:357 describe: read()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:358 it: Can read the editor state
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:409 it: runs transforms the editor state
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:445 it: can be nested in an update or read
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:481 it: Should create an editor with an initial editor state
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:526 it: Should handle nested updates in the correct sequence
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:671 it: nested update after selection update triggers exactly 1 update
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:698 it: update does not call onUpdate callback when no dirty nodes
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:713 it: editor.focus() callback is called
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:728 it: Synchronously runs three transforms, two of them depend on the other
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:775 it: Synchronously runs three transforms, two of them depend on the other (2)
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:841 it: Synchronously runs three transforms, two of them depend on previously merged text content
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:912 it: text transform runs when node is removed
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:943 it: transforms only run on nodes that were explicitly marked as dirty
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:992 it: transforms do not discard unintentional dirtyElements
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1072 describe: transforms on siblings
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1110 it: on remove
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1118 it: on replace
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1127 it: on insertBefore
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1136 it: on insertAfter
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1145 it: on splitText
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1155 it: on append
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1165 it: Detects infinite recursivity on transforms
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1186 it: Should be able to update an editor state without a root element
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1221 it: Should be able to recover from an update error
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1258 it: Should be able to handle a change in root element
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1322 it: dynamic or multiline title
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1349 describe: With node decorators
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1384 it: Should correctly render React component into Lexical node #1
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1428 it: Should correctly render React component into Lexical node #2
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1523 describe: parseEditorState()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1532 it: exportJSON API - parses parsed JSON
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1552 describe: range selection
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1576 it: Parses the nodes of a stringified editor state
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1624 it: Parses the text content of the editor state
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1634 describe: node selection
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1660 it: Parses the nodes of a stringified editor state
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1708 it: Parses the text content of the editor state
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1719 describe: $parseSerializedNode()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1720 it: parses serialized nodes
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1744 describe: Node children
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1761 it: moves node to different tree branches
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1816 it: moves node to different tree branches (inverse)
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1851 it: moves node to different tree branches (node appended twice in two different branches)
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1893 it: can subscribe and unsubscribe from commands and the callback is fired
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1921 it: removes the command from the command map when no listener are attached
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1962 it: can register transforms before updates
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:1988 it: textcontent listener
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:2049 it: mutation listener
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:2146 it: rejects creating an editor with invalid LexicalNode parent class
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:2158 it: mutation listener on newly initialized editor
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:2166 it: mutation listener with setEditorState
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:2226 it: mutation listener set for original node should work with the replaced node
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:2323 it: mutation listener should work with the replaced node
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:2380 it: multiple update tags
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:2402 it: mutation listeners does not trigger when other node types are mutated
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:2422 it: mutation listeners with normalization
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:2468 it: dynamic or multiline title
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:2586 it: editable listener
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:2603 it: does not add new listeners while triggering existing
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:2690 it: allows using the same listener for multiple node types
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:2719 it: calls mutation listener with initial state
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:2787 it: can use discrete for synchronous updates
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:2814 it: can use discrete after a non-discrete update to flush the entire queue
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:2841 it: can use discrete after a non-discrete setEditorState to flush the entire queue
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:2871 it: can use discrete in a nested update to flush the entire queue
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:2898 it: can read in a nested update
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:2917 it: does not include linebreak into inline elements
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:2934 it: reconciles state without root element
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:2945 describe: node replacement
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:2946 it: should work correctly
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:2983 it: should fail if node keys are re-used
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:3021 it: dynamic or multiline title
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:3074 it: dynamic or multiline title
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:3123 it: recovers from reconciler failure and trigger proper prev editor state
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:3161 it: should call importDOM methods only once
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:3183 describe: setRootElement
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:3184 it: root element count is always positive
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:3200 it: should handle root element moving between documents
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:3224 describe: html config
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:3225 it: should override export output function
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:3272 it: should override import conversion function
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:3312 describe: selection
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:3313 it: updates the DOM selection
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditor.test.tsx:3355 it: does not update the Lexical->DOM selection with skip-dom-selection

`../lexical/packages/lexical/src/__tests__/unit/LexicalEditorListener.test.ts`

category: portable
family: serialization-parsing / marks-inline
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-history/test; .tmp/slate-v2/playwright/integration/examples/richtext.test.ts

  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditorListener.test.ts:11 describe: LexicalEditor listeners
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditorListener.test.ts:12 describe: registerRootListener
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditorListener.test.ts:13 test: can return a function that is called when unregistered
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditorListener.test.ts:31 test: updates the function on each call
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditorListener.test.ts:47 test: works when the root element changes too
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditorListener.test.ts:80 describe: registerEditableListener
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditorListener.test.ts:81 test: can return a function that is called when unregistered
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditorListener.test.ts:102 test: updates the function on each call
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditorListener.test.ts:125 test: works when editable state changes

`../lexical/packages/lexical/src/__tests__/unit/LexicalEditorState.test.ts`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditorState.test.ts:23 describe: LexicalEditorState tests
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditorState.test.ts:25 test: constructor
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditorState.test.ts:34 test: read()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditorState.test.ts:107 test: toJSON()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalEditorState.test.ts:123 test: ensure garbage collection works as expected

`../lexical/packages/lexical/src/__tests__/unit/LexicalElementHelpers.test.ts`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical/src/__tests__/unit/LexicalElementHelpers.test.ts:15 describe: LexicalElementHelpers tests
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalElementHelpers.test.ts:16 describe: addClassNamesToElement() and removeClassNamesFromElement()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalElementHelpers.test.ts:17 test: basic
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalElementHelpers.test.ts:28 test: empty
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalElementHelpers.test.ts:44 test: multiple
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalElementHelpers.test.ts:55 test: space separated
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalElementHelpers.test.ts:67 test: multiple spaces

`../lexical/packages/lexical/src/__tests__/unit/LexicalExtensionCore.test.ts`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical/src/__tests__/unit/LexicalExtensionCore.test.ts:18 describe: defineExtension
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalExtensionCore.test.ts:19 it: does not change identity
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalExtensionCore.test.ts:32 it: infers the expected type (base case)
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalExtensionCore.test.ts:37 it: infers the expected type (config inference)
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalExtensionCore.test.ts:42 it: infers the expected type (output inference)
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalExtensionCore.test.ts:54 it: can define an extension without config
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalExtensionCore.test.ts:59 it: infers the correct init type
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalExtensionCore.test.ts:71 describe: declarePeerDependency
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalExtensionCore.test.ts:72 it: validates the type argument

`../lexical/packages/lexical/src/__tests__/unit/LexicalListPlugin.test.tsx`

category: portable
family: serialization-parsing / marks-inline
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-history/test; .tmp/slate-v2/playwright/integration/examples/richtext.test.ts

  • ../lexical/packages/lexical/src/__tests__/unit/LexicalListPlugin.test.tsx:42 describe: @lexical/list tests
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalListPlugin.test.tsx:85 test: Toggle an empty list on/off
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalListPlugin.test.tsx:140 test: Can create a list and indent/outdent it
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalListPlugin.test.tsx:223 test: $setBlocksType does not cause invalid ListItemNode children - regression #7036

`../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:98 describe: LexicalNode tests
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:122 test: LexicalNode.constructor
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:138 test: LexicalNode.constructor: type change detected
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:151 test: LexicalNode.clone()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:160 test: LexicalNode.afterCloneFrom()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:227 test: LexicalNode.getType()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:236 test: LexicalNode.isAttached()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:253 test: LexicalNode.isSelected()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:278 test: LexicalNode.isSelected(): selected text node
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:296 test: LexicalNode.isSelected(): selected block node range
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:344 test: LexicalNode.isSelected(): with custom range selection
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:375 describe: LexicalNode.isSelected(): with inline decorator node
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:491 test: dynamic or multiline title
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:536 test: LexicalNode.getKey()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:540 test: LexicalNode.getParent()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:556 test: LexicalNode.getParentOrThrow()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:572 test: LexicalNode.getTopLevelElement()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:611 test: LexicalNode.getTopLevelElementOrThrow()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:632 test: LexicalNode.getParents()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:652 test: LexicalNode.getPreviousSibling()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:676 test: LexicalNode.getPreviousSiblings()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:715 test: LexicalNode.getNextSibling()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:736 test: LexicalNode.getNextSiblings()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:764 test: LexicalNode.getCommonAncestor()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:817 test: LexicalNode.isBefore()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:845 test: LexicalNode.isParentOf()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:860 test: LexicalNode.getNodesBetween()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:908 test: LexicalNode.isToken()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:928 test: LexicalNode.isSegmented()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:948 test: LexicalNode.isDirectionless()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:971 test: LexicalNode.getLatest()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:980 test: LexicalNode.getLatest(): garbage collected node
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1002 test: LexicalNode.getTextContent()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1016 test: LexicalNode.getTextContentSize()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1025 test: LexicalNode.createDOM()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1042 test: LexicalNode.updateDOM()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1052 test: LexicalNode.remove()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1078 test: LexicalNode.replace()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1088 test: LexicalNode.replace(): from another parent
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1117 test: LexicalNode.replace(): text
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1134 test: LexicalNode.replace(): token
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1151 test: LexicalNode.replace(): segmented
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1168 test: LexicalNode.replace(): directionless
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1186 test: LexicalNode.replace() within canBeEmpty: false
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1212 test: LexicalNode.insertAfter()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1223 test: LexicalNode.insertAfter(): text
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1240 test: LexicalNode.insertAfter(): token
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1257 test: LexicalNode.insertAfter(): segmented
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1274 test: LexicalNode.insertAfter(): directionless
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1292 test: LexicalNode.insertAfter() move blocks around
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1329 test: LexicalNode.insertAfter() move blocks around #2
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1372 test: LexicalNode.insertBefore()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1383 test: LexicalNode.insertBefore(): from another parent
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1404 test: LexicalNode.insertBefore(): text
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1421 test: LexicalNode.insertBefore(): token
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1438 test: LexicalNode.insertBefore(): segmented
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1455 test: LexicalNode.insertBefore(): directionless
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1472 test: LexicalNode.selectNext()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1488 test: LexicalNode.selectNext(): no next sibling
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1498 test: LexicalNode.selectNext(): non-text node
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1510 describe: LexicalNode.$config()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1511 test: importJSON() with no boilerplate
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1541 test: clone() with no boilerplate
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1622 describe: LexicalNode.$config() without registration
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNode.test.ts:1623 test: static getType() before registration

`../lexical/packages/lexical/src/__tests__/unit/LexicalNodeState.test.ts`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNodeState.test.ts:117 describe: LexicalNode state
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNodeState.test.ts:129 test: state.$set() and state.$get() need to be inside an update
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNodeState.test.ts:148 test: __state is not an enumerable property
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNodeState.test.ts:158 test: getState and setState
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNodeState.test.ts:181 test: import and export state
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNodeState.test.ts:201 test: states cannot be registered with the same key string
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNodeState.test.ts:222 test: nodeGetter() and nodeSetter()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNodeState.test.ts:240 test: flat config serialization round-trip
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNodeState.test.ts:269 test: default value should not be exported
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNodeState.test.ts:300 test: getState returns immutable values, setState require an Object literal
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNodeState.test.ts:336 test: setting state shouldnโ€™t affect previous reconciled versions of the node
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNodeState.test.ts:386 describe: nodeStatesAreEquivalent
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNodeState.test.ts:387 test: undefined states are equivalent
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNodeState.test.ts:390 test: merges text nodes with different number of default state values
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNodeState.test.ts:430 test: TextNode merging only with equivalent state
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNodeState.test.ts:493 test: different versions of the same state are not equivalent
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNodeState.test.ts:589 describe: resetOnCopyNode
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNodeState.test.ts:590 test: state with resetOnCopyNode: true is reset when using $copyNode
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNodeState.test.ts:610 test: state with resetOnCopyNode: false is preserved when using $copyNode
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNodeState.test.ts:630 test: state without resetOnCopyNode option is preserved when using $copyNode
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNodeState.test.ts:649 test: multiple states with different resetOnCopyNode configurations

`../lexical/packages/lexical/src/__tests__/unit/LexicalNormalization.test.tsx`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNormalization.test.tsx:24 describe: LexicalNormalization tests
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNormalization.test.tsx:26 describe: $normalizeSelection
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNormalization.test.tsx:33 test: paragraph to text nodes${reversedStr}
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNormalization.test.tsx:61 test: paragraph to text node + element${reversedStr}
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNormalization.test.tsx:89 test: paragraph to text node + decorator${reversedStr}
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNormalization.test.tsx:117 test: text + text node${reversedStr}
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalNormalization.test.tsx:145 test: paragraph to test element to text + text${reversedStr}

`../lexical/packages/lexical/src/__tests__/unit/LexicalReconciler.test.ts`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical/src/__tests__/unit/LexicalReconciler.test.ts:21 describe: LexicalReconciler
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalReconciler.test.ts:23 test: Should set direction of root node children to auto if root node has no direction
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalReconciler.test.ts:43 test: Should not set direction of root node children if root node has direction
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalReconciler.test.ts:64 test: Should allow overriding direction of root node children when root node has no direction
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalReconciler.test.ts:96 test: Should allow overriding direction of root node children when root node has direction
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalReconciler.test.ts:119 test: Should update root children when root node direction changes

`../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts`

category: portable
family: selection-dom-mapping / void-atom
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-react/test/editable-behavior.test.tsx; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:55 describe: LexicalSelection tests
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:57 describe: Inserting text either side of inline elements
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:124 describe: Inserting text before inline elements
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:125 describe: Start-of-paragraph inline elements
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:153 test: Can insert text before a start-of-paragraph inline element, using insertText
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:160 test: Can insert text before a start-of-paragraph inline element, using insertNodes
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:167 describe: Mid-paragraph inline elements
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:194 test: Can insert text before a mid-paragraph inline element, using insertText
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:200 test: Can insert text before a mid-paragraph inline element, using insertNodes
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:207 describe: End-of-paragraph inline elements
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:234 test: Can insert text before an end-of-paragraph inline element, using insertText
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:240 test: Can insert text before an end-of-paragraph inline element, using insertNodes
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:248 describe: Inserting text after inline elements
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:249 describe: Start-of-paragraph inline elements
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:276 test: Can insert text after a start-of-paragraph inline element, using insertText
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:283 test: Can insert text after a start-of-paragraph inline element, using insertNodes
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:290 describe: Mid-paragraph inline elements
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:317 test: Can insert text after a mid-paragraph inline element, using insertText
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:324 test: Can insert text after a mid-paragraph inline element, using insertNodes
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:331 describe: End-of-paragraph inline elements
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:359 test: Can insert text after an end-of-paragraph inline element, using insertText
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:366 test: Can insert text after an end-of-paragraph inline element, using insertNodes
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:375 describe: insertText()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:376 test: inserts into existing paragraph node when selection is on parent of paragraph
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:395 describe: removeText
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:396 describe: with a leading TextNode and a trailing token TextNode
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:415 test: remove all text
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:438 test: remove initial TextNode
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:461 test: remove trailing token TextNode
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:486 test: remove initial TextNode and partial token TextNode
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:511 test: remove partial initial TextNode and partial token TextNode
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:539 describe: with a leading token TextNode and a trailing TextNode
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:557 test: remove all text
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:580 test: remove trailing TextNode
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:605 test: remove leading token TextNode
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:628 test: remove partial leading token TextNode and trailing TextNode
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:657 test: remove partial token TextNode and partial trailing TextNode
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:685 describe: with a leading TextNode and a trailing segmented TextNode
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:704 test: remove all text
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:727 test: remove initial TextNode
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:750 test: remove trailing segmented TextNode
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:775 test: remove initial TextNode and partial segmented TextNode
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:802 test: remove partial initial TextNode and partial segmented TextNode
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:844 describe: Regression tests for #6701
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:845 test: insertNodes fails an invariant when there is no Block ancestor
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:887 describe: getNodes()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:924 describe: $selectAll()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:925 test: with test document
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:952 test: with leading inline decorator
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:984 test: with trailing inline decorator
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:1017 test: with leading empty inline element
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:1053 test: with trailing empty inline element
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:1090 test: after removing empty paragraph
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:1124 test: Manual select all without normalization
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:1149 test: Manual select all from first text to last empty paragraph
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:1174 test: Manual select with focus collapsed between inline decorators
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:1209 test: Manual select with focus collapsed after inline decorator
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:1245 test: Manual select with focus between inline decorators
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:1287 test: select only the paragraph (not normalized)
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:1312 test: select around the paragraph (not normalized)
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:1341 test: selection collapsed inside an empty element
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:1353 test: select an empty ListItemNode (collapsed)
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:1373 describe: extract()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:1410 test: Manual select all without normalization
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:1437 test: Manual select all from first text to last empty paragraph
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:1464 test: select partial TextNode extracts paragraph text
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:1479 test: select partial TextNode extracts link text
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:1492 test: select multiple partial TextNode extracts text
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:1509 test: select last offset TextNode as first node removes node
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:1534 test: select 0 offset TextNode as last node removes node
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:1558 describe: Regression #7081
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:1560 test: Firefox selection & paste before linebreak
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:1592 describe: Regression #7173
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:1594 test: Can insertNodes of multiple blocks with a target of an initial empty block and the entire next block
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:1618 describe: Regression #3181
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:1620 test: Point.isBefore edge case with mixed TextNode & ElementNode and matching descendants
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:1657 describe: Regression #8067
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:1659 test: Formatting issue when replacing text with format
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:1681 describe: Regression #8098
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSelection.test.ts:1683 test: Do not apply format and style when moving to different node

`../lexical/packages/lexical/src/__tests__/unit/LexicalSerialization.test.ts`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSerialization.test.ts:104 describe: LexicalSerialization tests
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalSerialization.test.ts:106 test: serializes and deserializes from JSON

`../lexical/packages/lexical/src/__tests__/unit/LexicalUpdateTags.test.ts`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUpdateTags.test.ts:31 describe: LexicalUpdateTags tests
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUpdateTags.test.ts:33 test: Built-in update tags work correctly
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUpdateTags.test.ts:52 test: $addUpdateTag and $hasUpdateTag work correctly
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUpdateTags.test.ts:62 test: Multiple update tags can be added
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUpdateTags.test.ts:75 test: Update tags via editor.update() options work
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUpdateTags.test.ts:88 test: Update tags are cleared after update
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUpdateTags.test.ts:103 test: Update tags affect editor behavior

`../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:44 describe: LexicalUtils tests
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:46 test: scheduleMicroTask(): native
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:62 test: scheduleMicroTask(): promise
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:82 test: emptyFunction()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:88 test: resetRandomKey()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:100 test: generateRandomKey()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:110 test: isArray()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:115 test: isSelectionWithinEditor()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:154 test: getTextDirection()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:187 test: isExactShortcutMatch() matches by event.key for single-letter
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:209 test: isExactShortcutMatch() matches to event.key for ASCII remapped layout (English (US) Dvorak)
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:237 test: isExactShortcutMatch() fallback to event.code for single-letter in event.key via non-English layout
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:259 test: isExactShortcutMatch() matches special keys
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:288 test: isExactShortcutMatch() matches optional keys
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:323 test: isTokenOrSegmented()
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:338 test: $getNodeByKey
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:361 test: $nodesOfType
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:390 describe: $onUpdate
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:391 test: deferred even when there are no dirty nodes
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:421 test: added fn runs after update, original onUpdate, and prior calls to $onUpdate
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:450 test: adding fn throws outside update
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:457 test: getCachedTypeToNodeMap
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:510 test: scrollIntoViewIfNeeded respects scroll-padding on document element
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:550 describe: $applyNodeReplacement
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:589 test: validates replace node configuration
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:615 test: validates replace node type withKlass
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:641 test: validates replace node type change
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:673 test: validates replace node key change
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:700 test: validates replace node configuration withKlass
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:726 test: validates nested replace node configuration
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:756 test: validates nested replace node configuration withKlass
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:789 test: nested replace node configuration works
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:826 describe: $copyNode
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:859 test: does not mark the original as dirty
  • ../lexical/packages/lexical/src/__tests__/unit/LexicalUtils.test.ts:887 test: returns a shallow copy

`../lexical/packages/lexical/src/__tests__/unit/mergeRegister.test.ts`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical/src/__tests__/unit/mergeRegister.test.ts:11 describe: mergeRegister
  • ../lexical/packages/lexical/src/__tests__/unit/mergeRegister.test.ts:12 it: calls all of the clean-up functions
  • ../lexical/packages/lexical/src/__tests__/unit/mergeRegister.test.ts:17 it: calls the clean-up functions in reverse order

`../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts`

category: portable
family: selection-dom-mapping / void-atom
target: .tmp/slate-v2/packages/slate/test; .tmp/slate-v2/packages/slate-react/test/editable-behavior.test.tsx; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:88 describe: LexicalCaret
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:90 describe: $getChildCaret
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:92 test: direction ${direction}
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:198 describe: $getSiblingCaret
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:200 test: direction ${direction}
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:439 describe: $caretRangeFromSelection
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:440 test: collapsed text point selection
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:499 test: full text node selection (${direction})
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:549 test: single text node non-empty selection
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:598 test: multiple text node non-empty selection (${direction})
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:694 describe: $removeTextFromCaretRange
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:696 describe: ported Headings e2e tests
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:697 test: Pressing return in the middle of a heading creates a new heading below
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:727 describe: ported File e2e tests
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:728 test: $selectAll() with nesting and a trailing decorator
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:758 describe: ported Table e2e tests
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:759 test: Can delete all with range selection anchored in table
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:795 describe: ported LexicalSelection tests
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:796 test: remove partial initial TextNode and partial segmented TextNode
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:857 describe: single block
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:869 test: remove second TextNode when wrapped in a LinkNode that will become empty
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:918 test: remove first TextNode with second in token mode
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:960 test: collapsed text point selection
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:1020 describe: full text node internal selection
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:1023 test: ${text} node (${direction})
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:1098 describe: full text node biased selection
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:1108 test: ${text} node (${direction} ${anchorBias} ${focusBias})
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:1253 describe: single text node non-empty partial selection
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:1258 test: ${direction} ${anchorEdgeOffset}:${-focusEdgeOffset}
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:1319 describe: multiple text node selection
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:1333 test: ${direction} ${texts[nodeIndexStart]} ${startFn.name} ${texts[nodeIndexEnd]} ${endFn.name}
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:1481 describe: multiple blocks
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:1495 describe: multiple text node selection
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:1509 test: ${direction} ${texts[nodeIndexStart]} ${startFn.name} ${texts[nodeIndexEnd]} ${endFn.name}
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:1652 test: remove range between list and nested list
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:1694 describe: Ordering
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:1732 describe: $comparePointCaretNext
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:1733 test: trivial caret checks
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:1764 test: TextPointCaret checks single origin
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:1822 test: TextPointCaret multiple origin
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:1848 describe: $getCommonAncestor
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:1849 test: trivial node checks
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:1896 test: dynamic or multiline title
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:1954 describe: LexicalSelectionHelpers
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:1956 describe: with a fully-selected text node preceded by an inline element
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:1957 test: a single text node
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:1994 describe: $splitAtPointCaretNext
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:1996 test: Does not split a TextNode at the beginning
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:2012 test: Splits a TextNode in the middle
  • ../lexical/packages/lexical/src/caret/__tests__/unit/LexicalCaret.test.ts:2031 test: Splits a ParagraphNode

`../lexical/packages/lexical/src/caret/__tests__/unit/docs-traversals.test.ts`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical/src/caret/__tests__/unit/docs-traversals.test.ts:32 describe: traversals.md
  • ../lexical/packages/lexical/src/caret/__tests__/unit/docs-traversals.test.ts:34 describe: Traversal Strategies
  • ../lexical/packages/lexical/src/caret/__tests__/unit/docs-traversals.test.ts:73 describe: Adjacent Caret Traversals
  • ../lexical/packages/lexical/src/caret/__tests__/unit/docs-traversals.test.ts:74 test: $iterSiblings
  • ../lexical/packages/lexical/src/caret/__tests__/unit/docs-traversals.test.ts:109 test: root has no siblings
  • ../lexical/packages/lexical/src/caret/__tests__/unit/docs-traversals.test.ts:119 test: root has paragraph children
  • ../lexical/packages/lexical/src/caret/__tests__/unit/docs-traversals.test.ts:144 test: iteration does not include the origin
  • ../lexical/packages/lexical/src/caret/__tests__/unit/docs-traversals.test.ts:161 describe: Depth First Caret Traversals
  • ../lexical/packages/lexical/src/caret/__tests__/unit/docs-traversals.test.ts:162 describe: $iterCaretsDepthFirst
  • ../lexical/packages/lexical/src/caret/__tests__/unit/docs-traversals.test.ts:163 test: via generator
  • ../lexical/packages/lexical/src/caret/__tests__/unit/docs-traversals.test.ts:214 test: via CaretRange
  • ../lexical/packages/lexical/src/caret/__tests__/unit/docs-traversals.test.ts:249 describe: $iterNodesDepthFirst
  • ../lexical/packages/lexical/src/caret/__tests__/unit/docs-traversals.test.ts:269 test: includes only wholly included nodes
  • ../lexical/packages/lexical/src/caret/__tests__/unit/docs-traversals.test.ts:297 test: full traversal

`../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:35 describe: LexicalElementNode tests
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:100 describe: exportJSON()
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:101 test: should return and object conforming to the expected schema
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:120 test: serializes only the first TextNode style and format
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:163 test: serializes the same way without a root element
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:181 describe: getChildren()
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:182 test: no children
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:191 test: some children
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:199 describe: getAllTextNodes()
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:200 test: basic
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:209 test: nested
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:240 describe: getFirstChild()
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:241 test: basic
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:252 test: empty
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:260 describe: getLastChild()
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:261 test: basic
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:272 test: empty
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:280 describe: getTextContent()
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:281 test: basic
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:287 test: empty
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:294 test: nested
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:323 describe: getTextContentSize()
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:324 test: basic
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:332 test: child node getTextContentSize() can be overridden and is then reflected when calling the same method on parent node
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:344 describe: splice
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:451 it: Plain text: ${testCase.name}
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:594 it: Nested elements: ${testCase.name}
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:657 it: Running transforms for inserted nodes, their previous siblings and new siblings
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:704 describe: getDOMSlot tests
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:755 test: can create wrapper
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:789 test: DOM selection uses getDOMSlot element for element selections
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:812 describe: indexPath
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:813 test: no path
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:817 test: only child
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:823 test: nested child
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalElementNode.test.tsx:831 test: nested child with siblings

`../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalGC.test.tsx`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalGC.test.tsx:25 describe: LexicalGC tests
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalGC.test.tsx:27 test: RootNode.clear() with a child and subchild
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalGC.test.tsx:41 test: RootNode.clear() with a child and three subchildren
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalGC.test.tsx:59 test: RootNode.clear() with a child and three subchildren, subchild ${i} removed first
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalGC.test.tsx:95 test: RootNode.clear() with a complex tree, nodes ${removeKeys.toString()} removed first

`../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalLineBreakNode.test.ts`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalLineBreakNode.test.ts:14 describe: LexicalLineBreakNode tests
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalLineBreakNode.test.ts:16 test: LineBreakNode.constructor
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalLineBreakNode.test.ts:27 test: LineBreakNode.exportJSON() should return and object conforming to the expected schema
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalLineBreakNode.test.ts:44 test: LineBreakNode.createDOM()
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalLineBreakNode.test.ts:55 test: LineBreakNode.updateDOM()
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalLineBreakNode.test.ts:65 test: LineBreakNode.$isLineBreakNode()

`../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalParagraphNode.test.ts`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalParagraphNode.test.ts:27 describe: LexicalParagraphNode tests
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalParagraphNode.test.ts:29 test: ParagraphNode.constructor
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalParagraphNode.test.ts:41 test: ParagraphNode.exportJSON() should return and object conforming to the expected schema
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalParagraphNode.test.ts:64 test: ParagraphNode.createDOM()
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalParagraphNode.test.ts:82 test: ParagraphNode.updateDOM()
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalParagraphNode.test.ts:103 test: ParagraphNode.insertNewAfter()
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalParagraphNode.test.ts:128 test: $createParagraphNode()
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalParagraphNode.test.ts:141 test: $isParagraphNode()
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalParagraphNode.test.ts:151 test: ParagraphNode.importDOM handles both CSS text-align and legacy align attribute

`../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalRootNode.test.ts`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalRootNode.test.ts:30 describe: LexicalRootNode tests
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalRootNode.test.ts:61 test: RootNode.constructor
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalRootNode.test.ts:71 test: RootNode.exportJSON() should return and object conforming to the expected schema
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalRootNode.test.ts:92 test: RootNode.clone()
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalRootNode.test.ts:99 test: RootNode.createDOM()
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalRootNode.test.ts:104 test: RootNode.updateDOM()
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalRootNode.test.ts:109 test: RootNode.isAttached()
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalRootNode.test.ts:113 test: RootNode.isRootNode()
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalRootNode.test.ts:117 test: Cached getTextContent with decorators
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalRootNode.test.ts:134 test: RootNode.clear() to handle selection update
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalRootNode.test.ts:164 test: RootNode is selected when its selected child is removed
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalRootNode.test.ts:194 test: RootNode is not selected when all children are removed with no selection
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalRootNode.test.ts:216 test: RootNode __cachedText incremental update #8096
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalRootNode.test.ts:239 test: RootNode __cachedText
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalRootNode.test.ts:292 test: RootNode __cachedText (empty paragraph)
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalRootNode.test.ts:302 test: RootNode __cachedText (inlines)

`../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTabNode.test.tsx`

category: portable
family: clipboard-paste / browser-engine
target: .tmp/slate-v2/packages/slate/test/clipboard-contract.ts; .tmp/slate-v2/packages/slate-dom/test/clipboard-boundary.test.ts; .tmp/slate-v2/playwright/integration/examples/paste-html.test.ts; .tmp/slate-v2/playwright/stress/generated-editing.test.ts

  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTabNode.test.tsx:44 describe: LexicalTabNode tests
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTabNode.test.tsx:56 test: can paste plain text with tabs and newlines in plain text
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTabNode.test.tsx:70 test: can paste plain text with tabs and newlines in rich text
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTabNode.test.tsx:85 test: can paste HTML with tabs and new lines #4429
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTabNode.test.tsx:104 test: can paste HTML with tabs and new lines (2)
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTabNode.test.tsx:122 test: element indents when selection at the start of the block
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTabNode.test.tsx:140 test: elements indent when selection spans across multiple blocks
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTabNode.test.tsx:175 test: element tabs when selection is not at the start (1)
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTabNode.test.tsx:191 test: element tabs when selection is not at the start (2)
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTabNode.test.tsx:210 test: element tabs when selection is not at the start (3)
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTabNode.test.tsx:229 test: elements tabs when selection is not at the start and overlaps another tab
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTabNode.test.tsx:252 test: can type between two (leaf nodes) canInsertBeforeAfter false
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTabNode.test.tsx:266 test: can be serialized and deserialized
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTabNode.test.tsx:291 describe: TabNode at selection boundaries with normal TextNode sibling (#7602)
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTabNode.test.tsx:298 test: dynamic or multiline title

`../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTextNode.test.tsx`

category: portable
family: portable editor behavior
target: .tmp/slate-v2/packages/slate/test; add focused browser proof only when behavior depends on DOM/runtime transport

  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTextNode.test.tsx:74 describe: LexicalTextNode tests
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTextNode.test.tsx:133 describe: exportJSON()
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTextNode.test.tsx:134 test: should return and object conforming to the expected schema
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTextNode.test.tsx:156 describe: root.getTextContent()
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTextNode.test.tsx:157 test: writable nodes
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTextNode.test.tsx:185 test: prepend node
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTextNode.test.tsx:205 describe: setTextContent()
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTextNode.test.tsx:206 test: writable nodes
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTextNode.test.tsx:232 test: getFormatFlags(${formatFlag})
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTextNode.test.tsx:248 test: predicate for ${formatFlag}
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTextNode.test.tsx:260 test: toggling for ${formatFlag}
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTextNode.test.tsx:284 test: setting subscript clears superscript
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTextNode.test.tsx:297 test: setting superscript clears subscript
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTextNode.test.tsx:310 test: clearing subscript does not set superscript
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTextNode.test.tsx:323 test: clearing superscript does not set subscript
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTextNode.test.tsx:336 test: capitalization formats are mutually exclusive
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTextNode.test.tsx:362 test: selectPrevious()
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTextNode.test.tsx:384 test: selectNext()
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTextNode.test.tsx:409 describe: select()
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTextNode.test.tsx:454 describe: splitText()
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTextNode.test.tsx:455 test: convert segmented node into plain text
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTextNode.test.tsx:499 test: splitText moves composition key to last node
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTextNode.test.tsx:627 test: with detached parent
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTextNode.test.tsx:639 test: copies state to all nodes
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTextNode.test.tsx:662 test: copies state to all nodes (segmented)
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTextNode.test.tsx:680 describe: createDOM()
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTextNode.test.tsx:792 describe: has parent node
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTextNode.test.tsx:813 describe: updateDOM()
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTextNode.test.tsx:914 describe: exportDOM()
  • ../lexical/packages/lexical/src/nodes/__tests__/unit/LexicalTextNode.test.tsx:965 test: mergeWithSibling

Editor Test Harvester Portabletext Test Index (`docs/editor-test-harvester/portabletext/test-index.md`)

Portable Text Portable Test Index

Source: ../portabletext
Generated: 2026-05-29
Indexed runnable portable/portable-mixed rows: 200
Line/name anchors: 1944

This index records every runnable portable and portable-mixed source file with extracted test names or feature/scenario names. It does not copy test bodies, fixtures, helpers, snapshots, or expected output blobs.

# Source Category Family Anchor count Extracted names
1 packages/editor/gherkin-tests/block-objects.test.ts portable PT-H03 13 packages/editor/gherkin-spec/block-objects.feature:2 Feature: Block Objectspackages/editor/gherkin-spec/block-objects.feature:8 Scenario: Pressing ArrowUp on a lonely imagepackages/editor/gherkin-spec/block-objects.feature:18 Scenario: Pressing ArrowDown on a lonely imagepackages/editor/gherkin-spec/block-objects.feature:28 Scenario: Pressing ArrowDown on image at the bottompackages/editor/gherkin-spec/block-objects.feature:39 Scenario: ArrowRight before an image selects itpackages/editor/gherkin-spec/block-objects.feature:50 Scenario: ArrowLeft after an image selects itpackages/editor/gherkin-spec/block-objects.feature:61 Scenario: Pressing Delete before an imagepackages/editor/gherkin-spec/block-objects.feature:77 Scenario: Pressing Delete in an empty paragraph before an imagepackages/editor/gherkin-spec/block-objects.feature:95 Scenario: Pressing Backspace after an imagepackages/editor/gherkin-spec/block-objects.feature:111 Scenario: Pressing Backspace in an empty paragraph after an imagepackages/editor/gherkin-spec/block-objects.feature:123 Scenario Outline: Deleting a lonely imagepackages/editor/gherkin-spec/block-objects.feature:135 Scenario Outline: Deleting an image with text abovepackages/editor/gherkin-spec/block-objects.feature:154 Scenario Outline: Deleting an image with text below
2 packages/editor/gherkin-tests/delete.test.ts portable PT-H05 15 packages/editor/gherkin-spec/delete.feature:1 Feature: Deletepackages/editor/gherkin-spec/delete.feature:6 Scenario Outline: Deleting expanded selectionpackages/editor/gherkin-spec/delete.feature:19 Scenario Outline: Deleting wordpackages/editor/gherkin-spec/delete.feature:35 Scenario Outline: Deleting code points in complex scriptspackages/editor/gherkin-spec/delete.feature:51 Scenario Outline: Deleting line backwardpackages/editor/gherkin-spec/delete.feature:66 Scenario: Deleting line backward at start of block merges blockspackages/editor/gherkin-spec/delete.feature:83 Scenario: Cutting selected textpackages/editor/gherkin-spec/delete.feature:92 Scenario: Cutting across blockspackages/editor/gherkin-spec/delete.feature:109 Scenario: Deleting word backward at block boundary merges blockspackages/editor/gherkin-spec/delete.feature:126 Scenario: Deleting word forward at block boundary merges blockspackages/editor/gherkin-spec/delete.feature:143 Scenario: Cutting with collapsed selection is a no-oppackages/editor/gherkin-spec/delete.feature:150 Scenario: Deleting line backward in empty blockpackages/editor/gherkin-spec/delete.feature:156 Scenario: Deleting line backward only affects current blockpackages/editor/gherkin-spec/delete.feature:177 Scenario Outline: Merging blocks preserves markspackages/editor/gherkin-spec/delete.feature:194 Scenario Outline: Merging blocks triggers span normalization
3 packages/editor/gherkin-tests/inline-objects.test.ts portable PT-H03 7 packages/editor/gherkin-spec/inline-objects.feature:2 Feature: Inline Objectspackages/editor/gherkin-spec/inline-objects.feature:8 Scenario: Writing after inserting an inline objectpackages/editor/gherkin-spec/inline-objects.feature:17 Scenario: Pressing Delete before an inline objectpackages/editor/gherkin-spec/inline-objects.feature:24 Scenario: Pressing Backspace after an inline objectpackages/editor/gherkin-spec/inline-objects.feature:30 Scenario: Adding a decorator across an inline objectpackages/editor/gherkin-spec/inline-objects.feature:36 Scenario: Adding an annotation across an inline objectpackages/editor/gherkin-spec/inline-objects.feature:45 Scenario: Removing an annotation across an inline block
4 packages/editor/gherkin-tests/insert.block.test.ts portable PT-H04 25 packages/editor/gherkin-spec/insert.block.feature:1 Feature: Insert Blockpackages/editor/gherkin-spec/insert.block.feature:6 Scenario Outline: Inserting block object on an empty editor without selecting itpackages/editor/gherkin-spec/insert.block.feature:17 Scenario Outline: Inserting block object on an empty editor and selecting itpackages/editor/gherkin-spec/insert.block.feature:32 Scenario Outline: Inserting block object on an empty text blockpackages/editor/gherkin-spec/insert.block.feature:52 Scenario Outline: Inserting block object on empty headingpackages/editor/gherkin-spec/insert.block.feature:63 Scenario Outline: Inserting block object on empty list itempackages/editor/gherkin-spec/insert.block.feature:74 Scenario Outline: Inserting and selecting block object on text selectionpackages/editor/gherkin-spec/insert.block.feature:102 Scenario Outline: Inserting block object on text selection without selecting itpackages/editor/gherkin-spec/insert.block.feature:122 Scenario Outline: Inserting and selecting block object on cross-block selectionpackages/editor/gherkin-spec/insert.block.feature:146 Scenario Outline: Inserting a block object on a cross-block selection without selecting itpackages/editor/gherkin-spec/insert.block.feature:162 Scenario Outline: Inserting text block on an empty editorpackages/editor/gherkin-spec/insert.block.feature:173 Scenario Outline: Inserting and selecting text block on an empty editorpackages/editor/gherkin-spec/insert.block.feature:191 Scenario Outline: Inserting and selecting text block on an empty selected editorpackages/editor/gherkin-spec/insert.block.feature:209 Scenario Outline: Inserting block object on block objectpackages/editor/gherkin-spec/insert.block.feature:233 Scenario Outline: Inserting and selecting block object on block objectpackages/editor/gherkin-spec/insert.block.feature:250 Scenario Outline: Inserting block object on block objectspackages/editor/gherkin-spec/insert.block.feature:272 Scenario Outline: Inserting block object on text blockpackages/editor/gherkin-spec/insert.block.feature:294 Scenario Outline: Inserting text block on block objectpackages/editor/gherkin-spec/insert.block.feature:306 Scenario Outline: Inserting text block on text blockpackages/editor/gherkin-spec/insert.block.feature:325 Scenario Outline: Inserting and selecting text block on text blockpackages/editor/gherkin-spec/insert.block.feature:363 Scenario Outline: Inserting text block on text selectionpackages/editor/gherkin-spec/insert.block.feature:392 Scenario Outline: Inserting text block on cross-block text selectionpackages/editor/gherkin-spec/insert.block.feature:424 Scenario Outline: Inserting inline object on block objectpackages/editor/gherkin-spec/insert.block.feature:435 Scenario Outline: Inserting block object on inline objectpackages/editor/gherkin-spec/insert.block.feature:446 Scenario Outline: Inserting text block on inline object
5 packages/editor/gherkin-tests/insert.blocks.test.ts portable PT-H04 8 packages/editor/gherkin-spec/insert.blocks.feature:1 Feature: Insert Blockspackages/editor/gherkin-spec/insert.blocks.feature:6 Scenario Outline: Inserting blocks on an empty editorpackages/editor/gherkin-spec/insert.blocks.feature:23 Scenario Outline: Inserting block objects an empty editorpackages/editor/gherkin-spec/insert.blocks.feature:33 Scenario Outline: Inserting blocks on a block objectpackages/editor/gherkin-spec/insert.blocks.feature:42 Scenario: Inserting text blocks on a block objectpackages/editor/gherkin-spec/insert.blocks.feature:52 Scenario Outline: Inserting blocks on a text blockpackages/editor/gherkin-spec/insert.blocks.feature:81 Scenario: Pasting text blocks between two text blockspackages/editor/gherkin-spec/insert.blocks.feature:96 Scenario Outline: Inserting text block with annotation
6 packages/editor/gherkin-tests/insert.break.test.ts portable PT-H04 6 packages/editor/gherkin-spec/insert.break.feature:1 Feature: Insert Breakpackages/editor/gherkin-spec/insert.break.feature:6 Scenario Outline: Breaking text blockpackages/editor/gherkin-spec/insert.break.feature:21 Scenario Outline: Breaking second text blockpackages/editor/gherkin-spec/insert.break.feature:43 Scenario: Breaking before inline objectpackages/editor/gherkin-spec/insert.break.feature:55 Scenario: Pressing Enter when selecting the entire contentpackages/editor/gherkin-spec/insert.break.feature:74 Scenario: Pressing Enter on a block object
7 packages/editor/gherkin-tests/insert.child.test.ts portable PT-H04 6 packages/editor/gherkin-spec/insert.child.feature:1 Feature: Insert Childpackages/editor/gherkin-spec/insert.child.feature:6 Scenario Outline: Inserting span on spanpackages/editor/gherkin-spec/insert.child.feature:23 Scenario: Inserting inline object in spanpackages/editor/gherkin-spec/insert.child.feature:35 Scenario: Inserting span on block objectpackages/editor/gherkin-spec/insert.child.feature:51 Scenario: Inserting span on block object without selectionpackages/editor/gherkin-spec/insert.child.feature:67 Scenario: Inserting span on text block without selection
8 packages/editor/gherkin-tests/insert.text.test.ts portable PT-H04 2 packages/editor/gherkin-spec/insert.text.feature:1 Feature: Insert textpackages/editor/gherkin-spec/insert.text.feature:6 Scenario Outline: Inserting text on expanded selection
9 packages/editor/gherkin-tests/paste.test.ts portable-mixed PT-H06 4 packages/editor/gherkin-spec/paste.feature:1 Feature: Pastepackages/editor/gherkin-spec/paste.feature:6 Scenario Outline: Pasting text block into a text blockpackages/editor/gherkin-spec/paste.feature:32 Scenario: Pasting text/plain into a text blockpackages/editor/gherkin-spec/paste.feature:40 Scenario: Pasting text/html into a text block
10 packages/editor/gherkin-tests/removing-blocks.test.ts portable PT-H05 3 packages/editor/gherkin-spec/removing-blocks.feature:1 Feature: Removing Blockspackages/editor/gherkin-spec/removing-blocks.feature:7 Scenario: Pressing Delete in empty block with text belowpackages/editor/gherkin-spec/removing-blocks.feature:28 Scenario: Pressing Backspace in empty block with text below
11 packages/editor/gherkin-tests/selection-adjustment.test.ts portable PT-H01 4 packages/editor/gherkin-spec/selection-adjustment.feature:1 Feature: Selection Adjustmentpackages/editor/gherkin-spec/selection-adjustment.feature:7 Scenario: Selection is kept if another editor inserts a line abovepackages/editor/gherkin-spec/selection-adjustment.feature:16 Scenario: Selection is kept if another editor deletes the line abovepackages/editor/gherkin-spec/selection-adjustment.feature:25 Scenario: Selection is kept if another editor backspace-deletes empty lines above
12 packages/editor/gherkin-tests/selection.test.ts portable PT-H01 5 packages/editor/gherkin-spec/selection.feature:1 Feature: Selectionpackages/editor/gherkin-spec/selection.feature:6 Scenario: Expanding collapsed selection backwards from empty linepackages/editor/gherkin-spec/selection.feature:14 Scenario: Expanding selection backwards, then forwardspackages/editor/gherkin-spec/selection.feature:30 Scenario: Reducing hanging selectionpackages/editor/gherkin-spec/selection.feature:46 Scenario: Reducing selection hanging onto empty line
13 packages/editor/gherkin-tests/splitting-blocks.test.ts portable PT-H04 19 packages/editor/gherkin-spec/splitting-blocks.feature:1 Feature: Splitting Blockspackages/editor/gherkin-spec/splitting-blocks.feature:7 Scenario: Splitting block at the beginningpackages/editor/gherkin-spec/splitting-blocks.feature:17 Scenario: Splitting block in the middlepackages/editor/gherkin-spec/splitting-blocks.feature:31 Scenario: Splitting block at the endpackages/editor/gherkin-spec/splitting-blocks.feature:45 Scenario: Splitting empty block creates a new block belowpackages/editor/gherkin-spec/splitting-blocks.feature:57 Scenario: Soft-splitting block at the beginningpackages/editor/gherkin-spec/splitting-blocks.feature:67 Scenario: Soft-splitting block in the middlepackages/editor/gherkin-spec/splitting-blocks.feature:77 Scenario: Soft-splitting block at the endpackages/editor/gherkin-spec/splitting-blocks.feature:87 Scenario: Splitting styled block at t