NodeJS 从节点ExpressJS重定向返回时出现testcafe问题

a8jjtwal  于 2022-11-04  发布在  Node.js
关注(0)|答案(1)|浏览(147)

我目前正在用TestCafe测试一个React前端应用程序。
React:16.3.2节点:8.10.0测试咖啡馆:MacOS莫哈韦沙漠10.14.1
我们已经编写了大约65个测试,所有测试都运行良好。我们在我们的应用中引入了一个单点登录组件,这带来了一些自动化挑战。我们没有试图针对我们的应用和这个特定的单点登录提供程序驱动TestCafe,而是使用了一个虚假的API调用。
在正常使用期间,应用程序的简化操作顺序为:

  1. React应用程序启动,未检测到SSO凭据
    1.环境服务为应用程序提供正确的SSO URL,应用程序使用window.location将用户重定向到SSO登录页面
    1.用户登录后,SSO会使用额外的URL查询参数和相应的值重定向回我们的react应用程序。
  2. 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类,但是没有结果。任何输入都将非常感谢。

xqnpmsa8

xqnpmsa81#

__get$函数是TestCafe的一个内部函数,而__get$ is not a function错误意味着TestCafe无法正确处理您的页面,也无法在全局窗口对象中安装其内部函数。
我建议您在TestCafe存储库中创建一个new bug report,并提供一个HAR report和一个可以用来重现该问题的示例。

相关问题