Bug 1541637 [wpt PR 16141] - Fix flaky `Sec-Fetch-*` tests., a=testonly

Automatic update from web-platform-tests
Fix flaky `Sec-Fetch-*` tests.

The tests in //fetch/sec-metadata use the server-side stash, but don't
do so with unique-enough identifiers. This patch adds a nonce to the
stash key used by the tests, ensuring that they're not interfering
with each other.

Bug: 947023
Change-Id: If24d441f6d0d9ced7f0eb1413eb78374fa3f62b5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1543795
Reviewed-by: Adam Rice <ricea@chromium.org>
Commit-Queue: Mike West <mkwst@chromium.org>
Cr-Commit-Position: refs/heads/master@{#645718}

--

wpt-commits: c3e58eeeef43bd5a9dd905f1942e79b394d61924
wpt-pr: 16141
This commit is contained in:
Mike West 2019-04-18 11:58:46 +00:00 коммит произвёл James Graham
Родитель 178bf4a80e
Коммит 374c01b5a4
12 изменённых файлов: 78 добавлений и 39 удалений

Просмотреть файл

@ -4,11 +4,14 @@
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=/fetch/sec-metadata/resources/helper.js></script>
<script src=/common/utils.js></script>
<body>
<script>
let nonce = token();
promise_test(t => {
return new Promise((resolve, reject) => {
let key = "embed-same-origin";
let key = "embed-same-origin" + nonce;
let e = document.createElement('embed');
e.src = "https://{{host}}:{{ports[https][0]}}/fetch/sec-metadata/resources/record-header.py?file=" + key;
@ -27,7 +30,7 @@
promise_test(t => {
return new Promise((resolve, reject) => {
let key = "embed-same-site";
let key = "embed-same-site" + nonce;
let e = document.createElement('embed');
e.src = "https://{{hosts[][www]}}:{{ports[https][0]}}/fetch/sec-metadata/resources/record-header.py?file=" + key;
@ -46,7 +49,7 @@
promise_test(t => {
return new Promise((resolve, reject) => {
let key = "embed-cross-site";
let key = "embed-cross-site" + nonce;
let e = document.createElement('embed');
e.src = "https://{{hosts[alt][www]}}:{{ports[https][0]}}/fetch/sec-metadata/resources/record-header.py?file=" + key;

Просмотреть файл

@ -4,11 +4,14 @@
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=/fetch/sec-metadata/resources/helper.js></script>
<script src=/common/utils.js></script>
<body>
<script>
let nonce = token();
promise_test(t => {
return new Promise((resolve, reject) => {
let key = "object-same-origin";
let key = "object-same-origin" + nonce;
let e = document.createElement('object');
e.data = "https://{{host}}:{{ports[https][0]}}/fetch/sec-metadata/resources/record-header.py?file=" + key;
@ -27,7 +30,7 @@
promise_test(t => {
return new Promise((resolve, reject) => {
let key = "object-same-site";
let key = "object-same-site" + nonce;
let e = document.createElement('object');
e.data = "https://{{hosts[][www]}}:{{ports[https][0]}}/fetch/sec-metadata/resources/record-header.py?file=" + key;
@ -46,7 +49,7 @@
promise_test(t => {
return new Promise((resolve, reject) => {
let key = "object-cross-site";
let key = "object-cross-site" + nonce;
let e = document.createElement('object');
e.data = "https://{{hosts[alt][www]}}:{{ports[https][0]}}/fetch/sec-metadata/resources/record-header.py?file=" + key;

Просмотреть файл

@ -4,11 +4,14 @@
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=/fetch/sec-metadata/resources/helper.js></script>
<script src=/common/utils.js></script>
<body></body>
<script>
promise_test(t => {
let nonce = token();
promise_test(t => {
return new Promise((resolve, reject) => {
let key = "redirect-cross-site-same-origin";
let key = "redirect-cross-site-same-origin" + nonce;
let e = document.createElement('img');
e.src = "https://{{hosts[alt][www]}}:{{ports[https][0]}}/xhr/resources/redirect.py?location=https://{{host}}:{{ports[https][0]}}/fetch/sec-metadata/resources/record-header.py?file=" + key;
@ -34,7 +37,7 @@ promise_test(t => {
promise_test(t => {
return new Promise((resolve, reject) => {
let key = "redirect-cross-site-same-site";
let key = "redirect-cross-site-same-site" + nonce;
let e = document.createElement('img');
e.src = "https://{{hosts[alt][www]}}:{{ports[https][0]}}/xhr/resources/redirect.py?location=https://{{hosts[][www]}}:{{ports[https][0]}}/fetch/sec-metadata/resources/record-header.py?file=" + key;
@ -60,7 +63,7 @@ promise_test(t => {
promise_test(t => {
return new Promise((resolve, reject) => {
let key = "redirect-cross-site-cross-site";
let key = "redirect-cross-site-cross-site" + nonce;
let e = document.createElement('img');
e.src = "https://{{hosts[alt][www]}}:{{ports[https][0]}}/xhr/resources/redirect.py?location=https://{{hosts[alt][www]}}:{{ports[https][0]}}/fetch/sec-metadata/resources/record-header.py?file=" + key;

Просмотреть файл

@ -4,11 +4,14 @@
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=/fetch/sec-metadata/resources/helper.js></script>
<script src=/common/utils.js></script>
<body></body>
<script>
promise_test(t => {
let nonce = token();
promise_test(t => {
return new Promise((resolve, reject) => {
let key = "redirect-multiple-cross-site";
let key = "redirect-multiple-cross-site" + nonce;
let e = document.createElement('img');
e.src = "https://{{host}}:{{ports[https][0]}}/xhr/resources/redirect.py?location=" +// same-origin

Просмотреть файл

@ -4,11 +4,14 @@
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=/fetch/sec-metadata/resources/helper.js></script>
<script src=/common/utils.js></script>
<body></body>
<script>
promise_test(t => {
let nonce = token();
promise_test(t => {
return new Promise((resolve, reject) => {
let key = "redirect-multiple-same-site";
let key = "redirect-multiple-same-site" + nonce;
let e = document.createElement('img');
e.src = "https://{{host}}:{{ports[https][0]}}/xhr/resources/redirect.py?location=" +// same-origin

Просмотреть файл

@ -4,11 +4,14 @@
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=/fetch/sec-metadata/resources/helper.js></script>
<script src=/common/utils.js></script>
<body></body>
<script>
promise_test(t => {
let nonce = token();
promise_test(t => {
return new Promise((resolve, reject) => {
let key = "redirect-same-origin-same-origin";
let key = "redirect-same-origin-same-origin" + nonce;
let e = document.createElement('img');
e.src = "/xhr/resources/redirect.py?location=https://{{host}}:{{ports[https][0]}}/fetch/sec-metadata/resources/record-header.py?file=" + key;
@ -35,7 +38,7 @@ promise_test(t => {
promise_test(t => {
return new Promise((resolve, reject) => {
let key = "redirect-same-origin-same-site";
let key = "redirect-same-origin-same-site" + nonce;
let e = document.createElement('img');
e.src = "/xhr/resources/redirect.py?location=https://{{hosts[][www]}}:{{ports[https][0]}}/fetch/sec-metadata/resources/record-header.py?file=" + key;
@ -62,7 +65,7 @@ promise_test(t => {
promise_test(t => {
return new Promise((resolve, reject) => {
let key = "redirect-same-origin-cross-site";
let key = "redirect-same-origin-cross-site" + nonce;
let e = document.createElement('img');
e.src = "/xhr/resources/redirect.py?location=https://{{hosts[alt][www]}}:{{ports[https][0]}}/fetch/sec-metadata/resources/record-header.py?file=" + key;

Просмотреть файл

@ -4,11 +4,14 @@
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=/fetch/sec-metadata/resources/helper.js></script>
<script src=/common/utils.js></script>
<body></body>
<script>
promise_test(t => {
let nonce = token();
promise_test(t => {
return new Promise((resolve, reject) => {
let key = "redirect-same-site-same-origin";
let key = "redirect-same-site-same-origin" + nonce;
let e = document.createElement('img');
e.src = "https://{{hosts[][www]}}:{{ports[https][0]}}/xhr/resources/redirect.py?location=https://{{host}}:{{ports[https][0]}}/fetch/sec-metadata/resources/record-header.py?file=" + key;
@ -35,7 +38,7 @@ promise_test(t => {
promise_test(t => {
return new Promise((resolve, reject) => {
let key = "redirect-same-site-same-site";
let key = "redirect-same-site-same-site" + nonce;
let e = document.createElement('img');
e.src = "https://{{hosts[][www]}}:{{ports[https][0]}}/xhr/resources/redirect.py?location=https://{{host}}:{{ports[https][0]}}/fetch/sec-metadata/resources/record-header.py?file=" + key;
@ -62,7 +65,7 @@ promise_test(t => {
promise_test(t => {
return new Promise((resolve, reject) => {
let key = "redirect-same-site-cross-site";
let key = "redirect-same-site-cross-site" + nonce;
let e = document.createElement('img');
e.src = "https://{{hosts[][www]}}:{{ports[https][0]}}/xhr/resources/redirect.py?location=https://{{hosts[alt][www]}}:{{ports[https][0]}}/fetch/sec-metadata/resources/record-header.py?file=" + key;

Просмотреть файл

@ -4,11 +4,15 @@
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=/fetch/sec-metadata/resources/helper.js></script>
<script src=/common/utils.js></script>
<body>
<script>
let nonce = token();
let key = "serviceworker-same-origin" + nonce;
if ('serviceWorker' in navigator) {
window.addEventListener('load', function() {
navigator.serviceWorker.register('https://{{host}}:{{ports[https][0]}}/fetch/sec-metadata/resources/record-header.py?file=serviceworker-same-origin').then(function(registration) {
navigator.serviceWorker.register('https://{{host}}:{{ports[https][0]}}/fetch/sec-metadata/resources/record-header.py?file=' + key).then(function(registration) {
test_same_origin();
// uninstall the serviceworker after the test
@ -34,7 +38,6 @@
function test_same_origin(){
promise_test(t => {
return new Promise((resolve, reject) => {
let key = "serviceworker-same-origin";
let expected = {"dest":"serviceworker", "site":"same-origin", "user":"?F", "mode": "same-origin"};
fetch("/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=" + key)
.then(response => response.text())

Просмотреть файл

@ -4,13 +4,16 @@
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=/fetch/sec-metadata/resources/helper.js></script>
<script src=/common/utils.js></script>
<script>
let nonce = token();
let key = "sharedworker-same-origin" + nonce;
// TESTS //
if (window.Worker) {
// Same-Origin test
var sharedWorker = new SharedWorker('/fetch/sec-metadata/resources/record-header.py?file=sharedworker-same-origin');
var sharedWorker = new SharedWorker('/fetch/sec-metadata/resources/record-header.py?file=' + key);
sharedWorker.port.start();
sharedWorker.onerror = function(){
@ -25,7 +28,6 @@
function test_same_origin(){
promise_test(t => {
return new Promise((resolve, reject) => {
let key = "sharedworker-same-origin";
let expected = {"dest":"sharedworker", "site":"same-origin", "user":"?F", "mode": "same-origin"};
fetch("/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=" + key)

Просмотреть файл

@ -4,11 +4,14 @@
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=/fetch/sec-metadata/resources/helper.js></script>
<script src=/common/utils.js></script>
<body></body>
<script>
let nonce = token();
promise_test(t => {
return new Promise((resolve, reject) => {
let key = "style-same-origin";
let key = "style-same-origin" + nonce;
let e = document.createElement('link');
e.rel = "stylesheet";
@ -28,7 +31,7 @@
promise_test(t => {
return new Promise((resolve, reject) => {
let key = "style-same-site";
let key = "style-same-site" + nonce;
let e = document.createElement('link');
e.rel = "stylesheet";
@ -48,7 +51,7 @@
promise_test(t => {
return new Promise((resolve, reject) => {
let key = "style-cross-site";
let key = "style-cross-site" + nonce;
let e = document.createElement('link');
e.rel = "stylesheet";
@ -68,7 +71,7 @@
promise_test(t => {
return new Promise((resolve, reject) => {
let key = "style-same-origin";
let key = "style-same-origin-cors" + nonce;
let e = document.createElement('link');
e.rel = "stylesheet";

Просмотреть файл

@ -4,9 +4,12 @@
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=/fetch/sec-metadata/resources/helper.js></script>
<script src=/common/utils.js></script>
<body>
</body>
<script>
let nonce = token();
function createVideoElement() {
let el = document.createElement('video');
el.src = "/media/movie_5.mp4";
@ -25,9 +28,10 @@
promise_test(t => {
return new Promise((resolve, reject) => {
let key = "track-same-origin" + nonce;
let video = createVideoElement();
let el = createTrack();
el.src = "https://{{host}}:{{ports[https][0]}}/fetch/sec-metadata/resources/record-header.py?file=track-same-origin";
el.src = "https://{{host}}:{{ports[https][0]}}/fetch/sec-metadata/resources/record-header.py?file=" + key;
el.onload = t.step_func(_ => {
expected = {
"dest": "track",
@ -35,7 +39,7 @@
"user": "?F",
"mode": "cors" // Because the `video` element has `crossorigin`
};
fetch("/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=track-same-origin")
fetch("/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=" + key)
.then(response => response.text())
.then(text => assert_header_equals(text, expected))
.then(_ => resolve());
@ -47,9 +51,10 @@
promise_test(t => {
return new Promise((resolve, reject) => {
let key = "track-same-site" + nonce;
let video = createVideoElement();
let el = createTrack();
el.src = "https://{{hosts[][www]}}:{{ports[https][0]}}/fetch/sec-metadata/resources/record-header.py?file=track-same-site";
el.src = "https://{{hosts[][www]}}:{{ports[https][0]}}/fetch/sec-metadata/resources/record-header.py?file=" + key;
el.onload = t.step_func(_ => {
expected = {
"dest": "track",
@ -57,7 +62,7 @@
"user": "?F",
"mode": "cors" // Because the `video` element has `crossorigin`
};
fetch("/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=track-same-site")
fetch("/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=" + key)
.then(response => response.text())
.then(text => assert_header_equals(text, expected))
.then(resolve)
@ -71,9 +76,10 @@
promise_test(t => {
return new Promise((resolve, reject) => {
let key = "track-cross-site" + nonce;
let video = createVideoElement();
let el = createTrack();
el.src = "https://{{hosts[alt][www]}}:{{ports[https][0]}}/fetch/sec-metadata/resources/record-header.py?file=track-cross-site";
el.src = "https://{{hosts[alt][www]}}:{{ports[https][0]}}/fetch/sec-metadata/resources/record-header.py?file=" + key;
el.onload = t.step_func(_ => {
expected = {
"dest": "track",
@ -81,7 +87,7 @@
"user": "?F",
"mode": "cors" // Because the `video` element has `crossorigin`
};
fetch("/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=track-cross-site")
fetch("/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=" + key)
.then(response => response.text())
.then(text => assert_header_equals(text, expected))
.then(resolve)
@ -94,13 +100,14 @@
promise_test(t => {
return new Promise((resolve, reject) => {
let key = "track-same-origin-cors" + nonce;
let video = createVideoElement();
// Unset `crossorigin` to change the CORS mode:
video.crossOrigin = undefined;
let el = createTrack();
el.src = "https://{{host}}:{{ports[https][0]}}/fetch/sec-metadata/resources/record-header.py?file=track-same-origin";
el.src = "https://{{host}}:{{ports[https][0]}}/fetch/sec-metadata/resources/record-header.py?file=" + key;
el.onload = t.step_func(_ => {
expected = {
"dest":"track",
@ -108,7 +115,7 @@
"user":"?F",
"mode": "same-origin"
};
fetch("/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=track-same-origin")
fetch("/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=" + key)
.then(response => response.text())
.then(text => assert_header_equals(text, expected))
.then(_ => resolve());

Просмотреть файл

@ -4,10 +4,13 @@
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=/fetch/sec-metadata/resources/helper.js></script>
<script src=/common/utils.js></script>
<script>
let nonce = token();
promise_test(t => {
return new Promise((resolve, reject) => {
let key = "worker-same-origin";
let key = "worker-same-origin" + nonce;
let w = new Worker("/fetch/sec-metadata/resources/record-header.py?file=" + key);
w.onmessage = e => {
let expected = {"dest":"worker", "site":"same-origin", "user":"?F", "mode": "same-origin"};