Skip to content

Commit d065313

Browse files
committed
feat(webview): add Playwright CT coverage ratcheting
1 parent d2b7156 commit d065313

6 files changed

Lines changed: 114 additions & 4 deletions

File tree

.github/workflows/visual-regression.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,14 @@ jobs:
3232
install-args: "--frozen-lockfile"
3333
- name: Run webview visual tests
3434
run: pnpm --filter @roo-code/vscode-webview test:visual
35+
- name: Upload visual test coverage to Codecov
36+
if: always()
37+
uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 # v4
38+
with:
39+
files: webview-ui/coverage-ct/lcov.info
40+
disable_search: true
41+
flags: webview-ui-ct
42+
token: ${{ secrets.CODECOV_TOKEN }}
3543
- name: Upload visual test artifacts
3644
if: failure()
3745
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4

codecov.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ coverage:
1111
threshold: 0.5%
1212
flags:
1313
- webview-ui
14+
- webview-ui-ct
1415
patch:
1516
default:
1617
target: 80% # new lines must be 80% covered
@@ -20,13 +21,18 @@ coverage:
2021
threshold: 0%
2122
flags:
2223
- webview-ui
24+
- webview-ui-ct
2325

2426
flag_management:
2527
individual_flags:
2628
- name: webview-ui
2729
paths:
2830
- webview-ui/src/
2931
carryforward: true
32+
- name: webview-ui-ct
33+
paths:
34+
- webview-ui/src/
35+
carryforward: true
3036
- name: core-unit
3137
paths:
3238
- packages/core/src/

knip.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@
3131
"react-compiler-runtime",
3232
"source-map",
3333
"tailwindcss",
34-
"tailwindcss-animate"
34+
"tailwindcss-animate",
35+
"monocart-coverage-reports"
3536
]
3637
},
3738
"apps/cli": {

pnpm-lock.yaml

Lines changed: 73 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

webview-ui/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@
108108
"@vitest/ui": "4.1.9",
109109
"babel-plugin-react-compiler": "1.0.0",
110110
"jsdom": "26.1.0",
111+
"monocart-coverage-reports": "^2.12.12",
111112
"vite": "8.1.0",
112113
"vitest": "4.1.9"
113114
}

webview-ui/playwright-ct.config.ts

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,41 @@ import path from "path"
22
import { fileURLToPath } from "url"
33

44
import { defineConfig } from "@playwright/experimental-ct-react"
5+
import type { ReporterDescription } from "@playwright/test"
56
import react from "@vitejs/plugin-react"
67
import tailwindcss from "@tailwindcss/vite"
78

89
const dirname = path.dirname(fileURLToPath(import.meta.url))
910

11+
const monocartCoverageReporter: ReporterDescription = [
12+
"monocart-coverage-reports",
13+
{
14+
name: "Webview Playwright CT Coverage",
15+
outputDir: path.resolve(dirname, "coverage-ct"),
16+
reports: ["lcov", "html"],
17+
entryFilter: (entry: { url: string }) => entry.url.includes("/src/"),
18+
sourceFilter: (sourcePath: string) => sourcePath.includes("src/"),
19+
},
20+
]
21+
1022
export default defineConfig({
1123
testDir: "./src",
1224
testMatch: "**/*.visual.tsx",
1325
outputDir: process.env.CI ? path.resolve(dirname, "test-results") : "/tmp/webview-ui-playwright-test-results",
1426
snapshotPathTemplate: "{testDir}/{testFileDir}/__screenshots__/{arg}{ext}",
1527
fullyParallel: true,
1628
reporter: process.env.CI
17-
? [["html", { open: "never", outputFolder: path.resolve(dirname, "playwright-report") }], ["github"], ["list"]]
18-
: [["html", { open: "never", outputFolder: "/tmp/webview-ui-playwright-report" }], ["list"]],
29+
? [
30+
["html", { open: "never", outputFolder: path.resolve(dirname, "playwright-report") }],
31+
["github"],
32+
["list"],
33+
monocartCoverageReporter,
34+
]
35+
: [
36+
["html", { open: "never", outputFolder: "/tmp/webview-ui-playwright-report" }],
37+
["list"],
38+
monocartCoverageReporter,
39+
],
1940
use: {
2041
ctTemplateDir: "./playwright",
2142
ctViteConfig: {
@@ -44,7 +65,7 @@ export default defineConfig({
4465
"process.env.PKG_RELEASE_CHANNEL": JSON.stringify("stable"),
4566
},
4667
optimizeDeps: {
47-
include: ["@vscode/webview-ui-toolkit"],
68+
include: ["@vscode/webview-ui-toolkit/react", "@vscode/webview-ui-toolkit"],
4869
exclude: ["@vscode/codicons"],
4970
},
5071
},

0 commit comments

Comments
 (0)