Skip to Content

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