> "Perfection is achieved, not when there is nothing more to add, but
> when there is nothing left to take away." -  Antoine de Saint-Exupery


In general, strive to make UI tests more horizontal(end to end , not deep) and lower level tests more vertical(in depth).

In my automation journey,  I learned few hard lessons in UI tests as below:

 - Have fewer UI tests, as straightforward and simple.
- Don't cover same verifications in multiple tests or on multiple test levels.
- Let every test pass and fail for *one and only one reason* , focused tests.
- Don't  try to rebuild complex application logic in tests  otherwise they are prone to same bugs as application itself.
- Strive to be broad , not deep.
- If the flakiness is in general for most of the tests , then test code quality is low.
-  Review them regularly  and don't hesitate to throw the ones which don't add value anymore. ([Sunk Cost Theory][1] )


### My suggestion 
******************************************
Add a metrics to every test to gain positive points for each time it's found a bug and negative points for each flaky failure.Add new tests for missed bugs at appropriate level.

Calculate the relative points for each test and discard the lowest ones periodically, that should make your test suite lean and sleek  over a period of time.

In your situation,  I would start with removing the UI tests which add lowest value in the overall stack .

If a UI test has been failing intermittently in every other release for no reason and hardly ever found an actual application issue , that's  an good candidate for removal.

[Good read to measure flakiness ][2]


  [1]: https://en.m.wikipedia.org/wiki/Sunk_cost
  [2]: https://engineering.fb.com/2020/12/10/developer-tools/probabilistic-flakiness/