。 >視覺回歸測試採用另一種方法來測試網頁。該測試不僅要確保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中文網其他相關文章!