我目前正在使用TestCafe测试React前端应用程序。当前环境是:
反应:16.3.2 节点:8.10.0 TestCafe:0.23.0 MacOS Mojave 10.14.1
我们编写了约65个测试,这些测试都运行良好。我们已经将Single Sign On组件引入了我们的应用程序,这带来了一些自动化挑战。与其尝试针对我们的应用程序和该特定的SSO提供程序来驱动TestCafe,我们使用的是伪造的API调用。
在正常使用期间,应用程序的简化操作顺序为: 1. React应用启动,未检测到SSO凭据 2.环保服务为应用提供了正确的SSO URL,React应用使用window.location将用户重定向到SSO登录页面 3.用户登录,SSO使用附加的URL查询参数和相应的值重定向回我们的react应用。 4. React应用以“已登录”状态前进
相当基本的东西。
在测试React应用时,我们仅提供不同的URL,这些URL指向localhost:3002上的本地ExpressJS实例。当React应用执行到虚假SSO API(http://localhost:3002/fakeOAuth)的window.location时,ExpressJS实例仅执行response.redirect(http://localhost:3000/?sso=fakeCode),现在我们将使用其他合成工具返回React应用SSO数据。如果不由TestCafe驱动,此方案将非常有用。
当我们通过TestCafe驱动React应用时,当从假SSO调用返回到React应用时,TestCafe挂起。挂起之后,我们必须使用ctrl-c在命令行上强制杀死TestCafe。
使用chrome调试工具并查看控制台输出,会显示一条消息:
Uncaught TypeError: __get$ is not a function
at hotCreateRequire (bundle.js:73)
at bundle.js:719
at bundle.js:722
和屏幕截图位于下面的这篇文章的结尾。
测试代码:
import { Selector } from 'testcafe'
fixture 'Landing Page Body Tests'
.page 'localhost:3000
test ('Displays correct main welcome title', async t => {
const landingPage = Selector('.card-title')
await t
.expect((landingPage).innerText).eql('Welcome, Fakeuser', 'Incorrect Username Found')
})
Screenshot of TestCafe failure
有人对TestCafe崩溃的原因有任何想法吗?我对测试进行了几次重做,使用TestCafe的Roles和ClientFunction类进行了研究和试验,但无济于事。任何输入将不胜感激。
答案 0 :(得分:1)
它看起来像TestCafe中的错误。 __get$
函数是内部TestCafe函数,并且__get$ is not a function
错误表示TestCafe无法正确处理您的页面并将其内部函数安装在全局窗口对象中。
我建议您在TestCafe存储库中创建一个new bug report,并提供一个HAR report和一个可用于重现该问题的示例。