seleniumbase 4.45.0__tar.gz → 4.45.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. {seleniumbase-4.45.0/seleniumbase.egg-info → seleniumbase-4.45.2}/PKG-INFO +14 -16
  2. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/README.md +12 -14
  3. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/requirements.txt +1 -1
  4. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/__version__.py +1 -1
  5. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/core/browser_launcher.py +8 -0
  6. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/core/sb_cdp.py +9 -3
  7. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/fixtures/base_case.py +9 -9
  8. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/undetected/cdp_driver/browser.py +12 -7
  9. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/undetected/cdp_driver/cdp_util.py +0 -12
  10. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/undetected/cdp_driver/config.py +1 -0
  11. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/undetected/cdp_driver/connection.py +12 -12
  12. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/undetected/cdp_driver/tab.py +4 -1
  13. {seleniumbase-4.45.0 → seleniumbase-4.45.2/seleniumbase.egg-info}/PKG-INFO +14 -16
  14. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase.egg-info/requires.txt +1 -1
  15. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/setup.py +1 -1
  16. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/.gitignore +0 -0
  17. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/LICENSE +0 -0
  18. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/MANIFEST.in +0 -0
  19. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/install.sh +0 -0
  20. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/pyproject.toml +0 -0
  21. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/pytest.ini +0 -0
  22. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/sbase/__init__.py +0 -0
  23. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/sbase/__main__.py +0 -0
  24. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/sbase/steps.py +0 -0
  25. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/__init__.py +0 -0
  26. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/__main__.py +0 -0
  27. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/behave/__init__.py +0 -0
  28. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/behave/behave_helper.py +0 -0
  29. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/behave/behave_sb.py +0 -0
  30. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/behave/steps.py +0 -0
  31. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/common/__init__.py +0 -0
  32. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/common/decorators.py +0 -0
  33. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/common/encryption.py +0 -0
  34. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/common/exceptions.py +0 -0
  35. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/common/obfuscate.py +0 -0
  36. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/common/unobfuscate.py +0 -0
  37. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/config/__init__.py +0 -0
  38. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/config/ad_block_list.py +0 -0
  39. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/config/proxy_list.py +0 -0
  40. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/config/settings.py +0 -0
  41. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/console_scripts/__init__.py +0 -0
  42. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/console_scripts/logo_helper.py +0 -0
  43. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/console_scripts/rich_helper.py +0 -0
  44. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/console_scripts/run.py +0 -0
  45. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
  46. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
  47. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/console_scripts/sb_commander.py +0 -0
  48. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/console_scripts/sb_install.py +0 -0
  49. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
  50. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
  51. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
  52. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
  53. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
  54. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/console_scripts/sb_objectify.py +0 -0
  55. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/console_scripts/sb_print.py +0 -0
  56. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/console_scripts/sb_recorder.py +0 -0
  57. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/core/__init__.py +0 -0
  58. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/core/application_manager.py +0 -0
  59. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/core/capabilities_parser.py +0 -0
  60. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/core/colored_traceback.py +0 -0
  61. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/core/create_db_tables.sql +0 -0
  62. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/core/detect_b_ver.py +0 -0
  63. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/core/download_helper.py +0 -0
  64. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/core/encoded_images.py +0 -0
  65. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/core/jqc_helper.py +0 -0
  66. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/core/log_helper.py +0 -0
  67. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/core/mysql.py +0 -0
  68. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/core/proxy_helper.py +0 -0
  69. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/core/recorder_helper.py +0 -0
  70. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/core/report_helper.py +0 -0
  71. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/core/s3_manager.py +0 -0
  72. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/core/sb_driver.py +0 -0
  73. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/core/session_helper.py +0 -0
  74. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/core/settings_parser.py +0 -0
  75. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/core/style_sheet.py +0 -0
  76. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/core/testcase_manager.py +0 -0
  77. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/core/tour_helper.py +0 -0
  78. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/core/visual_helper.py +0 -0
  79. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/drivers/__init__.py +0 -0
  80. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/drivers/atlas_drivers/__init__.py +0 -0
  81. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/drivers/brave_drivers/__init__.py +0 -0
  82. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/drivers/cft_drivers/__init__.py +0 -0
  83. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/drivers/chs_drivers/__init__.py +0 -0
  84. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/drivers/comet_drivers/__init__.py +0 -0
  85. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/drivers/opera_drivers/__init__.py +0 -0
  86. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/extensions/__init__.py +0 -0
  87. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/extensions/ad_block.zip +0 -0
  88. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/extensions/disable_csp.zip +0 -0
  89. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/extensions/recorder.zip +0 -0
  90. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/extensions/sbase_ext.zip +0 -0
  91. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/fixtures/__init__.py +0 -0
  92. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/fixtures/constants.py +0 -0
  93. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/fixtures/css_to_xpath.py +0 -0
  94. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/fixtures/errors.py +0 -0
  95. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/fixtures/js_utils.py +0 -0
  96. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/fixtures/page_actions.py +0 -0
  97. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/fixtures/page_utils.py +0 -0
  98. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/fixtures/shared_utils.py +0 -0
  99. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/fixtures/unittest_helper.py +0 -0
  100. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/fixtures/words.py +0 -0
  101. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/fixtures/xpath_to_css.py +0 -0
  102. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/js_code/__init__.py +0 -0
  103. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/js_code/active_css_js.py +0 -0
  104. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/js_code/live_js.py +0 -0
  105. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/js_code/recorder_js.py +0 -0
  106. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/masterqa/__init__.py +0 -0
  107. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/masterqa/master_qa.py +0 -0
  108. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/plugins/__init__.py +0 -0
  109. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/plugins/base_plugin.py +0 -0
  110. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/plugins/basic_test_info.py +0 -0
  111. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
  112. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/plugins/driver_manager.py +0 -0
  113. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/plugins/page_source.py +0 -0
  114. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/plugins/pytest_plugin.py +0 -0
  115. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
  116. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/plugins/sb_manager.py +0 -0
  117. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/plugins/screen_shots.py +0 -0
  118. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/plugins/selenium_plugin.py +0 -0
  119. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/resources/__init__.py +0 -0
  120. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/translate/__init__.py +0 -0
  121. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/translate/chinese.py +0 -0
  122. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/translate/dutch.py +0 -0
  123. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/translate/french.py +0 -0
  124. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/translate/italian.py +0 -0
  125. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/translate/japanese.py +0 -0
  126. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/translate/korean.py +0 -0
  127. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/translate/master_dict.py +0 -0
  128. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/translate/portuguese.py +0 -0
  129. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/translate/russian.py +0 -0
  130. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/translate/spanish.py +0 -0
  131. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/translate/translator.py +0 -0
  132. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/undetected/__init__.py +0 -0
  133. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/undetected/cdp.py +0 -0
  134. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/undetected/cdp_driver/__init__.py +0 -0
  135. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/undetected/cdp_driver/_contradict.py +0 -0
  136. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/undetected/cdp_driver/element.py +0 -0
  137. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/undetected/dprocess.py +0 -0
  138. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/undetected/options.py +0 -0
  139. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/undetected/patcher.py +0 -0
  140. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/undetected/reactor.py +0 -0
  141. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/undetected/webelement.py +0 -0
  142. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/utilities/__init__.py +0 -0
  143. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
  144. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
  145. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/utilities/selenium_grid/font_color +0 -0
  146. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
  147. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
  148. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
  149. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
  150. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
  151. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
  152. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
  153. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
  154. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
  155. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
  156. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase.egg-info/SOURCES.txt +0 -0
  157. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase.egg-info/dependency_links.txt +0 -0
  158. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase.egg-info/entry_points.txt +0 -0
  159. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/seleniumbase.egg-info/top_level.txt +0 -0
  160. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/setup.cfg +0 -0
  161. {seleniumbase-4.45.0 → seleniumbase-4.45.2}/virtualenv_install.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: seleniumbase
3
- Version: 4.45.0
3
+ Version: 4.45.2
4
4
  Summary: A complete web automation framework for end-to-end testing.
5
5
  Home-page: https://github.com/seleniumbase/SeleniumBase
6
6
  Author: Michael Mintz
@@ -137,7 +137,7 @@ Requires-Dist: allure-python-commons>=2.13.5; extra == "allure"
137
137
  Requires-Dist: allure-behave>=2.13.5; extra == "allure"
138
138
  Provides-Extra: coverage
139
139
  Requires-Dist: coverage>=7.10.7; python_version < "3.10" and extra == "coverage"
140
- Requires-Dist: coverage>=7.12.0; python_version >= "3.10" and extra == "coverage"
140
+ Requires-Dist: coverage>=7.13.0; python_version >= "3.10" and extra == "coverage"
141
141
  Requires-Dist: pytest-cov>=7.0.0; extra == "coverage"
142
142
  Provides-Extra: flake8
143
143
  Requires-Dist: flake8==7.3.0; extra == "flake8"
@@ -218,36 +218,34 @@ Dynamic: summary
218
218
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/features_list.md">🏰 Features</a> |
219
219
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/customizing_test_runs.md">🎛️ Options</a> |
220
220
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/ReadMe.md">📚 Examples</a> |
221
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/console_scripts/ReadMe.md">🌠 Scripts</a> |
221
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/console_scripts/ReadMe.md">🪄 Scripts</a> |
222
222
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/mobile_testing.md">📱 Mobile</a>
223
223
  <br />
224
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/method_summary.md">📘 APIs</a> |
225
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md"> 🔠 Formats</a> |
224
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/method_summary.md">📘 The API</a> |
225
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md"> 🔠 SyntaxFormats</a> |
226
226
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/recorder_mode.md">🔴 Recorder</a> |
227
227
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/example_logs/ReadMe.md">📊 Dashboard</a> |
228
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/locale_codes.md">🗾 Locales</a> |
229
- <a href="https://seleniumbase.io/devices/?url=seleniumbase.com">💻 Farm</a>
228
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/locale_codes.md">🗾 Locale</a>
230
229
  <br />
231
230
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/commander.md">🎖️ GUI</a> |
232
231
  <a href="https://seleniumbase.io/demo_page">📰 TestPage</a> |
233
232
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/uc_mode.md">👤 UC Mode</a> |
234
233
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md">🐙 CDP Mode</a> |
235
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/chart_maker/ReadMe.md">📶 Charts</a> |
236
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/utilities/selenium_grid/ReadMe.md">🌐 Grid</a>
234
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/chart_maker/ReadMe.md">📶 Charts</a> |
235
+ <a href="https://seleniumbase.io/devices/?url=seleniumbase.com">🖥️ Farm</a>
237
236
  <br />
238
237
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/how_it_works.md">👁️ How</a> |
239
- <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples/migration/raw_selenium">🚝 Migrate</a> |
240
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/case_plans.md">🗂️ CasePlans</a> |
241
- <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples/boilerplates">♻️ Template</a> |
242
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/master_qa/ReadMe.md">🧬 Hybrid</a> |
238
+ <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples/migration/raw_selenium">🚝 Migration</a> |
239
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/playwright/ReadMe.md">🎭 Stealthy Playwright</a> |
240
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/master_qa/ReadMe.md">🛂 MasterQA</a> |
243
241
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/tour_examples/ReadMe.md">🚎 Tours</a>
244
242
  <br />
245
243
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/integrations/github/workflows/ReadMe.md">🤖 CI/CD</a> |
246
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/js_package_manager.md">🕹️ JSMgr</a> |
244
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/js_package_manager.md">❇️ JSMgr</a> |
247
245
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/translations.md">🌏 Translator</a> |
248
246
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/presenter/ReadMe.md">🎞️ Presenter</a> |
249
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/dialog_boxes/ReadMe.md">🛂 Dialog</a> |
250
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/visual_testing/ReadMe.md">🖼️ Visual</a>
247
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/visual_testing/ReadMe.md">🖼️ Visual</a> |
248
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/case_plans.md">🗂️ CPlans</a>
251
249
  <br />
252
250
  </p>
253
251
 
@@ -21,36 +21,34 @@
21
21
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/features_list.md">🏰 Features</a> |
22
22
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/customizing_test_runs.md">🎛️ Options</a> |
23
23
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/ReadMe.md">📚 Examples</a> |
24
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/console_scripts/ReadMe.md">🌠 Scripts</a> |
24
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/console_scripts/ReadMe.md">🪄 Scripts</a> |
25
25
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/mobile_testing.md">📱 Mobile</a>
26
26
  <br />
27
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/method_summary.md">📘 APIs</a> |
28
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md"> 🔠 Formats</a> |
27
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/method_summary.md">📘 The API</a> |
28
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md"> 🔠 SyntaxFormats</a> |
29
29
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/recorder_mode.md">🔴 Recorder</a> |
30
30
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/example_logs/ReadMe.md">📊 Dashboard</a> |
31
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/locale_codes.md">🗾 Locales</a> |
32
- <a href="https://seleniumbase.io/devices/?url=seleniumbase.com">💻 Farm</a>
31
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/locale_codes.md">🗾 Locale</a>
33
32
  <br />
34
33
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/commander.md">🎖️ GUI</a> |
35
34
  <a href="https://seleniumbase.io/demo_page">📰 TestPage</a> |
36
35
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/uc_mode.md">👤 UC Mode</a> |
37
36
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md">🐙 CDP Mode</a> |
38
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/chart_maker/ReadMe.md">📶 Charts</a> |
39
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/utilities/selenium_grid/ReadMe.md">🌐 Grid</a>
37
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/chart_maker/ReadMe.md">📶 Charts</a> |
38
+ <a href="https://seleniumbase.io/devices/?url=seleniumbase.com">🖥️ Farm</a>
40
39
  <br />
41
40
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/how_it_works.md">👁️ How</a> |
42
- <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples/migration/raw_selenium">🚝 Migrate</a> |
43
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/case_plans.md">🗂️ CasePlans</a> |
44
- <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples/boilerplates">♻️ Template</a> |
45
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/master_qa/ReadMe.md">🧬 Hybrid</a> |
41
+ <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples/migration/raw_selenium">🚝 Migration</a> |
42
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/playwright/ReadMe.md">🎭 Stealthy Playwright</a> |
43
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/master_qa/ReadMe.md">🛂 MasterQA</a> |
46
44
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/tour_examples/ReadMe.md">🚎 Tours</a>
47
45
  <br />
48
46
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/integrations/github/workflows/ReadMe.md">🤖 CI/CD</a> |
49
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/js_package_manager.md">🕹️ JSMgr</a> |
47
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/js_package_manager.md">❇️ JSMgr</a> |
50
48
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/translations.md">🌏 Translator</a> |
51
49
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/presenter/ReadMe.md">🎞️ Presenter</a> |
52
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/dialog_boxes/ReadMe.md">🛂 Dialog</a> |
53
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/visual_testing/ReadMe.md">🖼️ Visual</a>
50
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/visual_testing/ReadMe.md">🖼️ Visual</a> |
51
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/case_plans.md">🗂️ CPlans</a>
54
52
  <br />
55
53
  </p>
56
54
 
@@ -76,7 +76,7 @@ rich>=14.2.0,<15
76
76
  # ("pip install -r requirements.txt" also installs this, but "pip install -e ." won't.)
77
77
 
78
78
  coverage>=7.10.7;python_version<"3.10"
79
- coverage>=7.12.0;python_version>="3.10"
79
+ coverage>=7.13.0;python_version>="3.10"
80
80
  pytest-cov>=7.0.0
81
81
  flake8==7.3.0
82
82
  mccabe==0.7.0
@@ -1,2 +1,2 @@
1
1
  # seleniumbase package
2
- __version__ = "4.45.0"
2
+ __version__ = "4.45.2"
@@ -2769,6 +2769,9 @@ def _set_chrome_options(
2769
2769
  included_disabled_features.append("SidePanelPinning")
2770
2770
  included_disabled_features.append("UserAgentClientHint")
2771
2771
  included_disabled_features.append("DisableLoadExtensionCommandLineSwitch")
2772
+ included_disabled_features.append("Bluetooth")
2773
+ included_disabled_features.append("WebBluetooth")
2774
+ included_disabled_features.append("UnifiedWebBluetooth")
2772
2775
  included_disabled_features.append("WebAuthentication")
2773
2776
  included_disabled_features.append("PasskeyAuth")
2774
2777
  for item in extra_disabled_features:
@@ -4782,6 +4785,11 @@ def get_local_driver(
4782
4785
  included_disabled_features.append(
4783
4786
  "DisableLoadExtensionCommandLineSwitch"
4784
4787
  )
4788
+ included_disabled_features.append("Bluetooth")
4789
+ included_disabled_features.append("WebBluetooth")
4790
+ included_disabled_features.append("UnifiedWebBluetooth")
4791
+ included_disabled_features.append("WebAuthentication")
4792
+ included_disabled_features.append("PasskeyAuth")
4785
4793
  for item in extra_disabled_features:
4786
4794
  if item not in included_disabled_features:
4787
4795
  included_disabled_features.append(item)
@@ -184,9 +184,13 @@ class CDPMethods():
184
184
  and also applies nest-asyncio for nested event loops so
185
185
  that SeleniumBase methods can be called from Playwright
186
186
  without encountering event loop error messages such as:
187
- Cannot run the event loop while another loop is running."""
187
+ Cannot run the event loop while another loop is running.
188
+ Also sets an environment variable to hide this warning:
189
+ Deprecation: "url.parse() behavior is not standardized".
190
+ (github.com/microsoft/playwright-python/issues/3016)"""
188
191
  import nest_asyncio
189
192
  nest_asyncio.apply()
193
+ os.environ["NODE_NO_WARNINGS"] = "1"
190
194
  driver = self.driver
191
195
  if hasattr(driver, "cdp_base"):
192
196
  driver = driver.cdp_base
@@ -1182,13 +1186,15 @@ class CDPMethods():
1182
1186
  def switch_to_newest_window(self):
1183
1187
  self.switch_to_tab(-1)
1184
1188
 
1185
- def open_new_tab(self, url=None, switch_to=True):
1189
+ def open_new_tab(self, url=None, switch_to=True, **kwargs):
1186
1190
  driver = self.driver
1187
1191
  if not isinstance(url, str):
1188
1192
  url = "about:blank"
1189
1193
  if hasattr(driver, "cdp_base"):
1190
1194
  try:
1191
- self.loop.run_until_complete(self.page.get(url, new_tab=True))
1195
+ self.loop.run_until_complete(
1196
+ self.page.get(url, new_tab=True, **kwargs)
1197
+ )
1192
1198
  except Exception:
1193
1199
  original_targets = self.loop.run_until_complete(
1194
1200
  self.page.send(mycdp.target.get_targets())
@@ -221,11 +221,11 @@ class BaseCase(unittest.TestCase):
221
221
  [sys.executable, "-m", "pytest", file, "-s", *all_args]
222
222
  )
223
223
 
224
- def open(self, url):
224
+ def open(self, url, **kwargs):
225
225
  """Navigates the current browser window to the specified page."""
226
226
  self.__check_scope()
227
227
  if self.__is_cdp_swap_needed():
228
- self.cdp.open(url)
228
+ self.cdp.open(url, **kwargs)
229
229
  return
230
230
  elif (
231
231
  getattr(self.driver, "_is_using_uc", None)
@@ -235,14 +235,14 @@ class BaseCase(unittest.TestCase):
235
235
  # Auth in UC Mode requires CDP Mode
236
236
  # (and now we're always forcing it)
237
237
  logging.info("open() in UC Mode now always activates CDP Mode.")
238
- self.activate_cdp_mode(url)
238
+ self.activate_cdp_mode(url, **kwargs)
239
239
  return
240
240
  elif (
241
241
  getattr(self.driver, "_is_using_uc", None)
242
242
  and getattr(self.driver, "_is_using_cdp", None)
243
243
  ):
244
244
  self.disconnect()
245
- self.cdp.open(url)
245
+ self.cdp.open(url, **kwargs)
246
246
  return
247
247
  self._check_browser()
248
248
  if self.__needs_minimum_wait():
@@ -3960,7 +3960,7 @@ class BaseCase(unittest.TestCase):
3960
3960
  Reverts self.set_content_to_frame()."""
3961
3961
  self.set_content_to_default(nested=True)
3962
3962
 
3963
- def open_new_window(self, switch_to=True):
3963
+ def open_new_window(self, switch_to=True, **kwargs):
3964
3964
  """Opens a new browser tab/window and switches to it by default."""
3965
3965
  url = None
3966
3966
  if self.__looks_like_a_page_url(str(switch_to)):
@@ -3969,14 +3969,14 @@ class BaseCase(unittest.TestCase):
3969
3969
  url = switch_to
3970
3970
  switch_to = True
3971
3971
  if self.__is_cdp_swap_needed():
3972
- self.cdp.open_new_tab(url=url, switch_to=switch_to)
3972
+ self.cdp.open_new_tab(url=url, switch_to=switch_to, **kwargs)
3973
3973
  return
3974
3974
  elif (
3975
3975
  getattr(self.driver, "_is_using_uc", None)
3976
3976
  and getattr(self.driver, "_is_using_cdp", None)
3977
3977
  ):
3978
3978
  self.disconnect()
3979
- self.cdp.open_new_tab(url=url, switch_to=switch_to)
3979
+ self.cdp.open_new_tab(url=url, switch_to=switch_to, **kwargs)
3980
3980
  return
3981
3981
  self.wait_for_ready_state_complete()
3982
3982
  if switch_to:
@@ -9264,9 +9264,9 @@ class BaseCase(unittest.TestCase):
9264
9264
  """Same as self.refresh_page()"""
9265
9265
  self.refresh_page()
9266
9266
 
9267
- def open_new_tab(self, switch_to=True):
9267
+ def open_new_tab(self, switch_to=True, **kwargs):
9268
9268
  """Same as self.open_new_window()"""
9269
- self.open_new_window(switch_to=switch_to)
9269
+ self.open_new_window(switch_to=switch_to, **kwargs)
9270
9270
 
9271
9271
  def switch_to_tab(self, tab, timeout=None):
9272
9272
  """Same as self.switch_to_window()
@@ -333,11 +333,16 @@ class Browser:
333
333
  )
334
334
  connection.browser = self
335
335
  else:
336
- # First tab from browser.tabs
337
- connection: tab.Tab = next(
338
- filter(lambda item: item.type_ == "page", self.targets)
339
- )
340
- await connection.sleep(0.005)
336
+ try:
337
+ # Most recently opened tab
338
+ connection = self.targets[-1]
339
+ await connection.sleep(0.005)
340
+ except Exception:
341
+ # First tab from browser.tabs
342
+ connection: tab.Tab = next(
343
+ filter(lambda item: item.type_ == "page", self.targets)
344
+ )
345
+ await connection.sleep(0.005)
341
346
  _cdp_timezone = None
342
347
  _cdp_user_agent = ""
343
348
  _cdp_locale = None
@@ -628,7 +633,7 @@ class Browser:
628
633
  """ % (dashes, message, dashes)
629
634
  )
630
635
  self.connection = Connection(
631
- self.info.webSocketDebuggerUrl, _owner=self
636
+ self.info.webSocketDebuggerUrl, browser=self
632
637
  )
633
638
  if self.config.autodiscover_targets:
634
639
  logger.info("Enabling autodiscover targets")
@@ -802,7 +807,7 @@ class Browser:
802
807
  f"/{t.target_id}"
803
808
  ),
804
809
  target=t,
805
- _owner=self,
810
+ browser=self,
806
811
  )
807
812
  )
808
813
  await asyncio.sleep(0)
@@ -719,18 +719,6 @@ def start_sync(*args, **kwargs) -> Browser:
719
719
  loop = kwargs["loop"]
720
720
  else:
721
721
  loop = asyncio.new_event_loop()
722
- if "user_data_dir" in kwargs and kwargs["user_data_dir"]:
723
- headless = False
724
- if "headless" in kwargs:
725
- headless = kwargs["headless"]
726
- decoy_args = kwargs
727
- decoy_args["headless"] = True
728
- driver = loop.run_until_complete(start(**decoy_args))
729
- kwargs["headless"] = headless
730
- kwargs["user_data_dir"] = driver.config.user_data_dir
731
- time.sleep(0.2)
732
- driver.stop() # Due to Chrome-130, must stop & start
733
- time.sleep(0.1)
734
722
  return loop.run_until_complete(start(*args, **kwargs))
735
723
 
736
724
 
@@ -206,6 +206,7 @@ class Config:
206
206
  "OptimizationTargetPrediction,OptimizationGuideModelDownloading,"
207
207
  "SidePanelPinning,UserAgentClientHint,PrivacySandboxSettings4,"
208
208
  "OptimizationHintsFetching,InterestFeedContentSuggestions,"
209
+ "Bluetooth,WebBluetooth,UnifiedWebBluetooth,"
209
210
  "DisableLoadExtensionCommandLineSwitch,"
210
211
  "WebAuthentication,PasskeyAuth"
211
212
  ]
@@ -184,13 +184,13 @@ class Connection(metaclass=CantTouchThis):
184
184
  self,
185
185
  websocket_url=None,
186
186
  target=None,
187
- _owner=None,
187
+ browser=None,
188
188
  **kwargs,
189
189
  ):
190
190
  super().__init__()
191
191
  self._target = target
192
192
  self.__count__ = itertools.count(0)
193
- self._owner = _owner
193
+ self.browser = browser
194
194
  self.websocket_url: str = websocket_url
195
195
  self.websocket = None
196
196
  self.mapper = {}
@@ -426,8 +426,8 @@ class Connection(metaclass=CantTouchThis):
426
426
  await self.aopen()
427
427
  if not self.websocket or self.websocket.state is State.CLOSED:
428
428
  return
429
- if self._owner:
430
- browser = self._owner
429
+ if self.browser:
430
+ browser = self.browser
431
431
  if browser.config:
432
432
  if browser.config.expert:
433
433
  await self._prepare_expert()
@@ -610,11 +610,11 @@ class Listener:
610
610
  # Probably an event
611
611
  try:
612
612
  event = cdp.util.parse_json_event(message)
613
- event_tx = EventTransaction(event)
614
- if not self.connection.mapper:
615
- self.connection.__count__ = itertools.count(0)
616
- event_tx.id = next(self.connection.__count__)
617
- self.connection.mapper[event_tx.id] = event_tx
613
+ # event_tx = EventTransaction(event)
614
+ # if not self.connection.mapper:
615
+ # self.connection.__count__ = itertools.count(0)
616
+ # event_tx.id = next(self.connection.__count__)
617
+ # self.connection.mapper[event_tx.id] = event_tx
618
618
  except Exception as e:
619
619
  logger.info(
620
620
  "%s: %s during parsing of json from event : %s"
@@ -639,12 +639,12 @@ class Listener:
639
639
  or inspect.iscoroutine(callback)
640
640
  ):
641
641
  try:
642
- await callback(event, self.connection)
642
+ asyncio.create_task(callback(event, self))
643
643
  except TypeError:
644
- await callback(event)
644
+ asyncio.create_task(callback(event))
645
645
  else:
646
646
  try:
647
- callback(event, self.connection)
647
+ callback(event, self)
648
648
  except TypeError:
649
649
  callback(event)
650
650
  except Exception as e:
@@ -371,7 +371,7 @@ class Tab(Connection):
371
371
  return self
372
372
  else:
373
373
  return await self.browser.get(
374
- url, new_tab, new_window, **kwargs
374
+ url, new_tab=False, new_window=False, **kwargs
375
375
  )
376
376
 
377
377
  async def open(self, url="about:blank"):
@@ -1458,6 +1458,9 @@ class Tab(Connection):
1458
1458
  async def get_title(self):
1459
1459
  return await self.evaluate("document.title")
1460
1460
 
1461
+ async def get_current_url(self):
1462
+ return await self.evaluate("window.location.href")
1463
+
1461
1464
  async def send_keys(self, selector, text, timeout=5):
1462
1465
  element = await self.find(selector, timeout=timeout)
1463
1466
  await element.send_keys_async(text)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: seleniumbase
3
- Version: 4.45.0
3
+ Version: 4.45.2
4
4
  Summary: A complete web automation framework for end-to-end testing.
5
5
  Home-page: https://github.com/seleniumbase/SeleniumBase
6
6
  Author: Michael Mintz
@@ -137,7 +137,7 @@ Requires-Dist: allure-python-commons>=2.13.5; extra == "allure"
137
137
  Requires-Dist: allure-behave>=2.13.5; extra == "allure"
138
138
  Provides-Extra: coverage
139
139
  Requires-Dist: coverage>=7.10.7; python_version < "3.10" and extra == "coverage"
140
- Requires-Dist: coverage>=7.12.0; python_version >= "3.10" and extra == "coverage"
140
+ Requires-Dist: coverage>=7.13.0; python_version >= "3.10" and extra == "coverage"
141
141
  Requires-Dist: pytest-cov>=7.0.0; extra == "coverage"
142
142
  Provides-Extra: flake8
143
143
  Requires-Dist: flake8==7.3.0; extra == "flake8"
@@ -218,36 +218,34 @@ Dynamic: summary
218
218
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/features_list.md">🏰 Features</a> |
219
219
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/customizing_test_runs.md">🎛️ Options</a> |
220
220
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/ReadMe.md">📚 Examples</a> |
221
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/console_scripts/ReadMe.md">🌠 Scripts</a> |
221
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/console_scripts/ReadMe.md">🪄 Scripts</a> |
222
222
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/mobile_testing.md">📱 Mobile</a>
223
223
  <br />
224
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/method_summary.md">📘 APIs</a> |
225
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md"> 🔠 Formats</a> |
224
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/method_summary.md">📘 The API</a> |
225
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md"> 🔠 SyntaxFormats</a> |
226
226
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/recorder_mode.md">🔴 Recorder</a> |
227
227
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/example_logs/ReadMe.md">📊 Dashboard</a> |
228
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/locale_codes.md">🗾 Locales</a> |
229
- <a href="https://seleniumbase.io/devices/?url=seleniumbase.com">💻 Farm</a>
228
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/locale_codes.md">🗾 Locale</a>
230
229
  <br />
231
230
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/commander.md">🎖️ GUI</a> |
232
231
  <a href="https://seleniumbase.io/demo_page">📰 TestPage</a> |
233
232
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/uc_mode.md">👤 UC Mode</a> |
234
233
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md">🐙 CDP Mode</a> |
235
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/chart_maker/ReadMe.md">📶 Charts</a> |
236
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/utilities/selenium_grid/ReadMe.md">🌐 Grid</a>
234
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/chart_maker/ReadMe.md">📶 Charts</a> |
235
+ <a href="https://seleniumbase.io/devices/?url=seleniumbase.com">🖥️ Farm</a>
237
236
  <br />
238
237
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/how_it_works.md">👁️ How</a> |
239
- <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples/migration/raw_selenium">🚝 Migrate</a> |
240
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/case_plans.md">🗂️ CasePlans</a> |
241
- <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples/boilerplates">♻️ Template</a> |
242
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/master_qa/ReadMe.md">🧬 Hybrid</a> |
238
+ <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples/migration/raw_selenium">🚝 Migration</a> |
239
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/playwright/ReadMe.md">🎭 Stealthy Playwright</a> |
240
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/master_qa/ReadMe.md">🛂 MasterQA</a> |
243
241
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/tour_examples/ReadMe.md">🚎 Tours</a>
244
242
  <br />
245
243
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/integrations/github/workflows/ReadMe.md">🤖 CI/CD</a> |
246
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/js_package_manager.md">🕹️ JSMgr</a> |
244
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/js_package_manager.md">❇️ JSMgr</a> |
247
245
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/translations.md">🌏 Translator</a> |
248
246
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/presenter/ReadMe.md">🎞️ Presenter</a> |
249
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/dialog_boxes/ReadMe.md">🛂 Dialog</a> |
250
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/visual_testing/ReadMe.md">🖼️ Visual</a>
247
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/visual_testing/ReadMe.md">🖼️ Visual</a> |
248
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/case_plans.md">🗂️ CPlans</a>
251
249
  <br />
252
250
  </p>
253
251
 
@@ -96,7 +96,7 @@ pytest-cov>=7.0.0
96
96
  coverage>=7.10.7
97
97
 
98
98
  [coverage:python_version >= "3.10"]
99
- coverage>=7.12.0
99
+ coverage>=7.13.0
100
100
 
101
101
  [flake8]
102
102
  flake8==7.3.0
@@ -233,7 +233,7 @@ setup(
233
233
  # Usage: coverage run -m pytest; coverage html; coverage report
234
234
  "coverage": [
235
235
  'coverage>=7.10.7;python_version<"3.10"',
236
- 'coverage>=7.12.0;python_version>="3.10"',
236
+ 'coverage>=7.13.0;python_version>="3.10"',
237
237
  'pytest-cov>=7.0.0',
238
238
  ],
239
239
  # pip install -e .[flake8]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes