diff --git a/package.json b/package.json index 3d93b41..c8c6e20 100644 --- a/package.json +++ b/package.json @@ -214,7 +214,7 @@ "testing/item/context": [ { "command": "vitest.openTraceReport", - "when": "controllerId == 'vitest'", + "when": "controllerId == 'vitest' && testId in vitest.traceReportTests", "group": "vitest" }, { diff --git a/packages/extension/src/runner.ts b/packages/extension/src/runner.ts index 28ff046..5ff0b45 100644 --- a/packages/extension/src/runner.ts +++ b/packages/extension/src/runner.ts @@ -114,7 +114,7 @@ export class TestRunner extends vscode.Disposable { handle.handlers.onTestRunEnd(async (files, unhandledError, collecting, coverage) => { const htmlReportPath = this.api.config.htmlReportPath if (!collecting && htmlReportPath) { - this.traceReports?.update(this.api.id, htmlReportPath, files, this.tree) + await this.traceReports?.update(this.api.id, htmlReportPath, files, this.tree) } const testRun = this.testRun diff --git a/packages/extension/src/traceReport.ts b/packages/extension/src/traceReport.ts index ffbeeda..d152017 100644 --- a/packages/extension/src/traceReport.ts +++ b/packages/extension/src/traceReport.ts @@ -46,9 +46,10 @@ export class TraceReportManager { clear() { this.targets.clear() + void this.updateContext() } - update(apiId: string, reportPath: string, files: RunnerTestFile[], tree: TestTree) { + async update(apiId: string, reportPath: string, files: RunnerTestFile[], tree: TestTree) { for (const [item, target] of this.targets) { if (target.apiId === apiId) { this.targets.delete(item) @@ -61,6 +62,15 @@ export class TraceReportManager { this.targets.set(item, target) } } + await this.updateContext() + } + + private updateContext() { + return vscode.commands.executeCommand( + 'setContext', + 'vitest.traceReportTests', + [...this.targets.keys()].map((item) => item.id), + ) } async open(testItem: vscode.TestItem | undefined) {