MCPcopy Create free account
hub / github.com/InverseUI/InverseUI-Recorder / compareAction

Function compareAction

util/action_utils.js:39–115  ·  view source on GitHub ↗
(a, b)

Source from the content-addressed store, hash-verified

37 * Compare two actions to determine if they should be deduplicated
38 */
39export function compareAction(a, b) {
40 if (a !== undefined && b !== undefined) {
41 switch (a.browserAction) {
42 case ACTION_TYPES.GO_TO_URL:
43 if (a.browserAction === ACTION_TYPES.GO_TO_URL && a.url === b.url && b.timestamp - a.timestamp <= DEBOUNCER_TIME) {
44 return 0;
45 } else {
46 return 1;
47 }
48 break;
49
50 case ACTION_TYPES.SCROLL:
51 return 1;
52 break;
53
54 case ACTION_TYPES.WINDOW_RESIZE:
55 if (a.browserAction === ACTION_TYPES.WINDOW_RESIZE && a.width === b.width && a.height === b.height && b.timestamp - a.timestamp <= DEBOUNCER_TIME) {
56 return 0;
57 } else {
58 return 1;
59 }
60 break;
61
62 case ACTION_TYPES.SUCCESS_CONDITION_EQUALS:
63 case ACTION_TYPES.SUCCESS_CONDITION_CONTAINS:
64 if (a.browserAction === b.browserAction) {
65 return 0;
66 } else {
67 return 1;
68 }
69 break;
70
71
72 case ACTION_TYPES.KEY_PRESS:
73 // Don't deduplicate key presses - each one is important
74 return 1;
75 break;
76
77 case ACTION_TYPES.MOUSE_ENTER:
78 case ACTION_TYPES.MOUSE_LEAVE:
79 // Deduplicate rapid mouse enter/leave on same element
80 if (a.browserAction === b.browserAction && a.xpath[0] === b.xpath[0] && b.timestamp - a.timestamp <= DEBOUNCER_TIME) {
81 return 0;
82 } else {
83 return 1;
84 }
85 break;
86
87 case ACTION_TYPES.MOUSE_MOVE:
88 // Always record mouse moves but this might need throttling
89 return 1;
90 break;
91
92 case ACTION_TYPES.ELEMENT_SCROLL:
93 case ACTION_TYPES.WINDOW_SCROLL:
94 // Handle like regular scroll - keep only the last one
95 return 1;
96 break;

Callers 1

pushActionFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected