许多量角器测试用例在出现故障时暂停/调试/打印堆栈跟踪?

时间:2016-01-26 00:57:18

标签: javascript protractor

通过几十个自动化测试和一个具有大量可变性的应用程序,我正在寻找最简单的方法来快速追踪错误并保持测试用例的良好维护。我希望能够并行运行多个测试并在其失败点暂停任何测试用例,这样我就可以在需要时轻松修改定位器/功能。

我将点击包含在全局函数中,以便我可以进行一些额外的检查......

onPrepare: function() {
    global.clickElement = function (elem) {
        isElemDisplayed(elem);
        elem.click();
        checkForErrorScreen();
    });
}

如果在我点击它之前没有显示某个元素或发生任何失败,我想立即:

  1. 暂停浏览器
  2. 截取屏幕(以防万一/日志记录)
  3. 打印错误/堆栈跟踪
  4. 由于@holdfenytolvaj

    ,我发现我可以在“规格失败时”暂停浏览器
    onPrepare: function() {
        jasmine.getEnv().addReporter({
            specDone: function (spec) {
                if (spec.status === 'failed') {
                    console.dir(spec.failedExpectations.length);
                    console.log(spec.failedExpectations[0].message);
                    console.log(spec.failedExpectations[0].stack);
                    browser.pause()
                }
            }
        });
    }
    

    这实际上会暂停什么类型的失败?我想暂停任何失败。

    此外,我可以通过

    立即吐出故障/跟踪有时
    jasmineNodeOpts: {
        realtimeFailure: true
    },
    

    同样,这实际上会显示故障/堆栈的哪些类型的故障?

    检查元素是否使用我的全局点击包装器显示,我永远无法完全追溯它失败的功能/定位器。所以我查看调试器中的ElementFinder obj,如果我想记录它,可以看到只是子定位器

    var elem = $('div.parent').$('div[ng-show="child"]');
    
    function isElemDisplayed(elem) {
        var locator = elem.parentElementArrayFinder.locator_.value; // 'div[ng-show="child"]'
        //check isDisplayed()...
    }
    

    有没有办法显示链接元素的整个定位器或处理此问题的完全不同的方法,以便我可以立即显示哪个定位器失败?

    这些只是我通过谷歌尝试过的一些方法。我真的在寻找你们用来加快调试速度的提示/约定/片段。

0 个答案:

没有答案