Unit test coverage means almost nothing for frontend work. You're testing in isolation while the real failures happen in integration. That's backwards.
Skip most unit tests. Focus on e2e paths that actually matter: login flow, critical user journeys, payment if you have it. Keep those lean and deterministic. The flakiness you're seeing is usually poor waits, not Playwright being bad. Use waitForLoadState('networkidle') or explicit waits on real conditions, not arbitrary sleeps or selector polls.
For CI, run e2e against a real staging environment, not mocked APIs. Mocks hide integration bugs. Yeah, it's slower, but you'll catch what matters. Your unit tests? Keep them only where logic is genuinely isolated (pure functions, maybe business logic). Otherwise they're just maintenance overhead.