mirror of
https://git.yoctoproject.org/poky
synced 2026-05-08 17:19:20 +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:
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':
|
||||||
|
|||||||
Reference in New Issue
Block a user