Bug 1624710 [wpt PR 22424] - Add a test for unexpected activation triggered during space keydown driven focus management, a=testonly
authorMu-An 慕安 <muan@github.com>
Tue, 28 Apr 2020 11:33:21 +0000
changeset 527146 897d8f75940cfbd4e1f1675f0899ff9f7601e71c
parent 527145 4ccc79413bc06d847d41d0a35a7fc58d8940ad06
child 527147 1587b222de8c869cfd8b0f44d2f572e382c0cc6e
push id114648
push userwptsync@mozilla.com
push dateThu, 30 Apr 2020 19:15:02 +0000
treeherderautoland@2545233d9410 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerstestonly
bugs1624710, 22424
milestone77.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1624710 [wpt PR 22424] - Add a test for unexpected activation triggered during space keydown driven focus management, a=testonly Automatic update from web-platform-tests Add a test for unexpected activation triggered during space keydown driven focus management (#22424) Relevant spec: https://w3c.github.io/uievents/#event-flow-activation This is targeting a Firefox bug where when forwarding focus on space and enter keydown events, a unexpected click event is triggered on the forward target. Here's a demo page for the buggy behavior:https://html-is.glitch.me/firefox-space-focus.html This test case only cover the Space key case where Firefox is the outlier. -- wpt-commits: cc87c188abc5c88460d24379e69d540372f0c683 wpt-pr: 22424
testing/web-platform/tests/uievents/order-of-events/focus-events/focus-management-expectations.html
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/uievents/order-of-events/focus-events/focus-management-expectations.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+  <meta charset="utf-8">
+  <title>Focus management event expectations</title>
+  <link rel="author" title="Mu-An Chiou" href="https://muan.co">
+  <link rel="help" href="https://w3c.github.io/uievents/#event-flow-activation">
+  <script src="/resources/testharness.js"></script>
+  <script src="/resources/testharnessreport.js"></script>
+  <script src="/resources/testdriver.js"></script>
+  <script src="/resources/testdriver-actions.js"></script>
+  <script src="/resources/testdriver-vendor.js"></script>
+</head>
+
+<body>
+  <button type="button" id="fromEl">Focus management from button</button>
+  <button type="button" id="toEl">To button</button>
+  <button type="button" id="EndTestEl">End test button</button>
+</body>
+
+<script>
+  const from = document.getElementById("fromEl")
+  const to = document.getElementById("toEl")
+  const endTest = document.getElementById("EndTestEl")
+
+  from.addEventListener("keydown", function (event) {
+    if (event.key === " ") to.focus()
+  })
+
+  async_test(function (t) {
+    let buttonFocused = false
+    to.addEventListener("click", t.unreached_func("Button should not be clicked"))
+    to.addEventListener("focus", () => buttonFocused = true)
+    endTest.addEventListener('click', () => {
+      assert_true(buttonFocused, "Button should be focused")
+      t.step_timeout(() => t.done(), 200)
+    })
+
+    // execute test
+    from.focus()
+    new test_driver.Actions().keyDown("\ue00d").keyUp("\ue00d").send().then(() =>
+      new test_driver.click(endTest)
+    )
+  }, "Keydown to focus should not trigger activation")
+</script>
+
+</html>
\ No newline at end of file