gavvvr_obsidian-timecodes-p.../e2e/utils/coverage.ts

45 lines
1.3 KiB
TypeScript
Raw Permalink Normal View History

import type { CoverageMapData } from 'istanbul-lib-coverage'
import * as fs from 'node:fs'
import * as path from 'node:path'
import { createCoverageMap } from 'istanbul-lib-coverage'
import { createContext } from 'istanbul-lib-report'
import { createSourceMapStore } from 'istanbul-lib-source-maps'
import * as reports from 'istanbul-reports'
export async function exportCoverageToLcov() {
const coverageMap = createCoverageMap(await collectCoverageData())
const remappedCoverageMap = await createSourceMapStore().transformCoverage(coverageMap)
const context = createContext({
coverageMap: remappedCoverageMap,
dir: 'out/coverage',
sourceFinder: (filePath: string) => {
return fs.readFileSync(restorePathRelativeToMainPluginProject(filePath), 'utf-8')
},
})
reports.create('lcov').execute(context)
}
const cwd = process.cwd()
function restorePathRelativeToMainPluginProject(filePath: string) {
const relativePart = path.relative(cwd, filePath)
return path.join(path.resolve(cwd, '..'), relativePart)
}
async function collectCoverageData() {
const coverageData = await browser.execute(() => {
return window.__coverage__
})
if (!coverageData) throw new Error('No coverage data found!')
return coverageData
}
declare global {
interface Window {
__coverage__?: CoverageMapData
}
}