summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/syntax/speculative-parsing
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /testing/web-platform/tests/html/syntax/speculative-parsing
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/html/syntax/speculative-parsing')
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/base-href-script-src.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/image-src.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/img-data-src.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/img-src-crossorigin.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/img-src-loading-lazy.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/img-src-referrerpolicy-no-referrer.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/img-src.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/img-srcset.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-no-rel.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-alternate-stylesheet.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-preload-as-font-crossorigin.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-preload-as-image.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-preload-as-script.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-preload-as-style.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-crossorigin.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-disabled.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-integrity.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-nomatch-media.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-referrerpolicy-no-referrer.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-type-text-css.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-unsupported-type.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/math-font-face-script-src.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/math-font-script-src.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/math-script-src.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/meta-charset-script-src.tentative.sub.html35
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/meta-csp-img-src-asterisk.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/meta-csp-img-src-none.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/meta-referrer-no-referrer-img-src.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/meta-viewport-link-stylesheet-media.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/nested-template-shadowrootmode-1.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/nested-template-shadowrootmode-2.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/picture-source-br-img.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/picture-source-no-img.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/picture-source-nomatch-media.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/picture-source-unsupported-type.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-async.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-crossorigin.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-defer.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-integrity.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-module.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-nomodule.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-referrerpolicy-no-referrer.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-type-application-ecmascript.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-unsupported-type.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/svg-image-href.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/svg-image-src.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/svg-image-xlinkhref.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/svg-script-href.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/svg-script-src.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/svg-script-xlinkhref.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/template-img-src.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/template-link-stylesheet.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/template-script-src.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/template-shadowrootmode-img-src.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/template-shadowrootmode-link-stylesheet.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/template-shadowrootmode-script-src.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/video-poster.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/xmp-script-src.tentative.sub.html25
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/base-href-script-src.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/image-src.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/img-data-src.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/img-src-crossorigin.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/img-src-loading-lazy.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/img-src-referrerpolicy-no-referrer.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/img-src.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/img-srcset.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-no-rel.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-alternate-stylesheet.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-preload-as-font-crossorigin.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-preload-as-image.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-preload-as-script.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-preload-as-style.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-crossorigin.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-disabled.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-integrity.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-nomatch-media.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-referrerpolicy-no-referrer.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-type-text-css.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-unsupported-type.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/math-font-face-script-src.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/math-font-script-src.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/math-script-src.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/meta-charset-script-src.tentative.html31
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/meta-csp-img-src-asterisk.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/meta-csp-img-src-none.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/meta-referrer-no-referrer-img-src.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/meta-viewport-link-stylesheet-media.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/nested-template-shadowrootmode-1.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/nested-template-shadowrootmode-2.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/picture-source-br-img.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/picture-source-no-img.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/picture-source-nomatch-media.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/picture-source-unsupported-type.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/base-href-script-src-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/image-src-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/img-data-src-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/img-src-crossorigin-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/img-src-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/img-src-loading-lazy-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/img-src-referrerpolicy-no-referrer-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/img-srcset-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-no-rel-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-alternate-stylesheet-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-preload-as-font-crossorigin-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-preload-as-image-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-preload-as-script-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-preload-as-style-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-crossorigin-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-disabled-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-integrity-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-nomatch-media-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-referrerpolicy-no-referrer-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-type-text-css-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-unsupported-type-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/math-font-face-script-src-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/math-font-script-src-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/math-script-src-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/meta-charset-script-src-framed.sub.html22
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/meta-csp-img-src-asterisk-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/meta-csp-img-src-none-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/meta-referrer-no-referrer-img-src-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/meta-viewport-link-stylesheet-media-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/nested-template-shadowrootmode-1-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/nested-template-shadowrootmode-2-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/picture-source-br-img-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/picture-source-no-img-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/picture-source-nomatch-media-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/picture-source-unsupported-type-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-async-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-crossorigin-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-defer-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-integrity-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-module-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-nomodule-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-referrerpolicy-no-referrer-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-type-application-ecmascript-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-unsupported-type-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/svg-image-href-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/svg-image-src-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/svg-image-xlinkhref-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/svg-script-href-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/svg-script-src-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/svg-script-xlinkhref-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/template-img-src-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/template-link-stylesheet-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/template-script-src-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/template-shadowrootmode-img-src-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/template-shadowrootmode-link-stylesheet-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/template-shadowrootmode-script-src-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/video-poster-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/xmp-script-src-framed.sub.html12
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-async.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-crossorigin.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-defer.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-integrity.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-module.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-nomodule.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-referrerpolicy-no-referrer.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-type-application-ecmascript.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-unsupported-type.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/svg-image-href.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/svg-image-src.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/svg-image-xlinkhref.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/svg-script-href.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/svg-script-src.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/svg-script-xlinkhref.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/template-img-src.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/template-link-stylesheet.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/template-script-src.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/template-shadowrootmode-img-src.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/template-shadowrootmode-link-stylesheet.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/template-shadowrootmode-script-src.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/video-poster.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/xmp-script-src.tentative.html21
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/base-href-script-src-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/image-src-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/img-data-src-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/img-src-crossorigin-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/img-src-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/img-src-referrerpolicy-no-referrer-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/img-srcset-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-no-rel-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-alternate-stylesheet-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-preload-as-font-crossorigin-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-preload-as-image-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-preload-as-script-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-preload-as-style-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-crossorigin-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-disabled-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-integrity-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-nomatch-media-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-referrerpolicy-no-referrer-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-type-text-css-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-unsupported-type-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/math-font-face-script-src-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/math-font-script-src-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/math-script-src-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/meta-charset-script-src-nonspeculative.sub.html20
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/meta-csp-img-src-asterisk-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/meta-csp-img-src-none-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/meta-referrer-no-referrer-img-src-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/meta-viewport-link-stylesheet-media-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/nested-template-shadowrootmode-1-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/nested-template-shadowrootmode-2-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/picture-source-br-img-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/picture-source-no-img-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/picture-source-nomatch-media-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/picture-source-unsupported-type-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-async-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-crossorigin-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-defer-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-integrity-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-module-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-nomodule-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-referrerpolicy-no-referrer-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-type-application-ecmascript-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-unsupported-type-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/svg-image-href-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/svg-image-src-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/svg-image-xlinkhref-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/svg-script-href-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/svg-script-src-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/svg-script-xlinkhref-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/template-img-src-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/template-link-stylesheet-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/template-script-src-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/template-shadowrootmode-img-src-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/template-shadowrootmode-link-stylesheet-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/template-shadowrootmode-script-src-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/video-poster-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/xmp-script-src-nonspeculative.sub.html10
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/resources/speculative-parsing-util.js58
-rw-r--r--testing/web-platform/tests/html/syntax/speculative-parsing/resources/stash.py12
-rwxr-xr-xtesting/web-platform/tests/html/syntax/speculative-parsing/tools/generate.py701
242 files changed, 4881 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/base-href-script-src.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/base-href-script-src.tentative.sub.html
new file mode 100644
index 0000000000..23d2777c63
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/base-href-script-src.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): base-href-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'base-href-script-src', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <base href=//{{domains[www1]}}:{{ports[http][0]}}><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"><\/script>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/image-src.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/image-src.tentative.sub.html
new file mode 100644
index 0000000000..b026985011
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/image-src.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): image-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'image-src', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <image src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;">
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/img-data-src.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/img-data-src.tentative.sub.html
new file mode 100644
index 0000000000..21c14e382c
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/img-data-src.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): img-data-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'img-data-src', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <img data-src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;">
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/img-src-crossorigin.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/img-src-crossorigin.tentative.sub.html
new file mode 100644
index 0000000000..8d038471c8
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/img-src-crossorigin.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): img-src-crossorigin</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'img-src-crossorigin', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" crossorigin>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/img-src-loading-lazy.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/img-src-loading-lazy.tentative.sub.html
new file mode 100644
index 0000000000..a1b1c92af8
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/img-src-loading-lazy.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): img-src-loading-lazy</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'img-src-loading-lazy', false))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" loading=lazy>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/img-src-referrerpolicy-no-referrer.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/img-src-referrerpolicy-no-referrer.tentative.sub.html
new file mode 100644
index 0000000000..c26b933be8
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/img-src-referrerpolicy-no-referrer.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): img-src-referrerpolicy-no-referrer</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'img-src-referrerpolicy-no-referrer', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" referrerpolicy=no-referrer>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/img-src.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/img-src.tentative.sub.html
new file mode 100644
index 0000000000..b4d16da8e9
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/img-src.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): img-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'img-src', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;">
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/img-srcset.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/img-srcset.tentative.sub.html
new file mode 100644
index 0000000000..b08d597a82
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/img-srcset.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): img-srcset</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'img-srcset', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <img srcset="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;">
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-no-rel.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-no-rel.tentative.sub.html
new file mode 100644
index 0000000000..260f7a53a2
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-no-rel.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): link-no-rel</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'link-no-rel', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <link href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;">
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-alternate-stylesheet.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-alternate-stylesheet.tentative.sub.html
new file mode 100644
index 0000000000..0b82352e3b
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-alternate-stylesheet.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): link-rel-alternate-stylesheet</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'link-rel-alternate-stylesheet', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <link rel="alternate stylesheet" href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;">
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-preload-as-font-crossorigin.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-preload-as-font-crossorigin.tentative.sub.html
new file mode 100644
index 0000000000..2ae82c066d
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-preload-as-font-crossorigin.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): link-rel-preload-as-font-crossorigin</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'link-rel-preload-as-font-crossorigin', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <link rel=preload as=font href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" crossorigin>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-preload-as-image.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-preload-as-image.tentative.sub.html
new file mode 100644
index 0000000000..098e08f5d1
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-preload-as-image.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): link-rel-preload-as-image</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'link-rel-preload-as-image', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <link rel=preload as=image href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;">
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-preload-as-script.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-preload-as-script.tentative.sub.html
new file mode 100644
index 0000000000..bfa48f0e79
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-preload-as-script.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): link-rel-preload-as-script</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'link-rel-preload-as-script', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <link rel=preload as=script href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;">
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-preload-as-style.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-preload-as-style.tentative.sub.html
new file mode 100644
index 0000000000..75e5a9de6b
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-preload-as-style.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): link-rel-preload-as-style</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'link-rel-preload-as-style', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <link rel=preload as=style href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;">
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-crossorigin.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-crossorigin.tentative.sub.html
new file mode 100644
index 0000000000..66ac2e4e44
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-crossorigin.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): link-rel-stylesheet-crossorigin</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'link-rel-stylesheet-crossorigin', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" crossorigin>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-disabled.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-disabled.tentative.sub.html
new file mode 100644
index 0000000000..58dbfe6aee
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-disabled.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): link-rel-stylesheet-disabled</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'link-rel-stylesheet-disabled', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <link rel="stylesheet" href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" disabled>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-integrity.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-integrity.tentative.sub.html
new file mode 100644
index 0000000000..35369c3f53
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-integrity.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): link-rel-stylesheet-integrity</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'link-rel-stylesheet-integrity', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" integrity="sha384-OLBgp1GsljhM2TJ+sbHjaiH9txEUvgdDTAzHv2P24donTt6/529l+9Ua0vFImLlb">
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-nomatch-media.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-nomatch-media.tentative.sub.html
new file mode 100644
index 0000000000..74cf92bf1b
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-nomatch-media.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): link-rel-stylesheet-nomatch-media</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'link-rel-stylesheet-nomatch-media', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" media="not all">
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-referrerpolicy-no-referrer.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-referrerpolicy-no-referrer.tentative.sub.html
new file mode 100644
index 0000000000..f25a60f7da
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-referrerpolicy-no-referrer.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): link-rel-stylesheet-referrerpolicy-no-referrer</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'link-rel-stylesheet-referrerpolicy-no-referrer', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" referrerpolicy=no-referrer>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-type-text-css.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-type-text-css.tentative.sub.html
new file mode 100644
index 0000000000..c5dcfc4a61
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-type-text-css.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): link-rel-stylesheet-type-text-css</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'link-rel-stylesheet-type-text-css', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" type=text/css>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-unsupported-type.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-unsupported-type.tentative.sub.html
new file mode 100644
index 0000000000..ed441e7eae
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet-unsupported-type.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): link-rel-stylesheet-unsupported-type</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'link-rel-stylesheet-unsupported-type', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" type=text/plain>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet.tentative.sub.html
new file mode 100644
index 0000000000..de6df7e457
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/link-rel-stylesheet.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): link-rel-stylesheet</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'link-rel-stylesheet', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;">
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/math-font-face-script-src.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/math-font-face-script-src.tentative.sub.html
new file mode 100644
index 0000000000..62b5bffaa2
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/math-font-face-script-src.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): math-font-face-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'math-font-face-script-src', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <math><font face><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"><\/script></font></math>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/math-font-script-src.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/math-font-script-src.tentative.sub.html
new file mode 100644
index 0000000000..4fd7ea8ff6
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/math-font-script-src.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): math-font-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'math-font-script-src', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <math><font><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"><\/script></font></math>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/math-script-src.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/math-script-src.tentative.sub.html
new file mode 100644
index 0000000000..00876cae14
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/math-script-src.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): math-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'math-script-src', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <math><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"><\/script></math>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/meta-charset-script-src.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/meta-charset-script-src.tentative.sub.html
new file mode 100644
index 0000000000..8b5072a415
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/meta-charset-script-src.tentative.sub.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<!-- no meta charset -->
+<!-- (padding to exceed 1024 bytes processed by the character encoding scanner) -->
+<!-- -->
+<!-- -->
+<!-- -->
+<!-- -->
+<!-- -->
+<!-- -->
+<!-- -->
+<!-- -->
+<!-- -->
+<title>Speculative parsing, document.write(): meta-charset-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'meta-charset-script-src', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <meta\ charset=windows-1254><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"><\/script>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/meta-csp-img-src-asterisk.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/meta-csp-img-src-asterisk.tentative.sub.html
new file mode 100644
index 0000000000..2d9f8aeb1d
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/meta-csp-img-src-asterisk.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): meta-csp-img-src-asterisk</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'meta-csp-img-src-asterisk', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; img-src *"><img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;">
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/meta-csp-img-src-none.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/meta-csp-img-src-none.tentative.sub.html
new file mode 100644
index 0000000000..0266ae72d5
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/meta-csp-img-src-none.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): meta-csp-img-src-none</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'meta-csp-img-src-none', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; img-src 'none'"><img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;">
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/meta-referrer-no-referrer-img-src.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/meta-referrer-no-referrer-img-src.tentative.sub.html
new file mode 100644
index 0000000000..b0d0b910e2
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/meta-referrer-no-referrer-img-src.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): meta-referrer-no-referrer-img-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'meta-referrer-no-referrer-img-src', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <meta name=referrer content=no-referrer><img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;">
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/meta-viewport-link-stylesheet-media.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/meta-viewport-link-stylesheet-media.tentative.sub.html
new file mode 100644
index 0000000000..b7ab5ff97a
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/meta-viewport-link-stylesheet-media.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): meta-viewport-link-stylesheet-media</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'meta-viewport-link-stylesheet-media', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <meta name=viewport content="width=400, initial-scale=1"><link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" media="(min-width: 401px)">
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/nested-template-shadowrootmode-1.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/nested-template-shadowrootmode-1.tentative.sub.html
new file mode 100644
index 0000000000..c6006ebc0d
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/nested-template-shadowrootmode-1.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): nested-template-shadowrootmode-1</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'nested-template-shadowrootmode-1', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <template><div><template shadowrootmode="closed"><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"><\/script></template></div></template>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/nested-template-shadowrootmode-2.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/nested-template-shadowrootmode-2.tentative.sub.html
new file mode 100644
index 0000000000..282b0bb555
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/nested-template-shadowrootmode-2.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): nested-template-shadowrootmode-2</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'nested-template-shadowrootmode-2', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <div><template shadowrootmode="closed"><template><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"><\/script></template></template></div>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/picture-source-br-img.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/picture-source-br-img.tentative.sub.html
new file mode 100644
index 0000000000..914dfb83c9
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/picture-source-br-img.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): picture-source-br-img</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'picture-source-br-img', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <picture><source srcset="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"><br><img></picture>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/picture-source-no-img.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/picture-source-no-img.tentative.sub.html
new file mode 100644
index 0000000000..6ca192edac
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/picture-source-no-img.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): picture-source-no-img</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'picture-source-no-img', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <picture><source srcset="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"></picture>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/picture-source-nomatch-media.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/picture-source-nomatch-media.tentative.sub.html
new file mode 100644
index 0000000000..d48d3104f2
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/picture-source-nomatch-media.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): picture-source-nomatch-media</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'picture-source-nomatch-media', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <picture><source srcset="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" media="not all"><img></picture>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/picture-source-unsupported-type.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/picture-source-unsupported-type.tentative.sub.html
new file mode 100644
index 0000000000..e387d51bab
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/picture-source-unsupported-type.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): picture-source-unsupported-type</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'picture-source-unsupported-type', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <picture><source srcset="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" type=text/plain><img></picture>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-async.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-async.tentative.sub.html
new file mode 100644
index 0000000000..f4b42c484e
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-async.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): script-src-async</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'script-src-async', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" async><\/script>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-crossorigin.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-crossorigin.tentative.sub.html
new file mode 100644
index 0000000000..b95f5502ef
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-crossorigin.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): script-src-crossorigin</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'script-src-crossorigin', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" crossorigin><\/script>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-defer.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-defer.tentative.sub.html
new file mode 100644
index 0000000000..5cf8e15c67
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-defer.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): script-src-defer</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'script-src-defer', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" defer><\/script>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-integrity.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-integrity.tentative.sub.html
new file mode 100644
index 0000000000..6f66636d76
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-integrity.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): script-src-integrity</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'script-src-integrity', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" integrity="sha384-OLBgp1GsljhM2TJ+sbHjaiH9txEUvgdDTAzHv2P24donTt6/529l+9Ua0vFImLlb"><\/script>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-module.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-module.tentative.sub.html
new file mode 100644
index 0000000000..229b2b88c4
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-module.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): script-src-module</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'script-src-module', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" type=module><\/script>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-nomodule.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-nomodule.tentative.sub.html
new file mode 100644
index 0000000000..3f61dba8d4
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-nomodule.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): script-src-nomodule</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'script-src-nomodule', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" nomodule><\/script>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-referrerpolicy-no-referrer.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-referrerpolicy-no-referrer.tentative.sub.html
new file mode 100644
index 0000000000..ea67a33a22
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-referrerpolicy-no-referrer.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): script-src-referrerpolicy-no-referrer</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'script-src-referrerpolicy-no-referrer', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" referrerpolicy=no-referrer><\/script>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-type-application-ecmascript.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-type-application-ecmascript.tentative.sub.html
new file mode 100644
index 0000000000..000843abaa
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-type-application-ecmascript.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): script-src-type-application-ecmascript</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'script-src-type-application-ecmascript', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" type=application/ecmascript><\/script>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-unsupported-type.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-unsupported-type.tentative.sub.html
new file mode 100644
index 0000000000..1eaa56494d
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src-unsupported-type.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): script-src-unsupported-type</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'script-src-unsupported-type', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;" type=text/plain><\/script>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src.tentative.sub.html
new file mode 100644
index 0000000000..4339e82360
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/script-src.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'script-src', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"><\/script>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/svg-image-href.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/svg-image-href.tentative.sub.html
new file mode 100644
index 0000000000..1f7974c0dd
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/svg-image-href.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): svg-image-href</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'svg-image-href', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <svg><image href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"></image></svg>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/svg-image-src.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/svg-image-src.tentative.sub.html
new file mode 100644
index 0000000000..50b6320b68
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/svg-image-src.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): svg-image-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'svg-image-src', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <svg><image src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"></image></svg>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/svg-image-xlinkhref.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/svg-image-xlinkhref.tentative.sub.html
new file mode 100644
index 0000000000..7d8a0f0357
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/svg-image-xlinkhref.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): svg-image-xlinkhref</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'svg-image-xlinkhref', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <svg><image xlink:href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"></image></svg>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/svg-script-href.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/svg-script-href.tentative.sub.html
new file mode 100644
index 0000000000..13b6cda989
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/svg-script-href.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): svg-script-href</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'svg-script-href', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <svg><script href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"><\/script></svg>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/svg-script-src.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/svg-script-src.tentative.sub.html
new file mode 100644
index 0000000000..ea37cc74a4
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/svg-script-src.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): svg-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'svg-script-src', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <svg><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"><\/script></svg>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/svg-script-xlinkhref.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/svg-script-xlinkhref.tentative.sub.html
new file mode 100644
index 0000000000..df0f28ec47
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/svg-script-xlinkhref.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): svg-script-xlinkhref</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'svg-script-xlinkhref', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <svg><script xlink:href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"><\/script></svg>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/template-img-src.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/template-img-src.tentative.sub.html
new file mode 100644
index 0000000000..60928c10e9
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/template-img-src.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): template-img-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'template-img-src', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <template><img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"></template>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/template-link-stylesheet.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/template-link-stylesheet.tentative.sub.html
new file mode 100644
index 0000000000..590975e370
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/template-link-stylesheet.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): template-link-stylesheet</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'template-link-stylesheet', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <template><link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"></template>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/template-script-src.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/template-script-src.tentative.sub.html
new file mode 100644
index 0000000000..b9e4177d8d
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/template-script-src.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): template-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'template-script-src', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <template><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"><\/script></template>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/template-shadowrootmode-img-src.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/template-shadowrootmode-img-src.tentative.sub.html
new file mode 100644
index 0000000000..d9594f11ae
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/template-shadowrootmode-img-src.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): template-shadowrootmode-img-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'template-shadowrootmode-img-src', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <div><template shadowrootmode="closed"><img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"></template></div>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/template-shadowrootmode-link-stylesheet.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/template-shadowrootmode-link-stylesheet.tentative.sub.html
new file mode 100644
index 0000000000..f536059720
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/template-shadowrootmode-link-stylesheet.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): template-shadowrootmode-link-stylesheet</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'template-shadowrootmode-link-stylesheet', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <div><template shadowrootmode="closed"><link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"></template></div>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/template-shadowrootmode-script-src.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/template-shadowrootmode-script-src.tentative.sub.html
new file mode 100644
index 0000000000..a9b6798da2
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/template-shadowrootmode-script-src.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): template-shadowrootmode-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'template-shadowrootmode-script-src', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <div><template shadowrootmode="closed"><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"><\/script></template></div>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/video-poster.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/video-poster.tentative.sub.html
new file mode 100644
index 0000000000..e14bf19fc9
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/video-poster.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): video-poster</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'video-poster', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <video poster="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"></video>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/xmp-script-src.tentative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/xmp-script-src.tentative.sub.html
new file mode 100644
index 0000000000..89ecaf1981
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/document-write/xmp-script-src.tentative.sub.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, document.write(): xmp-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'xmp-script-src', true))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay=1500"><\/script>
+ <script>
+ document.write('<plaintext>');
+ <\/script>
+ <\!-- speculative case in document.write -->
+ <xmp><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"><\/script></xmp>
+ `);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/base-href-script-src.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/base-href-script-src.tentative.html
new file mode 100644
index 0000000000..d37d68333d
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/base-href-script-src.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: base-href-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/base-href-script-src-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'base-href-script-src', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/image-src.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/image-src.tentative.html
new file mode 100644
index 0000000000..40929371ca
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/image-src.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: image-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/image-src-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'image-src', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/img-data-src.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/img-data-src.tentative.html
new file mode 100644
index 0000000000..54bed4582a
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/img-data-src.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: img-data-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/img-data-src-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'img-data-src', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/img-src-crossorigin.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/img-src-crossorigin.tentative.html
new file mode 100644
index 0000000000..3b47252140
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/img-src-crossorigin.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: img-src-crossorigin</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/img-src-crossorigin-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'img-src-crossorigin', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/img-src-loading-lazy.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/img-src-loading-lazy.tentative.html
new file mode 100644
index 0000000000..7fd4a1207a
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/img-src-loading-lazy.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: img-src-loading-lazy</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/img-src-loading-lazy-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'img-src-loading-lazy', false))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/img-src-referrerpolicy-no-referrer.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/img-src-referrerpolicy-no-referrer.tentative.html
new file mode 100644
index 0000000000..e41d2c3ef1
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/img-src-referrerpolicy-no-referrer.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: img-src-referrerpolicy-no-referrer</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/img-src-referrerpolicy-no-referrer-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'img-src-referrerpolicy-no-referrer', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/img-src.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/img-src.tentative.html
new file mode 100644
index 0000000000..fda270a9f2
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/img-src.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: img-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/img-src-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'img-src', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/img-srcset.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/img-srcset.tentative.html
new file mode 100644
index 0000000000..5878e14600
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/img-srcset.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: img-srcset</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/img-srcset-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'img-srcset', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-no-rel.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-no-rel.tentative.html
new file mode 100644
index 0000000000..7b9255175b
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-no-rel.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: link-no-rel</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/link-no-rel-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'link-no-rel', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-alternate-stylesheet.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-alternate-stylesheet.tentative.html
new file mode 100644
index 0000000000..7a8eb2ac53
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-alternate-stylesheet.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: link-rel-alternate-stylesheet</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/link-rel-alternate-stylesheet-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'link-rel-alternate-stylesheet', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-preload-as-font-crossorigin.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-preload-as-font-crossorigin.tentative.html
new file mode 100644
index 0000000000..f679c97c59
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-preload-as-font-crossorigin.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: link-rel-preload-as-font-crossorigin</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/link-rel-preload-as-font-crossorigin-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'link-rel-preload-as-font-crossorigin', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-preload-as-image.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-preload-as-image.tentative.html
new file mode 100644
index 0000000000..adc59b7e09
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-preload-as-image.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: link-rel-preload-as-image</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/link-rel-preload-as-image-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'link-rel-preload-as-image', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-preload-as-script.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-preload-as-script.tentative.html
new file mode 100644
index 0000000000..705b56b9a9
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-preload-as-script.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: link-rel-preload-as-script</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/link-rel-preload-as-script-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'link-rel-preload-as-script', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-preload-as-style.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-preload-as-style.tentative.html
new file mode 100644
index 0000000000..ea0cd3945d
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-preload-as-style.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: link-rel-preload-as-style</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/link-rel-preload-as-style-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'link-rel-preload-as-style', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-crossorigin.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-crossorigin.tentative.html
new file mode 100644
index 0000000000..c227593727
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-crossorigin.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: link-rel-stylesheet-crossorigin</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/link-rel-stylesheet-crossorigin-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'link-rel-stylesheet-crossorigin', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-disabled.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-disabled.tentative.html
new file mode 100644
index 0000000000..5f232aa07a
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-disabled.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: link-rel-stylesheet-disabled</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/link-rel-stylesheet-disabled-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'link-rel-stylesheet-disabled', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-integrity.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-integrity.tentative.html
new file mode 100644
index 0000000000..266fb5b7da
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-integrity.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: link-rel-stylesheet-integrity</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/link-rel-stylesheet-integrity-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'link-rel-stylesheet-integrity', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-nomatch-media.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-nomatch-media.tentative.html
new file mode 100644
index 0000000000..49feea0bb0
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-nomatch-media.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: link-rel-stylesheet-nomatch-media</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/link-rel-stylesheet-nomatch-media-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'link-rel-stylesheet-nomatch-media', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-referrerpolicy-no-referrer.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-referrerpolicy-no-referrer.tentative.html
new file mode 100644
index 0000000000..635f23444f
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-referrerpolicy-no-referrer.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: link-rel-stylesheet-referrerpolicy-no-referrer</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/link-rel-stylesheet-referrerpolicy-no-referrer-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'link-rel-stylesheet-referrerpolicy-no-referrer', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-type-text-css.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-type-text-css.tentative.html
new file mode 100644
index 0000000000..a2af61a95d
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-type-text-css.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: link-rel-stylesheet-type-text-css</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/link-rel-stylesheet-type-text-css-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'link-rel-stylesheet-type-text-css', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-unsupported-type.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-unsupported-type.tentative.html
new file mode 100644
index 0000000000..17fb1722f5
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet-unsupported-type.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: link-rel-stylesheet-unsupported-type</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/link-rel-stylesheet-unsupported-type-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'link-rel-stylesheet-unsupported-type', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet.tentative.html
new file mode 100644
index 0000000000..07e4152c83
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/link-rel-stylesheet.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: link-rel-stylesheet</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/link-rel-stylesheet-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'link-rel-stylesheet', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/math-font-face-script-src.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/math-font-face-script-src.tentative.html
new file mode 100644
index 0000000000..47516bab94
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/math-font-face-script-src.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: math-font-face-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/math-font-face-script-src-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'math-font-face-script-src', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/math-font-script-src.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/math-font-script-src.tentative.html
new file mode 100644
index 0000000000..9a99c63df2
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/math-font-script-src.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: math-font-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/math-font-script-src-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'math-font-script-src', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/math-script-src.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/math-script-src.tentative.html
new file mode 100644
index 0000000000..54e6d40f18
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/math-script-src.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: math-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/math-script-src-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'math-script-src', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/meta-charset-script-src.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/meta-charset-script-src.tentative.html
new file mode 100644
index 0000000000..e8dfaaf614
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/meta-charset-script-src.tentative.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<!-- no meta charset -->
+<!-- (padding to exceed 1024 bytes processed by the character encoding scanner) -->
+<!-- -->
+<!-- -->
+<!-- -->
+<!-- -->
+<!-- -->
+<!-- -->
+<!-- -->
+<!-- -->
+<!-- -->
+<title>Speculative parsing, page load: meta-charset-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/meta-charset-script-src-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'meta-charset-script-src', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/meta-csp-img-src-asterisk.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/meta-csp-img-src-asterisk.tentative.html
new file mode 100644
index 0000000000..35d7374f8e
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/meta-csp-img-src-asterisk.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: meta-csp-img-src-asterisk</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/meta-csp-img-src-asterisk-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'meta-csp-img-src-asterisk', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/meta-csp-img-src-none.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/meta-csp-img-src-none.tentative.html
new file mode 100644
index 0000000000..21984fd9e5
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/meta-csp-img-src-none.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: meta-csp-img-src-none</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/meta-csp-img-src-none-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'meta-csp-img-src-none', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/meta-referrer-no-referrer-img-src.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/meta-referrer-no-referrer-img-src.tentative.html
new file mode 100644
index 0000000000..7d03f49e6e
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/meta-referrer-no-referrer-img-src.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: meta-referrer-no-referrer-img-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/meta-referrer-no-referrer-img-src-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'meta-referrer-no-referrer-img-src', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/meta-viewport-link-stylesheet-media.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/meta-viewport-link-stylesheet-media.tentative.html
new file mode 100644
index 0000000000..0ba60c7c04
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/meta-viewport-link-stylesheet-media.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: meta-viewport-link-stylesheet-media</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/meta-viewport-link-stylesheet-media-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'meta-viewport-link-stylesheet-media', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/nested-template-shadowrootmode-1.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/nested-template-shadowrootmode-1.tentative.html
new file mode 100644
index 0000000000..fe61837dcf
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/nested-template-shadowrootmode-1.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: nested-template-shadowrootmode-1</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/nested-template-shadowrootmode-1-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'nested-template-shadowrootmode-1', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/nested-template-shadowrootmode-2.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/nested-template-shadowrootmode-2.tentative.html
new file mode 100644
index 0000000000..7d4732cd18
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/nested-template-shadowrootmode-2.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: nested-template-shadowrootmode-2</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/nested-template-shadowrootmode-2-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'nested-template-shadowrootmode-2', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/picture-source-br-img.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/picture-source-br-img.tentative.html
new file mode 100644
index 0000000000..38acd4707e
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/picture-source-br-img.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: picture-source-br-img</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/picture-source-br-img-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'picture-source-br-img', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/picture-source-no-img.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/picture-source-no-img.tentative.html
new file mode 100644
index 0000000000..a7196c7740
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/picture-source-no-img.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: picture-source-no-img</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/picture-source-no-img-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'picture-source-no-img', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/picture-source-nomatch-media.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/picture-source-nomatch-media.tentative.html
new file mode 100644
index 0000000000..d1d5e2263c
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/picture-source-nomatch-media.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: picture-source-nomatch-media</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/picture-source-nomatch-media-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'picture-source-nomatch-media', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/picture-source-unsupported-type.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/picture-source-unsupported-type.tentative.html
new file mode 100644
index 0000000000..981805569d
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/picture-source-unsupported-type.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: picture-source-unsupported-type</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/picture-source-unsupported-type-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'picture-source-unsupported-type', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/base-href-script-src-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/base-href-script-src-framed.sub.html
new file mode 100644
index 0000000000..c0913c261e
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/base-href-script-src-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): base-href-script-src</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<base href=//{{domains[www1]}}:{{ports[http][0]}}><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/image-src-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/image-src-framed.sub.html
new file mode 100644
index 0000000000..4a335c7b81
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/image-src-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): image-src</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<image src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/img-data-src-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/img-data-src-framed.sub.html
new file mode 100644
index 0000000000..20df9ba529
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/img-data-src-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): img-data-src</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<img data-src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/img-src-crossorigin-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/img-src-crossorigin-framed.sub.html
new file mode 100644
index 0000000000..9302abd3d5
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/img-src-crossorigin-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): img-src-crossorigin</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" crossorigin>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/img-src-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/img-src-framed.sub.html
new file mode 100644
index 0000000000..ba2607e46d
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/img-src-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): img-src</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/img-src-loading-lazy-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/img-src-loading-lazy-framed.sub.html
new file mode 100644
index 0000000000..9cc49cf324
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/img-src-loading-lazy-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): img-src-loading-lazy</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" loading=lazy>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/img-src-referrerpolicy-no-referrer-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/img-src-referrerpolicy-no-referrer-framed.sub.html
new file mode 100644
index 0000000000..7f466d11ba
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/img-src-referrerpolicy-no-referrer-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): img-src-referrerpolicy-no-referrer</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" referrerpolicy=no-referrer>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/img-srcset-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/img-srcset-framed.sub.html
new file mode 100644
index 0000000000..3c791bb857
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/img-srcset-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): img-srcset</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<img srcset="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-no-rel-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-no-rel-framed.sub.html
new file mode 100644
index 0000000000..12e79cda04
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-no-rel-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): link-no-rel</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<link href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-alternate-stylesheet-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-alternate-stylesheet-framed.sub.html
new file mode 100644
index 0000000000..2d4dc3db12
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-alternate-stylesheet-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): link-rel-alternate-stylesheet</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<link rel="alternate stylesheet" href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-preload-as-font-crossorigin-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-preload-as-font-crossorigin-framed.sub.html
new file mode 100644
index 0000000000..e1ac7d5395
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-preload-as-font-crossorigin-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): link-rel-preload-as-font-crossorigin</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<link rel=preload as=font href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" crossorigin>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-preload-as-image-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-preload-as-image-framed.sub.html
new file mode 100644
index 0000000000..6cc48035d7
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-preload-as-image-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): link-rel-preload-as-image</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<link rel=preload as=image href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-preload-as-script-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-preload-as-script-framed.sub.html
new file mode 100644
index 0000000000..10d1092ab1
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-preload-as-script-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): link-rel-preload-as-script</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<link rel=preload as=script href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-preload-as-style-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-preload-as-style-framed.sub.html
new file mode 100644
index 0000000000..e77d4da77b
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-preload-as-style-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): link-rel-preload-as-style</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<link rel=preload as=style href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-crossorigin-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-crossorigin-framed.sub.html
new file mode 100644
index 0000000000..4dc7917f4b
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-crossorigin-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): link-rel-stylesheet-crossorigin</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" crossorigin>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-disabled-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-disabled-framed.sub.html
new file mode 100644
index 0000000000..ec535addfd
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-disabled-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): link-rel-stylesheet-disabled</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<link rel="stylesheet" href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" disabled>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-framed.sub.html
new file mode 100644
index 0000000000..7b3bf61019
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): link-rel-stylesheet</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-integrity-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-integrity-framed.sub.html
new file mode 100644
index 0000000000..752077d674
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-integrity-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): link-rel-stylesheet-integrity</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" integrity="sha384-OLBgp1GsljhM2TJ+sbHjaiH9txEUvgdDTAzHv2P24donTt6/529l+9Ua0vFImLlb">
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-nomatch-media-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-nomatch-media-framed.sub.html
new file mode 100644
index 0000000000..8ddb717c60
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-nomatch-media-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): link-rel-stylesheet-nomatch-media</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" media="not all">
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-referrerpolicy-no-referrer-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-referrerpolicy-no-referrer-framed.sub.html
new file mode 100644
index 0000000000..2f149ef438
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-referrerpolicy-no-referrer-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): link-rel-stylesheet-referrerpolicy-no-referrer</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" referrerpolicy=no-referrer>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-type-text-css-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-type-text-css-framed.sub.html
new file mode 100644
index 0000000000..c402422868
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-type-text-css-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): link-rel-stylesheet-type-text-css</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" type=text/css>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-unsupported-type-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-unsupported-type-framed.sub.html
new file mode 100644
index 0000000000..f0c5016081
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/link-rel-stylesheet-unsupported-type-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): link-rel-stylesheet-unsupported-type</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" type=text/plain>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/math-font-face-script-src-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/math-font-face-script-src-framed.sub.html
new file mode 100644
index 0000000000..90e99fb0d9
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/math-font-face-script-src-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): math-font-face-script-src</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<math><font face><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></font></math>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/math-font-script-src-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/math-font-script-src-framed.sub.html
new file mode 100644
index 0000000000..fc359406ff
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/math-font-script-src-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): math-font-script-src</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<math><font><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></font></math>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/math-script-src-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/math-script-src-framed.sub.html
new file mode 100644
index 0000000000..71697e6766
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/math-script-src-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): math-script-src</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<math><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></math>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/meta-charset-script-src-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/meta-charset-script-src-framed.sub.html
new file mode 100644
index 0000000000..001c0c2eea
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/meta-charset-script-src-framed.sub.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<!-- no meta charset -->
+<!-- (padding to exceed 1024 bytes processed by the character encoding scanner) -->
+<!-- -->
+<!-- -->
+<!-- -->
+<!-- -->
+<!-- -->
+<!-- -->
+<!-- -->
+<!-- -->
+<!-- -->
+<title>Speculative parsing, page load (helper file): meta-charset-script-src</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<meta charset=windows-1254><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/meta-csp-img-src-asterisk-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/meta-csp-img-src-asterisk-framed.sub.html
new file mode 100644
index 0000000000..3ac046dd67
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/meta-csp-img-src-asterisk-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): meta-csp-img-src-asterisk</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; img-src *"><img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/meta-csp-img-src-none-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/meta-csp-img-src-none-framed.sub.html
new file mode 100644
index 0000000000..08929d860b
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/meta-csp-img-src-none-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): meta-csp-img-src-none</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; img-src 'none'"><img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/meta-referrer-no-referrer-img-src-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/meta-referrer-no-referrer-img-src-framed.sub.html
new file mode 100644
index 0000000000..a8a344909e
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/meta-referrer-no-referrer-img-src-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): meta-referrer-no-referrer-img-src</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<meta name=referrer content=no-referrer><img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/meta-viewport-link-stylesheet-media-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/meta-viewport-link-stylesheet-media-framed.sub.html
new file mode 100644
index 0000000000..8e294e8c46
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/meta-viewport-link-stylesheet-media-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): meta-viewport-link-stylesheet-media</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<meta name=viewport content="width=400, initial-scale=1"><link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" media="(min-width: 401px)">
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/nested-template-shadowrootmode-1-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/nested-template-shadowrootmode-1-framed.sub.html
new file mode 100644
index 0000000000..19e60e9828
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/nested-template-shadowrootmode-1-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): nested-template-shadowrootmode-1</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<template><div><template shadowrootmode="closed"><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></template></div></template>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/nested-template-shadowrootmode-2-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/nested-template-shadowrootmode-2-framed.sub.html
new file mode 100644
index 0000000000..5cea082c4f
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/nested-template-shadowrootmode-2-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): nested-template-shadowrootmode-2</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<div><template shadowrootmode="closed"><template><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></template></template></div>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/picture-source-br-img-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/picture-source-br-img-framed.sub.html
new file mode 100644
index 0000000000..aea18d1e04
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/picture-source-br-img-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): picture-source-br-img</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<picture><source srcset="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"><br><img></picture>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/picture-source-no-img-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/picture-source-no-img-framed.sub.html
new file mode 100644
index 0000000000..5367cd4085
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/picture-source-no-img-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): picture-source-no-img</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<picture><source srcset="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></picture>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/picture-source-nomatch-media-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/picture-source-nomatch-media-framed.sub.html
new file mode 100644
index 0000000000..a8e696f901
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/picture-source-nomatch-media-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): picture-source-nomatch-media</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<picture><source srcset="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" media="not all"><img></picture>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/picture-source-unsupported-type-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/picture-source-unsupported-type-framed.sub.html
new file mode 100644
index 0000000000..0ed95368c0
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/picture-source-unsupported-type-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): picture-source-unsupported-type</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<picture><source srcset="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" type=text/plain><img></picture>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-async-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-async-framed.sub.html
new file mode 100644
index 0000000000..5e6cbff21d
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-async-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): script-src-async</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" async></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-crossorigin-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-crossorigin-framed.sub.html
new file mode 100644
index 0000000000..098d07c5e3
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-crossorigin-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): script-src-crossorigin</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" crossorigin></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-defer-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-defer-framed.sub.html
new file mode 100644
index 0000000000..7decc7bc60
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-defer-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): script-src-defer</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" defer></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-framed.sub.html
new file mode 100644
index 0000000000..baab010750
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): script-src</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-integrity-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-integrity-framed.sub.html
new file mode 100644
index 0000000000..7c0ca5e59f
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-integrity-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): script-src-integrity</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" integrity="sha384-OLBgp1GsljhM2TJ+sbHjaiH9txEUvgdDTAzHv2P24donTt6/529l+9Ua0vFImLlb"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-module-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-module-framed.sub.html
new file mode 100644
index 0000000000..5c365229df
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-module-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): script-src-module</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" type=module></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-nomodule-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-nomodule-framed.sub.html
new file mode 100644
index 0000000000..46af7c87e2
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-nomodule-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): script-src-nomodule</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" nomodule></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-referrerpolicy-no-referrer-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-referrerpolicy-no-referrer-framed.sub.html
new file mode 100644
index 0000000000..566d2f67e0
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-referrerpolicy-no-referrer-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): script-src-referrerpolicy-no-referrer</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" referrerpolicy=no-referrer></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-type-application-ecmascript-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-type-application-ecmascript-framed.sub.html
new file mode 100644
index 0000000000..08609b1c12
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-type-application-ecmascript-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): script-src-type-application-ecmascript</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" type=application/ecmascript></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-unsupported-type-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-unsupported-type-framed.sub.html
new file mode 100644
index 0000000000..1f38560ee1
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/script-src-unsupported-type-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): script-src-unsupported-type</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" type=text/plain></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/svg-image-href-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/svg-image-href-framed.sub.html
new file mode 100644
index 0000000000..fc4e531849
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/svg-image-href-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): svg-image-href</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<svg><image href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></image></svg>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/svg-image-src-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/svg-image-src-framed.sub.html
new file mode 100644
index 0000000000..16d97e00eb
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/svg-image-src-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): svg-image-src</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<svg><image src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></image></svg>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/svg-image-xlinkhref-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/svg-image-xlinkhref-framed.sub.html
new file mode 100644
index 0000000000..8e5dd1e8dc
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/svg-image-xlinkhref-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): svg-image-xlinkhref</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<svg><image xlink:href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></image></svg>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/svg-script-href-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/svg-script-href-framed.sub.html
new file mode 100644
index 0000000000..6a208cbc4f
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/svg-script-href-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): svg-script-href</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<svg><script href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></svg>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/svg-script-src-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/svg-script-src-framed.sub.html
new file mode 100644
index 0000000000..e8c1784c60
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/svg-script-src-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): svg-script-src</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<svg><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></svg>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/svg-script-xlinkhref-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/svg-script-xlinkhref-framed.sub.html
new file mode 100644
index 0000000000..e634000d01
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/svg-script-xlinkhref-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): svg-script-xlinkhref</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<svg><script xlink:href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></svg>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/template-img-src-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/template-img-src-framed.sub.html
new file mode 100644
index 0000000000..1f8986c2d1
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/template-img-src-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): template-img-src</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<template><img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></template>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/template-link-stylesheet-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/template-link-stylesheet-framed.sub.html
new file mode 100644
index 0000000000..cfc2502335
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/template-link-stylesheet-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): template-link-stylesheet</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<template><link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></template>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/template-script-src-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/template-script-src-framed.sub.html
new file mode 100644
index 0000000000..8582d10ece
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/template-script-src-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): template-script-src</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<template><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></template>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/template-shadowrootmode-img-src-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/template-shadowrootmode-img-src-framed.sub.html
new file mode 100644
index 0000000000..32d0aa9a45
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/template-shadowrootmode-img-src-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): template-shadowrootmode-img-src</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<div><template shadowrootmode="closed"><img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></template></div>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/template-shadowrootmode-link-stylesheet-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/template-shadowrootmode-link-stylesheet-framed.sub.html
new file mode 100644
index 0000000000..3557749c81
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/template-shadowrootmode-link-stylesheet-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): template-shadowrootmode-link-stylesheet</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<div><template shadowrootmode="closed"><link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></template></div>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/template-shadowrootmode-script-src-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/template-shadowrootmode-script-src-framed.sub.html
new file mode 100644
index 0000000000..ab4ad10df4
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/template-shadowrootmode-script-src-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): template-shadowrootmode-script-src</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<div><template shadowrootmode="closed"><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></template></div>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/video-poster-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/video-poster-framed.sub.html
new file mode 100644
index 0000000000..ad2c7cef95
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/video-poster-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): video-poster</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<video poster="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></video>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/xmp-script-src-framed.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/xmp-script-src-framed.sub.html
new file mode 100644
index 0000000000..3c5ea9252e
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/resources/xmp-script-src-framed.sub.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load (helper file): xmp-script-src</title>
+<script src="/common/slow.py?delay=1500"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+<xmp><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></xmp>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-async.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-async.tentative.html
new file mode 100644
index 0000000000..d462508a7e
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-async.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: script-src-async</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/script-src-async-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'script-src-async', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-crossorigin.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-crossorigin.tentative.html
new file mode 100644
index 0000000000..59d3d9e07e
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-crossorigin.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: script-src-crossorigin</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/script-src-crossorigin-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'script-src-crossorigin', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-defer.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-defer.tentative.html
new file mode 100644
index 0000000000..b8bf489890
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-defer.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: script-src-defer</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/script-src-defer-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'script-src-defer', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-integrity.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-integrity.tentative.html
new file mode 100644
index 0000000000..42719e994a
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-integrity.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: script-src-integrity</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/script-src-integrity-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'script-src-integrity', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-module.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-module.tentative.html
new file mode 100644
index 0000000000..606a1ff469
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-module.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: script-src-module</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/script-src-module-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'script-src-module', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-nomodule.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-nomodule.tentative.html
new file mode 100644
index 0000000000..20ca80222e
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-nomodule.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: script-src-nomodule</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/script-src-nomodule-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'script-src-nomodule', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-referrerpolicy-no-referrer.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-referrerpolicy-no-referrer.tentative.html
new file mode 100644
index 0000000000..cf35f5262b
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-referrerpolicy-no-referrer.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: script-src-referrerpolicy-no-referrer</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/script-src-referrerpolicy-no-referrer-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'script-src-referrerpolicy-no-referrer', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-type-application-ecmascript.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-type-application-ecmascript.tentative.html
new file mode 100644
index 0000000000..611afc7085
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-type-application-ecmascript.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: script-src-type-application-ecmascript</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/script-src-type-application-ecmascript-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'script-src-type-application-ecmascript', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-unsupported-type.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-unsupported-type.tentative.html
new file mode 100644
index 0000000000..c7c5b483a4
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src-unsupported-type.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: script-src-unsupported-type</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/script-src-unsupported-type-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'script-src-unsupported-type', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src.tentative.html
new file mode 100644
index 0000000000..1d545ff0e1
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/script-src.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/script-src-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'script-src', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/svg-image-href.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/svg-image-href.tentative.html
new file mode 100644
index 0000000000..b5e22c1de9
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/svg-image-href.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: svg-image-href</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/svg-image-href-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'svg-image-href', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/svg-image-src.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/svg-image-src.tentative.html
new file mode 100644
index 0000000000..63232fa492
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/svg-image-src.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: svg-image-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/svg-image-src-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'svg-image-src', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/svg-image-xlinkhref.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/svg-image-xlinkhref.tentative.html
new file mode 100644
index 0000000000..9887004bc4
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/svg-image-xlinkhref.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: svg-image-xlinkhref</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/svg-image-xlinkhref-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'svg-image-xlinkhref', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/svg-script-href.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/svg-script-href.tentative.html
new file mode 100644
index 0000000000..54d4e313f9
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/svg-script-href.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: svg-script-href</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/svg-script-href-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'svg-script-href', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/svg-script-src.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/svg-script-src.tentative.html
new file mode 100644
index 0000000000..8b2397e071
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/svg-script-src.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: svg-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/svg-script-src-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'svg-script-src', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/svg-script-xlinkhref.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/svg-script-xlinkhref.tentative.html
new file mode 100644
index 0000000000..08b4efc3ee
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/svg-script-xlinkhref.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: svg-script-xlinkhref</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/svg-script-xlinkhref-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'svg-script-xlinkhref', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/template-img-src.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/template-img-src.tentative.html
new file mode 100644
index 0000000000..bd83a9359a
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/template-img-src.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: template-img-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/template-img-src-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'template-img-src', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/template-link-stylesheet.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/template-link-stylesheet.tentative.html
new file mode 100644
index 0000000000..d7718bc23b
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/template-link-stylesheet.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: template-link-stylesheet</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/template-link-stylesheet-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'template-link-stylesheet', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/template-script-src.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/template-script-src.tentative.html
new file mode 100644
index 0000000000..f5c23dddb2
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/template-script-src.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: template-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/template-script-src-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'template-script-src', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/template-shadowrootmode-img-src.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/template-shadowrootmode-img-src.tentative.html
new file mode 100644
index 0000000000..96a48dc739
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/template-shadowrootmode-img-src.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: template-shadowrootmode-img-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/template-shadowrootmode-img-src-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'template-shadowrootmode-img-src', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/template-shadowrootmode-link-stylesheet.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/template-shadowrootmode-link-stylesheet.tentative.html
new file mode 100644
index 0000000000..3f08ab3bb7
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/template-shadowrootmode-link-stylesheet.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: template-shadowrootmode-link-stylesheet</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/template-shadowrootmode-link-stylesheet-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'template-shadowrootmode-link-stylesheet', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/template-shadowrootmode-script-src.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/template-shadowrootmode-script-src.tentative.html
new file mode 100644
index 0000000000..6d78fcfff1
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/template-shadowrootmode-script-src.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: template-shadowrootmode-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/template-shadowrootmode-script-src-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'template-shadowrootmode-script-src', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/video-poster.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/video-poster.tentative.html
new file mode 100644
index 0000000000..73b9cb50de
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/video-poster.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: video-poster</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/video-poster-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, true)
+ .then(compare_with_nonspeculative(uuid, 'video-poster', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/xmp-script-src.tentative.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/xmp-script-src.tentative.html
new file mode 100644
index 0000000000..cee708ff72
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/page-load/xmp-script-src.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, page load: xmp-script-src</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({single_test: true});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/xmp-script-src-framed.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, false)
+ .then(compare_with_nonspeculative(uuid, 'xmp-script-src', true))
+ .then(done);
+</script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/base-href-script-src-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/base-href-script-src-nonspeculative.sub.html
new file mode 100644
index 0000000000..e860f0e93d
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/base-href-script-src-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): base-href-script-src</title>
+<!-- non-speculative case -->
+<base href=//{{domains[www1]}}:{{ports[http][0]}}><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/image-src-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/image-src-nonspeculative.sub.html
new file mode 100644
index 0000000000..3d0ec70855
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/image-src-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): image-src</title>
+<!-- non-speculative case -->
+<image src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/img-data-src-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/img-data-src-nonspeculative.sub.html
new file mode 100644
index 0000000000..f739f59070
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/img-data-src-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): img-data-src</title>
+<!-- non-speculative case -->
+<img data-src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/img-src-crossorigin-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/img-src-crossorigin-nonspeculative.sub.html
new file mode 100644
index 0000000000..bb7c7d2c84
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/img-src-crossorigin-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): img-src-crossorigin</title>
+<!-- non-speculative case -->
+<img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" crossorigin>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/img-src-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/img-src-nonspeculative.sub.html
new file mode 100644
index 0000000000..dc27cf837c
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/img-src-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): img-src</title>
+<!-- non-speculative case -->
+<img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/img-src-referrerpolicy-no-referrer-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/img-src-referrerpolicy-no-referrer-nonspeculative.sub.html
new file mode 100644
index 0000000000..6fd38fdc0c
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/img-src-referrerpolicy-no-referrer-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): img-src-referrerpolicy-no-referrer</title>
+<!-- non-speculative case -->
+<img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" referrerpolicy=no-referrer>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/img-srcset-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/img-srcset-nonspeculative.sub.html
new file mode 100644
index 0000000000..3adcae9dce
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/img-srcset-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): img-srcset</title>
+<!-- non-speculative case -->
+<img srcset="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-no-rel-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-no-rel-nonspeculative.sub.html
new file mode 100644
index 0000000000..50fee5964c
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-no-rel-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): link-no-rel</title>
+<!-- non-speculative case -->
+<link href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-alternate-stylesheet-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-alternate-stylesheet-nonspeculative.sub.html
new file mode 100644
index 0000000000..cdd3a0cfaa
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-alternate-stylesheet-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): link-rel-alternate-stylesheet</title>
+<!-- non-speculative case -->
+<link rel="alternate stylesheet" href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-preload-as-font-crossorigin-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-preload-as-font-crossorigin-nonspeculative.sub.html
new file mode 100644
index 0000000000..6329cd0fcb
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-preload-as-font-crossorigin-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): link-rel-preload-as-font-crossorigin</title>
+<!-- non-speculative case -->
+<link rel=preload as=font href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" crossorigin>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-preload-as-image-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-preload-as-image-nonspeculative.sub.html
new file mode 100644
index 0000000000..80258dfa63
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-preload-as-image-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): link-rel-preload-as-image</title>
+<!-- non-speculative case -->
+<link rel=preload as=image href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-preload-as-script-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-preload-as-script-nonspeculative.sub.html
new file mode 100644
index 0000000000..04fe1b1dc0
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-preload-as-script-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): link-rel-preload-as-script</title>
+<!-- non-speculative case -->
+<link rel=preload as=script href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-preload-as-style-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-preload-as-style-nonspeculative.sub.html
new file mode 100644
index 0000000000..4cc7ef40bc
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-preload-as-style-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): link-rel-preload-as-style</title>
+<!-- non-speculative case -->
+<link rel=preload as=style href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-crossorigin-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-crossorigin-nonspeculative.sub.html
new file mode 100644
index 0000000000..81a28c07a3
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-crossorigin-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): link-rel-stylesheet-crossorigin</title>
+<!-- non-speculative case -->
+<link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" crossorigin>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-disabled-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-disabled-nonspeculative.sub.html
new file mode 100644
index 0000000000..5584e7d4fc
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-disabled-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): link-rel-stylesheet-disabled</title>
+<!-- non-speculative case -->
+<link rel="stylesheet" href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" disabled>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-integrity-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-integrity-nonspeculative.sub.html
new file mode 100644
index 0000000000..9e9ae176a5
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-integrity-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): link-rel-stylesheet-integrity</title>
+<!-- non-speculative case -->
+<link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" integrity="sha384-OLBgp1GsljhM2TJ+sbHjaiH9txEUvgdDTAzHv2P24donTt6/529l+9Ua0vFImLlb">
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-nomatch-media-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-nomatch-media-nonspeculative.sub.html
new file mode 100644
index 0000000000..b10375c2c9
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-nomatch-media-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): link-rel-stylesheet-nomatch-media</title>
+<!-- non-speculative case -->
+<link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" media="not all">
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-nonspeculative.sub.html
new file mode 100644
index 0000000000..4aeb803ca3
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): link-rel-stylesheet</title>
+<!-- non-speculative case -->
+<link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-referrerpolicy-no-referrer-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-referrerpolicy-no-referrer-nonspeculative.sub.html
new file mode 100644
index 0000000000..0c79457bdd
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-referrerpolicy-no-referrer-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): link-rel-stylesheet-referrerpolicy-no-referrer</title>
+<!-- non-speculative case -->
+<link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" referrerpolicy=no-referrer>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-type-text-css-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-type-text-css-nonspeculative.sub.html
new file mode 100644
index 0000000000..c851eee104
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-type-text-css-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): link-rel-stylesheet-type-text-css</title>
+<!-- non-speculative case -->
+<link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" type=text/css>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-unsupported-type-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-unsupported-type-nonspeculative.sub.html
new file mode 100644
index 0000000000..7db5b49cd7
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/link-rel-stylesheet-unsupported-type-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): link-rel-stylesheet-unsupported-type</title>
+<!-- non-speculative case -->
+<link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" type=text/plain>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/math-font-face-script-src-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/math-font-face-script-src-nonspeculative.sub.html
new file mode 100644
index 0000000000..1ea61d5a28
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/math-font-face-script-src-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): math-font-face-script-src</title>
+<!-- non-speculative case -->
+<math><font face><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></font></math>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/math-font-script-src-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/math-font-script-src-nonspeculative.sub.html
new file mode 100644
index 0000000000..d3d6567a42
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/math-font-script-src-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): math-font-script-src</title>
+<!-- non-speculative case -->
+<math><font><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></font></math>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/math-script-src-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/math-script-src-nonspeculative.sub.html
new file mode 100644
index 0000000000..7e27036e46
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/math-script-src-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): math-script-src</title>
+<!-- non-speculative case -->
+<math><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></math>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/meta-charset-script-src-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/meta-charset-script-src-nonspeculative.sub.html
new file mode 100644
index 0000000000..2a47f520ae
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/meta-charset-script-src-nonspeculative.sub.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<!-- no meta charset -->
+<!-- (padding to exceed 1024 bytes processed by the character encoding scanner) -->
+<!-- -->
+<!-- -->
+<!-- -->
+<!-- -->
+<!-- -->
+<!-- -->
+<!-- -->
+<!-- -->
+<!-- -->
+<title>Speculative parsing, non-speculative (helper file): meta-charset-script-src</title>
+<!-- non-speculative case -->
+<!-- no meta charset --><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/meta-csp-img-src-asterisk-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/meta-csp-img-src-asterisk-nonspeculative.sub.html
new file mode 100644
index 0000000000..50954c86c3
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/meta-csp-img-src-asterisk-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): meta-csp-img-src-asterisk</title>
+<!-- non-speculative case -->
+<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; img-src *"><img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/meta-csp-img-src-none-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/meta-csp-img-src-none-nonspeculative.sub.html
new file mode 100644
index 0000000000..fe651e834e
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/meta-csp-img-src-none-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): meta-csp-img-src-none</title>
+<!-- non-speculative case -->
+<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'; img-src 'none'"><img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/meta-referrer-no-referrer-img-src-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/meta-referrer-no-referrer-img-src-nonspeculative.sub.html
new file mode 100644
index 0000000000..0e7a13ee32
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/meta-referrer-no-referrer-img-src-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): meta-referrer-no-referrer-img-src</title>
+<!-- non-speculative case -->
+<meta name=referrer content=no-referrer><img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;">
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/meta-viewport-link-stylesheet-media-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/meta-viewport-link-stylesheet-media-nonspeculative.sub.html
new file mode 100644
index 0000000000..cb0f992adb
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/meta-viewport-link-stylesheet-media-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): meta-viewport-link-stylesheet-media</title>
+<!-- non-speculative case -->
+<meta name=viewport content="width=400, initial-scale=1"><link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" media="(min-width: 401px)">
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/nested-template-shadowrootmode-1-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/nested-template-shadowrootmode-1-nonspeculative.sub.html
new file mode 100644
index 0000000000..ec14d9b9c4
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/nested-template-shadowrootmode-1-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): nested-template-shadowrootmode-1</title>
+<!-- non-speculative case -->
+<template><div><template shadowrootmode="closed"><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></template></div></template>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/nested-template-shadowrootmode-2-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/nested-template-shadowrootmode-2-nonspeculative.sub.html
new file mode 100644
index 0000000000..71231ee70c
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/nested-template-shadowrootmode-2-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): nested-template-shadowrootmode-2</title>
+<!-- non-speculative case -->
+<div><template shadowrootmode="closed"><template><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></template></template></div>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/picture-source-br-img-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/picture-source-br-img-nonspeculative.sub.html
new file mode 100644
index 0000000000..371600284d
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/picture-source-br-img-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): picture-source-br-img</title>
+<!-- non-speculative case -->
+<picture><source srcset="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"><br><img></picture>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/picture-source-no-img-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/picture-source-no-img-nonspeculative.sub.html
new file mode 100644
index 0000000000..858485acef
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/picture-source-no-img-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): picture-source-no-img</title>
+<!-- non-speculative case -->
+<picture><source srcset="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></picture>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/picture-source-nomatch-media-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/picture-source-nomatch-media-nonspeculative.sub.html
new file mode 100644
index 0000000000..e4dc1444ce
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/picture-source-nomatch-media-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): picture-source-nomatch-media</title>
+<!-- non-speculative case -->
+<picture><source srcset="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" media="not all"><img></picture>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/picture-source-unsupported-type-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/picture-source-unsupported-type-nonspeculative.sub.html
new file mode 100644
index 0000000000..2c7372f1f9
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/picture-source-unsupported-type-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): picture-source-unsupported-type</title>
+<!-- non-speculative case -->
+<picture><source srcset="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" type=text/plain><img></picture>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-async-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-async-nonspeculative.sub.html
new file mode 100644
index 0000000000..cf8acf5fe0
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-async-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): script-src-async</title>
+<!-- non-speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" async></script>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-crossorigin-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-crossorigin-nonspeculative.sub.html
new file mode 100644
index 0000000000..c3e200c0aa
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-crossorigin-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): script-src-crossorigin</title>
+<!-- non-speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" crossorigin></script>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-defer-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-defer-nonspeculative.sub.html
new file mode 100644
index 0000000000..2bda3229e3
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-defer-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): script-src-defer</title>
+<!-- non-speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" defer></script>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-integrity-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-integrity-nonspeculative.sub.html
new file mode 100644
index 0000000000..a52d956e7b
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-integrity-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): script-src-integrity</title>
+<!-- non-speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" integrity="sha384-OLBgp1GsljhM2TJ+sbHjaiH9txEUvgdDTAzHv2P24donTt6/529l+9Ua0vFImLlb"></script>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-module-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-module-nonspeculative.sub.html
new file mode 100644
index 0000000000..7cb2839621
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-module-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): script-src-module</title>
+<!-- non-speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" type=module></script>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-nomodule-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-nomodule-nonspeculative.sub.html
new file mode 100644
index 0000000000..1ffedbb55a
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-nomodule-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): script-src-nomodule</title>
+<!-- non-speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" nomodule></script>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-nonspeculative.sub.html
new file mode 100644
index 0000000000..494f854d5e
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): script-src</title>
+<!-- non-speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-referrerpolicy-no-referrer-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-referrerpolicy-no-referrer-nonspeculative.sub.html
new file mode 100644
index 0000000000..4581eb03ad
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-referrerpolicy-no-referrer-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): script-src-referrerpolicy-no-referrer</title>
+<!-- non-speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" referrerpolicy=no-referrer></script>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-type-application-ecmascript-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-type-application-ecmascript-nonspeculative.sub.html
new file mode 100644
index 0000000000..1746cd2e42
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-type-application-ecmascript-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): script-src-type-application-ecmascript</title>
+<!-- non-speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" type=application/ecmascript></script>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-unsupported-type-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-unsupported-type-nonspeculative.sub.html
new file mode 100644
index 0000000000..94098b5c77
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/script-src-unsupported-type-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): script-src-unsupported-type</title>
+<!-- non-speculative case -->
+<script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;" type=text/plain></script>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/svg-image-href-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/svg-image-href-nonspeculative.sub.html
new file mode 100644
index 0000000000..6c61c3208a
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/svg-image-href-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): svg-image-href</title>
+<!-- non-speculative case -->
+<svg><image href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></image></svg>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/svg-image-src-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/svg-image-src-nonspeculative.sub.html
new file mode 100644
index 0000000000..0aba339a16
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/svg-image-src-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): svg-image-src</title>
+<!-- non-speculative case -->
+<svg><image src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></image></svg>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/svg-image-xlinkhref-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/svg-image-xlinkhref-nonspeculative.sub.html
new file mode 100644
index 0000000000..c4e9e3f8b7
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/svg-image-xlinkhref-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): svg-image-xlinkhref</title>
+<!-- non-speculative case -->
+<svg><image xlink:href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></image></svg>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/svg-script-href-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/svg-script-href-nonspeculative.sub.html
new file mode 100644
index 0000000000..9a28a6cd12
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/svg-script-href-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): svg-script-href</title>
+<!-- non-speculative case -->
+<svg><script href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></svg>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/svg-script-src-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/svg-script-src-nonspeculative.sub.html
new file mode 100644
index 0000000000..c37091ce3c
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/svg-script-src-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): svg-script-src</title>
+<!-- non-speculative case -->
+<svg><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></svg>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/svg-script-xlinkhref-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/svg-script-xlinkhref-nonspeculative.sub.html
new file mode 100644
index 0000000000..376fafdcf1
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/svg-script-xlinkhref-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): svg-script-xlinkhref</title>
+<!-- non-speculative case -->
+<svg><script xlink:href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></svg>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/template-img-src-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/template-img-src-nonspeculative.sub.html
new file mode 100644
index 0000000000..db331fc88b
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/template-img-src-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): template-img-src</title>
+<!-- non-speculative case -->
+<template><img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></template>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/template-link-stylesheet-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/template-link-stylesheet-nonspeculative.sub.html
new file mode 100644
index 0000000000..cc3072d890
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/template-link-stylesheet-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): template-link-stylesheet</title>
+<!-- non-speculative case -->
+<template><link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></template>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/template-script-src-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/template-script-src-nonspeculative.sub.html
new file mode 100644
index 0000000000..0ec64a0163
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/template-script-src-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): template-script-src</title>
+<!-- non-speculative case -->
+<template><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></template>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/template-shadowrootmode-img-src-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/template-shadowrootmode-img-src-nonspeculative.sub.html
new file mode 100644
index 0000000000..ec3ca52442
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/template-shadowrootmode-img-src-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): template-shadowrootmode-img-src</title>
+<!-- non-speculative case -->
+<div><template shadowrootmode="closed"><img src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></template></div>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/template-shadowrootmode-link-stylesheet-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/template-shadowrootmode-link-stylesheet-nonspeculative.sub.html
new file mode 100644
index 0000000000..ed813b3fd5
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/template-shadowrootmode-link-stylesheet-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): template-shadowrootmode-link-stylesheet</title>
+<!-- non-speculative case -->
+<div><template shadowrootmode="closed"><link rel=stylesheet href="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></template></div>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/template-shadowrootmode-script-src-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/template-shadowrootmode-script-src-nonspeculative.sub.html
new file mode 100644
index 0000000000..cd401584d8
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/template-shadowrootmode-script-src-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): template-shadowrootmode-script-src</title>
+<!-- non-speculative case -->
+<div><template shadowrootmode="closed"><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></template></div>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/video-poster-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/video-poster-nonspeculative.sub.html
new file mode 100644
index 0000000000..c233e899cb
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/video-poster-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): video-poster</title>
+<!-- non-speculative case -->
+<video poster="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></video>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/xmp-script-src-nonspeculative.sub.html b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/xmp-script-src-nonspeculative.sub.html
new file mode 100644
index 0000000000..e3a93d441d
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/generated/resources/xmp-script-src-nonspeculative.sub.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->
+<meta charset=utf-8>
+<title>Speculative parsing, non-speculative (helper file): xmp-script-src</title>
+<!-- non-speculative case -->
+<xmp><script src="/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"></script></xmp>
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay=1500"></script>
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/resources/speculative-parsing-util.js b/testing/web-platform/tests/html/syntax/speculative-parsing/resources/speculative-parsing-util.js
new file mode 100644
index 0000000000..b675665ca9
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/resources/speculative-parsing-util.js
@@ -0,0 +1,58 @@
+function expect_fetched_onload(uuid, expectation) {
+ return new Promise(resolve => {
+ addEventListener('load', resolve);
+ }).then(async () => {
+ const result = await get_result(uuid);
+ if (expectation) {
+ assert_not_equals(result, '', 'speculative case did not fetch');
+ } else {
+ assert_equals(result, '', 'speculative case incorrectly fetched');
+ }
+ return result;
+ });
+}
+
+function compare_with_nonspeculative(uuid, title, test_nonspeculative) {
+ return function(speculative_result) {
+ if (!test_nonspeculative) {
+ return Promise.resolve();
+ }
+ return new Promise(resolve => {
+ const iframe = document.createElement('iframe');
+ iframe.onload = resolve;
+ iframe.src = `../resources/${title}-nonspeculative.sub.html?uuid=${uuid}`;
+ document.body.appendChild(iframe);
+ }).then(async () => {
+ const result = await get_result(uuid);
+ if (speculative_result === '') {
+ assert_equals(result, '', 'non-speculative case incorrectly fetched')
+ } else {
+ assert_not_equals(result, '', 'non-speculative case did not fetch');
+ const speculative_headers = speculative_result.trim().split("\n");
+ const nonspeculative_headers = result.trim().split("\n");
+ assert_equals(speculative_headers.length, nonspeculative_headers.length, 'expected the same number of headers between speculative and non-speculative')
+ for (let i = 0; i < speculative_headers.length; ++i) {
+ let [s_header, s_value] = split_header(speculative_headers[i]);
+ let [ns_header, ns_value] = split_header(nonspeculative_headers[i]);
+ assert_equals(s_header, ns_header, 'expected the order of headers to match between speculative and non-speculative');
+ assert_equals(s_value, ns_value, `expected \`${s_header}\` values to match between speculative and non-speculative`);
+ }
+ }
+ });
+ }
+}
+
+function split_header(line) {
+ let [header, value] = line.split(': ');
+ header = header.toLowerCase();
+ value = value.trim();
+ if (header === 'referer') {
+ value = value.replace(/\/generated\/.+$/, '/generated/...');
+ }
+ return [header, value];
+}
+
+async function get_result(uuid) {
+ const response = await fetch(`/html/syntax/speculative-parsing/resources/stash.py?action=take&uuid=${uuid}`);
+ return await response.text();
+}
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/resources/stash.py b/testing/web-platform/tests/html/syntax/speculative-parsing/resources/stash.py
new file mode 100644
index 0000000000..5ad04e1558
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/resources/stash.py
@@ -0,0 +1,12 @@
+def main(request, response):
+ if request.GET[b"action"] == b"put":
+ encodingcheck = u"param-encodingcheck: " + request.url_parts.query.split(u"&encodingcheck=")[1] + u"\r\n"
+ headers = []
+ for line in str(request.raw_headers).split(u'\n'):
+ header = line.split(':')[0]
+ # TODO(zcorpan): also test Cookie
+ if header in [u'Origin', u'Accept', u'Referer']:
+ headers.append(line)
+ request.server.stash.put(request.GET[b"uuid"], encodingcheck + u"\r\n".join(headers))
+ return u''
+ return request.server.stash.take(request.GET[b"uuid"])
diff --git a/testing/web-platform/tests/html/syntax/speculative-parsing/tools/generate.py b/testing/web-platform/tests/html/syntax/speculative-parsing/tools/generate.py
new file mode 100755
index 0000000000..3457f94d70
--- /dev/null
+++ b/testing/web-platform/tests/html/syntax/speculative-parsing/tools/generate.py
@@ -0,0 +1,701 @@
+#!/usr/bin/env python3
+
+# Usage: python3 generate.py
+#
+# This will remove all existing .html files in the generated directories and generate new tests.
+
+
+# Notes on potential confusion with the 3 string substitution features in different layers:
+#
+# - In Python strings when calling .format(): {something} or {}
+# To get a literal {} use {{}}.
+# The template_* variables are ones below are those that will use .format().
+# https://docs.python.org/3/library/string.html#formatstrings
+# - JS template literals: ${something}
+# https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals
+# - wptserve server-side substitution when generating a response: {{GET[something]}}
+# https://web-platform-tests.org/writing-tests/server-pipes.html#sub
+
+import os, shutil
+
+target_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + "/generated"
+
+delay = u'1500' # Lower value makes the test complete faster, but also higher risk of flaky results
+
+# Test data
+
+tentative_tests = [
+ # title,
+ # encoding,
+ # template_testcase_markup,
+ # template_nonspeculative_testcase_markup (if different from template_testcase_markup),
+ # expect_load,
+ # test_nonspeculative
+ (
+ u'script-src',
+ u'utf-8',
+ u'<script src="{}"></script>',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'meta-charset-script-src',
+ None,
+ u'<meta charset=windows-1254><script src="{}"></script>',
+ u'<!-- no meta charset --><script src="{}"></script>',
+ u'true',
+ u'true'
+ ),
+ (
+ # This test is only valid on "mobile" where meta viewport has an effect
+ u'meta-viewport-link-stylesheet-media',
+ u'utf-8',
+ u'<meta name=viewport content="width=400, initial-scale=1"><link rel=stylesheet href="{}" media="(min-width: 401px)">',
+ None,
+ u'false',
+ u'true'
+ ),
+ (
+ u'meta-csp-img-src-none',
+ u'utf-8',
+ u'<meta http-equiv="Content-Security-Policy" content="script-src \'self\' \'unsafe-inline\'; img-src \'none\'"><img src="{}">',
+ None,
+ u'false',
+ u'true'
+ ),
+ (
+ u'meta-csp-img-src-asterisk',
+ u'utf-8',
+ u'<meta http-equiv="Content-Security-Policy" content="script-src \'self\' \'unsafe-inline\'; img-src *"><img src="{}">',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'meta-referrer-no-referrer-img-src',
+ u'utf-8',
+ u'<meta name=referrer content=no-referrer><img src="{}">',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'base-href-script-src',
+ u'utf-8',
+ u'<base href=//{{{{domains[www1]}}}}:{{{{ports[http][0]}}}}><script src="{}"></script>',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'script-src-unsupported-type',
+ u'utf-8',
+ u'<script src="{}" type=text/plain></script>',
+ None,
+ u'false',
+ u'true'
+ ),
+ (
+ u'script-src-type-application-ecmascript',
+ u'utf-8',
+ u'<script src="{}" type=application/ecmascript></script>',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'script-src-nomodule',
+ u'utf-8',
+ u'<script src="{}" nomodule></script>',
+ None,
+ u'false',
+ u'true'
+ ),
+ (
+ u'script-src-module',
+ u'utf-8',
+ u'<script src="{}" type=module></script>',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'script-src-async',
+ u'utf-8',
+ u'<script src="{}" async></script>',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'script-src-defer',
+ u'utf-8',
+ u'<script src="{}" defer></script>',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'script-src-crossorigin',
+ u'utf-8',
+ u'<script src="{}" crossorigin></script>',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'script-src-integrity',
+ u'utf-8',
+ u'<script src="{}" integrity="sha384-OLBgp1GsljhM2TJ+sbHjaiH9txEUvgdDTAzHv2P24donTt6/529l+9Ua0vFImLlb"></script>',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'script-src-referrerpolicy-no-referrer',
+ u'utf-8',
+ u'<script src="{}" referrerpolicy=no-referrer></script>',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'template-script-src',
+ u'utf-8',
+ u'<template><script src="{}"></script></template>',
+ None,
+ u'false',
+ u'true'
+ ),
+ (
+ u'template-link-stylesheet',
+ u'utf-8',
+ u'<template><link rel=stylesheet href="{}"></template>',
+ None,
+ u'false',
+ u'true'
+ ),
+ (
+ u'template-img-src',
+ u'utf-8',
+ u'<template><img src="{}"></template>',
+ None,
+ u'false',
+ u'true'
+ ),
+ (
+ u'template-shadowrootmode-script-src',
+ u'utf-8',
+ u'<div><template shadowrootmode="closed"><script src="{}"></script></template></div>',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'template-shadowrootmode-link-stylesheet',
+ u'utf-8',
+ u'<div><template shadowrootmode="closed"><link rel=stylesheet href="{}"></template></div>',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'template-shadowrootmode-img-src',
+ u'utf-8',
+ u'<div><template shadowrootmode="closed"><img src="{}"></template></div>',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'nested-template-shadowrootmode-1',
+ u'utf-8',
+ u'<template><div><template shadowrootmode="closed"><script src="{}"></script></template></div></template>',
+ None,
+ u'false',
+ u'true'
+ ),
+ (
+ u'nested-template-shadowrootmode-2',
+ u'utf-8',
+ u'<div><template shadowrootmode="closed"><template><script src="{}"></script></template></template></div>',
+ None,
+ u'false',
+ u'true'
+ ),
+ (
+ u'link-no-rel',
+ u'utf-8',
+ u'<link href="{}">',
+ None,
+ u'false',
+ u'true'
+ ),
+ (
+ u'link-rel-stylesheet',
+ u'utf-8',
+ u'<link rel=stylesheet href="{}">',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'link-rel-alternate-stylesheet',
+ u'utf-8',
+ u'<link rel="alternate stylesheet" href="{}">',
+ None,
+ u'false',
+ u'true'
+ ),
+ (
+ u'link-rel-stylesheet-disabled',
+ u'utf-8',
+ u'<link rel="stylesheet" href="{}" disabled>',
+ None,
+ u'false',
+ u'true'
+ ),
+ (
+ u'link-rel-stylesheet-nomatch-media',
+ u'utf-8',
+ u'<link rel=stylesheet href="{}" media="not all">',
+ None,
+ u'false',
+ u'true'
+ ),
+ (
+ u'link-rel-stylesheet-unsupported-type',
+ u'utf-8',
+ u'<link rel=stylesheet href="{}" type=text/plain>',
+ None,
+ u'false',
+ u'true'
+ ),
+ (
+ u'link-rel-stylesheet-type-text-css',
+ u'utf-8',
+ u'<link rel=stylesheet href="{}" type=text/css>',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'link-rel-stylesheet-crossorigin',
+ u'utf-8',
+ u'<link rel=stylesheet href="{}" crossorigin>',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'link-rel-stylesheet-integrity',
+ u'utf-8',
+ u'<link rel=stylesheet href="{}" integrity="sha384-OLBgp1GsljhM2TJ+sbHjaiH9txEUvgdDTAzHv2P24donTt6/529l+9Ua0vFImLlb">',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'link-rel-stylesheet-referrerpolicy-no-referrer',
+ u'utf-8',
+ u'<link rel=stylesheet href="{}" referrerpolicy=no-referrer>',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'link-rel-preload-as-style',
+ u'utf-8',
+ u'<link rel=preload as=style href="{}">',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'link-rel-preload-as-font-crossorigin',
+ u'utf-8',
+ u'<link rel=preload as=font href="{}" crossorigin>',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'link-rel-preload-as-script',
+ u'utf-8',
+ u'<link rel=preload as=script href="{}">',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'link-rel-preload-as-image',
+ u'utf-8',
+ u'<link rel=preload as=image href="{}">',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'img-src',
+ u'utf-8',
+ u'<img src="{}">',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'img-data-src',
+ u'utf-8',
+ u'<img data-src="{}">',
+ None,
+ u'false',
+ u'true'
+ ),
+ (
+ # <image> is turned into <img> in the tree builder
+ u'image-src',
+ u'utf-8',
+ u'<image src="{}">',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'img-srcset',
+ u'utf-8',
+ u'<img srcset="{}">',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'img-src-crossorigin',
+ u'utf-8',
+ u'<img src="{}" crossorigin>',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'img-src-referrerpolicy-no-referrer',
+ u'utf-8',
+ u'<img src="{}" referrerpolicy=no-referrer>',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'img-src-loading-lazy',
+ u'utf-8',
+ u'<img src="{}" loading=lazy>',
+ None,
+ u'false',
+ u'false'
+ ),
+ (
+ u'picture-source-unsupported-type',
+ u'utf-8',
+ u'<picture><source srcset="{}" type=text/plain><img></picture>',
+ None,
+ u'false',
+ u'true'
+ ),
+ (
+ u'picture-source-nomatch-media',
+ u'utf-8',
+ u'<picture><source srcset="{}" media="not all"><img></picture>',
+ None,
+ u'false',
+ u'true'
+ ),
+ (
+ u'picture-source-no-img',
+ u'utf-8',
+ u'<picture><source srcset="{}"></picture>',
+ None,
+ u'false',
+ u'true'
+ ),
+ (
+ u'picture-source-br-img',
+ u'utf-8',
+ u'<picture><source srcset="{}"><br><img></picture>',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'video-poster',
+ u'utf-8',
+ u'<video poster="{}"></video>',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'xmp-script-src',
+ u'utf-8',
+ u'<xmp><script src="{}"></script></xmp>',
+ None,
+ u'false',
+ u'true'
+ ),
+ (
+ # MathML doesn't have script
+ u'math-script-src',
+ u'utf-8',
+ u'<math><script src="{}"></script></math>',
+ None,
+ u'false',
+ u'true'
+ ),
+ (
+ u'math-font-script-src',
+ u'utf-8',
+ u'<math><font><script src="{}"></script></font></math>',
+ None,
+ u'false',
+ u'true'
+ ),
+ (
+ # This breaks out of foreign content, so the script is an HTML script
+ # https://html.spec.whatwg.org/multipage/#parsing-main-inforeign
+ u'math-font-face-script-src',
+ u'utf-8',
+ u'<math><font face><script src="{}"></script></font></math>',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'svg-script-href',
+ u'utf-8',
+ u'<svg><script href="{}"></script></svg>',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'svg-script-xlinkhref',
+ u'utf-8',
+ u'<svg><script xlink:href="{}"></script></svg>',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ # SVG script element doesn't have a src attribute
+ u'svg-script-src',
+ u'utf-8',
+ u'<svg><script src="{}"></script></svg>',
+ None,
+ u'false',
+ u'true'
+ ),
+ (
+ u'svg-image-href',
+ u'utf-8',
+ u'<svg><image href="{}"></image></svg>',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ u'svg-image-xlinkhref',
+ u'utf-8',
+ u'<svg><image xlink:href="{}"></image></svg>',
+ None,
+ u'true',
+ u'true'
+ ),
+ (
+ # SVG image element doesn't have a src attribute
+ u'svg-image-src',
+ u'utf-8',
+ u'<svg><image src="{}"></image></svg>',
+ None,
+ u'false',
+ u'true'
+ ),
+]
+
+tests = [
+ # title,
+ # encoding,
+ # template_testcase_markup,
+ # expect_load,
+ # test_nonspeculative
+]
+
+# Templates
+
+preamble = u"""<!DOCTYPE html>
+<!-- DO NOT EDIT. This file has been generated. Source:
+ /html/syntax/speculative-parsing/tools/generate.py
+-->"""
+
+no_meta_charset = u"""<!-- no meta charset -->
+<!-- (padding to exceed 1024 bytes processed by the character encoding scanner) -->
+<!-- -->
+<!-- -->
+<!-- -->
+<!-- -->
+<!-- -->
+<!-- -->
+<!-- -->
+<!-- -->
+<!-- -->"""
+
+# Notes on `encodingcheck` in the URL below
+#
+# - &Gbreve; is the HTML character reference for U+011E LATIN CAPITAL LETTER G WITH BREVE
+# - In windows-1254, this character is encoded as 0xD0.
+# When used in the query part of a URL, it gets percent-encoded as %D0.
+# - In windows-1252 (usually the fallback encoding), that character can't be encoded, so is instead
+# represented as &#286; percent-encoded, so %26%23286%3B.
+# https://url.spec.whatwg.org/#query-state
+# https://url.spec.whatwg.org/#code-point-percent-encode-after-encoding
+# - In utf-8, it's percent-encoded as utf-8: %C4%9E
+# - stash.py will store this value as "param-encodingcheck"
+
+url_wptserve_sub = u"/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid={{GET[uuid]}}&amp;encodingcheck=&Gbreve;"
+url_js_sub = u"/html/syntax/speculative-parsing/resources/stash.py?action=put&amp;uuid=${uuid}&amp;encodingcheck=&Gbreve;"
+
+
+# Non-speculative (normal) case to compare results with
+
+template_nonspeculative = u"""{preamble}
+{encoding_decl}
+<title>Speculative parsing, non-speculative (helper file): {title}</title>
+<!-- non-speculative case -->
+{nonspeculative_testcase_markup}
+<!-- block the load event for a bit: -->
+<script src="/common/slow.py?delay={delay}"></script>
+"""
+
+# Scenario: page load
+
+template_pageload_toplevel = u"""{preamble}
+{encoding_decl}
+<title>Speculative parsing, page load: {title}</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<body>
+<script>
+ setup({{single_test: true}});
+ const uuid = token();
+ const iframe = document.createElement('iframe');
+ iframe.src = `resources/{title}-framed.sub.html?uuid=${{uuid}}`;
+ document.body.appendChild(iframe);
+ expect_fetched_onload(uuid, {expect_load})
+ .then(compare_with_nonspeculative(uuid, '{title}', {test_nonspeculative}))
+ .then(done);
+</script>
+"""
+
+template_pageload_framed = u"""{preamble}
+{encoding_decl}
+<title>Speculative parsing, page load (helper file): {title}</title>
+<script src="/common/slow.py?delay={delay}"></script>
+<script>
+ document.write('<plaintext>');
+</script>
+<!-- speculative case -->
+{testcase_markup}
+"""
+
+# Scenario: document.write()
+
+template_docwrite = u"""{preamble}
+{encoding_decl}
+<title>Speculative parsing, document.write(): {title}</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/common/utils.js></script>
+<script src=/html/syntax/speculative-parsing/resources/speculative-parsing-util.js></script>
+<script>
+ setup({{single_test: true}});
+ const uuid = token();
+ expect_fetched_onload(uuid, {expect_load})
+ .then(compare_with_nonspeculative(uuid, '{title}', {test_nonspeculative}))
+ .then(done);
+ document.write(`
+ <script src="/common/slow.py?delay={delay}"><\\/script>
+ <script>
+ document.write('<plaintext>');
+ <\\/script>
+ <\\!-- speculative case in document.write -->
+ {testcase_markup}
+ `);
+</script>
+"""
+
+# Scenario: <link rel=prerender> - TODO(zcorpan)
+
+template_prerender_toplevel = u"""{preamble}
+{encoding_decl}
+<title>Speculative parsing, prerender: {title}</title>
+...
+"""
+
+template_prerender_linked = u"""{preamble}
+{encoding_decl}
+<title>Speculative parsing, prerender (helper file): {title}</title>
+...
+"""
+
+# Generate tests
+
+# wipe target_dir of HTML files
+if os.path.isdir(target_dir):
+ for root, dirs, files in os.walk(target_dir):
+ for name in files:
+ if name.endswith('.html'):
+ path = os.path.join(root, name)
+ if os.path.isfile(path):
+ os.remove(path)
+
+def write_file(path, content):
+ path = os.path.join(target_dir, path)
+ os.makedirs(os.path.dirname(path), exist_ok=True)
+ file = open(os.path.join(target_dir, path), 'w')
+ file.write(content)
+ file.close()
+
+def generate_tests(testcase, tentative):
+ title, encoding, template_testcase_markup, template_nonspeculative_testcase_markup, expect_load, test_nonspeculative = testcase
+ if template_nonspeculative_testcase_markup == None:
+ template_nonspeculative_testcase_markup = template_testcase_markup
+ ext = u""
+ if tentative:
+ ext = u".tentative"
+
+ if encoding == None:
+ encoding_decl = no_meta_charset
+ else:
+ encoding_decl = f"<meta charset={encoding}>"
+
+ html_testcase_markup = template_testcase_markup.format(url_wptserve_sub)
+ html_nonspeculative_testcase_markup = template_nonspeculative_testcase_markup.format(url_wptserve_sub)
+ js_testcase_markup = template_testcase_markup.format(url_js_sub).replace(u"</script>", u"<\/script>").replace(u"<meta charset", u"<meta\ charset")
+
+ if test_nonspeculative == u'true':
+ nonspeculative = template_nonspeculative.format(preamble=preamble, encoding_decl=encoding_decl, title=title, nonspeculative_testcase_markup=html_nonspeculative_testcase_markup, delay=delay)
+ write_file(f"resources/{title}-nonspeculative.sub.html", nonspeculative)
+
+ pageload_toplevel = template_pageload_toplevel.format(preamble=preamble, encoding_decl=encoding_decl, title=title, expect_load=expect_load, test_nonspeculative=test_nonspeculative)
+ write_file(f"page-load/{title}{ext}.html", pageload_toplevel)
+ pageload_framed = template_pageload_framed.format(preamble=preamble, encoding_decl=encoding_decl, title=title, testcase_markup=html_testcase_markup, delay=delay)
+ write_file(f"page-load/resources/{title}-framed.sub.html", pageload_framed)
+
+ docwrite = template_docwrite.format(preamble=preamble, encoding_decl=encoding_decl, title=title, expect_load=expect_load, testcase_markup=js_testcase_markup, test_nonspeculative=test_nonspeculative, delay=delay)
+ write_file(f"document-write/{title}{ext}.sub.html", docwrite)
+
+for testcase in tests:
+ generate_tests(testcase, False)
+
+for testcase in tentative_tests:
+ generate_tests(testcase, True)