Skip to content

speech probe: getVoices() is empty until voiceschanged fires, is that waited on? #78

Description

@nancy-b897

packages/collect/src/probes/speech.ts is one of the 19 probes. In Chrome, speechSynthesis.getVoices() often returns [] on the first call. The list only fills in after the voiceschanged event, and how long that takes depends on the OS voice backend, sometimes a few hundred ms.

So does the probe wait for voiceschanged (with a timeout), or does it read the list once and move on? If it reads once, a normal desktop Chrome could randomly report zero voices, and whichever check uses the speech data would flag a real browser as a liar on some runs but not others. That's the kind of flaky result that makes a --min-score gate unusable.

The headless side of this is related but separate. On a Linux CI box with no speech-dispatcher, zero voices is the true answer. Is "no voices" treated as unknown/skipped, or does it count as a mismatch against a Windows/macOS UA? If it's the second, a Linux runner pretending to be nothing loses points for a missing system package, not for lying.

It'd help to know which check(s) actually use the speech data, and what counts as an empty result.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions