![](/img/trans.png)
[英]Run tests using different env. variables depending on a command in package.json
[英]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_HOST和HOST ,它像往常一樣工作並在一個干凈的新瀏覽器窗口中運行。
至少就目前而言,這不是一個大問題,但這是意外行為,我不明白為什么會這樣。
我對 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.