Pytest зависает на неопределенное время при выполнении тестов после обновления образа Selenium
День назад selenium обновил свои standalone
-images (https://hub.docker.com/search?q=selenium&type=image) и в то же время selenium 4.0.0 был выпущен на pypi (https://pypi.org/project/selenium/#history)
Я использую pytest и selenium для тестирования фронтенда моего приложения django, и все работало отлично до вчерашнего дня, когда вышел релиз. Теперь происходит следующее: когда я запускаю pytest (в PyCharm), тест просто работает бесконечно, не выдавая ошибку или что-то еще. Он просто не прекращает выполняться.
Я очень уверен, что проблема в релизе, потому что когда я вытаскиваю образ chrome-debug
, который был обновлен 15 дней назад (по сравнению с chrome-standalone
вчера), мой тестовый набор снова работает нормально.
Я также попробовал вытащить изображение standalone-firefox
, чтобы проверить, может ли это быть проблемой только с изображением standalone-chrome
, но я получаю тот же результат.
Сейчас, конечно, промежуточным решением является использование образа chrome-debug
, но я боюсь, что они скоро обновят и его, что снова сломает мой тест-комплект, к тому же отдельные образы более легковесны.
Я совершенно не понимаю, что происходит.
Минимальный пример моего набора тестов:
Docker-compose:
selenium:
image: selenium/standalone-chrome
ports:
- 4444:4444
- 5900:5900
Docker-file;
FROM python:3.9-alpine3.14
....
....
Test-config:
def pytest_configure(config):
"""Adjust socket configuration for live_server fixture."""
config.option.liveserver = socket.gethostbyname(socket.gethostname())
Тест:
@pytest.fixture()
def browser():
browser = webdriver.Remote(
command_executor="http://selenium:4444/wd/hub",
desired_capabilities=DesiredCapabilities.CHROME,
)
browser.implicitly_wait(5)
yield browser
browser.close()
def test_visit_page(browser, live_server):
result = browser.get(live_server.url)
assert "This text is in my page source" in result.page_source
Я надеялся (без злого умысла ;)), что кто-нибудь еще столкнулся с такой же проблемой и, возможно, нашел способ ее решить? На seleniums github для этого не открыто ни одного вопроса. Или, может быть, кто-то может помочь мне? Прошу прощения, что не могу опубликовать ошибки или стектрейс, я бы очень хотел получить его сам. Любая помощь будет оценена по достоинству, спасибо!
А если я запускаю это не из PyCharm, а из обычного терминала, я получаю:
Начинается сеанс тестирования (платформа: linux, Python 3.9.7, pytest 6.2.5, pytest-sugar 0.9.4) django: настройки: config.settings.test (из ini) Matplotlib: 3.4.3 Freetype: 2.6.1 rootdir: /app, configfile: pytest.ini плагины: django-4.4.0, Faker-9.3.1, cov-3.0.0, mpl-0.13, sugar-0.9.4 сбор ...
И он зависает... Возможно, он загружает эти огромные пакеты= Но они уже должны быть установлены в среде docker....