Bug 1417821 - Test that click returns after spinning event loop. r?whimboo
MozReview-Commit-ID: EpaM9PsFt6b
--- a/testing/web-platform/meta/MANIFEST.json
+++ b/testing/web-platform/meta/MANIFEST.json
@@ -575976,17 +575976,17 @@
"9455d1504590154ad2a540f102455baff602aefb",
"wdspec"
],
"webdriver/tests/element_click/__init__.py": [
"da39a3ee5e6b4b0d3255bfef95601890afd80709",
"support"
],
"webdriver/tests/element_click/bubbling.py": [
- "3168c91456dae68fbc4c289d1ad39b4cd11fc219",
+ "5437f5ca12b93e9a0087e9b341d63af6bace4ffd",
"wdspec"
],
"webdriver/tests/element_click/select.py": [
"5ba51b660c7203bba3ada597c2f56fe094358e1f",
"wdspec"
],
"webdriver/tests/element_click/stale.py": [
"37af63203540dfe11d36fe05d74694f05c6505f2",
--- a/testing/web-platform/tests/webdriver/tests/element_click/bubbling.py
+++ b/testing/web-platform/tests/webdriver/tests/element_click/bubbling.py
@@ -39,16 +39,55 @@ def test_click_event_bubbles_to_parents(
one.click()
clicks = session.execute_script("return window.clicks")
assert one in clicks
assert two in clicks
assert three in clicks
+def test_spin_event_loop(session):
+ """
+ Wait until the user agent event loop has spun enough times to
+ process the DOM events generated by clicking.
+ """
+ session.url = inline("""
+ <style>
+ body * {
+ margin: 10px;
+ padding: 10px;
+ border: 1px solid blue;
+ }
+ </style>
+
+ <div id=three>THREE
+ <div id=two>TWO
+ <div id=one>ONE</div>
+ </div>
+ </div>
+
+ <script>
+ window.delayedClicks = [];
+
+ for (let level of document.querySelectorAll("div")) {
+ level.addEventListener("click", ({currentTarget}) => {
+ setTimeout(() => window.delayedClicks.push(currentTarget), 100);
+ });
+ }
+ </script>
+ """)
+ three, two, one = session.find.css("div")
+ one.click()
+
+ delayed_clicks = session.execute_script("return window.delayedClicks")
+ assert one in delayed_clicks
+ assert two in delayed_clicks
+ assert three in delayed_clicks
+
+
def test_element_disappears_during_click(session):
"""
When an element in the event bubbling order disappears (its CSS
display style is set to "none") during a click, Gecko and Blink
exhibit different behaviour. Whilst Chrome fires a "click"
DOM event on <body>, Firefox does not.
A WebDriver implementation may choose to wait for this event to let