test.success中的PhantomCSS未定义对象

时间:2014-06-11 19:04:24

标签: javascript casperjs phantomcss

我正在用PhantomCSS编写测试脚本,但我遇到了错误。我已经运行过一次脚本了,我创建了基线截图。现在,当我尝试再次运行它时,它会创建.diff.png图像,但随后会抛出错误:

TypeError: 'undefined' is not an object (evaluating 'test.success')
/path/to/phantomcss.js:426
FAIL TypeError: 'undefined' is not an object (evaluating 'test.success')
#    type: error
#    file: visual.js
#    subject: false
#    error: "TypeError: 'undefined' is not an object (evaluating 'test.success')"
#    stack: in anonymous() in /path/to/phantomcss.js:426
FAIL 1 test executed in 4.035s, 0 passed, 1 failed, 0 dubious, 0 skipped.

我注释掉了我的大部分phantomcss.init()代码,但这就是我留下的内容:

var phantomcss = require('/path/to/phantomcss.js');

phantomcss.init({
    failedComparisonRoot: './diffs'
});

casper.start(url);

casper.viewport(1024, 768);

casper.then(function() {
    casper.wait(2500, function() {
        phantomcss.screenshot('#app-bar', 'App_bar_initial');
        phantomcss.screenshot('.selected', 'Selected_Menu_Initial');

    });
});

casper.then(function() {
    phantomcss.compareAll();
})

casper.then(function() {
    casper.test.done();
})

casper.run(function() {
    phantom.exit(phantomcss.getExitStatus());
});

编辑:来自phantomcss.js的第426行是:

function waitForTests(tests){
casper.then(function(){
    casper.waitFor(function(){
        return tests.length === tests.reduce(function(count, test){
            if (test.success || test.fail || test.error) {
                return count + 1;
            } else {
                return count;
            }
        }, 0);
.....

3 个答案:

答案 0 :(得分:2)

发现问题。如果您已使用NPM安装它,则必须指定libraryRoot

var phantomcss = require('../node_modules/phantomcss/phantomcss.js');

phantomcss.init({
  libraryRoot: 'node_modules/phantomcss',
});

答案 1 :(得分:0)

实际上,如果您的screenshots目录丢失,我发现phantomCss会引发此异常。

这可以指定如下:

phantomcss.init({
    screenshotRoot: './spec/phantomcss/screenshots',
    failedComparisonsRoot: './spec/phantomcss/failures',
    comparisonResultRoot: './spec/phantomcss/results'
});

答案 2 :(得分:0)

由于phantomcss.turnOffAnimations()而产生此错误。我删除了它。