这实际上不是问题,但我不完全理解,发生了什么以及为什么。
我有这个跑步者供我测试。我测试了一个 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