Capybara-Webkit:js/React 丢失且无法找到变量:WeakMap

Capybara-Webkit: js/React is missing & Can't find variable: WeakMap

我在我的黄瓜功能文件的步骤定义中使用 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\")

相关信息:

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

如能就此问题提供任何帮助,我们将不胜感激。 谢谢

capybara-webkit 最多支持 ES5。您正在使用 ES6 功能(WeakMap 等)。为了使用 capybara-webkit 测试您的应用程序,您的应用程序需要使用 babel 等 transpiled/polyfilled 完全兼容 ES5。恢复到较旧的 Qt,只会使 capybara-webkit 的支持级别更差,所以这不是甚至是短期解决方案。如果您不想 transpile/polyfil 另一种解决方案是从使用 capybara-webkit 更改为使用 selenium 和 headless chrome (尽管目前有一些东西也不起作用 - 调整大小 windows, 多个 windows)