session-history-test-util.js (1249B)
1 // Note: Following utility functions are expected to be used from 2 // session-history-* test files. 3 4 async function waitChannelMessage(testName, uid) { 5 const result = new Promise((resolve) => { 6 const testChannel = new PrerenderChannel(testName, uid); 7 testChannel.addEventListener( 8 "message", 9 (e) => { 10 testChannel.close(); 11 resolve(e.data); 12 }, 13 { once: true }, 14 ); 15 }); 16 return result; 17 } 18 19 async function runTestInPrerender(testName, uid) { 20 const result = waitChannelMessage(`test-channel-${testName}`, uid); 21 22 // Run test in a new window for test isolation. 23 const prerender = "session-history-prerender.https.html"; 24 window.open( 25 `./resources/session-history-initiator.https.html?prerender=${prerender}&testName=${testName}&uid=${uid}`, 26 "_blank", 27 "noopener", 28 ); 29 return result; 30 } 31 32 // This will activate the prerendered context created in runTestInPrerender 33 // and then run the post-activation variation of `testName`. 34 async function runTestInActivatedPage(testName, uid) { 35 const testChannel = new PrerenderChannel(`test-channel-${testName}`, uid); 36 testChannel.postMessage("activate"); 37 testChannel.close(); 38 39 return waitChannelMessage(`test-channel-${testName}`, uid); 40 }