Skip to content

[wdspec] Add test to locate the root (html) element with the CSS loca…

748cdfd
Select commit
Loading
Failed to load commit list.
Merged

[Gecko Bug 2020578] [wdspec] Add test to locate the root (html) element with the CSS locator. #58286

[wdspec] Add test to locate the root (html) element with the CSS loca…
748cdfd
Select commit
Loading
Failed to load commit list.
Community-TC Integration / wpt-chrome-dev-stability succeeded Mar 5, 2026 in 6m 37s

Community-TC (pull_request)

Verify that all tests affected by a pull request are stable when executed in chrome.

Details

View task in Taskcluster | View logs in Taskcluster | View task group in Taskcluster

Task Status

Started: 2026-03-05T11:30:59.492Z
Resolved: 2026-03-05T11:37:05.413Z
Task Execution Time: 6 minutes, 5 seconds, 921 milliseconds
Task Status: completed
Reason Resolved: completed
TaskId: NNqc51pwQG-SgXAWe68dpg
RunId: 0

Artifacts

- public/logs/live_backing.log
- public/logs/live.log
- public/results/checkrun.md

WPT Command: python3 ./wpt run --channel=dev --verify --verify-no-chaos-mode --verify-repeat-loop=0 --verify-repeat-restart=10 --github-checks-text-file=/home/test/artifacts/checkrun.md --affected base_head --log-mach-level=info --log-mach=- -y --no-pause --no-restart-on-unexpected --install-fonts --verify-log-full --no-headless --enable-swiftshader --install-browser --install-webdriver chrome


[taskcluster 2026-03-05 11:30:59.576Z] Task ID: NNqc51pwQG-SgXAWe68dpg
[taskcluster 2026-03-05 11:30:59.576Z] Worker ID: 5494613821610056044
[taskcluster 2026-03-05 11:30:59.576Z] Worker Group: us-east4-a
[taskcluster 2026-03-05 11:30:59.576Z] Worker Node Type: projects/757942385826/machineTypes/n2-standard-4
[taskcluster 2026-03-05 11:30:59.576Z] Worker Pool: proj-wpt/ci
[taskcluster 2026-03-05 11:30:59.576Z] Worker Version: 46.1.0
[taskcluster 2026-03-05 11:30:59.576Z] Public IP: 34.85.148.156
[taskcluster 2026-03-05 11:30:59.576Z] Hostname: proj-wpt-ci-bjaio-esrrko4vfj5-pf9g

[taskcluster 2026-03-05 11:31:00.703Z] === Task Starting ===
+ '[' '' ']'
+ '[' -d /etc/profile.d ']'
+ for i in /etc/profile.d/*.sh
+ '[' -r /etc/profile.d/01-locale-fix.sh ']'
+ . /etc/profile.d/01-locale-fix.sh
+++ /usr/bin/locale-check C.UTF-8
++ eval
+ for i in /etc/profile.d/*.sh
+ '[' -r /etc/profile.d/apps-bin-path.sh ']'
+ . /etc/profile.d/apps-bin-path.sh

...(64520 lines hidden)...


webdriver/tests/support/asserts.py:54: AssertionError
  FAIL test_no_user_agent_shadow_root[select] - assert 200 == 404
session = <Session e4723eed7608e102a206bcb951e6f634>
inline = <function inline.<locals>.inline at 0x7f0b891e27a0>
html = '<select></select>', selector = 'select'

    @pytest.mark.parametrize(
        "html, selector",
        [
            ("<div><p>no shadow root</p></div>", "div"),
            ("<select></select>", "select"),
            ("<video></video>", "video"),
        ],
        ids=["div", "select", "video"],
    )
    def test_no_user_agent_shadow_root(session, inline, html, selector):
        session.url = inline(html)
    
        element = session.find.css(selector, all=False)
    
        # Make sure user-agent shadow roots are not leaked by get shadow root
        # (eg Firefox uses shadow dom to implement the select widget).
        response = get_shadow_root(session, element.id)
>       assert_error(response, "no such shadow root")

element    = <WebElement f.EAF412BF6CAB041937B8A0FF58408A03.d.3755348907A69A3B7ACDCDDAFF884FE4.e.40>
html       = '<select></select>'
inline     = <function inline.<locals>.inline at 0x7f0b891e27a0>
response   = <Response: status=200 body={"value": {"shadow-6066-11e4-a52e-4f735466cecf": "f.EAF412BF6CAB041937B8A0FF58408A03.d.3755348907A69A3B7ACDCDDAFF884FE4.e.42"}}>
selector   = 'select'
session    = <Session e4723eed7608e102a206bcb951e6f634>

webdriver/tests/classic/get_element_shadow_root/get.py:115: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

response = <Response: status=200 body={"value": {"shadow-6066-11e4-a52e-4f735466cecf": "f.EAF412BF6CAB041937B8A0FF58408A03.d.3755348907A69A3B7ACDCDDAFF884FE4.e.42"}}>
error_code = 'no such shadow root', data = None

    def assert_error(response, error_code, data=None):
        """
        Verify that the provided webdriver.Response instance described
        a valid error response as defined by `dfn-send-an-error` and
        the provided error code.
    
        :param response: ``webdriver.Response`` instance.
        :param error_code: String value of the expected error code
        :param data: Optional dictionary containing additional information about the error.
        """
>       assert response.status == errors[error_code]
E       assert 200 == 404
E        +  where 200 = <Response: status=200 body={"value": {"shadow-6066-11e4-a52e-4f735466cecf": "f.EAF412BF6CAB041937B8A0FF58408A03.d.3755348907A69A3B7ACDCDDAFF884FE4.e.42"}}>.status

data       = None
error_code = 'no such shadow root'
response   = <Response: status=200 body={"value": {"shadow-6066-11e4-a52e-4f735466cecf": "f.EAF412BF6CAB041937B8A0FF58408A03.d.3755348907A69A3B7ACDCDDAFF884FE4.e.42"}}>

webdriver/tests/support/asserts.py:51: AssertionError
  FAIL test_no_user_agent_shadow_root[video] - assert 200 == 404
session = <Session e4723eed7608e102a206bcb951e6f634>
inline = <function inline.<locals>.inline at 0x7f0b891e3d90>
html = '<video></video>', selector = 'video'

    @pytest.mark.parametrize(
        "html, selector",
        [
            ("<div><p>no shadow root</p></div>", "div"),
            ("<select></select>", "select"),
            ("<video></video>", "video"),
        ],
        ids=["div", "select", "video"],
    )
    def test_no_user_agent_shadow_root(session, inline, html, selector):
        session.url = inline(html)
    
        element = session.find.css(selector, all=False)
    
        # Make sure user-agent shadow roots are not leaked by get shadow root
        # (eg Firefox uses shadow dom to implement the select widget).
        response = get_shadow_root(session, element.id)
>       assert_error(response, "no such shadow root")

element    = <WebElement f.EAF412BF6CAB041937B8A0FF58408A03.d.A58AD975275295AD05FB737974A9BF0B.e.44>
html       = '<video></video>'
inline     = <function inline.<locals>.inline at 0x7f0b891e3d90>
response   = <Response: status=200 body={"value": {"shadow-6066-11e4-a52e-4f735466cecf": "f.EAF412BF6CAB041937B8A0FF58408A03.d.A58AD975275295AD05FB737974A9BF0B.e.45"}}>
selector   = 'video'
session    = <Session e4723eed7608e102a206bcb951e6f634>

webdriver/tests/classic/get_element_shadow_root/get.py:115: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

response = <Response: status=200 body={"value": {"shadow-6066-11e4-a52e-4f735466cecf": "f.EAF412BF6CAB041937B8A0FF58408A03.d.A58AD975275295AD05FB737974A9BF0B.e.45"}}>
error_code = 'no such shadow root', data = None

    def assert_error(response, error_code, data=None):
        """
        Verify that the provided webdriver.Response instance described
        a valid error response as defined by `dfn-send-an-error` and
        the provided error code.
    
        :param response: ``webdriver.Response`` instance.
        :param error_code: String value of the expected error code
        :param data: Optional dictionary containing additional information about the error.
        """
>       assert response.status == errors[error_code]
E       assert 200 == 404
E        +  where 200 = <Response: status=200 body={"value": {"shadow-6066-11e4-a52e-4f735466cecf": "f.EAF412BF6CAB041937B8A0FF58408A03.d.A58AD975275295AD05FB737974A9BF0B.e.45"}}>.status

data       = None
error_code = 'no such shadow root'
response   = <Response: status=200 body={"value": {"shadow-6066-11e4-a52e-4f735466cecf": "f.EAF412BF6CAB041937B8A0FF58408A03.d.A58AD975275295AD05FB737974A9BF0B.e.45"}}>

webdriver/tests/support/asserts.py:51: AssertionError
 2:12.33 INFO Got 20 unexpected results, with 0 unexpected passes
 2:12.33 wptserve INFO Stopped http server on 127.0.0.1:8000
 2:12.34 wptserve INFO Stopped http server on 127.0.0.1:8003
 2:12.34 wptserve INFO Stopped http server on 127.0.0.1:8443
 2:12.34 wptserve INFO Stopped http server on 127.0.0.1:8001
 2:12.35 wptserve INFO Stopped http server on 127.0.0.1:8002
 2:12.35 wptserve INFO Stopped http server on 127.0.0.1:8444
 2:12.35 wptserve INFO Stopped http server on 127.0.0.1:8446
 2:12.35 wptserve INFO Stopped http server on 127.0.0.1:9000
 2:12.36 wptserve INFO Stopped WebTransport over HTTP/3 server on 127.0.0.1:11000
 2:12.36 wptserve INFO Stopped http server on 127.0.0.1:8445
 2:12.50 wptserve INFO Close on: (<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('127.0.0.1', 8888))
 2:12.50 wptserve INFO Close on: (<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('127.0.0.1', 8889))
 2:12.54 INFO Removed font: Ahem.ttf
 2:12.57 INFO Closing logging queue
 2:12.57 INFO queue closed
 2:12.62 INFO ::: Ran 10 of expected 10 iterations.
 2:12.62 INFO ## All results ##

 2:12.62 INFO ### /webdriver/tests/bidi/browsing_context/locate_nodes/locator.py ###
 2:12.62 INFO |                                                                                                       Subtest                                                                                                       | Results |     Messages     |
 2:12.62 INFO |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------|------------------|
 2:12.62 INFO |                                                                                                                                                                                                                     | OK      |                  |
 2:12.62 INFO | `test_find_by_locator[css]`                                                                                                                                                                                         | PASS    |                  |
 2:12.62 INFO | `test_find_by_locator[xpath]`                                                                                                                                                                                       | PASS    |                  |
 2:12.62 INFO | `test_find_by_locator[innerText]`                                                                                                                                                                                   | PASS    |                  |
 2:12.62 INFO | `test_find_by_locator[a11y-role]`                                                                                                                                                                                   | PASS    |                  |
 2:12.62 INFO | `test_find_by_locator[a11y-name]`                                                                                                                                                                                   | PASS    |                  |
 2:12.62 INFO | `test_find_by_locator[a11y-both]`                                                                                                                                                                                   | PASS    |                  |
 2:12.62 INFO | `test_find_root_element_by_css_locator[:root]`                                                                                                                                                                      | PASS    |                  |
 2:12.62 INFO | `test_find_root_element_by_css_locator[html]`                                                                                                                                                                       | PASS    |                  |
 2:12.62 INFO | `test_no_user_agent_shadow_root[div]`                                                                                                                                                                               | PASS    |                  |
 2:12.62 INFO | `test_no_user_agent_shadow_root[select]`                                                                                                                                                                            | FAIL    | `AssertionError` |
 2:12.62 INFO | `test_no_user_agent_shadow_root[video]`                                                                                                                                                                             | FAIL    | `AssertionError` |
 2:12.62 INFO | `test_find_by_inner_text[ignore_case_true_full_match_no_max_depth]`                                                                                                                                                 | PASS    |                  |
 2:12.62 INFO | `test_find_by_inner_text[ignore_case_false_full_match_no_max_depth]`                                                                                                                                                | PASS    |                  |
 2:12.62 INFO | `test_find_by_inner_text[ignore_case_true_partial_match_no_max_depth]`                                                                                                                                              | PASS    |                  |
 2:12.62 INFO | `test_find_by_inner_text[ignore_case_false_partial_match_no_max_depth]`                                                                                                                                             | PASS    |                  |
 2:12.62 INFO | `test_find_by_inner_text[ignore_case_true_full_match_max_depth_zero]`                                                                                                                                               | PASS    |                  |
 2:12.62 INFO | `test_find_by_inner_text[ignore_case_false_full_match_max_depth_zero]`                                                                                                                                              | PASS    |                  |
 2:12.62 INFO | `test_find_by_inner_text[ignore_case_true_partial_match_max_depth_zero]`                                                                                                                                            | PASS    |                  |
 2:12.62 INFO | `test_find_by_inner_text[ignore_case_false_partial_match_max_depth_zero]`                                                                                                                                           | PASS    |                  |
 2:12.62 INFO | `test_find_by_inner_text[ignore_case_true_full_match_max_depth_two]`                                                                                                                                                | PASS    |                  |
 2:12.62 INFO | `test_find_by_inner_text[ignore_case_false_full_match_max_depth_two]`                                                                                                                                               | PASS    |                  |
 2:12.62 INFO | `test_find_by_inner_text[ignore_case_true_partial_match_max_depth_two]`                                                                                                                                             | PASS    |                  |
 2:12.62 INFO | `test_find_by_inner_text[ignore_case_false_partial_match_max_depth_two]`                                                                                                                                            | PASS    |                  |
 2:12.62 INFO | `test_locate_by_accessibility_attributes[<article data-class='one'>foo</article><div data-class='two'>bar</div>-locator_value0-article]`                                                                            | PASS    |                  |
 2:12.62 INFO | `test_locate_by_accessibility_attributes[<input role='searchbox' data-class='one' /><input data-class='two' type='text'/>-locator_value1-input]`                                                                    | PASS    |                  |
 2:12.62 INFO | `test_locate_by_accessibility_attributes[<button data-class='one'>Ok</button><button data-class='two'>Cancel</button>-locator_value2-button]`                                                                       | PASS    |                  |
 2:12.62 INFO | `test_locate_by_accessibility_attributes[<button data-class='one' aria-labelledby='one two'></button><div id='one'>ok</div><div id='two'>go</div><button data-class='two'>Cancel</button>-locator_value3-button]`   | PASS    |                  |
 2:12.62 INFO | `test_locate_by_accessibility_attributes[<button data-class='one' aria-label='foo'>bar</button><button data-class='two' aria-label='bar'>foo</button>-locator_value4-button]`                                       | PASS    |                  |
 2:12.62 INFO | `test_locate_by_accessibility_attributes[<div role='banner' aria-label='foo' data-class='one'></div><div role='banner'  data-class='two'></div><div aria-label='foo' data-class='three'></div>-locator_value5-div]` | PASS    |                  |
 2:12.62 INFO | `test_locate_by_context[same_origin]`                                                                                                                                                                               | PASS    |                  |
 2:12.62 INFO | `test_locate_by_context[cross_origin]`                                                                                                                                                                              | PASS    |                  |
 2:12.62 INFO | `test_locate_by_context_in_iframe[same_origin]`                                                                                                                                                                     | PASS    |                  |
 2:12.62 INFO | `test_locate_by_context_in_iframe[cross_origin]`                                                                                                                                                                    | PASS    |                  |
 2:12.62 INFO | `test_locate_by_context_in_shadow_dom[open-same_origin]`                                                                                                                                                            | PASS    |                  |
 2:12.62 INFO | `test_locate_by_context_in_shadow_dom[open-cross_origin]`                                                                                                                                                           | PASS    |                  |
 2:12.62 INFO | `test_locate_by_context_in_shadow_dom[closed-same_origin]`                                                                                                                                                          | PASS    |                  |
 2:12.62 INFO | `test_locate_by_context_in_shadow_dom[closed-cross_origin]`                                                                                                                                                         | PASS    |                  |
 2:12.62 INFO 
 2:12.62 INFO ### /webdriver/tests/classic/get_element_shadow_root/get.py ###
 2:12.62 INFO |                         Subtest                         | Results |                            Messages                            |
 2:12.62 INFO |---------------------------------------------------------|---------|----------------------------------------------------------------|
 2:12.62 INFO |                                                         | OK      |                                                                |
 2:12.62 INFO | `test_no_top_browsing_context`                          | PASS    |                                                                |
 2:12.62 INFO | `test_no_browsing_context`                              | FAIL    | `AssertionError: assert 'no such element' == 'no such window'` |
 2:12.62 INFO | `test_no_such_element_with_invalid_value`               | PASS    |                                                                |
 2:12.62 INFO | `test_no_such_element_from_other_window_handle[open]`   | PASS    |                                                                |
 2:12.62 INFO | `test_no_such_element_from_other_window_handle[closed]` | PASS    |                                                                |
 2:12.62 INFO | `test_no_such_element_from_other_frame[open]`           | PASS    |                                                                |
 2:12.62 INFO | `test_no_such_element_from_other_frame[closed]`         | PASS    |                                                                |
 2:12.62 INFO | `test_stale_element_reference[top_context]`             | PASS    |                                                                |
 2:12.62 INFO | `test_stale_element_reference[child_context]`           | PASS    |                                                                |
 2:12.62 INFO | `test_get_shadow_root`                                  | PASS    |                                                                |
 2:12.62 INFO | `test_no_user_agent_shadow_root[div]`                   | PASS    |                                                                |
 2:12.62 INFO | `test_no_user_agent_shadow_root[select]`                | FAIL    | `assert 200 == 404`                                            |
 2:12.62 INFO | `test_no_user_agent_shadow_root[video]`                 | FAIL    | `assert 200 == 404`                                            |
 2:12.62 INFO 
 2:12.62 INFO ::: Running tests in a loop with restarts 10 times : PASS
 2:12.62 INFO :::
 2:12.62 INFO ::: Test verification PASS
 2:12.62 INFO :::
[taskcluster 2026-03-05 11:37:04.286Z] === Task Finished ===
[taskcluster 2026-03-05 11:37:04.654Z] Successful task run with exit code: 0 completed in 365.079 seconds