summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/url/README.md
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 09:22:09 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 09:22:09 +0000
commit43a97878ce14b72f0981164f87f2e35e14151312 (patch)
tree620249daf56c0258faa40cbdcf9cfba06de2a846 /testing/web-platform/tests/url/README.md
parentInitial commit. (diff)
downloadfirefox-upstream.tar.xz
firefox-upstream.zip
Adding upstream version 110.0.1.upstream/110.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/url/README.md')
-rw-r--r--testing/web-platform/tests/url/README.md57
1 files changed, 57 insertions, 0 deletions
diff --git a/testing/web-platform/tests/url/README.md b/testing/web-platform/tests/url/README.md
new file mode 100644
index 0000000000..50a71bb482
--- /dev/null
+++ b/testing/web-platform/tests/url/README.md
@@ -0,0 +1,57 @@
+## urltestdata.json
+
+These tests are for browsers, but the data for
+`a-element.html`, `url-constructor.html`, `a-element-xhtml.xhtml`, and `failure.html`
+is in `resources/urltestdata.json` and can be re-used by non-browser implementations.
+This file contains a JSON array of comments as strings and test cases as objects.
+The keys for each test case are:
+
+* `base`: an absolute URL as a string whose [parsing] without a base of its own must succeed.
+ This key is always present,
+ and may have a value like `"about:blank"` when `input` is an absolute URL.
+* `input`: an URL as a string to be [parsed][parsing] with `base` as its base URL.
+* Either:
+ * `failure` with the value `true`, indicating that parsing `input` should return failure,
+ * or `href`, `origin`, `protocol`, `username`, `password`, `host`, `hostname`, `port`,
+ `pathname`, `search`, and `hash` with string values;
+ indicating that parsing `input` should return an URL record
+ and that the getters of each corresponding attribute in that URL’s [API]
+ should return the corresponding value.
+
+ The `origin` key may be missing.
+ In that case, the API’s `origin` attribute is not tested.
+
+In addition to testing that parsing `input` against `base` gives the result, a test harness for the
+`URL` constructor (or similar APIs) should additionally test the following pattern: if `failure` is
+true, parsing `about:blank` against `input` must give failure. This tests that the logic for
+converting base URLs into strings properly fails the whole parsing algorithm if the base URL cannot
+be parsed.
+
+## setters_tests.json
+
+`resources/setters_tests.json` is self-documented.
+
+## toascii.json
+
+`resources/toascii.json` is a JSON resource containing an array where each item is an object
+consisting of an optional `comment` field and mandatory `input` and `output` fields. `input` is the
+domain to be parsed according to the rules of UTS #46 (as stipulated by the URL Standard). `output`
+gives the expected output of the parser after serialization. An `output` of `null` means parsing is
+expected to fail.
+
+## URL parser's encoding argument
+
+Tests in `/encoding` and `/html/infrastructure/urls/resolving-urls/query-encoding/` cover the
+encoding argument to the URL parser.
+
+There's also limited coverage in `resources/percent-encoding.json` for percent-encode after encoding
+with _percentEncodeSet_ set to special-query percent-encode set and _spaceAsPlus_ set to false.
+(Improvements to expand coverage here are welcome.)
+
+## Specification
+
+The tests in this directory assert conformance with [the URL Standard][URL].
+
+[parsing]: https://url.spec.whatwg.org/#concept-basic-url-parser
+[API]: https://url.spec.whatwg.org/#api
+[URL]: https://url.spec.whatwg.org/