Wednesday 12 February 2020

Protractor Cucumber setup

Protractor tool use for automation tool for angular JS. Cucumber is good framework for Agile methodology

Node should be installed in your machine

Open CMD  at root folder where you will add all your code mentioned below in step 4,5


1.... npm install -g protractor
npm install -g cucumber

2.If you are in proxy run below command


node ./node_modules/protractor/bin/webdriver-manager --
proxy url update--versions.standalone "version"--versions.chrome 
"version"--ignore_ssl

Otherwise use below command

webdriver- manager update

3.Now start webdriver server,
if you are not in proxy use below command,

webdriver- manager start

4. use below conf.js

var chai = require("chai");
var chaiAsPromised = require("chai-as-promised");


exports.config = {
  // The address of a running selenium server.
 seleniumAddress: 'http://localhost:4444/wd/hub',
 //directConnect: true,
 frameworkPath: require.resolve
('protractor-cucumber-framework'),
 framework: 'custom',
 // setting time outs
 getPageTimeOut : 200000,
 allScriptsTimeout : 500000,
 setDefaultTimeout: (60 * 1000),

  // Capabilities to be passed to the
 webdriver instance.
  capabilities: {
    browserName: 'chrome',
   //args : '--disable-extensions',
  resultJsonOutputFile: 'report.json',
  },
  
 
 

  specs: [
   'Feautures/app.feature'
  ],
  
cucumberOpts: {
 require: 'Feautures/Step_Definition
/my_step_definitions.js',
 //format: ['json:reports/results.json', 'pretty'],
 tags: false,
 //format: ["node_modules/cucumber-pretty"],
 profile: false,
 'no-source': true,
 strict: true,
  'no-colors': true,
 },

   
};

5. use below app.feature (path mentioned in step 5 code)

@regression
Feature: first test cases

Scenario: Home Screen validation
    Given As I launch room77 app
    Then I should see logo
 Then I should see button

6. use below step definition (path mentioned in step 5 code)

//features/step_definitions/my_step_definitions.js
//var {defineSupportCode} = require('cucumber');
var chai = require('chai');
var expect = chai.expect;
var chaiAsPromised = require('chai-as-promised');
var {setDefaultTimeout} = require('cucumber');


chai.use(chaiAsPromised);
var expect = chai.expect;

module.exports = function() 
{
  this.Given(/^I go to "([^"]*)"$/, function(site, callback) {
//   browser.ignoreSynchronization = true;
console.log("text is1ww :")
    browser.get(site);
callback();
  });

  this.When(/^I click$/, function() {
   
   browser.ignoreSynchronization = true;
   console.log("text is1 :")
    element(by.xpath('//input[@class="gNO89b"]')).click();
 
  });

  
 
  
  this.Then(/^I should see button$/, function( callback) {
  browser.sleep(10000);
   browser.ignoreSynchronization = true;
  var el = element(by.xpath('//div/p/input[@class="btn"]'));
                    browser.manage().timeouts().implicitlyWait(2000);
                     el.isPresent().then(function (result) {
                         console.log("Button Exist:" + result);

        
                    });
     callback();
  });
  

 
 
 
 this.Given(/^As I launch room77 app$/, function (callback) {
        browser.get("https://www.room77.com");
       // return browser.waitForAngular();
    browser.ignoreSynchronization = true;
    callback();
    });
 

 
    this.Then(/^I should see logo$/, function (callback) {
  browser.sleep(10000);
  browser.ignoreSynchronization = true;
        var el = element(by.xpath('//img[@class="logo"]'));
                    browser.manage().timeouts().implicitlyWait(2000);
                     el.isPresent().then(function (result) {
                         console.log("Logo Exist:" + result);
                    });
     callback();
    });

};

7. Now run protractor with below command,

protractor conf.js

You will get below result,

Remember to run step 7,
 you need to run step 2 and 3 always...

Happy learning :)


No comments:

Post a Comment