TL;DR: You run your Selenium suite locally β 47 tests, all green, ship it. The PR hits GitHub Actions and 23 tests fail.
π Reading time: ~40 min
What's in this article
The Problem: Your Tests Pass Locally and Explode in CI
The classic failure: green locally, red in CI, nobody knows why
Choosing Your Selenium Wrapper (and Why I Use WebdriverIO Over Raw Selenium)
Installing and Configuring WebdriverIO
Writing Tests That Don't Flake
Kill browser.pause() Before It Kills Your Pipeline
Setting Up GitHub Actions to Run These Tests
The Gotchas I Hit (So You Don't Have To)
The Problem: Your Tests Pass Locally and Explode in CI
The classic failure: green locally, red in CI, nobody knows why
You run your Selenium suite locally β 47 tests, all green, ship it. The PR hits GitHub Actions and 23 tests fail. Half of them are TimeoutException , a few are NoSuchElementException , and one is some cryptic StaleElementReferenceException that you've never seen before.β¦