簡體   English   中英

在命令中傳遞 .env 變量以進行運行測試時的不同瀏覽器行為

[英]Different browser behavior when pass .env variables in command for run tests

這實際上不是問題,但我不完全理解發生了什么以及為什么。

我有這個跑步者用於我的測試。 我測試了一個 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_HOSTHOST ,它像往常一樣工作並在一個干凈的新瀏覽器窗口中運行。

至少就目前而言,這不是一個大問題,但這是意外行為,我不明白為什么會這樣。

我對 Node 和 React 不是很熟悉,也許這與它們有關。

規格:macOS 10.12.5、Testcafe 0.20.3、Chrome 67

使用{ path, cmd } 指定瀏覽器是一個傳統的低級選項,您不應該使用它。 當以這種方式指定瀏覽器時,TestCafe 不會嘗試猜測瀏覽器的類型(Chrome、Firefox),也不會執行諸如創建干凈配置文件之類的高級初始化步驟(因為配置文件結構取決於瀏覽器的類型)。 所以最好使用以下運行器代碼:

.browsers(isCiEnv ? 'chromium --no-sandbox --disable-gpu' : 'chrome') 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM