1
0
mirror of https://git.yoctoproject.org/poky synced 2026-05-08 05:09:24 +00:00

bitbake: toaster/tests: Exit tests on chromedriver creation failure

When failing to create the web driver session for selenium tests,
a cascade of erroring tests will follow. To avoid processing these
unnecessarily, exit the tests completely in this case.

(Bitbake rev: 9327196102dd2671fcdb3200d9490e683f81d3a1)

Signed-off-by: Alexander Lussier-Cullen <alexander.lussier-cullen@savoirfairelinux.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Alexander Lussier-Cullen
2023-12-12 11:38:50 -05:00
committed by Richard Purdie
parent 47cc628828
commit e9c2003bd0
@@ -19,6 +19,7 @@ import os
import time import time
import unittest import unittest
import pytest
from selenium import webdriver from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By from selenium.webdriver.common.by import By
@@ -43,22 +44,23 @@ def create_selenium_driver(cls,browser='chrome'):
try: try:
return webdriver.Chrome(options=options) return webdriver.Chrome(options=options)
except SessionNotCreatedException as e: except SessionNotCreatedException as e:
exit_message = "Halting tests prematurely to avoid cascading errors."
# check if chrome / chromedriver exists # check if chrome / chromedriver exists
chrome_path = os.popen("find ~/.cache/selenium/chrome/ -name 'chrome' -type f -print -quit").read().strip() chrome_path = os.popen("find ~/.cache/selenium/chrome/ -name 'chrome' -type f -print -quit").read().strip()
if not chrome_path: if not chrome_path:
raise SessionNotCreatedException("Failed to install/find chrome") pytest.exit(f"Failed to install/find chrome.\n{exit_message}")
chromedriver_path = os.popen("find ~/.cache/selenium/chromedriver/ -name 'chromedriver' -type f -print -quit").read().strip() chromedriver_path = os.popen("find ~/.cache/selenium/chromedriver/ -name 'chromedriver' -type f -print -quit").read().strip()
if not chromedriver_path: if not chromedriver_path:
raise SessionNotCreatedException("Failed to install/find chromedriver") pytest.exit(f"Failed to install/find chromedriver.\n{exit_message}")
# check if depends on each are fulfilled # check if depends on each are fulfilled
depends_chrome = os.popen(f"ldd {chrome_path} | grep 'not found'").read().strip() depends_chrome = os.popen(f"ldd {chrome_path} | grep 'not found'").read().strip()
if depends_chrome: if depends_chrome:
raise SessionNotCreatedException(f"Missing chrome dependencies\n{depends_chrome}") pytest.exit(f"Missing chrome dependencies.\n{depends_chrome}\n{exit_message}")
depends_chromedriver = os.popen(f"ldd {chromedriver_path} | grep 'not found'").read().strip() depends_chromedriver = os.popen(f"ldd {chromedriver_path} | grep 'not found'").read().strip()
if depends_chromedriver: if depends_chromedriver:
raise SessionNotCreatedException(f"Missing chrome dependencies\n{depends_chromedriver}") pytest.exit(f"Missing chromedriver dependencies.\n{depends_chromedriver}\n{exit_message}")
# raise original error otherwise # print original error otherwise
raise e pytest.exit(f"Failed to start chromedriver.\n{e}\n{exit_message}")
elif browser == 'firefox': elif browser == 'firefox':
return webdriver.Firefox() return webdriver.Firefox()
elif browser == 'marionette': elif browser == 'marionette':