AI Slop Code RIsk Monitor

autoscrape-labs/pydoll

Pydoll is a library for automating chromium-based browsers without a WebDriver, offering realistic interactions.

25.4 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for autoscrape-labs/pydoll, a HTML project with 7,110 GitHub stars. SynthScan examined 126,395 lines of code across 545 source files, recording 2393 pattern matches distributed across 19 syntactic categories. The legacy adjusted pattern signal is 25.4 (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.

25.4
Adjusted Signal
25.4
Raw Pattern Score
100%
Time Factor
2026-10-09
Last Push
7.1K
Stars
HTML
Language
126.4K
Lines of Code
545
Files
2.4K
Pattern Hits
2026-10-12
Scan Date
0.41
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 49.0/100 · MEDIUM

Can maintainers explain intent, assumptions, and trade-offs? 1369 finding(s).

Hallucinated Dependency & Supply Chain Risk 36.3/100 · MEDIUM

Are imports declared and package/API names verified? 832 finding(s).

Agent Over-Engineering Ratio 49.2/100 · MEDIUM

Are wrappers, guards, and repeated structures necessary? 1459 finding(s).

PR Review Velocity Impact 75.8/100 · CRITICAL

Which changes need focused human review? 2393 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

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.

Severity Breakdown

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.

CRITICAL 1HIGH 222MEDIUM 35LOW 2135

Directory Score Breakdown

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.

Pattern Findings

The scanner identified 2393 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.

Hyper-Verbose Identifiers1220 hits · 1308 pts
SeverityFileLineSnippetContext
LOWtests/unit/test_har_recorder.py33async def test_stop_awaits_in_flight_body_tasks_and_cleans_up():CODE
LOWtests/unit/test_har_recorder.py56async def test_stop_flushes_in_flight_request_as_pending_entry():CODE
LOWtests/unit/test_har_recorder.py94async def test_fetch_response_body_retries_until_body_available():CODE
LOWtests/unit/test_har_recorder.py107async def test_fetch_response_body_no_retry_when_body_not_expected():CODE
LOWtests/unit/test_har_recorder.py119async def test_fetch_response_body_gives_up_after_max_attempts():CODE
LOWtests/unit/test_emulation_commands.py13def test_get_screen_infos_shape():CODE
LOWtests/unit/test_emulation_commands.py41def test_update_screen_omits_unset_params():CODE
LOWtests/unit/test_emulation_commands.py46def test_update_screen_requires_only_screen_id():CODE
LOW⚡tests/unit/test_url_match.py29def test_regex_is_searched_anywhere_in_the_url():CODE
LOW⚡tests/unit/test_url_match.py35def test_callable_decides_by_itself():CODE
LOW⚡tests/unit/test_url_match.py41def test_unsupported_pattern_type_is_rejected():CODE
LOW⚡tests/unit/test_url_match.py46def test_glob_translation_is_anchored_and_escapes_regex_characters():CODE
LOW⚡tests/unit/test_utils.py24def test_normalize_synthetic_xpath_extracts_inner_xpath():CODE
LOW⚡tests/unit/test_utils.py28def test_normalize_synthetic_xpath_passes_through_plain_selector():CODE
LOW⚡tests/unit/test_utils.py32def test_normalize_synthetic_xpath_returns_input_when_unparseable():CODE
LOW⚡tests/unit/test_utils.py43 def test_decode_image_to_bytes(self):CODE
LOW⚡tests/unit/test_utils.py52 def test_decode_image_to_bytes_empty_string(self):CODE
LOW⚡tests/unit/test_utils.py59 def test_decode_image_to_bytes_complex_data(self):CODE
LOW⚡tests/unit/test_utils.py210 def test_validate_browser_paths_file_exists_but_not_executable(self):CODE
LOW⚡tests/unit/test_utils.py226 def test_validate_browser_paths_directory_instead_of_file(self):CODE
LOW⚡tests/unit/test_utils.py236 def test_validate_browser_paths_empty_list(self):CODE
LOW⚡tests/unit/test_utils.py245 def test_validate_browser_paths_mixed_valid_invalid(self):CODE
LOW⚡tests/unit/test_utils.py287 def test_validate_browser_paths_valid_path(self, tmp_path):CODE
LOW⚡tests/unit/test_utils.py297 def test_validate_browser_paths_invalid_paths(self):CODE
LOWtests/unit/test_utils.py105 async def test_missing_websocket_url(self):CODE
LOWtests/unit/test_utils.py155 def test_validate_browser_paths_success(self):CODE
LOWtests/unit/test_utils.py173 def test_validate_browser_paths_first_valid_wins(self):CODE
LOWtests/unit/test_utils.py192 def test_validate_browser_paths_no_valid_paths(self):CODE
LOWtests/unit/test_utils.py308 def test_clean_script_for_analysis_removes_comments(self):CODE
LOW⚡tests/unit/test_utils.py340 def test_is_script_already_function_regular_function(self):STRING
LOW⚡tests/unit/test_utils.py345 def test_is_script_already_function_arrow_function(self):STRING
LOW⚡tests/unit/test_utils.py350 def test_is_script_already_function_with_parameters(self):STRING
LOW⚡tests/unit/test_utils.py355 def test_is_script_already_function_not_function(self):STRING
LOW⚡tests/unit/test_utils.py360 def test_is_script_already_function_with_whitespace(self):STRING
LOW⚡tests/unit/test_utils.py365 def test_has_return_outside_function_simple_return(self):STRING
LOW⚡tests/unit/test_utils.py370 def test_has_return_outside_function_no_return(self):STRING
LOW⚡tests/unit/test_utils.py375 def test_has_return_outside_function_return_inside_function(self):STRING
LOW⚡tests/unit/test_utils.py385 def test_has_return_outside_function_mixed_returns(self):STRING
LOW⚡tests/unit/test_utils.py395 def test_has_return_outside_function_already_function(self):STRING
LOW⚡tests/unit/test_utils.py400 def test_has_return_outside_function_with_comments(self):STRING
LOW⚡tests/unit/test_utils.py410 def test_has_return_outside_function_nested_braces(self):STRING
LOW⚡tests/unit/test_utils.py424 def test_has_return_outside_function_arrow_function(self):STRING
LOW⚡tests/unit/test_utils.py434 def test_extract_text_without_strip_without_separator(self):STRING
LOW⚡tests/unit/test_utils.py440 def test_extract_text_with_strip_without_separator(self):STRING
LOW⚡tests/unit/test_utils.py446 def test_extract_text_without_strip_with_separator(self):STRING
LOW⚡tests/unit/test_utils.py452 def test_extract_text_with_strip_with_separator(self):STRING
LOWtests/unit/test_utils.py324 def test_clean_script_for_analysis_removes_strings(self):STRING
LOW⚡tests/unit/test_tab_waits.py26 async def test_returns_the_matching_url(self, fake_conn, fake_tab):CODE
LOW⚡tests/unit/test_tab_waits.py33 async def test_times_out_when_the_url_never_matches(self, fake_conn, fake_tab):CODE
LOW⚡tests/unit/test_tab_waits.py41 async def test_returns_a_primitive_value_and_evaluates_by_reference(self, fake_conn, fake_tab):CODE
LOW⚡tests/unit/test_tab_waits.py51 async def test_a_node_is_truthy_and_its_handle_is_released(self, fake_conn, fake_tab):CODE
LOW⚡tests/unit/test_tab_waits.py60 async def test_a_function_and_an_empty_object_are_truthy(self, fake_conn, fake_tab):CODE
LOW⚡tests/unit/test_tab_waits.py115 async def test_returns_when_nothing_matches(self, fake_conn, fake_tab):CODE
LOW⚡tests/unit/test_tab_waits.py120 async def test_passes_every_criterion_through_to_find(self, fake_conn, fake_tab):CODE
LOW⚡tests/unit/test_tab_waits.py128 async def test_enables_network_events_for_the_wait_and_restores_them(self, fake_conn, fake_tab):CODE
LOW⚡tests/unit/test_tab_waits.py136 async def test_a_request_in_flight_keeps_the_page_busy(self, fake_conn, fake_tab):CODE
LOW⚡tests/unit/test_tab_waits.py336 async def test_waits_for_the_main_frame_and_the_load_event(self, fake_conn, fake_tab):CODE
LOW⚡tests/unit/test_tab_waits.py345 async def test_url_filter_ignores_other_navigations(self, fake_conn, fake_tab):CODE
LOW⚡tests/unit/test_tab_waits.py352 async def test_the_whole_wait_is_bounded_by_one_timeout(self, fake_conn, fake_tab):CODE
LOW⚡tests/unit/test_tab_waits.py362 async def test_a_load_event_before_the_navigation_does_not_count(self, fake_conn, fake_tab):CODE
1160 more matches not shown…
Cross-Language Confusion124 hits · 639 pts
SeverityFileLineSnippetContext
HIGH⚡tests/unit/test_fingerprint_builder.py191 assert '(!real || _truthful.has(self))' in jsCODE
HIGH⚡tests/unit/test_fingerprint_builder.py317 assert 'if (real === null && extensionOwnedParams.has(pname)) return real;' in jsCODE
HIGH⚡tests/unit/test_fingerprint_builder.py319 assert '_apply(origGetSupportedExtensions, this, []);\n return null;' in jsCODE
HIGH⚡tests/unit/test_fingerprint_builder.py324 assert 'const ext1 = null;' in jsCODE
HIGH⚡tests/unit/test_fingerprint_builder.py325 assert 'const ext1Order = null;' in jsCODE
HIGH⚡tests/unit/test_fingerprint_builder.py400 assert 'const limits = null;' in jsCODE
HIGH⚡tests/unit/test_fingerprint_builder.py401 assert 'const features = null;' in jsCODE
HIGH⚡tests/unit/test_fingerprint_builder.py443 assert 'if (wanted.length > 0 && wanted.every((f) => allow.has(f))) return real;' in jsCODE
HIGH⚡tests/unit/test_fingerprint_builder.py586 assert '_FAKES.get(m).enabledPlugin = owner || null;' in jsCODE
HIGH⚡tests/unit/test_fingerprint_builder.py586 assert '_FAKES.get(m).enabledPlugin = owner || null;' in jsCODE
HIGHtests/unit/test_fingerprint_builder.py341 assert 'if (pname === COMPRESSED_FORMATS && ArrayBuffer.isView(real))' in jsCODE
HIGHtests/integration/test_iframe_integration.py928 Its ``contentDocument.frameId`` is null, so resolution goes through theSTRING
HIGHtests/integration/test_fingerprint_webgl_integration.py36 out[kind] = gl ? gl.getSupportedExtensions() : null;CODE
HIGHtests/integration/test_fingerprint_webgl_integration.py50 out.unsupported = out.list1.filter((name) => gl.getExtension(name) === null);CODE
HIGHtests/integration/test_fingerprint_webgl_integration.py87 } : null;CODE
HIGHtests/integration/test_fingerprint_webgl_integration.py112 returnsUndefined: pa.provokingVertexWEBGL(pa.FIRST_VERTEX_CONVENTION_WEBGL) === undefined,CODE
HIGH⚡tests/integration/test_query_script_integration.py45 nothing = await tab.query_script('function() { return null; }')CODE
HIGH⚡tests/integration/playwright/test_events_integration.py80 await page.evaluate('() => console.log(true, null, undefined, 1, 1.5, "s", -0, NaN)')CODE
HIGH…s/integration/playwright/test_isolation_integration.py15 const record = (name) => calls.push(name);CODE
HIGH⚡…s/integration/playwright/test_isolation_integration.py73 assert await handle.evaluate('e => window.__app.ready && e.id') == 'btn-save'STRING
HIGHtests/integration/playwright/test_page_integration.py391 '() => screen.width >= innerWidth && screen.height >= innerHeight'CODE
HIGHpydoll/constants.py31 rect.width > 0 && rect.height > 0CODE
HIGHpydoll/constants.py47 return elementFromPoint === this || this.contains(elementFromPoint);CODE
HIGHpydoll/constants.py90 var select = this && this.parentElement ? this.parentElement.closest('select') : null;CODE
HIGHpydoll/constants.py90 var select = this && this.parentElement ? this.parentElement.closest('select') : null;CODE
HIGH⚡pydoll/constants.py112 "{escaped_value}", this, null,CODE
HIGH⚡pydoll/constants.py120 "{escaped_value}", document, null,CODE
HIGH⚡pydoll/constants.py129 "{escaped_value}", this, null,CODE
HIGH⚡pydoll/constants.py134 results.push(elements.snapshotItem(i));CODE
HIGH⚡pydoll/constants.py142 "{escaped_value}", document, null,CODE
HIGH⚡pydoll/constants.py147 results.push(elements.snapshotItem(i));CODE
HIGHpydoll/constants.py173 null,CODE
HIGHpydoll/constants.py209 allDescendants.push(CODE
HIGHpydoll/constants.py276 jsonData = null;CODE
HIGHpydoll/constants.py280 jsonData = null;CODE
HIGHpydoll/constants.py295 error: error.toString(),CODE
HIGHpydoll/constants.py388 GET_SCROLL_Y = 'window.scrollY || window.pageYOffset || 0'STRING
HIGHpydoll/constants.py397 const scrollTop = window.scrollY || window.pageYOffset || 0;CODE
HIGHpydoll/constants.py426 if (!hasSelection && text === '') {CODE
HIGHpydoll/constants.py512 return !!(this && this.tagName && this.tagName.toLowerCase() === 'option');CODE
HIGH⚡pydoll/utils/fingerprint_builder.py242 if (marked !== undefined) return marked;CODE
HIGH⚡pydoll/utils/fingerprint_builder.py247 if (d && d.get && _FAKED.has(_apply(_ORIG, d.get, []))) { marked = true; break; }CODE
HIGH⚡pydoll/utils/fingerprint_builder.py255 for (let proto = Object.getPrototypeOf(value); proto !== null;CODE
HIGH⚡pydoll/utils/fingerprint_builder.py265 if (value === null || typeof value !== 'object' || seen.has(value)) return null;CODE
HIGH⚡pydoll/utils/fingerprint_builder.py265 if (value === null || typeof value !== 'object' || seen.has(value)) return null;CODE
HIGH⚡pydoll/utils/fingerprint_builder.py268 if (seen.size > budget) return null;CODE
HIGH⚡pydoll/utils/fingerprint_builder.py271 if (Array.isArray(value) || proto === null || proto === Object.prototypeCODE
HIGH⚡pydoll/utils/fingerprint_builder.py272 || Object.getPrototypeOf(proto) === null) {CODE
HIGH⚡pydoll/utils/fingerprint_builder.py281 if (found !== null) return found;CODE
HIGH⚡pydoll/utils/fingerprint_builder.py283 return null;CODE
HIGH⚡pydoll/utils/fingerprint_builder.py292 if (fake !== null) throw _cloneError(context, fake);CODE
HIGH⚡pydoll/utils/fingerprint_builder.py316 const options = args.length > 1 ? args[1] : null;CODE
HIGH⚡pydoll/utils/fingerprint_builder.py317 if (options !== null && typeof options === 'object') {CODE
HIGH⚡pydoll/utils/fingerprint_builder.py319 if (fake !== null) throw _cloneError("Failed to construct 'Notification'", fake);CODE
HIGH⚡pydoll/utils/fingerprint_builder.py322 }, null);CODE
HIGH⚡pydoll/utils/fingerprint_builder.py627 if (fp !== undefined && fp.has(pname) && !lost(this)) {CODE
HIGH⚡pydoll/utils/fingerprint_builder.py635 if (pname === COMPRESSED_FORMATS && ArrayBuffer.isView(real)) {CODE
HIGH⚡pydoll/utils/fingerprint_builder.py640 if (override === undefined) return real;CODE
HIGH⚡pydoll/utils/fingerprint_builder.py641 if (real === null && extensionOwnedParams.has(pname)) return real;CODE
HIGH⚡pydoll/utils/fingerprint_builder.py646 if (hasPrecision && Object.keys(precisionOverrides).length > 0) {CODE
64 more matches not shown…
Unused Imports696 hits · 482 pts
SeverityFileLineSnippetContext
LOWtests/unit/test_har_recorder.py9CODE
LOWtests/unit/test_emulation_commands.py7CODE
LOWtests/unit/test_url_match.py3CODE
LOWtests/unit/test_utils.py7CODE
LOWtests/unit/conftest.py11CODE
LOWtests/unit/test_tab_waits.py7CODE
LOWtests/unit/test_keyboard_humanized.py14CODE
LOWtests/unit/test_interactions.py8CODE
LOWtests/unit/test_shadow_root.py9CODE
LOWtests/unit/test_decorators.py5CODE
LOWtests/unit/test_decorators.py6CODE
LOWtests/unit/test_extractor_helpers.py3CODE
LOWtests/unit/test_temp_dir_manager.py8CODE
LOWtests/unit/test_interactions_utils.py3CODE
LOWtests/unit/test_har_cookie_parsing.py11CODE
LOWtests/unit/test_web_element.py10CODE
LOWtests/unit/test_browser_wiring.py8CODE
LOWtests/unit/test_browser_process_manager.py3CODE
LOWtests/unit/test_webgl_extensions.py3CODE
LOWtests/unit/test_browser_commands.py9CODE
LOWtests/unit/test_selector_parser.py3CODE
LOWtests/unit/test_user_agent_parser.py8CODE
LOWtests/unit/test_fingerprint_applier.py8CODE
LOWtests/unit/test_proxy_manager.py7CODE
LOWtests/unit/test_commands_manager.py3CODE
LOWtests/unit/test_bundle.py10CODE
LOWtests/unit/test_fingerprint_builder.py9CODE
LOWtests/unit/test_events_manager.py3CODE
LOWtests/unit/test_mouse_humanized.py12CODE
LOWtests/unit/test_tab_commands.py10CODE
LOWtests/unit/test_request_cookie_extraction.py11CODE
LOWtests/unit/test_scroll_humanized.py15CODE
LOWtests/unit/test_find_elements_mixin.py9CODE
LOWtests/unit/playwright/test_boundary.py8CODE
LOWtests/unit/playwright/test_pure_helpers.py3CODE
LOWtests/unit/playwright/test_surface.py8CODE
LOWtests/unit/sync/test_runtime.py3CODE
LOWtests/unit/sync/test_generated_current.py6CODE
LOWtests/integration/conftest.py3CODE
LOWtests/integration/test_web_element_integration.py10CODE
LOWtests/integration/test_tab_io_integration.py12CODE
LOWtests/integration/test_extractor_integration.py3CODE
LOWtests/integration/test_interactions_integration.py9CODE
LOWtests/integration/test_browser_start_failure.py8CODE
LOWtests/integration/test_fingerprint_webgl_integration.py11CODE
LOWtests/integration/test_tab_request_integration.py9CODE
LOWtests/integration/test_tab_features_integration.py11CODE
LOWtests/integration/test_tab.py10CODE
LOWtests/integration/test_browser_integration.py10CODE
LOWtests/integration/test_socks5_forwarder.py13CODE
LOWtests/integration/test_connection_handler.py9CODE
LOWtests/integration/_waits.py10CODE
LOWtests/integration/test_waiting_integration.py8CODE
LOWtests/integration/playwright/conftest.py8CODE
LOWtests/integration/playwright/test_events_integration.py3CODE
LOW…s/integration/playwright/test_isolation_integration.py3CODE
LOW…/integration/playwright/test_docs_flows_integration.py9CODE
LOW…sts/integration/playwright/test_locator_integration.py3CODE
LOWtests/integration/playwright/test_engine_integration.py7CODE
LOWtests/integration/playwright/test_page_integration.py3CODE
636 more matches not shown…
Docstring Block Structure70 hits · 320 pts
SeverityFileLineSnippetContext
HIGHpydoll/connection/connection_handler.py101 Send CDP command and await response. Args: command: CDP command to send. timeoSTRING
HIGHpydoll/connection/connection_handler.py198Send several commands back to back and wait for all of their answers. The browser handles the commands of one sSTRING
HIGHpydoll/utils/general.py161 Validates potential browser executable paths and returns the first valid one. Checks a list of possible browseSTRING
HIGHpydoll/extractor/field.py64Define extraction metadata for a model field. Wraps pydantic.Field() and registers ExtractionMetadata for the enginSTRING
HIGHpydoll/extractor/model.py62Read ExtractionMetadata from pydantic FieldInfo objects via registry. For each field, checks if json_schema_extra cSTRING
HIGHpydoll/extractor/engine.py42Extract a single model instance from the page. Args: model: ExtractionModel subclass to populate. STRING
HIGHpydoll/extractor/engine.py292Build model instance from extracted values. Pydantic handles validation, type coercion, and defaults. Args: STRING
HIGHpydoll/browser/tab.py293Extract structured data from the page into a typed model. Args: model: ExtractionModel subclass defSTRING
HIGHpydoll/browser/tab.py502 Find all shadow roots in the page. Traverses the entire DOM tree (including iframes and nested shadow STRING
HIGHpydoll/browser/tab.py805 Get the response body for a given request ID. Args: request_id: Request ID to get the respSTRING
HIGHpydoll/browser/tab.py827 Get network logs. Args: filter: Filter to apply to the network logs. Returns: STRING
HIGHpydoll/browser/tab.py919 Wait until the tab's URL matches a pattern and return it. Covers full navigations and in-page changes STRING
HIGHpydoll/browser/tab.py951 Wait until a JavaScript expression evaluates to a truthy value and return it. Truthiness is JavaScriptSTRING
HIGHpydoll/browser/tab.py1009 Wait until no element matches the criteria, the same criteria ``find()`` takes. Use it for the thing tSTRING
HIGHpydoll/browser/tab.py1168 Capture the first request whose URL matches, sent during the block. The handle is empty inside the bloSTRING
HIGHpydoll/browser/tab.py1216 Capture the first response whose URL matches, received during the block. The block exits once the respSTRING
HIGHpydoll/browser/tab.py1334 Capture screenshot of current page. Args: path: File path for screenshot (extension determSTRING
HIGHpydoll/browser/tab.py1417 Generate PDF of current page. Args: path: File path for PDF output. Required if as_base64=STRING
HIGHpydoll/browser/tab.py1638 Execute JavaScript in page context. Args: script (str): JavaScript code to execute. STRING
HIGHpydoll/browser/managers/browser_process_manager.py65 Launch browser process with CDP debugging enabled. Args: binary_location: Path to browser STRING
HIGHpydoll/browser/requests/request.py96Execute an HTTP request in the browser's JavaScript context. This method uses the browser's fetch API to make rSTRING
HIGHpydoll/browser/chromium/base.py1060 Send a raw CDP command on the browser-level session. Use it for browser-wide domains (Target, Browser,STRING
HIGHpydoll/elements/web_element.py291 Get the shadow root attached to this element. Args: timeout: Maximum seconds to wait for tSTRING
HIGHpydoll/elements/web_element.py361 Retrieve all direct and nested child elements of this element. Args: max_depth (int, optioSTRING
HIGHpydoll/elements/web_element.py394 Retrieve all sibling elements of this element (elements at the same DOM level). Args: tag_STRING
HIGHpydoll/elements/web_element.py424 Capture screenshot of this element only. Automatically scrolls element into view before capturing. STRING
HIGHpydoll/elements/web_element.py987 Execute JavaScript in element context. Args: script (str): JavaScript code to execute. UseSTRING
HIGHpydoll/elements/mixins/find_elements_mixin.py159 Find element(s) using combination of common HTML attributes. Flexible element location using standard STRING
HIGHpydoll/elements/mixins/find_elements_mixin.py272 Find element(s) using raw CSS selector or XPath expression. Direct access using CSS or XPath syntax. SSTRING
HIGHpydoll/elements/mixins/find_elements_mixin.py318 Core element finding method with optional waiting capability. Searches for elements with flexible waitSTRING
HIGHpydoll/elements/mixins/find_elements_mixin.py393 Retry loop for iframe-crossing element searches. Repeatedly calls :meth:`_attempt_find_across_iframes`STRING
HIGHpydoll/elements/mixins/find_elements_mixin.py472 Find first element matching selector. Internal method performing actual element search. Can be called STRING
HIGHpydoll/elements/mixins/find_elements_mixin.py537 Find all elements matching selector. Internal method performing actual multi-element search. Can be caSTRING
HIGHpydoll/elements/mixins/find_elements_mixin.py603 Run a JavaScript function that returns elements and wrap them as WebElements. The function runs with tSTRING
HIGHpydoll/elements/mixins/find_elements_mixin.py879 Send a raw CDP command through this object's session. The command is routed exactly like the object's STRING
HIGHpydoll/commands/network_commands.py140 Deletes browser cookies with matching criteria. Provides granular control over cookie removal through STRING
HIGHpydoll/commands/network_commands.py224 Retrieves cookies matching specified URLs. Args: urls: list of URLs to scope cookie retrieSTRING
HIGHpydoll/commands/network_commands.py430 Applies custom HTTP headers to all subsequent requests. Enables advanced scenarios: - A/B testSTRING
HIGHpydoll/sync/_generated.py485 Send a raw CDP command on the browser-level session. Use it for browser-wide domains (Target, Browser,STRING
HIGHpydoll/sync/_generated.py810 Send a raw CDP command on the browser-level session. Use it for browser-wide domains (Target, Browser,STRING
HIGHpydoll/sync/_generated.py916Extract structured data from the page into a typed model. Args: model: ExtractionModel subclass defSTRING
HIGHpydoll/sync/_generated.py1039 Find all shadow roots in the page. Traverses the entire DOM tree (including iframes and nested shadow STRING
HIGHpydoll/sync/_generated.py1082 Get the response body for a given request ID. Args: request_id: Request ID to get the respSTRING
HIGHpydoll/sync/_generated.py1097 Get network logs. Args: filter: Filter to apply to the network logs. Returns: STRING
HIGHpydoll/sync/_generated.py1162 Wait until the tab's URL matches a pattern and return it. Covers full navigations and in-page changes STRING
HIGHpydoll/sync/_generated.py1182 Wait until a JavaScript expression evaluates to a truthy value and return it. Truthiness is JavaScriptSTRING
HIGHpydoll/sync/_generated.py1208 Wait until no element matches the criteria, the same criteria ``find()`` takes. Use it for the thing tSTRING
HIGHpydoll/sync/_generated.py1259 Capture the first request whose URL matches, sent during the block. The handle is empty inside the bloSTRING
HIGHpydoll/sync/_generated.py1278 Capture the first response whose URL matches, received during the block. The block exits once the respSTRING
HIGHpydoll/sync/_generated.py1313 Capture screenshot of current page. Args: path: File path for screenshot (extension determSTRING
HIGHpydoll/sync/_generated.py1333 Generate PDF of current page. Args: path: File path for PDF output. Required if as_base64=STRING
HIGHpydoll/sync/_generated.py1406 Execute JavaScript in page context. Args: script (str): JavaScript code to execute. STRING
HIGHpydoll/sync/_generated.py1549 Find element(s) using combination of common HTML attributes. Flexible element location using standard STRING
HIGHpydoll/sync/_generated.py1588 Find element(s) using raw CSS selector or XPath expression. Direct access using CSS or XPath syntax. SSTRING
HIGHpydoll/sync/_generated.py1611 Run a JavaScript function that returns elements and wrap them as WebElements. The function runs with tSTRING
HIGHpydoll/sync/_generated.py1639 Send a raw CDP command through this object's session. The command is routed exactly like the object's STRING
HIGHpydoll/sync/_generated.py1853 Get the shadow root attached to this element. Args: timeout: Maximum seconds to wait for tSTRING
HIGHpydoll/sync/_generated.py1872 Retrieve all direct and nested child elements of this element. Args: max_depth (int, optioSTRING
HIGHpydoll/sync/_generated.py1891 Retrieve all sibling elements of this element (elements at the same DOM level). Args: tag_STRING
HIGHpydoll/sync/_generated.py1909 Capture screenshot of this element only. Automatically scrolls element into view before capturing. STRING
10 more matches not shown…
Modern Structural Boilerplate100 hits · 104 pts
SeverityFileLineSnippetContext
LOWtests/unit/conftest.py41 def set_response(self, method: str, result: dict) -> None:CODE
LOWtests/unit/conftest.py45 def set_failure(self, method: str, code: int, message: str) -> None:CODE
LOWtests/integration/conftest.py77 def set_error(self, method: str, code: int, message: str) -> None:CODE
LOWtests/integration/conftest.py85 def set_result(self, method: str, result: dict) -> None:CODE
LOWpydoll/__init__.py28__all__ = [CODE
LOWpydoll/decorators.py9logger = logging.getLogger(__name__)CODE
LOWpydoll/interactions/__init__.py13__all__ = [CODE
LOWpydoll/interactions/iframe.py23logger = logging.getLogger(__name__)CODE
LOWpydoll/interactions/mouse.py24logger = logging.getLogger(__name__)CODE
LOWpydoll/interactions/keyboard.py22logger = logging.getLogger(__name__)CODE
LOWpydoll/connection/connection_handler.py31logger = logging.getLogger(__name__)CODE
LOWpydoll/connection/__init__.py3__all__ = [CODE
LOWpydoll/connection/managers/events_manager.py20logger = logging.getLogger(__name__)CODE
LOWpydoll/connection/managers/__init__.py4__all__ = [CODE
LOWpydoll/connection/managers/commands_manager.py10logger = logging.getLogger(__name__)CODE
LOWpydoll/utils/socks5_proxy_forwarder.py66logger = logging.getLogger(__name__)CODE
LOWpydoll/utils/__init__.py18__all__ = [CODE
LOWpydoll/utils/fingerprint_builder.py99logger = logging.getLogger(__name__)CODE
LOWpydoll/utils/general.py15logger = logging.getLogger(__name__)CODE
LOWpydoll/extractor/__init__.py9__all__ = [CODE
LOWpydoll/extractor/engine.py20logger = logging.getLogger(__name__)CODE
LOWpydoll/playwright/_playwright.py208 def set_test_id_attribute(self, attribute_name: str) -> None:CODE
LOWpydoll/playwright/_locator.py342 async def set_checked(self, checked: bool, **kwargs: Any) -> None:CODE
LOWpydoll/playwright/_locator.py523__all__ = ['FilePayload', 'FrameLocator', 'Locator', 'Pattern', 'Position', 'SelectOption']CODE
LOWpydoll/playwright/__init__.py11__all__ = ['Error', 'TargetClosedError', 'TimeoutError']CODE
LOWpydoll/playwright/_actions.py808__all__ = [CODE
LOW⚡pydoll/playwright/_browser_context.py252 def set_default_timeout(self, timeout: float) -> None:CODE
LOW⚡pydoll/playwright/_browser_context.py255 def set_default_navigation_timeout(self, timeout: float) -> None:CODE
LOW⚡pydoll/playwright/_browser_context.py372 async def set_geolocation(self, geolocation: dict[str, float] | None) -> None:CODE
LOW⚡pydoll/playwright/_browser_context.py380 async def set_extra_http_headers(self, headers: dict[str, str]) -> None:CODE
LOW⚡pydoll/playwright/_browser_context.py385 async def set_offline(self, offline: bool) -> None:CODE
LOWpydoll/playwright/_browser_context.py586__all__ = ['BrowserContext', 'RuntimeCommands']CODE
LOW⚡pydoll/playwright/_page.py434 def set_default_timeout(self, timeout: float) -> None:CODE
LOW⚡pydoll/playwright/_page.py437 def set_default_navigation_timeout(self, timeout: float) -> None:CODE
LOWpydoll/playwright/_page.py55logger = logging.getLogger(__name__)CODE
LOWpydoll/playwright/_page.py207 async def _settle_event_sources(self) -> None:CODE
LOWpydoll/playwright/_page.py272 async def _settle_frames(self, deadline: Deadline) -> None:CODE
LOWpydoll/playwright/_page.py865 async def set_extra_http_headers(self, headers: dict[str, str]) -> None:CODE
LOWpydoll/playwright/_page.py871 async def set_viewport_size(self, viewport_size: dict[str, int]) -> None:CODE
LOWpydoll/playwright/_page.py1179 async def set_checked(self, selector: str, checked: bool, **kwargs: Any) -> None:CODE
LOWpydoll/playwright/_page.py1185 async def set_input_files(self, selector: str, files: Any, **kwargs: Any) -> None:CODE
LOWpydoll/playwright/_page.py1263__all__ = ['Page', 'WebElement', 'Awaitable', 'TargetClosedError']CODE
LOWpydoll/playwright/_browser.py25logger = logging.getLogger(__name__)CODE
LOWpydoll/playwright/_network.py27logger = logging.getLogger(__name__)CODE
LOWpydoll/playwright/_events.py16logger = logging.getLogger(__name__)CODE
LOWpydoll/playwright/_dialog.py236__all__ = ['ConsoleMessage', 'Dialog', 'Download', 'FileChooser', 'JSHandle']CODE
LOWpydoll/playwright/_element_handle.py270 async def set_checked(self, checked: bool, **kwargs: Any) -> None:CODE
LOWpydoll/playwright/async_api/__init__.py27__all__ = [CODE
LOW⚡pydoll/playwright/sync_api/_generated.py338 def set_default_timeout(self, timeout: float) -> None:CODE
LOW⚡pydoll/playwright/sync_api/_generated.py341 def set_default_navigation_timeout(self, timeout: float) -> None:CODE
LOW⚡pydoll/playwright/sync_api/_generated.py368 def set_geolocation(self, geolocation: dict[str, float] | None) -> None:CODE
LOW⚡pydoll/playwright/sync_api/_generated.py371 def set_extra_http_headers(self, headers: dict[str, str]) -> None:CODE
LOW⚡pydoll/playwright/sync_api/_generated.py374 def set_offline(self, offline: bool) -> None:CODE
LOW⚡pydoll/playwright/sync_api/_generated.py494 def set_default_timeout(self, timeout: float) -> None:CODE
LOW⚡pydoll/playwright/sync_api/_generated.py497 def set_default_navigation_timeout(self, timeout: float) -> None:CODE
LOW⚡pydoll/playwright/sync_api/_generated.py1099 def set_checked(self, checked: bool, **kwargs: Any) -> None:CODE
LOW⚡pydoll/playwright/sync_api/_generated.py1108 def set_input_files(self, files: str | Path | FilePayload | Sequence[str | Path] | Sequence[FilePayload], timeout: fCODE
LOWpydoll/playwright/sync_api/_generated.py228 def set_test_id_attribute(self, attribute_name: str) -> None:CODE
LOWpydoll/playwright/sync_api/_generated.py572 def set_content(self, html: str, timeout: float | None=None, wait_until: str | None=None) -> None:CODE
LOWpydoll/playwright/sync_api/_generated.py611 def set_extra_http_headers(self, headers: dict[str, str]) -> None:CODE
40 more matches not shown…
Empty Error Handlers19 hits · 95 pts
SeverityFileLineSnippetContext
HIGHtests/integration/conftest.py116except websockets.ConnectionClosed:CODE
HIGHtests/integration/test_har_recording_integration.py150except (BrokenPipeError, ConnectionResetError, OSError):CODE
HIGHtests/integration/test_har_recording_integration.py161except (BrokenPipeError, ConnectionResetError, OSError):CODE
HIGHtests/integration/test_socks5_forwarder.py43except OSError:CODE
HIGHpydoll/interactions/scroll.py326except (json.JSONDecodeError, TypeError):CODE
HIGHpydoll/utils/socks5_proxy_forwarder.py125except (ConnectionResetError, BrokenPipeError, OSError):CODE
HIGHpydoll/utils/socks5_proxy_forwarder.py516except NotImplementedError:CODE
HIGHpydoll/utils/socks5_proxy_forwarder.py598except (asyncio.TimeoutError, OSError):CODE
HIGHpydoll/utils/socks5_proxy_forwarder.py397except (asyncio.TimeoutError, OSError):CODE
HIGHpydoll/playwright/_actions.py121except Retry:CODE
HIGHpydoll/playwright/_browser_context.py471except Exception:CODE
HIGHpydoll/playwright/_browser_context.py498except PydollException:CODE
HIGHpydoll/playwright/_page.py1109except TRANSPORT_ERRORS:CODE
HIGHpydoll/playwright/_page.py642except Exception:CODE
HIGHpydoll/playwright/_browser.py204except TRANSPORT_ERRORS:CODE
HIGHpydoll/playwright/_browser.py197except Error:CODE
HIGHpydoll/browser/managers/temp_dir_manager.py113except Exception: # noqa: BLE001 - best-effort cleanupCODE
HIGHpydoll/elements/web_element.py315except ShadowRootNotFound:CODE
HIGHpydoll/sync/_runtime.py316except TypeError:CODE
Decorative Section Separators20 hits · 75 pts
SeverityFileLineSnippetContext
MEDIUM⚡tests/integration/test_extractor_integration.py207# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/integration/test_extractor_integration.py209# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/integration/test_extractor_integration.py21# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/integration/test_extractor_integration.py23# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡pydoll/elements/utils/selector_parser.py20# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡pydoll/elements/utils/selector_parser.py22# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡pydoll/elements/utils/selector_parser.py159 # ------------------------------------------------------------------COMMENT
MEDIUM⚡pydoll/elements/utils/selector_parser.py161 # ------------------------------------------------------------------COMMENT
MEDIUM⚡pydoll/elements/utils/selector_parser.py197 # ------------------------------------------------------------------COMMENT
MEDIUM⚡pydoll/elements/utils/selector_parser.py199 # ------------------------------------------------------------------COMMENT
MEDIUM⚡pydoll/elements/utils/selector_parser.py234 # ==================================================================COMMENT
MEDIUM⚡pydoll/elements/utils/selector_parser.py236 # ==================================================================COMMENT
MEDIUMpydoll/elements/utils/selector_parser.py48 # ------------------------------------------------------------------COMMENT
MEDIUMpydoll/elements/utils/selector_parser.py50 # ------------------------------------------------------------------COMMENT
MEDIUMpydoll/elements/utils/selector_parser.py65 # ------------------------------------------------------------------COMMENT
MEDIUMpydoll/elements/utils/selector_parser.py67 # ------------------------------------------------------------------COMMENT
MEDIUMpydoll/elements/utils/selector_parser.py112 # ------------------------------------------------------------------COMMENT
MEDIUMpydoll/elements/utils/selector_parser.py114 # ------------------------------------------------------------------COMMENT
MEDIUMpydoll/elements/utils/selector_parser.py125 # ------------------------------------------------------------------COMMENT
MEDIUMpydoll/elements/utils/selector_parser.py127 # ------------------------------------------------------------------COMMENT
Excessive Try-Catch Wrapping44 hits · 51 pts
SeverityFileLineSnippetContext
LOWdocs/pt/deep-dive/network/build-proxy.md71 except Exception as e:CODE
LOWdocs/pt/deep-dive/network/build-proxy.md100 except Exception:CODE
LOWdocs/pt/deep-dive/network/build-proxy.md265 except Exception as e:CODE
MEDIUMdocs/pt/deep-dive/network/build-proxy.md41def _handle_client(self, reader, writer):CODE
MEDIUMdocs/pt/deep-dive/network/build-proxy.md256def _handle_client(self, reader, writer):CODE
LOWdocs/zh/deep-dive/network/build-proxy.md71 except Exception as e:CODE
LOWdocs/zh/deep-dive/network/build-proxy.md100 except Exception:CODE
LOWdocs/zh/deep-dive/network/build-proxy.md265 except Exception as e:CODE
MEDIUMdocs/zh/deep-dive/network/build-proxy.md41def _handle_client(self, reader, writer):CODE
MEDIUMdocs/zh/deep-dive/network/build-proxy.md256def _handle_client(self, reader, writer):CODE
LOWdocs/en/deep-dive/network/build-proxy.md71 except Exception as e:CODE
LOWdocs/en/deep-dive/network/build-proxy.md100 except Exception:CODE
LOWdocs/en/deep-dive/network/build-proxy.md265 except Exception as e:CODE
MEDIUMdocs/en/deep-dive/network/build-proxy.md41def _handle_client(self, reader, writer):CODE
MEDIUMdocs/en/deep-dive/network/build-proxy.md256def _handle_client(self, reader, writer):CODE
LOWpydoll/decorators.py154 except Exception as exc:CODE
LOWpydoll/decorators.py190 except Exception as exc:CODE
LOWpydoll/interactions/iframe.py361 except Exception:CODE
LOWpydoll/connection/connection_handler.py396 except Exception:CODE
LOWpydoll/connection/connection_handler.py400 except Exception:CODE
LOWpydoll/connection/managers/events_manager.py92 except Exception:CODE
LOWpydoll/connection/managers/events_manager.py202 except Exception as e:CODE
LOWpydoll/utils/socks5_proxy_forwarder.py279 except Exception:CODE
LOWpydoll/extractor/engine.py308 except Exception as exc:CODE
LOWpydoll/playwright/_browser_context.py471 except Exception:CODE
MEDIUMpydoll/playwright/_page.py711def waiter() -> None:CODE
LOWpydoll/playwright/_page.py579 except Exception as exc:CODE
LOWpydoll/playwright/_page.py626 except Exception as error:CODE
LOWpydoll/playwright/_page.py642 except Exception:CODE
LOWpydoll/playwright/_page.py714 except Exception as error:CODE
LOWpydoll/playwright/_network.py753 except Exception:CODE
LOWpydoll/playwright/_network.py792 except Exception as error:CODE
LOWpydoll/playwright/_navigation.py287 except Exception as error:CODE
MEDIUMpydoll/playwright/_navigation.py253def waiter() -> None:CODE
LOWpydoll/playwright/_events.py67 except Exception:CODE
LOWpydoll/playwright/_events.py74 except Exception:CODE
LOWpydoll/browser/tab.py1534 except Exception:CODE
LOWpydoll/browser/tab.py2260 except Exception as exc:CODE
LOWpydoll/browser/managers/temp_dir_manager.py113 except Exception: # noqa: BLE001 - best-effort cleanupCODE
LOWpydoll/browser/requests/request.py139 except Exception as exc:CODE
LOWpydoll/browser/requests/har_recorder.py65 except Exception:CODE
LOWpydoll/browser/requests/har_recorder.py331 except Exception:CODE
LOWpydoll/browser/requests/har_recorder.py433 except Exception:CODE
LOWpydoll/browser/chromium/base.py904 except Exception:CODE
Cross-File Repetition9 hits · 45 pts
SeverityFileLineSnippetContext
HIGHdocs/pt/deep-dive/fingerprinting/auditing.md0document.head.insertadjacenthtml('beforeend', '<style>.probe{--g: srgb} @media (color-gamut: p3){.probe{--g: p3}}</styleSTRING
HIGHdocs/zh/deep-dive/fingerprinting/auditing.md0document.head.insertadjacenthtml('beforeend', '<style>.probe{--g: srgb} @media (color-gamut: p3){.probe{--g: p3}}</styleSTRING
HIGHdocs/en/deep-dive/fingerprinting/auditing.md0document.head.insertadjacenthtml('beforeend', '<style>.probe{--g: srgb} @media (color-gamut: p3){.probe{--g: p3}}</styleSTRING
HIGHdocs/pt/stealth/evasion-techniques.md0return { useragent: navigator.useragent, webdriver: navigator.webdriver, languages: navigator.languages, plugins: navigaSTRING
HIGHdocs/zh/stealth/evasion-techniques.md0return { useragent: navigator.useragent, webdriver: navigator.webdriver, languages: navigator.languages, plugins: navigaSTRING
HIGHdocs/en/stealth/evasion-techniques.md0return { useragent: navigator.useragent, webdriver: navigator.webdriver, languages: navigator.languages, plugins: navigaSTRING
HIGHpydoll/browser/chromium/edge.py0initialize chrome browser instance. args: options: chrome configuration options (default if none). connection_port: cdp STRING
HIGHpydoll/sync/_generated.py0initialize chrome browser instance. args: options: chrome configuration options (default if none). connection_port: cdp STRING
HIGHpydoll/browser/chromium/chrome.py0initialize chrome browser instance. args: options: chrome configuration options (default if none). connection_port: cdp STRING
AI Structural Patterns47 hits · 32 pts
SeverityFileLineSnippetContext
LOWpydoll/playwright/_selectors.py84CODE
LOWpydoll/playwright/_playwright.py80CODE
LOWpydoll/playwright/_actions.py237CODE
LOWpydoll/playwright/_page.py985CODE
LOWpydoll/playwright/_page.py1061CODE
LOWpydoll/playwright/sync_api/_generated.py204CODE
LOWpydoll/playwright/sync_api/_generated.py644CODE
LOWpydoll/playwright/sync_api/_generated.py647CODE
LOWpydoll/browser/tab.py1618CODE
LOWpydoll/browser/tab.py2086CODE
LOWpydoll/elements/web_element.py971CODE
LOWpydoll/elements/mixins/find_elements_mixin.py78CODE
LOWpydoll/elements/mixins/find_elements_mixin.py92CODE
LOWpydoll/elements/mixins/find_elements_mixin.py106CODE
LOWpydoll/elements/mixins/find_elements_mixin.py120CODE
LOWpydoll/elements/mixins/find_elements_mixin.py134CODE
LOWpydoll/elements/mixins/find_elements_mixin.py147CODE
LOWpydoll/commands/target_commands.py152CODE
LOWpydoll/commands/network_commands.py322CODE
LOWpydoll/commands/runtime_commands.py111CODE
LOWpydoll/commands/runtime_commands.py241CODE
LOWpydoll/commands/page_commands.py385CODE
LOWpydoll/commands/input_commands.py82CODE
LOWpydoll/commands/input_commands.py171CODE
LOWpydoll/commands/input_commands.py543CODE
LOWpydoll/commands/emulation_commands.py146CODE
LOWpydoll/commands/emulation_commands.py310CODE
LOWpydoll/sync/_generated.py1405CODE
LOWpydoll/sync/_generated.py1539CODE
LOWpydoll/sync/_generated.py1541CODE
LOWpydoll/sync/_generated.py1543CODE
LOWpydoll/sync/_generated.py1545CODE
LOWpydoll/sync/_generated.py1547CODE
LOWpydoll/sync/_generated.py1548CODE
LOWpydoll/sync/_generated.py2112CODE
LOWpydoll/sync/_generated.py2159CODE
LOWpydoll/sync/_generated.py2161CODE
LOWpydoll/sync/_generated.py2163CODE
LOWpydoll/sync/_generated.py2165CODE
LOWpydoll/sync/_generated.py2167CODE
LOWpydoll/sync/_generated.py2168CODE
LOWpydoll/sync/_generated.py2312CODE
LOWpydoll/sync/_generated.py2314CODE
LOWpydoll/sync/_generated.py2316CODE
LOWpydoll/sync/_generated.py2318CODE
LOWpydoll/sync/_generated.py2320CODE
LOWpydoll/sync/_generated.py2321CODE
Deep Nesting21 hits · 20 pts
SeverityFileLineSnippetContext
LOWtests/integration/test_tab_io_integration.py52CODE
LOWtests/integration/test_tab_io_integration.py61CODE
LOWtests/integration/test_har_recording_integration.py60CODE
LOWtests/integration/test_tab_request_integration.py48CODE
LOWpydoll/connection/managers/events_manager.py191CODE
LOWpydoll/utils/url_match.py22CODE
LOWpydoll/playwright/_selectors.py157CODE
LOWpydoll/playwright/_browser_context.py303CODE
LOWpydoll/playwright/_frame.py977CODE
LOWpydoll/browser/fingerprint_applier.py796CODE
LOWpydoll/browser/fingerprint_applier.py830CODE
LOWpydoll/browser/tab.py1467CODE
LOWpydoll/browser/managers/temp_dir_manager.py96CODE
LOWpydoll/browser/requests/request.py496CODE
LOWpydoll/browser/requests/har_recorder.py585CODE
LOWscripts/generate_sync_api.py162CODE
LOWscripts/generate_sync_api.py209CODE
LOWscripts/generate_sync_api.py259CODE
LOWscripts/generate_sync_api.py279CODE
LOWscripts/generate_sync_api.py407CODE
LOWscripts/generate_sync_api.py607CODE
Self-Referential Comments4 hits · 15 pts
SeverityFileLineSnippetContext
MEDIUM⚡tests/unit/test_utils.py216 # Create a file that exists but is not executableCOMMENT
MEDIUM⚡tests/unit/test_utils.py289 # Create a temporary executable fileCOMMENT
MEDIUMtests/unit/test_utils.py161 # Create a temporary executable fileCOMMENT
MEDIUMtests/integration/test_iframe_integration.py451 # Create a test page with multiple iframesCOMMENT
Fake / Example Data11 hits · 10 pts
SeverityFileLineSnippetContext
LOWREADME_zh.md235await (await tab.find(id='username')).type_text('user@example.com')CODE
LOWtests/integration/test_iframe_integration.py383 placeholder = input_elem.get_attribute('placeholder')CODE
LOW⚡tests/integration/test_extractor_integration.py254 assert article.author.name == 'Jane Doe'CODE
LOWtests/integration/test_extractor_integration.py306 assert data['author']['name'] == 'Jane Doe'CODE
LOWtests/integration/test_extractor_integration.py495 assert article.author_name == 'Jane Doe'CODE
LOW⚡tests/integration/test_core_integration.py150 test_text = 'user@example.com'CODE
LOWtests/integration/pages/web_element.html78 <input id="email-input" type="email" value="user@example.com">CODE
LOWpydoll/protocol/dom/types.py47 PLACEHOLDER = 'placeholder'CODE
LOWpydoll/protocol/accessibility/types.py38 PLACEHOLDER = 'placeholder'CODE
LOWpydoll/playwright/_selectors.py77 return get_by_attribute_text_selector('placeholder', text, exact=exact)CODE
LOWpydoll/playwright/_injected/engine.js1208 const placeholder = element.getAttribute('placeholder') || '';CODE
Hallucination Indicators1 hit · 10 pts
SeverityFileLineSnippetContext
CRITICALpydoll/playwright/_dialog.py227 await self._page.context._browser._chrome.execute_command({CODE
Redundant / Tautological Comments2 hits · 3 pts
SeverityFileLineSnippetContext
LOWpydoll/interactions/scroll.py154 # Check if we are stuckCOMMENT
LOWpydoll/utils/general.py252 # Check if return is inside a function by counting bracesCOMMENT
Slop Phrases1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUM.github/ISSUE_TEMPLATE/feature_request.yml29 placeholder: I'm trying to accomplish X, but I'm unable to because Y...CODE
AI Slop Vocabulary2 hits · 2 pts
SeverityFileLineSnippetContext
MEDIUMpydoll/elements/web_element.py928 """Check if element is visible using comprehensive JavaScript visibility test."""STRING
MEDIUMpydoll/sync/_generated.py2097 """Check if element is visible using comprehensive JavaScript visibility test."""STRING
Overly Generic Function Names1 hit · 0 pts
SeverityFileLineSnippetContext
LOWpydoll/decorators.py131 def my_function():STRING
Over-Commented Block1 hit · 0 pts
SeverityFileLineSnippetContext
LOWpydoll/utils/fingerprint_builder.py101_WEBGL_INT32_PARAMS = frozenset({'max_viewport_dims'})COMMENT