script.js (1341B)
1 var token = window.parent.token; 2 3 function getExpectedEvents() { 4 return [ 5 { 6 type: "open", 7 }, 8 { 9 type: "message", 10 data: `Hello ${window.parent.user}!`, 11 }, 12 { 13 type: "close", 14 code: 1000, 15 reason: "", 16 wasClean: true, 17 }, 18 ]; 19 } 20 21 function isEqual(expected, actual) { 22 // good enough for our purposes here! 23 return JSON.stringify(expected) === JSON.stringify(actual); 24 } 25 26 function testStep(expected, actual) { 27 if (isEqual(expected, actual)) { 28 document.body.className = "ok"; 29 } else if (isEqual(expected.slice(0, actual.length), actual)) { 30 document.body.className = "test"; 31 } else { 32 document.body.className = "ko"; 33 } 34 } 35 36 function runTest(websocket) { 37 const expected = getExpectedEvents(); 38 var actual = []; 39 websocket.addEventListener("open", ({ type }) => { 40 actual.push({ type }); 41 testStep(expected, actual); 42 }); 43 websocket.addEventListener("message", ({ type, data }) => { 44 actual.push({ type, data }); 45 testStep(expected, actual); 46 }); 47 websocket.addEventListener("close", ({ type, code, reason, wasClean }) => { 48 actual.push({ type, code, reason, wasClean }); 49 testStep(expected, actual); 50 }); 51 }