fix tests

This commit is contained in:
KingKDot
2026-07-30 15:12:16 -05:00
parent 7369aa7014
commit 2801303a47
2 changed files with 15 additions and 4 deletions
@@ -20,9 +20,12 @@ test("Canvas presents only the latest decoded video frame per browser refresh",
bufferedAmount = 0; bufferedAmount = 0;
binaryType: BinaryType = "blob"; binaryType: BinaryType = "blob";
constructor(_url: string | URL) { constructor(url: string | URL) {
super(); super();
Object.defineProperty(window, "__rdSocket", { value: this, configurable: true }); const isRemoteDesktopControl = new URL(String(url), window.location.href).pathname.endsWith("/rd/ws");
if (isRemoteDesktopControl) {
Object.defineProperty(window, "__rdSocket", { value: this, configurable: true });
}
queueMicrotask(() => this.dispatchEvent(new Event("open"))); queueMicrotask(() => this.dispatchEvent(new Event("open")));
} }
@@ -19,14 +19,19 @@ test("WebRTC input stays inactive until start and then forwards mouse and keyboa
readyState = FakeWebSocket.OPEN; readyState = FakeWebSocket.OPEN;
bufferedAmount = 0; bufferedAmount = 0;
binaryType: BinaryType = "blob"; binaryType: BinaryType = "blob";
private readonly isRemoteDesktopControl: boolean;
constructor(_url: string | URL) { constructor(url: string | URL) {
super(); super();
Object.defineProperty(window, "__rdSocket", { value: this, configurable: true }); this.isRemoteDesktopControl = new URL(String(url), window.location.href).pathname.endsWith("/rd/ws");
if (this.isRemoteDesktopControl) {
Object.defineProperty(window, "__rdSocket", { value: this, configurable: true });
}
queueMicrotask(() => this.dispatchEvent(new Event("open"))); queueMicrotask(() => this.dispatchEvent(new Event("open")));
} }
send(data: ArrayBuffer | ArrayBufferView | Blob | string) { send(data: ArrayBuffer | ArrayBufferView | Blob | string) {
if (!this.isRemoteDesktopControl) return;
if (data instanceof ArrayBuffer) sent.push(data); if (data instanceof ArrayBuffer) sent.push(data);
else if (ArrayBuffer.isView(data)) { else if (ArrayBuffer.isView(data)) {
sent.push(data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength) as ArrayBuffer); sent.push(data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength) as ArrayBuffer);
@@ -67,6 +72,9 @@ test("WebRTC input stays inactive until start and then forwards mouse and keyboa
await expect(page.locator("#requestKeyframeBtn")).toBeDisabled(); await expect(page.locator("#requestKeyframeBtn")).toBeDisabled();
await page.evaluate(() => { await page.evaluate(() => {
// Other page features may open sockets after the RD control connection.
// They must not replace the socket used for injected control messages.
new WebSocket("/api/clients/webrtc-input-test/desktop-audio/ws");
const sent = (window as typeof window & { __rdSent: ArrayBuffer[] }).__rdSent; const sent = (window as typeof window & { __rdSent: ArrayBuffer[] }).__rdSent;
sent.length = 0; sent.length = 0;
const mouseCtrl = document.querySelector<HTMLInputElement>("#mouseCtrl")!; const mouseCtrl = document.querySelector<HTMLInputElement>("#mouseCtrl")!;