赛普拉斯似乎已停滞不前

时间:2018-02-07 10:15:23

标签: cypress

我是柏树的新手,喜欢它的架构方式。但是,我似乎很早就遇到了一个问题,我想做一件非常简单的事情。

我的工作流程是: 1)访问该网站 2)输入用户名和密码 3)在下一个屏幕上,键入一个数字并按提交, 4)在下一个屏幕上,从下拉列表中选择一个值,然后按Enter键。 5)我到了我网站的登陆页面。

赛普拉斯完全没问题,直到第4步)。它似乎在第5步停止。测试运行器突然停止并且没有警告或错误,显示 "哎呀,没有测试可以运行。"

从这里,当我点击"查看所有测试"按钮,它带我到跑步工具。在那里,我看到有迹象表明事情仍然在后台运行。我试着等了10多分钟但是没有任何反应,直到我点击"停止"动作。

我该如何调试?我可以通过任何日志等查看发生了什么吗?

我的网站甚至可能出现问题,但没有任何日志信息,我无法继续进行。任何帮助表示赞赏。

为了提供更多背景信息,我不认为这是一个基于超时的问题,就好像是这样,cypress确实向我报告了这一点并停止了。然后我增加了超时。

我的规范文件

describe('My first test', function() {
    it('Visits  home page', function() {
        cy.visit('https://mywebsite.com:5800', {timeout: 400000}, {pageLoadTimeout: 400000}, {defaultCommandTimeout: 400000})


        cy.get('#USERNAME').type('myusername')
        cy.get('#PASSWORD').type('mypassword')

        cy.get('#loginbutton').click()

        cy.get('#SOMELEMENT_WHERE_I_TYPE_A_UNIQUE_NUMBER').type('8056')
        cy.get('#loginbutton').click()

        cy.get('#loginbutton').click()

    })
})

感谢。

2 个答案:

答案 0 :(得分:1)

如果您在最初打开赛普拉斯时从终端运行DEBUG=cypress:* cypress open,那么在您运行测试时会打印更多调试日志信息。

此外,search the issues对项目来说,看看是否还有其他人发生过这种情况,这总是一个好主意。

由于某种原因,赛普拉斯自动化进入了一种认为你没有spec文件的状态。赛普拉斯所做的一切都是determine this is to see if there is a location.hash defined on the main window - >通常说https://localhost:2020/__/#tests/integration/my_spec.js的地方。

可能这是由于应用程序中的安全机制阻止您的应用程序在iframe中运行(这是赛普拉斯运行所有受测试应用程序的方式)。也许在您的应用程序代码中,它类似于:

if (top !== self) {
  top.location.href = self.location.href;
} 

您可以在测试时禁用这些检查,或者在赛普拉斯中,您可以添加到测试文件(或支持文件以使其适用于每个测试文件):

Cypress.on('window:before:load', (win) => {
  Object.defineProperty(win, 'self', {
    get: () => {
      return window.top
    }
  })
})

答案 1 :(得分:0)

我有同样的问题。通常,这与页面移出父页面有关,可以通过调用属性并将其更改为当前页面来解决。

fit-content