rajasekaran rj
rajasekaran rj

Reputation: 53

Protractor for both angular and non angular

I am new to Protractor. I am using Protractor to test both Angular and Non-Angular applications. My testing sequence would be

  1. Testing Non-Angular log-in pange
  2. Once logged in, Testing Angular Home Page.

I tried the below scripts but it throws me an error.

Config.js

exports.config = {

  seleniumAddress: 'http://localhost:4444/wd/hub',

capabilities: {

    'browserName': 'firefox'
  },
  specs: ['spec1.js'],
  jasmineNodeOpts: {
    showColors: true
  }
};

Spec1.js

describe('angularjs homepage', function() {
  it('Availity', function() {

    browser.driver.get('https://qa-apps.availity.com/availity/web/public.elegant.login');

    browser.driver.findElement(by.name('userId')).sendKeys('xxxx');
    browser.driver.findElement(by.name('password')).sendKeys('yyyy');

    browser.driver.findElement(by.id('loginFormSubmit')).click();

browser.driver.sleep(1);
browser.waitForAngular();

element(by.className('navbar-brand-availity')).click();


  });
});

Any help on above issue is highly appreciated.

Upvotes: 2

Views: 2480

Answers (2)

Ruslan
Ruslan

Reputation: 10147

you can do login in your protractor configuration file (config.js), with the onPrepare function e.g.

exports.config = {
    onPrepare: function () {

        browser.baseUrl = browser.params.baseUrl;
        browser.driver.get(browser.baseUrl + 'Account/Login');

        browser.driver.findElement(by.id('UserName')).sendKeys('username');
        browser.driver.findElement(by.id('Password')).sendKeys('PASSWORD');
        browser.driver.findElement(by.id('Login')).sendKeys(protractor.Key.ENTER);

        return browser.driver.wait(function () {
            return browser.driver.getCurrentUrl().then(function (url) {
                return /home/.test(url);
            });
        }, 90000);
    },
};

Upvotes: 0

alecxe
alecxe

Reputation: 473873

You have to have the sync off when you are working with the non-angular part and then, turn the sync on again after you are logged in. Something like:

describe('angularjs homepage', function() {
  beforeEach(function () {
    browser.ignoreSynchronization = true;

    browser.driver.get('https://qa-apps.availity.com/availity/web/public.elegant.login');

    browser.driver.findElement(by.name('userId')).sendKeys('xxxx');
    browser.driver.findElement(by.name('password')).sendKeys('yyyy');

    browser.driver.findElement(by.id('loginFormSubmit')).click();
    browser.driver.sleep(1);

    browser.ignoreSynchronization = false;
    browser.waitForAngular();
  });

  it('Availity', function() {
      element(by.className('navbar-brand-availity')).click();
  });
});

Upvotes: 2

Related Questions