[Origin API] Add more test coverage for opaque origin comparison #56922
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-01-08T13:36:27.170Z
Resolved: 2026-01-08T13:41:54.594Z
Task Execution Time: 5 minutes, 27 seconds, 424 milliseconds
Task Status: completed
Reason Resolved: completed
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-01-08 13:36:27.237Z] Task ID: eAUF7YeZSKaTn9vd5CnIKw
[taskcluster 2026-01-08 13:36:27.237Z] Worker ID: 5487853538806845554
[taskcluster 2026-01-08 13:36:27.237Z] Worker Group: us-east1-d
[taskcluster 2026-01-08 13:36:27.237Z] Worker Node Type: projects/757942385826/machineTypes/n2-standard-4
[taskcluster 2026-01-08 13:36:27.237Z] Worker Pool: proj-wpt/ci
[taskcluster 2026-01-08 13:36:27.237Z] Worker Version: 46.1.0
[taskcluster 2026-01-08 13:36:27.237Z] Public IP: 34.75.237.67
[taskcluster 2026-01-08 13:36:27.237Z] Hostname: proj-wpt-ci-v-jiqhn-rlywxi04kywerq
[taskcluster 2026-01-08 13:36:28.178Z] === 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
...(2567 lines hidden)...
1:16.54 INFO | `Origin.from(Origin.from("https://site.example:123")) is an tuple origin.` | PASS | |
1:16.54 INFO | `Origin.from(Origin.from("http://sub.site.example")) is an tuple origin.` | PASS | |
1:16.54 INFO | `Origin.from(Origin.from("https://sub.site.example")) is an tuple origin.` | PASS | |
1:16.54 INFO | `Origin.from(Origin.from("https://sub.site.example:123")) is an tuple origin.` | PASS | |
1:16.54 INFO | `Origin.from(Origin.from("https://xn--mlauted-m2a.example")) is an tuple origin.` | PASS | |
1:16.54 INFO | `Origin.from(Origin.from("ftp://ftp.example")) is an tuple origin.` | PASS | |
1:16.54 INFO | `Origin.from(Origin.from("ws://ws.example")) is an tuple origin.` | PASS | |
1:16.54 INFO | `Origin.from(Origin.from("wss://wss.example")) is an tuple origin.` | PASS | |
1:16.54 INFO | `Origin.from(Origin.from("https://trailing.slash/")) is an tuple origin.` | PASS | |
1:16.54 INFO | `Origin.from(Origin.from("https://user:pass@site.example")) is an tuple origin.` | PASS | |
1:16.54 INFO | `Origin.from(Origin.from("https://has.a.port:1234/and/path")) is an tuple origin.` | PASS | |
1:16.54 INFO | `Origin.from(Origin.from("https://ümlauted.example")) is an tuple origin.` | PASS | |
1:16.54 INFO | `Origin.from(Origin.from("blob:https://example.com/some-guid")) is an tuple origin.` | PASS | |
1:16.54 INFO | `Origin.from(Origin.from("ftp://example.com/")) is an tuple origin.` | PASS | |
1:16.54 INFO | `Origin.from(Origin.from("https://example.com/path?query#fragment")) is an tuple origin.` | PASS | |
1:16.54 INFO | `Origin.from(Origin.from("https://127.0.0.1/")) is an tuple origin.` | PASS | |
1:16.54 INFO | `Origin.from(Origin.from("https://[::1]/")) is an tuple origin.` | PASS | |
1:16.54 INFO
1:16.54 INFO ### /html/browsers/origin/api/origin-from-string.any.html ###
1:16.54 INFO | Subtest | Results | Messages |
1:16.54 INFO |----------------------------------------------------------------------------------------|---------|----------|
1:16.54 INFO | | OK | |
1:16.54 INFO | `Origin.from("") throws a TypeError.` | PASS | |
1:16.54 INFO | `Origin.from("not-valid") throws a TypeError.` | PASS | |
1:16.54 INFO | `Origin.from("about:blank") is an opaque origin.` | PASS | |
1:16.54 INFO | `Origin.from("data:text/plain,opaque") is an opaque origin.` | PASS | |
1:16.54 INFO | `Origin.from("weird-protocol:whatever") is an opaque origin.` | PASS | |
1:16.54 INFO | `Origin.from("weird-hierarchical-protocol://host/path?etc") is an opaque origin.` | PASS | |
1:16.54 INFO | `Origin.from("blob:weird-protocol:whatever") is an opaque origin.` | PASS | |
1:16.54 INFO | `Origin.from("blob:weird-hierarchical-protocol://host/path?etc") is an opaque origin.` | PASS | |
1:16.54 INFO | `Origin.from("http://site.example") is an opaque origin.` | PASS | |
1:16.54 INFO | `Origin.from("https://site.example") is an opaque origin.` | PASS | |
1:16.54 INFO | `Origin.from("https://site.example:123") is an opaque origin.` | PASS | |
1:16.54 INFO | `Origin.from("http://sub.site.example") is an opaque origin.` | PASS | |
1:16.54 INFO | `Origin.from("https://sub.site.example") is an opaque origin.` | PASS | |
1:16.54 INFO | `Origin.from("https://sub.site.example:123") is an opaque origin.` | PASS | |
1:16.54 INFO | `Origin.from("https://xn--mlauted-m2a.example") is an opaque origin.` | PASS | |
1:16.54 INFO | `Origin.from("ftp://ftp.example") is an opaque origin.` | PASS | |
1:16.54 INFO | `Origin.from("ws://ws.example") is an opaque origin.` | PASS | |
1:16.54 INFO | `Origin.from("wss://wss.example") is an opaque origin.` | PASS | |
1:16.54 INFO | `Origin.from("https://trailing.slash/") is an opaque origin.` | PASS | |
1:16.54 INFO | `Origin.from("https://user:pass@site.example") is an opaque origin.` | PASS | |
1:16.54 INFO | `Origin.from("https://has.a.port:1234/and/path") is an opaque origin.` | PASS | |
1:16.54 INFO | `Origin.from("https://ümlauted.example") is an opaque origin.` | PASS | |
1:16.54 INFO | `Origin.from("blob:https://example.com/some-guid") is an opaque origin.` | PASS | |
1:16.54 INFO | `Origin.from("ftp://example.com/") is an opaque origin.` | PASS | |
1:16.54 INFO | `Origin.from("https://example.com/path?query#fragment") is an opaque origin.` | PASS | |
1:16.54 INFO | `Origin.from("https://127.0.0.1/") is an opaque origin.` | PASS | |
1:16.54 INFO | `Origin.from("https://[::1]/") is an opaque origin.` | PASS | |
1:16.54 INFO
1:16.54 INFO ### /html/browsers/origin/api/origin-from-string.any.worker.html ###
1:16.54 INFO | Subtest | Results | Messages |
1:16.54 INFO |----------------------------------------------------------------------------------------|---------|----------|
1:16.54 INFO | | OK | |
1:16.54 INFO | `Origin.from("") throws a TypeError.` | PASS | |
1:16.55 INFO | `Origin.from("not-valid") throws a TypeError.` | PASS | |
1:16.55 INFO | `Origin.from("about:blank") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("data:text/plain,opaque") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("weird-protocol:whatever") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("weird-hierarchical-protocol://host/path?etc") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("blob:weird-protocol:whatever") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("blob:weird-hierarchical-protocol://host/path?etc") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("http://site.example") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://site.example") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://site.example:123") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("http://sub.site.example") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://sub.site.example") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://sub.site.example:123") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://xn--mlauted-m2a.example") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("ftp://ftp.example") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("ws://ws.example") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("wss://wss.example") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://trailing.slash/") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://user:pass@site.example") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://has.a.port:1234/and/path") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://ümlauted.example") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("blob:https://example.com/some-guid") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("ftp://example.com/") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://example.com/path?query#fragment") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://127.0.0.1/") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://[::1]/") is an opaque origin.` | PASS | |
1:16.55 INFO
1:16.55 INFO ### /html/browsers/origin/api/origin-from-url.any.html ###
1:16.55 INFO | Subtest | Results | Messages |
1:16.55 INFO |----------------------------------------------------------------------------------------|---------|----------|
1:16.55 INFO | | OK | |
1:16.55 INFO | `Origin.from("") throws a TypeError.` | PASS | |
1:16.55 INFO | `Origin.from("not-valid") throws a TypeError.` | PASS | |
1:16.55 INFO | `Origin.from("about:blank") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("data:text/plain,opaque") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("weird-protocol:whatever") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("weird-hierarchical-protocol://host/path?etc") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("blob:weird-protocol:whatever") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("blob:weird-hierarchical-protocol://host/path?etc") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("http://site.example") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://site.example") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://site.example:123") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("http://sub.site.example") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://sub.site.example") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://sub.site.example:123") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://xn--mlauted-m2a.example") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("ftp://ftp.example") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("ws://ws.example") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("wss://wss.example") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://trailing.slash/") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://user:pass@site.example") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://has.a.port:1234/and/path") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://ümlauted.example") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("blob:https://example.com/some-guid") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("ftp://example.com/") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://example.com/path?query#fragment") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://127.0.0.1/") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://[::1]/") is an opaque origin.` | PASS | |
1:16.55 INFO
1:16.55 INFO ### /html/browsers/origin/api/origin-from-url.any.worker.html ###
1:16.55 INFO | Subtest | Results | Messages |
1:16.55 INFO |----------------------------------------------------------------------------------------|---------|----------|
1:16.55 INFO | | OK | |
1:16.55 INFO | `Origin.from("") throws a TypeError.` | PASS | |
1:16.55 INFO | `Origin.from("not-valid") throws a TypeError.` | PASS | |
1:16.55 INFO | `Origin.from("about:blank") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("data:text/plain,opaque") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("weird-protocol:whatever") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("weird-hierarchical-protocol://host/path?etc") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("blob:weird-protocol:whatever") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("blob:weird-hierarchical-protocol://host/path?etc") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("http://site.example") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://site.example") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://site.example:123") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("http://sub.site.example") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://sub.site.example") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://sub.site.example:123") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://xn--mlauted-m2a.example") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("ftp://ftp.example") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("ws://ws.example") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("wss://wss.example") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://trailing.slash/") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://user:pass@site.example") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://has.a.port:1234/and/path") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://ümlauted.example") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("blob:https://example.com/some-guid") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("ftp://example.com/") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://example.com/path?query#fragment") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://127.0.0.1/") is an opaque origin.` | PASS | |
1:16.55 INFO | `Origin.from("https://[::1]/") is an opaque origin.` | PASS | |
1:16.55 INFO
1:16.55 INFO ### /html/browsers/origin/api/origin-from-window.window.html ###
1:16.55 INFO | Subtest | Results | Messages |
1:16.55 INFO |-----------------------------------------------------------------------|---------|----------|
1:16.55 INFO | | OK | |
1:16.55 INFO | `Origin.from(window) returns a tuple origin.` | PASS | |
1:16.55 INFO | `Origin.from(Window) returns a tuple origin for same-origin frames.` | PASS | |
1:16.55 INFO | `Origin.from(Window) throws for cross-origin frames.` | PASS | |
1:16.55 INFO | `Origin.from(Window) throws for sandboxed frames.` | PASS | |
1:16.55 INFO | `Origin.from(Window) returns a tuple origin for same-origin windows.` | PASS | |
1:16.55 INFO | `Origin.from(Window) throws for cross-origin windows.` | PASS | |
1:16.55 INFO | `Origin.from(Window) returns an opaque origin for a data URL source.` | PASS | |
1:16.55 INFO
1:16.55 INFO ### /html/browsers/origin/api/origin-from-worker.window.html ###
1:16.55 INFO | Subtest | Results | Messages |
1:16.55 INFO |-----------------------------------------------------------------|---------|----------|
1:16.55 INFO | | OK | |
1:16.55 INFO | `Comparison of Origin.from(Worker) for opaque data URL origin.` | PASS | |
1:16.55 INFO | `Comparison of Origin.from(Worker) tuple origins.` | PASS | |
1:16.55 INFO
1:16.55 INFO ### /html/browsers/origin/api/origin-from.any.html ###
1:16.55 INFO | Subtest | Results | Messages |
1:16.55 INFO |------------------------------------------------------------------------|---------|----------|
1:16.55 INFO | | OK | |
1:16.55 INFO | `Origin.from(null) throws a TypeError.` | PASS | |
1:16.55 INFO | `Origin.from(undefined) throws a TypeError.` | PASS | |
1:16.55 INFO | `Origin.from(1) throws a TypeError.` | PASS | |
1:16.55 INFO | `Origin.from(1.1) throws a TypeError.` | PASS | |
1:16.55 INFO | `Origin.from(true) throws a TypeError.` | PASS | |
1:16.55 INFO | `Origin.from([object Object]) throws a TypeError.` | PASS | |
1:16.55 INFO | `Origin.from(function Object() { [native code] }) throws a TypeError.` | PASS | |
1:16.55 INFO | `Origin.from(function Origin() { [native code] }) throws a TypeError.` | PASS | |
1:16.55 INFO | `Origin.from(function from() { [native code] }) throws a TypeError.` | PASS | |
1:16.55 INFO
1:16.55 INFO ### /html/browsers/origin/api/origin-from.any.worker.html ###
1:16.55 INFO | Subtest | Results | Messages |
1:16.55 INFO |------------------------------------------------------------------------|---------|----------|
1:16.55 INFO | | OK | |
1:16.55 INFO | `Origin.from(null) throws a TypeError.` | PASS | |
1:16.55 INFO | `Origin.from(undefined) throws a TypeError.` | PASS | |
1:16.55 INFO | `Origin.from(1) throws a TypeError.` | PASS | |
1:16.55 INFO | `Origin.from(1.1) throws a TypeError.` | PASS | |
1:16.55 INFO | `Origin.from(true) throws a TypeError.` | PASS | |
1:16.55 INFO | `Origin.from([object Object]) throws a TypeError.` | PASS | |
1:16.55 INFO | `Origin.from(function Object() { [native code] }) throws a TypeError.` | PASS | |
1:16.55 INFO | `Origin.from(function Origin() { [native code] }) throws a TypeError.` | PASS | |
1:16.55 INFO | `Origin.from(function from() { [native code] }) throws a TypeError.` | PASS | |
1:16.55 INFO
1:16.55 INFO ::: Running tests in a loop with restarts 10 times : PASS
1:16.55 INFO :::
1:16.55 INFO ::: Test verification PASS
1:16.55 INFO :::
[taskcluster 2026-01-08 13:41:53.219Z] === Task Finished ===
[taskcluster 2026-01-08 13:41:53.638Z] Successful task run with exit code: 0 completed in 326.402 seconds