Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

108
Vistas
El fondo de la extensión Cypress deja de funcionar entre especificaciones

Tengo un grupo de tres pruebas e2e que estoy convirtiendo de Cypress 8.7 a 10.3 con el objetivo final de poder aprovechar las pruebas de componentes de Cypress.

Todas las pruebas funcionan como un grupo y como especificaciones individuales (a través --spec <path> ) en 8.7.

Después de convertir a 10.3, tengo una especificación que llama a un comando común que hace clic en un botón (que la extensión agrega a una página), que activa su oyente y llama a chrome.runtime.sendMessage con un mensaje para abrir la interfaz de usuario de la extensión. En este caso particular, la secuencia de comandos de contenido está manejando su propio mensaje (que es técnicamente redundante), pero dado que hay otros casos que se comunican con la secuencia de comandos de fondo, usamos la misma llamada a sendMessage para mantener la coherencia (esto funciona siempre en el Chrome real). ambiente). Para facilitar esto, la secuencia de comandos en segundo plano tiene un oyente que devuelve el mensaje a la pestaña de envío para los mensajes que no maneja directamente.

  • Especificaciones 1: siempre funciona
  • Spec 2: siempre funciona cuando se ejecuta solo con --spec y nunca funciona cuando todas las pruebas se ejecutan juntas
  • Especificación 3: igual que la especificación 2

No creo que sea una condición de carrera, ya que ninguna cantidad de cy.wait() ha tenido éxito. Puedo verificar que la parte del script de contenido que registra el evento con chrome.runtime.onMessage.addListener se ejecuta al comienzo de cada especificación (tanto sola como en conjunto). Sin embargo, nunca se ejecuta al hacer clic en el botón (incluso cuando está en pausa y haciendo clic manualmente).

Tengo la configuración del manifiesto de extensión para que las pruebas coincidan solo con las URL visitadas por cypress y las tengo combinadas con all_frames: true , lo que da como resultado que el botón de extensión solo se muestre en la ventana de contenido y no en la ventana general de Cypress Chrome. El document de registro tanto en el registro del oyente como en el oyente de clics registra el mismo documento, por lo que no creo que sea un problema entre marcos.

Según el registro disponible del script en segundo plano, mi conclusión es que efectivamente deja de ejecutarse (los puntos de interrupción al comienzo de su controlador de mensajes ya no se activan). Sin embargo, no hay nada que indique por qué podría ser eso.

Si coloco todas las pruebas de esas otras especificaciones en una especificación, esa llamada funciona como se esperaba (aunque las pruebas aún fallan, presumiblemente debido a algún otro estado que se borra entre especificaciones). ¿Hay algo que pueda hacer para averiguar por qué la secuencia de comandos en segundo plano deja de ejecutarse entre especificaciones en Cypress 10.3?

Una nota final es que hay algunos errores no detectados e ignorados en el script de fondo. Estoy trabajando para limpiarlos, pero estas pruebas siempre han funcionado en el pasado a pesar de eso (y funcionan cuando se ejecuta cada especificación sola), así que estoy perdido.

about 4 years ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda