(sto testando con goniometro e Jasmine, e ho incluso anche image-diff e linfonodo tela nel mio progetto.)Confronta immagini da file e immagine creata dalla tela
ho bisogno di confrontare due immagini e fare certo che sono uguali Uno è salvato nella mia struttura di file e l'altro è creato dalla tela. Sono in grado di convertire la tela in immagine e anche caricare l'immagine dal file. Ecco quello che ho:
var imagediff = require('../node_modules/js-imagediff/js/imagediff.js');
var Canvas = require('canvas');
var fs = require('fs');
var path = require('path');
beforeEach(function() {
jasmine.addMatchers(imagediff.jasmine);
});
function loadImage (url, callback) {
var image;
fs.readFile(url, function (error, data) {
if (error) throw error;
image = new Canvas.Image();
image.onload = function() {
callback(image);
};
image.src = data;
});
return image;
}
it('should work', function() {
//executeScript is needed to get the canvas element and convert it
browser.driver.executeScript(function() {
var can = document.querySelector('#workspace-canvas');
var ctx = can.getContext("2d");
var data = can.toDataURL("image/png");
var img = new Image();
img.src = data;
//this code below shows that the image was converted properly
// var link = document.createElement('a');
// link.href = img.src;
// link.download = 'image1.png';
// link.click();
return data;
}).then(function(result) {
newData = result;
var imgPath = path.join(__dirname, './images/image1.png');
loadImage(imgPath, function(image) {
console.log('loadImage');
var canvas = new Canvas();
canvas.width = image.width;
canvas.height = image.height;
var ctx = canvas.getContext("2d");
ctx.drawImage(image, 0, 0);
var data = canvas.toDataURL("image/png");
oldData = data;
//TODO: do a comparison here!
done();
});
});
mia domanda è come faccio a confrontare le due immagini e assicurarsi che siano tutti uguali? Ho pensato che confrontare l'URI dei dati avrebbe funzionato, ma non è così. Mi piacerebbe davvero usare image-diff, ma non sono sicuro di come farlo. Mi aiuti per favore!
Date un'occhiata a [ 'browser.executeScript'] (http://www.protractortest.org/#/api?view=webdriver.WebDriver.prototype.executeScript), che permette di iniettare ed eseguire su misura codice su una pagina sotto test e restituire i valori da lì a un test. –