careful-terabyte-63440
05/25/2023, 8:07 AMcy.intercept to intercept a route that contains some query parameters, but it is not behaving as I am expected. It is intercepting all the routes defined by pathname, but not query.
I experience the issue with the following scenario:
I have the following url which I am intercepting
- /json-api/demo/tasks
This url can have 2 different query parameters:
- filter[status]: open
- filter[completed]: true
I want to intercept all the route for /json-api/demo/tasks?filter[status]=open (/json-api/demo/tasks?filter%5Bstatus%5D=open)
I intercept the route using the following options 👇
cy.intercept({
pathname: '/json-api/demo/tasks',
query: { 'filter[status]': 'open' },
}).as('openTasks');
Looking at the E2E test and the Cypress console, the alias @openTasks gets attached to the following URLs
- /json-api/demo/tasks?filter%5Bstatus%5D=open
- /json-api/demo/tasks?filter%5Bcompleted%5D=true
The problem with this behavior is that when I invoke cy.wait(@openTasks), it waits for the wrong request to complete before continuing
Replacing the pathname and query with path seems to work, the following options aliases routes properly
cy.intercept({
path: /\/json-api\/demo\/tasks\?.*filter%5Bstatus%5D=open/,
}).as('openTasks');
I did find a Github issue that resembles the problem I run into (https://github.com/cypress-io/cypress/issues/16686), but it is a ~so-so quality ticket.
I would like to be able to intercept the route using pathname and query, where am I messing up? 😅
Thank you 🙏