Bridge Application
Devices
What the tested application runs on is decided by the device-uri of a run. Its scheme selects the
device implementation; its query parameters configure it.
| Scheme | Device | Use |
|---|---|---|
|
BrowserStack (Appium / Selenium) |
The real mobile app on a device in the BrowserStack device cloud, or the web client in a BrowserStack desktop browser. |
|
Virtual device |
The tested agent is another engine session — no user interface at all. The fastest option, and the one to use when testing dialogue rather than the app. |
|
Link device |
A real client (browser or mobile) that has opened a Promethist link page and connects over its
|
|
External device |
A physical device sitting in front of a webcam and microphone, with no remote control at all. |
BrowserStack Device (bs://)
The URI host is the identifier of the application binary uploaded to BrowserStack; the parameters configure the session.
| Parameter | Default | Meaning |
|---|---|---|
|
|
|
|
|
Device model to allocate (mobile only). |
|
|
OS version of the device (mobile only). |
|
|
Application package of the app under test. |
|
|
Desktop operating system and version (desktop only). |
|
|
Browser version (desktop only). |
|
|
Enables BrowserStack interactive debugging, so a human can take over the session in the BrowserStack UI while it runs. |
|
— |
Window size; when both are given the session window is resized. |
Under the hood the bridge connects to BrowserStack’s Appium hub and drives the session through WebDriver:
-
Android uses the
UiAutomator2automation, iOS usesXCUITest; a plain browser test uses the matching Selenium driver instead. -
The app is installed from the BrowserStack-hosted binary, with alerts auto-accepted and permissions auto-granted, so a run does not stall on a system dialog.
-
Screenshots are taken through WebDriver and are what the tester sees each turn.
-
Taps and drags are W3C pointer actions — touch on mobile, mouse on desktop; scrolling uses Selenium’s scroll action.
-
Opening a URL is a deep link on Android, an app launch with the URL as argument on iOS, and a plain navigation in a browser.
-
At the end of the run the verdict is reported back to BrowserStack, so the session appears there as passed or failed with its reason.
Because provisioning a real device takes time, the start of a bs:// run is noticeably slower than
the other device types.
Audio and the Relay
A BrowserStack device cannot receive injected audio directly. For those runs the bridge routes the
tester’s audio through the relay service: the page under test connects to
the relay, the bridge connects to the relay as its peer, and messages are forwarded between the
two by relay ID. This is why the mobile and web-client configurations carry a relayUrl.
Outgoing realtime audio is paced so the application receives it at a natural speed rather than as
one burst: text-only utterances are timed at roughly 50 ms per character, raw audio chunks are
spread according to audioSpeed, and short silence frames keep the stream alive between
utterances.
Virtual Device (http://, https://)
The URI is the engine to connect to, and the key query parameter is the pipeline key of the agent
under test — for example https://eu.promethist.ai?key=agent:acme-support.
The bridge opens a second engine session for that agent and relays between the two sessions, so
two agents converse with each other. It handles #ready, #intro, agent handover and image and
multimodal elements. Because there is no device, screenshots are unavailable and the tester works
from the conversation alone.
This is the only device type where the bridge owns the tested side’s connection too, which is why
testedAgentTestMode can be set for it.
Link Device (ws://, wss://)
The URI points at a companion client page; the bridge connects to its /link WebSocket and
exchanges realtime audio and UI state with it. Use it to test a real client that can open a link,
without the device cloud.
width and height set the assumed view size (512×1024 by default).
External Device (external://)
For a physical device that cannot be automated at all. The bridge captures the microphone,
detects speech by loudness, and triggers a device turn when the device falls silent. Calling
open prints a QR code to the terminal so a person can scan it on the device.
| Parameter | Default | Meaning |
|---|---|---|
|
none |
|
|
none |
Touch injection is not implemented, so gestures from the tester are ignored. |
|
|
Milliseconds of silence that end the device’s turn. |