Skip to content

Commit

Permalink
chore(bidi): propertly dispatch ControlRight key event (#34246)
Browse files Browse the repository at this point in the history
  • Loading branch information
yury-s authored Jan 8, 2025
1 parent 8092255 commit 6fb6282
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 5 deletions.
2 changes: 1 addition & 1 deletion packages/playwright-core/src/server/bidi/bidiInput.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ export class RawKeyboardImpl implements input.RawKeyboard {

async keydown(modifiers: Set<types.KeyboardModifier>, code: string, keyCode: number, keyCodeWithoutLocation: number, key: string, location: number, autoRepeat: boolean, text: string | undefined): Promise<void> {
const actions: bidi.Input.KeySourceAction[] = [];
actions.push({ type: 'keyDown', value: getBidiKeyValue(key) });
actions.push({ type: 'keyDown', value: getBidiKeyValue(code) });
// TODO: add modifiers?
await this._performActions(actions);
}
Expand Down
16 changes: 12 additions & 4 deletions tests/page/page-keyboard.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -256,16 +256,24 @@ it('should specify location', async ({ page, server }) => {
const textarea = await page.$('textarea');

await textarea.press('Digit5');
expect(await lastEvent.evaluate(e => e.location)).toBe(0);
expect.soft(await lastEvent.evaluate(e => e.location)).toBe(0);
expect.soft(await lastEvent.evaluate(e => e.key)).toBe('5');
expect.soft(await lastEvent.evaluate(e => e.code)).toBe('Digit5');

await textarea.press('ControlLeft');
expect(await lastEvent.evaluate(e => e.location)).toBe(1);
expect.soft(await lastEvent.evaluate(e => e.location)).toBe(1);
expect.soft(await lastEvent.evaluate(e => e.key)).toBe('Control');
expect.soft(await lastEvent.evaluate(e => e.code)).toBe('ControlLeft');

await textarea.press('ControlRight');
expect(await lastEvent.evaluate(e => e.location)).toBe(2);
expect.soft(await lastEvent.evaluate(e => e.location)).toBe(2);
expect.soft(await lastEvent.evaluate(e => e.key)).toBe('Control');
expect.soft(await lastEvent.evaluate(e => e.code)).toBe('ControlRight');

await textarea.press('NumpadSubtract');
expect(await lastEvent.evaluate(e => e.location)).toBe(3);
expect.soft(await lastEvent.evaluate(e => e.location)).toBe(3);
expect.soft(await lastEvent.evaluate(e => e.key)).toBe('-');
expect.soft(await lastEvent.evaluate(e => e.code)).toBe('NumpadSubtract');
});

it('should press Enter', async ({ page, server }) => {
Expand Down

0 comments on commit 6fb6282

Please sign in to comment.