I know Cypress can print debug information in the browser console, but can it read data from console during tests?
I'm working on a three.js powered app, so I can't properly test the 3d aspects of the app, but I would like to listen for javascript errors in the browser console.
Is it at all possible?
You can intercept console messages with Cypress cy.spy(), but if you want to go further into the data - I haven't seen any way to do that.
The docs could use a bit of a re-jig, so here's how I'm setting up the spy.
let spy;
Cypress.on('window:before:load', (win) => {
spy = cy.spy(win.console, "error") // can be other methods - log, warn, etc
})
it('Doing something that should not cause a console error', () => {
// Run test steps here that may cause a console error
cy.wait(100).then(x => {
expect(spy).not.to.be.called
})
// or perhaps this, to auto-retry (have not tried this syntax)
cy.wrap({}).should(() => {
expect(spy).not.to.be.called
})
// The docs imply you can just do this
expect(spy).not.to.be.called
// ..but that line may run before any other cy command above finish
// so I'd stick with using cy.wrap({}).then(...) to put it in the command chain
// The spy call count is reset after each test
})
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With