Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I have a problem while running more than one test in protractor : Timed out waiting for asynchronous script result after 60010 s The code of tutorial script which is executed just after the login script : Here the code of login script + Tutorial script

Here the code i'm using in my config file from A Code proposed in another question but it didn't solve my problem !

onPrepare: function() {
  return browser.getProcessedConfig().then(function(config) {
    var browserName = config.capabilities.browserName;
    browser.manage().timeouts().setScriptTimeout(60000);

  });

Here the config file

PS : Even if i put an incorrect location for the element i have the error of time out and not this element cannot be found ! as if that line of code "the click into tutorial button" is never executed

  • Is it because tutorial make an ajax call ?

Error Here my html code :

</div></md-card-content> </md-card><!-- end ngIf: !expandChart --> </div> </div> </div></md-content> </div></div> <!-- Google Analytics: change UA-XXXXX-X to be your site's ID --> <!--<script>--> <!--!function(A,n,g,u,l,a,r){A.GoogleAnalyticsObject=l,A[l]=A[l]||function(){--> <!--(A[l].q=A[l].q||[]).push(arguments)},A[l].l=+new Date,a=n.createElement(g),--> <!--r=n.getElementsByTagName(g)[0],a.src=u,r.parentNode.insertBefore(a,r)--> <!--}(window,document,'script','https://www.google-analytics.com/analytics.js','ga');--> <!--ga('create', 'UA-XXXXX-X');--> <!--ga('send', 'pageview');--> <!--</script>--> <script src="scripts/vendor.js"></script> <script src="cordova.js"></script> <script src="scripts/scripts.js"></script> <script src="https://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/sha1.js"></script> <script src="https://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/sha256.js"></script> <script src="https://crypto-js.googlecode.com/svn/tags/3.1.2/build/components/enc-base64-min.js"></script> <div class="introjs-overlay" style="top: 0;bottom: 0; left: 0;right: 0;position: fixed;opacity: 0.8;"></div><div class="introjs-helperLayer " style="width: 538px; height:366px; top:64px;left: 195px;"></div><div class="introjs-tooltipReferenceLayer" style="width: 538px; height:366px; top:64px;left: 195px;"><div class="introjs-tooltip" style="left: 546px;"><div class="introjs-tooltiptext">Watchlist view. Swipe the row in the grid to the left to show the delete action.</div><div class="introjs-bullets"><ul><li><a class="active" href="javascript:void(0);" data-stepnumber="1">&nbsp;</a></li><li><a href="javascript:void(0);" data-stepnumber="2">&nbsp;</a></li><li><a href="javascript:void(0);" data-stepnumber="3">&nbsp;</a></li><li><a href="javascript:void(0);" data-stepnumber="4">&nbsp;</a></li><li><a href="javascript:void(0);" data-stepnumber="5">&nbsp;</a></li><li><a href="javascript:void(0);" data-stepnumber="6">&nbsp;</a></li><li><a href="javascript:void(0);" data-stepnumber="7">&nbsp;</a></li><li><a href="javascript:void(0);" data-stepnumber="8">&nbsp;</a></li></ul></div><div class="introjs-progress" style="display: none;"><div class="introjs-progressbar" style="width:12.5%;"></div></div><div class="introjs-arrow left" style="display: inherit;"></div><div class="introjs-tooltipbuttons"><a class="introjs-button introjs-skipbutton" href="javascript:void(0);">Don't show it again!</a><a href="javascript:void(0);" class="introjs-button introjs-prevbutton introjs-disabled" tabindex="-1">Previous</a><a href="javascript:void(0);" class="introjs-button introjs-nextbutton">Next</a></div></div></div></body></html>?

Appium log

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
1.0k views
Welcome To Ask or Share your Answers For Others

1 Answer

1. Regarding with route check

In case after first spec, user got logged in and the route changed. Make sure all are navigated before any test executed.

expect(browser.getCurrentUrl()).toContain('#/the_route_of_logged_in'); 
// '#/' is just illustration. You can remove it to make it shorter
// => like this ...toContain('the_route_of_logged_in');

2. Regarding with click on tutorial

browser.wait(EC.elementToBeClickable(tutorial), 10000);

Do the browser.wait with EC for click-able button before attempt to click it (it seem like you got good approach here)

=> SUMMING UP you can give this a try:

'user strict';

var EC = protractor.ExpectedConditions;

describe('tutorials', function () {

    it('should make click into tutorial button', function () {

        expect(browser.getCurrentUrl()).toContain('the_route_of_logged_in');

        var tutorial = $('.introjs-nextbutton'); 
        browser.wait(EC.elementToBeClickable(tutorial), 8000, 'Timed out');
        tutorial.click();

        browser.sleep(8080); // regardless we are not reaching this point. But I will suggest to reduce this sleep time like 1000 (1s).
    });
});

3. (optional) in case 2 points above does not help

In your all of your spec login-spec.js and tutorial-spec.js. Add process.nextTick(done); in a afterAll() block to ensure if there are no any Jasmine Reporters being stuck after a spec.

describe('foo', function(){

  afterAll(function(done){
    process.nextTick(done);
  });  

  it('should bar...', function() {});
}

P.S. Beware that I am totally have no clue if my suggestions/approach could help. As debugging with e2e-test always painful... because we are always likely not knowing "where are the errors come from". So all I can do is giving you suggestions. (sometimes it took me hours to just observe the behaviors of browser to identify an issue of e2e-test)

And DO NOT COPY PASTE my code into your code. I typed it with the images you provide, I can make some typos there.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...