@wdio/image-comparison-core 1.1.3 → 1.2.0
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.
- package/CHANGELOG.md +38 -0
- package/dist/base.d.ts +2 -2
- package/dist/base.d.ts.map +1 -1
- package/dist/base.interfaces.d.ts +7 -0
- package/dist/base.interfaces.d.ts.map +1 -1
- package/dist/base.js +1 -5
- package/dist/base.test.js +4 -6
- package/dist/clientSideScripts/injectWebviewOverlay.test.js +29 -0
- package/dist/clientSideScripts/scrollElementIntoView.d.ts.map +1 -1
- package/dist/clientSideScripts/scrollElementIntoView.js +4 -1
- package/dist/clientSideScripts/scrollElementIntoView.test.js +4 -2
- package/dist/commands/check.interfaces.d.ts +1 -1
- package/dist/commands/check.interfaces.d.ts.map +1 -1
- package/dist/commands/checkFullPageScreen.d.ts.map +1 -1
- package/dist/commands/checkFullPageScreen.js +7 -2
- package/dist/commands/checkWebElement.d.ts.map +1 -1
- package/dist/commands/checkWebElement.js +7 -2
- package/dist/commands/checkWebScreen.d.ts.map +1 -1
- package/dist/commands/checkWebScreen.js +10 -3
- package/dist/commands/checkWebScreen.test.js +43 -0
- package/dist/commands/fullPage.interfaces.d.ts +6 -0
- package/dist/commands/fullPage.interfaces.d.ts.map +1 -1
- package/dist/commands/save.interfaces.d.ts +3 -1
- package/dist/commands/save.interfaces.d.ts.map +1 -1
- package/dist/commands/saveElement.d.ts +1 -1
- package/dist/commands/saveElement.d.ts.map +1 -1
- package/dist/commands/saveElement.js +2 -2
- package/dist/commands/saveFullPageScreen.d.ts.map +1 -1
- package/dist/commands/saveFullPageScreen.js +23 -3
- package/dist/commands/saveWebElement.d.ts +1 -1
- package/dist/commands/saveWebElement.d.ts.map +1 -1
- package/dist/commands/saveWebElement.js +24 -2
- package/dist/commands/saveWebScreen.d.ts +1 -1
- package/dist/commands/saveWebScreen.d.ts.map +1 -1
- package/dist/commands/saveWebScreen.js +23 -3
- package/dist/helpers/afterScreenshot.interfaces.d.ts +2 -0
- package/dist/helpers/afterScreenshot.interfaces.d.ts.map +1 -1
- package/dist/helpers/options.d.ts.map +1 -1
- package/dist/helpers/options.interfaces.d.ts +10 -0
- package/dist/helpers/options.interfaces.d.ts.map +1 -1
- package/dist/helpers/options.js +1 -0
- package/dist/helpers/utils.d.ts +10 -0
- package/dist/helpers/utils.d.ts.map +1 -1
- package/dist/helpers/utils.interfaces.d.ts +3 -0
- package/dist/helpers/utils.interfaces.d.ts.map +1 -1
- package/dist/helpers/utils.js +105 -33
- package/dist/helpers/utils.test.js +210 -3
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/methods/images.d.ts.map +1 -1
- package/dist/methods/images.interfaces.d.ts +4 -0
- package/dist/methods/images.interfaces.d.ts.map +1 -1
- package/dist/methods/images.js +4 -2
- package/dist/methods/rectangles.d.ts +33 -2
- package/dist/methods/rectangles.d.ts.map +1 -1
- package/dist/methods/rectangles.interfaces.d.ts +58 -0
- package/dist/methods/rectangles.interfaces.d.ts.map +1 -1
- package/dist/methods/rectangles.js +289 -15
- package/dist/methods/rectangles.test.js +558 -2
- package/dist/methods/takeElementScreenshots.js +19 -16
- package/dist/methods/takeElementScreenshots.test.js +22 -22
- package/package.json +3 -3
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
|
|
2
|
-
import { existsSync } from 'node:fs';
|
|
2
|
+
import { existsSync, mkdirSync } from 'node:fs';
|
|
3
3
|
import { join } from 'node:path';
|
|
4
4
|
vi.mock('node:fs', async () => {
|
|
5
5
|
const actual = await vi.importActual('node:fs');
|
|
@@ -10,7 +10,7 @@ vi.mock('node:fs', async () => {
|
|
|
10
10
|
};
|
|
11
11
|
});
|
|
12
12
|
import logger from '@wdio/logger';
|
|
13
|
-
import { buildBaseExecuteCompareOptions, buildFolderOptions, calculateDprData, canUseBidiScreenshot, checkAndroidChromeDriverScreenshot, checkAndroidNativeWebScreenshot, checkTestInBrowser, checkTestInMobileBrowser, createConditionalProperty, executeNativeClick, extractCommonCheckVariables, formatFileName, getAddressBarShadowPadding, getAndCreatePath, getBase64ScreenshotSize, getBooleanOption, getDevicePixelRatio, getIosBezelImageNames, getMethodOrWicOption, getMobileScreenSize, getMobileViewPortPosition, getToolBarShadowPadding, hasResizeDimensions, isObject, isStorybook, loadBase64Html, logAllDeprecatedCompareOptions, updateVisualBaseline, } from './utils.js';
|
|
13
|
+
import { buildBaseExecuteCompareOptions, buildFolderOptions, calculateDprData, canUseBidiScreenshot, checkAndroidChromeDriverScreenshot, checkAndroidNativeWebScreenshot, checkTestInBrowser, checkTestInMobileBrowser, createConditionalProperty, executeNativeClick, extractCommonCheckVariables, formatFileName, getAddressBarShadowPadding, getAndCreatePath, getBase64ScreenshotSize, getBooleanOption, getDevicePixelRatio, getIosBezelImageNames, getMethodOrWicOption, getMobileScreenSize, getMobileViewPortPosition, getPath, getToolBarShadowPadding, hasResizeDimensions, isObject, isStorybook, loadBase64Html, logAllDeprecatedCompareOptions, prepareComparisonFilePaths, updateVisualBaseline, } from './utils.js';
|
|
14
14
|
import { IMAGE_STRING } from '../mocks/image.js';
|
|
15
15
|
import { DEVICE_RECTANGLES } from './constants.js';
|
|
16
16
|
import { getMobileWebviewClickAndDimensions } from '../clientSideScripts/getMobileWebviewClickAndDimensions.js';
|
|
@@ -93,6 +93,93 @@ describe('utils', () => {
|
|
|
93
93
|
expect(existsSync(folder)).toMatchSnapshot();
|
|
94
94
|
});
|
|
95
95
|
});
|
|
96
|
+
describe('getPath', () => {
|
|
97
|
+
const folder = join(process.cwd(), '/.tmp/utils');
|
|
98
|
+
it('should return the folder path for a mobile device with savePerInstance', () => {
|
|
99
|
+
const options = {
|
|
100
|
+
browserName: '',
|
|
101
|
+
deviceName: 'deviceName',
|
|
102
|
+
isMobile: true,
|
|
103
|
+
savePerInstance: true,
|
|
104
|
+
};
|
|
105
|
+
expect(getPath(folder, options)).toEqual(join(folder, options.deviceName));
|
|
106
|
+
});
|
|
107
|
+
it('should return the folder path for a desktop browser with savePerInstance', () => {
|
|
108
|
+
const options = {
|
|
109
|
+
browserName: 'browser',
|
|
110
|
+
deviceName: '',
|
|
111
|
+
isMobile: false,
|
|
112
|
+
savePerInstance: true,
|
|
113
|
+
};
|
|
114
|
+
expect(getPath(folder, options)).toEqual(join(folder, `desktop_${options.browserName}`));
|
|
115
|
+
});
|
|
116
|
+
it('should return the base folder when savePerInstance is false', () => {
|
|
117
|
+
const options = {
|
|
118
|
+
browserName: 'browser',
|
|
119
|
+
deviceName: '',
|
|
120
|
+
isMobile: false,
|
|
121
|
+
savePerInstance: false,
|
|
122
|
+
};
|
|
123
|
+
expect(getPath(folder, options)).toEqual(folder);
|
|
124
|
+
});
|
|
125
|
+
it('should not create any directories on disk', () => {
|
|
126
|
+
vi.mocked(mkdirSync).mockClear();
|
|
127
|
+
const options = {
|
|
128
|
+
browserName: 'chrome',
|
|
129
|
+
deviceName: '',
|
|
130
|
+
isMobile: false,
|
|
131
|
+
savePerInstance: true,
|
|
132
|
+
};
|
|
133
|
+
getPath(folder, options);
|
|
134
|
+
expect(mkdirSync).not.toHaveBeenCalled();
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
describe('prepareComparisonFilePaths', () => {
|
|
138
|
+
beforeEach(() => {
|
|
139
|
+
vi.mocked(mkdirSync).mockClear();
|
|
140
|
+
});
|
|
141
|
+
it('should create actual and baseline folders but not the diff folder', () => {
|
|
142
|
+
const options = {
|
|
143
|
+
actualFolder: '/tmp/actual',
|
|
144
|
+
baselineFolder: '/tmp/baseline',
|
|
145
|
+
diffFolder: '/tmp/diff',
|
|
146
|
+
browserName: 'chrome',
|
|
147
|
+
deviceName: '',
|
|
148
|
+
isMobile: false,
|
|
149
|
+
savePerInstance: false,
|
|
150
|
+
fileName: 'test.png',
|
|
151
|
+
};
|
|
152
|
+
const result = prepareComparisonFilePaths(options);
|
|
153
|
+
expect(result.actualFolderPath).toEqual('/tmp/actual');
|
|
154
|
+
expect(result.baselineFolderPath).toEqual('/tmp/baseline');
|
|
155
|
+
expect(result.diffFolderPath).toEqual('/tmp/diff');
|
|
156
|
+
expect(result.actualFilePath).toEqual(join('/tmp/actual', 'test.png'));
|
|
157
|
+
expect(result.baselineFilePath).toEqual(join('/tmp/baseline', 'test.png'));
|
|
158
|
+
expect(result.diffFilePath).toEqual(join('/tmp/diff', 'test.png'));
|
|
159
|
+
const mkdirCalls = vi.mocked(mkdirSync).mock.calls.map(call => call[0]);
|
|
160
|
+
expect(mkdirCalls).toContain('/tmp/actual');
|
|
161
|
+
expect(mkdirCalls).toContain('/tmp/baseline');
|
|
162
|
+
expect(mkdirCalls).not.toContain('/tmp/diff');
|
|
163
|
+
});
|
|
164
|
+
it('should include instance subfolder in paths when savePerInstance is true', () => {
|
|
165
|
+
const options = {
|
|
166
|
+
actualFolder: '/tmp/actual',
|
|
167
|
+
baselineFolder: '/tmp/baseline',
|
|
168
|
+
diffFolder: '/tmp/diff',
|
|
169
|
+
browserName: 'chrome',
|
|
170
|
+
deviceName: '',
|
|
171
|
+
isMobile: false,
|
|
172
|
+
savePerInstance: true,
|
|
173
|
+
fileName: 'test.png',
|
|
174
|
+
};
|
|
175
|
+
const result = prepareComparisonFilePaths(options);
|
|
176
|
+
expect(result.actualFolderPath).toEqual(join('/tmp/actual', 'desktop_chrome'));
|
|
177
|
+
expect(result.baselineFolderPath).toEqual(join('/tmp/baseline', 'desktop_chrome'));
|
|
178
|
+
expect(result.diffFolderPath).toEqual(join('/tmp/diff', 'desktop_chrome'));
|
|
179
|
+
const mkdirCalls = vi.mocked(mkdirSync).mock.calls.map(call => call[0]);
|
|
180
|
+
expect(mkdirCalls).not.toContain(join('/tmp/diff', 'desktop_chrome'));
|
|
181
|
+
});
|
|
182
|
+
});
|
|
96
183
|
describe('formatFileName', () => {
|
|
97
184
|
const formatFileOptions = {
|
|
98
185
|
browserName: '',
|
|
@@ -455,7 +542,8 @@ describe('utils', () => {
|
|
|
455
542
|
.mockResolvedValueOnce(undefined) // checkMetaTag
|
|
456
543
|
.mockResolvedValueOnce(undefined) // injectWebviewOverlay
|
|
457
544
|
.mockResolvedValueOnce(undefined) // executeNativeClick
|
|
458
|
-
.mockResolvedValueOnce({ x: 150, y: 300, width: 100, height: 100 })
|
|
545
|
+
.mockResolvedValueOnce({ x: 150, y: 300, width: 100, height: 100 }) // getMobileWebviewClickAndDimensions
|
|
546
|
+
.mockResolvedValueOnce({ vs: 'visible', focus: true }); // visibilityState debug check
|
|
459
547
|
const result = await getMobileViewPortPosition({
|
|
460
548
|
browserInstance: mockBrowserInstance,
|
|
461
549
|
...baseOptions,
|
|
@@ -465,6 +553,125 @@ describe('utils', () => {
|
|
|
465
553
|
expect(mockBrowserInstance.execute).toHaveBeenCalledWith(getMobileWebviewClickAndDimensions, '[data-test="ics-overlay"]');
|
|
466
554
|
expect(result).toMatchSnapshot();
|
|
467
555
|
});
|
|
556
|
+
it('should handle rounded overlay values from non-integer DPR', async () => {
|
|
557
|
+
const dpr = 2.625;
|
|
558
|
+
const screenW = 1080;
|
|
559
|
+
const screenH = 2424;
|
|
560
|
+
const cssClickX = 206;
|
|
561
|
+
const cssClickY = 385;
|
|
562
|
+
const cssWidth = 412;
|
|
563
|
+
const cssHeight = 363;
|
|
564
|
+
const overlayWidth = Math.round(cssWidth * dpr);
|
|
565
|
+
const overlayHeight = Math.round(cssHeight * dpr);
|
|
566
|
+
vi.mocked(mockBrowserInstance.execute)
|
|
567
|
+
.mockResolvedValueOnce(undefined) // loadBase64Html
|
|
568
|
+
.mockResolvedValueOnce(undefined) // checkMetaTag (iOS)
|
|
569
|
+
.mockResolvedValueOnce(undefined) // injectWebviewOverlay
|
|
570
|
+
.mockResolvedValueOnce(undefined) // executeNativeClick
|
|
571
|
+
.mockResolvedValueOnce({
|
|
572
|
+
x: Math.round(cssClickX * dpr),
|
|
573
|
+
y: Math.round(cssClickY * dpr),
|
|
574
|
+
width: overlayWidth,
|
|
575
|
+
height: overlayHeight,
|
|
576
|
+
}) // getMobileWebviewClickAndDimensions (rounded integers from overlay)
|
|
577
|
+
.mockResolvedValueOnce({ vs: 'visible', focus: true }); // visibilityState debug check
|
|
578
|
+
const result = await getMobileViewPortPosition({
|
|
579
|
+
browserInstance: mockBrowserInstance,
|
|
580
|
+
...baseOptions,
|
|
581
|
+
screenHeight: screenH,
|
|
582
|
+
screenWidth: screenW,
|
|
583
|
+
});
|
|
584
|
+
const viewportTop = Math.max(0, Math.round(screenH / 2 - Math.round(cssClickY * dpr)));
|
|
585
|
+
const viewportLeft = Math.max(0, Math.round(screenW / 2 - Math.round(cssClickX * dpr)));
|
|
586
|
+
expect(result.viewport.y).toBe(viewportTop);
|
|
587
|
+
expect(result.viewport.x).toBe(viewportLeft);
|
|
588
|
+
expect(result.viewport.width).toBe(overlayWidth);
|
|
589
|
+
expect(result.viewport.height).toBe(overlayHeight);
|
|
590
|
+
expect(result.statusBarAndAddressBar.height).toBe(Math.max(0, Math.round(viewportTop)));
|
|
591
|
+
});
|
|
592
|
+
it('should retry and succeed on Android when overlay returns zeros (Start Surface blocking)', async () => {
|
|
593
|
+
const warnSpy = vi.spyOn(log, 'warn').mockImplementation(() => { });
|
|
594
|
+
vi.mocked(mockBrowserInstance.execute)
|
|
595
|
+
// --- Attempt 1: overlay returns zeros (Start Surface is blocking) ---
|
|
596
|
+
.mockResolvedValueOnce(undefined) // loadBase64Html (blob)
|
|
597
|
+
.mockResolvedValueOnce(undefined) // injectWebviewOverlay
|
|
598
|
+
.mockResolvedValueOnce(undefined) // executeNativeClick (screen center)
|
|
599
|
+
.mockResolvedValueOnce({ x: 0, y: 0, width: 0, height: 0 }) // getMobileWebviewClickAndDimensions
|
|
600
|
+
// --- Dismiss Start Surface: Back button ---
|
|
601
|
+
.mockResolvedValueOnce(undefined) // mobile: pressKey (Back button)
|
|
602
|
+
// --- Attempt 2: overlay returns valid data ---
|
|
603
|
+
.mockResolvedValueOnce(undefined) // loadBase64Html (blob)
|
|
604
|
+
.mockResolvedValueOnce(undefined) // injectWebviewOverlay
|
|
605
|
+
.mockResolvedValueOnce(undefined) // executeNativeClick (screen center)
|
|
606
|
+
.mockResolvedValueOnce({ x: 150, y: 300, width: 100, height: 100 }); // getMobileWebviewClickAndDimensions
|
|
607
|
+
const result = await getMobileViewPortPosition({
|
|
608
|
+
browserInstance: mockBrowserInstance,
|
|
609
|
+
...baseOptions,
|
|
610
|
+
isAndroid: true,
|
|
611
|
+
isIOS: false,
|
|
612
|
+
});
|
|
613
|
+
expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('overlay did not receive the native click'));
|
|
614
|
+
expect(mockBrowserInstance.url).toHaveBeenCalledWith('http://example.com');
|
|
615
|
+
expect(result.viewport.width).toBe(100);
|
|
616
|
+
expect(result.viewport.height).toBe(100);
|
|
617
|
+
warnSpy.mockRestore();
|
|
618
|
+
});
|
|
619
|
+
it('should return initialDeviceRectangles after all retries are exhausted on Android', { timeout: 15000 }, async () => {
|
|
620
|
+
const warnSpy = vi.spyOn(log, 'warn').mockImplementation(() => { });
|
|
621
|
+
const errorSpy = vi.spyOn(log, 'error').mockImplementation(() => { });
|
|
622
|
+
const zeroOverlay = { x: 0, y: 0, width: 0, height: 0 };
|
|
623
|
+
const attemptMocks = () => [
|
|
624
|
+
undefined, // loadBase64Html
|
|
625
|
+
undefined, // injectWebviewOverlay
|
|
626
|
+
undefined, // executeNativeClick (center)
|
|
627
|
+
zeroOverlay, // getMobileWebviewClickAndDimensions
|
|
628
|
+
];
|
|
629
|
+
const mocked = vi.mocked(mockBrowserInstance.execute);
|
|
630
|
+
// 5 attempts: attempts 1-4 have Back button dismissal, last attempt has none
|
|
631
|
+
for (let i = 0; i < 5; i++) {
|
|
632
|
+
for (const val of attemptMocks()) {
|
|
633
|
+
mocked.mockResolvedValueOnce(val);
|
|
634
|
+
}
|
|
635
|
+
if (i < 4) {
|
|
636
|
+
mocked.mockResolvedValueOnce(undefined); // mobile: pressKey (Back button)
|
|
637
|
+
}
|
|
638
|
+
}
|
|
639
|
+
const result = await getMobileViewPortPosition({
|
|
640
|
+
browserInstance: mockBrowserInstance,
|
|
641
|
+
...baseOptions,
|
|
642
|
+
isAndroid: true,
|
|
643
|
+
isIOS: false,
|
|
644
|
+
});
|
|
645
|
+
expect(warnSpy).toHaveBeenCalledTimes(5);
|
|
646
|
+
expect(errorSpy).toHaveBeenCalledWith(expect.stringContaining('Viewport measurement failed after 5 attempts'));
|
|
647
|
+
expect(mockBrowserInstance.url).toHaveBeenCalledWith('http://example.com');
|
|
648
|
+
expect(result).toEqual(DEVICE_RECTANGLES);
|
|
649
|
+
warnSpy.mockRestore();
|
|
650
|
+
errorSpy.mockRestore();
|
|
651
|
+
});
|
|
652
|
+
it('should not retry on iOS when overlay returns zeros', async () => {
|
|
653
|
+
const warnSpy = vi.spyOn(log, 'warn').mockImplementation(() => { });
|
|
654
|
+
vi.mocked(mockBrowserInstance.execute)
|
|
655
|
+
.mockResolvedValueOnce(undefined) // loadBase64Html (blob)
|
|
656
|
+
.mockResolvedValueOnce(undefined) // checkMetaTag (iOS)
|
|
657
|
+
.mockResolvedValueOnce(undefined) // injectWebviewOverlay
|
|
658
|
+
.mockResolvedValueOnce(undefined) // executeNativeClick (center, 'mobile: tap')
|
|
659
|
+
.mockResolvedValueOnce({ x: 0, y: 0, width: 0, height: 0 }) // getMobileWebviewClickAndDimensions
|
|
660
|
+
.mockResolvedValueOnce({ vs: 'visible', focus: true }); // visibilityState debug check
|
|
661
|
+
const result = await getMobileViewPortPosition({
|
|
662
|
+
browserInstance: mockBrowserInstance,
|
|
663
|
+
...baseOptions,
|
|
664
|
+
isAndroid: false,
|
|
665
|
+
isIOS: true,
|
|
666
|
+
});
|
|
667
|
+
// iOS uses a single attempt — no retry, no Start Surface dismissal
|
|
668
|
+
expect(warnSpy).not.toHaveBeenCalled();
|
|
669
|
+
expect(mockBrowserInstance.url).toHaveBeenCalledWith('http://example.com');
|
|
670
|
+
// The zero overlay values produce a viewport at screen center with 0 dimensions
|
|
671
|
+
expect(result.viewport.width).toBe(0);
|
|
672
|
+
expect(result.viewport.height).toBe(0);
|
|
673
|
+
warnSpy.mockRestore();
|
|
674
|
+
});
|
|
468
675
|
it('should return initialDeviceRectangles if not WebView (native context)', async () => {
|
|
469
676
|
const result = await getMobileViewPortPosition({
|
|
470
677
|
browserInstance: mockBrowserInstance,
|
package/dist/index.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ import { InternalCheckElementMethodOptions, InternalCheckFullPageMethodOptions,
|
|
|
15
15
|
import { InternalSaveElementMethodOptions, InternalSaveFullPageMethodOptions, InternalSaveScreenMethodOptions, InternalSaveTabbablePageMethodOptions } from './commands/save.interfaces.js';
|
|
16
16
|
export type { ScreenshotOutput } from './helpers/afterScreenshot.interfaces.js';
|
|
17
17
|
export type { CheckScreenMethodOptions, SaveScreenMethodOptions, } from './commands/screen.interfaces.js';
|
|
18
|
-
export type { WicElement, CheckElementMethodOptions, SaveElementMethodOptions, } from './commands/element.interfaces.js';
|
|
18
|
+
export type { ElementIgnore, WicElement, CheckElementMethodOptions, SaveElementMethodOptions, } from './commands/element.interfaces.js';
|
|
19
19
|
export type { CheckFullPageMethodOptions, SaveFullPageMethodOptions, } from './commands/fullPage.interfaces.js';
|
|
20
20
|
export type { TestContext } from './methods/compareReport.interfaces.js';
|
|
21
21
|
export type { Folders } from './base.interfaces.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAA;AACjC,OAAO,UAAU,MAAM,0BAA0B,CAAA;AACjD,OAAO,WAAW,MAAM,2BAA2B,CAAA;AACnD,OAAO,kBAAkB,MAAM,kCAAkC,CAAA;AACjE,OAAO,gBAAgB,MAAM,gCAAgC,CAAA;AAC7D,OAAO,WAAW,MAAM,2BAA2B,CAAA;AACnD,OAAO,YAAY,MAAM,4BAA4B,CAAA;AACrD,OAAO,mBAAmB,MAAM,mCAAmC,CAAA;AACnE,OAAO,iBAAiB,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AACjH,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAA;AACnF,OAAO,EAAE,iCAAiC,EAAE,kCAAkC,EAAE,gCAAgC,EAAE,sCAAsC,EAAE,MAAM,gCAAgC,CAAA;AAChM,OAAO,EAAE,gCAAgC,EAAE,iCAAiC,EAAE,+BAA+B,EAAE,qCAAqC,EAAE,MAAM,+BAA+B,CAAA;AAE3L,YAAY,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAA;AAC/E,YAAY,EACR,wBAAwB,EACxB,uBAAuB,GAC1B,MAAM,iCAAiC,CAAA;AACxC,YAAY,EACR,UAAU,EACV,yBAAyB,EACzB,wBAAwB,GAC3B,MAAM,kCAAkC,CAAA;AACzC,YAAY,EACR,0BAA0B,EAC1B,yBAAyB,GAC5B,MAAM,mCAAmC,CAAA;AAC1C,YAAY,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AACxE,YAAY,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACnD,YAAY,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAA;AACxE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AAC1E,YAAY,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAA;AAEzE,OAAO,EAEH,oBAAoB,EACpB,iBAAiB,EACjB,WAAW,EACX,OAAO,EACP,SAAS,EAET,SAAS,EAET,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EAEzB,+BAA+B,EAC/B,gCAAgC,EAChC,iCAAiC,EACjC,qCAAqC,EACrC,gCAAgC,EAChC,iCAAiC,EACjC,kCAAkC,EAClC,sCAAsC,EACtC,kBAAkB,EAClB,YAAY,GACf,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAA;AACjC,OAAO,UAAU,MAAM,0BAA0B,CAAA;AACjD,OAAO,WAAW,MAAM,2BAA2B,CAAA;AACnD,OAAO,kBAAkB,MAAM,kCAAkC,CAAA;AACjE,OAAO,gBAAgB,MAAM,gCAAgC,CAAA;AAC7D,OAAO,WAAW,MAAM,2BAA2B,CAAA;AACnD,OAAO,YAAY,MAAM,4BAA4B,CAAA;AACrD,OAAO,mBAAmB,MAAM,mCAAmC,CAAA;AACnE,OAAO,iBAAiB,MAAM,iCAAiC,CAAA;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AACjH,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAA;AACnF,OAAO,EAAE,iCAAiC,EAAE,kCAAkC,EAAE,gCAAgC,EAAE,sCAAsC,EAAE,MAAM,gCAAgC,CAAA;AAChM,OAAO,EAAE,gCAAgC,EAAE,iCAAiC,EAAE,+BAA+B,EAAE,qCAAqC,EAAE,MAAM,+BAA+B,CAAA;AAE3L,YAAY,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAA;AAC/E,YAAY,EACR,wBAAwB,EACxB,uBAAuB,GAC1B,MAAM,iCAAiC,CAAA;AACxC,YAAY,EACR,aAAa,EACb,UAAU,EACV,yBAAyB,EACzB,wBAAwB,GAC3B,MAAM,kCAAkC,CAAA;AACzC,YAAY,EACR,0BAA0B,EAC1B,yBAAyB,GAC5B,MAAM,mCAAmC,CAAA;AAC1C,YAAY,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AACxE,YAAY,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACnD,YAAY,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAA;AACxE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AAC1E,YAAY,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAA;AAEzE,OAAO,EAEH,oBAAoB,EACpB,iBAAiB,EACjB,WAAW,EACX,OAAO,EACP,SAAS,EAET,SAAS,EAET,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EAEzB,+BAA+B,EAC/B,gCAAgC,EAChC,iCAAiC,EACjC,qCAAqC,EACrC,gCAAgC,EAChC,iCAAiC,EACjC,kCAAkC,EAClC,sCAAsC,EACtC,kBAAkB,EAClB,YAAY,GACf,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"images.d.ts","sourceRoot":"","sources":["../../src/methods/images.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACR,YAAY,EACZ,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,8BAA8B,EAC9B,wBAAwB,EACxB,YAAY,EACZ,kCAAkC,EAClC,kCAAkC,EACrC,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AAQ1E;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO3E;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAWjF;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,EAC3C,cAAc,EACd,gBAAgB,EAChB,gBAAwB,EACxB,cAAsB,EACtB,iBAAiB,GACpB,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgD1C;AACD;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,EAAE,4BAA4B,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAKvI;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,EAChC,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,IAAI,GACP,EAAE,iBAAiB,GAAG,IAAI,CAW1B;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAC5B,MAAM,EACN,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,KAAK,EACL,WAAW,GACd,EAAE,YAAY,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAwBjC;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,EACxC,kBAAkB,EAClB,KAAK,EACL,UAAU,EACV,gBAAgB,EAChB,MAAM,EACN,WAAW,EACX,KAAK,GACR,EAAE,qBAAqB,iBAiDvB;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,EAC1C,kBAAkB,EAClB,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,MAAM,EACN,KAAK,EACL,WAAW,EACX,OAAO,EACP,OAAO,EACP,KAAK,GACR,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CAU3C;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,EACzC,kBAAkB,EAClB,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,4BAAoC,EACpC,KAAK,EACL,WAAW,EACX,UAAU,EACV,gBAA4C,GAC/C,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAqCtC;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACrC,EACI,oBAAoB,EACpB,eAAe,EACf,OAAO,EACP,WAAW,EACX,iBAAiB,GACpB,EAAE,mBAAmB,GACvB,OAAO,CAAC,kBAAkB,GAAG,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"images.d.ts","sourceRoot":"","sources":["../../src/methods/images.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,6 +44,10 @@ export interface ImageCompareOptions {
|
|
|
44
44
|
isAndroid: boolean;
|
|
45
45
|
/** If this is a native web screenshot */
|
|
46
46
|
isAndroidNativeWebScreenshot: boolean;
|
|
47
|
+
/** If this is a hybrid (native + webview) app; enables status bar fallback in webview when overlay reports zero */
|
|
48
|
+
isHybridApp?: boolean;
|
|
49
|
+
/** Platform version from the device (e.g. "14.0" for Android API 14); used for Android status bar fallback lookup */
|
|
50
|
+
platformVersion?: string;
|
|
47
51
|
}
|
|
48
52
|
export interface WicImageCompareOptions extends BaseImageCompareOptions, BaseMobileBlockOutOptions {
|
|
49
53
|
/** Create a json file with the diff data, this can be used to create a custom report. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"images.interfaces.d.ts","sourceRoot":"","sources":["../../src/methods/images.interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AACzJ,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE9C,MAAM,WAAW,gBAAgB;IAC7B,wBAAwB;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sBAAsB;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAChC,uCAAuC;IACvC,OAAO,EAAE,mBAAmB,CAAC;IAC7B,uBAAuB;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,4CAA4C;IAC5C,oBAAoB,EAAE,OAAO,CAAC;IAC9B,uCAAuC;IACvC,eAAe,EAAE,OAAO,CAAC;IACzB,mFAAmF;IACnF,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAChC,8BAA8B;IAC9B,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACnC,2CAA2C;IAC3C,gBAAgB,EAAE,MAAM,CAAC;IACzB,0BAA0B;IAC1B,cAAc,EAAE;QACZ,GAAG,EAAE,sBAAsB,CAAC;QAC5B,MAAM,EAAE,sCAAsC,CAAC;KAClD,CAAC;IACF,4BAA4B;IAC5B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,aAAa,EAAE,yBAAyB,CAAC;IACzC,gCAAgC;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,yCAAyC;IACzC,4BAA4B,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"images.interfaces.d.ts","sourceRoot":"","sources":["../../src/methods/images.interfaces.ts"],"names":[],"mappings":"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"}
|
package/dist/methods/images.js
CHANGED
|
@@ -231,8 +231,8 @@ export async function makeCroppedBase64Image({ addIOSBezelCorners, base64Image,
|
|
|
231
231
|
*/
|
|
232
232
|
export async function executeImageCompare({ isViewPortScreenshot, isNativeContext, options, testContext, actualBase64Image, }) {
|
|
233
233
|
// 1. Set some variables
|
|
234
|
-
const { devicePixelRatio, deviceRectangles, ignoreRegions = [], isAndroidNativeWebScreenshot, isAndroid, fileName, } = options;
|
|
235
|
-
const { actualFolder, autoSaveBaseline, alwaysSaveActualImage, baselineFolder, browserName, deviceName, diffFolder, isMobile, savePerInstance } =
|
|
234
|
+
const { devicePixelRatio, deviceRectangles, ignoreRegions = [], isAndroidNativeWebScreenshot, isAndroid, fileName, folderOptions, } = options;
|
|
235
|
+
const { actualFolder, autoSaveBaseline, alwaysSaveActualImage, baselineFolder, browserName, deviceName, diffFolder, isMobile, savePerInstance, } = folderOptions;
|
|
236
236
|
const imageCompareOptions = { ...options.compareOptions.wic, ...options.compareOptions.method };
|
|
237
237
|
// 1a. Disable JSON reports if alwaysSaveActualImage is false (JSON reports need the actual file to exist)
|
|
238
238
|
if (!alwaysSaveActualImage && imageCompareOptions.createJsonReportFiles) {
|
|
@@ -299,6 +299,8 @@ export async function executeImageCompare({ isViewPortScreenshot, isNativeContex
|
|
|
299
299
|
blockOutStatusBar: imageCompareOptions.blockOutStatusBar,
|
|
300
300
|
blockOutToolBar: imageCompareOptions.blockOutToolBar,
|
|
301
301
|
},
|
|
302
|
+
isHybridApp: options.isHybridApp,
|
|
303
|
+
platformVersion: options.platformVersion,
|
|
302
304
|
actualFilePath: isViewPortScreenshot ? undefined : actualFilePath,
|
|
303
305
|
});
|
|
304
306
|
const compareOptions = {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { DetermineDeviceBlockOutsOptions, DeviceRectangles, ElementRectangles, PrepareIgnoreRectanglesOptions, PreparedIgnoreRectangles, RectanglesOutput, ScreenRectanglesOptions, SplitIgnores, StatusAddressToolBarRectangles, StatusAddressToolBarRectanglesOptions } from './rectangles.interfaces.js';
|
|
1
|
+
import type { DetermineDeviceBlockOutsOptions, DetermineWebFullPageIgnoreRegionsOptions, DetermineWebScreenIgnoreRegionsOptions, DetermineWebElementIgnoreRegionsOptions, DeviceRectangles, ElementRectangles, PrepareIgnoreRectanglesOptions, PreparedIgnoreRectangles, RectanglesOutput, ScreenRectanglesOptions, SplitIgnores, StatusAddressToolBarRectangles, StatusAddressToolBarRectanglesOptions } from './rectangles.interfaces.js';
|
|
2
2
|
import type { ElementIgnore } from 'src/commands/element.interfaces.js';
|
|
3
3
|
/**
|
|
4
4
|
* Determine the element rectangles on the page / screenshot
|
|
@@ -39,7 +39,38 @@ export declare function getRegionsFromElements(browserInstance: WebdriverIO.Brow
|
|
|
39
39
|
/**
|
|
40
40
|
* Translate ignores to regions
|
|
41
41
|
*/
|
|
42
|
-
export declare function determineIgnoreRegions(browserInstance: WebdriverIO.Browser, ignores: ElementIgnore[]): Promise<RectanglesOutput[]>;
|
|
42
|
+
export declare function determineIgnoreRegions(browserInstance: WebdriverIO.Browser, ignores: (ElementIgnore | ElementIgnore[])[]): Promise<RectanglesOutput[]>;
|
|
43
|
+
/**
|
|
44
|
+
* Translate ignores to regions for web screen (viewport) screenshots.
|
|
45
|
+
* Uses getBoundingClientRect (CSS pixels) and converts to device pixels,
|
|
46
|
+
* accounting for the viewport offset on native web screenshot devices.
|
|
47
|
+
*
|
|
48
|
+
* Coordinate systems per platform:
|
|
49
|
+
* - Desktop / Android ChromeDriver: screenshot is viewport-only, BCR × DPR
|
|
50
|
+
* - iOS: full-device screenshot, viewport offset is in CSS points → (BCR + offset) × DPR
|
|
51
|
+
* - Android native web: full-device screenshot, viewport offset is already in
|
|
52
|
+
* device pixels (injectWebviewOverlay pre-scales by DPR) → BCR × DPR + offset
|
|
53
|
+
*/
|
|
54
|
+
export declare function determineWebScreenIgnoreRegions(options: DetermineWebScreenIgnoreRegionsOptions, ignores: (ElementIgnore | ElementIgnore[])[]): Promise<RectanglesOutput[]>;
|
|
55
|
+
/**
|
|
56
|
+
* Translate ignores to regions for web full-page screenshots (desktop and mobile).
|
|
57
|
+
* Full-page image (BiDi or scroll-and-stitch) is in document coordinates: (0,0) = top-left
|
|
58
|
+
* of document, device pixels. Uses getBoundingClientRect + (scrollX, scrollY) for elements,
|
|
59
|
+
* then converts to device pixels. Same logic for all platforms; no viewport offset needed
|
|
60
|
+
* because the stitched canvas is built in document space.
|
|
61
|
+
*/
|
|
62
|
+
export declare function determineWebFullPageIgnoreRegions(options: DetermineWebFullPageIgnoreRegionsOptions, ignores: (ElementIgnore | ElementIgnore[])[]): Promise<RectanglesOutput[]>;
|
|
63
|
+
/**
|
|
64
|
+
* Translate ignores to regions for web element screenshots.
|
|
65
|
+
* By default regions are in *element-local* device pixels so they match the cropped element image
|
|
66
|
+
* (BiDi clip or fallback full-screenshot crop, both at device pixel size).
|
|
67
|
+
* Exception: when the element screenshot is from the native driver on Android native web
|
|
68
|
+
* (isWebDriverElementScreenshot && isAndroidNativeWebScreenshot), the driver returns an image at
|
|
69
|
+
* CSS pixel size (downscaled). We then output regions in CSS pixel coordinates (divide by DPR)
|
|
70
|
+
* so they align with that image. Fallback (full screenshot + crop) is at device size, so we do
|
|
71
|
+
* not downscale when fallback was used.
|
|
72
|
+
*/
|
|
73
|
+
export declare function determineWebElementIgnoreRegions(options: DetermineWebElementIgnoreRegionsOptions, ignores: (ElementIgnore | ElementIgnore[])[]): Promise<RectanglesOutput[]>;
|
|
43
74
|
/**
|
|
44
75
|
* Determine the device block outs
|
|
45
76
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rectangles.d.ts","sourceRoot":"","sources":["../../src/methods/rectangles.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rectangles.d.ts","sourceRoot":"","sources":["../../src/methods/rectangles.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACR,+BAA+B,EAC/B,wCAAwC,EACxC,sCAAsC,EACtC,uCAAuC,EACvC,gBAAgB,EAChB,iBAAiB,EACjB,8BAA8B,EAC9B,wBAAwB,EACxB,gBAAgB,EAChB,uBAAuB,EACvB,YAAY,EACZ,8BAA8B,EAC9B,qCAAqC,EACxC,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAA;AAEvE;;GAEG;AACH,wBAAsB,0BAA0B,CAAC,EAC7C,eAAe,EACf,WAAW,EACX,OAAO,EACP,OAAO,GACV,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA4C/C;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,GAAG,gBAAgB,CAoCjH;AAED;;GAEG;AACH,wBAAgB,uCAAuC,CAAC,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAC;IAClF,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,OAAO,EAAE,qCAAqC,CAAC;CAClD,GAAG,8BAA8B,CAgDjC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,WASvC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,OAAO,WAS9C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAC,OAAO,EAAE,OAAO,EAAC,MAAM,UAG9D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAC,OAAO,EAAE,GAAG,YAAY,CA4B1D;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,eAAe,EAAE,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAQ/I;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CACxC,eAAe,EAAE,WAAW,CAAC,OAAO,EACpC,OAAO,EAAE,CAAC,aAAa,GAAG,aAAa,EAAE,CAAC,EAAE,GAC7C,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAY7B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,+BAA+B,CACjD,OAAO,EAAE,sCAAsC,EAC/C,OAAO,EAAE,CAAC,aAAa,GAAG,aAAa,EAAE,CAAC,EAAE,GAC7C,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA4E7B;AAED;;;;;;GAMG;AACH,wBAAsB,iCAAiC,CACnD,OAAO,EAAE,wCAAwC,EACjD,OAAO,EAAE,CAAC,aAAa,GAAG,aAAa,EAAE,CAAC,EAAE,GAC7C,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA4D7B;AAED;;;;;;;;;GASG;AACH,wBAAsB,gCAAgC,CAClD,OAAO,EAAE,uCAAuC,EAChD,OAAO,EAAE,CAAC,aAAa,GAAG,aAAa,EAAE,CAAC,EAAE,GAC7C,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAiF7B;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,YAAY,EAAE,EAAE,+BAA+B,+BAwBhI;AAuDD;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,8BAA8B,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAkIxH"}
|
|
@@ -118,6 +118,10 @@ export interface PrepareIgnoreRectanglesOptions {
|
|
|
118
118
|
blockOutStatusBar?: boolean;
|
|
119
119
|
blockOutToolBar?: boolean;
|
|
120
120
|
};
|
|
121
|
+
/** Whether this is a hybrid (native + webview) app; enables status bar fallback when overlay reports zero */
|
|
122
|
+
isHybridApp?: boolean;
|
|
123
|
+
/** Platform version from the device (e.g. "14.0"); used for Android API level lookup in fallback */
|
|
124
|
+
platformVersion?: string;
|
|
121
125
|
actualFilePath?: string;
|
|
122
126
|
}
|
|
123
127
|
export interface PreparedIgnoreRectangles {
|
|
@@ -126,6 +130,60 @@ export interface PreparedIgnoreRectangles {
|
|
|
126
130
|
/** Whether any ignore rectangles were found */
|
|
127
131
|
hasIgnoreRectangles: boolean;
|
|
128
132
|
}
|
|
133
|
+
export interface DetermineWebScreenIgnoreRegionsOptions {
|
|
134
|
+
/** The browser instance */
|
|
135
|
+
browserInstance: WebdriverIO.Browser;
|
|
136
|
+
/** The device pixel ratio */
|
|
137
|
+
devicePixelRatio: number;
|
|
138
|
+
/** The device rectangles (contains viewport offset for mobile) */
|
|
139
|
+
deviceRectangles: DeviceRectangles;
|
|
140
|
+
/** Whether this is an Android device */
|
|
141
|
+
isAndroid: boolean;
|
|
142
|
+
/** Whether this is an Android native web screenshot */
|
|
143
|
+
isAndroidNativeWebScreenshot: boolean;
|
|
144
|
+
/** Whether this is an iOS device */
|
|
145
|
+
isIOS: boolean;
|
|
146
|
+
/** Padding in device pixels added to each side of computed ignore regions (caller defaults to 1). */
|
|
147
|
+
ignoreRegionPadding: number;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Options for full-page web ignore regions (desktop and mobile).
|
|
151
|
+
* Full-page image is in document coordinates; on mobile scroll-and-stitch the canvas
|
|
152
|
+
* crops off the top addressBarShadowPadding (CSS px), so we subtract that from y.
|
|
153
|
+
*/
|
|
154
|
+
export interface DetermineWebFullPageIgnoreRegionsOptions {
|
|
155
|
+
/** The browser instance */
|
|
156
|
+
browserInstance: WebdriverIO.Browser;
|
|
157
|
+
/** The device pixel ratio */
|
|
158
|
+
devicePixelRatio: number;
|
|
159
|
+
/** Padding in device pixels added to each side of computed ignore regions (caller defaults to 1). */
|
|
160
|
+
ignoreRegionPadding: number;
|
|
161
|
+
/**
|
|
162
|
+
* Top crop offset in CSS pixels (e.g. addressBarShadowPadding on mobile full-page).
|
|
163
|
+
* When set, canvas y = (documentY - fullPageCropTopPaddingCSS) × DPR so ignore regions
|
|
164
|
+
* align with the stitched image which crops this much from the top of each tile.
|
|
165
|
+
* @default 0
|
|
166
|
+
*/
|
|
167
|
+
fullPageCropTopPaddingCSS?: number;
|
|
168
|
+
}
|
|
169
|
+
export interface DetermineWebElementIgnoreRegionsOptions {
|
|
170
|
+
/** The browser instance */
|
|
171
|
+
browserInstance: WebdriverIO.Browser;
|
|
172
|
+
/** The device pixel ratio */
|
|
173
|
+
devicePixelRatio: number;
|
|
174
|
+
/** The root element being captured in the element screenshot */
|
|
175
|
+
rootElement: WebdriverIO.Element;
|
|
176
|
+
/** Padding in device pixels added to each side of computed ignore regions (caller defaults to 1). */
|
|
177
|
+
ignoreRegionPadding: number;
|
|
178
|
+
/**
|
|
179
|
+
* When both this and isWebDriverElementScreenshot are true, the element image is at CSS pixel size
|
|
180
|
+
* (native driver returns a downscaled image). We then output ignore regions in CSS pixel coordinates
|
|
181
|
+
* by dividing by DPR; otherwise regions are in device pixels.
|
|
182
|
+
*/
|
|
183
|
+
isAndroidNativeWebScreenshot?: boolean;
|
|
184
|
+
/** When true, the element screenshot came from the native driver (no fallback crop). */
|
|
185
|
+
isWebDriverElementScreenshot?: boolean;
|
|
186
|
+
}
|
|
129
187
|
export interface BoundingBox extends BaseBoundingBox {
|
|
130
188
|
}
|
|
131
189
|
export interface IgnoreBoxes extends BoundingBox {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rectangles.interfaces.d.ts","sourceRoot":"","sources":["../../src/methods/rectangles.interfaces.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rectangles.interfaces.d.ts","sourceRoot":"","sources":["../../src/methods/rectangles.interfaces.ts"],"names":[],"mappings":"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"}
|