Привет! Пытаюсь запустить тесты на gitlab-ci, но падает ошибка из следующего кода (в этой джобе): driver = EventFiringWebDriver(webdriver.Remote(command_executor="http://selenium__standalone-chrome:4444/wd/hub"), MyListener(get_logger()))
Правильно ли я описал инициализацию драйвера? MyListener(get_logger()) служит для создания логгера
Код используется в этой фикстуре
Подскажите, как поправить ошибку?
Спасибо!
Зависимости на стенд так же установились и тесты стартанули.
(судя по всему) при попытке подключения к селениум-серверу выскакивает 500 ошибка
Потестил без обертки EventFiringWebDriver - ошибка остается, значит проблема именно где-то здесь: webdriver.Remote(command_executor="http://selenium__standalone-chrome:4444/wd/hub")
но адрес тоже должен быть верным
Запустил из контейнера и попробовал урл http://localhost:9515/wd/hub
Получил в ответ {"value":{"error":"unknown command","message":"unknown command: unknown command: wd/hub","stacktrace":"#0 0x55bc870d32b9 \u003Cunknown>\n"}}
Код состояния 404
И вообще, к какому бы разделу не обратился по localhost:9515 возвращает одно и тоже. Но тут хоть какой-то возврат, в случае если искать по другим адресам/портам, то просто не находит
UPD: ошибся, 9515 слушает chromedriver. Если url и правда неправильный, то не знаю по какому обращаться. По умолчанию, селениум-сервер должен работать на localhost:4444, но у меня там пусто
у меня работает, правда использую хром. попробуйте фукстуру браузера исправить 03.30.2021-16.39.10 ну или попробовать работоспособность локально при вьізове не remote а wd = webdriver.Firefox
ну и как вариан headless mode еще добавить
по сути могу вам свой рабочий конфтест прикрепить, попробуйте как вариант 03.30.2021-16.46.38
Подскажите, а что именно для моей фикстуры браузера можно поправить?
Было бы здорово, если сможете так же поделиться содержимым .gitlab-ci.yml
Не совсем представляю, как Вам удается инициализировать драйвер с помощью webdriver.Firefox на селениум сервере. Или, может, я не совсем правильно понял…
у вас сначала wd = webdriver.Remote(command_executor=“http://selenium__standalone-firefox:4444/wd/hub”)
но возвращаете вьі не wd а driver. откуда он взялся?
что бьі не бьіло таких ошибок я назьіваю фикстуру browser а в ней уже работаю с driver
если вам не принципиально, то используйте chrome вместо firefox
stages: #Each stage is a separate job that the runner will execute.
- testing # Running tests
- history_copy # Copy test results from previous runs tests
- reports # Report generation
- deploy # Publish the report to gitlab pages
chrome_job: # Job name
stage: testing # The first stage to run
services:
- selenium/standalone-chrome
image: python:3.9 # You need to specify the image that will be used to run the tests.
tags:
- docker # With this tag, gitlab will figure out which runner to run. It will launch the docker container from the image that we specified in step 6 of registering the runner.
before_script:
- pip install -r requirements.txt # Install packages in a raised container before running the tests themselves
script:
- pytest --alluredir=./allure-results tests/ # Run tests specifying the folder with test results via --alluredir =
allow_failure: true # This will allow us to continue executing the pipeline in case the tests fail.
artifacts: # The entity with which we will save the test result.
when: always #Save always
paths:
- ./allure-results # The report will be saved here
expire_in: 1 day # Report retention period
history_job: # Job name
stage: history_copy # The second stage to run
tags:
- docker # With this tag, gitlab will figure out which runner to run.
image: storytel/alpine-bash-curl # The runner will use a different image to download the test results from the previous pipeline.
script:
- 'curl --location --output artifacts.zip "https://gitlab.com/api/v4/projects/xxxxxxxx/jobs/artifacts/master/download?job=pages&job_token=$CI_JOB_TOKEN"' # Using the gitlab api, download files from the job, which will be listed below. Please note: xxxxxxxx is your repository number
- apk add unzip # The image used in this step does not have the unzip utility by default, for this reason we add it to the container
- unzip artifacts.zip # Unpack the files
- chmod -R 777 public # We give the rights to any manipulations with the content
- cp -r ./public/history ./allure-results # Copy history to the folder with test results
allow_failure: true # Since there is no history at the first start of the pipeline, this will allow us to avoid the fall of the pipeline. In the future, this line can be safely deleted.
artifacts:
paths:
- ./allure-results # Save data
expire_in: 1 day # Report retention period
rules:
- when: always #Save always
allure_job: # Job name
stage: reports # The third stage to run
tags:
- docker # Using the same runner
image: frankescobar/allure-docker-service # Tell the runner to use the allure image. In it we will generate a report.
script:
- allure generate -c ./allure-results -o ./allure-report # Generate a report from ./allure-results inside the folder ./allure-report
artifacts:
paths:
- ./allure-results # Let's mount these two directories to get test results and generate reports, respectively
- ./allure-report # Let's mount these two directories to get test results and generate reports, respectively
expire_in: 1 day # Report retention period
rules:
- when: always #Save always
pages: # By the name of this job we tell gitlab to host the result in our pages
stage: deploy # The fourth stage to run
script:
- mkdir public # Create a public folder. By default, gitlab hosts in gitlab pages only from the public folder
- mv ./allure-report/* public # Move the generated report to the public folder.
artifacts:
paths:
- public
rules:
- when: always
Не совсем представляю, как Вам удается инициализировать драйвер с помощью webdriver.Firefox на селениум сервере. Или, может, я не совсем правильно понял
я имел ввиду запустить тест сначала локально если все ок то тогда уже менять вебрайвер на Remote, потому что мне кажется у вас ошибка в конфтесте и тест незапустится не локально не удаленно. у меня даже когда локально бьіло все ок - удаленно тестьі падали из за плохих селекторов
wd передаю в обертку EventFiringWebDriver, которым инициализирую driver. Так что там все ок.
Локально запускаться нечему, сейчас сделал просто пустые тесты. Падает на этапе попытки получить объект драйвера, значит ошибка либо в conftest (что маловероятно, только если ссылку на селениум сервер неправильно указываю), либо в .gitlab-ci.yml. Сейчас гляну, как у Вас все выстроено, попробую по образу и подобию повторить) Спасибо!
UPD: посмотрел, делал по этому же шаблону. Так же падают тесты. Буду искать дальше