UNPKG

e2ed

Version:

E2E testing framework over Playwright

30 lines (29 loc) 1.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getPngDimensions = void 0; const decoder = new TextDecoder(); const dimensionsStartPositionIfFried = 32; const dimensionsStartRegularPosition = 16; const getView = (screenshot, offset) => new DataView(screenshot.buffer, screenshot.byteOffset + offset); const getUtf8String = (screenshot, start = 0, end = screenshot.length) => decoder.decode(screenshot.slice(start, end)); const heightPositionOffset = 4; const readUint32 = (screenshot, offset = 0) => getView(screenshot, offset).getUint32(0, false); const pngFriedChunkName = 'CgBI'; const pngFriedStartPosition = 12; /** * Get dimensions (height and width) of PNG image (by `Uint8Array` buffer with image). */ const getPngDimensions = (screenshot) => { const isFried = getUtf8String(screenshot, pngFriedStartPosition, pngFriedStartPosition + pngFriedChunkName.length) === pngFriedChunkName; if (isFried) { return { height: readUint32(screenshot, dimensionsStartPositionIfFried + heightPositionOffset), width: readUint32(screenshot, dimensionsStartPositionIfFried), }; } return { height: readUint32(screenshot, dimensionsStartRegularPosition + heightPositionOffset), width: readUint32(screenshot, dimensionsStartRegularPosition), }; }; exports.getPngDimensions = getPngDimensions;