【问题标题】:Unable to set TEST_BROWSER_DRIVER env variable Windows 10 Meteor无法设置 TEST_BROWSER_DRIVER 环境变量 Windows 10 Meteor
【发布时间】:2018-07-30 14:25:04
【问题描述】:

我根本无法测试我的流星应用程序,以前在 v1.4 上,我设法启动了测试,升级到 1.6 后,尽管我努力了,但我仍然无法运行测试。我希望任何人都可以提供帮助。

操作系统:Windows 10。

当前 Meteor 版本:1.6

在我的环境变量中,我设置了指向我的 chromedriver 的路径,但仍然没有成功。

 C:\Users\Username\Documents\Dev\Proj\infilerp>TEST_BROWSER_DRIVER=chrome meteor test --once --driver-package meteortesting:mocha
'TEST_BROWSER_DRIVER' is not recognized as an internal or external command,
operable program or batch file.  



C:\Users\Username\Documents\Dev\Proj\infilerp>meteor test --full-app --

driver-package meteortesting:mocha --port 8080
[[[[[ Tests ]]]]]

=> Started proxy.
=> A patch (Meteor 1.6.1.3) for your current release is available!
   Update this project now with 'meteor update --patch'.
=> Started MongoDB.
I20180730-17:58:52.807(8)? superadmin created
I20180730-17:58:53.166(8)?
I20180730-17:58:53.167(8)? --------------------------------
I20180730-17:58:53.167(8)? --- RUNNING APP SERVER TESTS ---
I20180730-17:58:53.168(8)? --------------------------------
I20180730-17:58:53.168(8)?
I20180730-17:58:53.168(8)?
I20180730-17:58:53.169(8)?
I20180730-17:58:53.169(8)?   0 passing (1ms)
I20180730-17:58:53.170(8)?
I20180730-17:58:53.171(8)?
I20180730-17:58:53.171(8)? --------------------------------
I20180730-17:58:53.172(8)? --- RUNNING APP CLIENT TESTS ---
I20180730-17:58:53.172(8)? --------------------------------
W20180730-17:58:53.281(8)? (STDERR) C:\Users\Username\AppData\Local\.meteor\packages\meteor-tool\1.6.1\mt-os.windows.x86_64\dev_bundle\server-lib\node_modules\fibers\future.js:280
W20180730-17:58:53.282(8)? (STDERR)                                             throw(ex);
W20180730-17:58:53.283(8)? (STDERR)                                             ^
W20180730-17:58:53.283(8)? (STDERR)
W20180730-17:58:53.283(8)? (STDERR) Error: Unknown driver "C:\Users\Username\Documents\Dev\Proj\infilerp\node_modules\chromedriver\lib\chromedriver\chromedriver.exe". browser-tests package requires that you set the TEST_BROWSER_DRIVER environment variable to one of the following: chrome, nightmare, phantomjs, puppeteer
W20180730-17:58:53.284(8)? (STDERR)     at startBrowser (packages/meteortesting:browser-tests/server.js:39:13)
W20180730-17:58:53.284(8)? (STDERR)     at clientTests (packages/meteortesting:mocha/server.js:138:3)
W20180730-17:58:53.284(8)? (STDERR)     at serverTests (packages/meteortesting:mocha/server.js:168:7)
W20180730-17:58:53.285(8)? (STDERR)     at mochaInstance.run.failureCount (packages/meteortesting:mocha/server.js:118:13)
W20180730-17:58:53.285(8)? (STDERR)     at done 

...    
=> Exited with code: 1

【问题讨论】:

  • 之前是在 Windows 上运行过,还是之前在 unixoid 上运行过?
  • 我之前在mac上跑过,后来换成windows了。
  • 那么你需要设置你的环境变量不同。见superuser.com/questions/212150/…
  • @Jankapunkt 我设置了 env 变量,但仍然没有在哪里,我不确定我是否做错了:C:\Users\Username\Documents\Dev\Proj\infilerp>SET TEST_BROWSER_DRIVER="c:\WINDOWS\chromedriver.C:\Users\Username\Documents\Dev\Proj\infilerp>TEST_BROWSER_DRIVER 'TEST_BROWSER_DRIVER' is not recognized as an internal or external command, operable program or batch file.

标签: javascript testing meteor mocha.js


【解决方案1】:

在 Windows 上使用 NodeJS / Meteor 时,我发现使用带有跨环境的 npm 脚本或批处理脚本来运行所有内容要容易得多

对于测试示例,我将在 package.json 中设置一个脚本,如下所示:

{
  "scripts": {
    "start": "meteor run",
    "test": "cross-env TEST_BROWSER_DRIVER=chrome meteor test --full-app --driver-package meteortesting:mocha --port 8080"
  },
  "devDependencies": {
    "cross-env": "^5.2.0",
    ...etc
  }
}

cross-env 负责跨不同操作系统正确设置环境变量,因此您可以使用npm run test 在任何地方运行脚本

或者,作为批处理脚本(仅限 Windows):

set TEST_BROWSER_DRIVER=chrome
REM Optionally set other env vars you want
set TEST_WATCH=1
meteor test --full-app --driver-package meteortesting:mocha --port 8080

另外,既然meteortesting:mocha 支持puppeteer,我强烈建议将其用作浏览器驱动程序。使用它时我的头痛减轻了很多:

npm install --save-dev puppeteer

TEST_BROWSER_DRIVER=puppeteer

您可能需要将meteortesting:browser-tests 更新到版本 1.0.0 以启用对 pupeteer 的支持。

【讨论】:

  • 谢谢!我设法绕过TEST_BROWSER_DRIVER 问题。但现在我有另一个问题:我添加了"test": "cross-env TEST_BROWSER_DRIVER=chrome meteor test --full-app --driver-package meteortesting:mocha --port 8080" 并运行了npm run test,但我还有另一个问题:TypeError: options.toCapabilities is not a function at startChrome (packages/meteortesting:browser-tests/browser/chromedriver.js:46:82) at startBrowser (packages/meteortesting:browser-tests/server.js:23:7) at clientTests (packages/meteortesting:mocha/server.js:138:3)
  • 看起来像 chromedriver 的 meteortesting:browser-tests 中的一个错误。切换到 puppeteer 能解决这个问题吗?
  • 我目前正在使用:meteor node -v v8.9.4。在我将selenium 更改为selenium-webdriver@3.0.0-beta-2 之后。错误消失了,但我仍然无法让页面加载 localhost:8080 上的所有测试。该应用程序因code 0 而崩溃。我想知道是否可以将流星节点更改为使用v6.1.3,但我还没有找到方法。即使在降级 selenium 之后,puppeteer 也与 code 0 崩溃
  • 我将端口更改为 3100,我似乎更进了一步。另外,我没有使用meteor npm run 'chrome-test',而是简单地运行meteor test --driver-package meteortesting:mocha --port 3100,我的控制台正在输出测试结果。但是当我转到localhost:3100 时,我在控制台中得到了这个:modules.js?hash=b0c78242e1bea8373c5f38529a072c3214bf0c64:32074 Uncaught TypeError: Cannot read property 'prototype' of undefined at patch (modules.js?hash=b0c78242e1bea8373c5f38529a072c3214bf0c64:32074) at graceful-fs.js (modules.js?
  • 当前运行Meteor 1.7.0.3(使用node 8.11.3),并使用puppeteer@1.5.0,所以没有chromedriver或selenium。 meteortesting:mocha@1.0.0meteortesting:browser-tests@1.0.0。使用 cross-env TEST_BROWSER_DRIVER=puppeteer meteor test --once --driver-package meteortesting:mocha --raw-logs --settings settings.json 启动测试
猜你喜欢
  • 2017-04-09
  • 2020-11-04
  • 2019-01-27
  • 2018-07-20
  • 2018-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-21
相关资源
最近更新 更多