1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
<!DOCTYPE html>
<meta charset="utf-8">
<title>Focus Navigation for the radio group</title>
<meta name="timeout" content="long">
<link rel="author" href="mailto:zhoupeng.1996@bytedance.com">
<link rel="help" href="https://issues.chromium.org/issues/421837104">
<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>
<script src="/resources/testdriver-actions.js"></script>
<script src="resources/focus-utils.js"></script>
<input type="text" id="start">
<form>
<label><input type="radio" name="radio" id="a">enabled 1</label>
<button id="btn">Button</button>
<label><input type="radio" name="radio" id="b">enabled 2</label>
<label><input type="radio" name="radio" id="c">enabled 3</label>
</form>
<input type="text" id="end">
<script>
promise_test(async () => {
start.focus();
assert_equals(document.activeElement, start);
await navigateFocusForward();
assert_equals(document.activeElement, a);
await navigateFocusForward();
assert_equals(document.activeElement, btn);
await navigateFocusForward();
assert_equals(document.activeElement, end);
await navigateFocusBackward();
assert_equals(document.activeElement, btn);
await navigateFocusBackward();
assert_equals(document.activeElement, a);
await navigateFocusBackward();
assert_equals(document.activeElement, start);
// Focus on the checked radio element.
b.checked = true;
start.focus();
await navigateFocusForward();
assert_equals(document.activeElement, btn);
await navigateFocusForward();
assert_equals(document.activeElement, b);
await navigateFocusForward();
assert_equals(document.activeElement, end);
await navigateFocusBackward();
assert_equals(document.activeElement, b);
}, 'Focusable elements between radio elements in a group can be focused.');
promise_test(async () => {
b.checked = false;
start.focus();
assert_equals(document.activeElement, start);
await navigateFocusForward();
assert_equals(document.activeElement, a);
// Arrow key navigation, skip btn.
await arrowDown();
assert_equals(document.activeElement, b);
assert_true(b.checked);
await arrowUp();
assert_equals(document.activeElement, a);
assert_true(a.checked);
await arrowDown();
assert_equals(document.activeElement, b);
assert_true(b.checked);
await navigateFocusForward();
assert_equals(document.activeElement, end);
await navigateFocusBackward();
assert_equals(document.activeElement, b);
await navigateFocusBackward();
assert_equals(document.activeElement, btn);
await navigateFocusBackward();
assert_equals(document.activeElement, start);
}, 'During arrow key navigation, focus and checked is set on the radio element.');
</script>
|