Explorar el Código

test(web): synchronize composer selection before deletion

07akioni hace 2 semanas
padre
commit
6db9466c4e
Se han modificado 1 ficheros con 4 adiciones y 4 borrados
  1. 4 4
      apps/web/tests/composer-draft-scroll.e2e.ts

+ 4 - 4
apps/web/tests/composer-draft-scroll.e2e.ts

@@ -346,10 +346,8 @@ describe('web e2e: composer draft scrolling', () => {
       const m = await measureScrollport(page)
       return m.scrollTop === m.scrollMax
     }, { timeout: 10_000 }).toBe(true)
-    // The caret at the draft's end, then the trailing lines removed one at a
-    // time; the box must stay at the end, where the caret is. Select-all plus
-    // ArrowRight lands the caret on the document end; the collapse has to be
-    // observable before Backspace, or the whole selection is what gets deleted.
+    // Chromium updates the DOM selection before delivering selectionchange
+    // to Lexical. Deliver it before deletion so the editor sees the end caret.
     const input = surface(page)
     await input.click()
     await page.keyboard.press('ControlOrMeta+KeyA')
@@ -358,6 +356,7 @@ describe('web e2e: composer draft scrolling', () => {
       async () => page.evaluate(() => window.getSelection()?.isCollapsed ?? false),
       { timeout: 10_000 },
     ).toBe(true)
+    await input.evaluate(el => el.ownerDocument.dispatchEvent(new Event('selectionchange')))
     await page.keyboard.press('Backspace')
     await expect.poll(async () => (await measureScrollport(page)).overflows, { timeout: 10_000 }).toBe(true)
     await expect.poll(async () => {
@@ -372,6 +371,7 @@ describe('web e2e: composer draft scrolling', () => {
     // lines and delete them at once.
     await page.keyboard.press('Shift+ArrowUp')
     await page.keyboard.press('Shift+ArrowUp')
+    await input.evaluate(el => el.ownerDocument.dispatchEvent(new Event('selectionchange')))
     await page.keyboard.press('Delete')
     await expect.poll(async () => {
       const m = await measureScrollport(page)