gpt4 book ai didi

node.js - 在运行测试的命令中传递 .env 变量时浏览器的不同行为

转载 作者:行者123 更新时间:2023-11-28 21:21:06 24 4
gpt4 key购买 nike

这实际上不是问题,但我不完全理解发生了什么以及为什么。

我有这个运行者用于我的测试。我测试了一个 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

那是因为在我的本地机器上我有不同的配置,我不想为其他人更改它。

通常,测试在不同的、清晰的浏览器版本中运行,没有任何帐户数据、插件等。但在这种情况下,测试在新的浏览器窗口中运行,但包含所有插件和我的帐户名。但是,它没有来 self 通常工作的浏览器窗口的 cookie 和 session 身份验证数据(因为我在工作浏览器中进行了现场授权,而没有在测试浏览器中进行身份验证)。

如果我将“Chrome”更改为“chrome”,它就会完全停止运行。 Firefox 和 Safari 的行为相同。

早些时候,在不传递 REDIS_HOSTHOST 的情况下,它照常工作并在干净的新浏览器窗口中运行。

这不是什么大问题,至少现在是这样,但这是意外行为,我不明白为什么会这样。

我对 Node 和 React 不是很熟悉,也许这与它们有关。

规范:macOS 10.12.5、Testcafe 0.20.3、Chrome 67

最佳答案

Specifying browsers使用 { path, cmd } 是遗留的低级选项,您不应该使用它。当以这种方式指定浏览器时,TestCafe 不会尝试猜测浏览器的类型(Chrome、Firefox)并且不会执行高级初始化步骤,例如创建干净的配置文件(因为配置文件结构取决于浏览器的类型)。所以最好使用下面的运行器代码:

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

关于node.js - 在运行测试的命令中传递 .env 变量时浏览器的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51309298/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com