Search code examples
protractoraurelia

Protractor: asynchronous script timeout: result was not received in 11 seconds


I'm facing a problem from one of my tests when executing them. I'm testing a non-angular site written on aurelia. I've set some configurations regarding the timeouts and to ignore synchronization. Still I'm facing the timeout problem - the stack trace is added at the end of the post. Here is my setup:

Protractor: 4.0.9

protractor.conf.js:

        exports.config = {
      directConnect: true,
      // Capabilities to be passed to the webdriver instance.
      capabilities: {
        'browserName': 'chrome'
      },
      //seleniumAddress: 'http://localhost:4444/wd/hub',
      specs: ['test/e2e/dist/**/*.js'],

      plugins: [{
        package: 'aurelia-tools/plugins/protractor'
      }],

      // Options to be passed to Jasmine-node.
      jasmineNodeOpts: {
        showColors: true,
        defaultTimeoutInterval: 30000
      },
      framework: "jasmine2",
      onPrepare: function(){  //configure junit xml report

            var jasmineReporters = require('jasmine-reporters');
            jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter({
                consolidateAll: true,
                filePrefix: 'e2e-results',
                savePath: 'test/reports'
            }));

        }
    };

Here is my conf.js for my specific tests:

        exports.config = {
        directConnect: true,
        capabilities: {
        'browserName': 'chrome'
        },
        restartBrowserBetweenTests: true,
        //The address of a running selenium server.

        framework: 'jasmine2',
        jasmineNodeOpts: {
            showColors: true,
            defaultTimeoutInterval: 180000
          },

        //Here we specify the name of the specs files.
        specs: ['test/e2e/dist/**/*.js'],
        getPageTimeout: 120000,
        allScriptsTimeout: 120000,
        onPrepare: function() {
            browser.ignoreSynchronization = true;
            jasmine.DEFAULT_TIMEOUT_INTERVAL = 180000;

            by.addLocator('valueBind', function (bindingModel, opt_parentElement) {
              var using = opt_parentElement || document;
              var matches = using.querySelectorAll('*[value\\.bind="' + bindingModel +'"]');
              var result = undefined;

              if (matches.length === 0) {
                result = null;
              } else if (matches.length === 1) {
                result = matches[0];
              } else {
                result = matches;
              }

              return result;
            });
        }   
    }

And here is the beforeEach part of my test specification:

        beforeEach(function(){      
            browser.driver.get(URL);
            browser.driver.manage().window().maximize();
            browser.ignoreSynchronization = true;

            browser.driver.executeAsyncScript(
              'var cb = arguments[arguments.length - 1];' +
              'document.addEventListener("aurelia-composed", function (e) {' +
              '  cb("Aurelia App composed")' +
              '}, false);'
            ).then(function(result){
                console.log(result);
            });
        });

Stack trace

        <![CDATA[ScriptTimeoutError: asynchronous script timeout: result was not received in 11 seconds
      (Session info: chrome=53.0.2785.143)
      (Driver info: chromedriver=2.22.397933 (1cab651507b88dec79b2b2a22d1943c01833cc1b),platform=Windows NT 6.3.9600 x86_64)
        at WebDriverError (C:\Users\USER\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\error.js:26:26)
        at ScriptTimeoutError (C:\Users\USER\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\error.js:291:26)
        at Object.checkLegacyResponse (C:\Users\USER\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\error.js:639:15)
        at parseHttpResponse (C:\Users\USER\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\http\index.js:538:13)
        at C:\Users\USER\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\http\index.js:472:11
        at ManagedPromise.invokeCallback_ (C:\Users\USER\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:1379:14)
        at TaskQueue.execute_ (C:\Users\USER\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2913:14)
        at TaskQueue.executeNext_ (C:\Users\USER\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2896:21)
        at C:\Users\USER\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2820:25
        at C:\Users\USER\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:639:7
    From: Task: WebDriver.executeScript()
        at Driver.schedule (C:\Users\USER\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver.js:377:17)
        at Driver.executeAsyncScript (C:\Users\USER\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver.js:614:17)
        at Object.<anonymous> (C:\Users\USER\Documents\Git\src\Project\test\e2e\dist\testspec.js:33:18)
        at C:\Users\USER\AppData\Roaming\npm\node_modules\protractor\node_modules\jasminewd2\index.js:94:23
        at new ManagedPromise (C:\Users\USER\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:1082:7)
        at controlFlowExecute (C:\Users\USER\AppData\Roaming\npm\node_modules\protractor\node_modules\jasminewd2\index.js:80:18)
        at TaskQueue.execute_ (C:\Users\USER\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2913:14)
        at TaskQueue.executeNext_ (C:\Users\USER\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2896:21)
        at C:\Users\USER\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2820:25
        at C:\Users\USER\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:639:7
    From: Task: Run beforeEach in control flow
        at Object.<anonymous> (C:\Users\USER\AppData\Roaming\npm\node_modules\protractor\node_modules\jasminewd2\index.js:79:14)
        at attemptAsync (C:\Users\USER\AppData\Roaming\npm\node_modules\protractor\node_modules\jasmine-core\lib\jasmine-core\jasmine.js:1980:24)
        at QueueRunner.run (C:\Users\USER\AppData\Roaming\npm\node_modules\protractor\node_modules\jasmine-core\lib\jasmine-core\jasmine.js:1935:9)
        at QueueRunner.execute (C:\Users\USER\AppData\Roaming\npm\node_modules\protractor\node_modules\jasmine-core\lib\jasmine-core\jasmine.js:1923:10)
        at Spec.Env.queueRunnerFactory (C:\Users\USER\AppData\Roaming\npm\node_modules\protractor\node_modules\jasmine-core\lib\jasmine-core\jasmine.js:714:35)
        at Spec.execute (C:\Users\USER\AppData\Roaming\npm\node_modules\protractor\node_modules\jasmine-core\lib\jasmine-core\jasmine.js:371:10)
        at Object.fn (C:\Users\USER\AppData\Roaming\npm\node_modules\protractor\node_modules\jasmine-core\lib\jasmine-core\jasmine.js:2579:37)
        at attemptAsync (C:\Users\USER\AppData\Roaming\npm\node_modules\protractor\node_modules\jasmine-core\lib\jasmine-core\jasmine.js:1980:24)
        at QueueRunner.run (C:\Users\USER\AppData\Roaming\npm\node_modules\protractor\node_modules\jasmine-core\lib\jasmine-core\jasmine.js:1935:9)
        at QueueRunner.execute (C:\Users\USER\AppData\Roaming\npm\node_modules\protractor\node_modules\jasmine-core\lib\jasmine-core\jasmine.js:1923:10)
    From asynchronous test: 
    Error
        at Suite.<anonymous> (C:\Users\USER\Documents\Git\src\Project\test\e2e\dist\testspec.js:22:2)
        at addSpecsToSuite (C:\Users\USER\AppData\Roaming\npm\node_modules\protractor\node_modules\jasmine-core\lib\jasmine-core\jasmine.js:867:25)
        at Env.describe (C:\Users\USER\AppData\Roaming\npm\node_modules\protractor\node_modules\jasmine-core\lib\jasmine-core\jasmine.js:836:7)
        at jasmineInterface.describe (C:\Users\USER\AppData\Roaming\npm\node_modules\protractor\node_modules\jasmine-core\lib\jasmine-core\jasmine.js:3576:18)
        at Object.<anonymous> (C:\Users\USER\Documents\Git\src\Project\test\e2e\dist\testspec.js:15:1)
        at Module._compile (module.js:413:34)
        at Object.Module._extensions..js (module.js:422:10)
        at Module.load (module.js:357:32)
        at Function.Module._load (module.js:314:12)]]>

Any help would be appreciated, thank you.


Solution

  • I have found a soultion a little while ago but I forgot to post the answer. So here it is.

    There is a Protractor plugin made by Aurelia. As I mentioned in my question the application which I'm automating is written via the Aurelia framework. So as I stared using this plugin and especially the loadAndWaitForAureliaPage method for loading pages everything started to work correctly.