Skip to content

Stabilize remote agent input E2E tests#1477

Merged
adamshiervani merged 1 commit into
devfrom
fix/e2e-usb-input-polling
May 25, 2026
Merged

Stabilize remote agent input E2E tests#1477
adamshiervani merged 1 commit into
devfrom
fix/e2e-usb-input-polling

Conversation

@adamshiervani
Copy link
Copy Markdown
Contributor

@adamshiervani adamshiervani commented May 25, 2026

Stabilizes remote-agent E2E coverage by polling for host-visible USB reconfiguration instead of relying on the browser-side RPC timeout. It also primes absolute mouse movement before assertions so the first checked move cannot be swallowed as a no-op.


Note

Low Risk
Changes are limited to Playwright E2E helpers and assertions; no production USB, RPC, or UI runtime code is modified.

Overview
Remote-agent E2E tests in ra-all.spec.ts are hardened against slow USB gadget rebinds and flaky mouse assertions.

New helpers setUsbDevicesAndWait and setUsbConfigAndWait issue setUsbDevices / setUsbConfig over JSON-RPC but treat a browser-side RPC timeout as non-fatal, then poll the remote agent until the host shows the expected input device types or USB VID/PID. That pattern replaces bare callJsonRpc + shorter waits in the relative-only wheel cleanup and the USB presence/switching/descriptor test, including a proper await when restoring the default USB descriptor (instead of a fire-and-forget call).

The absolute mouse movement test primes corner/center moves and waits for at least one visible move before clearing events, so a pointer already at the target cannot make the first “center” assertion a no-op.

Reviewed by Cursor Bugbot for commit 32f16f2. Bugbot is set up for automated code reviews on this repo. Configure here.

@adamshiervani adamshiervani marked this pull request as ready for review May 25, 2026 09:50
@adamshiervani adamshiervani merged commit c0fcfcb into dev May 25, 2026
5 checks passed
@adamshiervani adamshiervani deleted the fix/e2e-usb-input-polling branch May 25, 2026 09:51
Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 32f16f2. Configure here.

callJsonRpc(sharedPage, "setUsbConfig", { usbConfig: defaultConfig }).catch(() => {
/* ignore */
});
await setUsbConfigAndWait(defaultConfig, ID_DEFAULT);
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

USB test timeout budget overrun

Medium Severity

The USB presence test chains multiple setUsbDevicesAndWait and setUsbConfigAndWait calls. Each of these operations can take up to ~55 seconds, but the overall Playwright test timeout is still the default 60 seconds. This can cause the test to time out and fail if several re-enumeration steps are slow, even if they would eventually succeed.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 32f16f2. Configure here.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant