Boost Test Reliability
Make sure that you don’t have a real problem, and your tests didn’t fail because of test configuration issues. BELLATRIX handles timeouts and guarantees that your elements are found once you requested a particular action.
Handle All Synchronization Issues
BELLATRIX performs elements actions seamlessly, handling timeouts automatically.
One of the biggest problems in test automation is handling timeouts and performing actions on elements which may not be on the screen right now. In the WebDriver world, you have to constantly worry about how to solve these problems with an implicit wait, explicit wait, or WebDriverWait class. BELLATRIX hides the whole complexity of searching and waiting for elements. When you perform an action or assertion against an element we guarantee that once returned is there.
Lazy Loading of Elements
Lazy loading means that BELLATRIX finds elements once you requested specific actions to be performed on the element.
In the time gap between selecting an element and finding it, the element’s state may change. That’s why we have an internal logic that locates elements upon request instead of when they are selected. This way, we prevent failing tests because the element state is different.
var agreeCheckBox = driver.FindElementById("agreeChB")); var confirmButton = driver.FindElementById("confirm")); agreeCheckBox.Click(); confirmButton.Click();
The problem with vanilla WebDriver/Appium is that it finds the elements immediately. If you use the element later and its state was changed, an error occurs. In the above example, the first agree checkbox is found, and then the confirm button. You uncheck the checkbox and the state of the button is changed. Once you perform the button click, an error occurs.
var agreeCheckBox = App.ElementCreateService.CreateById<CheckBox>("agreeChB"); var confirmButton = App.ElementCreateService.CreateById<Button>("confirm"); agreeCheckBox.Uncheck(); confirmButton.Click();
With BELLATRIX’s lazy loading, the checkbox is found during just before the unchecking. When you call the button click, then BELLATRIX searches for the button and it is returned with its updated state.
Smart Wait Assertions
Additional methods which internally handle the whole complexity of waiting for some conditions to happen.
A major part of your tests are the assertions- actually checking whether some conditions are met. This might be checking whether some text is shown or whether some button has been disabled. However, this often doesn’t happen immediately. In the era where most things happen asynchronously. In most cases, if you just call the following code snippet, your test will fail because the content box with a correct message might be displayed asynchronously.
Assert.AreEqual("Order Completed", successBox.Text);
To handle such scenarios, we created elements Ensure methods. They internally handle the whole complexity of waiting for some condition to happen.
Waits for the message alert to disappear.
Wait for message alert to be disabled
You can even fine-tune the timeouts.
totalContentBox.EnsureInnerTextIs("120.00€", timeout: 30, sleepInterval: 2);
For each specific element- button, content box, anchor, image, etc. only the relevant Ensure methods are displayed.
Moreover, we hide the whole complexity of how the specific property is gotten, saving you tons of code and duplication.