Cypress игнорировать последнюю задачу, выполняющуюся без ожидания - PullRequest
0 голосов
/ 30 января 2020

Итак, я пишу TAF, используя Cypress. Мне нужно продолжить несколько изображений, которые хранятся в пользовательском интерфейсе. В моем случае есть теги canvas, которые я привожу из DOM.

Cypress может преобразовать элемент canvas JQuery<HTMLElement> в тип Blob, а затем в base64 строку. После этого я должен преобразовать эту строку в .png изображение и сохранить в заданную папку c.

Сценарий Cypress:

cy.get('canvas.leaflet-tile.leaflet-tile-loaded')
  .each(canvas => {
    const coordinates = extract(canvas.attr('style'));
    Cypress.Blob.canvasToBlob(canvas.get(0))
      .then(blob => Cypress.Blob.blobToDataURL(blob))
      .then(base64str => {
        cy.task('toPng', {
          context: base64str,
          destPath: 'cypress/snapshots/temp',
          imgName: coordinates,
        });
      });
  });

Итак, я также создаю задачу для преобразования base64 строки в .png изображение следующим образом:

const fs = require('fs');

module.exports = (on) => {
  on('task', {
    toPng(obj) {
      const img = obj.context.split(',')[1];
      const filePath = `${obj.destPath}/${obj.imgName}.png`;
      fs.writeFileSync(filePath, img, { encoding: 'base64' });
      return null;
    },
  });
};

И когда Я запускаю его в рамках некоторой спецификации c, это не работает для меня. Но если после each цепочка команд wait команда в одну секунду:

cy.get(css_locator)
  .each(some_code_to_proceed)
  .wait(1000);

будет работать нормально и задача будет выполнена ...

Есть идеи, почему она работает в этом путь и как это исправить ..?

...