e2ed
Version:
E2E testing framework over Playwright
30 lines (29 loc) • 1.4 kB
JavaScript
;
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;