Cypress立即对返回句柄的函数执行断言

Cypress立即对返回句柄的函数执行断言,cypress,e2e-testing,Cypress,E2e Testing,Cypress立即执行expect断言。根本不需要等待视图打开(需要500毫秒以上)。。还有一个cy.wait(1000)或cy.get('.modalbutton')。应该('be.visible')(这将使句柄.exists()变得真实)也被完全忽略,我无法阻止它立即断言 it('Open and close split view', () => { cy.window().then(win => { const handle = win.Luigi.navigati

Cypress立即执行expect断言。根本不需要等待视图打开(需要500毫秒以上)。。还有一个
cy.wait(1000)
cy.get('.modalbutton')。应该('be.visible')(这将使
句柄.exists()
变得真实)也被完全忽略,我无法阻止它立即断言

it('Open and close split view', () => {
  cy.window().then(win => {
    const handle = win.Luigi.navigation().openAsSplitView('/ext', {title: 'Preserved Split View' });
    // using cy.wait(N) or cy.get('#opened-splitview').should('be.visible'); are being ignored
    cy.wait(1000);
    // expectations are not working since they are executed immediately
    cy.expect(handle.exists()).to.be.true;
    handle.close();
    cy.expect(handle.exists()).to.be.false;
  });
});
另一方面,这一点很有效:

cy.window().then(win => {
  const handle = win.Luigi.navigation().openAsSplitView('/ext', { title: 'Preserved Split View', collapsed: false});
  handle.collapse();
  cy.expect(handle.isCollapsed()).to.be.true;
});
以前,win…openAsSplitView没有保存到Luigi.navigation()api上的handle常量、close和extra命令中,我对其进行了重构,以与客户端api保持一致

所以我觉得这可能是一个错误与柏树赢得拦截。或者我只是用错了

句柄是非异步的,因此可以立即使用。也许重构来返回一个承诺,一旦视图真正打开就会解决,这也会有所帮助

编辑: 这是一种赛普拉斯无法处理的种族状况。我已经用
setTimeout
解决了这个问题

setTimeout(() => {
  handle.close();
  setTimeout(() => {
    cy.expect(handle.exists()).to.be.false;
    cy.get('#splitViewContainer').should('not.be.visible');
    done();
  }, 50);
}, 50);

您是否正在尝试使注释输出行正常工作<代码>cy.get('#opened splitview')。应该('be.visible')调用
openAsSplitView
时是否有任何请求发生?您可以等待这些任务完成,以帮助协调工作。还可以尝试将超时传递到
cy.get
选项否,将立即执行
expect
,而无需等待任何操作(甚至不包括
cy.wait(1e3)
。是的,有一个请求正在发生,即在iframe中加载视图。