首页 文章

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

提问于
浏览
0

我目前正在使用TestCafe测试React前端应用程序 . 目前的环境是:

React:16.3.2节点:8.10.0 TestCafe:0.23.0 MacOS Mojave 10.14.1

我们写了大约65个测试,这些测试都很好 . 我们在我们的应用程序中引入了单点登录组件,这带来了一些自动化挑战 . 我们不是试图针对我们的应用程序和这个特定的SSO提供程序驱动TestCafe,而是使用伪API调用 .

在正常使用期间,应用程序的简化操作顺序如下:1 . React app启动,检测不到SSO凭据2.环境服务为应用程序提供适当的SSO URL,反应app使用window.location将用户重定向到SSO登录页面3.用户日志in和SSO使用额外的URL查询参数和相应的值重定向回我们的react应用程序 . 4. React app以“登录”状态继续前进

很基本的东西 .

在测试React应用程序时,我们只提供指向localhost:3002上的本地ExpressJS实例的不同URL . 当React应用程序执行window.location到假SSO API(http://localhost:3002/fakeOAuth)时,ExpressJS实例只执行response.redirect(http://localhost:3000/?sso=fakeCode),现在我们将使用其他合成SSO数据返回到我们的React应用程序 . 这种方案在不受TestCafe驱动时效果很好 .

当我们通过TestCafe驱动React应用程序时,TestCafe在从假SSO调用返回到React应用程序时挂起 . 在此挂起之后,我们必须使用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 回答

  • 1

    它看起来像TestCafe中的一个错误 . __get$ 函数是一个内部TestCafe函数, __get$ is not a function 错误意味着TestCafe无法正确处理页面并在全局窗口对象中安装其内部函数 .

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

相关问题