Anti-patterns for automations
As with any project, it is pretty easy to implement patterns that "just don't feel right" or seem complex. It is also common to "inherit" patterns from previous tools and projects without noticing the problems.
Below, we are collecting a simple list of the "anti-patterns" we have seen. We are growing the list as we get the time and find common patterns, but if you know of an additional one, please just ping us in Slack 🚀
Do NOT use extended/endless retries
💡 "The definition of insanity is doing the same thing and expecting a different result."
Wait Until Keyword Succeeds, retry loops, etc.
- Retries are normally built-in, so just using features like
wait for elementwith a reasonable timeout does the same thing in a much faster and more understandable form.
- In code-based automations, when something fails, a blind retry very rarely works; it is a LOT better to identify the actual case than retry.
- Retrying failing keyword multiple times is inefficient and slows down the development cycle
- Extra retry logics usually just end up slowing down testing and execution of the automation
Avoid using 'taskkill' in Windows automation
💡 "If you need to send an email, do you first go to the circuit breaker of the room and perform off/on cycle?"
- You need to be sure you are not killing processes that others are using.
- You should find the process left open by your robot and handle them in teardown logic gracefully, ending the process like it would normally (manually) closed
- Taskkill is always brutal and sudden so that it may leave your target application in a broken state for the subsequent execution
- "With great power comes great responsibility." 😉
Do not sleep on the job
💡 "In a 100m dash, do you go when the starting pistol goes off, or do you ask someone every 10s if the pistol has been fired?"
Sleepand time-based wait loops.
sleepyou need to estimate the time for the worst-case scenarios without knowing where the automation runs, so these timeouts will always have a lot of extra time wasted.
- Using the
wait for an element to appear-pattern with sensible timeouts, the automation will continue immediately when the element appears without always waiting for a full sleep timer.