Skip to content

Commit

Permalink
fix(test/browser): set test-concurrency=1 (vitest-dev#4686)
Browse files Browse the repository at this point in the history
Adding the fix-4686.test.mjs introduced a second `vitest` process into
the test/browser/specs suite. This attempts to resolve subsequent
flakiness in the test-browser CI job by ensuring one test file
completely finishes before the next.

- https://nodejs.org/docs/latest-v20.x/api/cli.html#--test-concurrency

---

This particular build showed ETXTBSY errors thrown when launching the
chrome via WebdriverIO:

- https://github.com/vitest-dev/vitest/actions/runs/7128065730/job/19409296285?pr=4692#step:10:1

```text
    ⎯⎯⎯⎯⎯⎯ Unhandled Error ⎯⎯⎯⎯⎯⎯⎯
    Error: spawn ETXTBSY
     ❯ ChildProcess.spawn node:internal/child_process:421:11
     ❯ Object.spawn node:child_process:761:9
     ❯ startWebDriver ../../node_modules/.pnpm/@wdio+utils@8.22.0/node_modules/@wdio/utils/build/node/startWebDriver.js:57:28
     ❯ process.processTicksAndRejections node:internal/process/task_queues:95:5
     ❯ WebDriver.newSession ../../node_modules/.pnpm/webdriver@8.22.1/node_modules/webdriver/build/index.js:18:31
     ❯ remote ../../node_modules/.pnpm/webdriverio@8.22.1_typescript@5.2.2/node_modules/webdriverio/build/index.js:45:22
     ❯ WebdriverBrowserProvider.openBrowser ../../packages/browser/dist/providers.js:81:26
     [...snip...]
```

ETXTBSY is a relatively obscure error that isn't seen much anymore:

- lwn.net: The shrinking role of ETXTBSY
  https://lwn.net/Articles/866493/

The results I found while searching all seemed to point to Chromium
being a potential source of this issue, such as this excerpt from (emphasis
mine):

- alixaxel/chrome-aws-lambda#69 (comment)

```text
The `ETXTBSY` error code is thrown when puppeteer is trying to **start the
Chromium binary but the binary file is under a exclusive lock** - that can
happen if you don't wait for `executablePath` to resolve, or, **if you
call `executablePath` multiple times.**
```

This also showed up with older versions of Node and Docker, but each of
the versions in the current build are up to date.
  • Loading branch information
mbland committed Jan 4, 2024
1 parent 29b4f66 commit c756441
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions test/browser/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
"private": true,
"scripts": {
"test": "pnpm run test:webdriverio && pnpm run test:playwright",
"test:webdriverio": "PROVIDER=webdriverio node --test specs/",
"test:playwright": "PROVIDER=playwright node --test specs/",
"test:safaridriver": "PROVIDER=webdriverio BROWSER=safari node --test specs/",
"test:webdriverio": "PROVIDER=webdriverio node --test --test-concurrency=1 specs/",
"test:playwright": "PROVIDER=playwright node --test --test-concurrency=1 specs/",
"test:safaridriver": "PROVIDER=webdriverio BROWSER=safari node --test --test-concurrency=1 specs/",
"coverage": "vitest --coverage.enabled --coverage.provider=istanbul --browser.headless=yes"
},
"devDependencies": {
Expand Down

0 comments on commit c756441

Please sign in to comment.