When testing with cypress.io, is there a good way to assert that no XHR requests were made to a given URL?
I want to assert that a new foo is added when the "Save" button is clicked, but not when the "Cancel" button is clicked.
Something like this:
cy.route('POST', '/foos').as('postFoo');
cy.get('.cancel-button').click();
cy.route('@postFoo').should('not.have.been.called'); // (magic imaginary syntax!)
I've tried setting up the cy.route with an onRequest callback that does an assert.fail, but that's not failing the test when the the URL is called.
For now, I'm catching my (intentional) "no request occurred" errors like this:
cy.on('fail', (err, runnable) => {
expect(err.message).to.include('No request ever occurred.');
return false;
});
cy.wait('@postFoo', { timeout: 0 }).then(xhr => {
throw new Error('Unexpected API call.');
});
...which seems to be working, but it certainly doesn't feel very "cypress-y".