diff --git a/packages/playwright-core/src/server/macEditingCommands.ts b/packages/playwright-core/src/server/macEditingCommands.ts index d7867da029c621..8f4c496e8accc9 100644 --- a/packages/playwright-core/src/server/macEditingCommands.ts +++ b/packages/playwright-core/src/server/macEditingCommands.ts @@ -126,4 +126,6 @@ export const macEditingCommands: {[key: string]: string|string[]} = { 'Shift+Meta+ArrowRight': 'moveToRightEndOfLineAndModifySelection:', 'Meta+KeyA': 'selectAll:', + 'Meta+KeyC': 'copy:', + 'Meta+KeyV': 'paste:', }; diff --git a/tests/page/page-keyboard.spec.ts b/tests/page/page-keyboard.spec.ts index 2edf44397672c8..c2070effc85215 100644 --- a/tests/page/page-keyboard.spec.ts +++ b/tests/page/page-keyboard.spec.ts @@ -464,6 +464,16 @@ it('should dispatch a click event on a button when Enter gets pressed', async ({ expect((await actual.jsonValue()).clicked).toBe(true); }); +it('should support simple copy-pasting', async ({ page }) => { + await page.setContent(`
123
`); + await page.focus('div'); + await page.keyboard.press('Meta+KeyA'); + await page.keyboard.press('Meta+KeyC'); + await page.keyboard.press('Meta+KeyV'); + await page.keyboard.press('Meta+KeyV'); + expect(await page.evaluate(() => document.querySelector('div').textContent)).toBe('123123'); +}); + async function captureLastKeydown(page) { const lastEvent = await page.evaluateHandle(() => { const lastEvent = {