Skip to content

Commit daac5ba

Browse files
committed
fix: review fixes
1 parent 9141ad7 commit daac5ba

File tree

3 files changed

+20
-12
lines changed

3 files changed

+20
-12
lines changed

packages/coverage-v8/src/browser.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,9 @@ import { cdp } from '@vitest/browser/context'
22
import type { V8CoverageProvider } from './provider'
33
import { loadProvider } from './load-provider'
44

5-
interface ScriptCoverage {
6-
result: Array<{ url: string }>
7-
}
5+
const session = cdp()
86

9-
const session = cdp() as { send: (...options: any[]) => any }
7+
type ScriptCoverage = Awaited<ReturnType<typeof session.send<'Profiler.takePreciseCoverage'>>>
108

119
export default {
1210
async startCoverage() {
@@ -17,8 +15,8 @@ export default {
1715
})
1816
},
1917

20-
async takeCoverage() {
21-
const coverage: ScriptCoverage = await session.send('Profiler.takePreciseCoverage')
18+
async takeCoverage(): Promise<{ result: any[] }> {
19+
const coverage = await session.send('Profiler.takePreciseCoverage')
2220
const result: typeof coverage.result = []
2321

2422
// Reduce amount of data sent over rpc by doing some early result filtering

packages/coverage-v8/src/provider.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ const VITE_EXPORTS_LINE_PATTERN
7373
const DECORATOR_METADATA_PATTERN
7474
= /_ts_metadata\("design:paramtypes", \[[^\]]*\]\),*/g
7575
const DEFAULT_PROJECT: unique symbol = Symbol.for('default-project')
76+
const FILE_PROTOCOL = 'file://'
7677

7778
const debug = createDebug('vitest:coverage')
7879
let uniqueId = 0
@@ -441,7 +442,7 @@ export class V8CoverageProvider extends BaseCoverageProvider implements Coverage
441442

442443
if (!transformResult) {
443444
isExecuted = false
444-
transformResult = await onTransform(url.replace('file://', '')).catch(() => undefined)
445+
transformResult = await onTransform(removeRoot(url, FILE_PROTOCOL)).catch(() => undefined)
445446
}
446447

447448
const map = transformResult?.map as EncodedSourceMap | undefined
@@ -499,7 +500,7 @@ export class V8CoverageProvider extends BaseCoverageProvider implements Coverage
499500

500501
async function onTransform(filepath: string) {
501502
if (transformMode === 'browser' && project.browser) {
502-
const result = await project.browser.vite.transformRequest(filepath.replace(project.config.root, ''))
503+
const result = await project.browser.vite.transformRequest(removeRoot(filepath, project.config.root))
503504

504505
if (result) {
505506
return { ...result, code: `${result.code}// <inline-source-map>` }
@@ -512,11 +513,11 @@ export class V8CoverageProvider extends BaseCoverageProvider implements Coverage
512513

513514
for (const result of coverage.result) {
514515
if (transformMode === 'browser') {
515-
if (result.url.includes('@fs/')) {
516-
result.url = `file://${result.url.replace('@fs/', '')}`
516+
if (result.url.startsWith('/@fs')) {
517+
result.url = `${FILE_PROTOCOL}${removeRoot(result.url, '/@fs')}`
517518
}
518519
else {
519-
result.url = `file://${project.config.root}${result.url}`
520+
result.url = `${FILE_PROTOCOL}${project.config.root}${result.url}`
520521
}
521522
}
522523

@@ -635,3 +636,11 @@ function normalizeTransformResults(
635636

636637
return normalized
637638
}
639+
640+
function removeRoot(filepath: string, root: string) {
641+
if (filepath.startsWith(root)) {
642+
return filepath.slice(root.length)
643+
}
644+
645+
return filepath
646+
}

packages/coverage-v8/tsconfig.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
{
22
"extends": "../../tsconfig.base.json",
33
"compilerOptions": {
4-
"moduleResolution": "Bundler"
4+
"moduleResolution": "Bundler",
5+
"types": ["@vitest/browser/providers/playwright"]
56
},
67
"include": ["./src/**/*.ts"],
78
"exclude": ["./dist"]

0 commit comments

Comments
 (0)