Итак, я пишу 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);
будет работать нормально и задача будет выполнена ...
Есть идеи, почему она работает в этом путь и как это исправить ..?