我创建了一个样板反应项目,packages.json有通常的嫌疑:
我使用Selenium作为我的E2E框架。我有以下测试:
it('should launch a browser', () => {
const By = webDriver.By;
let driver = new webDriver.Builder()
.forBrowser('chrome')
.build();
// verify Continue button exist on page
driver.navigate().to('http://localhost:3000').then(() => driver.findElement(By.id('submitButton')).getAttribute('value'))
.then(buttonValue => expect(buttonValue).toEqual('Continue'));
});如果我使用npm start,我的站点启动,我的E2E启动一个额外的Chrome浏览器并导航到我正在运行的站点:localhost:3000。测试成功了。
我的问题是,我如何单独运行我的E2E,而不需要我的网站并排使用npm start。
我是新手反应和硒,如果我错过了这篇文章的许多信息,我事先道歉。
发布于 2017-06-20 12:21:08
既然你没有时间用NPM "scripts"对象来更新问题信息,那么我就试着在黑暗中试一试。
首先,由于你的措辞,我可以用两种方式来解释你的问题:
npm start启动);npm start运行E2E测试,而不从启动时触发服务器;如果您想单独运行脚本,同时考虑到您使用的是Mocha,则可以通过:./node_modules/.bin/mocha <pathToTests>/<testFile>触发它们。
现在,既然您在问题中说您正在使用npm test脚本,那么这应该是将您的E2E测试执行绑定到以下位置的最佳开关:
package.json (脚本对象):
"scripts": {
"test": "mocha --reporter spec <pathToTests>/<testFile>",
"start": "node <yourServerName>.js"
},请注意,mocha <pathToTests>/<testFile>等同于./node_modules/.bin/mocha <pathToTests>/<testFile>,因为NPM在node_modules/.bin中查找二进制文件,当安装Mocha时,它将它安装到这个目录中。
注意:许多包都有一个
bin或.bin部分,声明可以从NPM调用的脚本,类似于Mocha。如果您想找出您可以这样运行的其他二进制文件,只需发出一个ls node_modules/.bin即可。
b.()在这方面,我认为您的问题可能是由于NPM默认了一些基于包内容的脚本值。具体来说,如果包的根中有一个server.js文件,那么npm将默认启动命令为server.js。
因此,如果您要通过package.json启动E2E测试,并且在包的根目录中有一个server.js文件,那么npm将默认启动命令为node server.js。
在这种情况下,您可以将服务器脚本移动到项目中的另一个位置,或者更改用于触发E2E tests (see section b.))的开关。
希望这解决了您的问题,如果不是,那么期待package.json "scripts"对象,这样我们才能真正看到发生了什么。:)
干杯!
https://stackoverflow.com/questions/44528388
复制相似问题