Closed Bug 1682039 Opened 3 years ago Closed 3 years ago

[wpt-sync] Sync PR 26863 - URLPattern: Resolve relative pathnames and canonicalize URL input.

Categories

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

task

Tracking

(firefox86 fixed)

RESOLVED FIXED
86 Branch
Tracking Status
firefox86 --- fixed

People

(Reporter: mozilla.org, Unassigned)

References

()

Details

(Whiteboard: [wptsync downstream])

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

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

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

URLPattern: Resolve relative pathnames and canonicalize URL input.

This CL makes a number of improvements:

  • It removes the http/https specific assumption that pathnames always
    consist of at least a leading slash.
  • Resolve relative pathnames for both patterns and URL input. This is
    only done if the baseURL is a standard URL with a pathname containing
    slashes.
  • Canonicalizes URL input values.
  • Validates pattern values are ASCII, but does not perform any encoding
    or canonicalization yet.

Bug: 1141510
Change-Id: I6db1afe77f6dd1d15ccb2e96a51412a31257efba
Reviewed-on: https://chromium-review.googlesource.com/2579989
WPT-Export-Revision: a46d03a6b63978167537a8f78d1e0bd62501c7ea

PR 26863 applied with additional changes from upstream: b2e07c28323bbe3791d693039a44637b29130c56, 6db65e7a68bdb745a37d0e2a012920551e5e86ef

CI Results

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

Total 4 tests and 123 subtests

Status Summary

Firefox

OK : 4
PASS : 4
FAIL : 488

Chrome

OK : 4
PASS : 32
FAIL : 460

Safari

OK : 3
PASS : 3
FAIL : 366
ERROR: 1

Links

Gecko CI (Treeherder)
GitHub PR Head
GitHub PR Base

Details

New Tests That Don't Pass

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

Pushed by wptsync@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/e77566be5072
[wpt PR 26863] - URLPattern: Resolve relative pathnames and canonicalize URL input., a=testonly
https://hg.mozilla.org/integration/autoland/rev/79c5d7640071
[wpt PR 26863] - Update wpt metadata, a=testonly
Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → 86 Branch
You need to log in before you can comment on or make changes to this bug.