To markFailedAndStop or Not To markFailedAndStop?

Based on the criteria of the original tests I set up several months ago, if an object was missing, that was a critical error and needed to be flagged. Since we were making heavy adjustments to the code base, anything missing needed to be checked. Things have changed quite a bit, so if an object is missing, should the situation be handled within an IF statement  or does a missing object represent a much larger problem and the test has to be flagged as an Error?

This continues on from the idea of checking for the existence of an object without throwing an error. Using a Custom Keyword is was possible to suppress the error and not fill the log with False Positives.

Taking that a step further, it seems we could check if an object exists and continue on with the test if needed or exit out of the test completely.

Using the example from before, let’s say we want to count the number of Tasks a user has. If a user doesn’t have any Tasks to display, that’s not a critical error. They may not have made any. We could handle that within the IF statement and not try to count something that doesn’t exist.

Conversely, what if we tried to create a Task, but the New Task button was missing. Now we have a problem. We want to perform an action and piece of functionality is missing. And if the New Task button is missing, attempting to run code to fill in a series of input fields, then confirm it was saved won’t work and will lead to multiple errors. It would be better to mark the test as failed when we first notice the New Task button is missing.

We could handle both of those conditions within a single Custom Keyword. We can check for our object and if it’s a critical object, stop the test on failure. We can add a “critical” flag and handle both.

Our previous "verifyObjectPresent" method would be extended to create the following:

@Keyword
//Function to determine if an item exists on the page using WebUiCommonHelper.findWebElement
boolean verifyObjectPresent(String objectReference, boolean critical) {
    try {
        WebUiCommonHelper.findWebElement(findTestObject(objectReference),5)
        return true;
    } catch (Exception e) {
        if (critical==true){
            log.logWarning("The object with the name, " + objectReference + " was not found. Execution Halted.")
            KeywordUtil.markFailedAndStop("ERROR: The object with the name, " + objectReference + " was not found. Exiting Test.")
        } else {
            log.logWarning("The object with the name, " + objectReference + " was not found.")
            return false;
        }
    }
}

We are now accepting “boolean critical” as a parameter. If the object is missing and this is true, we note the missing object and execute, “markFailedAndStop.” If it’s not a critical object, the name of the object is noted, but execution continues. Control then returns to the Test Case to handle a non-critical missing object.

A call to the Custom Keyword would look like the following:

    boolean elementVisible=CustomKeywords.'commonCode.verifyObjects.verifyObjectPresent'('Blog/text-blogTitle', false)
    if (elementVisible==true){
        blogTitle = WebUI.getText(findTestObject('Blog/text-blogTitle'))
        log.logWarning('Blog Title: ' + blogTitle)
    }
    log.logWarning("Test Complete")

If the blog title exists, get the text of that object. If it doesn’t, take the appropriate action based on the critical parameter. If it’s a critical object, mark the tests as failed and exit.

I like this approach because it removes a lot of redundant check, so I plan to make adjustments to replace my standard “verify” based calls with this method. I can now decide how to handle a missing object within a single method and if it’s a real problem, stop the code.

https://github.com/DonPedroQA/qajamboree/blob/master/Katalon/verifyObjectPresent.groovy

Other articles of interest:

Leave a Reply

Your email address will not be published. Required fields are marked *

Recent Comments
  • Parsing Strings in Katalon – Split, Substring and Readlines (4)
    • Anjana: Hey thanks for the response It is quite strange but initializing variable for delimiter and it worked String splitFormat = ‘-‘ WebUI.println(var_CampaignDura tion.toString().split(splitFor mat)[0])...
    • Don Pedro: I’m not really sure what the difference is, but I don’t think the “-“ in the split is the same as the one in the date. String var_CampaignDuration = “05/13/2019-06/07/2019&# 8221; String[] parsedDateRange =...
    • Anjana: Hi, I tried the same thing to split the string, but does not work for me, Could you plz point out whats wrong Variable var_CampaignDuration has value “05/13/2019-06/07/2019&# 8221; String[] parsedDateRange =...
    • Ellen: Thanks for sharing!! I like your contributions to Katalon topics.
  • How to Block games by Title and Tag on Steam (2)
    • Marcus861: I made an acc just to say: Same bro
    • JACK: Thanks, same just wanted to block anime games in my discover
  • Create a new and random UUID for an API call (1)
    • Anonymous: Hi ! I found this blog few weeks ago and it’s really helping me out with my tests! Thanks a lot for the Katalon tips and tricks ! Keep up the good work 🙂
  • How To Disable the Quicken Registration Prompt (25)
    • Greg: For me, holding the *LEFT* CTL + Shift then clicking Online, One Step Update worked. I originally tried holding the right CTL + Shift, and it didn’t work. I’m using Quicken 2006, so I don’t know if it will work...
    • Joe SR>: My monthly income is deposited into my Credit Union account. I use debit whenever possible. I write checks manually and mail them. I use Quicken 2012 off-line only. I have entered all my money and investment accounts. I...
    • Prtet: Never say never….every time I swear I will never use Quicken again, I discover that there are still no viable alternatives. Amazing that there is no decent personal finance software.
    • Joe D.: Holding CTRL + Shift keys and selecting On Line | One Step Update from the main menu worked for my Quicken 2004. I’m grateful that you wrote a synopsis (“Simply put, …”) just beneath the link to the blog...
    • Susan Long: I bought my quicken disc in the beginning and it came with a registration number. I rang the helpline and they gave me the code to put in and talked me through it. It you downloaded your version then you don’t own it...
    • Peter: You might consider running your old version of Quicken on an ancient computer. This is what I have done for years. The newer versions are fraught with problems- criminal, in my opinion. One version made mathmatical errors when...
  • Working with Dates and Date Formatting in Katalon Studio (6)
    • Ajoo: Thank you for the details. How do i remove leading “0” from dates. i.e. while formatting i receive 04/21/2019, but i need 4/21/2019. (same applies for date)
  • What is Katalon Studio? A Distro of Selenium, Groovy and Eclipse (1)
    • Mahesh: Looking for more posts on katalon studio.your katalon stuffs are always exiting