| export function documentHasCookie(cookieAndValue) { |
| return document.cookie.split(';').some(item => item.includes(cookieAndValue)); |
| } |
| |
| export async function waitForCookie(cookieAndValue, expectCookie) { |
| const startTime = Date.now(); |
| const hasCookie = await new Promise(resolve => { |
| const interval = setInterval(() => { |
| if (documentHasCookie(cookieAndValue)) { |
| clearInterval(interval); |
| resolve(true); |
| } |
| if (!expectCookie && Date.now() - startTime >= 1000) { |
| clearInterval(interval); |
| resolve(false); |
| } |
| }, 100); |
| }); |
| assert_equals(hasCookie, expectCookie); |
| } |
| |
| export function expireCookie(cookieAndAttributes) { |
| document.cookie = |
| `${cookieAndAttributes}; expires=Thu, 01 Jan 1970 00:00:00 UTC;`; |
| } |
| |
| export function addCookieAndSessionCleanup(test) { |
| // Clean up any set cookies once the test completes. |
| test.add_cleanup(async () => { |
| const response = await fetch('end_session_via_clear_site_data.py'); |
| assert_equals(response.status, 200); |
| }); |
| } |
| |
| export async function postJson(url, obj) { |
| return await fetch(url, { |
| method: 'POST', |
| headers: {'Content-Type': 'application/json'}, |
| body: JSON.stringify(obj), |
| }); |
| } |
| |
| export async function configureServer(obj) { |
| const response = await fetch('configure_server.py', { |
| method: 'POST', |
| headers: {'Content-Type': 'application/json'}, |
| body: JSON.stringify(obj), |
| }); |
| assert_equals(response.status, 200); |
| } |
| |
| export async function setupShardedServerState(testId) { |
| const obj = {}; |
| if (testId !== undefined) { |
| obj.testId = testId; |
| } |
| const response = await fetch('setup_sharded_server_state.py', { |
| method: 'POST', |
| headers: {'Content-Type': 'application/json'}, |
| body: JSON.stringify(obj), |
| }); |
| assert_equals(response.status, 200); |
| const testIdCookie = |
| document.cookie.split(';').filter(item => item.includes('test_id'))[0]; |
| return testIdCookie.split('=')[1]; |
| } |
| |
| export async function pullServerState() { |
| const response = await fetch('pull_server_state.py'); |
| assert_equals(response.status, 200); |
| return await response.json(); |
| } |