[Breaking Change][lexical][lexical-extension][lexical-rich-text][lexical-plain-text] Feature: Move triple click selection handling to NormalizeTripleClickSelectionExtension#8520
Merged
Conversation
…cal-plain-text] Feature: Move triple click selection handling to NormalizeTripleClickSelectionExtension
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Logs Node inspector URL, env vars, and timing of two consecutive
page.pause() calls to /tmp/lexical-pause-probe.log. If either pause
returns in under 200ms, that confirms the debugger isn't engaging.
Run:
pnpm exec playwright test --debug --project=chromium \
packages/lexical-playground/__tests__/regression/temp-pause-probe.spec.mjs
Click Resume in the Inspector after each pause, then share the log.
…ge.pause() works under --debug initialize() was firing setViewportSize without awaiting it. Under --debug, Playwright's Debugger pauses on the first action with pause:true metainfo (which setViewportSize has) and stores it in _pausedCall. Because the test code never awaited the call, _pausedCall stayed set indefinitely, and every subsequent page.pause() hit the "already paused, bail" early-return in Debugger._pause and resolved immediately. Awaiting the call lets the initial pause complete normally before the test reaches its own page.pause(). Also remove the two temp probe spec files that were used to bisect this.
…lize() The per-test page.setViewportSize() in initialize() was the source of the page.pause() bug under --debug (the unawaited version poisoned Debugger._pausedCall). Setting viewport at the playwright config use level applies it at context creation, so we no longer need to call setViewportSize per test. IS_COLLAB still determines width since it's fixed per run via E2E_EDITOR_MODE.
…in tests Un-awaited page.setViewportSize calls have pause:true metainfo, so under --debug they fire the channel call, hit Debugger._pause, and leave Debugger._pausedCall set indefinitely. That causes every later page.pause() to bail at the "already paused" early-return in _pause. Awaiting the call lets the pause complete normally before the test proceeds. Affects Tables.spec and one regression spec.
… calls An un-awaited Playwright call with pause:true metainfo (setViewportSize, goto, click, keyboard.*, mouse.*, etc.) leaves Debugger._pausedCall set indefinitely under --debug, which silently breaks page.pause(). Adds a no-restricted-syntax rule scoped to lexical-playground __tests__ that catches the common offenders by AST so we can't reintroduce the bug.
Retrying after a pause during interactive debugging is just confusing. --debug sets PWDEBUG=1 before the config loads, so we read it here to short-circuit retries to 0.
… per-test setViewportSize
The 23 Tables/regression calls to setViewportSize({width: 3000}) were
all gated on isCollab with the same "contextual menu positioning" note.
Bumping the collab default viewport to 3000 in playwright.config.mjs
covers all of them. Also drops the redundant setViewportSize in
Images.spec ("Select image, then select text") since its height matched
the default and 1250/3000 already give enough horizontal room.
The only remaining setViewportSize is in AutoScroll's "Pressing Enter
scrolls new caret above the on-screen keyboard" test, which needs a
600x400 mobile-shaped viewport that can't come from the default.
…ug-jcIeH' into triple-click-overflow-ext
1 task
zurfyx
approved these changes
May 19, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Change the logic of the triple-click selection workaround to precisely address the situation where it will jump over a LineBreakNode and into the start of the next TextNode and/or next ElementNode. The previous workaround would always select the entire containing block of the triple-click.
Moves the logic to a NormalizeTripleClickSelectionExtension extension that RichTextExtension and PlainTextExtension depend on.
Closes #7592
Closes #8490 (a different attempt that doesn't quite address things properly)
Closes #8518 (a more limited in scope draft of this, with no extension)
Test plan
New e2e test coverage