我对Angular应用程序进行赛普拉斯测试时遇到了一些不稳定的现象:以我的本地机器为目标时,它们工作正常,但是将CYPRESS_BASE_URL
设置为运行相同代码的远程计算机时,则某些测试失败。 / p>
我认为我已经将范围缩小到了StencilJS组件的交互。考虑:我有一种形式要求使用常规<input>
元素来输入用户名,密码等,以便:
<input formControlName="username" type="text">
...等等。这些测试可以可靠地工作,这意味着这些语句可以正确填写以下字段:
cy.get('[formControlName=fullname]').type(name)
cy.get('[formControlName=username]').type(username)
cy.get('[formControlName=password]').type(passwrod)
我还有另一种形式,该形式使用具有嵌入式<input>
的StencilJS组件,因此元素看起来像这样:
<my-input ngDefaultControl formControlName="newPassword" type="password"></my-input>
<my-input ngDefaultControl formControlName="confirmPassword" type="password"></my-input>
然后我的代码尝试填写两个字段:
cy.get('[formControlName=newPassword]').find('input').type(updated_password).blur()
cy.get('[formControlName=confirmPassword]').find('input').type(updated_password).blur()
但是这里的测试失败了:它实际上是在填写第一个密码,前进到第二个字段并填写第二个密码-但随后第一个字段神秘地变成空白!
模板组件是<input>
周围的简单包装:
return (
<input type={ this.type }
value={ this.value }
placeholder={ this.placeholder }
onChange={ this.handleChange.bind(this) }></input>
);
我尝试使用.blur()
和不使用.then()
。
我已经尝试过和不与self.loginButton.isEnabled = true
self.loginButton.layer.opacity = 1
链接。
但是,上述测试对于远程目标始终失败,对于本地目标计算机始终成功。
关于如何可靠地进行这项工作还有其他建议吗?