Just a few thoughts...
There's a pretty good presentation over at
medium.com/welldone-software/an-overview-of-javas…
With the Selenium IDE ( seleniumhq.org/selenium-ide ) incorporated to verify page state, the prescriptions of that article offer reasonably complete coverage.
I would add the specific concept of Regression Testing. Regression Tests verify that stuff that used to work STILL works. Nicely enough, as long as you don't throw out any of your old tests (except the ones that no long apply) your test suite already holds your regression tests. I recommend layering test by date; this has documentary value by way of indicating WHEN the test became relevant. Additionally, when retiring a test don't delete it, comment it out and remark on WHY it is no longer pertinent. This helps to document the evolution of the app (AND, if the app reverts, the test can easily be reactivated).