Scaling Selenium to infinity using AWS Lambda
summary
UI tests move from hours to minutes by running Selenium with a packaged Chrome and Xvfb inside AWS Lambda, pulling large binaries from S3 into /tmp and reusing in-memory copies to speed cold starts. Framework deploys an uber-jar, invokes Lambda executors, stores videos/logs in S3, and reports via Allure. Result: 800 tests run at 60 tests in 6 minutes (previously ~60 minutes), uses full Chrome in Lambda with S3-staged binaries and Xvfb, and it works reliably for parallel, debuggable runs.
AI-written summary · about
chapters (25)
- 0:00Intro
- 0:36Outline
- 1:14The 'Bad Old Days': Test Ice Cream Cone
- 2:15Practical Test Pyramid
- 4:06Happy Path
- 4:17Test Hygiene
- 5:01Goals
- 7:51Selenium in AWS Lambda: Why?
- 8:36First Iteration
- 9:15Running a Full Browser
- 9:48Full Browser in Lambda: The Screen
- 10:23Full Browser in Lambda: Chrome
- 12:02Keeping the Footprint Small Challenges
- 12:30Keeping the Footprint Small: Solution
- 14:09Debugging: Video recordings using FFmpeg
- 15:46Debugging: Logs
- 17:20Debugging: STDOUT in Cloudwatch
- 17:42Allure Reporting: Tying it all together
- 21:40Java JUnit Lambda Test Runner
- 30:20Speed Improvements
- 31:09With Great Speed Comes Great Responsibility
- 33:20Lessons Learned
- 36:34Shout outs!
- 38:05Github
- 39:06Questions?
related talks
46mServerless - how to speed up tests over 300 times?
44mServerless – Automated Tests of web apps in the Cloud world
34mGood, Cheap, and Fast, Scaling Your Selenium Grid in the Cloud
46mScaling execution of ProtractorJS on AWS Lambda with Selenoid
25mSelenium at the Speed of Light Turbocharging Your Test Execution
19mSelenium Security Scanner
38mFreeing up Selenium
34mUsing Selenium to Improve a Team's Development Cycle
