Другое поведение браузера при передаче переменных .env в команде для запуска тестов

На самом деле это не проблема, но я не совсем понимаю, что произошло и почему.

У меня есть этот бегунок для теста. Я тестирую приложение React.

let testcafe = null
const isCiEnv = process.env.CI === 'true'

const exit = async err => {
  console.log('Exiting...')
  if (testcafe) {
    console.log('Closing TestCafe...')
    testcafe.close()
  }
  console.log('Exiting process...')
  process.exit(err ? 1 : 0)
}

console.log('Is CI ENV: ', isCiEnv)
console.log('Creating TestCafe...')

createTestCafe('localhost', 1337, 1338)
  .then(tc => {
    testcafe = tc
  })
  .then(() => {
    console.log('Starting server...')
    return startServer()
  })
  .then(() => {
    console.log('Starting client...')
    return startClient()
  })
  .then(() => {
    console.log('Creating TestCafe Runner...')
    return testcafe.createRunner()
  })
  .then(runner => {
    console.log('About to start TestCafe Runner...')
    return runner
      .src([
        'test/e2e/fixtures/auth.js'
      ])
      .browsers({
        path: isCiEnv
          ? '/usr/bin/chromium-browser'
          : 'Chrome',
        cmd: isCiEnv
          ? '--no-sandbox --disable-gpu'
          : undefined
      })
      .screenshots('screenshots', true)
      .run({
        skipJsErrors: true,
        selectorTimeout: 25000,
        assertionTimeout: 25000
      })
  })
  .then(failedCount => {
    console.log('failed count:', failedCount)
    return exit(failedCount)
  })
  .catch(err => {
    console.error('ERR', err)
    return exit(err)
  })

В package.json у меня есть эта команда для запуска теста

"test:e2e": "HOST=0.0.0.0 NODE_ENV=test NODE_PATH=server babel-node test/e2e/index.js --presets stage-2"

Но в локальной среде я запускаю тест с помощью этой команды

sudo REDIS_HOST=127.0.0.1 PORT=80 yarn test:e2e

Это потому, что на моем локальном компьютере у меня другая конфигурация, и я не хочу менять ее для всех остальных.

Обычно тест запускается в другой, чистой версии браузера, без каких-либо данных учетной записи, плагинов и т. Д. Но в этом случае тесты запускаются в новом окне браузера, но со всеми плагинами и именем моей учетной записи. Но у него нет данных cookie и аутентификации сеанса из окна браузера, в котором я обычно работаю (потому что я авторизовался на сайте в рабочем браузере и не аутентифицируется в тестовом браузере).

И если я изменю "Chrome" на "chrome", он полностью перестанет работать. Такое же поведение для Firefox и Safari.

Ранее, без передачи REDIS_HOST и HOST, он работал как обычно и запускался в новом чистом окне браузера.

Это не большая проблема, по крайней мере, на данный момент, но это неожиданное поведение, и я не понимаю, почему это так работает.

Я не очень знаком с Node и React, и, возможно, это связано с ними.

Спецификация: macOS 10.12.5, Testcafe 0.20.3, Chrome 67


person RedVarVar    schedule 12.07.2018    source источник


Ответы (1)


Указание браузеров с помощью { path, cmd } является устаревшим минимумом -уровень, вы не должны его использовать. Когда браузер указан таким образом, TestCafe не пытается угадать тип браузера (Chrome, Firefox) и не выполняет расширенные шаги инициализации, такие как создание чистого профиля (поскольку структура профиля зависит от типа браузера). Так что лучше использовать следующий код бегуна:

.browsers(isCiEnv ? 'chromium --no-sandbox --disable-gpu' : 'chrome') 
person Andrey Belym    schedule 17.07.2018
comment
У меня не работает - результат тот же, что и был. Если { pathm cmd } - устаревший вариант, не могли бы вы упомянуть об этом в документации? На эту страницу, например. - person RedVarVar; 17.07.2018