[PATCH] bitbake: toaster: Exit tests on chromedriver creation failure
Alexander Lussier-Cullen <[email protected]> Tue, 12 Dec 2023 11:38:50 -0500
| Newsgroups | org.yoctoproject.lists.toaster |
|---|---|
| Message-ID | <20231212163850.99645-1-alexander.lussier-cullen@savoirfairelinux.com> |
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.
Signed-off-by: Alexander Lussier-Cullen <alexander.lussier-cullen@savoirf=
airelinux.com>
---
.../toaster/tests/browser/selenium_helpers_base.py | 14 ++++++++------
run-toaster-tests | 0
2 files changed, 8 insertions(+), 6 deletions(-)
create mode 100644 run-toaster-tests
diff --git a/bitbake/lib/toaster/tests/browser/selenium_helpers_base.py b=
/bitbake/lib/toaster/tests/browser/selenium_helpers_base.py
index 46ced5a167..b32e89d7f3 100644
--- a/bitbake/lib/toaster/tests/browser/selenium_helpers_base.py
+++ b/bitbake/lib/toaster/tests/browser/selenium_helpers_base.py
@@ -19,6 +19,7 @@ import os
import time
import unittest
=20
+import pytest
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
@@ -43,22 +44,23 @@ def create_selenium_driver(cls,browser=3D'chrome'):
try:
return webdriver.Chrome(options=3Doptions)
except SessionNotCreatedException as e:
+ exit_message =3D "Halting tests prematurely to avoid cascadi=
ng errors."
# check if chrome / chromedriver exists
chrome_path =3D os.popen("find ~/.cache/selenium/chrome/ -na=
me 'chrome' -type f -print -quit").read().strip()
if not chrome_path:
- raise SessionNotCreatedException("Failed to install/find=
chrome")
+ pytest.exit(f"Failed to install/find chrome.\n{exit_mess=
age}")
chromedriver_path =3D os.popen("find ~/.cache/selenium/chrom=
edriver/ -name 'chromedriver' -type f -print -quit").read().strip()
if not chromedriver_path:
- raise SessionNotCreatedException("Failed to install/find=
chromedriver")
+ pytest.exit(f"Failed to install/find chromedriver.\n{exi=
t_message}")
# check if depends on each are fulfilled
depends_chrome =3D os.popen(f"ldd {chrome_path} | grep 'not =
found'").read().strip()
if depends_chrome:
- raise SessionNotCreatedException(f"Missing chrome depend=
encies\n{depends_chrome}")
+ pytest.exit(f"Missing chrome dependencies.\n{depends_chr=
ome}\n{exit_message}")
depends_chromedriver =3D os.popen(f"ldd {chromedriver_path} =
| grep 'not found'").read().strip()
if depends_chromedriver:
- raise SessionNotCreatedException(f"Missing chrome depend=
encies\n{depends_chromedriver}")
- # raise original error otherwise
- raise e
+ pytest.exit(f"Missing chromedriver dependencies.\n{depen=
ds_chromedriver}\n{exit_message}")
+ # print original error otherwise
+ pytest.exit(f"Failed to start chromedriver.\n{e}\n{exit_mess=
age}")
elif browser =3D=3D 'firefox':
return webdriver.Firefox()
elif browser =3D=3D 'marionette':
diff --git a/run-toaster-tests b/run-toaster-tests
new file mode 100644
index 0000000000..e69de29bb2
--=20
2.34.1