CSS 测试
原文链接: CSS 测试
预备知识
- grunt
- PhantomJS
- CasperJS
我们要谈的不是TDD,而是一种CSS测试的形式,叫做Visual Regression Testing,使得我们可以从视觉上比较网站正确的版本(baseline)和开发版本(new)。过程很简单,就是给网页进行快照,然后比较像素来寻找区别。
##测试工具
我们将使用PhantomCSS进行测试。它是三个工具的强大结合:
1.PhantomJS
2.CasperJS
3.ResembleJS
同时,我们想把整个过程自动化,所以会把PhantomCSS集成到Grunt。
##搭建grunt
首先引入Anselm的Grunt PhantomCSS 项目到我们的Grunt项目中。因为它还没有NPM命名空间,所以只能直接从github上pull 下来。
npm i --save-dev git://github.com/anselmh/grunt-phantomcss.git
然后修改Gruntfile.js:
grunt.loadNpmTasks('grunt-phantomcss');
继续修改Gruntfile.js,对PhantomCSS进行一些配置:
phantomcss: {
options: {
mismatchTolerance: 0.05,
screenshots: 'baselines',
results: 'results',
viewportSize: [1280, 800],
},
src: [
'phantomcss.js'
]
},
稍微解释下:
- misMatchTolerance:
- screenshots:保存baseline图片的文件夹
- results:比较结束后,结果会放到这个文件夹
- viewportSize:
- src:测试文件的路径,相对于gruntfile
##测试文件
接下来,在我们的测试文件phantomcss.js文件中,就可以使用Casper.js了。PhantomCSS会启动一个PhantomJS浏览器,然后通过Casper.js进行各种导航和所需操作。
示例:
casper.start('http://localhost:9001/cta-link.html')
.then(function() {
phantomcss.screenshot('.cta-link', 'cta-link');
})
.then(function() {
this.mouse.move('.cta-button');
phantomcss.screenshot('.cta-link', 'cta-link-hover');
});
##作比较
有了baseline的图片后,我们就可以不断地运行测试了。