Python version of the Playwright testing and automation library.
This report presents the forensic synthetic code analysis of microsoft/playwright-python, a Python project with 14,826 GitHub stars. SynthScan v2.0 examined 109,798 lines of code across 366 source files, recording 2740 pattern matches distributed across 14 syntactic categories. The overall adjusted score of 26.3 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 2740 distinct pattern matches across 14 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 192 | def _download_and_extract_local_driver( | CODE |
| LOW⚡ | tests/server.py | 277 | def send_on_web_socket_connection(self, data: bytes) -> None: | CODE |
| LOW⚡ | tests/server.py | 280 | def once_web_socket_connection( | CODE |
| LOW | tests/utils.py | 27 | def chromium_version_less_than(a: str, b: str) -> bool: | CODE |
| LOW | tests/test_reference_count_async.py | 44 | def handle_network_response_received(event: Any) -> None: | CODE |
| LOW | tests/test_reference_count_async.py | 90 | async def test_tracing_should_not_leak_protocol_callbacks(browser_name: str) -> None: | CODE |
| LOW⚡ | tests/async/test_page_select_option.py | 21 | async def test_select_option_should_select_single_option( | CODE |
| LOW⚡ | tests/async/test_page_select_option.py | 30 | async def test_select_option_should_select_single_option_by_value( | CODE |
| LOW⚡ | tests/async/test_page_select_option.py | 39 | async def test_select_option_should_select_single_option_by_label( | CODE |
| LOW⚡ | tests/async/test_page_select_option.py | 48 | async def test_select_option_should_select_single_option_by_empty_label( | CODE |
| LOW⚡ | tests/async/test_page_select_option.py | 156 | async def test_select_option_should_respect_event_bubbling( | CODE |
| LOW⚡ | tests/async/test_page_select_option.py | 165 | async def test_select_option_should_throw_when_element_is_not_a__select_( | CODE |
| LOW⚡ | tests/async/test_page_select_option.py | 174 | async def test_select_option_should_return_on_no_matched_values( | CODE |
| LOW⚡ | tests/async/test_page_select_option.py | 183 | async def test_select_option_should_return_an_array_of_matched_values( | CODE |
| LOW⚡ | tests/async/test_page_select_option.py | 192 | async def test_select_option_should_return_an_array_of_one_element_when_multiple_is_not_set( | CODE |
| LOW⚡ | tests/async/test_page_select_option.py | 200 | async def test_select_option_should_return_on_no_values( | CODE |
| LOW⚡ | tests/async/test_page_select_option.py | 208 | async def test_select_option_should_not_allow_null_items( | CODE |
| LOW⚡ | tests/async/test_page_select_option.py | 218 | async def test_select_option_should_unselect_with_null( | CODE |
| LOW | tests/async/test_page_select_option.py | 64 | async def test_select_option_should_select_single_option_by_handle( | CODE |
| LOW | tests/async/test_page_select_option.py | 75 | async def test_select_option_should_select_single_option_by_index( | CODE |
| LOW | tests/async/test_page_select_option.py | 92 | async def test_select_option_should_select_only_first_option( | CODE |
| LOW | tests/async/test_page_select_option.py | 101 | async def test_select_option_should_not_throw_when_select_causes_navigation( | CODE |
| LOW | tests/async/test_page_select_option.py | 114 | async def test_select_option_should_select_multiple_options( | CODE |
| LOW | tests/async/test_page_select_option.py | 124 | async def test_select_option_should_select_multiple_options_with_attributes( | CODE |
| LOW | tests/async/test_page_select_option.py | 139 | async def test_select_option_should_select_option_with_empty_value( | CODE |
| LOW | tests/async/test_page_select_option.py | 232 | async def test_select_option_should_deselect_all_options_when_passed_no_values_for_a_multiple_select( | CODE |
| LOW | tests/async/test_page_select_option.py | 245 | async def test_select_option_should_deselect_all_options_when_passed_no_values_for_a_select_without_multiple( | CODE |
| LOW | tests/async/test_page_select_option.py | 257 | async def test_select_option_should_work_when_re_defining_top_level_event_class( | CODE |
| LOW | tests/async/test_page_select_option.py | 267 | async def test_select_options_should_fall_back_to_selecting_by_label( | CODE |
| LOW | tests/async/test_fill.py | 25 | async def test_is_enabled_for_non_editable_button(page: Page) -> None: | CODE |
| LOW⚡ | tests/async/test_defaultbrowsercontext.py | 200 | async def test_should_support_viewport_option( | CODE |
| LOW⚡ | tests/async/test_defaultbrowsercontext.py | 210 | async def test_should_support_device_scale_factor_option( | CODE |
| LOW⚡ | tests/async/test_defaultbrowsercontext.py | 217 | async def test_should_support_user_agent_option( | CODE |
| LOW⚡ | tests/async/test_defaultbrowsercontext.py | 267 | async def test_should_support_offline_option( | CODE |
| LOW⚡ | tests/async/test_defaultbrowsercontext.py | 276 | async def test_should_support_has_touch_option( | CODE |
| LOW⚡ | tests/async/test_defaultbrowsercontext.py | 286 | async def test_should_work_in_persistent_context( | CODE |
| LOW⚡ | tests/async/test_defaultbrowsercontext.py | 311 | async def test_should_support_timezone_id_option( | CODE |
| LOW⚡ | tests/async/test_defaultbrowsercontext.py | 321 | async def test_should_support_contrast_option( | CODE |
| LOW⚡ | tests/async/test_defaultbrowsercontext.py | 331 | async def test_should_support_locale_option( | CODE |
| LOW⚡ | tests/async/test_defaultbrowsercontext.py | 338 | async def test_should_support_geolocation_and_permission_option( | CODE |
| LOW⚡ | tests/async/test_defaultbrowsercontext.py | 420 | async def test_should_have_default_url_when_launching_browser( | CODE |
| LOW⚡ | tests/async/test_defaultbrowsercontext.py | 429 | async def test_should_throw_if_page_argument_is_passed( | CODE |
| LOW⚡ | tests/async/test_defaultbrowsercontext.py | 438 | async def test_should_fire_close_event_for_a_persistent_context( | CODE |
| LOW⚡ | tests/async/test_defaultbrowsercontext.py | 448 | async def test_should_support_reduced_motion( | CODE |
| LOW⚡ | tests/async/test_defaultbrowsercontext.py | 455 | async def test_should_support_har_option( | CODE |
| LOW | tests/async/test_defaultbrowsercontext.py | 67 | async def test_context_cookies_should_work( | CODE |
| LOW | tests/async/test_defaultbrowsercontext.py | 96 | async def test_context_add_cookies_should_work( | CODE |
| LOW | tests/async/test_defaultbrowsercontext.py | 134 | async def test_context_clear_cookies_should_work( | CODE |
| LOW | tests/async/test_defaultbrowsercontext.py | 153 | async def test_should_not_block_third_party_cookies( | CODE |
| LOW | tests/async/test_defaultbrowsercontext.py | 230 | async def test_should_support_bypass_csp_option( | CODE |
| LOW | tests/async/test_defaultbrowsercontext.py | 240 | async def test_should_support_javascript_enabled_option( | CODE |
| LOW | tests/async/test_defaultbrowsercontext.py | 254 | async def test_should_support_http_credentials_option( | CODE |
| LOW | tests/async/test_defaultbrowsercontext.py | 298 | async def test_should_support_color_scheme_option( | CODE |
| LOW | tests/async/test_defaultbrowsercontext.py | 354 | async def test_should_support_ignore_https_errors_option( | CODE |
| LOW | tests/async/test_defaultbrowsercontext.py | 364 | async def test_should_support_extra_http_headers_option( | CODE |
| LOW | tests/async/test_defaultbrowsercontext.py | 376 | async def test_should_accept_user_data_dir( | CODE |
| LOW | tests/async/test_browsercontext_request_fallback.py | 57 | async def test_should_fall_back_async_delayed( | CODE |
| LOW⚡ | tests/async/test_browsercontext_request_fallback.py | 97 | async def test_should_fall_back_after_exception( | CODE |
| LOW⚡ | tests/async/test_browsercontext_request_fallback.py | 113 | async def test_should_amend_http_headers( | CODE |
| LOW | tests/async/test_browsercontext_request_fallback.py | 137 | async def test_should_delete_header_with_undefined_value( | CODE |
| 1977 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | requirements.txt | 1 | # This file was autogenerated by uv via the following command: | COMMENT |
| LOW | setup.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/conftest.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/server.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/test_installation.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/utils.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/test_reference_count_async.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_page_select_option.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_fill.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_defaultbrowsercontext.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_browsercontext_request_fallback.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_add_init_script.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_jshandle.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_browsercontext_credentials.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_screenshot.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_resource_timing.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_extension.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/conftest.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_navigation.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_download.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_browsercontext_clearcookies.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_frames.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_input.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_request_fulfill.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_page_event_pageerror.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_pdf.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_browsercontext_proxy.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_selectors_get_by.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_tracing.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_selectors_text.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_console.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_browsercontext_route.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_element_handle.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_expect_misc.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_fetch_global.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_browsercontext_cookies.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_page_evaluate.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_browsercontext_client_certificates.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_geolocation.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_websocket.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_selector_generator.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_route_web_socket.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_emulation_focus.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_fetch_browser_context.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_browsercontext_storage_state.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_page.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_request_continue.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_cdp_session.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_video.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_locators.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_asyncio.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_focus.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_browsercontext_request_intercept.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_browsertype_connect_cdp.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_context_manager.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_ignore_https_errors.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_selectors_misc.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_wait_for_function.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_page_network_response.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| LOW | tests/async/test_click.py | 1 | # Copyright (c) Microsoft Corporation. | COMMENT |
| 194 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | tests/async/test_jshandle.py | 129 | undefined: undefined, | STRING |
| HIGH⚡ | tests/async/test_jshandle.py | 130 | null: null, | STRING |
| HIGH⚡ | tests/async/test_navigation.py | 837 | await page.evaluate("window.open('about:blank', null, 'noopener') && 1") | CODE |
| HIGH⚡ | tests/async/test_navigation.py | 862 | "url => window.open(url, null, 'noopener') && 1", server.EMPTY_PAGE | CODE |
| HIGH⚡ | tests/async/test_navigation.py | 202 | window.addEventListener('beforeunload', () => history.replaceState(null, 'initial', window.location.href), false | STRING |
| HIGH | tests/async/test_input.py | 332 | e.addEventListener('input', () => events.push('input')); | STRING |
| HIGH | tests/async/test_input.py | 333 | e.addEventListener('change', () => events.push('change')); | STRING |
| HIGH | tests/async/test_console.py | 147 | if (!frame.contentDocument || frame.contentDocument.readyState !== 'complete') | STRING |
| HIGH | tests/async/test_fetch_global.py | 466 | ({"foo": None}, '{"foo": null}'), | CODE |
| HIGH⚡ | tests/async/test_page_evaluate.py | 179 | '({ a, b }) => Object.is(a, null) && Object.is(b, "foo")', | CODE |
| HIGH⚡ | tests/async/test_route_web_socket.py | 53 | window.ws.addEventListener('open', () => window.log.push('open')); | STRING |
| HIGH⚡ | tests/async/test_route_web_socket.py | 54 | window.ws.addEventListener('close', event => window.log.push(`close code=${event.code} reason=${event.reason} wasCle | STRING |
| HIGH⚡ | tests/async/test_route_web_socket.py | 55 | window.ws.addEventListener('error', event => window.log.push(`error`)); | STRING |
| HIGH⚡ | tests/async/test_route_web_socket.py | 64 | window.log.push(`message: data=${data} origin=${event.origin} lastEventId=${event.lastEventId}`); | STRING |
| HIGH | tests/async/test_route_web_socket.py | 125 | window.ws1.addEventListener('message', event => window.log.push(`ws1:${event.data}`)); | STRING |
| HIGH | tests/async/test_route_web_socket.py | 127 | window.ws2.addEventListener('message', event => window.log.push(`ws2:${event.data}`)); | STRING |
| HIGH | tests/async/test_route_web_socket.py | 371 | window.ws.addEventListener('message', event => window.log.push(event.data)); | STRING |
| HIGH | tests/async/test_emulation_focus.py | 72 | document.onclick = () => window.click_count = (window.click_count || 0) + 1; | CODE |
| HIGH | tests/async/test_emulation_focus.py | 119 | element.onfocus = element.onblur = (e) => self._events.push(e.type); | CODE |
| HIGH⚡ | tests/async/test_page.py | 1370 | events.push({ | STRING |
| HIGH⚡ | tests/async/test_page.py | 1377 | events.push({ | STRING |
| HIGH⚡ | tests/async/test_page.py | 1384 | events.push({ | STRING |
| HIGH⚡ | tests/async/test_page.py | 1420 | events.push({ | STRING |
| HIGH⚡ | tests/async/test_page.py | 1427 | events.push({ | STRING |
| HIGH⚡ | tests/async/test_page.py | 1434 | events.push({ | STRING |
| HIGH | tests/async/test_page.py | 1327 | events.push({ | STRING |
| HIGH | tests/async/test_page.py | 1334 | events.push({ | STRING |
| HIGH⚡ | tests/async/test_locators.py | 1207 | window.__dropInfo = null; | CODE |
| HIGH⚡ | tests/async/test_locators.py | 1215 | files.push({ name: file.name, type: file.type, size: file.size, text: await file.text() }); | CODE |
| HIGH | tests/async/test_locators.py | 759 | events.push({ | CODE |
| HIGH | tests/async/test_locators.py | 766 | events.push({ | CODE |
| HIGH | tests/async/test_click.py | 1130 | window.result.push([event.clientX, event.clientY]); | STRING |
| HIGH | tests/async/test_page_route.py | 226 | request.send(null); | STRING |
| HIGH⚡ | tests/async/test_keyboard.py | 123 | document.addEventListener('keydown', e => events.push(e.type)); | STRING |
| HIGH⚡ | tests/async/test_keyboard.py | 124 | document.addEventListener('keyup', e => events.push(e.type)); | STRING |
| HIGH⚡ | tests/async/test_keyboard.py | 125 | document.addEventListener('keypress', e => events.push(e.type)); | STRING |
| HIGH⚡ | tests/async/test_keyboard.py | 126 | document.addEventListener('input', e => events.push(e.type)); | STRING |
| HIGH | tests/async/test_keyboard.py | 40 | lastEvent.keyIdentifier = 'keyIdentifier' in e && e.keyIdentifier; | STRING |
| HIGH | tests/async/test_keyboard.py | 485 | if (event.key === 'a' && (event.metaKey || event.ctrlKey)) | STRING |
| HIGH | tests/async/test_headful.py | 157 | """() => window.outerWidth === 500 && window.outerHeight === 450""" | STRING |
| HIGH | tests/async/test_tap.py | 234 | target.addEventListener(event, () => events.push(event), false); | STRING |
| HIGH | tests/async/test_browsertype_connect.py | 293 | e.addEventListener('input', () => events.push('input')); | STRING |
| HIGH | tests/async/test_browsertype_connect.py | 294 | e.addEventListener('change', () => events.push('change')); | STRING |
| HIGH⚡ | tests/async/test_popup.py | 379 | '() => window.__popup = window.open(undefined, null, "noopener")' | CODE |
| HIGH⚡ | tests/async/test_popup.py | 394 | '() => window.__popup = window.open("about:blank", null, "noopener")' | CODE |
| HIGH⚡ | tests/async/test_popup.py | 408 | 'url => window.__popup = window.open(url, null, "noopener")', | CODE |
| HIGH | tests/async/test_popup.py | 196 | if (win.innerWidth === 600 && win.innerHeight === 300) { | STRING |
| HIGH | tests/sync/test_console.py | 152 | if (!frame.contentDocument || frame.contentDocument.readyState !== 'complete') | STRING |
| HIGH⚡ | tests/sync/test_fetch_global.py | 333 | assert response.text() == '{"foo": null}' | CODE |
| HIGH⚡ | tests/sync/test_route_web_socket.py | 50 | window.ws.addEventListener('open', () => window.log.push('open')); | STRING |
| HIGH⚡ | tests/sync/test_route_web_socket.py | 51 | window.ws.addEventListener('close', event => window.log.push(`close code=${event.code} reason=${event.reason} wasCle | STRING |
| HIGH⚡ | tests/sync/test_route_web_socket.py | 52 | window.ws.addEventListener('error', event => window.log.push(`error`)); | STRING |
| HIGH⚡ | tests/sync/test_route_web_socket.py | 61 | window.log.push(`message: data=${data} origin=${event.origin} lastEventId=${event.lastEventId}`); | STRING |
| HIGH | tests/sync/test_route_web_socket.py | 119 | window.ws1.addEventListener('message', event => window.log.push(`ws1:${event.data}`)); | STRING |
| HIGH | tests/sync/test_route_web_socket.py | 121 | window.ws2.addEventListener('message', event => window.log.push(`ws2:${event.data}`)); | STRING |
| HIGH | tests/sync/test_route_web_socket.py | 366 | window.ws.addEventListener('message', event => window.log.push(event.data)); | STRING |
| HIGH | tests/sync/test_locators.py | 1021 | window.__dropInfo = null; | CODE |
| HIGH | tests/sync/test_locators.py | 1029 | files.push({ name: file.name, type: file.type, size: file.size, text: await file.text() }); | CODE |
| HIGH | tests/sync/test_tap.py | 110 | target.addEventListener(event, () => events.push(event), false); | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/async/test_defaultbrowsercontext.py | 0 | () => { document.cookie = 'username=john doe'; return document.cookie; } | STRING |
| HIGH | tests/async/test_browsercontext_cookies.py | 0 | () => { document.cookie = 'username=john doe'; return document.cookie; } | STRING |
| HIGH | tests/async/test_headful.py | 0 | () => { document.cookie = 'username=john doe'; return document.cookie; } | STRING |
| HIGH | tests/async/test_defaultbrowsercontext.py | 0 | src => { let fulfill; const promise = new promise(x => fulfill = x); const iframe = document.createelement('iframe'); do | STRING |
| HIGH | tests/async/test_headful.py | 0 | src => { let fulfill; const promise = new promise(x => fulfill = x); const iframe = document.createelement('iframe'); do | STRING |
| HIGH | tests/async/test_browsercontext_add_cookies.py | 0 | src => { let fulfill; const promise = new promise(x => fulfill = x); const iframe = document.createelement('iframe'); do | STRING |
| HIGH | tests/async/test_browsercontext_request_fallback.py | 0 | async url => { const data = await fetch(url, { headers: { foo: 'a', bar: 'b', } }); return data.text(); } | STRING |
| HIGH | tests/async/test_page_request_fallback.py | 0 | async url => { const data = await fetch(url, { headers: { foo: 'a', bar: 'b', } }); return data.text(); } | STRING |
| HIGH | tests/sync/test_browsercontext_request_fallback.py | 0 | async url => { const data = await fetch(url, { headers: { foo: 'a', bar: 'b', } }); return data.text(); } | STRING |
| HIGH | tests/sync/test_page_request_fallback.py | 0 | async url => { const data = await fetch(url, { headers: { foo: 'a', bar: 'b', } }); return data.text(); } | STRING |
| HIGH | tests/async/test_element_handle.py | 0 | <button disabled>button1</button> <button>button2</button> <div>div</div> | STRING |
| HIGH | tests/async/test_locators.py | 0 | <button disabled>button1</button> <button>button2</button> <div>div</div> | STRING |
| HIGH | tests/sync/test_element_handle.py | 0 | <button disabled>button1</button> <button>button2</button> <div>div</div> | STRING |
| HIGH | tests/sync/test_locators.py | 0 | <button disabled>button1</button> <button>button2</button> <div>div</div> | STRING |
| HIGH | tests/async/test_click.py | 0 | <input type='radio'>one</input> <input id='two' type='radio'>two</input> <input type='radio'>three</input> | STRING |
| HIGH | tests/async/test_check.py | 0 | <input type='radio'>one</input> <input id='two' type='radio'>two</input> <input type='radio'>three</input> | STRING |
| HIGH | tests/sync/test_check.py | 0 | <input type='radio'>one</input> <input id='two' type='radio'>two</input> <input type='radio'>three</input> | STRING |
| HIGH | tests/async/test_click.py | 0 | <div role='checkbox' id='checkbox'>checkbox</div> <script> checkbox.addeventlistener('click', () => checkbox.setattribut | STRING |
| HIGH | tests/async/test_check.py | 0 | <div role='checkbox' id='checkbox'>checkbox</div> <script> checkbox.addeventlistener('click', () => checkbox.setattribut | STRING |
| HIGH | tests/sync/test_check.py | 0 | <div role='checkbox' id='checkbox'>checkbox</div> <script> checkbox.addeventlistener('click', () => checkbox.setattribut | STRING |
| HIGH | playwright/__init__.py | 0 | python package `playwright` is a python library to automate chromium, firefox and webkit with a single api. playwright i | STRING |
| HIGH | playwright/async_api/__init__.py | 0 | python package `playwright` is a python library to automate chromium, firefox and webkit with a single api. playwright i | STRING |
| HIGH | playwright/sync_api/__init__.py | 0 | python package `playwright` is a python library to automate chromium, firefox and webkit with a single api. playwright i | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/async/conftest.py | 15 | CODE | |
| LOW | tests/async/test_navigation.py | 23 | CODE | |
| LOW | tests/async/test_download.py | 18 | CODE | |
| LOW | tests/async/test_browsercontext_proxy.py | 15 | CODE | |
| LOW | tests/async/test_browsercontext_proxy.py | 17 | CODE | |
| LOW | tests/async/test_browsercontext_proxy.py | 17 | CODE | |
| LOW | tests/async/test_browsercontext_proxy.py | 21 | CODE | |
| LOW | tests/async/test_browsercontext_route.py | 17 | CODE | |
| LOW | tests/async/test_browsercontext_route.py | 17 | CODE | |
| LOW | tests/async/test_fetch_browser_context.py | 19 | CODE | |
| LOW | tests/async/test_request_continue.py | 16 | CODE | |
| LOW | tests/async/test_worker.py | 20 | CODE | |
| LOW | tests/async/test_proxy.py | 15 | CODE | |
| LOW | tests/async/test_proxy.py | 17 | CODE | |
| LOW | tests/async/test_proxy.py | 21 | CODE | |
| LOW | playwright/_impl/_credentials.py | 21 | CODE | |
| LOW | playwright/_impl/_clock.py | 19 | CODE | |
| LOW | playwright/_impl/_screencast.py | 27 | CODE | |
| LOW | playwright/_impl/_helper.py | 55 | CODE | |
| LOW | playwright/_impl/_helper.py | 56 | CODE | |
| LOW | playwright/_impl/_helper.py | 56 | CODE | |
| LOW | playwright/_impl/_helper.py | 56 | CODE | |
| LOW | playwright/_impl/_helper.py | 56 | CODE | |
| LOW | playwright/_impl/_locator.py | 59 | CODE | |
| LOW | playwright/_impl/_locator.py | 60 | CODE | |
| LOW | playwright/_impl/_locator.py | 61 | CODE | |
| LOW | playwright/_impl/_fetch.py | 55 | CODE | |
| LOW | playwright/_impl/_download.py | 22 | CODE | |
| LOW | playwright/_impl/_console_message.py | 23 | CODE | |
| LOW | playwright/_impl/_console_message.py | 24 | CODE | |
| LOW | playwright/_impl/_browser_context.py | 88 | CODE | |
| LOW | playwright/_impl/_page.py | 109 | CODE | |
| LOW | playwright/_impl/_page.py | 110 | CODE | |
| LOW | playwright/_impl/_page.py | 111 | CODE | |
| LOW | playwright/_impl/_page.py | 111 | CODE | |
| LOW | playwright/_impl/_video.py | 22 | CODE | |
| LOW | playwright/_impl/_browser.py | 57 | CODE | |
| LOW | playwright/_impl/_set_input_files_helpers.py | 36 | CODE | |
| LOW | playwright/_impl/_network.py | 66 | CODE | |
| LOW | playwright/_impl/_network.py | 68 | CODE | |
| LOW | playwright/_impl/_network.py | 69 | CODE | |
| LOW | playwright/_impl/_network.py | 69 | CODE | |
| LOW | playwright/_impl/_browser_type.py | 51 | CODE | |
| LOW | playwright/_impl/_har_router.py | 27 | CODE | |
| LOW | playwright/_impl/_har_router.py | 28 | CODE | |
| LOW | playwright/_impl/_har_router.py | 29 | CODE | |
| LOW | playwright/_impl/_web_storage.py | 20 | CODE | |
| LOW | playwright/_impl/_dialog.py | 22 | CODE | |
| LOW | playwright/_impl/_frame.py | 33 | CODE | |
| LOW | playwright/_impl/_file_chooser.py | 21 | CODE | |
| LOW | playwright/_impl/_file_chooser.py | 22 | CODE | |
| LOW | playwright/_impl/_js_handle.py | 30 | CODE | |
| LOW | playwright/_impl/_async_base.py | 15 | CODE | |
| LOW | playwright/_impl/_element_handle.py | 50 | CODE | |
| LOW | playwright/_impl/_element_handle.py | 51 | CODE | |
| LOW | playwright/_impl/_connection.py | 47 | CODE | |
| LOW | playwright/_impl/_connection.py | 48 | CODE | |
| LOW | playwright/async_api/_generated.py | 73 | CODE | |
| LOW | playwright/async_api/_generated.py | 78 | CODE | |
| LOW | playwright/async_api/__init__.py | 33 | CODE | |
| 53 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | playwright/_impl/_locator.py | 953 | CODE | |
| LOW | playwright/_impl/_locator.py | 149 | CODE | |
| LOW | playwright/_impl/_locator.py | 165 | CODE | |
| LOW | playwright/_impl/_locator.py | 271 | CODE | |
| LOW | playwright/_impl/_locator.py | 563 | CODE | |
| LOW | playwright/_impl/_locator.py | 835 | CODE | |
| LOW | playwright/_impl/_fetch.py | 70 | CODE | |
| LOW | playwright/_impl/_fetch.py | 130 | CODE | |
| LOW | playwright/_impl/_fetch.py | 159 | CODE | |
| LOW | playwright/_impl/_fetch.py | 188 | CODE | |
| LOW | playwright/_impl/_fetch.py | 217 | CODE | |
| LOW | playwright/_impl/_fetch.py | 246 | CODE | |
| LOW | playwright/_impl/_fetch.py | 275 | CODE | |
| LOW | playwright/_impl/_fetch.py | 304 | CODE | |
| LOW | playwright/_impl/_fetch.py | 344 | CODE | |
| LOW | playwright/_impl/_page.py | 795 | CODE | |
| LOW | playwright/_impl/_page.py | 872 | CODE | |
| LOW | playwright/_impl/_page.py | 888 | CODE | |
| LOW | playwright/_impl/_page.py | 958 | CODE | |
| LOW | playwright/_impl/_page.py | 1040 | CODE | |
| LOW | playwright/_impl/_page.py | 1055 | CODE | |
| LOW | playwright/_impl/_page.py | 1177 | CODE | |
| LOW | playwright/_impl/_browser.py | 131 | CODE | |
| LOW | playwright/_impl/_browser.py | 185 | CODE | |
| LOW | playwright/_impl/_browser_type.py | 72 | CODE | |
| LOW | playwright/_impl/_browser_type.py | 107 | CODE | |
| LOW | playwright/_impl/_frame.py | 560 | CODE | |
| LOW | playwright/_impl/_frame.py | 576 | CODE | |
| LOW | playwright/_impl/_frame.py | 593 | CODE | |
| LOW | playwright/_impl/_frame.py | 678 | CODE | |
| LOW | playwright/_impl/_frame.py | 770 | CODE | |
| LOW | playwright/_impl/_frame.py | 787 | CODE | |
| LOW | playwright/_impl/_element_handle.py | 130 | CODE | |
| LOW | playwright/_impl/_element_handle.py | 147 | CODE | |
| LOW | playwright/_impl/_element_handle.py | 313 | CODE | |
| LOW | playwright/async_api/_generated.py | 2270 | CODE | |
| LOW | playwright/async_api/_generated.py | 2347 | CODE | |
| LOW | playwright/async_api/_generated.py | 2992 | CODE | |
| LOW | playwright/async_api/_generated.py | 4447 | CODE | |
| LOW | playwright/async_api/_generated.py | 4531 | CODE | |
| LOW | playwright/async_api/_generated.py | 4916 | CODE | |
| LOW | playwright/async_api/_generated.py | 5535 | CODE | |
| LOW | playwright/async_api/_generated.py | 5599 | CODE | |
| LOW | playwright/async_api/_generated.py | 6415 | CODE | |
| LOW | playwright/async_api/_generated.py | 10647 | CODE | |
| LOW | playwright/async_api/_generated.py | 10833 | CODE | |
| LOW | playwright/async_api/_generated.py | 10917 | CODE | |
| LOW | playwright/async_api/_generated.py | 11299 | CODE | |
| LOW | playwright/async_api/_generated.py | 11918 | CODE | |
| LOW | playwright/async_api/_generated.py | 11998 | CODE | |
| LOW | playwright/async_api/_generated.py | 12542 | CODE | |
| LOW | playwright/async_api/_generated.py | 15766 | CODE | |
| LOW | playwright/async_api/_generated.py | 16017 | CODE | |
| LOW | playwright/async_api/_generated.py | 16426 | CODE | |
| LOW | playwright/async_api/_generated.py | 16567 | CODE | |
| LOW | playwright/async_api/_generated.py | 17607 | CODE | |
| LOW | playwright/async_api/_generated.py | 17706 | CODE | |
| LOW | playwright/async_api/_generated.py | 18268 | CODE | |
| LOW | playwright/async_api/_generated.py | 19523 | CODE | |
| LOW | playwright/async_api/_generated.py | 20540 | CODE | |
| 40 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/conftest.py | 220 | except Exception: | CODE |
| LOW | tests/server.py | 299 | except Exception: | CODE |
| LOW | tests/server.py | 332 | except Exception: | CODE |
| LOW⚡ | tests/async/test_browsercontext_request_fallback.py | 105 | except Exception: | CODE |
| LOW | tests/async/test_page_evaluate.py | 255 | except Exception as e: | CODE |
| LOW | tests/async/test_request_continue.py | 109 | except Exception as e: | CODE |
| LOW | tests/async/test_asyncio.py | 142 | except Exception as error: | CODE |
| LOW⚡ | tests/async/test_page_request_fallback.py | 143 | except Exception: | CODE |
| LOW⚡ | tests/sync/test_browsercontext_request_fallback.py | 151 | except Exception: | CODE |
| LOW | tests/sync/conftest.py | 107 | except Exception as e: | CODE |
| MEDIUM | tests/sync/conftest.py | 104 | def body() -> Any: | CODE |
| LOW⚡ | tests/sync/test_sync.py | 359 | except Exception as error: | CODE |
| LOW⚡ | tests/sync/test_page_request_fallback.py | 141 | except Exception: | CODE |
| LOW | tests/sync/test_page_add_locator_handler.py | 206 | except Exception: | CODE |
| LOW | utils/linting/check_file_header.py | 59 | except Exception as e: | STRING |
| LOW | playwright/_impl/_helper.py | 264 | except Exception: | CODE |
| LOW | playwright/_impl/_helper.py | 431 | except Exception as e: | CODE |
| LOW | playwright/_impl/_helper.py | 459 | except Exception as e: | CODE |
| MEDIUM | playwright/_impl/_helper.py | 455 | def _handler() -> None: | CODE |
| LOW | playwright/_impl/_transport.py | 131 | except Exception as exc: | CODE |
| LOW | playwright/_impl/_browser_context.py | 274 | except Exception: | CODE |
| MEDIUM | playwright/_impl/_page.py | 312 | def _update_interceptor_patterns_ignore_exceptions() -> None: | CODE |
| LOW | playwright/_impl/_page.py | 864 | except Exception as e: | CODE |
| LOW | playwright/_impl/_page.py | 1436 | except Exception as e: | CODE |
| LOW | playwright/_impl/_page.py | 1609 | except Exception as e: | CODE |
| LOW | playwright/_impl/_waiter.py | 138 | except Exception as e: | CODE |
| LOW | playwright/_impl/_waiter.py | 146 | except Exception as e: | CODE |
| LOW | playwright/_impl/_waiter.py | 175 | except Exception: | CODE |
| LOW | playwright/_impl/_browser.py | 242 | except Exception as e: | CODE |
| LOW | playwright/_impl/_network.py | 228 | except Exception: | CODE |
| LOW | playwright/_impl/_network.py | 466 | except Exception as e: | CODE |
| LOW | playwright/_impl/_network.py | 574 | except Exception: | CODE |
| LOW | playwright/_impl/_network.py | 710 | except Exception: | CODE |
| LOW | playwright/_impl/_network.py | 761 | except Exception: | CODE |
| MEDIUM | playwright/_impl/_network.py | 571 | def _ignore_exception() -> None: | CODE |
| LOW | playwright/_impl/_dialog.py | 60 | except Exception as e: | CODE |
| MEDIUM | playwright/_impl/_dialog.py | 54 | def dismiss(self) -> None: | CODE |
| LOW | playwright/_impl/_js_handle.py | 119 | except Exception as e: | CODE |
| MEDIUM | playwright/_impl/_js_handle.py | 113 | def dispose(self) -> None: | CODE |
| LOW | playwright/_impl/_disposable.py | 38 | except Exception as e: | CODE |
| MEDIUM | playwright/_impl/_disposable.py | 32 | def dispose(self) -> None: | CODE |
| MEDIUM | playwright/_impl/_connection.py | 499 | print("Error occurred in event listener", file=sys.stderr) | CODE |
| LOW | playwright/_impl/_connection.py | 562 | except Exception as error: | CODE |
| LOW | playwright/_impl/_connection.py | 580 | except Exception as error: | CODE |
| LOW | scripts/documentation_provider.py | 451 | except Exception: | CODE |
| LOW | scripts/build_driver.py | 93 | except Exception as error: # noqa: BLE001 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/server.py | 247 | def set_auth(self, path: str, username: str, password: str) -> None: | CODE |
| LOW | tests/server.py | 250 | def set_csp(self, path: str, value: str) -> None: | CODE |
| LOW⚡ | tests/server.py | 269 | def set_redirect(self, from_: str, to: str) -> None: | CODE |
| LOW | playwright/_impl/_selectors.py | 59 | def set_test_id_attribute(self, attributeName: str) -> None: | CODE |
| LOW | playwright/_impl/_playwright.py | 56 | def _set_selectors(self, selectors: Selectors) -> None: | CODE |
| LOW | playwright/_impl/_helper.py | 311 | def set_default_timeout(self, timeout: Optional[float]) -> None: | CODE |
| LOW | playwright/_impl/_locator.py | 910 | def set_test_id_attribute_name(attribute_name: str) -> None: | CODE |
| LOW⚡ | playwright/_impl/_browser_context.py | 297 | def set_default_navigation_timeout(self, timeout: float) -> None: | CODE |
| LOW⚡ | playwright/_impl/_browser_context.py | 300 | def _set_default_navigation_timeout_impl(self, timeout: Optional[float]) -> None: | CODE |
| LOW⚡ | playwright/_impl/_browser_context.py | 303 | def set_default_timeout(self, timeout: float) -> None: | CODE |
| LOW⚡ | playwright/_impl/_browser_context.py | 306 | def _set_default_timeout_impl(self, timeout: Optional[float]) -> None: | CODE |
| LOW⚡ | playwright/_impl/_browser_context.py | 395 | async def set_geolocation(self, geolocation: Geolocation = None) -> None: | CODE |
| LOW⚡ | playwright/_impl/_browser_context.py | 398 | async def set_extra_http_headers(self, headers: Dict[str, str]) -> None: | CODE |
| LOW⚡ | playwright/_impl/_browser_context.py | 403 | async def set_offline(self, offline: bool) -> None: | CODE |
| LOW⚡ | playwright/_impl/_browser_context.py | 519 | async def _update_interception_patterns(self) -> None: | CODE |
| LOW⚡ | playwright/_impl/_browser_context.py | 525 | async def _update_web_socket_interception_patterns(self) -> None: | CODE |
| LOW⚡ | playwright/_impl/_page.py | 404 | def set_default_navigation_timeout(self, timeout: float) -> None: | CODE |
| LOW⚡ | playwright/_impl/_page.py | 407 | def set_default_timeout(self, timeout: float) -> None: | CODE |
| LOW⚡ | playwright/_impl/_page.py | 777 | async def _update_interception_patterns(self) -> None: | CODE |
| LOW⚡ | playwright/_impl/_page.py | 785 | async def _update_web_socket_interception_patterns(self) -> None: | CODE |
| LOW | playwright/_impl/_page.py | 312 | async def _update_interceptor_patterns_ignore_exceptions() -> None: | CODE |
| LOW | playwright/_impl/_page.py | 531 | async def set_extra_http_headers(self, headers: Dict[str, str]) -> None: | CODE |
| LOW | playwright/_impl/_page.py | 655 | async def set_viewport_size(self, viewportSize: ViewportSize) -> None: | CODE |
| LOW | playwright/_impl/_browser.py | 110 | def _setup_browser_context(self, context: BrowserContext) -> None: | CODE |
| LOW | playwright/_impl/_network.py | 287 | def _set_response_end_timing(self, response_end_timing: float) -> None: | CODE |
| LOW | playwright/_impl/_web_storage.py | 45 | async def set_item(self, name: str, value: str) -> None: | CODE |
| LOW⚡ | playwright/_impl/_connection.py | 194 | def _set_event_to_subscription_mapping(self, mapping: Dict[str, str]) -> None: | CODE |
| LOW⚡ | playwright/_impl/_connection.py | 197 | def _update_subscription(self, event: str, enabled: bool) -> None: | CODE |
| LOW | playwright/_impl/_connection.py | 348 | def set_is_tracing(self, is_tracing: bool) -> None: | CODE |
| LOW | playwright/async_api/_generated.py | 7090 | def set_test_id_attribute(self, attribute_name: str) -> None: | CODE |
| LOW | playwright/async_api/_generated.py | 9633 | async def set_extra_http_headers(self, headers: typing.Dict[str, str]) -> None: | CODE |
| LOW | playwright/async_api/_generated.py | 10316 | async def set_viewport_size(self, viewport_size: ViewportSize) -> None: | CODE |
| LOW | playwright/async_api/_generated.py | 13676 | async def set_item(self, name: str, value: str) -> None: | CODE |
| LOW | playwright/async_api/_generated.py | 14530 | async def set_extra_http_headers(self, headers: typing.Dict[str, str]) -> None: | CODE |
| LOW | playwright/async_api/_generated.py | 14552 | async def set_offline(self, offline: bool) -> None: | CODE |
| LOW | playwright/async_api/__init__.py | 106 | def set_options(self, timeout: Optional[float] = _unset) -> None: | CODE |
| LOW | playwright/async_api/__init__.py | 206 | __all__ = [ | CODE |
| LOW | playwright/sync_api/_generated.py | 7180 | def set_test_id_attribute(self, attribute_name: str) -> None: | CODE |
| LOW | playwright/sync_api/_generated.py | 7323 | def set_fixed_time(self, time: typing.Union[float, str, datetime.datetime]) -> None: | CODE |
| LOW | playwright/sync_api/_generated.py | 9637 | def set_extra_http_headers(self, headers: typing.Dict[str, str]) -> None: | CODE |
| LOW | playwright/sync_api/_generated.py | 10338 | def set_viewport_size(self, viewport_size: ViewportSize) -> None: | CODE |
| LOW | playwright/sync_api/_generated.py | 13758 | def set_item(self, name: str, value: str) -> None: | CODE |
| LOW | playwright/sync_api/_generated.py | 14503 | def set_geolocation(self, geolocation: typing.Optional[Geolocation] = None) -> None: | CODE |
| LOW | playwright/sync_api/_generated.py | 14526 | def set_extra_http_headers(self, headers: typing.Dict[str, str]) -> None: | CODE |
| LOW | playwright/sync_api/_generated.py | 14548 | def set_offline(self, offline: bool) -> None: | CODE |
| LOW | playwright/sync_api/__init__.py | 106 | def set_options(self, timeout: Optional[float] = _unset) -> None: | CODE |
| LOW | playwright/sync_api/__init__.py | 206 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | playwright/_impl/_browser_context.py | 562 | self._browser._browser_type._playwright.selectors._contexts_for_selectors.remove( | CODE |
| CRITICAL | playwright/_impl/_browser.py | 113 | self._browser_type._playwright.selectors._contexts_for_selectors.add(context) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/async/test_defaultbrowsercontext.py | 193 | "value": "John Doe", | CODE |
| LOW | tests/async/test_defaultbrowsercontext.py | 85 | "value": "John Doe", | CODE |
| LOW | tests/async/test_defaultbrowsercontext.py | 108 | "value": "John Doe", | CODE |
| LOW | tests/async/test_defaultbrowsercontext.py | 117 | "value": "John Doe", | CODE |
| LOW | tests/async/test_selectors_get_by.py | 29 | input.setAttribute('placeholder', 'hello my\\nwo"rld'); | STRING |
| LOW | tests/async/test_selectors_get_by.py | 59 | input.setAttribute('placeholder', 'hello my\\nworld'); | STRING |
| LOW | tests/async/test_selectors_get_by.py | 98 | input.setAttribute('placeholder', 'foo >> bar'); | STRING |
| LOW | tests/async/test_browsercontext_cookies.py | 46 | "value": "John Doe", | CODE |
| LOW | tests/async/test_browsercontext_cookies.py | 89 | "value": "John Doe", | CODE |
| LOW | tests/async/test_browsercontext_cookies.py | 184 | "value": "John Doe", | CODE |
| LOW⚡ | tests/async/test_fetch_browser_context.py | 79 | "value": "John Doe", | CODE |
| LOW⚡ | tests/async/test_fetch_browser_context.py | 186 | "value": "John Doe", | CODE |
| LOW | tests/async/test_headful.py | 129 | "value": "John Doe", | CODE |
| LOW | tests/async/test_browsercontext_add_cookies.py | 432 | "value": "John Doe", | CODE |
| LOW⚡ | tests/sync/test_fetch_browser_context.py | 74 | "value": "John Doe", | CODE |
| LOW⚡ | tests/sync/test_fetch_browser_context.py | 172 | "value": "John Doe", | CODE |
| LOW | tests/sync/test_locator_get_by.py | 161 | input.setAttribute('placeholder', 'hello my\\nwo"rld'); | STRING |
| LOW | tests/sync/test_locator_get_by.py | 183 | input.setAttribute('placeholder', 'hello my\\nworld'); | STRING |
| LOW | playwright/_impl/_locator.py | 942 | return get_by_attribute_text_selector("placeholder", text, exact=exact) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/async/test_navigation.py | 1111 | CODE | |
| LOW | tests/async/test_network.py | 683 | CODE | |
| LOW | tests/common/test_events.py | 22 | CODE | |
| LOW | playwright/_impl/_glob.py | 19 | CODE | |
| LOW | playwright/_impl/_fetch.py | 344 | CODE | |
| LOW | playwright/_impl/_transport.py | 137 | CODE | |
| LOW | playwright/_impl/_page.py | 294 | CODE | |
| LOW | playwright/_impl/_page.py | 1422 | CODE | |
| LOW | playwright/_impl/_js_handle.py | 213 | CODE | |
| LOW | playwright/_impl/_connection.py | 408 | CODE | |
| LOW | scripts/generate_async_api.py | 38 | CODE | |
| LOW | scripts/generate_api.py | 157 | CODE | |
| LOW | scripts/documentation_provider.py | 52 | CODE | |
| LOW | scripts/documentation_provider.py | 116 | CODE | |
| LOW | scripts/documentation_provider.py | 212 | CODE | |
| LOW | scripts/documentation_provider.py | 304 | CODE | |
| LOW | scripts/documentation_provider.py | 336 | CODE | |
| LOW | scripts/build_driver.py | 84 | CODE | |
| LOW | scripts/generate_sync_api.py | 42 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/async/test_navigation.py | 901 | def handle_request(request: TestServerRequest) -> None: | CODE |
| LOW | tests/async/test_network.py | 39 | async def handle_request(route: Route, request: Request) -> None: | CODE |
| LOW | tests/async/test_network.py | 73 | async def handle_request( | CODE |
| LOW | tests/async/test_network.py | 691 | def handle_request(request: TestServerRequest) -> None: | CODE |
| LOW | tests/async/test_network.py | 795 | def handle_request(request: Request) -> None: | CODE |
| LOW | tests/async/test_page_route.py | 42 | async def handle_request(route: Route, request: Request) -> None: | CODE |
| LOW | tests/async/test_page_route.py | 141 | async def handle_request(route: Route) -> None: | CODE |
| LOW | tests/async/test_page_route.py | 260 | def handle_request(request: Request) -> None: | CODE |
| LOW | tests/async/test_page_route.py | 418 | def handle_request(request: TestServerRequest, hits: List[bool]) -> None: | CODE |
| LOW | tests/async/test_page_route.py | 1001 | async def handle_request(route: Route) -> None: | CODE |
| LOW | tests/async/test_page_route.py | 1040 | async def handle_request(route: Route) -> None: | CODE |
| LOW | tests/async/test_browsertype_connect.py | 254 | async def handle_request(route: Route) -> None: | CODE |
| LOW⚡ | tests/async/test_popup.py | 57 | async def handle_request(route: Route) -> None: | CODE |
| LOW | tests/async/test_popup.py | 222 | def handle_request(route: Route, request: Request, intercepted: List[bool]) -> None: | CODE |
| LOW⚡ | tests/sync/test_network.py | 81 | def handle_request(route: Route) -> None: | CODE |
| LOW | tests/sync/test_browsertype_connect.py | 213 | def handle_request(route: Route) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/async/test_browsercontext.py | 71 | # Create a page in first incognito context. | COMMENT |
| MEDIUM | tests/async/test_browsercontext.py | 84 | # Create a page in second incognito context. | COMMENT |
| MEDIUM | playwright/sync_api/_context_manager.py | 52 | # Create a new fiber for the protocol dispatcher. It will be pumping events | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | playwright/async_api/_generated.py | 18807 | possibly throwing the [\"strict mode violation\" error](https://playwright.dev/python/docs/locators#strictness). | STRING |
| MEDIUM | playwright/sync_api/_generated.py | 18804 | possibly throwing the [\"strict mode violation\" error](https://playwright.dev/python/docs/locators#strictness). | STRING |