chai-screenshot
このプラグインはアサーションライブラリとして chai を使用して 2 つの画像を比較するために作成されました。
Playwright によって作成された haveScreenShot
メソッドと、メンテナンスされていないように見えるリポジトリの chai-image に着想を得ています。
現時点では PNG 画像のみがサポートされています。
最初の手順
npm を使用してプラグインをインストールします
npm i chai-screenshot --save-dev
次に、テストファイルに追加します
const { expect, use } = require('chai');
const chaiScreenshot = require("chai-screenshot");
use(chaiScreenshot);
最後にテストスクリプトで使用します (この例では mocha を使用)
it('The screenshot should match the expected image', function() {
const actual = 'actual.png';
const expected = 'expected.png';
expect(actual).to.matchScreenshot(expected);
});
アサーションが失敗した場合、プラグインは screenshot-output
というディレクトリを作成し、それらの diff PNG 画像を生成します。
使用方法
バッファー、ファイルパス文字列、さらに Base64 画像文字列を実際のパラメータとして、期待どおりのパラメータとして渡すことができます。自由に組み合わせて使用してください!
// Buffer:
const bufActual = Buffer.from(fs.readFileSync('actual.png'));
const bufExpected = Buffer.from(fs.readFileSync('expected.png'));
expect(bufActual).to.matchScreenshot(bufExpected);
// Filepath
expect('assets/actual.png').to.matchScreenshot('assets/expected.png');
// Base64 (example uses Selenium):
const actual = await driver.findElement({id: 'canvas'}).takeScreenshot(true);
expect(actual).to.matchScreenshot('assets/expected.png');
このプラグインは visual 比較のために内部で pixelmatch を使用しています。つまり、diff を実行するために pixelmatch が必要とするオプションも構成できます。この例では、しきい値オプションをより敏感に設定します
expect("actual.png").to.matchScreenshot('expected.png', {
diff: { threshold: 0.5 }
});
pixelmatch のオプションの完全なリストを こちら で確認できます。
テストの失敗 (画像の diff) の後に結果を保存する別のディレクトリを設定するか、デフォルトのファイル名を変更する場合は、オプションをこのように設定できます
expect("actual.png").to.matchScreenshot('expected.png', {
diff: { threshold: 0.5 },
output: {
dir: 'myFolder',
name: 'test.png'} // Don't forget to add the .png extension
});
貢献
貢献する方法はありますか? タイプミスや修正可能なようなひどいコードが見つかりませんか?
✨PR を歓迎します!✨
また、課題を作成して、どのような改善が可能かを議論することもできます。