LeastAuthority/winden

Integration e2e test step intermittently fails a few firefox tests

Opened this issue · 1 comments

While working on #171, I had to rebuild twice the integration workflow for the 2 last PRs (#172 and #173) for the e2e step to succeed!
And in the 4 failed build logs, I've captured the same error message matching each failed test:

ERROR webdriver: Request failed with status 400 due to element not interactable: Element <input type="file"> could not be scrolled into view

In those 4 failed build, the failed test were as followed:

  1. More comments in Dockerfile #440 - Attempt #1:

    • [firefox 112.0 linux #1-3] 1) the code has an existing nameplate number but invalid code will display a bad code error
  2. More comments in Dockerfile #440 - Attempt #2:

    • [firefox 112.0 linux #1-4] 1) when uploading a file with the size of 5MB will transfer successfully
  3. Parametrize uid and gid for non 1000 runner's #447 - Attempt #1:

    • [firefox 112.0 linux #1-4] 1) on uploading a single file check generated code format
  4. Parametrize uid and gid for non 1000 runner's #447 - Attempt #2:

    • [firefox 112.0 linux #1-3] 1) the code has an existing nameplate number but invalid code will display a bad code error
    • [firefox 112.0 linux #1-4] 1) when uploading a file <1MB will transfer successfully

I've tried to update the selenium components from 4.9.1-20230508 to 4.17.0-20240123, but than the 2e2 test on Firefox constantly fail whenever it tries to call browser.uploadFile() from here:

export async function uploadFiles(...files: string[]) {
await browser.executeScript(
`const input = document.querySelector("input[type=file]");
input.style.visibility = 'visible';
input.style.height = '1px';
input.style.width = '1px';
input.style.opacity = 1;
input.style.display = 'block';`.replace("\n", ""),
[]
);
const remoteFilePaths = await Promise.all(
files.map((f) => browser.uploadFile(f))
);
await $("input[type=file]").setValue(remoteFilePaths.join("\n"));
}

Again, this problem only arises on Firefox (same code work flawlessly on Chrome and Edge):

[firefox 117.0 linux #0-0] 1) Check Terms if Terms & Conditions is present in Receiver block and opens   
[firefox 117.0 linux #0-0] HTTP method not allowed                                                       
[firefox 117.0 linux #0-0] Error: HTTP method not allowed                                                
[firefox 117.0 linux #0-0]     at processTicksAndRejections (node:internal/process/task_queues:96:5) 

This new issue seems to have been introduced between version 4.11.0-20230801 and 4.12.1-20230904 of the selenium/firefox image which bump this browser from 116.0 to 117.0.