File: sequential-focus.html

package info (click to toggle)
firefox 143.0.3-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 4,617,328 kB
  • sloc: cpp: 7,478,492; javascript: 6,417,157; ansic: 3,720,058; python: 1,396,372; xml: 627,523; asm: 438,677; java: 186,156; sh: 63,477; makefile: 19,171; objc: 13,059; perl: 12,983; yacc: 4,583; cs: 3,846; pascal: 3,405; lex: 1,720; ruby: 1,003; exp: 762; php: 436; lisp: 258; awk: 247; sql: 66; sed: 53; csh: 10
file content (45 lines) | stat: -rw-r--r-- 1,970 bytes parent folder | download | duplicates (10)
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
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Text Fragments Test</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>
</head>
<body>
    <!--
    The document performs a same-document navigation, which contains the text fragment 'foo'.
    'foo' is inside of a <a> element. If it were focused, hitting `Enter` would
    directly navigate to its href, which is not intended.
    Instead, it should only have the sequential focus, ie. pressing `Tab` would focus the next
    focusable element.
    -->
    <a href="#" id="link">foo</a>
    <button id="next-button">Next Focusable Element</button>
    <script>
        // Define the test for text fragment focus behavior
        promise_test(async t => {
            const link = document.getElementById('link');
            const nextButton = document.getElementById('next-button');

            const hashChange = new Promise(r => window.addEventListener('hashchange', r, { once: true }));

            // Simulate a same-document load to the text fragment
            location.hash = '#some-hash-to-trigger-hashchange:~:text=foo';

            await hashChange;

            // Assert that the link element does not have focus initially
            assert_not_equals(document.activeElement, link, 'Link element should not have focus initially');

            // Simulate pressing TAB to shift focus to the next element
            await test_driver.send_keys(document.body, '\uE004'); // '\uE004' is the WebDriver key code for TAB

            // Assert that the next focusable element (button) has focus
            assert_equals(document.activeElement, nextButton, 'Next focusable element should have focus after pressing TAB');
        }, 'Text Fragment focus behavior');
    </script>
</body>
</html>