Capybara-Webkit:缺少js / React&找不到变量:WeakMap

时间:2017-07-26 00:30:43

标签: qt reactjs capybara capybara-webkit qt5.5

我在我的黄瓜特征文件的步骤定义中使用了Capybara-Webkit。此特定方案测试成功登录系统。 Capybara加载登录表单,完美地输入用户名和密码,但当它点击登录按钮时,它会挂在加载页面上并且从未正确登录。

打印到控制台的错误是:

  1. ReferenceError: Can't find variable: WeakMap

  2. Error: js/React is missing

  3. |TypeError: undefined is not an object (evaluating 'reagent.impl.util.memoize_1.call')
  4. TypeError: undefined is not an object (evaluating 'window["deps"]["fine"]')
  5. Feature :formatters cannot be installed. Unsupported Javascript context: Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/538.1 (KHTML, like Gecko) capybara-webkit Safari/538.1.
  6. Error: js/ReactDOM is missing
  7. (typeof goog == \"undefined\") console.warn(\"ClojureScript could not load :main, did you forget to specify :asset-path?\");goog.require(\"myapp.app\")
  8. 相关信息:

    • 在/usr/local/Cellar/qt@5.5/5.5.1_1/lib

    • 中使用Qt 5.5.1版
    • echo $ PATH => /usr/local/opt/qt@5.5/bin

    • 使用macOS Sierra 10.12.5

    • Xcode版本8.3.3

    从我从论坛收集的内容(特别是这个https://github.com/thoughtbot/capybara-webkit/issues/849)缺少QtWebKit:5.5.1支持es6可能是个问题。我已经尝试安装旧版本的qt(qt-everywhere-opensource-src-5.4.2),但是我遇到了构建错误,即使它确实有效,也不是长期解决方案来使用更旧的版本。

    对此问题的任何帮助将不胜感激。 谢谢

1 个答案:

答案 0 :(得分:0)

capybara-webkit最多支持ES5。您正在使用ES6功能(WeakMap等)。为了使用capybara-webkit测试您的应用程序,您的应用程序需要使用babel等完全转换/ polyfilled到ES5兼容性。恢复到较旧的Qt,只会使capybara-webkit中的支持级别变差,所以这甚至都不是短期解决方案。如果你不想转换/ polyfil,另一个解决方案就是从使用capybara-webkit变为使用带无头镀铬的selenium(虽然目前也有一些不起作用的东西 - 调整窗口,多个窗口)