A continuación se muestra el código que estoy usando para cargar el archivo en el sistema desde el corredor de prueba.
it.only('Check the item upload file validations', () => { cy.get('[icon="fa fa-cloud-upload"]').click() cy.get('[id="itemListController"]',{force:true}).attachFile('itemfile.xlsx') cy.get('.p-float-label > [type="submit"]').click() // cy.pause() })Cuando se ejecuta el código Cypress, muestra una validación interna del sistema como si el archivo no se adjuntara a la página web para cargarlo, aunque el nombre del archivo se muestra claramente en el campo de entrada.
A continuación se muestra el elemento en el que estoy tratando de cargar el archivo antes de hacer clic en el botón Enviar
<input _ngcontent-wul-c516="" id="itemListController" formcontrolname="itemListController" accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" type="file" hidden="" class="ng-untouched ng-pristine ng-invalid">Me doy cuenta en HTML id="fileText" y formcontrolname="itemListController" pero tienes selector [id="itemListController"] , así que tal vez
cy.get('[formcontrolname="itemListController"]').attachFile('itemfile.xlsx') //or cy.get('[id="fileText"]').attachFile('itemfile.xlsx') No hay una opción de force en cy.get() , por lo que puede eliminarla.
Pero no es toda la historia, terminas con el nombre del archivo en la entrada.
Noté que ng-untouched está presente, lo que puede estar causando el problema de validación. Intenta agregar un desenfoque
@property {boolean} $untouched True si el control aún no ha perdido el foco.
cy.get('[id="fileText"]').attachFile('itemfile.xlsx').blur()Pude realizar la carga del archivo usando el siguiente método de ciprés.
Documentación de Cypress sobre el método .selectFile()
it.only('Check the item upload file validations', () => { cy.get('[icon="fa fa-cloud-upload"]').click() cy.get('[id="itemListController"]').selectFile("cypress/fixtures/itemfile.xlsx",{force: true}) cy.get('.p-float-label > [type="submit"]').click() })