Closed Bug 1693595 Opened 3 years ago Closed 3 years ago

[wpt-sync] Sync PR 27679 - URLPattern: Add wildcard '*' support.

Categories

(Testing :: web-platform-tests, task, P4)

task

Tracking

(firefox88 fixed)

RESOLVED FIXED
88 Branch
Tracking Status
firefox88 --- fixed

People

(Reporter: mozilla.org, Unassigned)

References

()

Details

(Whiteboard: [wptsync downstream])

Sync web-platform-tests PR 27679 into mozilla-central (this bug is closed when the sync is complete).

PR: https://github.com/web-platform-tests/wpt/pull/27679
Details from upstream follow.

b'Ben Kelly <wanderview@chromium.org>' wrote:

URLPattern: Add wildcard '*' support.

This CL adds support for a wildcard * character in patterns. It is
treated as being equivalent to the (.*) unnamed regexp group. This
means it can have its own following modifiers like *? which can affect
how prefix characters are treated.

This CL deviates from the current upstream path-to-regexp v6.2.0, but
we plan to upstream this change. Initial discussions suggest that its
possible this will be accepted.

Bug: 1141510
Change-Id: I386b03e8bb05aab9586464986faf002e824e189e

Reviewed-on: https://chromium-review.googlesource.com/2673887
WPT-Export-Revision: 0c69f9500e01eb91b49ff762d7a5cfa4d25cc06a

CI Results

Ran 15 Firefox configurations based on mozilla-central, and Firefox, Chrome, and Safari on GitHub CI

Total 4 tests and 143 subtests

Status Summary

Firefox

OK : 4
PASS : 4
FAIL : 568

Chrome

OK : 4
PASS : 484
FAIL : 88

Safari

OK : 3
PASS : 3
FAIL : 426
ERROR: 1

Links

Gecko CI (Treeherder)
GitHub PR Head
GitHub PR Base

Details

New Tests That Don't Pass

/urlpattern/urlpattern.https.any.worker.html
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"/foo/ba"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"/foo/bar/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: "https://example.com/foo/bar": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: "https://example.com/foo/bar/baz": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: {"hostname":"example.com","pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: {"hostname":"example.com","pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"/foo/bar","baseURL":"https://example.com"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"/foo/bar/baz","baseURL":"https://example.com"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"hostname":"example.com","pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"protocol":"https","hostname":"example.com","pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"protocol":"https","hostname":"example.com","pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"protocol":"https","hostname":"example.com","pathname":"/foo/bar","search":"otherquery","hash":"otherhash"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: "https://example.com/foo/bar": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: "https://example.com/foo/bar?otherquery#otherhash": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: "https://example.com/foo/bar/baz": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: "https://other.com/foo/bar": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: "http://other.com/foo/bar": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"pathname":"/foo/bar","baseURL":"https://example.com"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"pathname":"/foo/bar/baz","baseURL":"https://example.com"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"pathname":"/foo/bar","baseURL":"https://other.com"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"pathname":"/foo/bar","baseURL":"http://example.com"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar"} Input: {"pathname":"/foo/index.html"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar"} Input: {"pathname":"/foo/bar/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
"} Input: {"pathname":"/foo/"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
"} Input: {"pathname":"/foo"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar(.)"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar(.
)"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar(.)"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar(.
)"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar?"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar?"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar?"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar?"} Input: {"pathname":"/foobar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar?"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar+"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar+"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar+"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar+"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar+"} Input: {"pathname":"/foobar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar*"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar*"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar*"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar*"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar*"} Input: {"pathname":"/foobar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)?"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
?"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)?"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
?"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)?"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
?"} Input: {"pathname":"/foo"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)?"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
?"} Input: {"pathname":"/foo/"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)?"} Input: {"pathname":"/foobar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
?"} Input: {"pathname":"/foobar"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)?"} Input: {"pathname":"/fo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
?"} Input: {"pathname":"/fo"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)+"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
+"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)+"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
+"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)+"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
+"} Input: {"pathname":"/foo"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)+"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
+"} Input: {"pathname":"/foo/"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)+"} Input: {"pathname":"/foobar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
+"} Input: {"pathname":"/foobar"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)+"} Input: {"pathname":"/fo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
+"} Input: {"pathname":"/fo"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/"} Input: {"pathname":"/foo"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
"} Input: {"pathname":"/foo/"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foobar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/"} Input: {"pathname":"/foobar"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/fo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
"} Input: {"pathname":"/fo"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}?"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}?"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}?"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}?"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}+"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}+"} Input: {"pathname":"/foo/bar/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}+"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}+"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}+"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}
"} Input: {"pathname":"/foo/bar/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}
"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"protocol":"(café)"} Input: undefined: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"username":"(café)"} Input: undefined: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"password":"(café)"} Input: undefined: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"hostname":"(café)"} Input: undefined: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"(café)"} Input: undefined: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"search":"(café)"} Input: undefined: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"hash":"(café)"} Input: undefined: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"protocol":"(.
)"} Input: {"protocol":"café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"protocol":"(.)"} Input: {"protocol":"cafe"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"protocol":"foo-bar"} Input: {"protocol":"foo-bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"username":"caf%C3%A9"} Input: {"username":"café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"username":"caf%c3%a9"} Input: {"username":"café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"password":"caf%C3%A9"} Input: {"password":"café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"password":"caf%c3%a9"} Input: {"password":"café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"hostname":"xn--caf-dma.com"} Input: {"hostname":"café.com"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"port":""} Input: {"protocol":"http","port":"80"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"port":"80"} Input: {"port":"80"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"port":"(.
)"} Input: {"port":"invalid80"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"/foo/./bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/baz"} Input: {"pathname":"/foo/bar/../baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/caf%C3%A9"} Input: {"pathname":"/café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/caf%c3%a9"} Input: {"pathname":"/café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"foo/bar","baseURL":"https://example.com"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"foo/bar"} Input: "https://example.com/foo/bar": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"foo/bar","baseURL":"https://example.com"} Input: "https://example.com/foo/bar": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":":name.html","baseURL":"https://example.com"} Input: "https://example.com/foo.html": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"search":"q=caf%C3%A9"} Input: {"search":"q=café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"search":"q=caf%c3%a9"} Input: {"search":"q=café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"hash":"caf%C3%A9"} Input: {"hash":"café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"hash":"caf%c3%a9"} Input: {"hash":"café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"protocol":"about","pathname":"(blank|sourcedoc)"} Input: "about:blank": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"protocol":"data","pathname":":number([0-9]+)"} Input: "data:8675309": FAIL (Chrome: PASS, Safari: FAIL)
/urlpattern/urlpattern.https.any.html
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"/foo/ba"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"/foo/bar/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: "https://example.com/foo/bar": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: "https://example.com/foo/bar/baz": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: {"hostname":"example.com","pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: {"hostname":"example.com","pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"/foo/bar","baseURL":"https://example.com"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"/foo/bar/baz","baseURL":"https://example.com"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"hostname":"example.com","pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"protocol":"https","hostname":"example.com","pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"protocol":"https","hostname":"example.com","pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"protocol":"https","hostname":"example.com","pathname":"/foo/bar","search":"otherquery","hash":"otherhash"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: "https://example.com/foo/bar": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: "https://example.com/foo/bar?otherquery#otherhash": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: "https://example.com/foo/bar/baz": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: "https://other.com/foo/bar": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: "http://other.com/foo/bar": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"pathname":"/foo/bar","baseURL":"https://example.com"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"pathname":"/foo/bar/baz","baseURL":"https://example.com"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"pathname":"/foo/bar","baseURL":"https://other.com"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"pathname":"/foo/bar","baseURL":"http://example.com"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar"} Input: {"pathname":"/foo/index.html"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar"} Input: {"pathname":"/foo/bar/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
"} Input: {"pathname":"/foo/"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
"} Input: {"pathname":"/foo"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar(.)"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar(.
)"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar(.)"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar(.
)"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar?"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar?"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar?"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar?"} Input: {"pathname":"/foobar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar?"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar+"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar+"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar+"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar+"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar+"} Input: {"pathname":"/foobar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar*"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar*"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar*"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar*"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar*"} Input: {"pathname":"/foobar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)?"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
?"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)?"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
?"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)?"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
?"} Input: {"pathname":"/foo"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)?"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
?"} Input: {"pathname":"/foo/"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)?"} Input: {"pathname":"/foobar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
?"} Input: {"pathname":"/foobar"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)?"} Input: {"pathname":"/fo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
?"} Input: {"pathname":"/fo"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)+"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
+"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)+"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
+"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)+"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
+"} Input: {"pathname":"/foo"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)+"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
+"} Input: {"pathname":"/foo/"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)+"} Input: {"pathname":"/foobar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
+"} Input: {"pathname":"/foobar"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)+"} Input: {"pathname":"/fo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
+"} Input: {"pathname":"/fo"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/"} Input: {"pathname":"/foo"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
"} Input: {"pathname":"/foo/"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foobar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/"} Input: {"pathname":"/foobar"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/fo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
"} Input: {"pathname":"/fo"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}?"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}?"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}?"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}?"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}+"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}+"} Input: {"pathname":"/foo/bar/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}+"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}+"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}+"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}
"} Input: {"pathname":"/foo/bar/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}
"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"protocol":"(café)"} Input: undefined: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"username":"(café)"} Input: undefined: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"password":"(café)"} Input: undefined: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"hostname":"(café)"} Input: undefined: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"(café)"} Input: undefined: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"search":"(café)"} Input: undefined: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"hash":"(café)"} Input: undefined: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"protocol":"(.
)"} Input: {"protocol":"café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"protocol":"(.)"} Input: {"protocol":"cafe"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"protocol":"foo-bar"} Input: {"protocol":"foo-bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"username":"caf%C3%A9"} Input: {"username":"café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"username":"caf%c3%a9"} Input: {"username":"café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"password":"caf%C3%A9"} Input: {"password":"café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"password":"caf%c3%a9"} Input: {"password":"café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"hostname":"xn--caf-dma.com"} Input: {"hostname":"café.com"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"port":""} Input: {"protocol":"http","port":"80"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"port":"80"} Input: {"port":"80"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"port":"(.
)"} Input: {"port":"invalid80"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"/foo/./bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/baz"} Input: {"pathname":"/foo/bar/../baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/caf%C3%A9"} Input: {"pathname":"/café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/caf%c3%a9"} Input: {"pathname":"/café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"foo/bar","baseURL":"https://example.com"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"foo/bar"} Input: "https://example.com/foo/bar": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"foo/bar","baseURL":"https://example.com"} Input: "https://example.com/foo/bar": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":":name.html","baseURL":"https://example.com"} Input: "https://example.com/foo.html": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"search":"q=caf%C3%A9"} Input: {"search":"q=café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"search":"q=caf%c3%a9"} Input: {"search":"q=café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"hash":"caf%C3%A9"} Input: {"hash":"café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"hash":"caf%c3%a9"} Input: {"hash":"café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"protocol":"about","pathname":"(blank|sourcedoc)"} Input: "about:blank": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"protocol":"data","pathname":":number([0-9]+)"} Input: "data:8675309": FAIL (Chrome: PASS, Safari: FAIL)
/urlpattern/urlpattern.https.any.serviceworker.html
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"/foo/ba"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"/foo/bar/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: "https://example.com/foo/bar": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: "https://example.com/foo/bar/baz": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: {"hostname":"example.com","pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: {"hostname":"example.com","pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"/foo/bar","baseURL":"https://example.com"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"/foo/bar/baz","baseURL":"https://example.com"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"hostname":"example.com","pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"protocol":"https","hostname":"example.com","pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"protocol":"https","hostname":"example.com","pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"protocol":"https","hostname":"example.com","pathname":"/foo/bar","search":"otherquery","hash":"otherhash"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: "https://example.com/foo/bar": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: "https://example.com/foo/bar?otherquery#otherhash": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: "https://example.com/foo/bar/baz": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: "https://other.com/foo/bar": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: "http://other.com/foo/bar": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"pathname":"/foo/bar","baseURL":"https://example.com"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"pathname":"/foo/bar/baz","baseURL":"https://example.com"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"pathname":"/foo/bar","baseURL":"https://other.com"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"pathname":"/foo/bar","baseURL":"http://example.com"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar"} Input: {"pathname":"/foo/index.html"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar"} Input: {"pathname":"/foo/bar/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
"} Input: {"pathname":"/foo/"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
"} Input: {"pathname":"/foo"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar(.)"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar(.
)"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar(.)"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar(.
)"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar?"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar?"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar?"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar?"} Input: {"pathname":"/foobar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar?"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar+"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar+"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar+"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar+"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar+"} Input: {"pathname":"/foobar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar*"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar*"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar*"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar*"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/:bar*"} Input: {"pathname":"/foobar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)?"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
?"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)?"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
?"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)?"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
?"} Input: {"pathname":"/foo"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)?"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
?"} Input: {"pathname":"/foo/"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)?"} Input: {"pathname":"/foobar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
?"} Input: {"pathname":"/foobar"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)?"} Input: {"pathname":"/fo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
?"} Input: {"pathname":"/fo"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)+"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
+"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)+"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
+"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)+"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
+"} Input: {"pathname":"/foo"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)+"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
+"} Input: {"pathname":"/foo/"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)+"} Input: {"pathname":"/foobar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
+"} Input: {"pathname":"/foobar"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)+"} Input: {"pathname":"/fo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
+"} Input: {"pathname":"/fo"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/"} Input: {"pathname":"/foo"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
"} Input: {"pathname":"/foo/"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foobar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/"} Input: {"pathname":"/foobar"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/fo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/
"} Input: {"pathname":"/fo"}: FAIL (Chrome: FAIL, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}?"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}?"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}?"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}?"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}+"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}+"} Input: {"pathname":"/foo/bar/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}+"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}+"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}+"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}
"} Input: {"pathname":"/foo/bar/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}
"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo{/bar}"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"protocol":"(café)"} Input: undefined: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"username":"(café)"} Input: undefined: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"password":"(café)"} Input: undefined: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"hostname":"(café)"} Input: undefined: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"(café)"} Input: undefined: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"search":"(café)"} Input: undefined: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"hash":"(café)"} Input: undefined: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"protocol":"(.
)"} Input: {"protocol":"café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"protocol":"(.)"} Input: {"protocol":"cafe"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"protocol":"foo-bar"} Input: {"protocol":"foo-bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"username":"caf%C3%A9"} Input: {"username":"café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"username":"caf%c3%a9"} Input: {"username":"café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"password":"caf%C3%A9"} Input: {"password":"café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"password":"caf%c3%a9"} Input: {"password":"café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"hostname":"xn--caf-dma.com"} Input: {"hostname":"café.com"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"port":""} Input: {"protocol":"http","port":"80"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"port":"80"} Input: {"port":"80"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"port":"(.
)"} Input: {"port":"invalid80"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"/foo/./bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/baz"} Input: {"pathname":"/foo/bar/../baz"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/caf%C3%A9"} Input: {"pathname":"/café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/caf%c3%a9"} Input: {"pathname":"/café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"foo/bar"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"foo/bar","baseURL":"https://example.com"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"foo/bar"} Input: "https://example.com/foo/bar": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":"foo/bar","baseURL":"https://example.com"} Input: "https://example.com/foo/bar": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"pathname":":name.html","baseURL":"https://example.com"} Input: "https://example.com/foo.html": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"search":"q=caf%C3%A9"} Input: {"search":"q=café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"search":"q=caf%c3%a9"} Input: {"search":"q=café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"hash":"caf%C3%A9"} Input: {"hash":"café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"hash":"caf%c3%a9"} Input: {"hash":"café"}: FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"protocol":"about","pathname":"(blank|sourcedoc)"} Input: "about:blank": FAIL (Chrome: PASS, Safari: FAIL)
Pattern: {"protocol":"data","pathname":":number([0-9]+)"} Input: "data:8675309": FAIL (Chrome: PASS, Safari: FAIL)
/urlpattern/urlpattern.https.any.sharedworker.html
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"/foo/ba"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"/foo/bar/"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/bar"} Input: "https://example.com/foo/bar": FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/bar"} Input: "https://example.com/foo/bar/baz": FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/bar"} Input: {"hostname":"example.com","pathname":"/foo/bar"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/bar"} Input: {"hostname":"example.com","pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"/foo/bar","baseURL":"https://example.com"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"/foo/bar/baz","baseURL":"https://example.com"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"hostname":"example.com","pathname":"/foo/bar"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"protocol":"https","hostname":"example.com","pathname":"/foo/bar"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"protocol":"https","hostname":"example.com","pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"protocol":"https","hostname":"example.com","pathname":"/foo/bar","search":"otherquery","hash":"otherhash"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: "https://example.com/foo/bar": FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: "https://example.com/foo/bar?otherquery#otherhash": FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: "https://example.com/foo/bar/baz": FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: "https://other.com/foo/bar": FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: "http://other.com/foo/bar": FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"pathname":"/foo/bar","baseURL":"https://example.com"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"pathname":"/foo/bar/baz","baseURL":"https://example.com"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"pathname":"/foo/bar","baseURL":"https://other.com"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/bar","baseURL":"https://example.com?query#hash"} Input: {"pathname":"/foo/bar","baseURL":"http://example.com"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/:bar"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/:bar"} Input: {"pathname":"/foo/index.html"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/:bar"} Input: {"pathname":"/foo/bar/"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/:bar"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/
"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/
"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/
"} Input: {"pathname":"/foo/"}: FAIL (Chrome: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/
"} Input: {"pathname":"/foo"}: FAIL (Chrome: FAIL)
Pattern: {"pathname":"/foo/:bar(.)"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/:bar(.
)"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/:bar(.)"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/:bar(.
)"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/:bar?"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/:bar?"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/:bar?"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/:bar?"} Input: {"pathname":"/foobar"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/:bar?"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/:bar+"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/:bar+"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/:bar+"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/:bar+"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/:bar+"} Input: {"pathname":"/foobar"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/:bar*"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/:bar*"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/:bar*"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/:bar*"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/:bar*"} Input: {"pathname":"/foobar"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/(.)?"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/
?"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: FAIL)
Pattern: {"pathname":"/foo/(.)?"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/
?"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: FAIL)
Pattern: {"pathname":"/foo/(.)?"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/
?"} Input: {"pathname":"/foo"}: FAIL (Chrome: FAIL)
Pattern: {"pathname":"/foo/(.)?"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/
?"} Input: {"pathname":"/foo/"}: FAIL (Chrome: FAIL)
Pattern: {"pathname":"/foo/(.)?"} Input: {"pathname":"/foobar"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/
?"} Input: {"pathname":"/foobar"}: FAIL (Chrome: FAIL)
Pattern: {"pathname":"/foo/(.)?"} Input: {"pathname":"/fo"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/
?"} Input: {"pathname":"/fo"}: FAIL (Chrome: FAIL)
Pattern: {"pathname":"/foo/(.)+"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/
+"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: FAIL)
Pattern: {"pathname":"/foo/(.)+"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/
+"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: FAIL)
Pattern: {"pathname":"/foo/(.)+"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/
+"} Input: {"pathname":"/foo"}: FAIL (Chrome: FAIL)
Pattern: {"pathname":"/foo/(.)+"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/
+"} Input: {"pathname":"/foo/"}: FAIL (Chrome: FAIL)
Pattern: {"pathname":"/foo/(.)+"} Input: {"pathname":"/foobar"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/
+"} Input: {"pathname":"/foobar"}: FAIL (Chrome: FAIL)
Pattern: {"pathname":"/foo/(.)+"} Input: {"pathname":"/fo"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/
+"} Input: {"pathname":"/fo"}: FAIL (Chrome: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/
"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/"} Input: {"pathname":"/foo"}: FAIL (Chrome: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/
"} Input: {"pathname":"/foo/"}: FAIL (Chrome: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/foobar"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/"} Input: {"pathname":"/foobar"}: FAIL (Chrome: FAIL)
Pattern: {"pathname":"/foo/(.)"} Input: {"pathname":"/fo"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/
"} Input: {"pathname":"/fo"}: FAIL (Chrome: FAIL)
Pattern: {"pathname":"/foo{/bar}"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo{/bar}"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo{/bar}"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo{/bar}"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo{/bar}?"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo{/bar}?"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo{/bar}?"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo{/bar}?"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo{/bar}+"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo{/bar}+"} Input: {"pathname":"/foo/bar/bar"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo{/bar}+"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo{/bar}+"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo{/bar}+"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo{/bar}"} Input: {"pathname":"/foo/bar"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo{/bar}
"} Input: {"pathname":"/foo/bar/bar"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo{/bar}"} Input: {"pathname":"/foo/bar/baz"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo{/bar}
"} Input: {"pathname":"/foo"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo{/bar}"} Input: {"pathname":"/foo/"}: FAIL (Chrome: PASS)
Pattern: {"protocol":"(café)"} Input: undefined: FAIL (Chrome: PASS)
Pattern: {"username":"(café)"} Input: undefined: FAIL (Chrome: PASS)
Pattern: {"password":"(café)"} Input: undefined: FAIL (Chrome: PASS)
Pattern: {"hostname":"(café)"} Input: undefined: FAIL (Chrome: PASS)
Pattern: {"pathname":"(café)"} Input: undefined: FAIL (Chrome: PASS)
Pattern: {"search":"(café)"} Input: undefined: FAIL (Chrome: PASS)
Pattern: {"hash":"(café)"} Input: undefined: FAIL (Chrome: PASS)
Pattern: {"protocol":"(.
)"} Input: {"protocol":"café"}: FAIL (Chrome: PASS)
Pattern: {"protocol":"(.)"} Input: {"protocol":"cafe"}: FAIL (Chrome: PASS)
Pattern: {"protocol":"foo-bar"} Input: {"protocol":"foo-bar"}: FAIL (Chrome: PASS)
Pattern: {"username":"caf%C3%A9"} Input: {"username":"café"}: FAIL (Chrome: PASS)
Pattern: {"username":"caf%c3%a9"} Input: {"username":"café"}: FAIL (Chrome: PASS)
Pattern: {"password":"caf%C3%A9"} Input: {"password":"café"}: FAIL (Chrome: PASS)
Pattern: {"password":"caf%c3%a9"} Input: {"password":"café"}: FAIL (Chrome: PASS)
Pattern: {"hostname":"xn--caf-dma.com"} Input: {"hostname":"café.com"}: FAIL (Chrome: PASS)
Pattern: {"port":""} Input: {"protocol":"http","port":"80"}: FAIL (Chrome: PASS)
Pattern: {"port":"80"} Input: {"port":"80"}: FAIL (Chrome: PASS)
Pattern: {"port":"(.
)"} Input: {"port":"invalid80"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"/foo/./bar"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/baz"} Input: {"pathname":"/foo/bar/../baz"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/caf%C3%A9"} Input: {"pathname":"/café"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/caf%c3%a9"} Input: {"pathname":"/café"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"foo/bar"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"/foo/bar"} Input: {"pathname":"foo/bar","baseURL":"https://example.com"}: FAIL (Chrome: PASS)
Pattern: {"pathname":"foo/bar"} Input: "https://example.com/foo/bar": FAIL (Chrome: PASS)
Pattern: {"pathname":"foo/bar","baseURL":"https://example.com"} Input: "https://example.com/foo/bar": FAIL (Chrome: PASS)
Pattern: {"pathname":":name.html","baseURL":"https://example.com"} Input: "https://example.com/foo.html": FAIL (Chrome: PASS)
Pattern: {"search":"q=caf%C3%A9"} Input: {"search":"q=café"}: FAIL (Chrome: PASS)
Pattern: {"search":"q=caf%c3%a9"} Input: {"search":"q=café"}: FAIL (Chrome: PASS)
Pattern: {"hash":"caf%C3%A9"} Input: {"hash":"café"}: FAIL (Chrome: PASS)
Pattern: {"hash":"caf%c3%a9"} Input: {"hash":"café"}: FAIL (Chrome: PASS)
Pattern: {"protocol":"about","pathname":"(blank|sourcedoc)"} Input: "about:blank": FAIL (Chrome: PASS)
Pattern: {"protocol":"data","pathname":":number([0-9]+)"} Input: "data:8675309": FAIL (Chrome: PASS)

Pushed by wptsync@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/65b59209c58c
[wpt PR 27679] - URLPattern: Add wildcard '*' support., a=testonly
https://hg.mozilla.org/integration/autoland/rev/ad7f825013c7
[wpt PR 27679] - Update wpt metadata, a=testonly
Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → 88 Branch
You need to log in before you can comment on or make changes to this bug.