量角器/ Jasmine2 - 在指定的超时内未调用异步回调

Mic*_*hal 6 javascript testing error-handling protractor jasmine2.0

我在elen测试中遇到问题,我在selenium网格上运行测试.有时候测试失败了defaultTimeoutInterval

试图解决它以某种方式改变defaultTimeoutInterval到更高的值,defaultTimeoutInterval但结果是等待更长但错误是相同的.

Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
Run Code Online (Sandbox Code Playgroud)

测试失败的示例规范:

var LoginPage = require('../ pages/login_page.js'); var UsersPage = require('../ pages/users_page.js'); var WelcomePage = require('../ pages/welcome_page.js');

exports.config = {
    chromeOnly: true,
    chromeDriver: '../node_modules/.bin/chromedriver',
    framework: 'jasmine2',
    capabilities: {
        'browserName': 'chrome',
        shardTestFiles: true,
        maxInstances: 3
    },
    specs: ['../e2e/protractor/spec/*.js'],
    jasmineNodeOpts: {
        showColors: true,
        defaultTimeoutInterval: 30000,
        isVerbose: true,
        includeStackTrace: true,
    },
Run Code Online (Sandbox Code Playgroud)

任何人都可以提供任何合理的解决方案如何处理/避免它并解释为什么会发生?

Pri*_*har 6

我建议在it块中有一个回调函数,它将确保在此之前执行所有异步代码.例如:

it('verifies counter on active tab', function (done) {
  var usersPage = new UsersPage();
  browser.wait(EC.visibilityOf(usersPage.firstRow), waitTimeout);

  usersPage.rowsCount.count()
    .then(function (count) {
        var text = usersPage.activeTab.getText();
        expect(text).toContain('Active' + ' (' + count + ')');
        done();
     });
});
Run Code Online (Sandbox Code Playgroud)