- Use a framework that allows you to write once and run everywhere.
- Test should emulate the action performed by a user.
- Use Gherkin syntax for readability.
- Modularize your scenarios so you have many small tests instead of one large test.
- A test should not be dependent on another. They should be able to run in any order.
- Colocate test code with feature code so the correct build artifact is used.
- Separate locators in their own files.
- Locators should not be brittle or else tests will be flaky.
- Use XPath to find elements with text.
- Log each action to the screen and to a file.
- Include information like user credentials to make troubleshooting easier.
- Add a flag to control whether the test halts on error.
- Allow the test to be paused when a breakpoint is hit.
- Save a screenshot when a test fails.
- If a test is flaky, disable it. Then harden the test before reenabling it.
- Avoid using
sleep() to resolve race conditions.
- Minimize setup and teardown time. Aim for fast test execution.
- Tighten feedback loops so developers can run and troubleshoot tests efficiently.
- Parallelize test execution.
- Retry failed tests.
If you enjoyed this post, please consider supporting this site!