I need to verify a given error message appears in the dev console when a given attribute is missing from an initialization JSON.
So far, I have set up a spy to watch over the win.console.error:
const onBeforeLoad = win => {
cy.spy(win.console, 'error').as('consoleError');
}
And in my test, the assertion:
cy.get('@consoleError').should('have.been.calledWith', 'aGivenErrorMsg');
The test would fail as the actual error message I could see from Cypress log has additional texts which is appended by Cypress, the whole error text message is:
aGivenErrorMsg at consoleError [as error] (https://test.com/__cypress/runner/cypress_runner.js:123270:26)
And this additional appended text would make my test fail.
The most efficient way to make my test work is to somehow verify that the error message generated by Cypress contains the error message I am interested in.
How do I do it?
Try using calledWithMatch
instead of calledWith
.
cy.window().then(win => {
cy.spy(win.console, 'error').as('consoleError')
win.console.error('Error message with additional texts')
// cy.get('@consoleError').should('have.been.calledWith', 'Error message') // failing
cy.get('@consoleError').should('have.been.calledWithMatch', 'Error message') // passing
})
For reference: