reactjs - 使用 React 的 Selenium E2E 新手

标签 reactjs selenium selenium-webdriver mocha.js e2e-testing

我创建了一个样板 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 a ls 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/

相关文章:

javascript - 为什么在渲染时调用我的 onClick? - react .js

node.js - 不变违规 : Element type is invalid: expected a string (for built-in components) or a class/function. react 路由器 v4

reactjs - typescript /网页包 : cannot find module 'react-select'

java - Selenium跳过具有隐藏属性的html元素

selenium-webdriver - 在 Selenium Grid 上运行 chrome 浏览器时遇到问题

java - 如何处理对话框窗口以单击 selenium webdriver 中的按钮

javascript - 如何使 @connect 装饰器与 redux-saga 一起工作?

python - Selenium 防止重定向

java - 如何检查元素是否是可点击的按钮而不是文本?

eclipse - 执行 selenium 网络驱动程序时出现异常