>预启动
>开始
>列表
>测试
>等
我正在使用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')); });
如果我开始运行,我的网站会启动,我的E2E会启动一个额外的Chrome浏览器并导航到我的运行站点:localhost:3000.测试成功.
我的问题是,如何单独运行我的E2E,而不需要使用npm start来并排我的站点.
我是React和Selenium的新手,如果我在这篇文章中遗漏了很多信息,我会事先道歉.
好吧,既然你没有时间用NPM“脚本”对象来更新问题信息,那么我会试着在黑暗中试一试.首先,由于你的措辞,我可以用两种方式解释你的问题:
> a.)您希望单独运行您的E2E测试,无需运行您的服务器(通过npm start启动);
> b.)您希望通过npm start运行您的E2E测试,而不会触发您的服务器启动;
a.)如果你想单独运行脚本,看到你正在使用Mocha,那么你可以通过以下方式触发它们:./ node_modules / .bin / mocha< pathToTests> /< testFile>.
现在,既然你在问题中说你正在使用npm测试脚本,那么这应该是将你的E2E测试执行绑定到的最佳开关:
package.json(Scripts对象):
"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时,它将它安装到此目录中.
Note: Many packages have a
bin
, or.bin
section, declaring scripts that can be called from NPM similar to Mocha. If you want to find out what other binaries you can run that way, just issue als node_modules/.bin
.
b.)在这种关注中,我认为您的问题可能是由于NPM根据包内容默认某些脚本值.具体来说,如果你的软件包的根目录中有一个server.js文件,那么npm会将start命令默认为server.js.
因此,如果你是通过npm start开始你的E2E测试,在你的package.json中有这个(“开始”:“mocha< pathToTests> /< testFile>”)并且根目录中有一个server.js文件你的包,然后npm将默认启动命令到节点server.js.
在这种情况下,您可以将服务器脚本移动到项目中的其他位置,或者更改用于触发E2E测试的开关(请参阅b.部分).
希望这能解决你的问题,如果没有,期待那个package.json“脚本”对象,这样我们就可以真正看到了什么.