#circleci #webdriver-io
#circleci #webdriver-io
Вопрос:
я пытаюсь запустить тесты WebdriverIO с cucumber framework на CircleCI, однако сталкиваюсь с проблемой в момент выполнения тестовой команды-
Это мой CircleCI config.yml, который я использую-
version: 2.1
jobs:
build:
docker:
- image: circleci/node:10-browsers
working_directory: ~/project
steps:
- checkout
- restore_cache:
keys:
- v1-dependencies-{{ checksum "package.json" }}
# fallback to using the latest cache if no exact match is found
- v1-dependencies-
- run:
name: "Install dependencies"
command: |
npm install
- save_cache:
paths:
- node_modules
key: v1-dependencies-{{ checksum "package.json" }}
- run:
name: "Run tests"
command: |
npm run test
- store_test_results:
path: ./allure-results
Это мой wdio.conf.js-
exports.config = {
//
// ====================
// Runner Configuration
// ====================
//
// WebdriverIO allows it to run your tests in arbitrary locations (e.g. locally or
// on a remote machine).
runner: 'local',
hostname: 'localhost',
port: 4444,
specs: [
'./features/**/*.feature'
],
// Patterns to exclude.
exclude: [
// 'path/to/excluded/files'
],
maxInstances: 10,
capabilities: [{
maxInstances: 5,
browserName: 'chrome',
acceptInsecureCerts: true
}],
logLevel: 'info',
bail: 0,
baseUrl: 'http://localhost',
waitforTimeout: 10000,
connectionRetryTimeout: 120000,
connectionRetryCount: 3,
services: ['selenium-standalone'],
capabilities: [{
maxInstances: 5,
browserName: 'chrome',
}],
args: {
drivers: {
chrome: { version: '83.0.4103' },
}
},
framework: 'cucumber',
reporters: ['spec','allure'],
reporterOptions: {
allure: {
outputDir: './reports/allure-results'
}
},
cucumberOpts: {
require: ['./features/step-definitions/steps.js'],
backtrace: false,
requireModule: ['@babel/register'],
dryRun: false,
failFast: false,
вывод форматирования (повторяемый)
формат: [‘pretty’],
// скрыть фрагменты определения шага для ожидающих шагов
фрагменты: верно,
// скрыть исходные URI
источник: верно,
// <строка[]> (имя) укажите профиль для использования
профиль: [],
// сбой, если есть какие-либо неопределенные или ожидающие выполнения шаги
строгий: false,
// (выражение) выполняйте функции или сценарии только с тегами, соответствующими выражению
Выражение тега: ‘@runnow1’,
// время ожидания для определения шага
время ожидания: 60000,
// Включите эту конфигурацию, чтобы рассматривать неопределенные определения как предупреждения.
Игнорируйте неопределенные определения: false
},
}
This is the stack trace of the error I am getting in circleCi-
[0-2] 2020-08-27T14:09:27.770Z ERROR webdriver: session not created: session not created: This version of ChromeDriver only supports Chrome version 83
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'f5e174502751', ip: '172.19.0.3', os.name: 'Linux', os.arch: 'amd64', os.version: '4.15.0-1077-aws', java.version: '11.0.6'
Driver info: driver.version: unknown
remote stacktrace: #0 0x561324a36579 <unknown>
at getErrorFromResponseBody (/home/circleci/project/node_modules/webdriver/build/utils.js:121:10)
at WebDriverRequest._request (/home/circleci/project/node_modules/webdriver/build/request.js:149:56)
at process._tickCallback (internal/process/next_tick.js:68:7)
[0-2] 2020-08-27T14:09:27.770Z ERROR @wdio/runner: Error: Failed to create session.
session not created: This version of ChromeDriver only supports Chrome version 83
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'f5e174502751', ip: '172.19.0.3', os.name: 'Linux', os.arch: 'amd64', os.version: '4.15.0-1077-aws', java.version: '11.0.6'
Driver info: driver.version: unknown
remote stacktrace: #0 0x561324a36579 <unknown>
at startWebDriverSession (/home/circleci/project/node_modules/webdriver/build/utils.js:45:11)
at process._tickCallback (internal/process/next_tick.js:68:7)
[0-2] Error: Failed to create session.
session not created: This version of ChromeDriver only supports Chrome version 83
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'f5e174502751', ip: '172.19.0.3', os.name: 'Linux', os.arch: 'amd64', os.version: '4.15.0-1077-aws', java.version: '11.0.6'
Driver info: driver.version: unknown
remote stacktrace: #0 0x561324a36579 <unknown>
Ответ №1:
Это был недавний регресс в зависимости, которую WebdriverIO использует для загрузки правильной версии Chromedriver. Проблема с WebdriverIO здесь.
Временный обходной путь, предложенный в этой проблеме, заключается в том, чтобы указать selenium-service использовать определенную версию Chromedriver в конфигурации wdio:
services: [
[
"selenium-standalone",
{
logPath: "logs",
installArgs: {
version: "3.141.5",
baseURL: "https://selenium-release.storage.googleapis.com",
drivers: {
chrome: {
version: "85.0.4183.83",
arch: process.arch,
baseURL: "https://chromedriver.storage.googleapis.com",
},
},
},
args: {
version: "3.141.5",
drivers: {
chrome: {
version: "85.0.4183.83",
arch: process.arch,
},
},
},
},
],
],
Ответ №2:
Я бы предложил использовать предварительно созданное изображение в браузере Chrome или посмотреть, как оно было создано в Dockerfile, напримерhttps://hub.docker.com/r/atools/chrome-headless
Вот пример репозитория, где вы можете увидеть тесты, проходящие в конвейереhttps://github.com/mgrybyk/wdio-jasmine-boilerplate