Playwright
Playwrightでは、コンテキストを取得し、テストケース実行時にカバレッジデータをローカルファイルに書き込み、最後にcanyon-uploaderツールを使用して集約して報告します。
カバレッジデータのローカルファイルへの書き込み
以下はnodejsのコード例です:
import * as fs from 'fs';
import * as path from 'path';
import {test as baseTest} from '@playwright/test';
const canyonOutputDirPath = path.join(process.cwd(), '.canyon_output');
export const test = baseTest.extend({
context: async ({context}, use) => {
await context.addInitScript(() =>
window.addEventListener('beforeunload', () =>
(window as any).collectIstanbulCoverage((window as any).__coverage__)
),
);
await fs.promises.mkdir(canyonOutputDirPath, {recursive: true});
await context.exposeFunction('collectIstanbulCoverage', (coverageJSON) => {
console.log('Coverage collected',coverageJSON);
if (coverageJSON) {
fs.writeFileSync(path.join(canyonOutputDirPath, `coverage-final-${new Date().valueOf()}.json`), JSON.stringify(coverageJSON));
}
});
await use(context);
for (const page of context.pages()) {
await page.evaluate(() => (window as any).collectIstanbulCoverage((window as any).__coverage__));
}
}
});
export const expect = test.expect;
集約と報告
canyon-uploaderツールを使用して集約し報告します。具体的な使用方法はcanyon-uploaderのドキュメントをご覧ください。
./canyon-uploader --dsn=https://canyonjs.org