Technical Deep Dive: The v2.0.0 Playwright Migration
Why we stepped away from custom browser automation and embraced Playwright for the core automation engine.
The release of slides-tape v2.0.0 was a big architectural shift. We decided to replace Puppeteer and our internal browser controller with Playwright.
The Stability Problem
In v1.x, automating web UI flows was fragile. We used a custom CDP wrapper that struggled with modern SPAs, async lazy-loading, and varied network conditions. We needed a professional-grade foundation.
Why Playwright?
Playwright provided three critical features that are now core to the slides-tape experience:
- Auto-waiting: No more flaky
setTimeoutcalls in your Markdown scripts. - Native Locators: Using
@clickLabel "Submit"instead of brittle CSS selectors. - Cross-browser Stability: Ensuring your demo looks identical on Chromium and Firefox.
Human Simulation
We didn’t just want automation; we wanted narration. We implemented a custom layer over Playwright to simulate human typing jitter and smooth mouse movements, making your automated demos feel like a live human is presenting.
# Try it now
slides-tape serve automation-demo.md