Skip to content

Commit 31c78f4

Browse files
authored
chore: enable electron-main webrtc tests (#1918)
Runs WebRTC tests on Electron as well as node/browsers.
1 parent 08dabd3 commit 31c78f4

File tree

2 files changed

+50
-34
lines changed

2 files changed

+50
-34
lines changed

packages/transport-webrtc/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
"test:node": "aegir test -t node --cov",
4444
"test:chrome": "aegir test -t browser --cov",
4545
"test:firefox": "aegir test -t browser -- --browser firefox",
46+
"test:electron-main": "aegir test -t electron-main",
4647
"lint": "aegir lint",
4748
"lint:fix": "aegir lint --fix",
4849
"clean": "aegir clean",

packages/transport-webrtc/test/peer.spec.ts

Lines changed: 49 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -20,24 +20,28 @@ import type { ConnectionManager, TransportManager } from '@libp2p/interface-inte
2020

2121
const browser = detect()
2222

23+
interface Initiator {
24+
multiaddr: Multiaddr
25+
peerConnection: RTCPeerConnection
26+
connectionManager: StubbedInstance<ConnectionManager>
27+
transportManager: StubbedInstance<TransportManager>
28+
connection: StubbedInstance<Connection>
29+
stream: Stream
30+
log: Logger
31+
}
32+
33+
interface Recipient {
34+
peerConnection: RTCPeerConnection
35+
connection: StubbedInstance<Connection>
36+
abortController: AbortController
37+
signal: AbortSignal
38+
stream: Stream
39+
log: Logger
40+
}
41+
2342
interface PrivateToPrivateComponents {
24-
initiator: {
25-
multiaddr: Multiaddr
26-
peerConnection: RTCPeerConnection
27-
connectionManager: StubbedInstance<ConnectionManager>
28-
transportManager: StubbedInstance<TransportManager>
29-
connection: StubbedInstance<Connection>
30-
stream: Stream
31-
log: Logger
32-
}
33-
recipient: {
34-
peerConnection: RTCPeerConnection
35-
connection: StubbedInstance<Connection>
36-
abortController: AbortController
37-
signal: AbortSignal
38-
stream: Stream
39-
log: Logger
40-
}
43+
initiator: Initiator
44+
recipient: Recipient
4145
}
4246

4347
async function getComponents (): Promise<PrivateToPrivateComponents> {
@@ -85,9 +89,16 @@ async function getComponents (): Promise<PrivateToPrivateComponents> {
8589

8690
describe('webrtc basic', () => {
8791
const isFirefox = ((browser != null) && browser.name === 'firefox')
92+
let initiator: Initiator
93+
let recipient: Recipient
94+
95+
afterEach(() => {
96+
initiator?.peerConnection?.close()
97+
recipient?.peerConnection?.close()
98+
})
8899

89100
it('should connect', async () => {
90-
const { initiator, recipient } = await getComponents()
101+
({ initiator, recipient } = await getComponents())
91102

92103
// no existing connection
93104
initiator.connectionManager.getConnections.returns([])
@@ -114,14 +125,11 @@ describe('webrtc basic', () => {
114125
expect(initiator.peerConnection.connectionState).eq('connected')
115126
expect(recipient.peerConnection.connectionState).eq('connected')
116127
})
117-
118-
initiator.peerConnection.close()
119-
recipient.peerConnection.close()
120128
})
121129

122130
it('should survive aborting during connection', async () => {
131+
({ initiator, recipient } = await getComponents())
123132
const abortController = new AbortController()
124-
const { initiator, recipient } = await getComponents()
125133

126134
// no existing connection
127135
initiator.connectionManager.getConnections.returns([])
@@ -150,15 +158,20 @@ describe('webrtc basic', () => {
150158
handleIncomingStream(recipient)
151159
]))
152160
.to.eventually.be.rejected.with.property('message', 'Oh noes!')
153-
154-
initiator.peerConnection.close()
155-
recipient.peerConnection.close()
156161
})
157162
})
158163

159164
describe('webrtc receiver', () => {
165+
let initiator: Initiator
166+
let recipient: Recipient
167+
168+
afterEach(() => {
169+
initiator?.peerConnection?.close()
170+
recipient?.peerConnection?.close()
171+
})
172+
160173
it('should fail receiving on invalid sdp offer', async () => {
161-
const { initiator, recipient } = await getComponents()
174+
({ initiator, recipient } = await getComponents())
162175
const receiverPeerConnectionPromise = handleIncomingStream(recipient)
163176
const stream = pbStream(initiator.stream).pb(Message)
164177

@@ -171,8 +184,16 @@ describe('webrtc receiver', () => {
171184
})
172185

173186
describe('webrtc dialer', () => {
187+
let initiator: Initiator
188+
let recipient: Recipient
189+
190+
afterEach(() => {
191+
initiator?.peerConnection?.close()
192+
recipient?.peerConnection?.close()
193+
})
194+
174195
it('should fail receiving on invalid sdp answer', async () => {
175-
const { initiator, recipient } = await getComponents()
196+
({ initiator, recipient } = await getComponents())
176197

177198
// existing connection already exists
178199
initiator.connectionManager.getConnections.returns([
@@ -190,13 +211,10 @@ describe('webrtc dialer', () => {
190211

191212
await stream.write({ type: Message.Type.SDP_ANSWER, data: 'bad' })
192213
await expect(initiatorPeerConnectionPromise).to.be.rejectedWith(/Failed to set remoteDescription/)
193-
194-
initiator.peerConnection.close()
195-
recipient.peerConnection.close()
196214
})
197215

198216
it('should fail on receiving a candidate before an answer', async () => {
199-
const { initiator, recipient } = await getComponents()
217+
({ initiator, recipient } = await getComponents())
200218

201219
// existing connection already exists
202220
initiator.connectionManager.getConnections.returns([
@@ -226,9 +244,6 @@ describe('webrtc dialer', () => {
226244
await expect(initiatorPeerConnectionPromise).to.be.rejectedWith(/Remote should send an SDP answer/)
227245

228246
pc.close()
229-
230-
initiator.peerConnection.close()
231-
recipient.peerConnection.close()
232247
})
233248
})
234249

0 commit comments

Comments
 (0)