Tag: testing

cuclogo

Working with Cucumber Hooks to Initialize and Teardown tests

In our last post we discussed working with multiple data using DataTable and Custom classes of DataTable, in this post we will discuss working with cucumber hooks and how helpful it is to initialize and teardown different test artifacts

Cucumber hooks

If you are from Specflow background, you might have noticed there are different types of hooks available like

But unfortunately in cucumber for Java we only have two hooks

  • @After
  • @Before

Limitation in cucumber for Java

In Specflow, you can call hooks for each and every steps, features, scenario, scenario block or whole test run, but its not possible with cucumber for Java

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.

Thanks,
Karthik KK

cuclogo

Working with multiple data using DataTable in Cucumber for Java

In our last post we discussed getting started with cucumber for Java, in this post we will discuss working with multiple data using DataTable in Cucumber for Java. We have already discussed about working with multiple data in Specflow of C#, which has Table class, but here in Cucumber for Java they have class named DataTable.

Working with multiple data in Cucumber

We might need to supply multiple data instead of hardcoded value passed in steps from feature files, this happens most of the time while working with your project

This can be done using DataTable class available in Cucumber, basically DataTables are of type List<List<String>>

Table in the scenario looks something like this

Here is the complete videos of the above discussion

Working with DataTable using DataTable.raw()

Working with DataTable using custom class

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.

Thanks,
Karthik KK

cuclogo

Getting started with Cucumber for Selenium

In this post we will discuss about getting started with Cucumber

Cucumber

Cucumber is a tool which helps Behavioral Driven Development (BDD).

Cucumber as a tools support different language implementation like Java, JS, PHP, Ruby, C# etc.

We have already discussed about C# based implementation of cucumber in our ExcuteAutomation channel a lot using tool called Specflow

Installation pre-requisite

In this video series, I am going to use IntelliJ IDE running on Windows 10 operating system, but you can use any IDE you like

Along with that we need following JAR files

  • Cucumber-core
  • Cucumber-java
  • Cucumber-java-deps
  • Cucumber-jvm
  • Gherkin
  • Selenium (and its related jars)

Here is the complete videos of above discussion

Video 1

Video 2

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.

Thanks,
Karthik KK

cuclogo

An Introduction to Cucumber for Java

In this post we are going to discuss about cucumber for Java implementation, well, from this post, we are starting an all new series of Cucumber with Selenium video series as well as posts as a discussion.

Introduction

BDD – Behavioral Driven Development is based on Test Driven Development (TDD) and it aims to bridge the gap between Business analyst and developers.

BDD not only bridges the gap between business analyst and developers but also between

  • Manual QA with Automation testers (who write BDD)
  • Manual QA with Developers

BDD seems to be like a plan text, but they have their own syntax based on certain tools (which we will discuss next)

BDD Supported tools

There are many tools available to support BDD, some most famous tools are

  • Cucumber
  • Jbehave
  • Nbehave
  • SpecFlow

All the above tools are used in conjunction with many different platforms and languages like JAVA, C#, Ruby, Python, Jruby etc

But all the above tools have one language in common, which is Gherkin

Gherkin

  • Gherkin is the format for Cucumber specification.
  • It is a business readable, Domain specific language which will let anybody to understand the software behavior easily (effortlessly), since they are PLAIN TEXT.
  • Gherkin has some spaces and indentation to define structure.
  • Gherkin has very few syntax which make the parser (the tool which uses Gherkin) to behave based on the structure.
  • The syntax of Gherkin is very simple and are pretty readable as plain text

Gherkin Syntax

Here are few syntax of Gherkin

  1. Feature
  2. Background
  3. Scenario
  4. Given
  5. When
  6. Then
  7. And
  8. But
  9. Scenario outline
  10. Examples
  11. Scenario Templates

It looks something like this

Here is the complete video of the above discussion

Read more

dockercompose

Setting Selenium grid with Docker compose

In our last post on docker compose, we discussed what docker compose is and how to work with docker compose in much greater working detail.

In this post we will go a step further to configure selenium grid with docker compose. We have also discussed about configuring and working with Selenium Grid using Docker in greater detail in our executeautomation, please go ahead and read the article from here

Here is the complete video to configure and work with Docker compose for Selenium grid

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.

Thanks,
Karthik KK

brokenlinks

Identifying broken links with Selenium C#

In this post we will discuss one of the common question asked by many readers of ExecuteAutomation, which is the topic name.

Its actually fairly very simple though, I just wrote 10 lines of code to achieve it (you might have even better solution than one I have)

So, here is the pseudo code

  1. Navigate to the URL of site you are interested in
  2. Get all the links of page using FindElements(By.Tag(“a”)) method
  3. Iterate through the page URLs and get the attributes href using GetAttribute(“href”) method
  4. Use Simple WebRequest and HttpWebResponse class to get the page response and status code.

So, here is the output

Here is the source code

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.

Thanks,
Karthik KK

specflow

Parallel execution with Specflow 2.0 + NUnit + Selenium

In the last post we discussed how to work with Specflow 2.0 parallel execution, in this post we will discuss how to run Multiple tests in parallel in multiple browser same time using Specflow + NUnit + Selenium.

Problem with Selenium WebDriver object while running Specflow test in Parallel

Since we will be using selenium webdriver object in many Specflow step definitions and while running tests in parallel, we will encounter NullReferenceException , in order to resolve the problem, we need to use two important techniques

  • Context injection (dependency injection)
  • IOC Container

IOC Container

  • In software engineering, inversion of control (IoC) is a design principle in which custom-written portions of a computer program receive the flow of control from a generic framework.
  • A software architecture with this design inverts control as compared to traditional procedural programming: in traditional programming, the custom code that expresses the purpose of the program calls into reusable libraries to take care of generic tasks, but with inversion of control, it is the framework that calls into the custom, or task-specific, code.

-Source : Wikipedia

So how code looks like for IOC Container?

Here is the complete source code in GitHub https://github.com/executeautomation/SpecflowSeleniumParallel

Here are the complete videos of the above discussion

Video 1

Video 2

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.

Thanks,
Karthik KK