yarkov
@yarkov
Vue.js Frontend Developer

Запуск браузера в headless режиме через Nightwatch?

Пытаюсь выполнить тест с помощью NightWatch:
// test.js
module.exports = {
  'visible footer': function test (browser) {
    const devServer = browser.globals.devServerURL
    const year = new Date().getFullYear()

    browser
      .url(devServer)
      .waitForElementVisible('#main-app', 5000)
      .assert.elementPresent('.app-footer')
      .assert.containsText('.app-footer', year)
      .assert.elementCount('.app-footer', 1)
      .end()
  }
}

Конфиг:
require('babel-register')
const config = require('../../config')

const port = process.env.PORT || config.dev.port

// http://nightwatchjs.org/gettingstarted#settings-file
module.exports = {
  src_folders: ['test/e2e/specs'],
  output_folder: 'test/e2e/reports',
  custom_assertions_path: ['test/e2e/custom-assertions'],

  selenium: {
    start_process: true,
    start_session: true,
    server_path: require('selenium-server').path,
    host: '127.0.0.1',
    port: 4444,
    cli_args: {
      'webdriver.chrome.driver': require('chromedriver').path
    }
  },

  test_settings: {
    default: {
      selenium_port: 4444,
      selenium_host: 'localhost',
      silent: true,
      globals: {
        devServerURL: `http://localhost:${port}`
      }
    },

    chrome: {
      desiredCapabilities: {
        browserName: 'chrome',
        javascriptEnabled: true,
        acceptSslCerts: true,
        chromeOptions: {
          args: [
            'headless',
            'disable-web-security',
            'ignore-certificate-errors'
          ]
        }
      }
    }
}

Вот если убрать headless, то работает, но на VPS не хочет.
Если запустить с headless, то тест не ждет загрузки страницы и падает с такой ошибкой:
Timed out while waiting for element <#main-app> to be present for 5000 milliseconds.  - expected "visible" but got: "not found"


А на VPS запускаются с помощью Jenkins и падают так:
Error retrieving a new session from the selenium server



Connection refused! Is selenium server started?

{ state: 'unknown error',

  sessionId: null,

  hCode: 416442213,

  value: 

   { localizedMessage: null,

     cause: null,

     suppressed: [],

     message: null,

     hCode: 278891743,

     class: 'java.util.concurrent.TimeoutException',

     screen: null },

  class: 'org.openqa.selenium.remote.Response',

  status: 13 }

Sending interrupt signal to process

Terminated

script returned exit code 143
  • Вопрос задан
  • 76 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы