mirror of
https://github.com/Tencent/BrowserSkill.git
synced 2026-09-10 13:01:23 +08:00
fix(record): drop 'hover' in tracev2 for compatible
This commit is contained in:
@@ -171,7 +171,7 @@ describe("reduceTraceSteps", () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("keeps hover steps before menu clicks", () => {
|
it("drops hover steps, which only exist in trace v3", () => {
|
||||||
const { steps } = reduceTraceSteps(
|
const { steps } = reduceTraceSteps(
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
@@ -187,12 +187,7 @@ describe("reduceTraceSteps", () => {
|
|||||||
],
|
],
|
||||||
"https://example.com/app",
|
"https://example.com/app",
|
||||||
);
|
);
|
||||||
expect(steps.map((s) => s.op)).toEqual(["hover", "click"]);
|
expect(steps.map((s) => s.op)).toEqual(["click"]);
|
||||||
expect(steps[0]).toMatchObject({
|
|
||||||
op: "hover",
|
|
||||||
page: "p1",
|
|
||||||
target: { name: "Account" },
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it("resolveTraceStartUrl prefers explicit start URL", () => {
|
it("resolveTraceStartUrl prefers explicit start URL", () => {
|
||||||
|
|||||||
@@ -48,6 +48,25 @@ describe("trace reducer v3", () => {
|
|||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("keeps hover steps before menu clicks", () => {
|
||||||
|
const drafts: RecordingDraftStep[] = [
|
||||||
|
{
|
||||||
|
op: "hover",
|
||||||
|
captureTarget: { tag: "span", role: "button", name: "Account" },
|
||||||
|
preStateId: "s1",
|
||||||
|
postStateId: "s1",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
op: "click",
|
||||||
|
captureTarget: { tag: "a", role: "link", name: "Profile" },
|
||||||
|
preStateId: "s1",
|
||||||
|
postStateId: "s1",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
expect(reduceTraceStepsV3(drafts).steps.map((s) => s.op)).toEqual(["hover", "click"]);
|
||||||
|
});
|
||||||
|
|
||||||
it("does not export a tab transition without both observation endpoints", () => {
|
it("does not export a tab transition without both observation endpoints", () => {
|
||||||
const sourceOnly: RecordingDraftStep = { op: "switch_tab", preStateId: "s1" };
|
const sourceOnly: RecordingDraftStep = { op: "switch_tab", preStateId: "s1" };
|
||||||
const targetOnly: RecordingDraftStep = { op: "switch_tab", postStateId: "s2" };
|
const targetOnly: RecordingDraftStep = { op: "switch_tab", postStateId: "s2" };
|
||||||
|
|||||||
@@ -119,14 +119,6 @@ function toV2Step(
|
|||||||
},
|
},
|
||||||
effectForNavigation(step.navigatedTo, urlToId),
|
effectForNavigation(step.navigatedTo, urlToId),
|
||||||
);
|
);
|
||||||
case "hover":
|
|
||||||
if (!step.captureTarget) return null;
|
|
||||||
return {
|
|
||||||
op: "hover",
|
|
||||||
id,
|
|
||||||
page,
|
|
||||||
target: step.captureTarget,
|
|
||||||
};
|
|
||||||
case "fill":
|
case "fill":
|
||||||
if (!step.captureTarget) return null;
|
if (!step.captureTarget) return null;
|
||||||
return {
|
return {
|
||||||
@@ -161,6 +153,9 @@ function toV2Step(
|
|||||||
},
|
},
|
||||||
effectForNavigation(step.navigatedTo, urlToId),
|
effectForNavigation(step.navigatedTo, urlToId),
|
||||||
);
|
);
|
||||||
|
// `hover` only exists in Trace v3. Peers that negotiate v2 predate the
|
||||||
|
// step variant and fail to decode the whole result if we emit it.
|
||||||
|
case "hover":
|
||||||
case "scroll":
|
case "scroll":
|
||||||
case "switch_tab":
|
case "switch_tab":
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -1200,7 +1200,8 @@ describe("recorded user steps reach the exported trace", () => {
|
|||||||
const trace = (stopped as RecordStopResult).trace;
|
const trace = (stopped as RecordStopResult).trace;
|
||||||
expect("version" in trace).toBe(false);
|
expect("version" in trace).toBe(false);
|
||||||
expect("pages" in trace && trace.pages.length).toBeGreaterThan(0);
|
expect("pages" in trace && trace.pages.length).toBeGreaterThan(0);
|
||||||
expect("steps" in trace && trace.steps.map((step) => step.op)).toEqual(["hover", "click"]);
|
// `hover` has no v2 counterpart on peers that negotiate v2.
|
||||||
|
expect("steps" in trace && trace.steps.map((step) => step.op)).toEqual(["click"]);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("rejects unsupported trace_version values", async () => {
|
it("rejects unsupported trace_version values", async () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user