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:

  1. Auto-waiting: No more flaky setTimeout calls in your Markdown scripts.
  2. Native Locators: Using @clickLabel "Submit" instead of brittle CSS selectors.
  3. 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