Skip to content

Commit 8092539

Browse files
committed
fix tests
1 parent 9b1b62e commit 8092539

File tree

2 files changed

+32
-10
lines changed

2 files changed

+32
-10
lines changed

tests/PrompterOne.App.UITests/GoLive/GoLiveShellSessionFlowTests.cs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -231,15 +231,18 @@ await page.WaitForFunctionAsync(
231231

232232
var savedRecording = await page.EvaluateAsync<JsonElement>(BrowserTestConstants.Media.GetSavedRecordingStateScript);
233233
var savedAnalysis = await page.EvaluateAsync<JsonElement>(BrowserTestConstants.Media.AnalyzeSavedRecordingScript);
234+
var savedAnalysisJson = savedAnalysis.GetRawText();
234235

235236
Assert.True(savedRecording.GetProperty("pickerCallCount").GetInt32() >= 1);
236237
Assert.True(savedRecording.GetProperty("sizeBytes").GetInt64() > 0);
237-
Assert.True(savedAnalysis.GetProperty("width").GetInt32() > 0);
238-
Assert.True(savedAnalysis.GetProperty("height").GetInt32() > 0);
239-
Assert.True(savedAnalysis.GetProperty("hasAudioTrack").GetBoolean());
240-
Assert.True(savedAnalysis.GetProperty("hasAudibleAudio").GetBoolean());
241-
Assert.True(savedAnalysis.GetProperty("hasVisibleVideo").GetBoolean());
242-
Assert.True(savedAnalysis.GetProperty("nonBlackPixelCount").GetInt32() >= BrowserTestConstants.Media.MinimumVisiblePixelCount);
238+
Assert.True(savedAnalysis.GetProperty("width").GetInt32() > 0, savedAnalysisJson);
239+
Assert.True(savedAnalysis.GetProperty("height").GetInt32() > 0, savedAnalysisJson);
240+
Assert.True(savedAnalysis.GetProperty("hasAudioTrack").GetBoolean(), savedAnalysisJson);
241+
Assert.True(savedAnalysis.GetProperty("hasAudibleAudio").GetBoolean(), savedAnalysisJson);
242+
Assert.True(savedAnalysis.GetProperty("hasVisibleVideo").GetBoolean(), savedAnalysisJson);
243+
Assert.True(
244+
savedAnalysis.GetProperty("nonBlackPixelCount").GetInt32() >= BrowserTestConstants.Media.MinimumVisiblePixelCount,
245+
savedAnalysisJson);
243246
}
244247
finally
245248
{

tests/PrompterOne.App.UITests/Media/recording-file-harness.js

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
(() => {
22
const audioContextCtor = window.AudioContext || window.webkitAudioContext;
3+
const audibleAudioProbeTimeoutMs = 1500;
4+
const audibleAudioPollDelayMs = 100;
35
const harnessGlobalName = "__prompterOneRecordingFileHarness";
46
const audioSampleWaitMs = 100;
57
const blobMimeFallback = "video/webm";
68
const minimumAudibleFrequencyValue = 8;
9+
const minimumAudibleWaveDelta = 2;
710
const minimumVisibleChannelValue = 12;
811
const minimumVisiblePixelCount = 16;
912
const visibleVideoProbeTimeoutMs = 1500;
@@ -71,11 +74,27 @@
7174

7275
try {
7376
await audioContext.resume().catch(() => {});
74-
await new Promise(resolve => window.setTimeout(resolve, audioSampleWaitMs));
77+
const frequencySamples = new Uint8Array(analyser.frequencyBinCount);
78+
const waveformSamples = new Uint8Array(analyser.fftSize);
79+
const deadline = Date.now() + audibleAudioProbeTimeoutMs;
80+
81+
while (Date.now() <= deadline) {
82+
await new Promise(resolve => window.setTimeout(resolve, audioSampleWaitMs));
7583

76-
const samples = new Uint8Array(analyser.frequencyBinCount);
77-
analyser.getByteFrequencyData(samples);
78-
return samples.some(value => value >= minimumAudibleFrequencyValue);
84+
analyser.getByteFrequencyData(frequencySamples);
85+
if (frequencySamples.some(value => value >= minimumAudibleFrequencyValue)) {
86+
return true;
87+
}
88+
89+
analyser.getByteTimeDomainData(waveformSamples);
90+
if (waveformSamples.some(value => Math.abs(value - 128) >= minimumAudibleWaveDelta)) {
91+
return true;
92+
}
93+
94+
await new Promise(resolve => window.setTimeout(resolve, audibleAudioPollDelayMs));
95+
}
96+
97+
return false;
7998
}
8099
finally {
81100
sourceNode.disconnect();

0 commit comments

Comments
 (0)