I’ve been working with Puppeteer for about two years now, and the biggest pain point I keep running into is brittleness. You build a script that works perfectly for weeks, then the client redesigns their site and suddenly everything breaks. You’re back to square one trying to figure out which selectors changed.
I started thinking about this differently after I realized the real problem isn’t Puppeteer itself—it’s that I’m hardcoding every interaction. Selectors, navigation paths, everything is rigid. When the UI changes, the whole thing collapses.
Recently I learned about using plain language descriptions to generate workflows instead of hand-coding selectors. The idea is that you describe what you want to do (like “log in and extract the user data”) and the system generates resilient logic that adapts better to layout changes because it understands intent rather than just memorizing DOM paths.
There’s also something about AI Copilot systems that can produce workflows from descriptions, which seems to handle UI variations better than my brittle scripts. I’m curious if anyone else has tackled this problem and what approach actually worked for you. Do you re-test and re-fix every time a site updates, or have you found a way to make your automations more flexible?