首页 > 解决方案 > Capybara poltergeist 不执行 mdc webpack application.js 文件

问题描述

我有一个运行 Rails 5 的应用程序。我正在使用 mdc 组件进行样式设置。我有一个调用 new mdc.mdcTextFeild(.....) 的 javascript 函数

这在浏览器环境中运行良好。但是在使用带有 poltergeist 驱动程序的 capybara 进行测试时,我能够看到我的 application-XXXXXX.js 存在于 HTML 中,但是,它会抛出 Reference error mdc not found!

我正在使用 web-pack 加载 mdc 组件。它正在正确编译并加载脚本。然而,在 poltergeist 中的 window 对象并没有定义 mdc!

标签: ruby-on-railscapybarapoltergeistmdc-components

解决方案


Poltergeist 使用 PhantomJS 作为它的“浏览器”。PhantomJS 的最新发布版本基本上相当于一个 6-7 岁的浏览器,并且不支持很多现代 JS/CSS。因此,任何现代 JS 都需要被转译和 polyfill 以与 ES5 兼容(不、、、、、等)let,否则您将遇到 JS 错误,从而阻止大量页面行为加载。constArray.fromArray.of

对于当今现代应用程序的任何无头测试,您可能会更好地使用 Capybara 和 Selenium 和无头 chrome,而不是 Poltergeist。


推荐阅读