Protractor times out waiting for sync with page when using $resource
This is a known issue, but there is a temporary workaround. Set ptor.ignoreSynchronization = true
.
For example:
describe('Testing Protractor', function() { var draftList; var ptor; beforeEach(function() { ptor = protractor.getInstance(); ptor.ignoreSynchronization = true; }); it('should count the number of drafts', function() { ptor.get('#/'); draftList = element.all(by.repeater('newsletter in drafts')); expect(draftList.count()).toEqual(2); });});
browser.ignoreSynchronization = true;
worked out for me.
I'm using Protractor 3.3.0 and to get this to work in my test I had to defer the ignore synchronisation until after I had done the setup.
So in my beforeEach I call my action:
var searchBox = element(by.css('#inpt_search'));searchBox.sendKeys('test');
I then have to wait for the mock backend to populate the view (I'm not happy about these sleep
calls so if anyone has a better way of doing this please comment, I can't get expectedConditions.presenceOf
to work as it's part of the same bug) using browser.sleep(500)
.Then in the test I set browser.ignoreSynchronization = true
which unblocks whatever is blocked and sees the browser content.
describe('standard search', function (){ beforeEach(function (){ openApp(); var searchBox = element(by.css('#inpt_search')); searchBox.sendKeys('test'); browser.sleep(500); }); it('should work or summat', function () { browser.ignoreSynchronization = true; var fileItems = element.all(by.repeater('item in list')); expect(fileItems.count()).toEqual(50); });});