Add tests for thenables returned from async script #57160
Community-TC (pull_request)
Collect results for all tests affected by a pull request in chrome.
Details
View task in Taskcluster | View logs in Taskcluster | View task group in Taskcluster
Task Status
Started: 2026-01-25T02:44:53.105Z
Resolved: 2026-01-25T02:48:00.305Z
Task Execution Time: 3 minutes, 7 seconds, 200 milliseconds
Task Status: completed
Reason Resolved: completed
RunId: 0
Artifacts
- public/logs/live_backing.log
- public/logs/live.log
- public/results/checkrun.md
- public/results/wpt_report.json.gz
- public/results/wpt_screenshot.txt.gz
WPT Command: python3 ./wpt run --channel=dev --no-fail-on-unexpected --log-wptreport=../artifacts/wpt_report.json --log-wptscreenshot=../artifacts/wpt_screenshot.txt --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-01-25 02:44:53.289Z] Task ID: Ekn06eqKT9ecCSynwJrdYA
[taskcluster 2026-01-25 02:44:53.289Z] Worker ID: 789423281376083358
[taskcluster 2026-01-25 02:44:53.289Z] Worker Group: us-east1-b
[taskcluster 2026-01-25 02:44:53.289Z] Worker Node Type: projects/757942385826/machineTypes/n2-standard-4
[taskcluster 2026-01-25 02:44:53.289Z] Worker Pool: proj-wpt/ci
[taskcluster 2026-01-25 02:44:53.289Z] Worker Version: 46.1.0
[taskcluster 2026-01-25 02:44:53.289Z] Public IP: 34.138.197.158
[taskcluster 2026-01-25 02:44:53.289Z] Hostname: proj-wpt-ci-igsgh05ssichnavdv-tzra
ac811f28856d - Started downloading
ac811f28856d - Downloaded in 0.032 seconds
40516d781e70 - Started downloading
8f84a9f2102e - Started downloading
44ebbf800033 - Started downloading
44ebbf800033 - Downloaded in 0.044 seconds
8f84a9f2102e - Downloaded in 0.201 seconds
4f4fb700ef54 - Started downloading
4f4fb700ef54 - Downloaded in 0.002 seconds
a8884b21e40e - Started downloading
79c347416ee8 - Started downloading
...(612 lines hidden)...
0:44.61 INFO STDOUT: let resolve = arguments[0];
0:44.61 INFO STDOUT: setTimeout(() => resolve('callback'), 200);
0:44.61 INFO STDOUT: return Promise.resolve('promise');
0:44.62 INFO STDOUT: """)
0:44.62 INFO STDOUT: > assert_success(response, "promise")
0:44.62 INFO STDOUT: response = <Response: status=200 body={"value": "callback"}>
0:44.62 INFO STDOUT: session = <Session b63cbdcabc1b6b07b75d7d206667c56c>
0:44.62 INFO STDOUT: webdriver/tests/classic/execute_async_script/promise.py
0:44.62 INFO STDOUT: :128:
0:44.62 INFO STDOUT: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
0:44.62 INFO STDOUT: response = <Response: status=200 body={"value": "callback"}>, value = 'promise'
0:44.62 INFO STDOUT: def assert_success(response, value=None):
0:44.62 INFO STDOUT: """
0:44.62 INFO STDOUT: Verify that the provided webdriver.Response instance described
0:44.62 INFO STDOUT: a valid success response as defined by `dfn-send-a-response` and
0:44.62 INFO STDOUT: the provided response value.
0:44.62 INFO STDOUT:
0:44.62 INFO STDOUT: :param response: ``webdriver.Response`` instance.
0:44.62 INFO STDOUT: :param value: Expected value of the response body, if any.
0:44.62 INFO STDOUT: """
0:44.62 INFO STDOUT: assert response.status == 200, str(response.error)
0:44.62 INFO STDOUT:
0:44.62 INFO STDOUT: if value is not None:
0:44.62 INFO STDOUT: > assert response.body["value"] == value
0:44.62 INFO STDOUT: E AssertionError: assert 'callback' == 'promise'
0:44.62 TEST_END: Test OK. Subtests passed 12/13. Unexpected 1
FAIL test_returned_promise_fulfilled_over_callback - AssertionError: assert 'callback' == 'promise'
session = <Session b63cbdcabc1b6b07b75d7d206667c56c>
def test_returned_promise_fulfilled_over_callback(session):
session.timeouts.script = 1
response = execute_async_script(session, """
let resolve = arguments[0];
setTimeout(() => resolve('callback'), 200);
return Promise.resolve('promise');
""")
> assert_success(response, "promise")
response = <Response: status=200 body={"value": "callback"}>
session = <Session b63cbdcabc1b6b07b75d7d206667c56c>
webdriver/tests/classic/execute_async_script/promise.py:128:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
response = <Response: status=200 body={"value": "callback"}>, value = 'promise'
def assert_success(response, value=None):
"""
Verify that the provided webdriver.Response instance described
a valid success response as defined by `dfn-send-a-response` and
the provided response value.
:param response: ``webdriver.Response`` instance.
:param value: Expected value of the response body, if any.
"""
assert response.status == 200, str(response.error)
if value is not None:
> assert response.body["value"] == value
E AssertionError: assert 'callback' == 'promise'
E
E - promise
E + callback
response = <Response: status=200 body={"value": "callback"}>
value = 'promise'
webdriver/tests/support/asserts.py:76: AssertionError
0:44.62 TEST_START: /webdriver/tests/classic/execute_script/promise.py
0:44.62 INFO STDOUT: E
0:44.62 INFO STDOUT: E - promise
0:44.62 INFO STDOUT: E + callback
0:44.62 INFO STDOUT: response = <Response: status=200 body={"value": "callback"}>
0:44.62 INFO STDOUT: value = 'promise'
0:44.62 INFO STDOUT: webdriver/tests/support/asserts.py
0:44.62 INFO STDOUT: :76: AssertionError
0:44.62 INFO STDOUT: =========================== short test summary info ============================
0:44.62 INFO STDOUT: FAILED webdriver/tests/classic/execute_async_script/promise.py::test_returned_promise_fulfilled_over_callback - AssertionError: assert 'callback' == 'promise'
- promise
+ callback
0:44.62 INFO STDOUT: ========================= 1 failed, 12 passed in 2.13s =========================
0:44.66 INFO STDOUT: ============================= test session starts ==============================
0:44.66 INFO STDOUT: platform linux -- Python 3.10.12, pytest-8.2.1, pluggy-unknown -- /usr/bin/python3
0:44.66 INFO STDOUT: rootdir: /home/test/web-platform-tests/webdriver/tests
0:44.66 INFO STDOUT: configfile: pytest.ini
0:44.66 INFO STDOUT: plugins: asyncio-0.19.0
0:44.66 INFO STDOUT: asyncio: mode=strict
0:44.66 INFO STDOUT: collecting ...
0:44.68 INFO STDOUT: collected 11 items
0:44.68 INFO STDOUT: webdriver/tests/classic/execute_script/promise.py::test_promise_resolve
0:44.88 pid:2207 [2368:2368:0125/024755.613326:WARNING:ui/gfx/linux/gbm_support_x11.cc:48] dri3 extension not supported.
0:44.88 pid:2207 [2368:2368:0125/024755.615893:WARNING:sandbox/policy/linux/sandbox_linux.cc:405] InitializeSandbox() called with multiple threads in process gpu-process.
0:44.94 pid:2207 [1769309275.675][WARNING]: You are using an unsupported command-line switch: --disable-build-check. Please don't report bugs that cannot be reproduced with this switch removed.
0:44.94 pid:2207 [2338:2338:0125/024755.676497:ERROR:dbus/object_proxy.cc:572] Failed to call method: org.freedesktop.DBus.Properties.GetAll: object_path= /org/freedesktop/UPower/devices/DisplayDevice: org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.UPower was not provided by any .service files
0:44.94 pid:2207 [2338:2338:0125/024755.676525:WARNING:dbus/property.cc:174] GetAll request failed for: org.freedesktop.UPower.Device
0:44.97 pid:2207 [2338:2338:0125/024755.709965:WARNING:ui/base/idle/idle_linux.cc:111] None of the known D-Bus ScreenSaver services could be used.
0:45.04 INFO STDOUT: PASSED
0:45.05 INFO STDOUT: webdriver/tests/classic/execute_script/promise.py::test_promise_resolve_delayed
0:45.11 INFO STDOUT: PASSED
0:45.13 INFO STDOUT: webdriver/tests/classic/execute_script/promise.py::test_promise_all_resolve
0:45.14 INFO STDOUT: PASSED
0:45.15 INFO STDOUT: webdriver/tests/classic/execute_script/promise.py::test_await_promise_resolve
0:45.16 INFO STDOUT: PASSED
0:45.17 INFO STDOUT: webdriver/tests/classic/execute_script/promise.py::test_promise_resolve_timeout
0:45.28 pid:2207 [1769309276.015][SEVERE]: Timed out receiving message from renderer: 0.100
0:45.28 INFO STDOUT: PASSED
0:45.30 INFO STDOUT: webdriver/tests/classic/execute_script/promise.py::test_promise_reject
0:45.31 INFO STDOUT: PASSED
0:45.32 INFO STDOUT: webdriver/tests/classic/execute_script/promise.py::test_promise_reject_delayed
0:45.38 INFO STDOUT: PASSED
0:45.40 INFO STDOUT: webdriver/tests/classic/execute_script/promise.py::test_promise_all_reject
0:45.42 INFO STDOUT: PASSED
0:45.43 INFO STDOUT: webdriver/tests/classic/execute_script/promise.py::test_await_promise_reject
0:45.45 INFO STDOUT: PASSED
0:45.46 INFO STDOUT: webdriver/tests/classic/execute_script/promise.py::test_promise_reject_timeout
0:45.56 pid:2207 [1769309276.301][SEVERE]: Timed out receiving message from renderer: 0.100
0:45.57 INFO STDOUT: PASSED
0:45.58 INFO STDOUT: webdriver/tests/classic/execute_script/promise.py::test_returned_poisoned_thenable
0:45.59 INFO STDOUT: PASSED
0:45.65 INFO STDOUT: ============================== 11 passed in 1.00s ==============================
0:45.66 TEST_END: Test OK. Subtests passed 11/11. Unexpected 0
0:45.66 INFO No more tests
0:45.66 INFO Closing logging queue
0:45.66 INFO queue closed
0:45.73 SUITE_END
web-platform-test
~~~~~~~~~~~~~~~~~
Ran 26 checks (24 subtests, 2 tests)
Expected results: 25
Unexpected results: 1
subtest: 1 (1 fail)
Unexpected Results
------------------
/webdriver/tests/classic/execute_async_script/promise.py
FAIL test_returned_promise_fulfilled_over_callback - AssertionError: assert 'callback' == 'promise'
session = <Session b63cbdcabc1b6b07b75d7d206667c56c>
def test_returned_promise_fulfilled_over_callback(session):
session.timeouts.script = 1
response = execute_async_script(session, """
let resolve = arguments[0];
setTimeout(() => resolve('callback'), 200);
return Promise.resolve('promise');
""")
> assert_success(response, "promise")
response = <Response: status=200 body={"value": "callback"}>
session = <Session b63cbdcabc1b6b07b75d7d206667c56c>
webdriver/tests/classic/execute_async_script/promise.py:128:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
response = <Response: status=200 body={"value": "callback"}>, value = 'promise'
def assert_success(response, value=None):
"""
Verify that the provided webdriver.Response instance described
a valid success response as defined by `dfn-send-a-response` and
the provided response value.
:param response: ``webdriver.Response`` instance.
:param value: Expected value of the response body, if any.
"""
assert response.status == 200, str(response.error)
if value is not None:
> assert response.body["value"] == value
E AssertionError: assert 'callback' == 'promise'
E
E - promise
E + callback
response = <Response: status=200 body={"value": "callback"}>
value = 'promise'
webdriver/tests/support/asserts.py:76: AssertionError
0:45.73 INFO Got 1 unexpected results, with 0 unexpected passes
0:45.73 wptserve INFO Stopped http server on 127.0.0.1:8001
0:45.73 wptserve INFO Stopped http server on 127.0.0.1:8000
0:45.73 wptserve INFO Stopped http server on 127.0.0.1:8002
0:45.74 wptserve INFO Stopped http server on 127.0.0.1:8003
0:45.74 wptserve INFO Stopped http server on 127.0.0.1:8443
0:45.74 wptserve INFO Stopped http server on 127.0.0.1:8444
0:45.74 wptserve INFO Stopped http server on 127.0.0.1:8445
0:45.74 wptserve INFO Stopped http server on 127.0.0.1:8446
0:45.75 wptserve INFO Stopped http server on 127.0.0.1:9000
0:45.75 wptserve INFO Stopped WebTransport over HTTP/3 server on 127.0.0.1:11000
0:45.82 wptserve INFO Close on: (<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('127.0.0.1', 8888))
0:45.82 wptserve INFO Close on: (<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('127.0.0.1', 8889))
0:45.88 INFO Removed font: Ahem.ttf
0:45.90 INFO Closing logging queue
0:45.90 INFO queue closed
0:45.90 INFO Tolerating 1 unexpected results
[taskcluster 2026-01-25 02:47:58.279Z] === Task Finished ===
[taskcluster 2026-01-25 02:47:59.425Z] Successful task run with exit code: 0 completed in 186.139 seconds