[英]Puppeteer + Pixelmatch: Comparing screenshots in Mac and TravisCI Linux
我正在嘗試通過加載頁面並使用 puppeteer 截取元素來實現 JS 測試。 到目前為止一切順利,一切都在我的本地完美運行(在我修復了普通屏幕和視網膜顯示器之間的障礙之后)但是當我在 TravisCI 上運行相同的測試時,我得到了我無法解決的小文本差異,任何人都有任何線索是怎么回事?
這是我配置瀏覽器實例的方式:
browser = await puppeteer.launch(({
headless: true,
args :[
'--hide-scrollbars',
'--enable-font-antialiasing',
'--force-device-scale-factor=1', '--high-dpi-support=1',
'--no-sandbox', '--disable-setuid-sandbox', // Props for TravisCI
]
}));
這是我比較屏幕截圖的方式:
const compareScreenshots = (fileName) => {
return new Promise((resolve) => {
const base = fs.createReadStream(`${BASE_IMAGES_PATH}/${fileName}.png`).pipe(new PNG()).on('parsed', doneReading);
const live = fs.createReadStream(`${WORKING_IMAGES_PATH}/${fileName}.png`).pipe(new PNG()).on('parsed', doneReading);
let filesRead = 0;
function doneReading() {
// Wait until both files are read.
if (++filesRead < 2) {
return;
}
// Do the visual diff.
const diff = new PNG({width: base.width, height: base.height});
const mismatchedPixels = pixelmatch(
base.data, live.data, diff.data, base.width, base.height,
{threshold: 0.1});
resolve({
mismatchedPixels,
diff,
});
}
});
};
我有一個類似的問題。 我在截取屏幕截圖之前延遲了 400 毫秒,似乎已經解決了問題。 如果你想出更好的東西,我很想知道。
字體在不同的操作系統上呈現略有不同。 這可能會導致您遇到的文本邊緣出現偽影。 您有幾個選擇:
我遇到了類似的問題,最終在 docker 容器內“本地”運行我的快照測試。 我還安裝了項目文件夾,因此每當必須更新快照時,它們都會在容器內部以及主機操作系統中進行更新。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.