From 80bc532874bd011ee568c541df24aa8739265c3f Mon Sep 17 00:00:00 2001 From: Andrey Lushnikov Date: Mon, 18 Apr 2022 23:22:52 -0600 Subject: [PATCH] fix: support undo/redo editing commands (#13606) Fixes #13601 --- .../src/server/macEditingCommands.ts | 2 ++ tests/page/page-keyboard.spec.ts | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/packages/playwright-core/src/server/macEditingCommands.ts b/packages/playwright-core/src/server/macEditingCommands.ts index 8f4c496e8a..c6de45d462 100644 --- a/packages/playwright-core/src/server/macEditingCommands.ts +++ b/packages/playwright-core/src/server/macEditingCommands.ts @@ -128,4 +128,6 @@ export const macEditingCommands: {[key: string]: string|string[]} = { 'Meta+KeyA': 'selectAll:', 'Meta+KeyC': 'copy:', 'Meta+KeyV': 'paste:', + 'Meta+KeyZ': 'undo:', + 'Shift+Meta+KeyZ': 'redo:', }; diff --git a/tests/page/page-keyboard.spec.ts b/tests/page/page-keyboard.spec.ts index e0f45dd23d..32a4134ca3 100644 --- a/tests/page/page-keyboard.spec.ts +++ b/tests/page/page-keyboard.spec.ts @@ -476,6 +476,20 @@ it('should support simple copy-pasting', async ({ page, isMac, browserName }) => expect(await page.evaluate(() => document.querySelector('div').textContent)).toBe('123123'); }); +it('should support undo-redo', async ({ page, isMac, browserName, isLinux }) => { + it.fixme(browserName === 'webkit' && isLinux, 'https://github.com/microsoft/playwright/issues/12000'); + const modifier = isMac ? 'Meta' : 'Control'; + await page.setContent(`
`); + const div = page.locator('div'); + await expect(div).toHaveText(''); + await div.type('123'); + await expect(div).toHaveText('123'); + await page.keyboard.press(`${modifier}+KeyZ`); + await expect(div).toHaveText(''); + await page.keyboard.press(`Shift+${modifier}+KeyZ`); + await expect(div).toHaveText('123'); +}); + it('should type repeatedly in contenteditable in shadow dom', async ({ page }) => { it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/12941' });