mirror of
https://github.com/vector-im/element-call.git
synced 2026-10-16 23:45:50 +00:00
Mark the speaker detection check as fixme
Chromium's fake microphone never registers as a speaker at the SFU, and Firefox's steady tone does so in about two runs out of three, with or without the browser's audio processing. The test stays, out of the gate, until the dev SFU gets a lower speaker threshold or the harness a louder fake device. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
6bd6e3f953
commit
cad00aef08
@@ -90,16 +90,13 @@ test("muting the microphone and the camera is seen by the peer", async () => {
|
||||
});
|
||||
});
|
||||
|
||||
test("the peer's microphone is active while it sends sound, and not while muted", async ({
|
||||
browserName,
|
||||
}) => {
|
||||
// The SFU's speaker detection picks up Firefox's fake microphone, a steady
|
||||
// tone. Chromium's fake microphone never registers as a speaker there, so
|
||||
// the test has nothing to measure on it.
|
||||
test.skip(
|
||||
browserName === "chromium",
|
||||
"Chromium's fake microphone is silent to the SFU",
|
||||
);
|
||||
test("the peer's microphone is active while it sends sound, and not while muted", async () => {
|
||||
// Chromium's fake microphone never registers as a speaker at the SFU, and
|
||||
// Firefox's steady tone does so in about two runs out of three, with or
|
||||
// without the browser's audio processing. The pipeline is proven when it
|
||||
// passes; it needs a louder fake device or a lower SFU threshold to be
|
||||
// relied on.
|
||||
test.fixme(true, "the fake microphones do not reliably register at the SFU");
|
||||
const [page] = pages;
|
||||
const audio = remoteTile(1, 0).locator("audio");
|
||||
// The SFU only announces a change of speakers, so a tone that has been
|
||||
|
||||
@@ -272,12 +272,13 @@ The fakes come from `sdk/src/utils/test.ts` (`mockRemoteParticipant`) and the
|
||||
### End-to-end
|
||||
|
||||
`playwright/sdk/media.spec.ts` gains one test: the peer's `audio` element reaches
|
||||
`data-active="true"`, then `"false"` after the Microphone button is clicked. The
|
||||
fake capture device Playwright gives Chromium emits a tone, which the SFU's speaker
|
||||
detection picks up, so the signal is real end to end. Firefox's fake device also
|
||||
produces sound; if its level stays under the SFU threshold the test is skipped
|
||||
there with a comment saying why, not loosened. The existing five tests run as they
|
||||
are.
|
||||
`data-active="true"` after a mute and unmute, and `"false"` while muted. It is
|
||||
marked `fixme`: Chromium's fake microphone never registers as a speaker at the
|
||||
SFU, and Firefox's steady tone does so in about two runs out of three, with or
|
||||
without the browser's audio processing. It passed four times in six, which proves
|
||||
the pipeline, and it stays out of the gate until the dev SFU gets a lower
|
||||
speaker threshold or the harness a louder fake device. The existing five tests
|
||||
run as they are.
|
||||
|
||||
## Order of work
|
||||
|
||||
|
||||
@@ -665,8 +665,9 @@ members, an `<audio>` from the `"microphone"` track, both picked out of
|
||||
|
||||
Every media element carries the track's state as `data-*` attributes (`muted`,
|
||||
`encrypted`, `active`, `frameWidth`, `frames`), which is what the tests read to
|
||||
check mute propagation, encryption, speaker detection, adaptive resolution and
|
||||
paused subscriptions. That is more
|
||||
check mute propagation, encryption, adaptive resolution and paused subscriptions
|
||||
(the speaker detection check is a `fixme`: the fake microphones do not reliably
|
||||
register at the SFU). That is more
|
||||
than the smallest consumer needs, and the price of testing the SDK through its
|
||||
public API only.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user