Files

3.0 KiB

Web Platform Tests provenance

The files under fetch/ are copied from the official web-platform-tests/wpt repository.

  • Upstream commit: ce5d9e7e28b27528213bceea40d9e78462487105
  • License: BSD-3-Clause; see LICENSE.md
  • Canonical Fetch tests: fetch/

Gopeed executes applicable worker-style Fetch API tests at the extension JavaScript boundary. The checked-in runner currently executes unchanged WPT tests for Headers syntax and iteration, Request construction and body consumption, ReadableStream bodies, keepalive, Request errors, Response construction and body consumption, immutable network response headers, and the Response static constructors.

Passing this subset is an extension-worker Fetch API compatibility claim, not a claim that Gopeed is a browser. Browser-only suites that require a document, CORS origin enforcement or preflight, CSP, Mixed Content, Service Workers, browser HTTP cache, navigation, browser authentication UI, or WPT's multi-origin server infrastructure are intentionally excluded. Gopeed also keeps extension-specific behavior: redirect: "manual" exposes the HTTP redirect response so download extensions can inspect Location, instead of returning a browser opaqueredirect response.

Header permissions follow Node/Undici's server-side Fetch API. Gopeed does not apply browser forbidden request/response header lists or no-CORS safelists. Extensions may supply authentication, referrer, origin, host, proxy and fetch metadata headers, and read Set-Cookie response headers. Network response headers remain immutable; invalid header syntax still raises an error. Repeated Cookie values are combined with ; , as in Node/Undici.

The runner excludes the browser-only headers-no-cors.any.js and headers-forbidden-override.any.js suites, the filtering assertions within request-headers.any.js, and the forbidden-response-cookie assertion within header-setcookie.any.js. Gopeed's extension_headers_test.go replaces those restrictions with integration tests that check headers actually received by an HTTP server through fetch and XMLHttpRequest, plus header mutations, cloning and response cookies. The upstream test files remain unchanged.

Gopeed deliberately ignores transport controls that Node/Undici rejects: Expect, Keep-Alive, Transfer-Encoding, Upgrade, and Connection values other than close or keep-alive. Content-Length is generated from the actual request body, ignoring a supplied length. Explicit Host and Sec-Fetch-Mode values are preserved rather than replaced by defaults. These transport behaviors are also covered by integration tests. credentials: "omit" disables automatic CookieJar cookies but preserves explicit headers; Gopeed retains its extension CookieJar support.

wpt_harness.js is a small Goja adapter maintained by Gopeed; it is not copied from WPT. Test logic below fetch/ is unchanged; the checked-in copy may only normalize a final newline.