-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Bug 1658957 [wpt PR 24995] - Add tests for input and change event pro…
…perties, a=testonly Automatic update from web-platform-tests Add tests for input and change event properties See whatwg/html#5453. The <select> test doesn't appear to work on Safari, but I can't figure out how to fix it without a Mac. -- wpt-commits: 47f659d346db0b1ed0d336fdee81a16214f2a6d1 wpt-pr: 24995
- Loading branch information
1 parent
e49bef1
commit c3bd1d6
Showing
1 changed file
with
86 additions
and
0 deletions.
There are no files selected for viewing
86 changes: 86 additions & 0 deletions
86
testing/web-platform/tests/html/semantics/forms/input-change-event-properties.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
<!DOCTYPE html> | ||
<meta charset="utf-8"> | ||
<title>Test the properties of input and change events</title> | ||
<script src="/resources/testharness.js"></script> | ||
<script src="/resources/testharnessreport.js"></script> | ||
<script src="/resources/testdriver.js"></script> | ||
<script src="/resources/testdriver-vendor.js"></script> | ||
|
||
<fieldset id="clickable"> | ||
<input type="checkbox"> | ||
<input type="radio"> | ||
</fieldset> | ||
|
||
<fieldset id="typeable"> | ||
<input type="text"> | ||
<input type="search"> | ||
<input type="tel"> | ||
<input type="url"> | ||
<input type="email"> | ||
<input type="password"> | ||
<input type="number"> | ||
<textarea></textarea> | ||
</fieldset> | ||
|
||
<select> | ||
<option>1</option> | ||
<option>2</option> | ||
</select> | ||
|
||
<!-- Not going to test the more complicated input types like date or color for now... --> | ||
|
||
<button id="click-me-to-unfocus-other-things">Clickable</button> | ||
|
||
<script> | ||
"use strict"; | ||
const clickMeToUnfocusOtherThings = document.querySelector("#click-me-to-unfocus-other-things"); | ||
|
||
for (const el of document.querySelector("#clickable").children) { | ||
test(() => { | ||
let inputEvent, changeEvent; | ||
el.oninput = e => inputEvent = e; | ||
el.onchange = e => changeEvent = e; | ||
|
||
el.click(); | ||
|
||
assert_event(inputEvent, { bubbles: true, cancelable: false, composed: true }); | ||
assert_event(changeEvent, { bubbles: true, cancelable: false, composed: false }); | ||
}, `${el.outerHTML} click()`); | ||
} | ||
|
||
for (const el of document.querySelector("#typeable").children) { | ||
promise_test(async () => { | ||
let inputEvent, changeEvent; | ||
el.oninput = e => inputEvent = e; | ||
el.onchange = e => changeEvent = e; | ||
|
||
await test_driver.send_keys(el, "1"); // has to be a number so <input type=number> works | ||
await test_driver.click(clickMeToUnfocusOtherThings); | ||
|
||
assert_event(inputEvent, { bubbles: true, cancelable: false, composed: true }); | ||
assert_event(changeEvent, { bubbles: true, cancelable: false, composed: false }); | ||
}, `${el.outerHTML} typing`); | ||
} | ||
|
||
promise_test(async () => { | ||
const el = document.querySelector("select"); | ||
|
||
let inputEvent, changeEvent; | ||
el.oninput = e => inputEvent = e; | ||
el.onchange = e => changeEvent = e; | ||
|
||
// TODO: this doesn't seem to work in Safari/on Macs. Or maybe Safari is legitimately failing. | ||
// Someone with a Mac should investigate. | ||
await test_driver.send_keys(el, "\uE015"); // down arrow key | ||
await test_driver.click(clickMeToUnfocusOtherThings); | ||
|
||
assert_event(inputEvent, { bubbles: true, cancelable: false, composed: true }); | ||
assert_event(changeEvent, { bubbles: true, cancelable: false, composed: false }); | ||
}, `<select> pressing down arrow`); | ||
|
||
function assert_event(e, { bubbles, cancelable, composed }) { | ||
assert_equals(e.bubbles, bubbles, `${e.type} bubbles`); | ||
assert_equals(e.cancelable, cancelable, `${e.type} cancelable`); | ||
assert_equals(e.composed, composed, `${e.type} composed`); | ||
} | ||
</script> |