Setting Up a Testing Undertaking in Protractor with Cucumber and Web page Object Mannequin – Grape Up

For a few years, when it got here to automating internet UI testing, Selenium was the king. And it’s protected to say it nonetheless is! As a broadly recognized and confirmed automation testing software, it’s usually a default alternative for a lot of software program initiatives. However does it imply one shouldn’t discover different applied sciences and frameworks? In fact not! On this article, I’ll talk about the details behind using Protractor and clarify easy methods to set it up for seamless use with Cucumber and Web page Object Mannequin.

The principle level behind utilizing Protractor is that it was developed primarily for testing Angular functions. Since Angular has its personal particular person properties – strategies, options, and synchronization, Protractor addresses these to make testing such apps simpler and extra dependable. It’s value mentioning that Protractor is a wrapper over webdriver.js – the official JavaScript implementation of Selenium Webdriver. What this implies is that in checks improvement specific Angular parts might be reached with out-of-the-box check framework strategies and it nonetheless seems to be much like what would have been coded in a typical Selenium mission. On high of that, Protractor is able to synchronizing with Angular, which additionally helps with the soundness of the checks.

The assumptions for organising the mission had been much like earlier endeavors with check automation initiatives – the construction must be clear (Web page Object Mannequin) and check scripts need to be clear and comprehensible, even for non-technical staff members (Cucumber and Gherkin). The selection of programming language fell on JavaScript since Protractor is a node.js utility and the opposite viable possibility, TypeScript, would require a bit extra coding. This time the mission will make the most of Visible Studio Code as IDE.

To start organising the mission, first, you’ll want to put in node.js. After putting in it in your machine, you possibly can confirm that the set up was profitable by typing in ‘node -v’ within the terminal. Whilst you’re at it, in the identical place you may as well confirm the Node Packages Supervisor, typing in ‘npm – v’. Then, kind in ‘npm set up -g protractor’ and confirm its profitable set up with ‘protractor –model’. Simply in case, you possibly can replace the driving force now and again through the use of the “internet driver-manager replace” command.

Our subsequent step will likely be organising the IDE for comfy work. First, in Visible Studio Code set up the “Cucumber (Gherkin) full assist” extension. As soon as that’s achieved, we’ve got to care for our dependencies. In our mission’s package deal.json file we’ll want to incorporate chai and chai-as-promised for assertions, cucumber, and protractor – all within the dependencies part. In devDependencies, we’ll want protractor-cucumber-framework to realize the purpose we’re striving for.

To have consolation and readability inside the improvement course of, one of many options that present it’s the capacity to rapidly lookup what code is executed behind every gherkin step. To realize that in a Protractor mission, we’ll have to specify Cucumber choices within the conf.js file. What is important is the trail to the steps folder. 

Then, within the settings.json file, we’ll have to specify the paths to folders containing step definitions and strategies which can be executed behind them. We will do that within the following method: 

After we do that, we are able to simply navigate by way of the mission by clicking the step/definition/technique/factor specified within the code with a CTRL or CMD button pressed. It’s a easy factor, however it could dramatically enhance productiveness and reduce the time spent on creating or debugging checks! 

Our subsequent premise that we have to sort out is working the checks by tags. Whereas including a tag to a characteristic file is fairly simple, the half the place these are run requires offering a path to Cucumber Function recordsdata within the conf.js file. 

As you possibly can observe within the above piece of code, the cucumberOpts part within the conf.js file requires a variable named ‘tags’ as an empty record. 

Whereas we’re at it, you will need to level out that the conf.js file must have a piece the place we specify the Cucumber as our testing framework: 

The general construction of the automated testing mission created in Web page Object Mannequin is analogous throughout applied sciences. An summary for Protractor might be noticed under:  

When you create all the mandatory recordsdata and end the configuration, it’s time to write the checks themselves. 

Since we’re working in BDD framework, let’s begin with a easy Function File with a easy state of affairs specializing in verifying a Registration type (with a tag for working it later) 

As soon as that’s achieved, we are able to specify what occurs in every step in /steps/registration.js: 

In that file, we first specify the trail to the file containing strategies which can be going to be referred to as in every of the step definitions. Then we’re calling assertion libraries and organising timeouts. 

Step definition implementation is fairly simple; the Cucumber key phrase precedes a regex and a parameter; the physique of a step calls a way from /pages/registration.js file. Normally, one step calls for only one technique however check steps may very well be extra intricate if want be. Discover that if a way returns a Boolean worth, we’re invoking assertion on the stage of a step definition (line 23). 

 Within the/pages/registration.js file, we have to specify a locator dictionary for parts that we’re going to work together with. You are able to do this within the following method: 

Please be aware the selectors used for finding the weather; you need to use varied out-of-the-box strategies for finding parts in Protractor, which have been extensively described within the official Protractor Information (link

The identical goes for strategies used to work together with parts:

(PS. Don’t retailer your login credentials within the check automation code… The above is only for demonstration functions) 

What occurs above is that we’re implementing strategies that we’ve referred to as in /steps/registration.js file, utilizing the weather we’ve put within the locator dictionary (highlighted in gentle blue) and interacting with them utilizing Protractor strategies (highlighted in purple). 

Then it’s time to run the checks. In VS Code, open a brand new terminal window and hit the “internet driver-manager begin” command. Webdriver ought to be up and working now. 

To run the check you’ve written and tagged accordingly, all you must do now could be you need to open one other new terminal window in VS Code and enter the command:  

protractor protractor.conf.js –cucumberOpts.tags=’@smoke1′ – tagging the specified characteristic accordingly. 

And there you’ve it! Now you’ve a prepared, arrange Protractor testing framework built-in with Cucumber, Web page Object Mannequin which you’ll be able to run with the assistance of tags. If you wish to discover out extra about Protractor, I encourage you to go to the Protractor web site, which incorporates complete documentation with code examples here.