问题标签 [web-component-tester]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
609 浏览

javascript - 访问子元素数据的聚合物硒测试

在我有一个 firebase-login 元素

toggleLogin 调用的地方:

在我正在使用的 Polymer 测试套件中:

但是 Selenium 给了我以下错误:

长话短说,我如何单击按钮并检查模式弹出?

注意:Polymer 团队的测试如下:

由于他们将元素命名为 myEl 而不是 element 并寻找按钮标签而不是带有 btnLogin id 的标签,我觉得我的解决方案是合适的。我在这里做错了什么?

更新:

在查看绑定事件时,我仍然没有让事情正常进行。

代码:

上面的代码允许我越过这条线,但实际上并没有切换对话框。我不确定为什么。当我添加click()而不是click它时this.$.loginModal.toggle() is not defined,我会遇到我一直在努力解决的错误。

更新:

仍然没有找到一个好的答案。正在研究一些可能有帮助的代码,并找到了想要了解其内容元素信息的子菜单元素。我将在下面包括他们的测试。

代码:

按照上面的示例,我尝试了以下操作:

不幸的是,我越来越loginModal.opened不确定。loginModal.toggle()给出切换不是函数错误。

更新:

我发现 bind 实际上并没有调用该函数。它仅将 绑定this到新位置。因此,当我这样做时,btnLogin.click.bind(btnLogin)它正在进行绑定,因此当我调用btnLogin.click()它时,它将绑定到btnLogin而不是 ... btnLogin。因此,只调用btnLogin.click()而不调用bind函数是一样的。

既然已经解决了这个问题,我决定搞乱call而不是bind但我只是将其绑定this到相同的范围,所以这没有帮助。然后我尝试btnLogin.click.call(element)了,但它仍然给了我 this.$.loginModal.toggle 不是函数的错误。

0 投票
1 回答
101 浏览

javascript - 你如何测试需要加载 light dom 的元素?

我有一个元素:

和一个测试夹具:

我不确定在 light dom 初始化后如何运行我的测试。我试过听附加的事件,但它永远不会触发,因为在调用fixture() 之前我无法注册。我也尝试过同步测试,但测试在触发附加事件之前运行。

0 投票
0 回答
419 浏览

web-component - 如何模拟 HTML 导入以进行测试

我正在为我的自定义元素编写测试。我使用Web Component Tester,所以使用 Sinon.js 进行模拟会很棒。

我的自定义元素<link rel="import" href="something.html">动态添加。

我如何存根内容something.html

0 投票
1 回答
92 浏览

teamcity - 让 Polymer Webcomponent Tester 在 TeamCity CI 中运行

作为我的 TeamCity 环境中的构建步骤,我需要为一组 web 组件运行我的所有单元测试(您可以假设 TeamCity 始终是最新的)。我不知道从哪里开始。任何建议将不胜感激。

0 投票
2 回答
907 浏览

javascript - Polymer.js Web 组件测试器无法找到本地 DOM 元素

这是我的财产声明:

我的 CSS:

我有一个测试夹具如下:

使用如下测试套件:

自定义元素的Local DOM如下:

我正在尝试获取:beforeID 为的伪元素,#icon但 WCT 无法找到它,并且domEl在测试套件中等同于null.

我究竟做错了什么?

0 投票
1 回答
434 浏览

unit-testing - 对使用 firebase 的聚合物 Web 组件进行单元测试

我一直在尝试为使用最新版本的 Firebase 分布式数据库的聚合物 Web 组件配置离线单元测试。我的一些测试通过了,但其他的——看起来与通过的测试几乎相同——运行不正常。

我在 github 上建立了一个项目来演示我的配置,我将在下面提供更多评论。

示例: https ://github.com/doctor-g/wct-firebase-demo

在那个项目中,有两套测试工作正常。最简单的是offline-test,它根本不使用 Web 组件。它只是表明可以使用 firebase 数据库的离线模式来运行一些单元测试。这个技巧的核心是suiteSetup下面显示的方法——我从nfarina 在 firebase-server 上的工作中学到的技巧。

所有测试offline-test通过。

下一个套件是wct-firebase-demo-app_test.html,它测试同名的 Web 组件。该套件包含一系列单元测试,这些测试设置类似offline-test并且通过了。遵循依赖注入的思想,wct-firebase-demo-app组件有一个database属性,将 firebase 数据库引用传递到该属性中,这用于进行所有 firebase 调用。这是套件中的一个示例:

我在组件中也有一些非常简单的方法,以尝试对我稍后将讨论的碎片进行三角测量。只要说这个测试通过就足够了:

并得到此实现的支持wct-firebase-demo-app

再一次,这些都过去了。现在我们进入了真正的困境。有一套针对另一个元素的测试x-element,它有一个方法pushData

此方法的测试是其套件中唯一的测试:

这个测试没有通过。在运行此测试时,控制台会显示一条错误消息:

通过设置一些断点并遍历执行,在我看来这个错误是在调用之后once但在触发回调之前出现的。再次注意,这不会发生在上述相同的测试结构中wct-firebase-demo-app

这就是我卡住的地方。为什么offline-testwct-firebase-demo-app_test套件工作正常,但我得到这个 API 密钥错误x-element_test?我唯一的其他线索是,如果我将有效的 API 密钥复制到我的initializeApp配置中,那么我会得到一个测试超时。

更新:

这是运行测试时我的控制台日志的(拼凑在一起的)图像。:

显示失败测试的控制台日志

为了说明下面 tony19 提出的问题,这里是控制台日志,只是pushData has an effect注释掉x-element_test了:

显示通过测试的控制台日志

0 投票
1 回答
750 浏览

polymer - 如何使用 Polymer web-component-tester 运行特定测试?

在开发 Polymer Web 组件时,更具体地说,在添加额外测试时,每次我对测试进行调整时运行所有组件的测试会变得非常麻烦。

最简单的答案是注释掉不应该运行的测试,但这也会让人厌烦。

由于 web-component-tester 使用 Mocha,因此可能应该有某种方式来指示仅要运行一组特定的测试。定位一个特定的文件很容易,但是如何在一个文件中定位一个特定的测试呢?

0 投票
1 回答
591 浏览

polymer - JUnit 格式化测试输出

Jenkins 没有注意到我的测试用例在 Polymer 中运行,我不太确定如何生成正确的 JUnit 文件。使用web-component-tester如何生成 JUnit 格式的测试输出?

0 投票
0 回答
292 浏览

testing - Eslint 没有为 Polymer 元素运行 web-component-tester 测试

我正在尝试使用 eslint 对我的 Polymer 元素的 gulp 运行测试,但它似乎没有找到我包含的 browser.js 文件,因为它返回诸如“错误'套件'未定义 no-undef 之类的东西”。

我的 gulpfile.js :

这是我使用的测试套件:

最后是这个测试的 gulp 命令:

我对所有这些工具和一般的 Web 开发都很陌生,所以肯定有一些非常简单的东西我做得不对,但 24 小时后我似乎仍然找不到。

编辑:我确实安装了 eslint-plugin-html 并在我的 .eslintrc.json 上

0 投票
1 回答
558 浏览

polymer - 使用 Web 组件测试器调用存根、替换和固定需要什么顺序

我开始为我的应用程序中的一些元素构建一个测试套件。在顶层我有一个<my-app>元素,在它的模板中它使用一个<my-session元素来控制用户登录和一个<iron-media-query>元素来定义在应用程序标题中使用的字符串多长时间。

为了更好地控制这两者的行为,我正在构建它们的特殊测试版本并使用该replace('my-session').with('test-session')方法来改变它们。我还将使用该stub功能来控制与测试套件的交互。

我已完整阅读了聚合物网站上的文档,但我无法确定您是否必须在致电之前或之后replace使用.stubfixture

有人可以建议