Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

420
Views
Cypress: espere todas las solicitudes al punto final /graphql

Estoy tratando de agregar una wait a todas las solicitudes a /graphql . Me gustaría que las solicitudes esperaran automáticamente. Sin embargo, recibo el siguiente error:

Cypress detectó que usted devolvió una promesa de un comando al mismo tiempo que invocaba uno o más comandos cy en esa promesa.

He intentado varias formas de agregarlo (tenga en cuenta que estoy configurando el alias como se menciona aquí ):

 Before(() => { cy.intercept('POST', '**/graphql', handleGraphql); }); function handleGraphql(req) { req.alias = `gql${req.headers['query-id']}Query`; // The different ways that I have tried: setTimeout(() => cy.wait(`@gql${req.headers['query-id']}Query`), 100); new Cypress.Promise(() => cy.wait(`@gql${req.headers['query-id']}Query`)) }

Entonces también probé esta función:

 function handleGraphql(req) { req.alias = `gql${req.headers['query-id']}Query`; cy.wait(`@gql${req.headers['query-id']}Query`); }

pero luego me sale el siguiente error:

Se agotó el tiempo de reintento después de 5000 ms: cy.wait() se agotó el tiempo de espera de 5000 ms para la primera solicitud a la ruta: gql9b93b362-d715-4aae-928b-71b406381350Query. Nunca se produjo ninguna solicitud.

Descubrí que puede agregar algunos eventos al req , pero ninguno de ellos parece hacer lo que quiero, ya que recibo returned a promise desde arriba.

 function handleGraphql(req) { req.alias = `@gql${req.headers['query-id']}Query`; req.continue(() => { cy.wait(`@gql${req.headers['query-id']}Query`); }); }
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Cypress detectó que devolviste una promesa de un comando... se refiere al hecho de que estás esperando el alias de intercepción dentro del controlador.

Dado que el controlador es un código de respuesta de evento, el patrón habitual es

 cy.intercept(...) // set up the listener cy.visit(...) // trigger the events (might also be from UI evnt like click()) cy.wait('@my-alias')

Pero esto significa que los alias deben conocerse con anticipación.

Lo más simple es si puedes encontrar todas las identificaciones,

 const aliases = ['1', '2', '3'].map(id => `@gql${id}Query`) const handleGraphql = (req) => req.alias = `gql${req.headers['query-id']}Query`; before(() => { cy.intercept('POST', '**/graphql', handleGraphql) // set up the listener }) it('waits for all ids', () => { cy.visit(...) // trigger the events (might also be from UI event like click()) cy.wait(aliases) }

Si no puede ser específico acerca de las identificaciones, debe esperar un tiempo arbitrario para que se realicen todas las solicitudes (lo cual es inestable si la espera es demasiado corta o molesto si la espera es demasiado larga) o afirmar un elemento o otro artefacto DOM que solo aparece después de que finalizan todas las solicitudes.


Se generan sus identificaciones, así que no las use en el alias. Use un alias "genérico" y espere el conteo requerido

 const calls = 4 before(() => { cy.intercept('POST', '**/graphql').as('gqlQuery') }) it('waits for all ids', () => { cy.visit(...) // trigger the events (might also be from UI event like click()) cy.wait(`@gqlQuery.${calls}`) }

Hay algunas advertencias sobre la sintaxis de alias.n sin documentar, pero podría sub-en

 Cypress._.times(calls => cy.wait('@gqlQuery')
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!