nested-focusgroups.html (2957B)
1 <!DOCTYPE html> 2 <meta charset="utf-8"> 3 <title>HTML Test: focusgroup - Nested focusgroup navigation</title> 4 <link rel="author" title="Microsoft" href="http://www.microsoft.com/"> 5 <link rel="help" href="https://open-ui.org/components/scoped-focusgroup.explainer/"> 6 <script src="/resources/testharness.js"></script> 7 <script src="/resources/testharnessreport.js"></script> 8 <script src="/resources/testdriver.js"></script> 9 <script src="/resources/testdriver-vendor.js"></script> 10 <script src="/resources/testdriver-actions.js"></script> 11 <script src="/shadow-dom/focus-navigation/resources/focus-utils.js"></script> 12 <script src="../resources/focusgroup-utils.js"></script> 13 14 <!-- Test forward navigation through nested focusgroups --> 15 <div id=before1 tabindex=0>Before outer</div> 16 17 <div id=outer focusgroup="toolbar"> 18 <span id=outer1 tabindex=0 focusgroup-entry-priority>Outer 1 (priority)</span> 19 <div id=inner focusgroup="toolbar no-memory"> 20 <span id=inner1 tabindex=0 focusgroup-entry-priority>Inner 1 (priority)</span> 21 <span id=inner2 tabindex=0>Inner 2</span> 22 </div> 23 <span id=outer2 tabindex=0>Outer 2</span> 24 </div> 25 26 <div id=after1 tabindex=0>After outer</div> 27 28 <script> 29 promise_test(async t => { 30 document.getElementById("before1").focus(); 31 await navigateFocusForward(); 32 assert_equals(document.activeElement, document.getElementById("outer1"), 33 "Tab enters outer focusgroup at focusgroup-entry-priority element"); 34 35 await navigateFocusForward(); 36 assert_equals(document.activeElement, document.getElementById("inner1"), 37 "Tab enters nested inner focusgroup at focusgroup-entry-priority element"); 38 39 await navigateFocusForward(); 40 assert_equals(document.activeElement, document.getElementById("outer2"), 41 "Tab moves to second segment of outer focusgroup"); 42 43 await navigateFocusForward(); 44 assert_equals(document.activeElement, document.getElementById("after1"), 45 "Tab moves outside both focusgroups"); 46 }, "Forward Tab navigation through nested focusgroups"); 47 48 promise_test(async t => { 49 document.getElementById("after1").focus(); 50 await navigateFocusBackward(); 51 assert_equals(document.activeElement, document.getElementById("outer2"), 52 "Shift+Tab enters second segment of outer focusgroup"); 53 54 await navigateFocusBackward(); 55 assert_equals(document.activeElement, document.getElementById("inner1"), 56 "Shift+Tab enters nested focusgroup at focusgroup-entry-priority element"); 57 58 await navigateFocusBackward(); 59 assert_equals(document.activeElement, document.getElementById("outer1"), 60 "Shift+Tab moves to outer focusgroup"); 61 62 await navigateFocusBackward(); 63 assert_equals(document.activeElement, document.getElementById("before1"), 64 "Shift+Tab exits both focusgroups"); 65 }, "Reverse Shift+Tab navigation through nested focusgroups"); 66 </script>