| // META: global=window,worker |
| // META: title=Tests Stale While Revalidate is executed for fetch API |
| // META: script=/common/utils.js |
| |
| function wait25ms(test) { |
| return new Promise(resolve => { |
| test.step_timeout(() => { |
| resolve(); |
| }, 25); |
| }); |
| } |
| |
| promise_test(async (test) => { |
| var request_token = token(); |
| |
| const response = await fetch(`resources/stale-script.py?token=` + request_token); |
| // Wait until resource is completely fetched to allow caching before next fetch. |
| const body = await response.text(); |
| const response2 = await fetch(`resources/stale-script.py?token=` + request_token); |
| |
| assert_equals(response.headers.get('Unique-Id'), response2.headers.get('Unique-Id')); |
| const body2 = await response2.text(); |
| assert_equals(body, body2); |
| |
| while(true) { |
| const revalidation_check = await fetch(`resources/stale-script.py?query&token=` + request_token); |
| if (revalidation_check.headers.get('Count') == '2') { |
| break; |
| } |
| await wait25ms(test); |
| } |
| }, 'Second fetch returns same response'); |