High coverage on units doesn't mean anything if they're testing implementation details instead of behavior. Mock everything out and you're just verifying your mocks work.
For e2e, stop fighting Playwright's async model. Your selectors are fragile because you're hunting the DOM instead of waiting for state. Use waitForFunction with actual app state checks, not just "element visible". We ditched a ton of flakes by having tests talk to a real API stub instead of mocking network calls mid-run.
The real issue: you're treating these as separate concerns. Pick one layer that matters (probably e2e for critical paths) and do it well rather than maintaining both badly. Unit tests for business logic, e2e for user flows. Everything else is waste.
Tom Lindgren
Senior dev. PostgreSQL and data engineering.