angular / protractor

E2E test framework for Angular apps
http://www.protractortest.org
MIT License
8.75k stars 2.31k forks source link

browser.wait waits indefinitely after performing browser.restart #4680

Open ash-lionell opened 6 years ago

ash-lionell commented 6 years ago

Referencing https://github.com/angular/protractor/issues/3881

Hi there!

I am facing a similar issue, when using browser.restart. In my case, a subsequent browser.wait call waits almost indefinitely, and times out after an obscene amount of time, although the page is loaded and visible the whole time.

I perform the restart operation in the Before hook of Cucumber:

Before(function(scenario) { let currFeatureName=scenario.sourceLocation.uri; console.log('feature : ',currFeatureName); if(featureName===null) featureName=currFeatureName; else if(currFeatureName!==featureName) return browser.restart(); });

Followed by a Given, where I perform a browser.get, followed by a browser.wait, before interacting with my element:

Given(/^user is logged in SNAPP$/,function(){ console.log('started : '); browser.ignoreSynchronization = true; browser.driver.get(browser.params.logon.url); browser.wait(until.visibilityOf(element(by.id('logonDialogLbl'))),1000,'waiting to load url'); logonpage.logon(); browser.sleep(2000);

It is seemingly getting stuck in the browser.wait call, and times out, after waiting for an enormous amount of time.

misupopo commented 6 years ago

I also have the same problem... In my case, protractor testing progress will be stopped after when the page changes.

mt-micky commented 6 years ago

Similar issue, which seems to happen to me since Chrome 64

ghost commented 6 years ago

Same here. It was working since the Chrome 64 update. Now when I perform a browser.get('someUrl') and do a subsequent browser.wait it stalls. I now have to logout and log back in prior to each of my tests. This is cumbersome.

marcoturi commented 6 years ago

same issue as @philsnyder

I get " Error: function timed out after 5000 milliseconds" on the following code:

Given(/^I open exercise list page$/, async () => {
    await browser.get('/#/exercise-list');
    await browser.wait(EC.urlContains('exercise-list'), 1000);
});

I'm using cucumber. It fails only locally, on chrome 64 (headless or not). If I use Firefox (locally) or a docker image, or chrome 63, I have no errors. Increasing timeout doesn't change anything, also if I run the code not in headless mode, i can clearly see that the page is open.

gologox commented 6 years ago

Same issue here. Calling a subsequent browser.wait after a browser.get() stalls. Chrome 64.

scipper commented 6 years ago

same error like @gologox since Chrome 64.

scipper commented 6 years ago

Seems to be fixed with Chrome 65.

hassankaz commented 6 years ago

I'm on chrome 65 but the issue is still there.