簡體   English   中英

賽普拉斯 - 如何正確檢測頁面中的 JS 錯誤

[英]Cypress - how to properly detect for JS errors in a page

我正在編寫一個帶有 N 個它的規范文件,其中每個它將訪問應用程序的特定頁面,並將返回應用程序中錯誤/警告的數量。

我也在這里發布過: https://github.com/cypress-io/cypress/issues/4808

提供的解決方案似乎不起作用:

it('should spy window.error', () => {
  cy.visit('https://www.spiegel.de/', {
    onBeforeLoad(win) {
      cy.spy(win.console, 'error').as('spyWinConsoleError');
      cy.spy(win.console, 'warn').as('spyWinConsoleWarn');
    },
  })
  console.error('questo e errore')
  cy.get('@spyWinConsoleError').should('be.calledOnce');
});

任何想法?

有幾點需要注意,

  • 賽普拉斯測試中有兩個 window 對象,一個是運行測試的對象,一個是運行應用程序的對象。您對console.error('questo e errore')的調用是第一個,但您的間諜在第二個。

  • 測試代碼比 Cypress 命令運行得更快,因此console.error('questo e errore')cy.visit()完成之前運行。

這些例子都有效,

監視跑步者 window 控制台

it('should spy on RUNNER window.error', () => {
  cy.spy(window.console, 'error').as('spyWinConsoleError');
  console.error('questo e errore')
  cy.get('@spyWinConsoleError').should('be.calledOnce');
});

監視應用程序 window 控制台

it('should spy on APP window.error', () => {
  const win = cy.state('window')
  cy.spy(win.console, 'error').as('spyWinConsoleError');
  
  win.console.error('questo e errore')
  cy.get('@spyWinConsoleError').should('be.calledOnce');
});

捕獲實際的應用程序錯誤

it('should spy window.error', () => {
  cy.visit('../app/spy-on-win-error.html', {
    onBeforeLoad(win) {
      cy.spy(win.console, 'error').as('spyWinConsoleError');
    },
  })
  cy.get('@spyWinConsoleError').should('be.calledWith', 'from app');
});
<body>
  <script>
    setTimeout(() => {
      console.error('from app')
    }, 1000)
  </script>
</body>

等待 spiegel.de 加載

it('should spy window.error', () => {

  cy.visit('https://www.spiegel.de/', {
    onBeforeLoad(win) {
      cy.spy(win.console, 'error').as('spyWinConsoleError');
      win.console.error("questo è l'errore due");      // call here after spy is set
    },
  })

  cy.get('@spyWinConsoleError')
    .should('be.calledOnce');
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM