Most Selenium-to-Playwright migrations fail before the first test runs in CI. Not because Playwright is hard to learn, but because teams treat the migration as a translation exercise. They port page objects line by line, recreate custom wait logic, and rebuild the same brittle architecture in a newer framework.