From 343f393beb006d2716f6c31ecb5f95f0b0eef8f1 Mon Sep 17 00:00:00 2001 From: jaso0n0818 Date: Wed, 24 Jun 2026 21:00:05 +0000 Subject: [PATCH 1/2] feat(signals): recognize e2e, integration, and snapshot test paths Extend isTestPath so slop and contributor evidence treat common browser/e2e layouts as real test effort: - e2e/, integration/, playwright/, cypress/ directories - Cypress/Playwright-style *.cy.ts and *.e2e.ts suffixes - Jest/Vitest __snapshots__/ trees and *.snap files Keeps classifyTestCoverage ratios accurate for modern test layouts. Co-authored-by: Cursor --- src/signals/test-evidence.ts | 7 +++++-- test/unit/test-evidence.test.ts | 6 ++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/signals/test-evidence.ts b/src/signals/test-evidence.ts index 85e4d69ef3..568f186822 100644 --- a/src/signals/test-evidence.ts +++ b/src/signals/test-evidence.ts @@ -1,10 +1,13 @@ export function isTestPath(file: string): boolean { return ( - /(^|\/)(test|tests|spec|__tests__)\//i.test(file) || + /(^|\/)(test|tests|spec|__tests__|e2e|integration|playwright|cypress)\//i.test(file) || /(^|\/)src\/test\//i.test(file) || /(^|\/)[^/]+_test\.(go|py|rb)$/i.test(file) || /(^|\/)[^/]+_spec\.rb$/i.test(file) || - /\.(test|spec)\.(ts|tsx|js|jsx|py|rb|rs)$/i.test(file) + /\.(test|spec)\.(ts|tsx|js|jsx|py|rb|rs)$/i.test(file) || + /(^|\/)[^/]+\.(cy|e2e)\.(ts|tsx|js|jsx)$/i.test(file) || + /(^|\/)__snapshots__\//i.test(file) || + /(^|\/)[^/]+\.snap$/i.test(file) ); } diff --git a/test/unit/test-evidence.test.ts b/test/unit/test-evidence.test.ts index 09bfc2dcf2..4097c9fcf4 100644 --- a/test/unit/test-evidence.test.ts +++ b/test/unit/test-evidence.test.ts @@ -8,6 +8,11 @@ describe("test evidence helpers", () => { expect(isTestPath("src/test/helpers.ts")).toBe(true); expect(isTestPath("tests/integration/api.test.ts")).toBe(true); expect(isTestPath("__tests__/widget.spec.tsx")).toBe(true); + expect(isTestPath("e2e/login.spec.ts")).toBe(true); + expect(isTestPath("integration/api_flow.cy.ts")).toBe(true); + expect(isTestPath("playwright/smoke.spec.ts")).toBe(true); + expect(isTestPath("cypress/e2e/checkout.cy.js")).toBe(true); + expect(isTestPath("components/__snapshots__/Card.tsx.snap")).toBe(true); expect(isTestPath("src/widget.rs")).toBe(false); }); @@ -30,6 +35,7 @@ describe("classifyTestCoverage", () => { it("classifies >= 40% test ratio as strong", () => { // 2 source + 2 test = 50% expect(classifyTestCoverage(["src/a.ts", "src/b.ts", "test/a.test.ts", "test/b.test.ts"])).toBe("strong"); + expect(classifyTestCoverage(["src/a.ts", "src/b.ts", "e2e/a.spec.ts", "e2e/b.spec.ts"])).toBe("strong"); }); it("classifies 20%–39% test ratio as adequate", () => { From cb34ee5bd1cf7812eff959b3ff269a34683d129f Mon Sep 17 00:00:00 2001 From: jaso0n0818 Date: Wed, 24 Jun 2026 21:25:26 +0000 Subject: [PATCH 2/2] fix(signals): narrow snapshot test-path matching to __snapshots__ dirs The broad *.snap rule misclassified non-test churn files like src/state.snap, breaking slop golden fixtures and failing test shard 2/3. Co-authored-by: Cursor --- src/signals/test-evidence.ts | 3 +-- test/unit/test-evidence.test.ts | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/signals/test-evidence.ts b/src/signals/test-evidence.ts index 568f186822..1d8a41ba40 100644 --- a/src/signals/test-evidence.ts +++ b/src/signals/test-evidence.ts @@ -6,8 +6,7 @@ export function isTestPath(file: string): boolean { /(^|\/)[^/]+_spec\.rb$/i.test(file) || /\.(test|spec)\.(ts|tsx|js|jsx|py|rb|rs)$/i.test(file) || /(^|\/)[^/]+\.(cy|e2e)\.(ts|tsx|js|jsx)$/i.test(file) || - /(^|\/)__snapshots__\//i.test(file) || - /(^|\/)[^/]+\.snap$/i.test(file) + /(^|\/)__snapshots__\//i.test(file) ); } diff --git a/test/unit/test-evidence.test.ts b/test/unit/test-evidence.test.ts index 4097c9fcf4..3059d665ba 100644 --- a/test/unit/test-evidence.test.ts +++ b/test/unit/test-evidence.test.ts @@ -13,6 +13,7 @@ describe("test evidence helpers", () => { expect(isTestPath("playwright/smoke.spec.ts")).toBe(true); expect(isTestPath("cypress/e2e/checkout.cy.js")).toBe(true); expect(isTestPath("components/__snapshots__/Card.tsx.snap")).toBe(true); + expect(isTestPath("src/state.snap")).toBe(false); expect(isTestPath("src/widget.rs")).toBe(false); });