CTC
CTC

Reputation: 451

Protractor - click causing angular to freeze

I'm having trouble with a protractor test.

Overview of the test

  1. Click button to show a form
  2. Fill out the form
  3. Click another button to save the form - this should call a function in one of my controllers that makes an http call and then reloads some models on the page.

When clicking the final "save" button, everything seems to freeze and the attached ng-click function never seems to get called. I don't see any errors in the console when I use browser.pause. I can see that the button is in fact clicked, but at that point, nothing seems to happen.

Final button definition:

this.addConfigFilterLineButton = element(by.css('[ng-click="cflCtrl.create();"]'));

Function that fills out the form:

this.addNewConfigFilterLine = function (cb) {
  var self = this;
  var deferred = protractor.promise.defer();

  browser.executeScript('window.scrollTo(0,10000);')
  .then(function(){
    self.newConfigFilterLineButton.click();

    // code that fills out the form

    self.addConfigFilterLineButton.click();

    browser.waitForAngular()
    .then(function(){
      deferred.fulfill();
    });
  });

  return deferred.promise;
};

Spec

it('should allow creating a new ConfigFilterLine', function (done) {
  var length;
  settingsPage.configFilterLines.count()
  .then(function(count){
    length = count;
    return settingsPage.addNewConfigFilterLine();
  })
  .then(function(){
    expect(settingsPage.configFilterLines.count()).to.eventually.equal(length+1);

    done();
  });
});

I've tried with browser.waitForAngular and without it, and it doesn't seem to matter. When the button is clicked, nothing happens.

Any ideas would be helpful. Let me know if there's more info I can provide.

Upvotes: 1

Views: 1264

Answers (1)

John Barton
John Barton

Reputation: 155

Instead of using

this.addConfigFilterLineButton = element(by.css('[ng-click="cflCtrl.create();"]'));

try something more like this:

this.addConfigFilterLineButton = element(by.id('id-of-final-button'));

My guess is that Protractor isn't correctly finding "addConfigFilterLineButton".

Upvotes: 0

Related Questions