async function createConnections(test, setupLocalConnection, setupRemoteConnection, doNotCloseAutmoatically) { const localConnection = new RTCPeerConnection(); const remoteConnection = new RTCPeerConnection(); remoteConnection.onicecandidate = (event) => { localConnection.addIceCandidate(event.candidate); }; localConnection.onicecandidate = (event) => { remoteConnection.addIceCandidate(event.candidate); }; await setupLocalConnection(localConnection); await setupRemoteConnection(remoteConnection); const offer = await localConnection.createOffer(); await localConnection.setLocalDescription(offer); await remoteConnection.setRemoteDescription(offer); const answer = await remoteConnection.createAnswer(); await remoteConnection.setLocalDescription(answer); await localConnection.setRemoteDescription(answer); if (!doNotCloseAutmoatically) { test.add_cleanup(() => { localConnection.close(); remoteConnection.close(); }); } return [localConnection, remoteConnection]; } function waitFor(test, duration) { return new Promise((resolve) => test.step_timeout(resolve, duration)); }