Skip to content

Commit

Permalink
Reformat to satisfy linter
Browse files Browse the repository at this point in the history
  • Loading branch information
jugglinmike committed Sep 18, 2024
1 parent 48a20d8 commit 937312a
Showing 1 changed file with 219 additions and 38 deletions.
257 changes: 219 additions & 38 deletions test/test-macos-key-press.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ const documentHTML = `<!DOCTYPE html>
</html>`;
const documentURL = `data:text/html;base64,${btoa(documentHTML)}`;

const readLog = async (driver) => {
const readLog = async driver => {
const raw = await driver.executeScript('return document.querySelector("#log").innerText');
return raw.trim().split('\n');
};
Expand All @@ -46,18 +46,14 @@ const keyTestDriverRef = (getDriver, title, keyCodes, modifiers, expected) => {

await driver.navigate().to(documentURL);

await runScript(
renderScript({kind: KeyCodeCommandKind, keyCodes, modifiers})
);
await runScript(renderScript({ kind: KeyCodeCommandKind, keyCodes, modifiers }));

// It is possible for the document-query operation (provided by `readLog`)
// to complete before the browser has finished interpreting key presses
// initiated by `runScript`. Press the "x" key and use its presence in the
// log as a signal to verify that the prior sequence has been fully
// recognized by the browser.
await runScript(
renderScript({kind: KeyCodeCommandKind, keyCodes: ['x'], modifiers: []})
);
await runScript(renderScript({ kind: KeyCodeCommandKind, keyCodes: ['x'], modifiers: [] }));

let log;
for (log = []; !isDone(log); log = await readLog(driver)) {}
Expand All @@ -69,9 +65,8 @@ const keyTestDriverRef = (getDriver, title, keyCodes, modifiers, expected) => {
});
};

const isDone = (log) => {
return log[log.length - 2] === 'keydown:x' &&
log[log.length - 1] === 'keyup:x';
const isDone = log => {
return log[log.length - 2] === 'keydown:x' && log[log.length - 1] === 'keyup:x';
};

suite('macOS key press simulation', () => {
Expand All @@ -91,50 +86,236 @@ suite('macOS key press simulation', () => {
keyTest('option', [], ['option'], ['keydown:Alt', 'keyup:Alt']);
keyTest('shift', [], ['shift'], ['keydown:Shift', 'keyup:Shift']);

keyTest('control + option', [], ['control', 'option'], ['keydown:Control', 'keydown:Alt', 'keyup:Alt', 'keyup:Control']);
keyTest('control + shift', [], ['control', 'shift'], ['keydown:Control', 'keydown:Shift', 'keyup:Shift', 'keyup:Control']);
keyTest('option + shift', [], ['option', 'shift'], ['keydown:Alt', 'keydown:Shift', 'keyup:Shift', 'keyup:Alt']);
keyTest(
'control + option',
[],
['control', 'option'],
['keydown:Control', 'keydown:Alt', 'keyup:Alt', 'keyup:Control'],
);
keyTest(
'control + shift',
[],
['control', 'shift'],
['keydown:Control', 'keydown:Shift', 'keyup:Shift', 'keyup:Control'],
);
keyTest(
'option + shift',
[],
['option', 'shift'],
['keydown:Alt', 'keydown:Shift', 'keyup:Shift', 'keyup:Alt'],
);

keyTest('control + option + shift', [], ['control', 'option', 'shift'], ['keydown:Control', 'keydown:Alt', 'keydown:Shift', 'keyup:Shift', 'keyup:Alt', 'keyup:Control']);
keyTest(
'control + option + shift',
[],
['control', 'option', 'shift'],
[
'keydown:Control',
'keydown:Alt',
'keydown:Shift',
'keyup:Shift',
'keyup:Alt',
'keyup:Control',
],
);

keyTest('single letter ("a")', ['a'], [], ['keydown:a', 'keyup:a']);

keyTest('single letter ("a") + control', ['a'], ['control'], ['keydown:Control', 'keydown:a', 'keyup:a', 'keyup:Control']);
keyTest('single letter ("a") + option', ['a'], ['option'], ['keydown:Alt', 'keydown:å', 'keyup:å', 'keyup:Alt']);
keyTest('single letter ("a") + shift', ['a'], ['shift'], ['keydown:Shift', 'keydown:A', 'keyup:A', 'keyup:Shift']);
keyTest(
'single letter ("a") + control',
['a'],
['control'],
['keydown:Control', 'keydown:a', 'keyup:a', 'keyup:Control'],
);
keyTest(
'single letter ("a") + option',
['a'],
['option'],
['keydown:Alt', 'keydown:å', 'keyup:å', 'keyup:Alt'],
);
keyTest(
'single letter ("a") + shift',
['a'],
['shift'],
['keydown:Shift', 'keydown:A', 'keyup:A', 'keyup:Shift'],
);

keyTest('single letter ("a") + control + option', ['a'], ['control', 'option'], ['keydown:Control', 'keydown:Alt', 'keydown:å', 'keyup:å', 'keyup:Alt', 'keyup:Control']);
keyTest('single letter ("a") + control + shift', ['a'], ['control', 'shift'], ['keydown:Control', 'keydown:Shift', 'keydown:A', 'keyup:A', 'keyup:Shift', 'keyup:Control']);
keyTest('single letter ("a") + option + shift', ['a'], ['option', 'shift'], ['keydown:Alt', 'keydown:Shift', 'keydown:Å', 'keyup:Å', 'keyup:Shift', 'keyup:Alt']);
keyTest(
'single letter ("a") + control + option',
['a'],
['control', 'option'],
['keydown:Control', 'keydown:Alt', 'keydown:å', 'keyup:å', 'keyup:Alt', 'keyup:Control'],
);
keyTest(
'single letter ("a") + control + shift',
['a'],
['control', 'shift'],
['keydown:Control', 'keydown:Shift', 'keydown:A', 'keyup:A', 'keyup:Shift', 'keyup:Control'],
);
keyTest(
'single letter ("a") + option + shift',
['a'],
['option', 'shift'],
['keydown:Alt', 'keydown:Shift', 'keydown:Å', 'keyup:Å', 'keyup:Shift', 'keyup:Alt'],
);

keyTest('single letter ("a") + control + option + shift', ['a'], ['control', 'option', 'shift'], ['keydown:Control', 'keydown:Alt', 'keydown:Shift', 'keydown:Å', 'keyup:Å', 'keyup:Shift', 'keyup:Alt', 'keyup:Control']);
keyTest(
'single letter ("a") + control + option + shift',
['a'],
['control', 'option', 'shift'],
[
'keydown:Control',
'keydown:Alt',
'keydown:Shift',
'keydown:Å',
'keyup:Å',
'keyup:Shift',
'keyup:Alt',
'keyup:Control',
],
);

keyTest('tab', ['tab'], [], ['keydown:Tab', 'keyup:Tab']);

// In the presence of "Control" (when not paired with "Option"), the browser does not recieve "key down" for "Tab", but it *does* receive the corresponding "key up"
test.skip('tab + control (intuitive behavior)'/*, ['tab'], ['control'], ['keydown:Control', 'keydown:Tab', 'keyup:Tab', 'keyup:Control']*/);
keyTest('tab + control (suspect behavior)', ['tab'], ['control'], ['keydown:Control', 'keyup:Tab', 'keyup:Control']);
keyTest('tab + option', ['tab'], ['option'], ['keydown:Alt', 'keydown:Tab', 'keyup:Tab', 'keyup:Alt']);
keyTest('tab + shift', ['tab'], ['shift'], ['keydown:Shift', 'keydown:Tab', 'keyup:Tab', 'keyup:Shift']);
test.skip(
'tab + control (intuitive behavior)' /*, ['tab'], ['control'], ['keydown:Control', 'keydown:Tab', 'keyup:Tab', 'keyup:Control']*/,
);
keyTest(
'tab + control (suspect behavior)',
['tab'],
['control'],
['keydown:Control', 'keyup:Tab', 'keyup:Control'],
);
keyTest(
'tab + option',
['tab'],
['option'],
['keydown:Alt', 'keydown:Tab', 'keyup:Tab', 'keyup:Alt'],
);
keyTest(
'tab + shift',
['tab'],
['shift'],
['keydown:Shift', 'keydown:Tab', 'keyup:Tab', 'keyup:Shift'],
);

keyTest('tab + control + option', ['tab'], ['control', 'option'], ['keydown:Control', 'keydown:Alt', 'keydown:Tab', 'keyup:Tab', 'keyup:Alt', 'keyup:Control']);
keyTest(
'tab + control + option',
['tab'],
['control', 'option'],
['keydown:Control', 'keydown:Alt', 'keydown:Tab', 'keyup:Tab', 'keyup:Alt', 'keyup:Control'],
);
// In the presence of "Control" (when not paired with "Option"), the browser does not recieve "key down" for "Tab", but it *does* receive the corresponding "key up"
test.skip('tab + control + shift (intuitive behavior)'/*, ['tab'], ['control', 'shift'], ['keydown:Control', 'keydown:Shift', 'keydown:Tab', 'keyup:Tab', 'keyup:Shift', 'keyup:Control']*/);
keyTest('tab + control + shift (suspect behavior)', ['tab'], ['control', 'shift'], ['keydown:Control', 'keydown:Shift', 'keyup:Tab', 'keyup:Shift', 'keyup:Control']);
keyTest('tab + option + shift', ['tab'], ['option', 'shift'], ['keydown:Alt', 'keydown:Shift', 'keydown:Tab', 'keyup:Tab', 'keyup:Shift', 'keyup:Alt']);
test.skip(
'tab + control + shift (intuitive behavior)' /*, ['tab'], ['control', 'shift'], ['keydown:Control', 'keydown:Shift', 'keydown:Tab', 'keyup:Tab', 'keyup:Shift', 'keyup:Control']*/,
);
keyTest(
'tab + control + shift (suspect behavior)',
['tab'],
['control', 'shift'],
['keydown:Control', 'keydown:Shift', 'keyup:Tab', 'keyup:Shift', 'keyup:Control'],
);
keyTest(
'tab + option + shift',
['tab'],
['option', 'shift'],
['keydown:Alt', 'keydown:Shift', 'keydown:Tab', 'keyup:Tab', 'keyup:Shift', 'keyup:Alt'],
);

keyTest('tab + control + option + shift', ['tab'], ['control', 'option', 'shift'], ['keydown:Control', 'keydown:Alt', 'keydown:Shift', 'keydown:Tab', 'keyup:Tab', 'keyup:Shift', 'keyup:Alt', 'keyup:Control']);
keyTest(
'tab + control + option + shift',
['tab'],
['control', 'option', 'shift'],
[
'keydown:Control',
'keydown:Alt',
'keydown:Shift',
'keydown:Tab',
'keyup:Tab',
'keyup:Shift',
'keyup:Alt',
'keyup:Control',
],
);

keyTest('arrow (left arrow)', ['arrowLeft'], [], ['keydown:ArrowLeft', 'keyup:ArrowLeft']);

test.skip('arrow (left arrow) + control (intuitive behavior)'/*, ['arrowLeft'], ['control'], ['keydown:Control', 'keydown:ArrowLeft', 'keyup:ArrowLeft', 'keyup:Control']*/);
keyTest('arrow (left arrow) + control (suspect behavior)', ['arrowLeft'], ['control'], ['keydown:Control', 'keyup:Control']);
keyTest('arrow (left arrow) + option', ['arrowLeft'], ['option'], ['keydown:Alt', 'keydown:ArrowLeft', 'keyup:ArrowLeft', 'keyup:Alt']);
keyTest('arrow (left arrow) + shift', ['arrowLeft'], ['shift'], ['keydown:Shift', 'keydown:ArrowLeft', 'keyup:ArrowLeft', 'keyup:Shift']);
test.skip(
'arrow (left arrow) + control (intuitive behavior)' /*, ['arrowLeft'], ['control'], ['keydown:Control', 'keydown:ArrowLeft', 'keyup:ArrowLeft', 'keyup:Control']*/,
);
keyTest(
'arrow (left arrow) + control (suspect behavior)',
['arrowLeft'],
['control'],
['keydown:Control', 'keyup:Control'],
);
keyTest(
'arrow (left arrow) + option',
['arrowLeft'],
['option'],
['keydown:Alt', 'keydown:ArrowLeft', 'keyup:ArrowLeft', 'keyup:Alt'],
);
keyTest(
'arrow (left arrow) + shift',
['arrowLeft'],
['shift'],
['keydown:Shift', 'keydown:ArrowLeft', 'keyup:ArrowLeft', 'keyup:Shift'],
);

keyTest('arrow (left arrow) + control + option', ['arrowLeft'], ['control', 'option'], ['keydown:Control', 'keydown:Alt', 'keydown:ArrowLeft', 'keyup:ArrowLeft', 'keyup:Alt', 'keyup:Control']);
keyTest('arrow (left arrow) + control + shift', ['arrowLeft'], ['control', 'shift'], ['keydown:Control', 'keydown:Shift', 'keydown:ArrowLeft', 'keyup:ArrowLeft', 'keyup:Shift', 'keyup:Control']);
keyTest('arrow (left arrow) + option + shift', ['arrowLeft'], ['option', 'shift'], ['keydown:Alt', 'keydown:Shift', 'keydown:ArrowLeft', 'keyup:ArrowLeft', 'keyup:Shift', 'keyup:Alt']);
keyTest(
'arrow (left arrow) + control + option',
['arrowLeft'],
['control', 'option'],
[
'keydown:Control',
'keydown:Alt',
'keydown:ArrowLeft',
'keyup:ArrowLeft',
'keyup:Alt',
'keyup:Control',
],
);
keyTest(
'arrow (left arrow) + control + shift',
['arrowLeft'],
['control', 'shift'],
[
'keydown:Control',
'keydown:Shift',
'keydown:ArrowLeft',
'keyup:ArrowLeft',
'keyup:Shift',
'keyup:Control',
],
);
keyTest(
'arrow (left arrow) + option + shift',
['arrowLeft'],
['option', 'shift'],
[
'keydown:Alt',
'keydown:Shift',
'keydown:ArrowLeft',
'keyup:ArrowLeft',
'keyup:Shift',
'keyup:Alt',
],
);

keyTest('arrow (left arrow) + control + option + shift', ['arrowLeft'], ['control', 'option', 'shift'], ['keydown:Control', 'keydown:Alt', 'keydown:Shift', 'keydown:ArrowLeft', 'keyup:ArrowLeft', 'keyup:Shift', 'keyup:Alt', 'keyup:Control']);
keyTest(
'arrow (left arrow) + control + option + shift',
['arrowLeft'],
['control', 'option', 'shift'],
[
'keydown:Control',
'keydown:Alt',
'keydown:Shift',
'keydown:ArrowLeft',
'keyup:ArrowLeft',
'keyup:Shift',
'keyup:Alt',
'keyup:Control',
],
);
});

0 comments on commit 937312a

Please sign in to comment.