La funcionalidad es: después de ingresar algunos valores en la interfaz de usuario, tendré una opción de descarga de imágenes y, una vez descargada, necesito comparar esa imagen PNG con mi imagen base que ya tengo en mi cypress/fixtures/base/<nameOfTheFile.png >.
Estoy tratando de hacer una función de utilidad en Cypress para comparar dos imágenes PNG, pero tengo problemas uno tras otro para todos mis enfoques.
Utils.js (en la carpeta de integración)
const fs = require('fs'); export const comparePNGImages = (fileName) => { expect(fileName).to.be.a('string') const img1 = fs.readFileSync("./cypress/fixtures/baseImage/" + fileName); const img2 = fs.readFileSync("./cypress/fixtures/currentImage/" + fileName); expect(img1).to.matchImage(img2) return null; }y en prueba ,
import { downloadPng, comparePNGImages } from './utils' ......... var imageName = "SailingDirection.png"; //steps to input, download the image file, keep in fixtures folder //..... comparePNGImages(imageName) .........Error en TestRunner:
fs.readFileSync no es una función
Nota:
Intenté cambiar la declaración de importación a lo siguiente:
import fs from 'fs'; import { fs } from 'fs';pero ninguno funcionó.
Además, lea que fs no tendrá acceso al sistema de archivos local pero, sorprendentemente, las mismas cosas de fs funcionan en el mismo proyecto de cypress que se encuentra en otros archivos plugins/index.js
const fs = require('fs'); on('task', { validateTotalFileCount(folderName, expectedFileCount) { console.log("#### getTotalFileCount #### "); const length = fs.readdirSync(folderName).length; if (length == expectedFileCount) { throw new Error(`#### List of files not matched with expected count`) } return null; } })Cualquier ayuda sobre esto para solucionarlo sería muy apreciada.