Automation framework with Selenium Java course rated highest in Udemy

Dear Friends,

I am very excited for one of the most interesting course “Automation framework with Selenium Java (Advanced)” which got released on 2016 is now rated as the highest rated course in Udemy for third time in a row.

The course while released initially had all the great features which any industry standard framework should posses like shown below

And due to recent changes in Selenium, Cucumber and Cucumber html reporting and various requirements from students like you, I started releasing Season 2 upgrades with new topics as shown below

Upcoming sections of the course (tomorrow)

The course section will be featuring new videos such as

  • Introduction to custom control extension
  • Custom Base control extensions
  • Fluent interface coding practise etc

Once again thank you very much for rating and purchasing the course.

Please let me know if you are interested, I happy to share the coupon code with upto 50% discount.

Karthik KK

API Testing in Katalon Studio – POST request and verify

In our last post, we discussed how to work with Katalon Studio GET operation and understand how to work with Katalon studio API Testing. In this video, we will discuss how to work with PUT request of API using Katalon studio.

In this post, we will discuss following

  1. POST operation with Katalon Studio via Object Repository (UI)
  2. Understanding the passing of body via Katalon Studio
  3. Calling the POST and passing the body via Script
  4. Catching exception to see if we make any mistakes while calling
  5. Check the POST operation by an GET
  6. GET via Parameter for exact POST
  7. Verify the element and other objects of JSON response body

Here is the complete video of the above discussion

Here is the complete source code of the above video discussion

Thanks for reading the post and watching the video!!!

Please leave your comments and let me know if there is anything I should update in this post.

Karthik KK

Introduction to API testing with Katalon studio – GET operation

In this post, we will discuss an Introduction to Katalon studio 5.4.2 new enhanced API testing feature.

Katalon studio supports Web service testing for a pretty long time now, but there are new changes to UI as shown below

Here we will discuss using My JSON Server for testing API services

And here is how we can start the server

Here is the complete video of the above discussion

Here is the complete source code of the above video

Please leave your comments and thanks for reading the post and watching the video !

Karthik KK

mabl’s Adaptive Testing with Angular and React Apps

Test automation can automate some repetitive, but necessary tasks. But if you’re not careful, you can quickly fall into the rabbit hole of chasing failing tests and lose sight of the equally necessary exploratory questions: “Can our users easily complete the user journey?” “Are there potential bugs with this journey?” “Is the quality of this journey regressing?”

Tests are brittle because the underlying mechanics of XPaths, CSS selectors, element IDs, and other descriptors are often tightly coupled with automated tests. This is particularly painful when you have apps with dynamic locators or locators that aren’t necessarily unique, such as can be the case with Angular and React apps.

A machine-learning-driven testing solution like mabl handles apps with dynamic UIs to help testers focus on the human side of testing, which makes the testing role so unique and powerful in the first place.

“I trained a few journeys in my Angular app that required unique values for every execution and was surprised to see that mabl supported this and delighted that my tests completed successfully.”

– Cathy, Lead Test Engineer at Immuta

How does mabl do this? It’s all built into her test adaptation ability.


What information does mabl use to enable robust, adaptive tests?

As testers interact with the mabl trainer to create a test, under the covers, mabl captures your user journeys using our own proprietary domain-specific language. She also gathers a great deal of DOM element attributes, properties, and visual details (like XPaths, tag names, class attributes, text, and various contextual identifiers) to help identify conceptually equivalent elements in future test runs of the journey.

So now that she has an understanding of the user journey, as well as all this additional information, mabl knows enough about each action in the journey to identify the appropriate element again, or find likely replacements for it as the UI changes. When there’s only one likely candidate available, mabl will incrementally update her models for the corresponding step of the journey, so tests will stay up to date even after several successive UI changes.

Much of this information can even be applied to the same journey in other environments, so tests running through the same app will run consistently. As mabl gathers more information about replacement candidates across many apps, this will ultimately be used in more advanced models to prioritize future candidates across journeys and even across apps.

But the question is regarding robust changes; can mabl still adapt? What does mabl do when there’s no obvious right answer?

mabl uses the collected information to be experimental. Based on past identifications of elements, she can rank partial and uncertain matches. To verify if the experimental action was correct, mabl evaluates how the remainder of the journey unfolds.

For example, she considers whether assertions pass, whether she can complete subsequent actions, and the visual appearance of the resulting app state compared to previous runs. If mabl determines that her fix for the test was successful, she’ll let you know what the proposed fix was. From here, you can simply reject mabl’s fix for the journey if it was incorrect, and mabl will remember that for future runs. 

Enough talk, let’s see an example of this in Angular!

As mentioned at the onset, one of the difficulties with handling a variety of modern web frameworks like Angular and React is that they rely heavily on DOM manipulation and JavaScript execution. In particular, the DOM elements generated by these frameworks often include minimal and opaque attributes, making them hard to distinguish.

However, humans must be able to recognize how to take a particular action across iterations of the UI; mabl gathers some of the same contextual clues. Although element attributes may be insufficient to identify a particular element for interaction during a journey, there are a variety of other dynamic or computed properties to be used, like inner text and rendered location or size.

Consider a simple example of a dynamically generated list in an Angular app with ngFor (similarly with ng-repeat in AngularJS 1.x or an array of generated list elements in React):



In this example, we have a screen that shows a list of user roles in a hypothetical app where each role can be clicked to get a detailed description of the role. This gets instantiated as a series of list (<li>) elements, each containing an anchor (<a>) element with the clicks handled by Angular — the href attribute of each anchor is the same, self-referential, “#” value even though a click results in displaying a different role description for each through DOM manipulation by Angular JavaScript code. Just considering the element attributes, each element looks identical (e.g., <a _ngcontent-c5 href=”#”> or just <a href=”#”> in React), but the inner text of each differs.

We can train mabl to click on the roles in a specific order. On the bottom right is the mabl trainer, recording each step as we interact with our Angular app:



Below you’ll find the test output from the mabl app. You can see her collecting information at each step of the journey, then completing the test successfully (accompanying screenshots that mabl collects of the app at each step are shown on the right):



So when our hypothetical app adds an “A.3” role in the list ahead of “B.0”, mabl is still able to identify the “Role B.0” anchor element by using the inner text properties of the anchor elements, and updates what she knows about that element.



If the names of the roles were later changed (e.g., “B.0” becomes “Beta-Zero”), mabl would know that the correct element was last seen in the 4th position of the list (both by visual location and by last known XPath). So she would rank the “Beta-Zero” link as the most likely candidate and evaluate the rest of the journey to determine that she had made a correct choice and update her knowledge about the new text for the element.



With machine intelligence, mabl makes automated testing easy, low-maintenance, and available to every QA team. 

You can try mabl out in your own apps for free, at


Public link to Angular example:

Public link to corresponding React example:

ExecuteAutomation YouTube channel has now over 25,000+ subscribers

Dear friends,

I am pretty excited and happy for ExecuteAutomation that its YouTube channel, the heart and soul of ExecuteAutomation which is helping millions of people has now breached the 25,000+ subscribers mark.

Little history

ExecuteAutomation YouTube channel started on end of 2014 and featured very few videos which focused mainly Specflow and Selenium C# video, later from 2016 ExecuteAutomation YouTube video gained more popularity and the viewers demands increased with range of questions from across different tools not just with Specflow or Selenium.

Hence ExecuteAutomation, started to feature almost all the automation testing tools and practices videos for FREE such as

  • Coded UI Testing
  • Specflow with C#
  • Selenium with C#
  • Robotium
  • Appium
  • TFS
  • Jenkins
  • Coypu
  • Moq
  • Xamarin.UITest
  • Docker and more..

Marking one of the first YouTube channel to feature MOST VIDEOS EVER on automation testing.

At Present

Currently we have over 470+ videos with over 40+ playlist which talks about automation testing tools and technologies in much granular level.

Please visit ExecuteAutomation YouTube channel and start learning if you have not visited before !

Thank you again for making this happen !

Karthik KK

Generating Extent Report with Specflow and Selenium C#

In this article we will discuss how to generate Extent Report with Specflow and Selenium C#, this article is splitted into three different videos and this post will keep on updating everytime new video is released.

Extent Reports

ExtentReports is a logger-style API written for Java and .NET environments which allows creating HTML reports from tests.

Extentreport pseudocode – BDD Style

Here is the report we are going to generate in this mini series

Here is the complete video of the above discussion

Thanks for reading the post and watching the video!!!

Please leave your comments and let me know if there is anything I should update in this post.

Karthik KK

Angular automation with Protractor+Typescript+Cucumber is best seller course after upgrade !

Dear friends,

Couple of months back angular automation with Protractor + Typescript + Cucumber course was rated too low by many students due to the course becoming obsolete and many of its supporting plugins used in the course made the framework broken and unusable.

After many comments from students like you, we started upgrading the course to the latest and greatest framework, plugin and new topics under Tidbits section and finally, the course has aligned to what you were looking for. Now the course has bagged once again as the Best Seller course from Udemy. You can check out the course from here

About Course

Angular automation with Protractor + Typescript + Cucumber course is designed in such as way that anyone with basic knowledge in Typescript and selenium can get started with this course without any hiccups.

This course is the first ever course which covers Protractor automation with Typescript language, which in turn helps people to understand how easy it is to work with Typescript comparing to Javascript.

Please let me know if you are interested and I will share you the discount coupon code.


Karthik KK