kgress / scaffold

A Java based Selenium WebDriver abstraction
MIT License
4 stars 7 forks source link

Refactor AutomationWait #95

Closed kgress closed 2 years ago

kgress commented 3 years ago

Summary

AutomationWait could use a refactor as it's a bit dated in design.

Firstly, we should change how the default wait is initially created. The AutomationWait is instantiated in the constructor of WebDriverWrapper, which is created in WebDriverManager after the web driver has been configured. WebDriverManager has access to the spring context, so we should create a new spring property for the desired automation wait. Then, load that property into AutomationWait as the wait time. If the property doesn't exist in the spring configuration, we can still set it as a default of 5 seconds. This check can happen on the WebDriverWrapper before the manager is created.

Secondly, the above change will require an update to the AutomationWait constructor. Instead of a WebDriverManager, we should require WebDriverManager webDriverManager and Long automationWaitTime.

Thirdly, this means we can nuke a lot of the class variables on AutomationWait like waits, useCustomTimeoutIndefinitely, and customTimeout. There may be moments we'd like to set the timeout after the fact, so we can leave the setCustomTimeout method in the class; but since we will not longer have a reliance on useCustomTimeoutIndefinitely, the setter fundamentally sets the timeout "indefinitely" by default. I think we should also update getDefaultWait() to a new method name of getWebDriverWait() and still allow it to create the new WebDriverWait based on the timeout loaded in from the spring property. Because of that, it means we can nuke getTimeoutInSeconds().

A/C