。 >视觉回归测试采用另一种方法来测试网页。该测试不仅要确保DOM中存在某些元素或文本值,还可以打开页面,并检查此特定块是否看起来完全像您希望它到
>。只是为了确保您获得了差异,让我给您一个例子。想象一下,您希望您的网站向访问者打招呼:<span><span><span><div</span>></span>Hello, %username%!<span><span></div</span>></span></span>
>正确,即确保元素不会被显示:无或有人并没有意外地覆盖文本的颜色。有许多工具可以做到这一点,但是今天我们将特别研究一个选项 - 幻影。
什么是phantomcss?casperjs - 一种与Phantomcss或Slimerjs浏览器进行交互的工具。它允许您打开页面并执行用户交互,例如单击按钮或输入值。此外,Casperjs提供了自己的测试框架和捕获页面屏幕截图的能力。
Phantomjs 2或Slimerjs - 两个不同的无头浏览器,两种无头浏览器都可以与Phantomcs一起使用。无头浏览器就像没有用户界面的普通浏览器一样。
设置测试项目
>要安装Web服务器,初始化NPM项目并安装HTTP-Server软件包。
运行服务器,让我们定义一个简单的NPM脚本。只需将以下脚本部分添加到package.json
<span><span><span><div</span>></span>Hello, %username%!<span><span></div</span>></span></span>
>现在您可以从项目文件夹中运行NPM启动,并且索引页将在默认地址http://127.0.0.1:8080上访问。启动服务器,现在让它运行。我们将在一段时间内需要它。
>安装Phantomcss很容易,您需要做的就是在项目中添加一些依赖项:
<span><span><!doctype html></span> </span><span><span><span><html</span>></span> </span> <span><span><span><head</span>></span> </span> <span><span><span><style</span>></span><span> </span></span><span><span> <span><span>.tag</span> { </span></span></span><span><span> <span>color: #fff; </span></span></span><span><span> <span>font-size: 30px; </span></span></span><span><span> <span>border-radius: 10px; </span></span></span><span><span> <span>padding: 10px; </span></span></span><span><span> <span>margin: 10px; </span></span></span><span><span> <span>width: 500px; </span></span></span><span><span> <span>} </span></span></span><span><span> </span></span><span><span> <span><span>.tag-first</span> { </span></span></span><span><span> <span>background: lightcoral; </span></span></span><span><span> <span>} </span></span></span><span><span> </span></span><span><span> <span><span>.tag-second</span> { </span></span></span><span><span> <span>background: lightskyblue; </span></span></span><span><span> <span>} </span></span></span><span><span> </span><span><span></style</span>></span> </span> <span><span><span></head</span>></span> </span> <span><span><span><body</span>></span> </span> <span><span><span><div</span> class<span>="tag tag-first"</span>></span>The moving finger writes, and having written moves on.<span><span></div</span>></span> </span> <span><span><span><div</span> class<span>="tag tag-second"</span>></span>Nor all thy piety nor all thy wit, can cancel half a line of it.<span><span></div</span>></span> </span> <span><span><span></body</span>></span> </span><span><span><span></html</span>></span></span>
>
<span>npm init </span><span>npm install http-server --save-dev</span>
>一旦我们将测试本身就位,剩下的就是定义脚本以运行测试。让我们将以下脚本添加到package。
>您现在可以通过执行以下命令来运行它:
><span>"scripts": { </span> <span>"start": "http-server" </span><span>},</span>
您将看到的输出应该看起来像这样:
<span>npm install phantomcss casperjs phantomjs-prebuilt --save-dev</span>
>由于您是第一次进行测试,因此它将创建一个新的基线屏幕截图,并且不会进行任何比较。继续前进,窥视屏幕截图文件夹。您应该看到这样的图像:
<span>var phantomcss = require('phantomcss'); </span> <span>// start a casper test </span>casper<span>.test.begin('Tags', function(test) { </span> phantomcss<span>.init({ </span> <span>rebase: casper.cli.get('rebase') </span> <span>}); </span> <span>// open page </span> casper<span>.start('http://127.0.0.1:8080/'); </span> <span>// set your preferred view port size </span> casper<span>.viewport(1024, 768); </span> casper<span>.then(function() { </span> <span>// take the screenshot of the whole body element and save it under "body.png". The first parameter is actually a CSS selector </span> phantomcss<span>.screenshot('body', 'body'); </span> <span>}); </span> casper<span>.then(function now_check_the_screenshots() { </span> <span>// compare screenshots </span> phantomcss<span>.compareAll(); </span> <span>}); </span> <span>// run tests </span> casper<span>.run(function() { </span> <span>console.log('\nTHE END.'); </span> casper<span>.test.done(); </span> <span>}); </span><span>});</span>
>这是您的网站应该如何外观的黄金标准,并且测试的未来执行将将其结果与此图像进行比较。
如果您再次运行相同的测试命令,它将报告所有测试已成功传递:
>
<span>"test": "casperjs test test.js"</span>
>
<span>npm test</span>
>现在已经强调了差异,我们该怎么做才能接受更改?我们应该以某种方式能够告诉该工具我们要坚持使用块的宽度减小,并接受当前视图作为新标准。为此,您可以使用附加的 - rebase参数运行test命令:
<span><span><span><div</span>></span>Hello, %username%!<span><span></div</span>></span></span>
>
进一步>您是否要针对真实网站或某种样式指南进行测试,其中只有单独的UI元素?
经常询问的问题(常见问题解答)有关使用幻影测试的视觉回归测试
>
>我可以将phantomcss与其他测试框架一起使用吗?与其他测试框架(如摩卡咖啡,茉莉花和Qunit)一起使用。它也可以与詹金斯(Jenkins)和特拉维斯(Travis)CI等连续集成系统进行集成。将使用phantomcss进行视觉回归测试的优点是什么?>我如何在phantomcss中调试测试? > phantomcss的视觉回归测试的替代方法是什么?>我可以自定义phantomcss中的比较过程吗?
>有几种替代方法可用于phantomcss for Phantomcss for视觉回归测试,包括Backstopjs,Wraith和Gemini。这些工具提供了与幻影相似的功能,但根据您的特定需求,它们可能具有不同的优势和劣势。
以上是幻影的视觉回归测试的详细内容。更多信息请关注PHP中文网其他相关文章!