Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(deps): update dependency pytest-rerunfailures to v15 #2116

Closed
wants to merge 1 commit into from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Dec 28, 2024

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
pytest-rerunfailures ==14.0 -> ==15.0 age adoption passing confidence

Release Notes

pytest-dev/pytest-rerunfailures (pytest-rerunfailures)

v15.0

Compare Source

Breaking changes
++++++++++++++++

  • Drop support for Python 3.8.

  • Drop support for pytest < 7.4.

Features
++++++++

  • Fix compatibility with pytest 8.2.
    (#&#8203;267 <https://github.com/pytest-dev/pytest-rerunfailures/issues/267>_)

  • Add support for pytest 8.2, 8.3.

  • Add --fail-on-flaky option to fail the test run with custom exit code
    when test passed on rerun.


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

Copy link
Contributor

qodo-merge-pro bot commented Dec 28, 2024

CI Failure Feedback 🧐

(Checks updated until commit 3fe7353)

Action: tests (macos, stable, 3.10)

Failed stage: Run tests [❌]

Failed test name: test_basic_options

Failure summary:

The action failed because Selenium was unable to obtain the Microsoft Edge driver. The specific
error occurred when trying to parse JSON from the Edge updates API:

  • Error message: "Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing
    field ArtifactName at line 1 column 467"
  • This caused the Selenium Manager to fail with code 65 when trying to locate and download the Edge
    driver
  • As a result, all Edge browser tests failed with "NoSuchDriverException"

  • Relevant error logs:
    1:  ##[group]Operating System
    2:  macOS
    ...
    
    312:  timeout_minutes: 60
    313:  max_attempts: 3
    314:  command: cd examples/python
    315:  pytest --reruns 3
    316:  
    317:  retry_wait_seconds: 10
    318:  polling_interval_seconds: 1
    319:  warning_on_retry: true
    320:  continue_on_error: false
    ...
    
    360:  tests/elements/test_interaction.py .                                     [ 80%]
    361:  tests/interactions/test_alerts.py ...                                    [ 82%]
    362:  tests/interactions/test_print_options.py .......                         [ 86%]
    363:  tests/interactions/test_prints_page.py .                                 [ 87%]
    364:  tests/interactions/test_virtual_authenticator.py ..........              [ 94%]
    365:  tests/support/test_select_list.py ...                                    [ 96%]
    366:  tests/troubleshooting/test_logging.py .                                  [ 96%]
    367:  tests/waits/test_waits.py .....                                          [100%]
    368:  ==================================== ERRORS ====================================
    369:  _________________ ERROR at setup of test_set_browser_location __________________
    ...
    
    374:  browser = self._options.capabilities["browserName"]
    375:  try:
    376:  path = self._service.path
    377:  if path:
    378:  logger.debug(
    379:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    380:  )
    381:  if not Path(path).is_file():
    382:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    410:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    411:  SeleniumManager._process_logs(output["logs"])
    412:  result = output["result"]
    413:  if completed_proc.returncode:
    414:  >           raise WebDriverException(
    415:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    416:  )
    417:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --browser-version stable --language-binding python --output json; code: 65
    418:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    436:  browser = self._options.capabilities["browserName"]
    437:  try:
    438:  path = self._service.path
    439:  if path:
    440:  logger.debug(
    441:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    442:  )
    443:  if not Path(path).is_file():
    444:  raise ValueError(f"The path is not a valid file: {path}")
    445:  self._paths["driver_path"] = path
    446:  else:
    447:  output = SeleniumManager().binary_paths(self._to_args())
    448:  if Path(output["driver_path"]).is_file():
    449:  self._paths["driver_path"] = output["driver_path"]
    450:  else:
    451:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    452:  if Path(output["browser_path"]).is_file():
    453:  self._paths["browser_path"] = output["browser_path"]
    454:  else:
    455:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    456:  except Exception as err:
    457:  msg = f"Unable to obtain driver for {browser}"
    458:  >           raise NoSuchDriverException(msg) from err
    459:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    460:  /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/driver_finder.py:78: NoSuchDriverException
    461:  ____________________ ERROR at teardown of test_log_to_file _____________________
    ...
    
    464:  suffix = datetime.now().strftime("%y%m%d_%H%M%S")
    465:  log_path = 'log_file_' + suffix + '.log'
    466:  yield log_path
    467:  logger = logging.getLogger('selenium')
    468:  for handler in logger.handlers:
    469:  logger.removeHandler(handler)
    470:  handler.close()
    471:  >       os.remove(log_path)
    472:  E       FileNotFoundError: [Errno 2] No such file or directory: 'log_file_250102_152556.log'
    473:  tests/conftest.py:102: FileNotFoundError
    474:  _____________________ ERROR at teardown of test_log_level ______________________
    ...
    
    477:  suffix = datetime.now().strftime("%y%m%d_%H%M%S")
    478:  log_path = 'log_file_' + suffix + '.log'
    479:  yield log_path
    480:  logger = logging.getLogger('selenium')
    481:  for handler in logger.handlers:
    482:  logger.removeHandler(handler)
    483:  handler.close()
    484:  >       os.remove(log_path)
    485:  E       FileNotFoundError: [Errno 2] No such file or directory: 'log_file_250102_152559.log'
    486:  tests/conftest.py:102: FileNotFoundError
    487:  ____________________ ERROR at teardown of test_log_features ____________________
    ...
    
    490:  suffix = datetime.now().strftime("%y%m%d_%H%M%S")
    491:  log_path = 'log_file_' + suffix + '.log'
    492:  yield log_path
    493:  logger = logging.getLogger('selenium')
    494:  for handler in logger.handlers:
    495:  logger.removeHandler(handler)
    496:  handler.close()
    497:  >       os.remove(log_path)
    498:  E       FileNotFoundError: [Errno 2] No such file or directory: 'log_file_250102_152559.log'
    499:  tests/conftest.py:102: FileNotFoundError
    500:  ____________________ ERROR at teardown of test_build_checks ____________________
    ...
    
    503:  suffix = datetime.now().strftime("%y%m%d_%H%M%S")
    504:  log_path = 'log_file_' + suffix + '.log'
    505:  yield log_path
    506:  logger = logging.getLogger('selenium')
    507:  for handler in logger.handlers:
    508:  logger.removeHandler(handler)
    509:  handler.close()
    510:  >       os.remove(log_path)
    511:  E       FileNotFoundError: [Errno 2] No such file or directory: 'log_file_250102_152600.log'
    512:  tests/conftest.py:102: FileNotFoundError
    513:  =================================== FAILURES ===================================
    ...
    
    519:  browser = self._options.capabilities["browserName"]
    520:  try:
    521:  path = self._service.path
    522:  if path:
    523:  logger.debug(
    524:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    525:  )
    526:  if not Path(path).is_file():
    527:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    555:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    556:  SeleniumManager._process_logs(output["logs"])
    557:  result = output["result"]
    558:  if completed_proc.returncode:
    559:  >           raise WebDriverException(
    560:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    561:  )
    562:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    563:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    582:  browser = self._options.capabilities["browserName"]
    583:  try:
    584:  path = self._service.path
    585:  if path:
    586:  logger.debug(
    587:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    588:  )
    589:  if not Path(path).is_file():
    590:  raise ValueError(f"The path is not a valid file: {path}")
    591:  self._paths["driver_path"] = path
    592:  else:
    593:  output = SeleniumManager().binary_paths(self._to_args())
    594:  if Path(output["driver_path"]).is_file():
    595:  self._paths["driver_path"] = output["driver_path"]
    596:  else:
    597:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    598:  if Path(output["browser_path"]).is_file():
    599:  self._paths["browser_path"] = output["browser_path"]
    600:  else:
    601:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    602:  except Exception as err:
    603:  msg = f"Unable to obtain driver for {browser}"
    604:  >           raise NoSuchDriverException(msg) from err
    605:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    612:  browser = self._options.capabilities["browserName"]
    613:  try:
    614:  path = self._service.path
    615:  if path:
    616:  logger.debug(
    617:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    618:  )
    619:  if not Path(path).is_file():
    620:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    648:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    649:  SeleniumManager._process_logs(output["logs"])
    650:  result = output["result"]
    651:  if completed_proc.returncode:
    652:  >           raise WebDriverException(
    653:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    654:  )
    655:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    656:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    676:  browser = self._options.capabilities["browserName"]
    677:  try:
    678:  path = self._service.path
    679:  if path:
    680:  logger.debug(
    681:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    682:  )
    683:  if not Path(path).is_file():
    684:  raise ValueError(f"The path is not a valid file: {path}")
    685:  self._paths["driver_path"] = path
    686:  else:
    687:  output = SeleniumManager().binary_paths(self._to_args())
    688:  if Path(output["driver_path"]).is_file():
    689:  self._paths["driver_path"] = output["driver_path"]
    690:  else:
    691:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    692:  if Path(output["browser_path"]).is_file():
    693:  self._paths["browser_path"] = output["browser_path"]
    694:  else:
    695:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    696:  except Exception as err:
    697:  msg = f"Unable to obtain driver for {browser}"
    698:  >           raise NoSuchDriverException(msg) from err
    699:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    706:  browser = self._options.capabilities["browserName"]
    707:  try:
    708:  path = self._service.path
    709:  if path:
    710:  logger.debug(
    711:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    712:  )
    713:  if not Path(path).is_file():
    714:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    742:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    743:  SeleniumManager._process_logs(output["logs"])
    744:  result = output["result"]
    745:  if completed_proc.returncode:
    746:  >           raise WebDriverException(
    747:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    748:  )
    749:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    750:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    771:  browser = self._options.capabilities["browserName"]
    772:  try:
    773:  path = self._service.path
    774:  if path:
    775:  logger.debug(
    776:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    777:  )
    778:  if not Path(path).is_file():
    779:  raise ValueError(f"The path is not a valid file: {path}")
    780:  self._paths["driver_path"] = path
    781:  else:
    782:  output = SeleniumManager().binary_paths(self._to_args())
    783:  if Path(output["driver_path"]).is_file():
    784:  self._paths["driver_path"] = output["driver_path"]
    785:  else:
    786:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    787:  if Path(output["browser_path"]).is_file():
    788:  self._paths["browser_path"] = output["browser_path"]
    789:  else:
    790:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    791:  except Exception as err:
    792:  msg = f"Unable to obtain driver for {browser}"
    793:  >           raise NoSuchDriverException(msg) from err
    794:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    801:  browser = self._options.capabilities["browserName"]
    802:  try:
    803:  path = self._service.path
    804:  if path:
    805:  logger.debug(
    806:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    807:  )
    808:  if not Path(path).is_file():
    809:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    837:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    838:  SeleniumManager._process_logs(output["logs"])
    839:  result = output["result"]
    840:  if completed_proc.returncode:
    841:  >           raise WebDriverException(
    842:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    843:  )
    844:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    845:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    865:  browser = self._options.capabilities["browserName"]
    866:  try:
    867:  path = self._service.path
    868:  if path:
    869:  logger.debug(
    870:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    871:  )
    872:  if not Path(path).is_file():
    873:  raise ValueError(f"The path is not a valid file: {path}")
    874:  self._paths["driver_path"] = path
    875:  else:
    876:  output = SeleniumManager().binary_paths(self._to_args())
    877:  if Path(output["driver_path"]).is_file():
    878:  self._paths["driver_path"] = output["driver_path"]
    879:  else:
    880:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    881:  if Path(output["browser_path"]).is_file():
    882:  self._paths["browser_path"] = output["browser_path"]
    883:  else:
    884:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    885:  except Exception as err:
    886:  msg = f"Unable to obtain driver for {browser}"
    887:  >           raise NoSuchDriverException(msg) from err
    888:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    895:  browser = self._options.capabilities["browserName"]
    896:  try:
    897:  path = self._service.path
    898:  if path:
    899:  logger.debug(
    900:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    901:  )
    902:  if not Path(path).is_file():
    903:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    931:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    932:  SeleniumManager._process_logs(output["logs"])
    933:  result = output["result"]
    934:  if completed_proc.returncode:
    935:  >           raise WebDriverException(
    936:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    937:  )
    938:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    939:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    959:  browser = self._options.capabilities["browserName"]
    960:  try:
    961:  path = self._service.path
    962:  if path:
    963:  logger.debug(
    964:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    965:  )
    966:  if not Path(path).is_file():
    967:  raise ValueError(f"The path is not a valid file: {path}")
    968:  self._paths["driver_path"] = path
    969:  else:
    970:  output = SeleniumManager().binary_paths(self._to_args())
    971:  if Path(output["driver_path"]).is_file():
    972:  self._paths["driver_path"] = output["driver_path"]
    973:  else:
    974:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    975:  if Path(output["browser_path"]).is_file():
    976:  self._paths["browser_path"] = output["browser_path"]
    977:  else:
    978:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    979:  except Exception as err:
    980:  msg = f"Unable to obtain driver for {browser}"
    981:  >           raise NoSuchDriverException(msg) from err
    982:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    989:  browser = self._options.capabilities["browserName"]
    990:  try:
    991:  path = self._service.path
    992:  if path:
    993:  logger.debug(
    994:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    995:  )
    996:  if not Path(path).is_file():
    997:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    1025:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    1026:  SeleniumManager._process_logs(output["logs"])
    1027:  result = output["result"]
    1028:  if completed_proc.returncode:
    1029:  >           raise WebDriverException(
    1030:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    1031:  )
    1032:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    1033:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    1053:  browser = self._options.capabilities["browserName"]
    1054:  try:
    1055:  path = self._service.path
    1056:  if path:
    1057:  logger.debug(
    1058:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1059:  )
    1060:  if not Path(path).is_file():
    1061:  raise ValueError(f"The path is not a valid file: {path}")
    1062:  self._paths["driver_path"] = path
    1063:  else:
    1064:  output = SeleniumManager().binary_paths(self._to_args())
    1065:  if Path(output["driver_path"]).is_file():
    1066:  self._paths["driver_path"] = output["driver_path"]
    1067:  else:
    1068:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    1069:  if Path(output["browser_path"]).is_file():
    1070:  self._paths["browser_path"] = output["browser_path"]
    1071:  else:
    1072:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    1073:  except Exception as err:
    1074:  msg = f"Unable to obtain driver for {browser}"
    1075:  >           raise NoSuchDriverException(msg) from err
    1076:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    1083:  browser = self._options.capabilities["browserName"]
    1084:  try:
    1085:  path = self._service.path
    1086:  if path:
    1087:  logger.debug(
    1088:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1089:  )
    1090:  if not Path(path).is_file():
    1091:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    1119:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    1120:  SeleniumManager._process_logs(output["logs"])
    1121:  result = output["result"]
    1122:  if completed_proc.returncode:
    1123:  >           raise WebDriverException(
    1124:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    1125:  )
    1126:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    1127:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    1147:  browser = self._options.capabilities["browserName"]
    1148:  try:
    1149:  path = self._service.path
    1150:  if path:
    1151:  logger.debug(
    1152:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1153:  )
    1154:  if not Path(path).is_file():
    1155:  raise ValueError(f"The path is not a valid file: {path}")
    1156:  self._paths["driver_path"] = path
    1157:  else:
    1158:  output = SeleniumManager().binary_paths(self._to_args())
    1159:  if Path(output["driver_path"]).is_file():
    1160:  self._paths["driver_path"] = output["driver_path"]
    1161:  else:
    1162:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    1163:  if Path(output["browser_path"]).is_file():
    1164:  self._paths["browser_path"] = output["browser_path"]
    1165:  else:
    1166:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    1167:  except Exception as err:
    1168:  msg = f"Unable to obtain driver for {browser}"
    1169:  >           raise NoSuchDriverException(msg) from err
    1170:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    1177:  browser = self._options.capabilities["browserName"]
    1178:  try:
    1179:  path = self._service.path
    1180:  if path:
    1181:  logger.debug(
    1182:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1183:  )
    1184:  if not Path(path).is_file():
    1185:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    1213:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    1214:  SeleniumManager._process_logs(output["logs"])
    1215:  result = output["result"]
    1216:  if completed_proc.returncode:
    1217:  >           raise WebDriverException(
    1218:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    1219:  )
    1220:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    1221:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    1241:  browser = self._options.capabilities["browserName"]
    1242:  try:
    1243:  path = self._service.path
    1244:  if path:
    1245:  logger.debug(
    1246:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1247:  )
    1248:  if not Path(path).is_file():
    1249:  raise ValueError(f"The path is not a valid file: {path}")
    1250:  self._paths["driver_path"] = path
    1251:  else:
    1252:  output = SeleniumManager().binary_paths(self._to_args())
    1253:  if Path(output["driver_path"]).is_file():
    1254:  self._paths["driver_path"] = output["driver_path"]
    1255:  else:
    1256:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    1257:  if Path(output["browser_path"]).is_file():
    1258:  self._paths["browser_path"] = output["browser_path"]
    1259:  else:
    1260:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    1261:  except Exception as err:
    1262:  msg = f"Unable to obtain driver for {browser}"
    1263:  >           raise NoSuchDriverException(msg) from err
    1264:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    1271:  browser = self._options.capabilities["browserName"]
    1272:  try:
    1273:  path = self._service.path
    1274:  if path:
    1275:  logger.debug(
    1276:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1277:  )
    1278:  if not Path(path).is_file():
    1279:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    1307:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    1308:  SeleniumManager._process_logs(output["logs"])
    1309:  result = output["result"]
    1310:  if completed_proc.returncode:
    1311:  >           raise WebDriverException(
    1312:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    1313:  )
    1314:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    1315:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    1335:  browser = self._options.capabilities["browserName"]
    1336:  try:
    1337:  path = self._service.path
    1338:  if path:
    1339:  logger.debug(
    1340:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1341:  )
    1342:  if not Path(path).is_file():
    1343:  raise ValueError(f"The path is not a valid file: {path}")
    1344:  self._paths["driver_path"] = path
    1345:  else:
    1346:  output = SeleniumManager().binary_paths(self._to_args())
    1347:  if Path(output["driver_path"]).is_file():
    1348:  self._paths["driver_path"] = output["driver_path"]
    1349:  else:
    1350:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    1351:  if Path(output["browser_path"]).is_file():
    1352:  self._paths["browser_path"] = output["browser_path"]
    1353:  else:
    1354:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    1355:  except Exception as err:
    1356:  msg = f"Unable to obtain driver for {browser}"
    1357:  >           raise NoSuchDriverException(msg) from err
    1358:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    1365:  browser = self._options.capabilities["browserName"]
    1366:  try:
    1367:  path = self._service.path
    1368:  if path:
    1369:  logger.debug(
    1370:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1371:  )
    1372:  if not Path(path).is_file():
    1373:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    1401:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    1402:  SeleniumManager._process_logs(output["logs"])
    1403:  result = output["result"]
    1404:  if completed_proc.returncode:
    1405:  >           raise WebDriverException(
    1406:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    1407:  )
    1408:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    1409:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    1429:  browser = self._options.capabilities["browserName"]
    1430:  try:
    1431:  path = self._service.path
    1432:  if path:
    1433:  logger.debug(
    1434:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1435:  )
    1436:  if not Path(path).is_file():
    1437:  raise ValueError(f"The path is not a valid file: {path}")
    1438:  self._paths["driver_path"] = path
    1439:  else:
    1440:  output = SeleniumManager().binary_paths(self._to_args())
    1441:  if Path(output["driver_path"]).is_file():
    1442:  self._paths["driver_path"] = output["driver_path"]
    1443:  else:
    1444:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    1445:  if Path(output["browser_path"]).is_file():
    1446:  self._paths["browser_path"] = output["browser_path"]
    1447:  else:
    1448:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    1449:  except Exception as err:
    1450:  msg = f"Unable to obtain driver for {browser}"
    1451:  >           raise NoSuchDriverException(msg) from err
    1452:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    1459:  browser = self._options.capabilities["browserName"]
    1460:  try:
    1461:  path = self._service.path
    1462:  if path:
    1463:  logger.debug(
    1464:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1465:  )
    1466:  if not Path(path).is_file():
    1467:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    1495:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    1496:  SeleniumManager._process_logs(output["logs"])
    1497:  result = output["result"]
    1498:  if completed_proc.returncode:
    1499:  >           raise WebDriverException(
    1500:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    1501:  )
    1502:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    1503:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    1521:  browser = self._options.capabilities["browserName"]
    1522:  try:
    1523:  path = self._service.path
    1524:  if path:
    1525:  logger.debug(
    1526:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1527:  )
    1528:  if not Path(path).is_file():
    1529:  raise ValueError(f"The path is not a valid file: {path}")
    1530:  self._paths["driver_path"] = path
    1531:  else:
    1532:  output = SeleniumManager().binary_paths(self._to_args())
    1533:  if Path(output["driver_path"]).is_file():
    1534:  self._paths["driver_path"] = output["driver_path"]
    1535:  else:
    1536:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    1537:  if Path(output["browser_path"]).is_file():
    1538:  self._paths["browser_path"] = output["browser_path"]
    1539:  else:
    1540:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    1541:  except Exception as err:
    1542:  msg = f"Unable to obtain driver for {browser}"
    1543:  >           raise NoSuchDriverException(msg) from err
    1544:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    1551:  browser = self._options.capabilities["browserName"]
    1552:  try:
    1553:  path = self._service.path
    1554:  if path:
    1555:  logger.debug(
    1556:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1557:  )
    1558:  if not Path(path).is_file():
    1559:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    1587:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    1588:  SeleniumManager._process_logs(output["logs"])
    1589:  result = output["result"]
    1590:  if completed_proc.returncode:
    1591:  >           raise WebDriverException(
    1592:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    1593:  )
    1594:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    1595:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    1613:  browser = self._options.capabilities["browserName"]
    1614:  try:
    1615:  path = self._service.path
    1616:  if path:
    1617:  logger.debug(
    1618:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1619:  )
    1620:  if not Path(path).is_file():
    1621:  raise ValueError(f"The path is not a valid file: {path}")
    1622:  self._paths["driver_path"] = path
    1623:  else:
    1624:  output = SeleniumManager().binary_paths(self._to_args())
    1625:  if Path(output["driver_path"]).is_file():
    1626:  self._paths["driver_path"] = output["driver_path"]
    1627:  else:
    1628:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    1629:  if Path(output["browser_path"]).is_file():
    1630:  self._paths["browser_path"] = output["browser_path"]
    1631:  else:
    1632:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    1633:  except Exception as err:
    1634:  msg = f"Unable to obtain driver for {browser}"
    1635:  >           raise NoSuchDriverException(msg) from err
    1636:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    1643:  browser = self._options.capabilities["browserName"]
    1644:  try:
    1645:  path = self._service.path
    1646:  if path:
    1647:  logger.debug(
    1648:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1649:  )
    1650:  if not Path(path).is_file():
    1651:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    1679:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    1680:  SeleniumManager._process_logs(output["logs"])
    1681:  result = output["result"]
    1682:  if completed_proc.returncode:
    1683:  >           raise WebDriverException(
    1684:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    1685:  )
    1686:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    1687:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    1705:  browser = self._options.capabilities["browserName"]
    1706:  try:
    1707:  path = self._service.path
    1708:  if path:
    1709:  logger.debug(
    1710:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1711:  )
    1712:  if not Path(path).is_file():
    1713:  raise ValueError(f"The path is not a valid file: {path}")
    1714:  self._paths["driver_path"] = path
    1715:  else:
    1716:  output = SeleniumManager().binary_paths(self._to_args())
    1717:  if Path(output["driver_path"]).is_file():
    1718:  self._paths["driver_path"] = output["driver_path"]
    1719:  else:
    1720:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    1721:  if Path(output["browser_path"]).is_file():
    1722:  self._paths["browser_path"] = output["browser_path"]
    1723:  else:
    1724:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    1725:  except Exception as err:
    1726:  msg = f"Unable to obtain driver for {browser}"
    1727:  >           raise NoSuchDriverException(msg) from err
    1728:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    1735:  browser = self._options.capabilities["browserName"]
    1736:  try:
    1737:  path = self._service.path
    1738:  if path:
    1739:  logger.debug(
    1740:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1741:  )
    1742:  if not Path(path).is_file():
    1743:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    1771:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    1772:  SeleniumManager._process_logs(output["logs"])
    1773:  result = output["result"]
    1774:  if completed_proc.returncode:
    1775:  >           raise WebDriverException(
    1776:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    1777:  )
    1778:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    1779:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    1797:  browser = self._options.capabilities["browserName"]
    1798:  try:
    1799:  path = self._service.path
    1800:  if path:
    1801:  logger.debug(
    1802:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1803:  )
    1804:  if not Path(path).is_file():
    1805:  raise ValueError(f"The path is not a valid file: {path}")
    1806:  self._paths["driver_path"] = path
    1807:  else:
    1808:  output = SeleniumManager().binary_paths(self._to_args())
    1809:  if Path(output["driver_path"]).is_file():
    1810:  self._paths["driver_path"] = output["driver_path"]
    1811:  else:
    1812:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    1813:  if Path(output["browser_path"]).is_file():
    1814:  self._paths["browser_path"] = output["browser_path"]
    1815:  else:
    1816:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    1817:  except Exception as err:
    1818:  msg = f"Unable to obtain driver for {browser}"
    1819:  >           raise NoSuchDriverException(msg) from err
    1820:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    1829:  tests/bidi/test_bidi_logging.py:30
    1830:  /Users/runner/work/seleniumhq.github.io/seleniumhq.github.io/examples/python/tests/bidi/test_bidi_logging.py:30: PytestUnknownMarkWarning: Unknown pytest.mark.driver_type - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    1831:  @pytest.mark.driver_type("bidi")
    1832:  tests/bidi/test_bidi_logging.py:42
    1833:  /Users/runner/work/seleniumhq.github.io/seleniumhq.github.io/examples/python/tests/bidi/test_bidi_logging.py:42: PytestUnknownMarkWarning: Unknown pytest.mark.driver_type - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    1834:  @pytest.mark.driver_type("bidi")
    1835:  -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
    1836:  =========================== short test summary info ============================
    1837:  FAILED tests/browsers/test_edge.py::test_basic_options - selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    1838:  FAILED tests/browsers/test_edge.py::test_args - selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    1839:  FAILED tests/browsers/test_edge.py::test_add_extension - selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    1840:  FAILED tests/browsers/test_edge.py::test_keep_browser_open - selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    1841:  FAILED tests/browsers/test_edge.py::test_exclude_switches - selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    1842:  FAILED tests/browsers/test_edge.py::test_log_to_file - selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    1843:  FAILED tests/browsers/test_edge.py::test_log_to_stdout - selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    1844:  FAILED tests/browsers/test_edge.py::test_log_level - selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    1845:  FAILED tests/browsers/test_edge.py::test_log_features - selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    1846:  FAILED tests/browsers/test_edge.py::test_build_checks - selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    1847:  FAILED tests/browsers/test_edge.py::test_set_network_conditions - selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    1848:  FAILED tests/browsers/test_edge.py::test_set_permissions - selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    1849:  FAILED tests/browsers/test_edge.py::test_cast_features - selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    1850:  FAILED tests/browsers/test_edge.py::test_get_browser_logs - selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    1851:  ERROR tests/browsers/test_edge.py::test_set_browser_location - selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    1852:  ERROR tests/browsers/test_edge.py::test_log_to_file - FileNotFoundError: [Errno 2] No such file or directory: 'log_file_250102_152556.log'
    1853:  ERROR tests/browsers/test_edge.py::test_log_level - FileNotFoundError: [Errno 2] No such file or directory: 'log_file_250102_152559.log'
    1854:  ERROR tests/browsers/test_edge.py::test_log_features - FileNotFoundError: [Errno 2] No such file or directory: 'log_file_250102_152559.log'
    1855:  ERROR tests/browsers/test_edge.py::test_build_checks - FileNotFoundError: [Errno 2] No such file or directory: 'log_file_250102_152600.log'
    1856:  = 14 failed, 123 passed, 15 skipped, 4 warnings, 5 errors, 45 rerun in 241.76s (0:04:01) =
    1857:  ##[warning]Attempt 1 failed. Reason: Child_process exited with error code 1
    ...
    
    1885:  tests/elements/test_interaction.py .                                     [ 80%]
    1886:  tests/interactions/test_alerts.py ...                                    [ 82%]
    1887:  tests/interactions/test_print_options.py .......                         [ 86%]
    1888:  tests/interactions/test_prints_page.py .                                 [ 87%]
    1889:  tests/interactions/test_virtual_authenticator.py ..........              [ 94%]
    1890:  tests/support/test_select_list.py ...                                    [ 96%]
    1891:  tests/troubleshooting/test_logging.py .                                  [ 96%]
    1892:  tests/waits/test_waits.py .....                                          [100%]
    1893:  ==================================== ERRORS ====================================
    1894:  _________________ ERROR at setup of test_set_browser_location __________________
    ...
    
    1899:  browser = self._options.capabilities["browserName"]
    1900:  try:
    1901:  path = self._service.path
    1902:  if path:
    1903:  logger.debug(
    1904:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1905:  )
    1906:  if not Path(path).is_file():
    1907:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    1935:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    1936:  SeleniumManager._process_logs(output["logs"])
    1937:  result = output["result"]
    1938:  if completed_proc.returncode:
    1939:  >           raise WebDriverException(
    1940:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    1941:  )
    1942:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --browser-version stable --language-binding python --output json; code: 65
    1943:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    1961:  browser = self._options.capabilities["browserName"]
    1962:  try:
    1963:  path = self._service.path
    1964:  if path:
    1965:  logger.debug(
    1966:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1967:  )
    1968:  if not Path(path).is_file():
    1969:  raise ValueError(f"The path is not a valid file: {path}")
    1970:  self._paths["driver_path"] = path
    1971:  else:
    1972:  output = SeleniumManager().binary_paths(self._to_args())
    1973:  if Path(output["driver_path"]).is_file():
    1974:  self._paths["driver_path"] = output["driver_path"]
    1975:  else:
    1976:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    1977:  if Path(output["browser_path"]).is_file():
    1978:  self._paths["browser_path"] = output["browser_path"]
    1979:  else:
    1980:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    1981:  except Exception as err:
    1982:  msg = f"Unable to obtain driver for {browser}"
    1983:  >           raise NoSuchDriverException(msg) from err
    1984:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    1985:  /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/driver_finder.py:78: NoSuchDriverException
    1986:  ____________________ ERROR at teardown of test_log_to_file _____________________
    ...
    
    1989:  suffix = datetime.now().strftime("%y%m%d_%H%M%S")
    1990:  log_path = 'log_file_' + suffix + '.log'
    1991:  yield log_path
    1992:  logger = logging.getLogger('selenium')
    1993:  for handler in logger.handlers:
    1994:  logger.removeHandler(handler)
    1995:  handler.close()
    1996:  >       os.remove(log_path)
    1997:  E       FileNotFoundError: [Errno 2] No such file or directory: 'log_file_250102_152956.log'
    1998:  tests/conftest.py:102: FileNotFoundError
    1999:  _____________________ ERROR at teardown of test_log_level ______________________
    ...
    
    2002:  suffix = datetime.now().strftime("%y%m%d_%H%M%S")
    2003:  log_path = 'log_file_' + suffix + '.log'
    2004:  yield log_path
    2005:  logger = logging.getLogger('selenium')
    2006:  for handler in logger.handlers:
    2007:  logger.removeHandler(handler)
    2008:  handler.close()
    2009:  >       os.remove(log_path)
    2010:  E       FileNotFoundError: [Errno 2] No such file or directory: 'log_file_250102_152957.log'
    2011:  tests/conftest.py:102: FileNotFoundError
    2012:  ____________________ ERROR at teardown of test_log_features ____________________
    ...
    
    2015:  suffix = datetime.now().strftime("%y%m%d_%H%M%S")
    2016:  log_path = 'log_file_' + suffix + '.log'
    2017:  yield log_path
    2018:  logger = logging.getLogger('selenium')
    2019:  for handler in logger.handlers:
    2020:  logger.removeHandler(handler)
    2021:  handler.close()
    2022:  >       os.remove(log_path)
    2023:  E       FileNotFoundError: [Errno 2] No such file or directory: 'log_file_250102_152957.log'
    2024:  tests/conftest.py:102: FileNotFoundError
    2025:  ____________________ ERROR at teardown of test_build_checks ____________________
    ...
    
    2028:  suffix = datetime.now().strftime("%y%m%d_%H%M%S")
    2029:  log_path = 'log_file_' + suffix + '.log'
    2030:  yield log_path
    2031:  logger = logging.getLogger('selenium')
    2032:  for handler in logger.handlers:
    2033:  logger.removeHandler(handler)
    2034:  handler.close()
    2035:  >       os.remove(log_path)
    2036:  E       FileNotFoundError: [Errno 2] No such file or directory: 'log_file_250102_152958.log'
    2037:  tests/conftest.py:102: FileNotFoundError
    2038:  =================================== FAILURES ===================================
    ...
    
    2044:  browser = self._options.capabilities["browserName"]
    2045:  try:
    2046:  path = self._service.path
    2047:  if path:
    2048:  logger.debug(
    2049:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    2050:  )
    2051:  if not Path(path).is_file():
    2052:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    2080:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    2081:  SeleniumManager._process_logs(output["logs"])
    2082:  result = output["result"]
    2083:  if completed_proc.returncode:
    2084:  >           raise WebDriverException(
    2085:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    2086:  )
    2087:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    2088:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    2107:  browser = self._options.capabilities["browserName"]
    2108:  try:
    2109:  path = self._service.path
    2110:  if path:
    2111:  logger.debug(
    2112:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    2113:  )
    2114:  if not Path(path).is_file():
    2115:  raise ValueError(f"The path is not a valid file: {path}")
    2116:  self._paths["driver_path"] = path
    2117:  else:
    2118:  output = SeleniumManager().binary_paths(self._to_args())
    2119:  if Path(output["driver_path"]).is_file():
    2120:  self._paths["driver_path"] = output["driver_path"]
    2121:  else:
    2122:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    2123:  if Path(output["browser_path"]).is_file():
    2124:  self._paths["browser_path"] = output["browser_path"]
    2125:  else:
    2126:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    2127:  except Exception as err:
    2128:  msg = f"Unable to obtain driver for {browser}"
    2129:  >           raise NoSuchDriverException(msg) from err
    2130:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    2137:  browser = self._options.capabilities["browserName"]
    2138:  try:
    2139:  path = self._service.path
    2140:  if path:
    2141:  logger.debug(
    2142:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    2143:  )
    2144:  if not Path(path).is_file():
    2145:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    2173:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    2174:  SeleniumManager._process_logs(output["logs"])
    2175:  result = output["result"]
    2176:  if completed_proc.returncode:
    2177:  >           raise WebDriverException(
    2178:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    2179:  )
    2180:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    2181:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    2201:  browser = self._options.capabilities["browserName"]
    2202:  try:
    2203:  path = self._service.path
    2204:  if path:
    2205:  logger.debug(
    2206:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    2207:  )
    2208:  if not Path(path).is_file():
    2209:  raise ValueError(f"The path is not a valid file: {path}")
    2210:  self._paths["driver_path"] = path
    2211:  else:
    2212:  output = SeleniumManager().binary_paths(self._to_args())
    2213:  if Path(output["driver_path"]).is_file():
    2214:  self._paths["driver_path"] = output["driver_path"]
    2215:  else:
    2216:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    2217:  if Path(output["browser_path"]).is_file():
    2218:  self._paths["browser_path"] = output["browser_path"]
    2219:  else:
    2220:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    2221:  except Exception as err:
    2222:  msg = f"Unable to obtain driver for {browser}"
    2223:  >           raise NoSuchDriverException(msg) from err
    2224:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    2231:  browser = self._options.capabilities["browserName"]
    2232:  try:
    2233:  path = self._service.path
    2234:  if path:
    2235:  logger.debug(
    2236:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    2237:  )
    2238:  if not Path(path).is_file():
    2239:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    2267:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    2268:  SeleniumManager._process_logs(output["logs"])
    2269:  result = output["result"]
    2270:  if completed_proc.returncode:
    2271:  >           raise WebDriverException(
    2272:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    2273:  )
    2274:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    2275:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    2296:  browser = self._options.capabilities["browserName"]
    2297:  try:
    2298:  path = self._service.path
    2299:  if path:
    2300:  logger.debug(
    2301:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    2302:  )
    2303:  if not Path(path).is_file():
    2304:  raise ValueError(f"The path is not a valid file: {path}")
    2305:  self._paths["driver_path"] = path
    2306:  else:
    2307:  output = SeleniumManager().binary_paths(self._to_args())
    2308:  if Path(output["driver_path"]).is_file():
    2309:  self._paths["driver_path"] = output["driver_path"]
    2310:  else:
    2311:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    2312:  if Path(output["browser_path"]).is_file():
    2313:  self._paths["browser_path"] = output["browser_path"]
    2314:  else:
    2315:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    2316:  except Exception as err:
    2317:  msg = f"Unable to obtain driver for {browser}"
    2318:  >           raise NoSuchDriverException(msg) from err
    2319:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    2326:  browser = self._options.capabilities["browserName"]
    2327:  try:
    2328:  path = self._service.path
    2329:  if path:
    2330:  logger.debug(
    2331:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    2332:  )
    2333:  if not Path(path).is_file():
    2334:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    2362:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    2363:  SeleniumManager._process_logs(output["logs"])
    2364:  result = output["result"]
    2365:  if completed_proc.returncode:
    2366:  >           raise WebDriverException(
    2367:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    2368:  )
    2369:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    2370:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    2390:  browser = self._options.capabilities["browserName"]
    2391:  try:
    2392:  path = self._service.path
    2393:  if path:
    2394:  logger.debug(
    2395:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    2396:  )
    2397:  if not Path(path).is_file():
    2398:  raise ValueError(f"The path is not a valid file: {path}")
    2399:  self._paths["driver_path"] = path
    2400:  else:
    2401:  output = SeleniumManager().binary_paths(self._to_args())
    2402:  if Path(output["driver_path"]).is_file():
    2403:  self._paths["driver_path"] = output["driver_path"]
    2404:  else:
    2405:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    2406:  if Path(output["browser_path"]).is_file():
    2407:  self._paths["browser_path"] = output["browser_path"]
    2408:  else:
    2409:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    2410:  except Exception as err:
    2411:  msg = f"Unable to obtain driver for {browser}"
    2412:  >           raise NoSuchDriverException(msg) from err
    2413:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_locatio...

    Copy link

    netlify bot commented Dec 28, 2024

    Deploy Preview for selenium-dev ready!

    Name Link
    🔨 Latest commit 3fe7353
    🔍 Latest deploy log https://app.netlify.com/sites/selenium-dev/deploys/676fa5ba7158020008d82d70
    😎 Deploy Preview https://deploy-preview-2116--selenium-dev.netlify.app
    📱 Preview on mobile
    Toggle QR Code...

    QR Code

    Use your smartphone camera to open QR code link.

    To edit notification comments on pull requests, go to your Netlify site configuration.

    Copy link
    Member

    @VietND96 VietND96 left a comment

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    CI tests in range of Python version 3.8 to 3.13. Looks like the version v15 already dropped support py3.8, so the CI failed
    Wait until Selenium drop support of py3.8, then we can drop in CI and include this bump version.

    @harsha509
    Copy link
    Member

    CI tests in range of Python version 3.8 to 3.13. Looks like the version v15 already dropped support py3.8, so the CI failed Wait until Selenium drop support of py3.8, then we can drop in CI and include this bump version.

    Thank you @VietND96 for the info.
    Closing this until Selenium drops support of py3.8!

    @harsha509 harsha509 closed this Jan 8, 2025
    Copy link
    Contributor Author

    renovate bot commented Jan 8, 2025

    Renovate Ignore Notification

    Because you closed this PR without merging, Renovate will ignore this update. You will not get PRs for any future 15.x releases. But if you manually upgrade to 15.x then Renovate will re-enable minor and patch updates automatically.

    If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR.

    @renovate renovate bot deleted the renovate/pytest-rerunfailures-15.x branch January 8, 2025 05:12
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Labels
    None yet
    Projects
    None yet
    Development

    Successfully merging this pull request may close these issues.

    2 participants