新手到Selenium E2E与React

时间:2017-06-13 17:54:19

标签: reactjs selenium selenium-webdriver mocha e2e-testing

我创建了一个样板反应项目,packages.json有通常的嫌疑人:

  • 预启动
  • 开始
  • list
  • 测试

我正在使用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 个答案:

答案 0 :(得分:6)

好吧,既然你没有时间用NPM "scripts"对象更新问题信息,那么我会试着在黑暗中试一试。

首先,由于你的措辞,我可以用两种方式解释你的问题:

  • a。)您希望单独运行 E2E测试 ,而不是运行您的服务器(通过{{1启动) }});
  • b。)您希望通过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/.binbin部分,声明可以从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对象,这样我们才能真正看到了什么。 :)

干杯!