diff --git a/apps/extension/src/lib/__tests__/trace-reducer.test.ts b/apps/extension/src/lib/__tests__/trace-reducer.test.ts index 82c2770..2c78a1f 100644 --- a/apps/extension/src/lib/__tests__/trace-reducer.test.ts +++ b/apps/extension/src/lib/__tests__/trace-reducer.test.ts @@ -166,8 +166,8 @@ describe("reduceTraceSteps v3", () => { const { steps, stepIdByDraftId } = reduceTraceSteps( [ - // Dropped: blank fill. - { op: "fill", target: { ref: "e1" }, value: " ", preStateId: s1, postStateId: s1 }, + // Dropped: bare typing press. + { op: "press", key: "a", preStateId: s1, postStateId: s1 }, { op: "click", target: { ref: "e2" }, preStateId: s1, postStateId: s1 }, ], registry, @@ -178,6 +178,23 @@ describe("reduceTraceSteps v3", () => { expect(stepIdByDraftId.get(2)).toBe(1); }); + it("keeps committed empty fills", () => { + resetStateIdCounterForTests(); + const registry = new Map(); + const s1 = registerObservation(registry, { url: "https://a.example/", rawVomText: "a" }); + + const { steps } = reduceTraceSteps( + [ + { op: "fill", target: { ref: "e1", role: "textbox", name: "Search" }, value: "", preStateId: s1, postStateId: s1 }, + { op: "click", target: { ref: "e2", role: "button", name: "Apply" }, preStateId: s1, postStateId: s1 }, + ], + registry, + ); + + expect(steps.map((step) => step.op)).toEqual(["fill", "click"]); + expect(steps[0]).toMatchObject({ op: "fill", value: "" }); + }); + it("keeps hover steps before menu clicks", () => { resetStateIdCounterForTests(); const registry = new Map(); diff --git a/apps/extension/src/lib/trace-reducer.ts b/apps/extension/src/lib/trace-reducer.ts index 3894a9b..a800b14 100644 --- a/apps/extension/src/lib/trace-reducer.ts +++ b/apps/extension/src/lib/trace-reducer.ts @@ -30,7 +30,6 @@ export function shouldRecordPress( } function shouldIncludeDraft(step: DraftTraceStep): boolean { - if (step.op === "fill" && !(step.value ?? "").trim() && !step.redacted) return false; if (step.op === "press" && !shouldRecordPress(step.key, step.modifiers)) return false; return true; }