我正在用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);
.....
答案 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()
而产生此错误。我删除了它。