当前位置 : 主页 > 网页制作 > React >

reactjs – 用React对Selenium E2E的新手

来源:互联网 收集:自由互联 发布时间:2021-06-15
我创建了一个样板React项目,packages.json有通常的嫌疑: 预启动 开始 列表 测试 等 我正在使用Selenium作为我的E2E框架.我有以下测试: it('should launch a browser', () = { const By = webDriver.By; let d
我创建了一个样板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'));

  });

如果我开始运行,我的网站会启动,我的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 a ls 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“脚本”对象,这样我们就可以真正看到了什么.

网友评论