我目前正在用TestCafe测试一个React前端应用程序。
React:16.3.2节点:8.10.0测试咖啡馆:MacOS莫哈韦沙漠10.14.1
我们已经编写了大约65个测试,所有测试都运行良好。我们在我们的应用中引入了一个单点登录组件,这带来了一些自动化挑战。我们没有试图针对我们的应用和这个特定的单点登录提供程序驱动TestCafe,而是使用了一个虚假的API调用。
在正常使用期间,应用程序的简化操作顺序为:
- React应用程序启动,未检测到SSO凭据
1.环境服务为应用程序提供正确的SSO URL,应用程序使用window.location将用户重定向到SSO登录页面
1.用户登录后,SSO会使用额外的URL查询参数和相应的值重定向回我们的react应用程序。 - React应用程序在“已登录”状态下继续运行
很基本的东西。
在测试React应用时,我们只需提供指向localhost:3002上的本地ExpressJS示例的不同URL。当React应用对伪SSO API(http://localhost:3002/fakeOAuth)执行window.location时,ExpressJS示例只需执行response.redirect(http://localhost:3000/?sso = fakeCode),现在我们返回到具有额外合成SSO数据的React应用。此方案在不受TestCafe驱动时效果很好。
当我们通过TestCafe驱动React应用程序时,TestCafe在从对React应用程序的假SSO调用返回时挂起。在此挂起之后,我们必须在命令行上使用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类,但是没有结果。任何输入都将非常感谢。
1条答案
按热度按时间xqnpmsa81#
__get$
函数是TestCafe的一个内部函数,而__get$ is not a function
错误意味着TestCafe无法正确处理您的页面,也无法在全局窗口对象中安装其内部函数。我建议您在TestCafe存储库中创建一个new bug report,并提供一个HAR report和一个可以用来重现该问题的示例。