从Node ExpressJS重定向返回时出现testcafe问题

时间:2018-11-07 21:35:08

标签: node.js reactjs google-chrome express testcafe

我目前正在使用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类进行了研究和试验,但无济于事。任何输入将不胜感激。

1 个答案:

答案 0 :(得分:1)

它看起来像TestCafe中的错误。 __get$函数是内部TestCafe函数,并且__get$ is not a function错误表示TestCafe无法正确处理您的页面并将其内部函数安装在全局窗口对象中。

我建议您在TestCafe存储库中创建一个new bug report,并提供一个HAR report和一个可用于重现该问题的示例。