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');`); + }); });