Tests/LibWeb: Implement action_sequence in testdriver-vendor.js

This implements WebDriver Actions API support for key sequences with
modifier tracking in our testdriver-vendor.js. The action_sequence
function processes key sources, tracks Shift/Ctrl/Alt/Meta state across
events, and dispatches keys with the appropriate modifiers via
Internals.sendText().

This allows us to pass WPT tests that make use of that API in our own
test-web runner.
This commit is contained in:
Jelle Raaijmakers
2026-01-15 20:08:09 +01:00
committed by Jelle Raaijmakers
parent 746362e5de
commit acd38ad795
Notes: github-actions[bot] 2026-02-06 11:12:16 +00:00
5 changed files with 319 additions and 100 deletions

View File

@@ -1,111 +1,152 @@
Harness status: OK
Found 105 tests
Found 147 tests
84 Pass
21 Fail
147 Pass
Pass execCommand("insertLineBreak") when A[]B
Pass Pressing Enter when A[]B should cause "insertLineBreak" and shouldn't insert new paragraph
Fail Pressing Shift+Enter when A[]B should cause "insertLineBreak" and shouldn't insert new paragraph
Pass Pressing Shift+Enter when A[]B should cause "insertLineBreak" and shouldn't insert new paragraph
Pass execCommand("insertLineBreak") when <p>{}<br></p>
Pass Pressing Enter when <p>{}<br></p> should cause "insertLineBreak" and shouldn't insert new paragraph
Fail Pressing Shift+Enter when <p>{}<br></p> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass Pressing Shift+Enter when <p>{}<br></p> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass execCommand("insertLineBreak") when <p style="white-space:normal">A[]B</p>
Pass Pressing Enter when <p style="white-space:normal">A[]B</p> should cause "insertLineBreak" and shouldn't insert new paragraph
Fail Pressing Shift+Enter when <p style="white-space:normal">A[]B</p> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass Pressing Shift+Enter when <p style="white-space:normal">A[]B</p> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass execCommand("insertLineBreak") when <p style="white-space:pre">A[]B</p>
Pass Pressing Enter when <p style="white-space:pre">A[]B</p> should cause "insertLineBreak" and shouldn't insert new paragraph
Fail Pressing Shift+Enter when <p style="white-space:pre">A[]B</p> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass Pressing Shift+Enter when <p style="white-space:pre">A[]B</p> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass execCommand("insertLineBreak") when <p style="white-space:pre-line">A[]B</p>
Pass Pressing Enter when <p style="white-space:pre-line">A[]B</p> should cause "insertLineBreak" and shouldn't insert new paragraph
Fail Pressing Shift+Enter when <p style="white-space:pre-line">A[]B</p> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass Pressing Shift+Enter when <p style="white-space:pre-line">A[]B</p> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass execCommand("insertLineBreak") when <p style="white-space:pre-wrap">A[]B</p>
Pass Pressing Enter when <p style="white-space:pre-wrap">A[]B</p> should cause "insertLineBreak" and shouldn't insert new paragraph
Fail Pressing Shift+Enter when <p style="white-space:pre-wrap">A[]B</p> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass Pressing Shift+Enter when <p style="white-space:pre-wrap">A[]B</p> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass execCommand("insertLineBreak") when <ul><li>[]AB</li></ul>
Pass Pressing Enter when <ul><li>[]AB</li></ul> should cause "insertLineBreak" and shouldn't insert new paragraph
Fail Pressing Shift+Enter when <ul><li>[]AB</li></ul> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass Pressing Shift+Enter when <ul><li>[]AB</li></ul> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass execCommand("insertLineBreak") when <ul><li>A[]B</li></ul>
Pass Pressing Enter when <ul><li>A[]B</li></ul> should cause "insertLineBreak" and shouldn't insert new paragraph
Fail Pressing Shift+Enter when <ul><li>A[]B</li></ul> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass Pressing Shift+Enter when <ul><li>A[]B</li></ul> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass execCommand("insertLineBreak") when <ul><li>AB[]</li></ul>
Pass Pressing Enter when <ul><li>AB[]</li></ul> should cause "insertLineBreak" and shouldn't insert new paragraph
Fail Pressing Shift+Enter when <ul><li>AB[]</li></ul> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass Pressing Shift+Enter when <ul><li>AB[]</li></ul> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass execCommand("insertLineBreak") when <dl><dt>[]AB</dt></dl>
Pass Pressing Enter when <dl><dt>[]AB</dt></dl> should cause "insertLineBreak" and shouldn't insert new paragraph
Fail Pressing Shift+Enter when <dl><dt>[]AB</dt></dl> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass Pressing Shift+Enter when <dl><dt>[]AB</dt></dl> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass execCommand("insertLineBreak") when <dl><dt>A[]B</dt></dl>
Pass Pressing Enter when <dl><dt>A[]B</dt></dl> should cause "insertLineBreak" and shouldn't insert new paragraph
Fail Pressing Shift+Enter when <dl><dt>A[]B</dt></dl> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass Pressing Shift+Enter when <dl><dt>A[]B</dt></dl> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass execCommand("insertLineBreak") when <dl><dt>AB[]</dt></dl>
Pass Pressing Enter when <dl><dt>AB[]</dt></dl> should cause "insertLineBreak" and shouldn't insert new paragraph
Fail Pressing Shift+Enter when <dl><dt>AB[]</dt></dl> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass Pressing Shift+Enter when <dl><dt>AB[]</dt></dl> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass execCommand("insertLineBreak") when <dl><dd>[]AB</dd></dl>
Pass Pressing Enter when <dl><dd>[]AB</dd></dl> should cause "insertLineBreak" and shouldn't insert new paragraph
Fail Pressing Shift+Enter when <dl><dd>[]AB</dd></dl> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass Pressing Shift+Enter when <dl><dd>[]AB</dd></dl> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass execCommand("insertLineBreak") when <dl><dd>A[]B</dd></dl>
Pass Pressing Enter when <dl><dd>A[]B</dd></dl> should cause "insertLineBreak" and shouldn't insert new paragraph
Fail Pressing Shift+Enter when <dl><dd>A[]B</dd></dl> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass Pressing Shift+Enter when <dl><dd>A[]B</dd></dl> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass execCommand("insertLineBreak") when <dl><dd>AB[]</dd></dl>
Pass Pressing Enter when <dl><dd>AB[]</dd></dl> should cause "insertLineBreak" and shouldn't insert new paragraph
Fail Pressing Shift+Enter when <dl><dd>AB[]</dd></dl> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass Pressing Shift+Enter when <dl><dd>AB[]</dd></dl> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass execCommand("insertLineBreak") when <table><tbody><tr><td>[]AB</td></tr></tbody></table>
Pass Pressing Enter when <table><tbody><tr><td>[]AB</td></tr></tbody></table> should cause "insertLineBreak" and shouldn't insert new paragraph
Fail Pressing Shift+Enter when <table><tbody><tr><td>[]AB</td></tr></tbody></table> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass Pressing Shift+Enter when <table><tbody><tr><td>[]AB</td></tr></tbody></table> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass execCommand("insertLineBreak") when <table><tbody><tr><td>A[]B</td></tr></tbody></table>
Pass Pressing Enter when <table><tbody><tr><td>A[]B</td></tr></tbody></table> should cause "insertLineBreak" and shouldn't insert new paragraph
Fail Pressing Shift+Enter when <table><tbody><tr><td>A[]B</td></tr></tbody></table> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass Pressing Shift+Enter when <table><tbody><tr><td>A[]B</td></tr></tbody></table> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass execCommand("insertLineBreak") when <table><tbody><tr><td>AB[]</td></tr></tbody></table>
Pass Pressing Enter when <table><tbody><tr><td>AB[]</td></tr></tbody></table> should cause "insertLineBreak" and shouldn't insert new paragraph
Fail Pressing Shift+Enter when <table><tbody><tr><td>AB[]</td></tr></tbody></table> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass Pressing Shift+Enter when <table><tbody><tr><td>AB[]</td></tr></tbody></table> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass execCommand("insertLineBreak") when <h1>[]AB</h1>
Pass Pressing Enter when <h1>[]AB</h1> should cause "insertLineBreak" and shouldn't insert new paragraph
Fail Pressing Shift+Enter when <h1>[]AB</h1> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass Pressing Shift+Enter when <h1>[]AB</h1> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass execCommand("insertLineBreak") when <h1>A[]B</h1>
Pass Pressing Enter when <h1>A[]B</h1> should cause "insertLineBreak" and shouldn't insert new paragraph
Fail Pressing Shift+Enter when <h1>A[]B</h1> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass Pressing Shift+Enter when <h1>A[]B</h1> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass execCommand("insertLineBreak") when <h1>AB[]</h1>
Pass Pressing Enter when <h1>AB[]</h1> should cause "insertLineBreak" and shouldn't insert new paragraph
Fail Pressing Shift+Enter when <h1>AB[]</h1> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass Pressing Shift+Enter when <h1>AB[]</h1> should cause "insertLineBreak" and shouldn't insert new paragraph
Pass Pressing Enter when A[]B should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Enter when A[]B should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Shift+Enter when A[]B should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Shift+Enter when A[]B should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Enter when <p>{}<br></p> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Enter when <p>{}<br></p> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Shift+Enter when <p>{}<br></p> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Shift+Enter when <p>{}<br></p> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Enter when <p style="white-space:normal">A[]B</p> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Enter when <p style="white-space:normal">A[]B</p> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Shift+Enter when <p style="white-space:normal">A[]B</p> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Shift+Enter when <p style="white-space:normal">A[]B</p> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Enter when <p style="white-space:pre">A[]B</p> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Enter when <p style="white-space:pre">A[]B</p> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Shift+Enter when <p style="white-space:pre">A[]B</p> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Shift+Enter when <p style="white-space:pre">A[]B</p> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Enter when <p style="white-space:pre-line">A[]B</p> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Enter when <p style="white-space:pre-line">A[]B</p> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Shift+Enter when <p style="white-space:pre-line">A[]B</p> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Shift+Enter when <p style="white-space:pre-line">A[]B</p> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Enter when <p style="white-space:pre-wrap">A[]B</p> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Enter when <p style="white-space:pre-wrap">A[]B</p> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Shift+Enter when <p style="white-space:pre-wrap">A[]B</p> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Shift+Enter when <p style="white-space:pre-wrap">A[]B</p> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Enter when <ul><li>[]AB</li></ul> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Enter when <ul><li>[]AB</li></ul> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Shift+Enter when <ul><li>[]AB</li></ul> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Shift+Enter when <ul><li>[]AB</li></ul> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Enter when <ul><li>A[]B</li></ul> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Enter when <ul><li>A[]B</li></ul> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Shift+Enter when <ul><li>A[]B</li></ul> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Shift+Enter when <ul><li>A[]B</li></ul> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Enter when <ul><li>AB[]</li></ul> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Enter when <ul><li>AB[]</li></ul> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Shift+Enter when <ul><li>AB[]</li></ul> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Shift+Enter when <ul><li>AB[]</li></ul> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Enter when <dl><dt>[]AB</dt></dl> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Enter when <dl><dt>[]AB</dt></dl> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Shift+Enter when <dl><dt>[]AB</dt></dl> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Shift+Enter when <dl><dt>[]AB</dt></dl> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Enter when <dl><dt>A[]B</dt></dl> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Enter when <dl><dt>A[]B</dt></dl> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Shift+Enter when <dl><dt>A[]B</dt></dl> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Shift+Enter when <dl><dt>A[]B</dt></dl> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Enter when <dl><dt>AB[]</dt></dl> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Enter when <dl><dt>AB[]</dt></dl> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Shift+Enter when <dl><dt>AB[]</dt></dl> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Shift+Enter when <dl><dt>AB[]</dt></dl> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Enter when <dl><dd>[]AB</dd></dl> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Enter when <dl><dd>[]AB</dd></dl> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Shift+Enter when <dl><dd>[]AB</dd></dl> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Shift+Enter when <dl><dd>[]AB</dd></dl> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Enter when <dl><dd>A[]B</dd></dl> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Enter when <dl><dd>A[]B</dd></dl> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Shift+Enter when <dl><dd>A[]B</dd></dl> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Shift+Enter when <dl><dd>A[]B</dd></dl> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Enter when <dl><dd>AB[]</dd></dl> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Enter when <dl><dd>AB[]</dd></dl> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Shift+Enter when <dl><dd>AB[]</dd></dl> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Shift+Enter when <dl><dd>AB[]</dd></dl> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Enter when <table><tbody><tr><td>[]AB</td></tr></tbody></table> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Enter when <table><tbody><tr><td>[]AB</td></tr></tbody></table> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Shift+Enter when <table><tbody><tr><td>[]AB</td></tr></tbody></table> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Shift+Enter when <table><tbody><tr><td>[]AB</td></tr></tbody></table> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Enter when <table><tbody><tr><td>A[]B</td></tr></tbody></table> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Enter when <table><tbody><tr><td>A[]B</td></tr></tbody></table> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Shift+Enter when <table><tbody><tr><td>A[]B</td></tr></tbody></table> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Shift+Enter when <table><tbody><tr><td>A[]B</td></tr></tbody></table> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Enter when <table><tbody><tr><td>AB[]</td></tr></tbody></table> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Enter when <table><tbody><tr><td>AB[]</td></tr></tbody></table> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Shift+Enter when <table><tbody><tr><td>AB[]</td></tr></tbody></table> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Shift+Enter when <table><tbody><tr><td>AB[]</td></tr></tbody></table> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Enter when <h1>[]AB</h1> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Enter when <h1>[]AB</h1> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Shift+Enter when <h1>[]AB</h1> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Shift+Enter when <h1>[]AB</h1> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Enter when <h1>A[]B</h1> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Enter when <h1>A[]B</h1> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Shift+Enter when <h1>A[]B</h1> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Shift+Enter when <h1>A[]B</h1> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Enter when <h1>AB[]</h1> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Enter when <h1>AB[]</h1> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Enter when <h1>AB[]</h1> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML
Pass Pressing Shift+Enter when <h1>AB[]</h1> should cause "insertLineBreak" and shouldn't insert new paragraph: beforeinput
Pass Pressing Shift+Enter when <h1>AB[]</h1> should cause "insertLineBreak" and shouldn't insert new paragraph: editingHost.innerHTML