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