我创建了一个样板 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 的新手,如果我在这篇文章中遗漏了很多信息,我提前道歉。
最佳答案
嗯,既然你没有时间用NPM更新问题信息"scripts"
对象,然后我会尝试在黑暗中尝试一下。
首先,根据你的措辞,我可以用两种方式解释你的问题:
- a.)您想要E2E测试单独运行您的服务器(通过
npm start
启动) ); - b.)您希望通过
npm start
运行您的E2E 测试 ,不会触发您的服务器启动;
a.) 如果您想单独运行脚本,因为您正在使用 Mocha,那么您可以通过以下方式触发它们:./node_modules/.bin/mocha <pathToTests>/<testFile>
。
现在,既然您在问题中声明您正在使用 npm test
脚本,那么这应该是将您的E2E测试执行绑定(bind)到的最佳开关:
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安装时,它会将其安装到这个目录中。
<小时/>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 将默认启动命令为 server.js
.
因此,如果您通过 npm start
开始E2E 测试 ,在你的 package.json 中有这个 ( "start": "mocha <pathToTests>/<testFile>"
) 并且在你的包的根目录中有一个 server.js 文件,那么 npm 将默认启动命令为node server.js
.
在这种情况下,您可以将服务器脚本移动到项目中的其他位置,或者更改用于触发E2E 测试的开关 ( see section b.)
)。
希望这能解决您的问题,如果没有,请期待 package.json
"scripts"
对象,这样我们就可以真正看到发生了什么。 :)
干杯!
关于reactjs - 使用 React 的 Selenium E2E 新手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44528388/