From b3b87f6c694710c15e021866f5f542a1f82c4186 Mon Sep 17 00:00:00 2001 From: Joel Einbinder Date: Mon, 12 Apr 2021 09:00:29 -0700 Subject: [PATCH] fix(codegen): ignore AltGraph when typing (#6086) --- src/server/supplements/injected/recorder.ts | 4 ++-- tests/cli/cli-codegen-1.spec.ts | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/server/supplements/injected/recorder.ts b/src/server/supplements/injected/recorder.ts index 081a154d3e..47562d6c60 100644 --- a/src/server/supplements/injected/recorder.ts +++ b/src/server/supplements/injected/recorder.ts @@ -492,8 +492,8 @@ export class Recorder { } private _shouldGenerateKeyPressFor(event: KeyboardEvent): boolean { - // Backspace, Delete are changing input, will handle it there. - if (['Backspace', 'Delete'].includes(event.key)) + // Backspace, Delete, AltGraph are changing input, will handle it there. + if (['Backspace', 'Delete', 'AltGraph'].includes(event.key)) return false; // Ignore the QWERTZ shortcut for creating a at sign on MacOS if (event.key === '@' && event.code === 'KeyL') diff --git a/tests/cli/cli-codegen-1.spec.ts b/tests/cli/cli-codegen-1.spec.ts index cb2e39ac0a..227655aabc 100644 --- a/tests/cli/cli-codegen-1.spec.ts +++ b/tests/cli/cli-codegen-1.spec.ts @@ -610,4 +610,18 @@ await Task.WhenAll( expect(page.url()).toContain('about:blank#foo'); }); + + test('should ignore AltGraph', async ({ openRecorder, isFirefox }, testInfo) => { + testInfo.skip(isFirefox, 'The TextInputProcessor in Firefox does not work with AltGraph.'); + const recorder = await openRecorder(); + await recorder.setContentAndWait(``); + + await recorder.page.type('input', 'playwright'); + await recorder.page.keyboard.press('AltGraph'); + await recorder.page.keyboard.insertText('@'); + await recorder.page.keyboard.type('example.com'); + await recorder.waitForOutput('', 'example.com'); + expect(recorder.sources().get('').text).not.toContain(`await page.press('input', 'AltGraph');`); + expect(recorder.sources().get('').text).toContain(`await page.fill('input', 'playwright@example.com');`); + }); });