Lesstep
GitHub Actions · Ubuntu 26.04 · Checked November 4, 2026

"Error: write EINVAL" from every WebdriverIO worker on Ubuntu 26.04

ubuntu-latest is moving from Ubuntu 24.04 to 26.04 between October 19 and November 19, 2026 (what else changes). The xvfb package goes from 2:21.1.12 to 2:21.1.22 (Ubuntu's package list, November 4). WebdriverIO v9 starts each worker as xvfb-run ... node with its IPC channel on file descriptor 3, and the 26.04 xvfb-run does not keep that descriptor open for the command it runs. The worker's first message to the launcher fails, and no spec starts (webdriverio #15685).

What it looks like

[0-0] Error: write EINVAL
[0-0]     at target._send (node:internal/child_process:878:20)
[0-0]     at target.send (node:internal/child_process:751:19)
[0-0]     at file:///home/runner/work/app/app/node_modules/@wdio/local-runner/build/run.js:18:11
Spec Files:	 0 passed, 3 failed, 3 total (100% completed) in 00:00:05

Every worker fails the same way within seconds, so the run reports every spec file as failed without a single test result. WebdriverIO's own Jasmine boilerplate hit it on its first runs on 26.04 (jasmine-boilerplate #1566).

Who gets it

v9's local runner wraps workers in xvfb-run on Linux when there is no DISPLAY, and also when it sees a headless browser flag such as --headless (@wdio/xvfb). On a GitHub-hosted runner there is no DISPLAY, so the wrap happens for headless Chrome and Firefox, and for Appium and cloud capabilities that never use a local display at all.

Fix: update every @wdio package to 9.33.1

9.33.1 (November 3) keeps the IPC channel off the descriptor xvfb-run closes (webdriverio #16180). @wdio/local-runner pins @wdio/xvfb to its own version, so updating the runner brings the fix; keep all @wdio/* packages on the same version.

npm install --save-dev @wdio/cli@9.33.1 @wdio/local-runner@9.33.1

Add the framework, reporter and service packages you use to the same command. Two catches:

Workarounds without updating

v10, in alpha on November 4, replaces @wdio/xvfb with @wdio/display-server, which fixes this according to the comments on webdriverio #15685.

Telling it apart

Other 26.04 failures

See failed jobs from IntelliJ IDEA

Pipeline Inbox for GitHub Actions Workflows, a plugin by Lesstep for JetBrains IDEs 2024.1 or later, lists the runs of all your repositories in an IDE tool window, with their jobs and steps, and your current branch's runs are in the status bar. Reading is free; re-running failed jobs, cancelling, running workflows and reviewing deployments are Pro (US$1.50 a month, with a 30-day trial).

Get it on JetBrains Marketplace

GitHub and GitHub Actions are trademarks of GitHub, Inc.; Ubuntu is a trademark of Canonical Ltd.; Node.js is a trademark of the OpenJS Foundation; IntelliJ IDEA is a trademark of JetBrains s.r.o. This page is not affiliated with, sponsored or endorsed by GitHub, Inc., Canonical, the OpenJS Foundation, the WebdriverIO project or JetBrains.

More: "The ubuntu-latest label will migrate to Ubuntu 26" · Playwright on Ubuntu 26.04 · GitHub Actions plugins for IntelliJ IDEA compared · 日本語