WebdriverIO с CicrcleCI- выдает ошибку для версии chromedriver

#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