blob: 0c9d2613793f64b5c98822072b20d7a3ae822d0e [file] [log] [blame]
(async function(testRunner) {
const {session, dp} = await testRunner.startBlank(`Tests Input.dispatchKeyEvent commands option.`);
await session.evaluate(`
const textarea = document.createElement('textarea');
document.body.appendChild(textarea);
textarea.value = 'hello world';
textarea.focus();
function selectedText() {
const textarea = document.querySelector('textarea');
return textarea.value + '\\n' + ' '.repeat(textarea.selectionStart) + '~'.repeat(textarea.selectionEnd-textarea.selectionStart) + '^'
}
`);
async function dumpErrorAndLogs(options) {
testRunner.log('');
testRunner.log(`Sending "${options.key}"`);
if (options.commands && options.commands.length)
testRunner.log(`with commands ${JSON.stringify(options.commands)}`)
const message = await dp.Input.dispatchKeyEvent(options);
if (message.error)
testRunner.log('Error: ' + message.error.message);
testRunner.log(await session.evaluate(`selectedText()`));
}
await dumpErrorAndLogs({
type: 'keyDown',
key: 'b',
modifiers: 2,
commands: ['selectAll'],
windowsVirtualKeyCode: 66,
code: 'KeyB'
});
await dumpErrorAndLogs({
type: 'keyDown',
windowsVirtualKeyCode: 8,
key: 'Backspace',
code: 'Backspace'
});
await dumpErrorAndLogs({
type: 'keyDown',
key: 'c',
text: 'c',
unmodifiedText: 'c',
commands: [],
windowsVirtualKeyCode: 67,
code: 'KeyC'
});
testRunner.log('');
testRunner.log('Canceling the next keydown');
await session.evaluate(`
window.addEventListener('keydown', event => event.preventDefault(), {once: true});
`);
await dumpErrorAndLogs({
type: 'keyDown',
key: 'd',
modifiers: 2,
commands: ['selectAll'],
windowsVirtualKeyCode: 67,
code: 'KeyC'
});
await dumpErrorAndLogs({
type: 'keyDown',
key: 'e',
text: 'e',
unmodifiedText: 'e',
commands: [],
windowsVirtualKeyCode: 68,
code: 'KeyE'
});
testRunner.completeTest();
});