Не удается загрузить изображение в формате png (логотип) с помощью cypress

#typescript #cypress

#typescript #cypress

Вопрос:

Я пытаюсь загрузить файл png с помощью cypress, и это то, что я пробовал до сих пор

 Cypress.Commands.add('upload_file', (fileName, selector) => {
  return cy.get(selector).then(subject => {
    return cy.fixture(fileName, 'base64')
      .then(Cypress.Blob.base64StringToBlob)
      .then(blob => {
        const el = subject[0]
        const testFile = new File([blob], fileName, { type: 'image/png' })
        const dataTransfer = new DataTransfer()
        dataTransfer.items.add(testFile)
        el.files = dataTransfer.files
        return subject;
      })
  })
})
 

вызываю это в моем тесте, как показано ниже:

  cy.upload_file("logo.png", ".jss378");
 

он не выдает никаких ошибок, но и ничего не загружает. обратите внимание, что селектор (.jss378) является динамическим, поэтому я хочу использовать что-то, что не является динамическим

Вот мой HTML-код: введите описание изображения здесь

Ответ №1:

Заставил его работать с помощью плагина загрузки cypress

вот шаги:

1) добавление следующего в command.js:

 import 'cypress-file-upload';
 

2) и используя это в тесте:

 // uploading the brand logo
    const fileName = 'logo.png';

cy.fixture(fileName).then(fileContent => {
  cy.get('[title="Logo"]').upload(
    { fileContent, fileName, mimeType: 'image/png' },
    { subjectType: 'drag-n-drop' },
  );
});
 

Документация:
https://docs.cypress.io/plugins/index.html#content