Improving End-to-End Tests to Reduce Flakiness: Tools and Strategies