testplane 8.30.1 → 8.30.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "testplane",
3
- "version": "8.30.1",
3
+ "version": "8.30.2",
4
4
  "description": "Tests framework based on mocha and wdio",
5
5
  "main": "build/src/index.js",
6
6
  "files": [
@@ -67,6 +67,7 @@
67
67
  "@babel/code-frame": "7.24.2",
68
68
  "@gemini-testing/commander": "2.15.4",
69
69
  "@jspm/core": "2.0.1",
70
+ "@jsquash/png": "3.1.1",
70
71
  "@puppeteer/browsers": "2.7.1",
71
72
  "@rrweb/record": "2.0.0-alpha.18",
72
73
  "@testplane/devtools": "8.32.3",
@@ -74,6 +75,7 @@
74
75
  "@testplane/wdio-utils": "9.5.3",
75
76
  "@testplane/webdriverio": "9.5.21",
76
77
  "@vitest/spy": "2.1.4",
78
+ "buffer-crc32": "1.0.0",
77
79
  "chalk": "2.4.2",
78
80
  "clear-require": "1.0.1",
79
81
  "cli-progress": "3.12.0",
@@ -92,7 +94,7 @@
92
94
  "load-esm": "1.0.2",
93
95
  "local-pkg": "0.4.3",
94
96
  "lodash": "4.17.21",
95
- "looks-same": "9.0.1",
97
+ "looks-same": "10.0.0",
96
98
  "micromatch": "4.0.5",
97
99
  "mocha": "10.2.0",
98
100
  "pirates": "4.0.7",
@@ -100,7 +102,6 @@
100
102
  "png-validator": "1.1.0",
101
103
  "recast": "0.23.6",
102
104
  "resolve.exports": "2.0.2",
103
- "sharp": "0.32.6",
104
105
  "sizzle": "2.3.6",
105
106
  "socket.io": "4.7.5",
106
107
  "socket.io-client": "4.7.5",
@@ -138,7 +139,6 @@
138
139
  "@types/mocha": "10.0.1",
139
140
  "@types/node": "18.19.3",
140
141
  "@types/proxyquire": "1.3.28",
141
- "@types/sharp": "0.31.1",
142
142
  "@types/sinon": "17.0.1",
143
143
  "@types/sinonjs__fake-timers": "8.1.2",
144
144
  "@types/strftime": "0.9.8",
@@ -87,12 +87,8 @@ async function findMarkerInRow(row, image, searchDirection) {
87
87
  return -1;
88
88
  }
89
89
  async function compare_(x) {
90
- const pixel = await image.getRGBA(x, row);
91
- const color = pickRGB(pixel);
90
+ const color = await image.getRGB(x, row);
92
91
  return looks_same_1.default.colors(color, searchColor);
93
92
  }
94
93
  }
95
- function pickRGB(rgba) {
96
- return { R: rgba.r, G: rgba.g, B: rgba.b };
97
- }
98
94
  //# sourceMappingURL=calibrator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"calibrator.js","sourceRoot":"","sources":["../../../src/browser/calibrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"calibrator.js","sourceRoot":"","sources":["../../../src/browser/calibrator.ts"],"names":[],"mappings":"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"}
@@ -21,17 +21,16 @@ module.exports = class Viewport {
21
21
  for (const area of this._ignoreAreas) {
22
22
  const imageClearArea = this._getIntersection(area, imageArea);
23
23
  if (imageClearArea !== null) {
24
- await image.addClear(this._shiftArea(imageClearArea, { left: -imageArea.left, top: -imageArea.top }));
24
+ await image.clearArea(this._shiftArea(imageClearArea, { left: -imageArea.left, top: -imageArea.top }));
25
25
  }
26
26
  }
27
- image.applyClear();
28
27
  }
29
28
  async handleImage(image, area = {}) {
30
29
  const { width, height } = await image.getSize();
31
30
  _.defaults(area, { left: 0, top: 0, width, height });
32
31
  const capturedArea = this._transformToCaptureArea(area);
33
- await this.ignoreAreas(image, this._shiftArea(capturedArea, { left: -area.left, top: -area.top }));
34
32
  await image.crop(this._sanitize(this._transformToViewportOrigin(capturedArea)));
33
+ await this.ignoreAreas(image, this._shiftArea(capturedArea, { left: -area.left, top: -area.top }));
35
34
  this._summaryHeight += capturedArea.height;
36
35
  }
37
36
  async composite() {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/browser/screen-shooter/viewport/index.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/browser/screen-shooter/viewport/index.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /// <reference types="node" />
2
+ export declare const RGBA_CHANNELS = 4;
3
+ export declare const BITS_IN_BYTE = 8;
4
+ export declare const PNG_WIDTH_OFFSET = 16;
5
+ export declare const PNG_HEIGHT_OFFSET = 20;
6
+ export declare const PNG_SIGNATURE: Buffer;
7
+ export declare const PNG_BIT_DEPTH_EIGHT_BIT = 8;
8
+ export declare const PNG_COLOR_TYPE_RGBA = 6;
9
+ export declare const PNG_COMPRESSION_DEFLATE = 0;
10
+ export declare const PNG_FILTER_NO_FILTER = 0;
11
+ export declare const PNG_INTERLACE_NO_INTERLACE = 0;
12
+ export declare const PNG_IHDR_LENGTH = 13;
13
+ export declare const PNG_MIN_ASSIST_BYTES = 57;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PNG_MIN_ASSIST_BYTES = exports.PNG_IHDR_LENGTH = exports.PNG_INTERLACE_NO_INTERLACE = exports.PNG_FILTER_NO_FILTER = exports.PNG_COMPRESSION_DEFLATE = exports.PNG_COLOR_TYPE_RGBA = exports.PNG_BIT_DEPTH_EIGHT_BIT = exports.PNG_SIGNATURE = exports.PNG_HEIGHT_OFFSET = exports.PNG_WIDTH_OFFSET = exports.BITS_IN_BYTE = exports.RGBA_CHANNELS = void 0;
4
+ exports.RGBA_CHANNELS = 4;
5
+ exports.BITS_IN_BYTE = 8;
6
+ // https://en.wikipedia.org/wiki/PNG#Critical_chunks
7
+ exports.PNG_WIDTH_OFFSET = 16;
8
+ exports.PNG_HEIGHT_OFFSET = 20;
9
+ exports.PNG_SIGNATURE = Buffer.from([137, 80, 78, 71, 13, 10, 26, 10]);
10
+ exports.PNG_BIT_DEPTH_EIGHT_BIT = 8;
11
+ exports.PNG_COLOR_TYPE_RGBA = 6;
12
+ exports.PNG_COMPRESSION_DEFLATE = 0;
13
+ exports.PNG_FILTER_NO_FILTER = 0;
14
+ exports.PNG_INTERLACE_NO_INTERLACE = 0;
15
+ exports.PNG_IHDR_LENGTH = 13;
16
+ exports.PNG_MIN_ASSIST_BYTES = 57;
17
+ //# sourceMappingURL=png.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"png.js","sourceRoot":"","sources":["../../../src/constants/png.ts"],"names":[],"mappings":";;;AAAa,QAAA,aAAa,GAAG,CAAC,CAAC;AAClB,QAAA,YAAY,GAAG,CAAC,CAAC;AAE9B,oDAAoD;AACvC,QAAA,gBAAgB,GAAG,EAAE,CAAC;AACtB,QAAA,iBAAiB,GAAG,EAAE,CAAC;AAEvB,QAAA,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,QAAA,uBAAuB,GAAG,CAAC,CAAC;AAC5B,QAAA,mBAAmB,GAAG,CAAC,CAAC;AACxB,QAAA,uBAAuB,GAAG,CAAC,CAAC;AAC5B,QAAA,oBAAoB,GAAG,CAAC,CAAC;AACzB,QAAA,0BAA0B,GAAG,CAAC,CAAC;AAC/B,QAAA,eAAe,GAAG,EAAE,CAAC;AACrB,QAAA,oBAAoB,GAAG,EAAE,CAAC"}
@@ -11,11 +11,10 @@ export interface Rect {
11
11
  top: number;
12
12
  left: number;
13
13
  }
14
- export interface RGBA {
15
- r: number;
16
- g: number;
17
- b: number;
18
- a: number;
14
+ export interface RGB {
15
+ R: number;
16
+ G: number;
17
+ B: number;
19
18
  }
20
19
  interface CompareOptions {
21
20
  canHaveCaret?: boolean;
@@ -25,21 +24,22 @@ interface CompareOptions {
25
24
  antialiasingTolerance?: number;
26
25
  }
27
26
  export declare class Image {
28
- private _img;
29
- private _imageData;
30
- private _ignoreData;
27
+ private _imgDataPromise;
28
+ private _imgData;
29
+ private _width;
30
+ private _height;
31
31
  private _composeImages;
32
32
  static create(buffer: Buffer): Image;
33
33
  constructor(buffer: Buffer);
34
+ _getImgData(): Promise<Buffer>;
35
+ _ensureImagesHaveSameWidth(): void;
34
36
  getSize(): Promise<ImageSize>;
35
37
  crop(rect: Rect): Promise<void>;
36
- addJoin(attachedImages: Image[]): void;
38
+ addJoin(attachedImages: this[]): void;
37
39
  applyJoin(): Promise<void>;
38
- addClear({ width, height, left, top }: Rect): Promise<void>;
39
- applyClear(): void;
40
- private _getImageData;
41
- private _forceRefreshImageData;
42
- getRGBA(x: number, y: number): Promise<RGBA>;
40
+ clearArea(rect: Rect): Promise<void>;
41
+ getRGB(x: number, y: number): Promise<RGB>;
42
+ _getPngBuffer(): Promise<Buffer>;
43
43
  save(file: string): Promise<void>;
44
44
  static fromBase64(base64: string): Image;
45
45
  toPngBuffer(opts: {
@@ -4,37 +4,68 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.Image = void 0;
7
- const sharp_1 = __importDefault(require("sharp"));
7
+ const fs_1 = __importDefault(require("fs"));
8
8
  const looks_same_1 = __importDefault(require("looks-same"));
9
+ const load_esm_1 = require("load-esm");
10
+ const eight_bit_rgba_to_png_1 = require("./utils/eight-bit-rgba-to-png");
11
+ const png_1 = require("./constants/png");
12
+ const initJsquashPromise = new Promise(resolve => {
13
+ const wasmLocation = require.resolve("@jsquash/png/codec/pkg/squoosh_png_bg.wasm");
14
+ Promise.all([(0, load_esm_1.loadEsm)("@jsquash/png/decode.js"), fs_1.default.promises.readFile(wasmLocation)])
15
+ .then(([mod, wasmBytes]) => mod.init(wasmBytes))
16
+ .then(resolve);
17
+ });
18
+ const jsquashDecode = (buffer) => {
19
+ return Promise.all([(0, load_esm_1.loadEsm)("@jsquash/png/decode.js"), initJsquashPromise]).then(([mod]) => mod.decode(buffer, { bitDepth: png_1.BITS_IN_BYTE }));
20
+ };
9
21
  class Image {
10
22
  static create(buffer) {
11
23
  return new this(buffer);
12
24
  }
13
25
  constructor(buffer) {
14
- this._imageData = null;
15
- this._ignoreData = [];
16
- // eslint-disable-next-line no-use-before-define
26
+ this._imgData = null;
17
27
  this._composeImages = [];
18
- this._img = (0, sharp_1.default)(buffer);
28
+ this._width = buffer.readUInt32BE(png_1.PNG_WIDTH_OFFSET);
29
+ this._height = buffer.readUInt32BE(png_1.PNG_HEIGHT_OFFSET);
30
+ this._imgDataPromise = jsquashDecode(buffer).then(({ data }) => {
31
+ return Buffer.from(data.buffer, data.byteOffset, data.byteLength);
32
+ });
33
+ }
34
+ async _getImgData() {
35
+ if (this._imgData) {
36
+ return this._imgData;
37
+ }
38
+ return (this._imgData = await this._imgDataPromise);
39
+ }
40
+ _ensureImagesHaveSameWidth() {
41
+ for (const image of this._composeImages) {
42
+ if (image._width !== this._width) {
43
+ throw new Error([
44
+ `It looks like viewport width changed while performing long page screenshot (${this._width}px -> ${image._width}px)`,
45
+ "Please make sure page is fully loaded before making screenshot",
46
+ ].join("\n"));
47
+ }
48
+ }
19
49
  }
20
50
  async getSize() {
21
- const imgSizes = await Promise.all([this, ...this._composeImages].map(img => img._img.metadata()));
22
- return imgSizes.reduce((totalSize, img) => {
23
- return {
24
- width: Math.max(totalSize.width, img.width),
25
- height: totalSize.height + img.height,
26
- };
27
- }, { width: 0, height: 0 });
51
+ this._ensureImagesHaveSameWidth();
52
+ const height = this._composeImages.reduce((acc, img) => acc + img._height, this._height);
53
+ return { height, width: this._width };
28
54
  }
29
55
  async crop(rect) {
30
- const { height, width } = await this._img.metadata();
31
- this._img.extract({
32
- left: rect.left,
33
- top: rect.top,
34
- width: Math.min(width, rect.left + rect.width) - rect.left,
35
- height: Math.min(height, rect.top + rect.height) - rect.top,
36
- });
37
- await this._forceRefreshImageData();
56
+ const imgData = await this._getImgData();
57
+ let bufferPointer = 0;
58
+ let sourceOffset = (rect.top * this._width + rect.left) * png_1.RGBA_CHANNELS;
59
+ const bytesToCopy = Math.min(rect.width, this._width - rect.left) * png_1.RGBA_CHANNELS;
60
+ const bytesToIterate = this._width * png_1.RGBA_CHANNELS;
61
+ for (let i = 0; i < Math.min(rect.height, this._height - rect.top); i++) {
62
+ imgData.copy(imgData, bufferPointer, sourceOffset, sourceOffset + bytesToCopy);
63
+ bufferPointer += bytesToCopy;
64
+ sourceOffset += bytesToIterate;
65
+ }
66
+ this._imgData = Buffer.from(imgData.buffer, 0, bufferPointer);
67
+ this._width = rect.width;
68
+ this._height = rect.height;
38
69
  }
39
70
  addJoin(attachedImages) {
40
71
  this._composeImages = this._composeImages.concat(attachedImages);
@@ -42,89 +73,47 @@ class Image {
42
73
  async applyJoin() {
43
74
  if (!this._composeImages.length)
44
75
  return;
45
- const { height, width } = await this._img.metadata();
46
- const imagesData = await Promise.all(this._composeImages.map(img => img._getImageData()));
47
- const compositeData = [];
48
- let newHeight = height;
49
- for (const { data, info } of imagesData) {
50
- compositeData.push({
51
- input: data,
52
- left: 0,
53
- top: newHeight,
54
- raw: {
55
- width: info.width,
56
- height: info.height,
57
- channels: info.channels,
58
- },
59
- });
60
- newHeight += info.height;
61
- }
62
- this._img.resize({
63
- width,
64
- height: newHeight,
65
- fit: "contain",
66
- position: "top",
67
- });
68
- this._img.composite(compositeData);
69
- }
70
- async addClear({ width, height, left, top }) {
71
- const { channels } = await this._img.metadata();
72
- this._ignoreData.push({
73
- input: {
74
- create: {
75
- channels: channels,
76
- background: { r: 0, g: 0, b: 0, alpha: 1 },
77
- width,
78
- height,
79
- },
80
- },
81
- left,
82
- top,
83
- });
84
- }
85
- applyClear() {
86
- this._img.composite(this._ignoreData);
76
+ this._ensureImagesHaveSameWidth();
77
+ const resultHeight = this._composeImages.reduce((acc, img) => acc + img._height, this._height);
78
+ const imageBuffers = await Promise.all([this, ...this._composeImages].map(img => img._getImgData()));
79
+ this._imgData = Buffer.concat(imageBuffers);
80
+ this._height = resultHeight;
81
+ this._composeImages = [];
87
82
  }
88
- async _getImageData() {
89
- if (!this._imageData) {
90
- this._imageData = await this._img.raw().toBuffer({ resolveWithObject: true });
83
+ async clearArea(rect) {
84
+ const imgData = await this._getImgData();
85
+ let sourceOffset = (rect.top * this._width + rect.left) * png_1.RGBA_CHANNELS;
86
+ const bytesToCopyAmount = Math.min(rect.width, this._width - rect.left) * png_1.RGBA_CHANNELS;
87
+ const bytesToIterate = this._width * png_1.RGBA_CHANNELS;
88
+ const bytesToFill = Buffer.from([0, 0, 0, 255]); // black RGBA
89
+ for (let i = 0; i < Math.min(rect.height, this._height - rect.top); i++) {
90
+ imgData.fill(bytesToFill, sourceOffset, sourceOffset + bytesToCopyAmount);
91
+ sourceOffset += bytesToIterate;
91
92
  }
92
- return this._imageData;
93
- }
94
- async _forceRefreshImageData() {
95
- this._imageData = await this._img.raw().toBuffer({ resolveWithObject: true });
96
- this._img = (0, sharp_1.default)(this._imageData.data, {
97
- raw: {
98
- width: this._imageData.info.width,
99
- height: this._imageData.info.height,
100
- channels: this._imageData.info.channels,
101
- },
102
- });
103
- this._composeImages = [];
104
- this._ignoreData = [];
105
93
  }
106
- async getRGBA(x, y) {
107
- const { data, info } = await this._getImageData();
108
- const idx = (info.width * y + x) * info.channels;
94
+ async getRGB(x, y) {
95
+ const imgData = await this._getImgData();
96
+ const idx = (this._width * y + x) * png_1.RGBA_CHANNELS;
109
97
  return {
110
- r: data[idx],
111
- g: data[idx + 1],
112
- b: data[idx + 2],
113
- a: info.channels === 4 ? data[idx + 3] : 1,
98
+ R: imgData[idx],
99
+ G: imgData[idx + 1],
100
+ B: imgData[idx + 2],
114
101
  };
115
102
  }
103
+ async _getPngBuffer() {
104
+ const imageData = await this._getImgData();
105
+ return (0, eight_bit_rgba_to_png_1.convertRgbaToPng)(imageData, this._width, this._height);
106
+ }
116
107
  async save(file) {
117
- await this._img.png().toFile(file);
108
+ const data = await this._getPngBuffer();
109
+ await fs_1.default.promises.writeFile(file, data);
118
110
  }
119
111
  static fromBase64(base64) {
120
112
  return new this(Buffer.from(base64, "base64"));
121
113
  }
122
114
  async toPngBuffer(opts = { resolveWithObject: true }) {
123
- if (opts.resolveWithObject) {
124
- const imgData = await this._img.png().toBuffer({ resolveWithObject: true });
125
- return { data: imgData.data, size: { height: imgData.info.height, width: imgData.info.width } };
126
- }
127
- return await this._img.png().toBuffer({ resolveWithObject: false });
115
+ const data = await this._getPngBuffer();
116
+ return opts.resolveWithObject ? { data, size: { width: this._width, height: this._height } } : data;
128
117
  }
129
118
  static compare(path1, path2, opts = {}) {
130
119
  const compareOptions = {
@@ -1 +1 @@
1
- {"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/image.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,4DAAmC;AAmCnC,MAAa,KAAK;IAOd,MAAM,CAAC,MAAM,CAAC,MAAc;QACxB,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,YAAY,MAAc;QATlB,eAAU,GAA0B,IAAI,CAAC;QACzC,gBAAW,GAA2B,EAAE,CAAC;QACjD,gDAAgD;QACxC,mBAAc,GAAY,EAAE,CAAC;QAOjC,IAAI,CAAC,IAAI,GAAG,IAAA,eAAK,EAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,OAAO;QACT,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAEnG,OAAO,QAAQ,CAAC,MAAM,CAClB,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE;YACf,OAAO;gBACH,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,KAAM,CAAC;gBAC5C,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,MAAO;aACzC,CAAC;QACN,CAAC,EACD,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAC1B,CAAC;IACN,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAU;QACjB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAErD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACd,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAM,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI;YAC3D,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAO,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG;SAC/D,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;IACxC,CAAC;IAED,OAAO,CAAC,cAAuB;QAC3B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,SAAS;QACX,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM;YAAE,OAAO;QAExC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrD,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QAC1F,MAAM,aAAa,GAAG,EAAE,CAAC;QAEzB,IAAI,SAAS,GAAG,MAAO,CAAC;QAExB,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,UAAU,EAAE,CAAC;YACtC,aAAa,CAAC,IAAI,CAAC;gBACf,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE,CAAC;gBACP,GAAG,EAAE,SAAS;gBACd,GAAG,EAAE;oBACD,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;iBAC1B;aACJ,CAAC,CAAC;YAEH,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC;QAC7B,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YACb,KAAK;YACL,MAAM,EAAE,SAAS;YACjB,GAAG,EAAE,SAAS;YACd,QAAQ,EAAE,KAAK;SAClB,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAQ;QAC7C,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEhD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YAClB,KAAK,EAAE;gBACH,MAAM,EAAE;oBACJ,QAAQ,EAAE,QAAS;oBACnB,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;oBAC1C,KAAK;oBACL,MAAM;iBACT;aACJ;YACD,IAAI;YACJ,GAAG;SACN,CAAC,CAAC;IACP,CAAC;IAED,UAAU;QACN,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC;IAEO,KAAK,CAAC,aAAa;QACvB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAEO,KAAK,CAAC,sBAAsB;QAChC,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9E,IAAI,CAAC,IAAI,GAAG,IAAA,eAAK,EAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;YACpC,GAAG,EAAE;gBACD,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK;gBACjC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM;gBACnC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ;aAC1C;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,CAAS,EAAE,CAAS;QAC9B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAClD,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAEjD,OAAO;YACH,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC;YACZ,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;YAChB,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;YAChB,CAAC,EAAE,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC7C,CAAC;IACN,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAY;QACnB,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,MAAc;QAC5B,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACnD,CAAC;IAID,KAAK,CAAC,WAAW,CACb,OAAwC,EAAE,iBAAiB,EAAE,IAAI,EAAE;QAEnE,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;YAE5E,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;QACpG,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,KAAa,EAAE,KAAa,EAAE,OAAuB,EAAE;QAClE,MAAM,cAAc,GAA+B;YAC/C,WAAW,EAAE,IAAI,CAAC,YAAY;YAC9B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,GAAG,IAAI,CAAC,WAAW;SACtB,CAAC;QACF,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC9C,CAAC;QACD,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,cAAc,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;QACtE,CAAC;QAED,OAAO,IAAA,oBAAS,EAAC,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,cAAc,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,IAAiB;QAC9B,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,SAAS,EAAE,GAAG,IAAI,CAAC;QACzD,MAAM,WAAW,GAAG,EAAE,cAAc,EAAE,GAAG,SAAS,EAAE,CAAC;QAErD,OAAO,oBAAS,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAC7C,CAAC;CACJ;AAlLD,sBAkLC"}
1
+ {"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/image.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ /// <reference types="node" />
2
+ export declare const convertRgbaToPng: (rgba: Buffer, width: number, height: number, compressionLevel?: number) => Buffer;
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.convertRgbaToPng = void 0;
7
+ const buffer_crc32_1 = require("buffer-crc32");
8
+ const node_zlib_1 = __importDefault(require("node:zlib"));
9
+ const png_1 = require("../constants/png");
10
+ const convertRgbaToScanlines = (rgba, width, height) => {
11
+ const stride = width * png_1.RGBA_CHANNELS;
12
+ const scanlines = Buffer.allocUnsafe(height * (1 + stride)); // extra byte for filter
13
+ let scanlineOffset = 0;
14
+ let pixelDataOffset = 0;
15
+ for (let y = 0; y < height; y++) {
16
+ scanlineOffset = scanlines.writeUInt8(png_1.PNG_FILTER_NO_FILTER, scanlineOffset);
17
+ scanlineOffset += rgba.copy(scanlines, scanlineOffset, pixelDataOffset, pixelDataOffset + stride);
18
+ pixelDataOffset += stride;
19
+ }
20
+ if (scanlineOffset !== scanlines.byteLength) {
21
+ throw new Error("Got malformed input while trying to convert rgba to png");
22
+ }
23
+ return scanlines;
24
+ };
25
+ const convertRgbaToPng = (rgba, width, height, compressionLevel = 4) => {
26
+ const scanlines = convertRgbaToScanlines(rgba, width, height);
27
+ const compressedData = node_zlib_1.default.deflateSync(scanlines, { level: compressionLevel });
28
+ const resultBuffer = Buffer.allocUnsafe(png_1.PNG_MIN_ASSIST_BYTES + compressedData.length);
29
+ let pointer = 0;
30
+ // signature
31
+ pointer += png_1.PNG_SIGNATURE.copy(resultBuffer);
32
+ // IHDR
33
+ const ihdrPointer = (pointer = resultBuffer.writeUInt32BE(png_1.PNG_IHDR_LENGTH, pointer));
34
+ pointer += resultBuffer.write("IHDR", pointer, "ascii");
35
+ pointer = resultBuffer.writeUInt32BE(width, pointer);
36
+ pointer = resultBuffer.writeUInt32BE(height, pointer);
37
+ pointer = resultBuffer.writeUInt8(png_1.PNG_BIT_DEPTH_EIGHT_BIT, pointer);
38
+ pointer = resultBuffer.writeUInt8(png_1.PNG_COLOR_TYPE_RGBA, pointer);
39
+ pointer = resultBuffer.writeUInt8(png_1.PNG_COMPRESSION_DEFLATE, pointer);
40
+ pointer = resultBuffer.writeUInt8(png_1.PNG_FILTER_NO_FILTER, pointer);
41
+ pointer = resultBuffer.writeUInt8(png_1.PNG_INTERLACE_NO_INTERLACE, pointer);
42
+ const ihdrCrc = (0, buffer_crc32_1.unsigned)(Buffer.from(resultBuffer.buffer, ihdrPointer, pointer - ihdrPointer));
43
+ pointer = resultBuffer.writeUInt32BE(ihdrCrc, pointer);
44
+ // IDAT
45
+ const idatPointer = (pointer = resultBuffer.writeUInt32BE(compressedData.length, pointer));
46
+ pointer += resultBuffer.write("IDAT", idatPointer, "ascii");
47
+ pointer += compressedData.copy(resultBuffer, pointer);
48
+ const idatCrc = (0, buffer_crc32_1.unsigned)(Buffer.from(resultBuffer.buffer, idatPointer, pointer - idatPointer));
49
+ pointer = resultBuffer.writeUInt32BE(idatCrc, pointer);
50
+ // IEND (empty)
51
+ const iendPointer = (pointer = resultBuffer.writeUInt32BE(0, pointer));
52
+ pointer += resultBuffer.write("IEND", pointer, "ascii");
53
+ const iendCrc = (0, buffer_crc32_1.unsigned)(Buffer.from(resultBuffer.buffer, iendPointer, pointer - iendPointer));
54
+ pointer = resultBuffer.writeUInt32BE(iendCrc, pointer);
55
+ if (pointer !== resultBuffer.byteLength) {
56
+ throw new Error("Got malformed input while trying to convert rgba to png");
57
+ }
58
+ return resultBuffer;
59
+ };
60
+ exports.convertRgbaToPng = convertRgbaToPng;
61
+ //# sourceMappingURL=eight-bit-rgba-to-png.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eight-bit-rgba-to-png.js","sourceRoot":"","sources":["../../../src/utils/eight-bit-rgba-to-png.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "testplane",
3
- "version": "8.30.1",
3
+ "version": "8.30.2",
4
4
  "description": "Tests framework based on mocha and wdio",
5
5
  "main": "build/src/index.js",
6
6
  "files": [
@@ -67,6 +67,7 @@
67
67
  "@babel/code-frame": "7.24.2",
68
68
  "@gemini-testing/commander": "2.15.4",
69
69
  "@jspm/core": "2.0.1",
70
+ "@jsquash/png": "3.1.1",
70
71
  "@puppeteer/browsers": "2.7.1",
71
72
  "@rrweb/record": "2.0.0-alpha.18",
72
73
  "@testplane/devtools": "8.32.3",
@@ -74,6 +75,7 @@
74
75
  "@testplane/wdio-utils": "9.5.3",
75
76
  "@testplane/webdriverio": "9.5.21",
76
77
  "@vitest/spy": "2.1.4",
78
+ "buffer-crc32": "1.0.0",
77
79
  "chalk": "2.4.2",
78
80
  "clear-require": "1.0.1",
79
81
  "cli-progress": "3.12.0",
@@ -92,7 +94,7 @@
92
94
  "load-esm": "1.0.2",
93
95
  "local-pkg": "0.4.3",
94
96
  "lodash": "4.17.21",
95
- "looks-same": "9.0.1",
97
+ "looks-same": "10.0.0",
96
98
  "micromatch": "4.0.5",
97
99
  "mocha": "10.2.0",
98
100
  "pirates": "4.0.7",
@@ -100,7 +102,6 @@
100
102
  "png-validator": "1.1.0",
101
103
  "recast": "0.23.6",
102
104
  "resolve.exports": "2.0.2",
103
- "sharp": "0.32.6",
104
105
  "sizzle": "2.3.6",
105
106
  "socket.io": "4.7.5",
106
107
  "socket.io-client": "4.7.5",
@@ -138,7 +139,6 @@
138
139
  "@types/mocha": "10.0.1",
139
140
  "@types/node": "18.19.3",
140
141
  "@types/proxyquire": "1.3.28",
141
- "@types/sharp": "0.31.1",
142
142
  "@types/sinon": "17.0.1",
143
143
  "@types/sinonjs__fake-timers": "8.1.2",
144
144
  "@types/strftime": "0.9.8",