Versión de ciprés: 9.5.0
Versión cromada: 98
He estado tratando de usar cy.selectFile() para cargar un archivo en la prueba de Cypress. El siguiente código se ve como tal:
cy.get('#new-project-photo', { force: true }).selectFile({ contents: 'cypress/fixtures/media/003_StreetView.jpg', fileName: 'image01.jpg', mimeType: 'image/jpeg', }, { force: true });El HTML de la entrada de archivo se ve así:
<input multiple="multiple" id="new-project-photo" data-file-type="image" data-max-size="10485760" data-callback="true" type="file" name="file" data-url="https://api.cloudinary.com/v1_1/pxd/auto/upload" data-form-data="{"allowed_formats":"jpg,gif,png,jpeg","callback":"https://kf.pxs-staging.com/cloudinary_cors.html","timestamp":1645550617,"signature":"47dd768ebfad68ebce2c8c5bc9b1da08777f69f9","api_key":"421553125867598"}" data-cloudinary-field="photos[image]" class="cloudinary-fileupload"> El código cuando se ejecuta la prueba a través de FF se ejecuta como se esperaba y el archivo se carga con un 200 en la solicitud posterior. Sin embargo, al ejecutar la prueba a través de Chrome. Recibo un 400 con un error de {"error":{"message":"Missing required parameter - file"}} (Procedente del servidor). La carga funciona como se esperaba cuando se realiza manualmente en Chrome.
La URL a la que envía el POST es un dominio diferente a la URL base del sitio probado. Podria ser esta la causa? También tengo curiosidad por tener esto en la configuración: "chromeWebSecurity": false, que es necesario para cargar el sitio correctamente en Chrome.
También intenté envolver la imagen en un accesorio primero, el mismo problema.
¿Alguien sabe qué podría estar haciendo mal y por qué solo parece funcionar en FF?
Dado que está seleccionando la entrada con force: true (lo que significa que el elemento de entrada real está oculto a la vista), una posibilidad es que tal vez la entrada a la que se hace referencia no tenga los requisitos establecidos para que selectFile éxito. Quizás en Firefox, el tipo de entrada se deduce del contexto, mientras que en Chrome debería configurarse explícitamente.
¿Ha verificado que el elemento #new-project-photo pasado a selectFile cumple este requisito específicamente (de los documentos de Cypress vinculados anteriormente)?
un único elemento de entrada con type="file", o un elemento de etiqueta adjunto a uno
Si pudiera publicar el elemento y su contexto, eso podría ayudar a recrear aún más este escenario y permitir la prueba. En este momento, a partir de la información disponible, no es posible recrear este problema de manera confiable.
Para cualquiera que se encuentre con este problema, asegúrese de tener la última versión. A partir de hoy (v9.5.1) parece haber solucionado el problema que estaba teniendo. Está agregando imágenes ahora sin problemas. Chrome también está en la versión 99
Gracias a todos