From 047f736036830bd25e13c6f6c1712d2be8d5d5b3 Mon Sep 17 00:00:00 2001 From: Mike Bland Date: Thu, 7 Dec 2023 14:39:30 -0500 Subject: [PATCH] fix(test/browser): set test-concurrency=1 (#4686) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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): - https://github.com/alixaxel/chrome-aws-lambda/issues/69#issuecomment-584678457 ```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. --- test/browser/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/browser/package.json b/test/browser/package.json index ec97bb065afd..86c2a34ced29 100644 --- a/test/browser/package.json +++ b/test/browser/package.json @@ -4,8 +4,8 @@ "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:webdriverio": "PROVIDER=webdriverio node --test --test-concurrency=1 specs/", + "test:playwright": "PROVIDER=playwright node --test --test-concurrency=1 specs/", "coverage": "vitest --coverage.enabled --coverage.provider=istanbul --browser.headless=yes" }, "devDependencies": {