When frameworks grow, flakiness and maintenance become the real bottlenecks.
My default approach:
- Keep tests deterministic
- Prefer stable locators and contracts
- Separate test data and environments cleanly
- Design a small, clear core (utilities + fixtures) and scale outward