Skip to content

Commit 3a7fcba

Browse files
test: retry test for delayed messages
1 parent 7a58173 commit 3a7fcba

File tree

3 files changed

+81
-57
lines changed

3 files changed

+81
-57
lines changed

test/expectation/safari/current/audio-worklet-node.js

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -19,33 +19,41 @@ describe('AudioWorklet', () => {
1919
});
2020

2121
describe('with a processor which transfers the arguments', () => {
22-
let audioWorkletNode;
23-
24-
beforeEach(async () => {
25-
await offlineAudioContext.audioWorklet.addModule('test/fixtures/transferring-processor.js');
22+
// bug #197
2623

27-
audioWorkletNode = new AudioWorkletNode(offlineAudioContext, 'transferring-processor');
28-
});
24+
it('should not deliver the messages before the promise returned by startRendering() resolves', async () => {
25+
while (true) {
26+
await offlineAudioContext.audioWorklet.addModule('test/fixtures/transferring-processor.js');
2927

30-
// bug #197
28+
const audioWorkletNode = new AudioWorkletNode(offlineAudioContext, 'transferring-processor');
29+
const onmessage = spy();
3130

32-
it('should not deliver the messages before the promise returned by startRendering() resolves', () => {
33-
const { promise, resolve } = Promise.withResolvers();
34-
const onmessage = spy();
31+
audioWorkletNode.port.onmessage = onmessage;
3532

36-
audioWorkletNode.port.onmessage = onmessage;
33+
try {
34+
await offlineAudioContext.startRendering().then(() => {
35+
expect(onmessage).to.have.not.been.called;
3736

38-
offlineAudioContext.startRendering().then(() => {
39-
expect(onmessage).to.have.not.been.called;
37+
return new Promise((resolve, reject) => {
38+
setTimeout(() => {
39+
try {
40+
expect(onmessage).to.have.been.calledTwice;
4041

41-
setTimeout(() => {
42-
expect(onmessage).to.have.been.calledTwice;
42+
resolve();
43+
} catch (err) {
44+
reject(err);
45+
}
46+
});
47+
});
48+
});
49+
} catch (err) {
50+
offlineAudioContext = new OfflineAudioContext(1, offlineAudioContext.length, offlineAudioContext.sampleRate);
4351

44-
resolve();
45-
});
46-
});
52+
continue;
53+
}
4754

48-
return promise;
55+
break;
56+
}
4957
});
5058
});
5159
});

test/expectation/safari/penultimate/audio-worklet-node.js

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -19,33 +19,41 @@ describe('AudioWorklet', () => {
1919
});
2020

2121
describe('with a processor which transfers the arguments', () => {
22-
let audioWorkletNode;
23-
24-
beforeEach(async () => {
25-
await offlineAudioContext.audioWorklet.addModule('test/fixtures/transferring-processor.js');
22+
// bug #197
2623

27-
audioWorkletNode = new AudioWorkletNode(offlineAudioContext, 'transferring-processor');
28-
});
24+
it('should not deliver the messages before the promise returned by startRendering() resolves', async () => {
25+
while (true) {
26+
await offlineAudioContext.audioWorklet.addModule('test/fixtures/transferring-processor.js');
2927

30-
// bug #197
28+
const audioWorkletNode = new AudioWorkletNode(offlineAudioContext, 'transferring-processor');
29+
const onmessage = spy();
3130

32-
it('should not deliver the messages before the promise returned by startRendering() resolves', () => {
33-
const { promise, resolve } = Promise.withResolvers();
34-
const onmessage = spy();
31+
audioWorkletNode.port.onmessage = onmessage;
3532

36-
audioWorkletNode.port.onmessage = onmessage;
33+
try {
34+
await offlineAudioContext.startRendering().then(() => {
35+
expect(onmessage).to.have.not.been.called;
3736

38-
offlineAudioContext.startRendering().then(() => {
39-
expect(onmessage).to.have.not.been.called;
37+
return new Promise((resolve, reject) => {
38+
setTimeout(() => {
39+
try {
40+
expect(onmessage).to.have.been.calledTwice;
4041

41-
setTimeout(() => {
42-
expect(onmessage).to.have.been.calledTwice;
42+
resolve();
43+
} catch (err) {
44+
reject(err);
45+
}
46+
});
47+
});
48+
});
49+
} catch (err) {
50+
offlineAudioContext = new OfflineAudioContext(1, offlineAudioContext.length, offlineAudioContext.sampleRate);
4351

44-
resolve();
45-
});
46-
});
52+
continue;
53+
}
4754

48-
return promise;
55+
break;
56+
}
4957
});
5058
});
5159
});

test/expectation/safari/previous/audio-worklet-node.js

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -19,33 +19,41 @@ describe('AudioWorklet', () => {
1919
});
2020

2121
describe('with a processor which transfers the arguments', () => {
22-
let audioWorkletNode;
23-
24-
beforeEach(async () => {
25-
await offlineAudioContext.audioWorklet.addModule('test/fixtures/transferring-processor.js');
22+
// bug #197
2623

27-
audioWorkletNode = new AudioWorkletNode(offlineAudioContext, 'transferring-processor');
28-
});
24+
it('should not deliver the messages before the promise returned by startRendering() resolves', async () => {
25+
while (true) {
26+
await offlineAudioContext.audioWorklet.addModule('test/fixtures/transferring-processor.js');
2927

30-
// bug #197
28+
const audioWorkletNode = new AudioWorkletNode(offlineAudioContext, 'transferring-processor');
29+
const onmessage = spy();
3130

32-
it('should not deliver the messages before the promise returned by startRendering() resolves', () => {
33-
const { promise, resolve } = Promise.withResolvers();
34-
const onmessage = spy();
31+
audioWorkletNode.port.onmessage = onmessage;
3532

36-
audioWorkletNode.port.onmessage = onmessage;
33+
try {
34+
await offlineAudioContext.startRendering().then(() => {
35+
expect(onmessage).to.have.not.been.called;
3736

38-
offlineAudioContext.startRendering().then(() => {
39-
expect(onmessage).to.have.not.been.called;
37+
return new Promise((resolve, reject) => {
38+
setTimeout(() => {
39+
try {
40+
expect(onmessage).to.have.been.calledTwice;
4041

41-
setTimeout(() => {
42-
expect(onmessage).to.have.been.calledTwice;
42+
resolve();
43+
} catch (err) {
44+
reject(err);
45+
}
46+
});
47+
});
48+
});
49+
} catch (err) {
50+
offlineAudioContext = new OfflineAudioContext(1, offlineAudioContext.length, offlineAudioContext.sampleRate);
4351

44-
resolve();
45-
});
46-
});
52+
continue;
53+
}
4754

48-
return promise;
55+
break;
56+
}
4957
});
5058
});
5159
});

0 commit comments

Comments
 (0)