⚙️ Create and run workflows (RPA 2.0)
This report summarizes scanner evidence for browser-use/workflow-use, a Python project with 4,219 GitHub stars. SynthScan examined 45,992 lines of code across 164 source files, recording 898 pattern matches distributed across 19 syntactic categories. The legacy adjusted pattern signal is 29.2 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 479 finding(s).
Are imports declared and package/API names verified? 95 finding(s).
Are wrappers, guards, and repeated structures necessary? 515 finding(s).
Which changes need focused human review? 898 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 898 distinct pattern matches across 19 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …es/scripts/variables/create_workflow_with_variables.py | 8 | Run: cd workflows && uv run python examples/create_workflow_with_variables.py | STRING |
| HIGH | …/examples/scripts/demos/hierarchical_selection_demo.py | 240 | let element = null; | CODE |
| HIGH⚡ | workflows/workflow_use/workflow/semantic_executor.py | 987 | matches.push({{ element: el, text: text || ariaLabel || title, priority: 1 }}); | CODE |
| HIGH⚡ | workflows/workflow_use/workflow/semantic_executor.py | 987 | matches.push({{ element: el, text: text || ariaLabel || title, priority: 1 }}); | CODE |
| HIGH⚡ | workflows/workflow_use/workflow/semantic_executor.py | 991 | matches.push({{ element: el, text: text || ariaLabel || title, priority: 2 }}); | CODE |
| HIGH⚡ | workflows/workflow_use/workflow/semantic_executor.py | 991 | matches.push({{ element: el, text: text || ariaLabel || title, priority: 2 }}); | CODE |
| HIGH⚡ | workflows/workflow_use/workflow/semantic_executor.py | 995 | matches.push({{ element: el, text: text || ariaLabel || title, priority: 3 }}); | CODE |
| HIGH⚡ | workflows/workflow_use/workflow/semantic_executor.py | 995 | matches.push({{ element: el, text: text || ariaLabel || title, priority: 3 }}); | CODE |
| HIGH⚡ | workflows/workflow_use/workflow/semantic_executor.py | 1000 | if (targetWords.length > 0 && targetWords.every(word => allText.includes(word))) {{ | CODE |
| HIGH⚡ | workflows/workflow_use/workflow/semantic_executor.py | 1001 | matches.push({{ element: el, text: text || ariaLabel || title, priority: 4 }}); | CODE |
| HIGH⚡ | workflows/workflow_use/workflow/semantic_executor.py | 1001 | matches.push({{ element: el, text: text || ariaLabel || title, priority: 4 }}); | CODE |
| HIGH | workflows/workflow_use/workflow/semantic_executor.py | 783 | null, | CODE |
| HIGH | workflows/workflow_use/workflow/semantic_executor.py | 959 | if (rect.width === 0 || rect.height === 0 || | CODE |
| HIGH | workflows/workflow_use/workflow/step_verifier.py | 488 | return selected ? selected.text : null; | STRING |
| HIGH⚡ | workflows/workflow_use/workflow/element_finder.py | 475 | null, | CODE |
| HIGH⚡ | workflows/workflow_use/workflow/element_finder.py | 482 | return null; | CODE |
| HIGH⚡ | workflows/workflow_use/workflow/element_finder.py | 488 | const isVisible = rect.width > 0 && rect.height > 0 && | CODE |
| HIGH⚡ | workflows/workflow_use/workflow/semantic_extractor.py | 216 | function debugMessage(msg, data = null) { | CODE |
| HIGH⚡ | workflows/workflow_use/workflow/semantic_extractor.py | 219 | debugLog.push({ message: msg, data: data, timestamp: Date.now() }); | CODE |
| HIGH⚡ | workflows/workflow_use/workflow/semantic_extractor.py | 615 | hints.push('click_date'); | CODE |
| HIGH⚡ | workflows/workflow_use/workflow/semantic_extractor.py | 617 | hints.push('selected_date'); | CODE |
| HIGH⚡ | workflows/workflow_use/workflow/semantic_extractor.py | 621 | hints.push('select_option'); | CODE |
| HIGH⚡ | workflows/workflow_use/workflow/semantic_extractor.py | 623 | hints.push('expanded'); | CODE |
| HIGH⚡ | workflows/workflow_use/workflow/semantic_extractor.py | 627 | hints.push('select_flight'); | CODE |
| HIGH⚡ | workflows/workflow_use/workflow/semantic_extractor.py | 629 | hints.push('selection_button'); | CODE |
| HIGH⚡ | workflows/workflow_use/workflow/semantic_extractor.py | 698 | if (!elementText && el.getAttribute('aria-label')) { | CODE |
| HIGH⚡ | workflows/workflow_use/workflow/semantic_extractor.py | 700 | } else if (!elementText && el.getAttribute('title')) { | CODE |
| HIGH⚡ | workflows/workflow_use/workflow/semantic_extractor.py | 702 | } else if (!elementText && el.getAttribute('placeholder')) { | CODE |
| HIGH | workflows/workflow_use/workflow/semantic_extractor.py | 267 | .filter(attr => attr.name && attr.name.startsWith('data-')) | CODE |
| HIGH | workflows/workflow_use/workflow/semantic_extractor.py | 481 | while (current && current !== document.body && path.length < 5) { | CODE |
| HIGH | workflows/workflow_use/workflow/semantic_extractor.py | 490 | if (firstClass && firstClass.match(/^[a-zA-Z_-][a-zA-Z0-9_-]*$/)) { | CODE |
| HIGH | workflows/workflow_use/workflow/semantic_extractor.py | 548 | if (cellText && cellText.length < 50) { | CODE |
| HIGH | workflows/workflow_use/workflow/semantic_extractor.py | 650 | if (rect.width === 0 || rect.height === 0 || | CODE |
| HIGH | workflows/workflow_use/workflow/semantic_extractor.py | 682 | if (el.type && el.type !== 'submit' && el.type !== 'button' && el.type !== '') { | CODE |
| HIGH | workflows/workflow_use/workflow/semantic_extractor.py | 746 | elements.push(elementData); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | workflows/IMPLEMENTATION_SUMMARY.md | 202 | except Exception as e: | CODE |
| LOW | workflows/migrate_json_to_yaml.py | 56 | except Exception as e: | CODE |
| LOW | workflows/migrate_json_to_yaml.py | 109 | except Exception as e: | CODE |
| MEDIUM | workflows/migrate_json_to_yaml.py | 208 | print(f'Error: Directory does not exist: {directory}') | STRING |
| MEDIUM | workflows/migrate_json_to_yaml.py | 212 | print(f'Error: Not a directory: {directory}') | STRING |
| LOW⚡ | workflows/cli.py | 1216 | except Exception as e: | CODE |
| LOW | workflows/cli.py | 39 | except Exception as e: | CODE |
| LOW | workflows/cli.py | 110 | except Exception as e: | CODE |
| LOW | workflows/cli.py | 147 | except Exception as e: | CODE |
| LOW | workflows/cli.py | 192 | except Exception as e: | CODE |
| LOW | workflows/cli.py | 201 | except Exception as e: | CODE |
| LOW | workflows/cli.py | 240 | except Exception as e: | CODE |
| LOW | workflows/cli.py | 440 | except Exception as e: | CODE |
| LOW | workflows/cli.py | 456 | except Exception as e: | CODE |
| LOW | workflows/cli.py | 489 | except Exception as e: | CODE |
| LOW | workflows/cli.py | 639 | except Exception as e: | CODE |
| LOW | workflows/cli.py | 657 | except Exception as e: | CODE |
| LOW | workflows/cli.py | 790 | except Exception as e: | CODE |
| LOW | workflows/cli.py | 824 | except Exception: | CODE |
| LOW | workflows/cli.py | 930 | except Exception as e: | CODE |
| LOW | workflows/cli.py | 1008 | except Exception as e: | CODE |
| LOW | workflows/cli.py | 1159 | except Exception as e: | CODE |
| LOW | workflows/cli.py | 1176 | except Exception as e: | CODE |
| LOW | workflows/cli.py | 1320 | except Exception as e: | CODE |
| LOW | workflows/cli.py | 1372 | except Exception as e: | CODE |
| LOW | workflows/cli.py | 1383 | except Exception as e: | CODE |
| LOW | workflows/cli.py | 1516 | except Exception as e: | CODE |
| LOW | workflows/cli.py | 1609 | except Exception as e: | CODE |
| LOW | workflows/cli.py | 1736 | except Exception as e: | CODE |
| LOW | workflows/cli.py | 1829 | except Exception as e: | CODE |
| LOW | workflows/cli.py | 1872 | except Exception as e: | CODE |
| LOW | workflows/cli.py | 2015 | except Exception as e: | CODE |
| LOW | workflows/cli.py | 2095 | except Exception as e: | CODE |
| LOW | workflows/cli.py | 2295 | except Exception as e: | CODE |
| LOW | workflows/cli.py | 2392 | except Exception as e: | CODE |
| LOW | workflows/tests/test_selector_generator.py | 284 | except Exception as e: | CODE |
| LOW | workflows/tests/test_recorded_workflow.py | 22 | except Exception as e: | CODE |
| LOW | workflows/tests/test_element_finder.py | 318 | except Exception as e: | CODE |
| LOW | workflows/tests/test_workflow_execution.py | 220 | except Exception as e: | CODE |
| LOW | workflows/tests/test_go_back_fix.py | 39 | except Exception as e: | CODE |
| LOW | workflows/tests/test_go_back_fix.py | 59 | except Exception as e: | CODE |
| LOW | workflows/tests/test_xpath_optimization.py | 440 | except Exception as e: | CODE |
| LOW | workflows/backend/service.py | 189 | except Exception as e: | CODE |
| MEDIUM | workflows/backend/service.py | 190 | print(f'Error loading workflow: {e}') | CODE |
| LOW | workflows/backend/service.py | 226 | except Exception as exc: | CODE |
| LOW | workflows/backend/routers.py | 85 | except Exception as exc: | CODE |
| LOW | workflows/docs/PROGRESS_TRACKING.md | 347 | except Exception as e: | CODE |
| LOW | workflows/docs/PROGRESS_TRACKING.md | 470 | except Exception: | CODE |
| LOW | workflows/docs/PROGRESS_TRACKING.md | 775 | except Exception as e: | CODE |
| MEDIUM | workflows/docs/PROGRESS_TRACKING.md | 462 | def main(): | CODE |
| LOW | …s/scripts/deterministic/test_deterministic_workflow.py | 83 | except Exception as e: | CODE |
| LOW | …s/scripts/deterministic/test_deterministic_workflow.py | 133 | except Exception as e: | CODE |
| LOW | …ows/examples/scripts/deterministic/test_custom_task.py | 96 | except Exception as e: | STRING |
| LOW | …amples/scripts/deterministic/auto_generate_workflow.py | 141 | except Exception as e: | STRING |
| LOW | …ws/examples/scripts/deterministic/run_complete_test.py | 108 | except Exception as e: | CODE |
| LOW | …ws/examples/scripts/deterministic/run_complete_test.py | 124 | except Exception as e: | CODE |
| LOW | …mples/scripts/variables/run_workflow_with_variables.py | 34 | except Exception as e: | CODE |
| LOW | …ows/examples/scripts/demos/semantic_extraction_demo.py | 74 | except Exception as e: | CODE |
| LOW | …/examples/scripts/demos/hierarchical_selection_demo.py | 338 | except Exception as e: | STRING |
| LOW | …/examples/scripts/demos/hierarchical_selection_demo.py | 791 | except Exception as e: | CODE |
| 171 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | extension/src/entrypoints/background.ts | 92 | async function broadcastWorkflowDataUpdate(): Promise<Workflow> { | CODE |
| LOW | extension/src/entrypoints/background.ts | 299 | function convertStoredEventsToSteps(events: StoredEvent[]): Step[] { | CODE |
| LOW | workflows/cli.py | 65 | def _build_and_save_workflow_from_recording( | CODE |
| LOW | workflows/cli.py | 153 | def _build_and_save_semantic_workflow_from_recording( | CODE |
| LOW | workflows/cli.py | 245 | def _fix_missing_navigation_steps(steps): | CODE |
| LOW | workflows/cli.py | 380 | async def _convert_recording_to_semantic_workflow(recording_data, description, simulate_interactions, auto_fix_navigatio | CODE |
| LOW | workflows/cli.py | 525 | def _filter_redundant_click_events(steps): | CODE |
| LOW | workflows/cli.py | 618 | def _select_best_click_from_group(click_group): | CODE |
| LOW | workflows/cli.py | 687 | async def _convert_step_to_semantic(step, semantic_mapping, browser, simulate_interactions): | CODE |
| LOW | workflows/cli.py | 796 | async def _simulate_step_interaction(step, browser): | CODE |
| LOW | workflows/cli.py | 829 | def _find_best_semantic_match(element_text, semantic_mapping): | CODE |
| LOW | workflows/cli.py | 850 | def _extract_target_from_selector(css_selector): | CODE |
| LOW | workflows/cli.py | 1017 | def build_from_recording_command( | CODE |
| LOW | workflows/cli.py | 1051 | def build_semantic_from_recording_command( | CODE |
| LOW | workflows/cli.py | 1328 | def run_workflow_no_ai_command( | CODE |
| LOW | workflows/cli.py | 1524 | def generate_semantic_mapping_command( | CODE |
| LOW | workflows/cli.py | 1617 | def create_semantic_workflow_command( | CODE |
| LOW | workflows/cli.py | 1631 | async def _create_semantic_workflow(): | CODE |
| LOW | workflows/cli.py | 2186 | def generate_csv_template_command( | CODE |
| LOW | workflows/cli.py | 2304 | def generate_workflow_from_task( | CODE |
| LOW | workflows/BUGFIX_SUMMARY.md | 120 | def test_callbacks_are_optional(self): | CODE |
| LOW | workflows/QUICK_START_PROGRESS_TRACKING.md | 9 | async def generate_without_tracking(): | CODE |
| LOW | workflows/tests/test_selector_generator_fix.py | 11 | def test_selector_generator_initialization(): | CODE |
| LOW | workflows/tests/test_selector_generator.py | 18 | def test_button_with_text_generates_semantic_strategies(self): | CODE |
| LOW | workflows/tests/test_selector_generator.py | 45 | def test_no_css_id_strategies(self): | CODE |
| LOW⚡ | workflows/tests/test_selector_generator.py | 84 | def test_placeholder_strategy(self): | CODE |
| LOW | workflows/tests/test_selector_generator.py | 147 | def test_explicit_role_takes_precedence(self): | CODE |
| LOW | workflows/tests/test_selector_generator.py | 153 | def test_strategy_priority_ordering(self): | CODE |
| LOW | workflows/tests/test_selector_generator.py | 172 | def test_element_with_no_semantic_data(self): | CODE |
| LOW | workflows/tests/test_selector_generator.py | 183 | def test_generate_strategies_dict(self): | CODE |
| LOW | workflows/tests/test_selector_generator.py | 201 | def test_fuzzy_text_only_for_meaningful_text(self): | CODE |
| LOW | workflows/tests/test_selector_generator.py | 226 | def test_selector_strategy_serialization(self): | CODE |
| LOW | workflows/tests/test_wait_times.py | 303 | async def test_run_with_no_ai_wait_logic(): | CODE |
| LOW | workflows/tests/test_progress_tracking.py | 44 | def test_step_callback_data_structure(self): | CODE |
| LOW | workflows/tests/test_progress_tracking.py | 72 | def test_status_callback_messages(self): | CODE |
| LOW | workflows/tests/test_progress_tracking.py | 94 | def test_callbacks_are_optional(self): | CODE |
| LOW | workflows/tests/test_progress_tracking.py | 108 | def test_status_callback_exception_handling(self): | CODE |
| LOW | workflows/tests/test_progress_tracking.py | 121 | def test_async_callback_pattern(self): | CODE |
| LOW | workflows/tests/test_progress_tracking.py | 181 | def test_description_generation(self): | CODE |
| LOW | workflows/tests/test_progress_tracking.py | 249 | async def test_full_workflow_with_callbacks(self): | CODE |
| LOW | workflows/tests/test_element_finder.py | 175 | async def test_multiple_strategies_fallback(self): | CODE |
| LOW | workflows/tests/test_element_finder.py | 202 | async def test_no_match_returns_none(self): | CODE |
| LOW | workflows/tests/test_element_finder.py | 222 | async def test_empty_strategies_returns_none(self): | CODE |
| LOW | workflows/tests/test_element_finder.py | 231 | async def test_no_dom_state_returns_none(self): | CODE |
| LOW | workflows/tests/test_element_finder.py | 243 | async def test_empty_selector_map_returns_none(self): | CODE |
| LOW | workflows/tests/test_element_finder.py | 257 | async def test_fuzzy_matching_threshold(self): | CODE |
| LOW | workflows/tests/test_element_finder.py | 275 | async def test_fuzzy_matching_case_insensitive(self): | CODE |
| LOW | workflows/tests/test_workflow_execution.py | 20 | def test_go_back_uses_no_params_action(self): | CODE |
| LOW | workflows/tests/test_workflow_execution.py | 37 | def test_go_forward_uses_no_params_action(self): | CODE |
| LOW | workflows/tests/test_workflow_execution.py | 52 | def test_other_actions_preserve_params(self): | CODE |
| LOW | workflows/tests/test_workflow_execution.py | 65 | def test_action_model_format_for_empty_actions(self): | CODE |
| LOW | workflows/tests/test_workflow_execution.py | 80 | def test_navigation_step_schema(self): | CODE |
| LOW | workflows/tests/test_workflow_execution.py | 88 | async def test_click_action_uses_multi_strategy(self): | CODE |
| LOW⚡ | workflows/tests/test_workflow_execution.py | 104 | async def test_input_action_uses_multi_strategy(self): | CODE |
| LOW⚡ | workflows/tests/test_workflow_execution.py | 118 | async def test_actions_without_strategies_skip_multi_strategy(self): | CODE |
| LOW | workflows/tests/test_workflow_execution.py | 131 | async def test_element_index_injection(self): | CODE |
| LOW | workflows/tests/test_workflow_execution.py | 146 | def test_semantic_strategies_format(self): | CODE |
| LOW | workflows/tests/test_workflow_execution.py | 168 | def test_actions_requiring_wait(self): | CODE |
| LOW | workflows/tests/test_step_counter_without_callback.py | 9 | def test_step_counter_increments_without_callback(): | CODE |
| LOW | workflows/tests/test_step_counter_without_callback.py | 77 | def test_status_update_uses_counter(): | CODE |
| 128 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 22 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 24 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 52 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 54 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 74 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 76 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 84 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 86 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 94 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 96 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 104 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 106 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 114 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 116 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 124 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 126 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 134 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 136 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 144 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 146 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 182 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 184 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 210 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 212 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 237 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 239 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 258 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 260 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 287 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 289 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 297 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 299 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 320 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 322 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 346 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 348 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 369 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 371 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 391 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/tests/test_xpath_optimization.py | 393 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/examples/scripts/generate_workflow.py | 23 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/examples/scripts/generate_workflow.py | 25 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | workflows/examples/scripts/generate_workflow.py | 33 | # ============================================================================ | STRING |
| MEDIUM⚡ | workflows/examples/scripts/generate_workflow.py | 35 | # ============================================================================ | STRING |
| MEDIUM⚡ | workflows/examples/scripts/generate_workflow.py | 47 | # ============================================================================ | STRING |
| MEDIUM⚡ | workflows/examples/scripts/generate_workflow.py | 49 | # ============================================================================ | STRING |
| MEDIUM | workflows/workflow_use/workflow/service.py | 947 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | workflows/workflow_use/workflow/service.py | 949 | # ------------------------------------------------------------------ | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | workflows/cli.py | 1226 | # Check if all REQUIRED inputs have defaults (can skip prompting) | COMMENT |
| LOW | workflows/cli.py | 267 | # Check if this looks like a form progression (common patterns) | COMMENT |
| LOW | workflows/cli.py | 334 | # Check if this looks like a navigation button for our target page | COMMENT |
| LOW | workflows/cli.py | 550 | # Check if this is a duplicate click on the same target | COMMENT |
| LOW⚡ | workflows/cli.py | 1225 | if input_definitions: # Check if the list is not empty | CODE |
| LOW | workflows/cli.py | 1397 | # Check if all REQUIRED inputs have defaults (can skip prompting) | COMMENT |
| LOW | workflows/cli.py | 1919 | # Check if we should stop execution due to critical failures | COMMENT |
| LOW | workflows/cli.py | 2509 | # Check if all REQUIRED inputs have defaults (can run without user input) | COMMENT |
| LOW | workflows/cli.py | 1396 | if input_definitions: # Check if the list is not empty | CODE |
| LOW | workflows/tests/test_step_counter_without_callback.py | 42 | # Check if this line is NOT inside an "if self.on_step_recorded:" block | COMMENT |
| LOW | workflows/tests/run_all_tests.py | 19 | # Print output | COMMENT |
| LOW | …mples/scripts/variables/run_workflow_with_variables.py | 134 | # Check if created by create script | COMMENT |
| LOW | workflows/workflow_use/controller/service.py | 127 | # Check if it's a SELECT element | COMMENT |
| LOW | workflows/workflow_use/schema/views.py | 247 | # Check if last step is an extract step | COMMENT |
| LOW | workflows/workflow_use/workflow/service.py | 570 | # Check if placeholder wasn't resolved (value unchanged and still has placeholders) | COMMENT |
| LOW | workflows/workflow_use/workflow/service.py | 646 | # Check if this is a selector step without cssSelector - use semantic execution | COMMENT |
| LOW | workflows/workflow_use/workflow/service.py | 903 | # Check if cancellation was requested | COMMENT |
| LOW | workflows/workflow_use/workflow/service.py | 1094 | # Check if cancellation was requested | COMMENT |
| LOW | workflows/workflow_use/workflow/variable_identifier.py | 295 | # Check if hints suggest this is a name field | COMMENT |
| LOW | workflows/workflow_use/workflow/validation_utils.py | 51 | # Check if any are visible | COMMENT |
| LOW⚡ | workflows/workflow_use/workflow/semantic_executor.py | 559 | # Check if element exists first | COMMENT |
| LOW⚡ | workflows/workflow_use/workflow/semantic_executor.py | 565 | # Check if it's visible | COMMENT |
| LOW⚡ | workflows/workflow_use/workflow/semantic_executor.py | 568 | # Check if this selector resolves to multiple elements (strict mode violation) | COMMENT |
| LOW⚡ | workflows/workflow_use/workflow/semantic_executor.py | 2168 | # Check if we're still on the same form step/page when we should have progressed | COMMENT |
| LOW⚡ | workflows/workflow_use/workflow/semantic_executor.py | 2912 | # Check if this is a calendar element | COMMENT |
| LOW⚡ | workflows/workflow_use/workflow/semantic_executor.py | 2914 | # Check if date matches | COMMENT |
| LOW⚡ | workflows/workflow_use/workflow/semantic_executor.py | 2918 | # Check if it's the right calendar type | COMMENT |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 254 | # Check if target matches either the full text or original text | COMMENT |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 306 | # Check if target text is contained in element text, original text, OR label text | COMMENT |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 315 | # Check if the target text matches the value or is close to the label | COMMENT |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 389 | # Check if text matches common ID/code patterns | COMMENT |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 412 | # Check if element is in a structured container | COMMENT |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 419 | # Check if text looks like an ID/code | COMMENT |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 445 | # Check if any significant keyword appears | COMMENT |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 1116 | # Check if input has pointer-events: none (hidden input pattern) | COMMENT |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 1212 | # Check if this is a submit button that should trigger navigation | COMMENT |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 1903 | # Check if we've hit global failure limits before starting | COMMENT |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 1999 | # Check if we should stop due to verification failures | COMMENT |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 2247 | # Check if the target element for the next step is now available | COMMENT |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 2291 | # Check if expected elements are present on page | COMMENT |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 2526 | # Check if it's a SELECT element | COMMENT |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 2984 | # Check if this is a dropdown element | COMMENT |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 2986 | # Check if option text matches | COMMENT |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 3048 | # Check if this is a booking element | COMMENT |
| LOW⚡ | workflows/workflow_use/workflow/step_verifier.py | 364 | # Check if URL changed | COMMENT |
| LOW⚡ | workflows/workflow_use/workflow/step_verifier.py | 368 | # Check if DOM changed significantly | COMMENT |
| LOW⚡ | workflows/workflow_use/workflow/step_verifier.py | 373 | # Check if visible elements changed | COMMENT |
| LOW | workflows/workflow_use/workflow/step_verifier.py | 343 | # Check if page is in a loading state | COMMENT |
| LOW | workflows/workflow_use/workflow/step_verifier.py | 521 | # Check if output was captured | COMMENT |
| LOW | workflows/workflow_use/workflow/element_finder.py | 202 | # Check if element matches the strategy | COMMENT |
| LOW | workflows/workflow_use/workflow/element_finder.py | 233 | # Check if node is visible - this is a hard requirement | COMMENT |
| LOW | workflows/workflow_use/workflow/element_finder.py | 276 | # Check if target_text matches any text source | COMMENT |
| LOW | workflows/workflow_use/workflow/element_finder.py | 378 | # Check if node is visible - this is a hard requirement | COMMENT |
| LOW | workflows/workflow_use/workflow/element_finder.py | 423 | # Check if target_text matches any text source | COMMENT |
| LOW | workflows/workflow_use/workflow/semantic_extractor.py | 884 | # Check if the selector contains the target as an ID or name | COMMENT |
| LOW | workflows/workflow_use/workflow/semantic_extractor.py | 903 | # Check if the context matches | COMMENT |
| LOW | workflows/workflow_use/workflow/semantic_extractor.py | 907 | # Check if context matches container or DOM path | COMMENT |
| LOW | workflows/workflow_use/workflow/semantic_extractor.py | 1003 | # Check if all parts of the target word appear in the element text | COMMENT |
| LOW | workflows/workflow_use/workflow/semantic_extractor.py | 1044 | # Check if the base text matches | COMMENT |
| LOW⚡ | workflows/workflow_use/recorder/service.py | 141 | # Check if browser is still running by trying to get current page | COMMENT |
| 13 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | workflows/migrate_json_to_yaml.py | 61 | CODE | |
| LOW | workflows/cli.py | 245 | CODE | |
| LOW | workflows/cli.py | 316 | CODE | |
| LOW | workflows/cli.py | 380 | CODE | |
| LOW | workflows/cli.py | 525 | CODE | |
| LOW | workflows/cli.py | 618 | CODE | |
| LOW | workflows/cli.py | 687 | CODE | |
| LOW | workflows/cli.py | 796 | CODE | |
| LOW | workflows/cli.py | 1182 | CODE | |
| LOW | workflows/cli.py | 1328 | CODE | |
| LOW | workflows/cli.py | 1524 | CODE | |
| LOW | workflows/cli.py | 1617 | CODE | |
| LOW | workflows/cli.py | 1744 | CODE | |
| LOW | workflows/cli.py | 2186 | CODE | |
| LOW | workflows/cli.py | 2439 | CODE | |
| LOW | workflows/cli.py | 1198 | CODE | |
| LOW | workflows/cli.py | 1352 | CODE | |
| LOW | workflows/cli.py | 1538 | CODE | |
| LOW | workflows/cli.py | 1631 | CODE | |
| LOW | workflows/cli.py | 1805 | CODE | |
| LOW | workflows/cli.py | 2021 | CODE | |
| LOW | workflows/tests/test_progress_tracking.py | 181 | CODE | |
| LOW | workflows/tests/test_progress_tracking.py | 216 | CODE | |
| LOW | workflows/tests/test_step_counter_without_callback.py | 9 | CODE | |
| LOW | workflows/examples/scripts/generate_workflow.py | 52 | CODE | |
| LOW | …ows/examples/scripts/deterministic/test_custom_task.py | 17 | CODE | |
| LOW | …ws/examples/scripts/deterministic/run_complete_test.py | 70 | CODE | |
| LOW | …scripts/deterministic/create_deterministic_workflow.py | 20 | CODE | |
| LOW | …/examples/scripts/demos/hierarchical_selection_demo.py | 343 | CODE | |
| LOW | workflows/examples/scripts/demos/travel_booking_demo.py | 46 | CODE | |
| LOW | workflows/examples/scripts/demos/travel_booking_demo.py | 184 | CODE | |
| LOW | workflows/examples/scripts/demos/travel_booking_demo.py | 245 | CODE | |
| LOW | workflows/examples/scripts/demos/travel_booking_demo.py | 273 | CODE | |
| LOW | workflows/workflow_use/mcp/service.py | 27 | CODE | |
| LOW | workflows/workflow_use/storage/service.py | 80 | CODE | |
| LOW | workflows/workflow_use/controller/utils.py | 133 | CODE | |
| LOW | workflows/workflow_use/workflow/service.py | 139 | CODE | |
| LOW | workflows/workflow_use/workflow/service.py | 508 | CODE | |
| LOW | workflows/workflow_use/workflow/service.py | 586 | CODE | |
| LOW | workflows/workflow_use/workflow/service.py | 630 | CODE | |
| LOW | workflows/workflow_use/workflow/service.py | 723 | CODE | |
| LOW | workflows/workflow_use/workflow/service.py | 851 | CODE | |
| LOW | workflows/workflow_use/workflow/service.py | 1047 | CODE | |
| LOW | workflows/workflow_use/workflow/variable_identifier.py | 132 | CODE | |
| LOW | workflows/workflow_use/workflow/validation_utils.py | 26 | CODE | |
| LOW | workflows/workflow_use/workflow/validation_utils.py | 90 | CODE | |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 225 | CODE | |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 356 | CODE | |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 483 | CODE | |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 526 | CODE | |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 599 | CODE | |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 638 | CODE | |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 743 | CODE | |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 1046 | CODE | |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 1401 | CODE | |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 1550 | CODE | |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 1863 | CODE | |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 1901 | CODE | |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 2163 | CODE | |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 2273 | CODE | |
| 42 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | workflows/cli.py | 824 | except Exception: | CODE |
| HIGH | workflows/workflow_use/workflow/validation_utils.py | 141 | except Exception: | CODE |
| HIGH | workflows/workflow_use/workflow/semantic_executor.py | 3226 | except Exception: | CODE |
| HIGH | workflows/workflow_use/workflow/semantic_executor.py | 2263 | except Exception: | CODE |
| HIGH | workflows/workflow_use/workflow/semantic_executor.py | 620 | except Exception: | CODE |
| HIGH | workflows/workflow_use/workflow/semantic_executor.py | 2537 | except Exception: | CODE |
| HIGH | workflows/workflow_use/workflow/step_verifier.py | 437 | except Exception: | CODE |
| HIGH | workflows/workflow_use/recorder/service.py | 201 | except asyncio.CancelledError: # If capture_workflow itself was cancelled | CODE |
| HIGH | workflows/workflow_use/recorder/service.py | 212 | except asyncio.CancelledError: | CODE |
| HIGH | workflows/workflow_use/recorder/service.py | 232 | except asyncio.CancelledError: | CODE |
| HIGH | workflows/workflow_use/recorder/service.py | 154 | except Exception: | CODE |
| HIGH | workflows/workflow_use/healing/service.py | 315 | except Exception: | CODE |
| HIGH | workflows/workflow_use/healing/service.py | 733 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | extension/src/entrypoints/content.ts | 47 | "placeholder", | CODE |
| LOW | workflows/cli.py | 729 | semantic_info.get('placeholder', ''), | CODE |
| LOW | workflows/cli.py | 2253 | names = ['John Doe', 'Jane Smith', 'Bob Johnson'] | CODE |
| LOW⚡ | workflows/tests/test_selector_generator.py | 86 | element_data = {'tag_name': 'input', 'text': '', 'attributes': {'placeholder': 'Enter your email'}} | CODE |
| LOW⚡ | workflows/tests/test_selector_generator.py | 91 | assert 'placeholder' in strategy_types, 'Missing placeholder strategy' | CODE |
| LOW⚡ | workflows/tests/test_selector_generator.py | 93 | placeholder = next(s for s in strategies if s.type == 'placeholder') | CODE |
| LOW | workflows/tests/test_element_finder.py | 103 | strategies = [{'type': 'placeholder', 'value': 'Enter your email', 'priority': 4, 'metadata': {}}] | CODE |
| LOW⚡ | workflows/tests/test_workflow_execution.py | 110 | 'selectorStrategies': [{'type': 'placeholder', 'value': 'Enter your email', 'priority': 4, 'metadata': {}}], | CODE |
| LOW⚡ | workflows/tests/test_xpath_optimization.py | 192 | 'attributes': {'name': 'email', 'type': 'email', 'placeholder': 'Enter your email'}, | CODE |
| LOW⚡ | workflows/tests/test_xpath_optimization.py | 200 | assert 'placeholder' in strategy_types, 'Should have placeholder strategy' | CODE |
| LOW⚡ | …mples/scripts/variables/run_workflow_with_variables.py | 326 | valid = {'email': 'user@example.com', 'age': 25, 'subscribe': True} | CODE |
| LOW⚡ | …mples/scripts/variables/run_workflow_with_variables.py | 333 | print(" {'email': 'user@example.com'}") | CODE |
| LOW⚡ | …mples/scripts/variables/run_workflow_with_variables.py | 337 | print(" {'email': 'user@example.com', 'age': 'twenty-five'}") | CODE |
| LOW⚡ | …mples/scripts/variables/run_workflow_with_variables.py | 341 | print(" {'email': 'user@example.com', 'age': 25, 'extra': 'field'}") | CODE |
| LOW | …/examples/scripts/demos/hierarchical_selection_demo.py | 462 | ('John Doe', 2), # First data row (after header) | STRING |
| LOW | …/examples/scripts/demos/hierarchical_selection_demo.py | 602 | "await executor.find_element_in_container('Edit', container_text='John Doe')", | STRING |
| LOW⚡ | workflows/workflow_use/controller/utils.py | 57 | 'placeholder', | CODE |
| LOW | workflows/workflow_use/controller/utils.py | 143 | for attr in ['placeholder', 'aria-label', 'title', 'name']: | CODE |
| LOW | workflows/workflow_use/workflow/variable_identifier.py | 270 | if 'placeholder' in context: | CODE |
| LOW | workflows/workflow_use/workflow/variable_identifier.py | 271 | hints.append(context['placeholder'].lower()) | CODE |
| LOW | workflows/workflow_use/workflow/variable_identifier.py | 351 | for key in ['name', 'id', 'label', 'placeholder', 'target_text']: | CODE |
| LOW | workflows/workflow_use/workflow/variable_identifier.py | 408 | for key in ['labelText', 'placeholder', 'ariaLabel', 'name', 'id', 'textContent']: | CODE |
| LOW | workflows/workflow_use/workflow/variable_identifier.py | 438 | if 'placeholder' in context and context['placeholder']: | CODE |
| LOW | workflows/workflow_use/workflow/variable_identifier.py | 439 | return f'Enter {context["placeholder"].lower()}' | CODE |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 975 | const placeholder = el.getAttribute('placeholder') || ''; | CODE |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 2761 | container_text: Text content to identify the container (e.g., "John Doe") | STRING |
| LOW⚡ | workflows/workflow_use/workflow/element_finder.py | 576 | node_placeholder = getattr(node, 'placeholder', '') or '' | CODE |
| LOW⚡ | workflows/workflow_use/workflow/element_finder.py | 577 | if node_placeholder and element_data.get('placeholder'): | CODE |
| LOW⚡ | workflows/workflow_use/workflow/element_finder.py | 579 | if node_placeholder == element_data['placeholder']: | CODE |
| LOW | workflows/workflow_use/workflow/element_finder.py | 117 | 'placeholder', | CODE |
| LOW | workflows/workflow_use/workflow/element_finder.py | 257 | placeholder = get_attr(node, 'placeholder', '') or '' | CODE |
| LOW | workflows/workflow_use/workflow/element_finder.py | 332 | elif strategy_type == 'placeholder': | CODE |
| LOW | workflows/workflow_use/workflow/element_finder.py | 333 | placeholder = get_attr(node, 'placeholder', '') or '' | CODE |
| LOW | workflows/workflow_use/workflow/element_finder.py | 404 | placeholder = getattr(node, 'placeholder', '') or '' | CODE |
| LOW⚡ | workflows/workflow_use/workflow/semantic_extractor.py | 702 | } else if (!elementText && el.getAttribute('placeholder')) { | CODE |
| LOW⚡ | workflows/workflow_use/workflow/semantic_extractor.py | 703 | elementText = el.getAttribute('placeholder'); | CODE |
| LOW | workflows/workflow_use/workflow/semantic_extractor.py | 73 | element_info.get('placeholder', ''), | CODE |
| LOW | workflows/workflow_use/workflow/error_reporter.py | 252 | not s.success and s.strategy_type in ['text_exact', 'role_text', 'aria_label', 'placeholder'] | CODE |
| LOW⚡ | …orkflow_use/workflow/tests/test_variable_identifier.py | 35 | context = {'name': 'phone', 'placeholder': 'Enter phone number'} | CODE |
| LOW | …orkflow_use/workflow/tests/test_variable_identifier.py | 128 | 'semanticInfo': {'name': 'username', 'placeholder': 'Enter username'}, | CODE |
| LOW | …orkflow_use/workflow/tests/test_variable_identifier.py | 169 | 'value': '555-1234', | CODE |
| LOW | workflows/workflow_use/recorder/semantic_converter.py | 163 | for field in ['placeholder', 'ariaLabel']: | CODE |
| LOW | workflows/workflow_use/healing/service.py | 565 | or attrs.get('placeholder') | CODE |
| LOW | workflows/workflow_use/healing/service.py | 635 | or attrs.get('placeholder') | CODE |
| LOW | …kflows/workflow_use/healing/deterministic_converter.py | 362 | for attr in ['aria-label', 'placeholder', 'title', 'alt']: | CODE |
| LOW⚡ | workflows/workflow_use/healing/selector_generator.py | 153 | if 'placeholder' in attrs and attrs['placeholder']: | CODE |
| LOW⚡ | workflows/workflow_use/healing/selector_generator.py | 156 | type='placeholder', | CODE |
| LOW⚡ | workflows/workflow_use/healing/selector_generator.py | 157 | value=attrs['placeholder'], | CODE |
| LOW | workflows/workflow_use/healing/selector_generator.py | 383 | elif 'placeholder' in attrs and attrs['placeholder']: | CODE |
| LOW | workflows/workflow_use/healing/selector_generator.py | 384 | conditions.append(f'@placeholder={self._escape_xpath_value(attrs["placeholder"])}') | CODE |
| LOW⚡ | workflows/workflow_use/healing/selector_generator.py | 444 | if 'placeholder' in attrs and attrs['placeholder']: | CODE |
| LOW⚡ | workflows/workflow_use/healing/selector_generator.py | 445 | parts.append(f'[placeholder="{self._escape_quotes(attrs["placeholder"])}"]') | CODE |
| LOW⚡ | …/workflow_use/healing/tests/test_variable_extractor.py | 25 | assert markers[0][2] == 'user@example.com' # value | CODE |
| LOW | …flow_use/healing/prompts/workflow_validation_prompt.md | 60 | - Example: `{"value": "John Doe"}` in a search field → should be `{"value": "{{search_name}}"}` | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | workflows/QUICK_START_PROGRESS_TRACKING.md | 5 | ### Step 1: Update Your Code (Add 6 Lines) | COMMENT |
| LOW | workflows/QUICK_START_PROGRESS_TRACKING.md | 38 | ## Step 2: For Database Storage (Browser-Use Cloud) | COMMENT |
| LOW | workflows/QUICK_START_PROGRESS_TRACKING.md | 77 | ## Step 3: Create Polling Endpoint | COMMENT |
| LOW | workflows/QUICK_START_PROGRESS_TRACKING.md | 97 | ## Step 4: Frontend (Poll Every 2 Seconds) | COMMENT |
| LOW⚡ | …rkflows/examples/workflows/basic/example_workflow.yaml | 27 | # Step 1: Navigation step | COMMENT |
| LOW⚡ | …rkflows/examples/workflows/basic/example_workflow.yaml | 33 | # Step 2: Click step (using semantic target_text) | COMMENT |
| LOW⚡ | …rkflows/examples/workflows/basic/example_workflow.yaml | 41 | # Step 3: Extract content step | COMMENT |
| LOW⚡ | …rkflows/examples/workflows/basic/example_workflow.yaml | 47 | # Step 4: Click on Issues tab | COMMENT |
| LOW⚡ | …rkflows/examples/workflows/basic/example_workflow.yaml | 53 | # Step 5: Click on New Issue button | COMMENT |
| LOW⚡ | …rkflows/examples/workflows/basic/example_workflow.yaml | 59 | # Step 6: Input text into title field | COMMENT |
| LOW⚡ | …rkflows/examples/workflows/basic/example_workflow.yaml | 66 | # Step 7: Input text into description | COMMENT |
| LOW⚡ | …rkflows/examples/workflows/basic/example_workflow.yaml | 73 | # Step 8: Select dropdown option | COMMENT |
| LOW⚡ | …rkflows/examples/workflows/basic/example_workflow.yaml | 80 | # Step 9: Checkbox interaction | COMMENT |
| LOW⚡ | …rkflows/examples/workflows/basic/example_workflow.yaml | 87 | # Step 10: Press keyboard key | COMMENT |
| LOW⚡ | …rkflows/examples/workflows/basic/example_workflow.yaml | 92 | # Step 11: Agent step - for complex tasks that need AI | COMMENT |
| LOW⚡ | workflows/examples/scripts/demos/travel_booking_demo.py | 173 | # Step 7: Analyze and select flight | COMMENT |
| LOW | workflows/examples/scripts/demos/travel_booking_demo.py | 60 | # Step 1: Handle departure city input | COMMENT |
| LOW | workflows/examples/scripts/demos/travel_booking_demo.py | 73 | # Step 2: Handle destination city input | COMMENT |
| LOW | workflows/examples/scripts/demos/travel_booking_demo.py | 86 | # Step 3: Handle departure date selection | COMMENT |
| LOW | workflows/examples/scripts/demos/travel_booking_demo.py | 132 | # Step 4: Handle return date selection | COMMENT |
| LOW | workflows/examples/scripts/demos/travel_booking_demo.py | 146 | # Step 5: Handle travelers and cabin class | COMMENT |
| LOW | workflows/examples/scripts/demos/travel_booking_demo.py | 160 | # Step 6: Search for flights | COMMENT |
| LOW | …rkflows/examples/scripts/demos/generation_mode_demo.py | 50 | # Step 1: Generate workflow | COMMENT |
| LOW⚡ | …rkflows/examples/scripts/demos/generation_mode_demo.py | 90 | # Step 2: Save to storage | COMMENT |
| LOW⚡ | …rkflows/examples/scripts/demos/generation_mode_demo.py | 106 | # Step 3: List workflows | COMMENT |
| LOW⚡ | …rkflows/examples/scripts/demos/generation_mode_demo.py | 112 | # Step 4: Retrieve and display | COMMENT |
| LOW | …rkflows/examples/scripts/demos/generation_mode_demo.py | 124 | # Step 5: Run the workflow | COMMENT |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 2772 | # Step 1: Find the container | COMMENT |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 2793 | # Step 2: Find the target element within the container | COMMENT |
| LOW⚡ | workflows/workflow_use/healing/service.py | 146 | # Step 2: Clean up YAML | COMMENT |
| LOW | workflows/workflow_use/healing/service.py | 101 | # Step 1: Pattern-based variable identification | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | workflows/cli.py | 1361 | # Create a dummy LLM instance since it's required by the constructor but won't be used for interactions | COMMENT |
| MEDIUM | workflows/cli.py | 2230 | # Create a basic template anyway | COMMENT |
| MEDIUM | workflows/tests/test_selector_generator_fix.py | 15 | # Create a HealingService instance | COMMENT |
| MEDIUM | workflows/tests/test_wait_times.py | 43 | # Create a test workflow with various wait times | COMMENT |
| MEDIUM | workflows/tests/test_wait_times.py | 119 | # Create a simple test workflow YAML | COMMENT |
| MEDIUM | workflows/tests/test_wait_times.py | 248 | # Create a workflow with known wait times | COMMENT |
| MEDIUM | workflows/tests/test_wait_times.py | 309 | # Create a test workflow with various wait times | COMMENT |
| MEDIUM | workflows/tests/test_go_back_fix.py | 17 | # Create a minimal workflow with a go_back action | COMMENT |
| MEDIUM | …/examples/scripts/demos/hierarchical_selection_demo.py | 460 | # Define the users and their row positions | STRING |
| MEDIUM | workflows/workflow_use/mcp/service.py | 79 | # Define the actual function that will be called by FastMCP | COMMENT |
| MEDIUM | workflows/workflow_use/healing/service.py | 379 | # Create a mock DOMInteractedElement from captured data | COMMENT |
| MEDIUM | workflows/workflow_use/healing/service.py | 382 | # Create a simple object with the needed attributes | COMMENT |
| MEDIUM | workflows/workflow_use/healing/service.py | 468 | # Create a shared map to capture element text during agent execution | COMMENT |
| MEDIUM | workflows/workflow_use/healing/service.py | 474 | # Create a custom controller that captures element mappings | COMMENT |
| MEDIUM | workflows/workflow_use/healing/service.py | 641 | # Create a simplified dict with the data we need | COMMENT |
| MEDIUM | …s/workflow_use/healing/tests/test_generate_workflow.py | 49 | # Define the task prompt | COMMENT |
| MEDIUM | workflows/workflow_use/healing/tests/test_validator.py | 34 | # Create a sample workflow with known issues | COMMENT |
| MEDIUM | workflows/workflow_use/builder/service.py | 54 | # This function provides the detailed schema for the LLM. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …rkflows/examples/workflows/basic/example_workflow.yaml | 27 | # Step 1: Navigation step | COMMENT |
| LOW⚡ | …rkflows/examples/workflows/basic/example_workflow.yaml | 33 | # Step 2: Click step (using semantic target_text) | COMMENT |
| LOW⚡ | …rkflows/examples/workflows/basic/example_workflow.yaml | 41 | # Step 3: Extract content step | COMMENT |
| LOW⚡ | …rkflows/examples/workflows/basic/example_workflow.yaml | 47 | # Step 4: Click on Issues tab | COMMENT |
| LOW⚡ | …rkflows/examples/workflows/basic/example_workflow.yaml | 53 | # Step 5: Click on New Issue button | COMMENT |
| LOW⚡ | …rkflows/examples/workflows/basic/example_workflow.yaml | 59 | # Step 6: Input text into title field | COMMENT |
| LOW⚡ | …rkflows/examples/workflows/basic/example_workflow.yaml | 66 | # Step 7: Input text into description | COMMENT |
| LOW⚡ | …rkflows/examples/workflows/basic/example_workflow.yaml | 73 | # Step 8: Select dropdown option | COMMENT |
| LOW⚡ | …rkflows/examples/workflows/basic/example_workflow.yaml | 80 | # Step 9: Checkbox interaction | COMMENT |
| LOW⚡ | …rkflows/examples/workflows/basic/example_workflow.yaml | 87 | # Step 10: Press keyboard key | COMMENT |
| LOW⚡ | …rkflows/examples/workflows/basic/example_workflow.yaml | 92 | # Step 11: Agent step - for complex tasks that need AI | COMMENT |
| LOW⚡ | workflows/examples/scripts/demos/travel_booking_demo.py | 173 | # Step 7: Analyze and select flight | COMMENT |
| LOW | workflows/examples/scripts/demos/travel_booking_demo.py | 60 | # Step 1: Handle departure city input | COMMENT |
| LOW | workflows/examples/scripts/demos/travel_booking_demo.py | 73 | # Step 2: Handle destination city input | COMMENT |
| LOW | workflows/examples/scripts/demos/travel_booking_demo.py | 86 | # Step 3: Handle departure date selection | COMMENT |
| LOW | workflows/examples/scripts/demos/travel_booking_demo.py | 132 | # Step 4: Handle return date selection | COMMENT |
| LOW | workflows/examples/scripts/demos/travel_booking_demo.py | 146 | # Step 5: Handle travelers and cabin class | COMMENT |
| LOW | workflows/examples/scripts/demos/travel_booking_demo.py | 160 | # Step 6: Search for flights | COMMENT |
| LOW | …rkflows/examples/scripts/demos/generation_mode_demo.py | 50 | # Step 1: Generate workflow | COMMENT |
| LOW⚡ | …rkflows/examples/scripts/demos/generation_mode_demo.py | 90 | # Step 2: Save to storage | COMMENT |
| LOW⚡ | …rkflows/examples/scripts/demos/generation_mode_demo.py | 106 | # Step 3: List workflows | COMMENT |
| LOW⚡ | …rkflows/examples/scripts/demos/generation_mode_demo.py | 112 | # Step 4: Retrieve and display | COMMENT |
| LOW | …rkflows/examples/scripts/demos/generation_mode_demo.py | 124 | # Step 5: Run the workflow | COMMENT |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 2772 | # Step 1: Find the container | COMMENT |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 2793 | # Step 2: Find the target element within the container | COMMENT |
| LOW⚡ | workflows/workflow_use/healing/service.py | 146 | # Step 2: Clean up YAML | COMMENT |
| LOW | workflows/workflow_use/healing/service.py | 101 | # Step 1: Pattern-based variable identification | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …/examples/scripts/demos/hierarchical_selection_demo.py | 441 | # Example 4: Table row selection with comprehensive recording | STRING |
| MEDIUM | …/examples/scripts/demos/hierarchical_selection_demo.py | 650 | # Generate the comprehensive interaction mapping | STRING |
| MEDIUM | …/examples/scripts/demos/hierarchical_selection_demo.py | 739 | """Generate the final interaction mapping with comprehensive examples""" | STRING |
| MEDIUM⚡ | workflows/examples/scripts/demos/travel_booking_demo.py | 365 | """Generate a comprehensive interaction report.""" | STRING |
| MEDIUM | workflows/workflow_use/schema/views.py | 39 | # NEW: Multi-strategy selectors for robust element finding | COMMENT |
| MEDIUM | workflows/workflow_use/workflow/service.py | 212 | # This way we leverage browser-use's robust action handling | COMMENT |
| MEDIUM | workflows/workflow_use/workflow/service.py | 212 | # This way we leverage browser-use's robust action handling | COMMENT |
| MEDIUM⚡ | workflows/workflow_use/workflow/semantic_executor.py | 2087 | # Create comprehensive error context | COMMENT |
| MEDIUM | workflows/workflow_use/workflow/semantic_executor.py | 1951 | # Run comprehensive step verification if enabled | COMMENT |
| MEDIUM | workflows/workflow_use/workflow/semantic_executor.py | 2108 | # Generate and log comprehensive error report | COMMENT |
| MEDIUM | workflows/workflow_use/recorder/recorder.py | 1 | # Enhanced recorder with comprehensive event types and intelligent merging | COMMENT |
| MEDIUM | workflows/workflow_use/recorder/semantic_converter.py | 176 | # Extract ID using regex - more robust approach | COMMENT |
| MEDIUM | workflows/workflow_use/healing/service.py | 662 | # Generate multiple selector strategies for robust element finding | COMMENT |
| MEDIUM | …kflows/workflow_use/healing/deterministic_converter.py | 631 | # Add multi-strategy selectors for robust element finding | COMMENT |
| MEDIUM | …kflows/workflow_use/healing/deterministic_converter.py | 742 | # Add multi-strategy selectors for robust element finding | COMMENT |
| MEDIUM | workflows/workflow_use/healing/selector_generator.py | 199 | # NEW: Use XPathOptimizer to generate multiple robust XPath alternatives | COMMENT |
| MEDIUM | workflows/workflow_use/healing/selector_generator.py | 217 | # Priority starts at 3 for most robust, increases for less robust | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | workflows/examples/scripts/generate_workflow.py | 0 | go to github, search for the stagehand repository, click on it, and extract the star count. | STRING |
| HIGH | …amples/scripts/deterministic/auto_generate_workflow.py | 0 | go to github, search for the stagehand repository, click on it, and extract the star count. | STRING |
| HIGH | …scripts/deterministic/create_deterministic_workflow.py | 0 | go to github, search for the stagehand repository, click on it, and extract the star count. | STRING |
| HIGH | …ows/examples/scripts/deterministic/test_custom_task.py | 0 | go to github, search for the stagehand repository, click on it, and extract the star count. | STRING |
| HIGH | …flows/workflow_use/workflow/tests/run_workflow_tool.py | 0 | tests that the workflow is built correctly from a json file path. | STRING |
| HIGH | workflows/workflow_use/workflow/tests/test_extract.py | 0 | tests that the workflow is built correctly from a json file path. | STRING |
| HIGH | workflows/workflow_use/workflow/tests/run_workflow.py | 0 | tests that the workflow is built correctly from a json file path. | STRING |
| HIGH | workflows/workflow_use/builder/tests/build_workflow.py | 0 | tests that the workflow is built correctly from a json file path. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | workflows/workflow_use/workflow/semantic_executor.py | 2718 | Public method to find elements using hierarchical context. This method demonstrates how to use the enhanced hierarchi | STRING |
| HIGH | workflows/workflow_use/healing/xpath_optimizer.py | 16 | Escape a string value for safe use in XPath expressions. XPath 1.0 doesn't have a native escape mechanism for quotes | STRING |
| HIGH | workflows/workflow_use/healing/xpath_optimizer.py | 74 | Generate optimized XPath alternatives from an absolute XPath. Args: absolute_xpath: Full XPath like /html/bo | STRING |
| HIGH | workflows/workflow_use/healing/selector_generator.py | 85 | Generate selector strategies from captured element data. Generates semantic strategies first, then optionally adds | STRING |
| HIGH | workflows/workflow_use/healing/variable_extractor.py | 213 | Use LLM to suggest which values should be variables. Args: workflow: Workflow to analyze Returns: Vari | STRING |
| HIGH | workflows/workflow_use/builder/service.py | 139 | Generates an enhanced Workflow definition from an input workflow object using an LLM. Args: input_workflow: | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | workflows/tests/test_recorded_workflow.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | workflows/tests/test_button_click.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | …/examples/scripts/demos/hierarchical_selection_demo.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | workflows/examples/scripts/demos/travel_booking_demo.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | workflows/workflow_use/__init__.py | 4 | __all__ = ['WorkflowDefinitionSchema', 'Workflow'] | CODE |
| LOW | workflows/workflow_use/storage/service.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | workflows/workflow_use/storage/__init__.py | 3 | __all__ = ['WorkflowStorageService', 'WorkflowMetadata'] | CODE |
| LOW | workflows/workflow_use/controller/service.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | workflows/workflow_use/controller/utils.py | 4 | logger = logging.getLogger(__name__) | CODE |
| LOW | workflows/workflow_use/workflow/variable_config.py | 228 | def set_config(config: VariableIdentificationConfig) -> None: | CODE |
| LOW | workflows/workflow_use/workflow/service.py | 32 | logger = logging.getLogger(__name__) | CODE |
| LOW | workflows/workflow_use/workflow/variable_identifier.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | workflows/workflow_use/workflow/step_verifier.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | workflows/workflow_use/workflow/element_finder.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | workflows/workflow_use/workflow/semantic_extractor.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | workflows/workflow_use/workflow/error_reporter.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | …rkflows/workflow_use/workflow/step_agent/controller.py | 6 | logger = logging.getLogger(__name__) | CODE |
| LOW | workflows/workflow_use/recorder/semantic_converter.py | 5 | logger = logging.getLogger(__name__) | CODE |
| LOW | workflows/workflow_use/healing/xpath_optimizer.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | workflows/workflow_use/healing/selector_generator.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | workflows/workflow_use/healing/_agent/controller.py | 8 | logger = logging.getLogger(__name__) | CODE |
| LOW | …s/workflow_use/healing/tests/test_exploration_agent.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | workflows/workflow_use/builder/service.py | 17 | logger = logging.getLogger(__name__) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | extension/src/entrypoints/content.ts | 1061 | stopRecorder(); // Ensure rrweb is stopped | COMMENT |
| LOW | workflows/workflow_use/mcp/tests/test_tools.py | 21 | # async with Client(mcp) as client: | COMMENT |
| LOW | workflows/workflow_use/workflow/service.py | 421 | # async def _fallback_to_agent( | COMMENT |
| LOW | workflows/workflow_use/workflow/service.py | 441 | # # Determine the failed_value based on step type and attributes | COMMENT |
| LOW | workflows/workflow_use/workflow/service.py | 461 | COMMENT | |
| LOW | workflows/workflow_use/workflow/service.py | 481 | # ) | COMMENT |
| LOW | workflows/workflow_use/workflow/semantic_executor.py | 2161 | return validation_errors | COMMENT |
| LOW | workflows/workflow_use/recorder/service.py | 41 | # async def log_requests(request: Request, call_next): | COMMENT |
| LOW | .github/workflows/lint.yml | 101 | run: npm run compile | COMMENT |
| LOW | .github/workflows/lint.yml | 121 | # | COMMENT |
| LOW | .github/workflows/lint.yml | 141 | # cache-dependency-path: ui/package-lock.json | COMMENT |
| LOW | .github/workflows/lint.yml | 161 | # cache: 'npm' | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | workflows/cli.py | 1206 | # Pass llm_instance for potential agent fallbacks or agentic steps | COMMENT |
| MEDIUM | workflows/workflow_use/workflow/semantic_executor.py | 2622 | max_content_length = 50000 # Adjust based on your LLM's context window | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | workflows/workflow_use/__init__.py | 1 | CODE | |
| LOW | workflows/workflow_use/__init__.py | 2 | CODE | |
| LOW | workflows/workflow_use/storage/__init__.py | 1 | CODE | |
| LOW | workflows/workflow_use/storage/__init__.py | 1 | CODE | |
| LOW | workflows/workflow_use/workflow/service.py | 1 | CODE | |
| LOW | workflows/workflow_use/workflow/semantic_extractor.py | 9 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | workflows/cli.py | 1744 | CODE | |
| LOW | workflows/workflow_use/workflow/service.py | 42 | CODE | |
| LOW | workflows/workflow_use/healing/service.py | 42 | CODE |