Skip to main content

Software Testing Podcast - Migrating Test Automation - The Evil Tester Show Episode 027

We should migrate test automation abstraction code, we should not have to amend the test case code. Using AI can help.

Subscribe to the show:

Watch on YouTube

Watch on YouTube

Interested in sponsoring the site? [find out more]


Show Notes

Should you use AI to help you migrate test automation code? And what should you actually migrate, the tests coverage hasn’t changed. In this episode we discus show abstractions and AI can be used to migrate… and discuss when you shouldn’t.

Welcome to The Evil Tester Show! In this episode, host Alan Richardson dives into the complex world of test automation migrations. Have you ever wondered what it really takes to move your automated test execution code from one tool or language to another—like switching from WebDriver to Playwright, or migrating from Java to TypeScript? Alan breaks down the pitfalls, challenges, and best practices you need to consider before taking the leap. He explains why migrating isn’t just about copying test cases, how abstraction layers can save you time and headaches, and why using AI and solid design principles can streamline your transition. Whether you’re facing unsupported tools, evolving frameworks, or strategic changes in your testing approach, this episode offers practical advice to plan and execute a seamless migration—without burying new problems beneath old ones.

Here’s a taste of what’s inside:

1. Why Migrate—And When You Really Shouldn’t Before any big move, Alan urges teams to get their “why” straight. Is your current tool unsupported? Is your framework truly incompatible, or are you missing some hidden potential? Migrate for the right reasons and make sure your decision isn’t just papering over problems that could follow you to the next tool.

2. Don’t Confuse Migration with a Rewrite Too many teams treat migration like a rewrite—often with disastrous results. Alan emphasizes the importance of planning ahead, solving existing flakiness and coverage issues before you move, and carefully evaluating all options (not just the shiny new tool you think you want).

3. The Secret Weapon: Abstraction Layers The podcast’s biggest takeaway: Don’t migrate “test cases”—migrate abstractions. If your tests are full of direct calls like webdriver.openPage(), you’ve got work to do. Build out robust abstraction layers (think page objects or logical user flows) and keep your tests clean. When it comes time to migrate, you’ll only need to move those underlying layers, not thousands of individual test case scripts.

4. Taming Flakiness and the Risks of Retries Migration is not the time to rely on self-healing tests or retries. Any test flakiness must be rooted out and fixed before porting code. Bringing instability into a new stack only multiplies headaches later.

5. Harnessing AI—But Stay in Control AI-assisted migration really shines at mapping old code to new, but Alan warns against “agentic” (hands-off) approaches. Use AI as a powerful tool, not as the driver—you need understanding and control to ensure things work reliably in CI/CD pipelines.

6. Learn Fast: Tackle the Hardest Stuff Early Pro tip: Once you’re ready, start your migration with the simplest test, just to get going—then dive into the hardest, flakiest, most complex workflows. You’ll uncover potential blockers early and kick-start team learning.

“We’re not migrating test cases when we change a tool. We’re migrating the physical interaction layer with our application… ”

Episode Summary

Introduction to Code Migrations in Test Automation

Reasons and Considerations for Migrating

Preparing for Migration

Migration Process and Best Practices

Harnessing AI and Abstraction Layers

Focus on Migrating the Right Code

Flakiness, Retries, and Self-Healing Tests

Abstraction and Domain Modelling in Test Automation

Conclusion and Key Takeaways