manual.js (949B)
1 let manualTestPort = null; 2 3 navigator.serial.addEventListener('disconnect', (e) => { 4 if (e.target === manualTestPort) { 5 manualTestPort = null; 6 } 7 }) 8 9 async function getPortForManualTest() { 10 if (manualTestPort) { 11 return manualTestPort; 12 } 13 14 const button = document.createElement('button'); 15 button.textContent = 'Click to select a device'; 16 button.style.display = 'block'; 17 button.style.fontSize = '20px'; 18 button.style.padding = '10px'; 19 20 await new Promise((resolve) => { 21 button.onclick = () => { 22 document.body.removeChild(button); 23 resolve(); 24 }; 25 document.body.appendChild(button); 26 }); 27 28 manualTestPort = await navigator.serial.requestPort({filters: []}); 29 assert_true(manualTestPort instanceof SerialPort); 30 31 return manualTestPort; 32 } 33 34 function manual_serial_test(func, name, properties) { 35 promise_test(async (test) => { 36 await func(test, await getPortForManualTest()); 37 }, name, properties); 38 }