Fewer end to end tests, more integration tests
Editor & IDEI used to write end to end tests for nearly everything. If a user could do it, I automated it in Playwright. The test suite grew to about two hundred scenarios, each one spinning up a browser, navigating through the UI, waiting for async operations to settle, taking screenshots on failure. A single change to a form label could break fifteen tests that had nothing to do with the logic I modified. The feedback loop stretched past ten minutes for each run.
I started moving most of those tests down a layer into Vitest integration tests that call my backend handlers directly or render components with realistic fixtures. My end to end tests now cover the paths that would actually shut down the business: user signup, checkout, the core workflow that customers pay for. Everything else lives in tests that run in milliseconds and point directly at the broken function.
A concrete example from last month: instead of an end to end test that logs in, navigates to settings, uploads an avatar, waits for the UI to confirm the upload, and takes a screenshot, I now have an integration test that calls my upload handler with a test file, asserts the return value, and another test that verifies the component renders the new avatar URL. Those run in about sixty milliseconds total. The end to end test exists only to confirm the whole flow hangs together maybe once per release.
The honest limitation is that integration tests do not catch issues in the actual browser's rendering engine or in third party authentication systems. If your business depends on the visual layout being pixel perfect or on OAuth tokens working exactly as the provider implements them, you still need end to end coverage for those specific paths.
