我创建了一个样板反应项目,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
并排我的网站。
我是React和Selenium的新手,如果我在这篇文章中遗漏了很多信息,我会事先道歉。
答案 0 :(得分:6)
好吧,既然你没有时间用NPM "scripts"
对象更新问题信息,那么我会试着在黑暗中试一试。
首先,由于你的措辞,我可以用两种方式解释你的问题:
npm start
运行 E2E测试,而不会触发您的服务器启动; a。)如果您想单独运行脚本,当您使用 Mocha 时,可以通过以下方式触发它们:npm start
。
现在,既然您在问题中声明您正在使用./node_modules/.bin/mocha <pathToTests>/<testFile>
脚本,那么这应该是将 E2E测试执行绑定到的最佳切换:
package.json (脚本对象):
npm test
请注意,"scripts": {
"test": "mocha --reporter spec <pathToTests>/<testFile>",
"start": "node <yourServerName>.js"
},
相当于mocha <pathToTests>/<testFile>
,因为 NPM 会在./node_modules/.bin/mocha <pathToTests>/<testFile>
内查找二进制文件,并且在安装Mocha时,会将其安装到此目录中
注意:许多软件包都有
node_modules/.bin
或bin
部分,声明可以从NPM调用的脚本,类似于Mocha。如果您想了解可以以这种方式运行的其他二进制文件,请发出.bin
。
b。)在这种关注中,我认为您的问题可能是由于NPM根据包内容默认某些脚本值。具体来说,如果您的软件包根目录中有ls node_modules/.bin
文件,则npm会将启动命令默认为server.js
。
因此,如果您通过server.js
开始 E2E测试,请在 package.json 中设置此项(npm start
)并且在包的根目录中有一个 server.js 文件,然后npm会将启动命令默认为"start": "mocha <pathToTests>/<testFile>"
。
在这种情况下,您可以将服务器脚本移动到项目中的其他位置,或者更改用于触发 E2E测试(node server.js
)的开关。< / p>
希望这可以解决您的问题,如果没有,请期待see section b.)
package.json
对象,这样我们才能真正看到了什么。 :)
干杯!