Setting up Environment Profiles in Katalon Studio

For those who just upgraded to the new Katalon Studio 5.4 version, you might have noticed the Global Variable button seems to be missing from the right hand side of the app. Actually, it’s been moved and improved and now Katalon supports “profiles” that allows you to set up and populate variables based on environment.

From my previous example, this is where I would store the URL for the site I am working on. When I needed to change environments, I would manually edit my baseurl variable and everything would run fine.

This has now been improved so you can define multiple sets of Global Variables for a profile and choose which one to work with. No more editing between test runs.

My needs are fairly simple at the moment, as I only change baseurl for each test. However, I could add other variables or populate them with different information based on environment. It also saves me having to change the baseurl each time.

By default, whatever you had previously defined for your Global Variables will become the “default” entry under Profiles. Like other items, you can Copy that profile, and Paste it into the folder to create variable sets for each environment.

I have created three Profiles, one for QA, one for a Feature/Staging environment and one for Production.

katalon-profiles

With these defined, I simply change to the environment I want to work with and the baseurl is automatically changed without me having to type anything.

select-profile

This is a very handy feature and only took a few minutes to incorporate into my existing project.

Other articles of interest:

Securely storing passwords and login details with Set Encrypted Text in Katalon Studio

One of the new features for Katalon Studio 5.4 is the ability to store encrypted passwords right inside the test case using the Set Encrypted Text command. Previously, the username and password would be in clear text, so anyone who opened the file could see the login credentials. This now obscures that information while still allowing easy access.

The new command is available while editing the script in Manual mode. Change the normal Set Text command to Set Encrypted text, which brings up a small dialog window that encrypts the text as you type.

set-encrypted-text

With the Item column now changed, double click the input field to bring up the encrypted text dialog box. On this new input screen, click the Value input field and you will be able to type in your text and see the encrypted text. This is what will be saved in the Test Case.

input-encrypted-text

For the login test I have, I check to see which environment the test is running against and then pass the credentials for that environment. By simply changing the Set Text command to Set Encrypted Text, I obscured the username and password in mere moments.

The test now looks like this:

if (GlobalVariable.baseurl == 'https://myqasite.com') {
    //QA credentials
log.logWarning('Logging in to environment - ' + GlobalVariable.baseurl)
    WebUI.setEncryptedText(findTestObject('Page_Sign In/input_UserName'), 'XJ419vj6YqJLWAYDfHAYjLzfymSmyhCi')
    WebUI.setEncryptedText(findTestObject('Page_Sign In/input_Password'), 'e71pytG/LEFOTYb/96yNYh7DOujSLkGz')
} else {
//Staging and Prod credentials
log.logWarning('Logging in to environment - ' + GlobalVariable.baseurl)
    WebUI.setEncryptedText(findTestObject('Page_Sign In/input_UserName'), 'cbbsN3ywIVYTVYg1DVaCdC/EYK/MbMZwGmSPgZHWhNTAx6OdO9Wh9w===')
    WebUI.setEncryptedText(findTestObject('Page_Sign In/input_Password'), 'MihRDM3OZ2lC85FtfophvXwNOqe+xiW4fjG2a5CVrjqCtbHeBRcgvw==')
}
WebUI.click(findTestObject('Page_Sign In/span_Sign in'))

This is a pretty nice feature, and even if you’re just working in a QA or Staging environment, it’s nice to now you can obscure sensitive text from others who might be working on the same project, or from someone who might take a glance at the screen.

Other articles of interest:

Quasi Performance/Load Testing with Katalon Studio

For real load testing scenarios there are dedicated tools. But, if you need a quick way to generate traffic from multiple users hitting the same page or pages, you can launch Katalon multiple times from the command line. Katalon will jump through pages far faster than you can do it manually, which can give an approximation of user load.

The first thing to do is to build a Test Suite that runs all the Test Cases you’re interested in. This could be test cases that fill in forms, click a series of link, or load one page after another.

Once that’s done, use the Build CMD button from the menu bar to generate the command line that launches Katalon and your Test Suite.

katalon-build-cmd

Open a Terminal prompt and switch to the Applications directory. Paste in the command line to load Katalon and start the test. After launching the first instance, open a new Terminal tab, switch to the Application directory and paste the command line again. Repeat several times to get multiple instances of Katalon and your browser running.

cd /Applications/

./Katalon\ Studio.app/Contents/MacOS/katalon –args -noSplash  -runMode=console -projectPath=”/Users/XXX/Documents/GitHub/katalon/examples/Test1.prj” -retry=0 -testSuitePath=”Test Suites/New Test Suite” -browserType=”Chrome”

In each tab, Katalon will load and start executing the test. You should quickly see multiple browsers all running the defined Test Suite and pages loading.

Keep in mind, each execution is a full load of Katalon and the browser, so it will consume a fair bit of CPU power and RAM. My Mac Pro has 12 cores and 128GB of ram, so I’ve had 10 consecutive sessions running without incident. I could have easily opened more, but the traffic seemed sufficient. And to be honest, it was pretty amusing to watch.

This method clearly doesn’t compete with tools like Apache Jmeter, and I don’t know if Katalon condones such things, but if you need something quick, and have a good set of tests that can load a lot of pages, this works quite well.

Other articles of interest:

Creating a Data Driven Test Suite in Katalon Studio

In order to extend the reach of my regression tests, I wanted to run a Test Suite multiple times for different users, one after the other. My goal is to log in as User A, run the regression suite, log in as User B, run the regression script again.

For example, I want to log in as John, check multiple pages worth of sales figures to perform calculations and comparisons. I then want to log in as Jane and do the same thing.

I currently have a Login script that I edit between each run with the name of the user I want to be. It works, but I want it to run for a list of users rather than me having to make an edit between each run.

Katalon supports Data Driven tests, where you can supply information to be read from a file. However, that applies to a single Test Case, not a Test Suite. It means the Test Case will iterate through all the data in the file before moving on to the next Test Case in the list.

Based on the scenario above, it would log in for User A, then immediately log in for User B, then User C, and continue do this for each name in the file. At the end of the list, the next test in the suite would be executed. It would read the sales data for the last person in the list.

What I need is for the data to be applied at the Suite level, which isn’t currently supported. However, there is a way to make this work that only takes a couple of steps. In essence, the Login script call numerous Test Cases after reading in the name of the user. It’s not quite as drag and drop as building a Test Suite, but it works.

To convert my Test Suite to work in my Test Case I took the following steps. Since the Test Suite is an XML file it can be easily read. Using a Terminal session and grep, I grabbed all the <testCaseId> lines and wrote them to a file.

grep "Test Cases" QA\ Regression\ Test.ts > testcases.txt

I now have a list of all my tests in the form:

<testCaseId>Test Cases/Sales Dashboard Tests/Main Dashboard Tests/Check Import Date</testCaseId>

The next step is open the testcases.txt file into an editor or spreadsheet such as LibreOffice. Using the Search and Replace function, strip out the <testCaseId> and </testCaseId> tags. This is now the list of Test Cases we want to run and will be added to the Login script.

From here, it’s easy to combine the callTestCase function and append the name of all the test cases to it.

In a spreadsheet, paste all the Test Cases into Column A.

In Column B enter:

WebUI.callTestCase(findTestCase('

In Column C, enter:

'), [:], FailureHandling.CONTINUE_ON_FAILURE)

In Column D, enter

=B1&A1&C1

This takes the callTestCase command, appends the name of the actual test case, then appends the closing syntax. This generates:

WebUI.callTestCase(findTestCase('Test Cases/Sales Dashboard Tests/Main Dashboard Tests/Check Import Date'), [:], FailureHandling.CONTINUE_ON_FAILURE)

Fill this formula down for each Test Case.

With all the commands complete, copy the entire list into the Test Case you want to iterate through, in my case, Login.

The final test case will look similar to:

WebUI.navigateToUrl(GlobalVariable.baseurl + '/login')
WebUI.setText(findTestObject('Page_/input_login_Field'), impersonateUser)
WebUI.delay(1)
WebUI.click(findTestObject('Page_/btn_Submit-Login-Credentials'))
WebUI.delay(1)
WebUI.callTestCase(findTestCase('Test Cases/Sales Dashboard Tests/Main Dashboard Tests/Check Import Date'), [:], FailureHandling.CONTINUE_ON_FAILURE)
WebUI.callTestCase(findTestCase('Test Cases/Sales Dashboard Tests/Main Dashboard Tests/Confirm Dashboard Link'), [:], FailureHandling.CONTINUE_ON_FAILURE)

I have 50 callTestCase commands, the full list of my Test Suite, in the Login Test Case. This means my new Test Suite only has 2 Test Cases listed. The first is to load the web page details. The second is the Login test. Login now replaces the previous Test Suite.

When I run this new test, it gets to the Login script, loads a user, then executes 50 regressions tests. When that cycle is complete, it loads the next user and repeats the process.

Also note the FailureHandling.CONTINUE_ON_FAILURE that has been added to each Test Case. This means the regression tests will keep running if one of them fails. Without this, as soon as an error condition is reached, all the tests will be halted. This includes an element missing, the markFailed command and quite a few others.

While not quite as robust as a regular Test Suite, this method works and will allow a series of tests to be run multiple times. It took less than 10 minutes to convert my Test Suite to this method and get it working. For now, it’s a pretty reasonable workaround.

Other articles of interest:

Migrating Platforms – A Katalon Success Story

Several months ago, we began mapping out a migration strategy to move from one service platform to another. It would include new databases, new security authentication, a complete data load and new import and export functionality. Basically, new everything.

Since it’s a new platform, it needed a full regression test. It could be done by hand, but that would be slow and issues could easily fall through the cracks. The goal was to introduce automation, so back in December we started with Katalon as our tool of choice to handle the work.

And so we set off to automate as much as possible. It started as a brute force endeavor. Just to get started, tests were created to read data so we could compare Before and After results to confirm we didn’t lose anything. With those complete, it became possible to fill in forms. After a bit more experience and knowledge, we could count items on the page and validate their content. It was then possible to sum columns and confirm internal calculations to site values. Each test built on the last.

The tests continued to expand in depth and complexity until there was a solid set of tests that validated hundreds of data points. A full run could be completed in less than 10 minutes. Doing that same list of tests manually takes an hour to complete. Plus, the tests could be run in the background giving time back for other tasks.

As we practiced the migration, the scripts were quick to uncover issues. They even revealed a few of bugs due to how frequently they were running. After a week of repeated test runs, the environment was stable and we were quite confident to move the process to Staging.

To confirm it’s readiness, the same set of tests were run repeatedly and the small hiccups were ironed out before turning it over to the customer. What they saw was a nearly flawless upgrade experience.

Over the weekend, we did the real upgrade, with the final validation performed by Katalon and the automation scripts. In a fraction of the time, we were able to check dozens of links, read hundreds of sales figures, fill in multiple user forms, confirm each page loaded as expected and compared dozens of known data elements. We also had written confirmation of what we tested so everyone could agree on the sign-off.

I would say that our implementation of Katalon has been a big success. There is still a lot more to learn and more robust tests to write. But, as of now, we have a solid test suite that definitely validates whether the site is working or not.

Other articles of interest:

Recent Comments

  • A Try Catch example in Katalon Studio (3)
    • Venkatesh: Hi Don Pedro Can you share me sample project ….which consist of basic to advanced stuff…If your github or gitlab url aso present please share… As I am beginer to this I need to learn lot
    • Don Pedro: Hi Lucas. Thank you for the kind comments. I would be happy to help. Let me know how I could be of assistance.
    • Lucas: Thanks for sharing a lot of Katalon tips and tricks. The Katalon team highly appreciate your support and feedback. To make Katalon Studio better and be the best free automation solution for testing community, we wish to coordinate...
  • How To Disable the Quicken Registration Prompt (13)
    • Neil Murphy: I discovered that early on. I’m using 2001.
    • Jeremy: Thank you so so so much. I am still using Quicken 2010 because Intuit didn’t want to properly support users abroad anymore (never mind that they only link to US banks for transaction downloads; they didn’t want my...
    • Richard: I have Quicken 2016 Home & Business and when I use Shift + CTRL I can’t see any Tools option; All I can see is the original menu items of File & About. Might you be able to offer any advice?
    • Jack Woltz: Worked great but now I get update nag which is worse
  • Securely storing passwords and login details with Set Encrypted Text in Katalon Studio (1)
    • Agus: Hi Don, Is there a way to set the encrypted text to be used in the ‘WebUI.authenticate̵ 7; method? Basically I am trying to encrypt the password that is passed to the ‘WebUI.authenticate̵ 7; method. Thank you.
  • Katalon Studio – Manual View – The start of a test script (2)
    • ben: Hello Don Great Website. Keep up the work. I learnt a lot. cheers Ben.
    • Lucas: Hi Don Pedro, Thanks for sharing a lot of great articles related to Katalon Studio and Selenium. I am Lucas from Katalon team. From your point of view, we’ve learnt alot to improve our product and add more valuable features...
  • Another success with Katalon Studio (1)
    • Mahesh Joshi: Hi Don, I just started following your blog in regards to katalon. I want to introduce katalon studio at my work we do manual testing at work at the moment. What approach I should use for proof of concept with katalon for...
  • What went wrong with Crime City? (34)
    • G D: One thing I have noticed is the awkwardness of items and the attack points and how you can earn them. I was pretty pathetic with attack points and then I played that limited time boss and got weapons that had attack points in the...
  • Disable the Quicken 2012 Registration Prompt (1)
    • Scott: Thanks this worked great and is better then having to upgrade to a subscription!
  • Time to throw away Freemake (1)
    • Rob Crombie: Which program are you using instead, now ?
  • How To Download Movies From Hulu Using Freemake Video Downloader (1)
    • Doomups: I often use allavsoft to download Videos from Hulu on Mac and Windows. And it also can batch and Direclty Download Hulu Videos to MP4, WMV, MOV, AVI, FLV, etc.