@applitools/eyes-testcafe 2.0.0-beta.9 → 3.0.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 +540 -0
- package/LICENSE +1 -1
- package/README.md +7 -531
- package/dist/api.js +51 -0
- package/dist/extract-environment.js +15 -0
- package/dist/index-legacy.js +5 -0
- package/dist/index.js +19 -0
- package/dist/legacy.js +225 -0
- package/dist/spec-driver.js +245 -0
- package/package.json +73 -77
- package/types/index-legacy.d.ts +2 -0
- package/types/index.d.ts +1833 -0
- package/dist/captureFrameAndPoll.js +0 -1468
- package/dist/captureFrameAndPollForIE.js +0 -12569
- package/index.js +0 -30
- package/lib/BordersAwareElementContentLocationProvider.js +0 -79
- package/lib/Eyes.js +0 -927
- package/lib/EyesFactory.js +0 -73
- package/lib/EyesTestCafe.js +0 -1277
- package/lib/EyesTestcafeUtils.js +0 -440
- package/lib/EyesVisualGrid.js +0 -345
- package/lib/ImageOrientationHandler.js +0 -31
- package/lib/JavascriptHandler.js +0 -20
- package/lib/TestCafeExecutor.js +0 -57
- package/lib/capture/EyesWebDriverScreenshot.js +0 -650
- package/lib/capture/EyesWebDriverScreenshotFactory.js +0 -32
- package/lib/capture/FirefoxScreenshotImageProvider.js +0 -63
- package/lib/capture/ImageProviderFactory.js +0 -38
- package/lib/capture/SafariScreenshotImageProvider.js +0 -254
- package/lib/capture/TakesScreenshotImageProvider.js +0 -35
- package/lib/errors/EyesDriverOperationError.js +0 -10
- package/lib/errors/NoFramesError.js +0 -7
- package/lib/fluent/AccessibilityRegionByElement.js +0 -46
- package/lib/fluent/AccessibilityRegionBySelector.js +0 -58
- package/lib/fluent/FloatingRegionByElement.js +0 -56
- package/lib/fluent/FloatingRegionBySelector.js +0 -63
- package/lib/fluent/FrameLocator.js +0 -110
- package/lib/fluent/IgnoreRegionByElement.js +0 -51
- package/lib/fluent/IgnoreRegionBySelector.js +0 -57
- package/lib/fluent/SelectorByElement.js +0 -37
- package/lib/fluent/SelectorByLocator.js +0 -47
- package/lib/fluent/Target.js +0 -17
- package/lib/fluent/TestcafeCheckSettings.js +0 -352
- package/lib/frames/Frame.js +0 -149
- package/lib/frames/FrameChain.js +0 -175
- package/lib/getCaptureDomScript.js +0 -14
- package/lib/hash.js +0 -15
- package/lib/isTestcafeSelector.js +0 -7
- package/lib/makeClientFunctionWrapper.js +0 -61
- package/lib/positioning/CssTranslatePositionMemento.js +0 -39
- package/lib/positioning/CssTranslatePositionProvider.js +0 -130
- package/lib/positioning/ElementPositionMemento.js +0 -36
- package/lib/positioning/ElementPositionProvider.js +0 -88
- package/lib/positioning/FirefoxRegionPositionCompensation.js +0 -45
- package/lib/positioning/ImageRotation.js +0 -22
- package/lib/positioning/OverflowAwareCssTranslatePositionProvider.js +0 -17
- package/lib/positioning/OverflowAwareScrollPositionProvider.js +0 -17
- package/lib/positioning/RegionPositionCompensationFactory.js +0 -37
- package/lib/positioning/SafariRegionPositionCompensation.js +0 -26
- package/lib/positioning/ScrollPositionMemento.js +0 -36
- package/lib/positioning/ScrollPositionProvider.js +0 -118
- package/lib/positioning/fixImageMarkPosition.js +0 -36
- package/lib/regionVisibility/MoveToRegionVisibilityStrategy.js +0 -55
- package/lib/regionVisibility/NopRegionVisibilityStrategy.js +0 -35
- package/lib/regionVisibility/RegionVisibilityStrategy.js +0 -30
- package/lib/runner/ClassicRunner.js +0 -49
- package/lib/runner/EyesRunner.js +0 -41
- package/lib/runner/TestResultContainer.js +0 -38
- package/lib/runner/TestResultsSummary.js +0 -112
- package/lib/runner/VisualGridRunner.js +0 -57
- package/lib/safeExecuteFunction.js +0 -28
- package/lib/wrappers/EyesTargetLocator.js +0 -335
- package/lib/wrappers/EyesWebDriver.js +0 -571
- package/lib/wrappers/EyesWebElement.js +0 -383
- package/lib/wrappers/EyesWebElementPromise.js +0 -68
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const {MutableImage, Region} = require('@applitools/eyes-common')
|
|
4
|
-
const {ImageProvider} = require('@applitools/eyes-sdk-core')
|
|
5
|
-
|
|
6
|
-
const {EyesWebDriverScreenshot} = require('./EyesWebDriverScreenshot')
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* This class is needed because in certain versions of firefox, a frame screenshot only brings the frame viewport.
|
|
10
|
-
* To solve this issue, we create an image with the full size of the browser viewport and place the frame image on it
|
|
11
|
-
* in the appropriate place.
|
|
12
|
-
*
|
|
13
|
-
* @ignore
|
|
14
|
-
*/
|
|
15
|
-
class FirefoxScreenshotImageProvider extends ImageProvider {
|
|
16
|
-
/**
|
|
17
|
-
* @param {Eyes} eyes
|
|
18
|
-
* @param {Logger} logger
|
|
19
|
-
* @param {EyesWebDriver} tsInstance
|
|
20
|
-
*/
|
|
21
|
-
constructor(eyes, logger, tsInstance) {
|
|
22
|
-
super()
|
|
23
|
-
|
|
24
|
-
this._eyes = eyes
|
|
25
|
-
this._logger = logger
|
|
26
|
-
this._tsInstance = tsInstance
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* @inheritDoc
|
|
31
|
-
* @return {Promise<MutableImage>}
|
|
32
|
-
*/
|
|
33
|
-
async getImage() {
|
|
34
|
-
this._logger.verbose('Getting screenshot as base64...')
|
|
35
|
-
const screenshot64 = await this._tsInstance.takeScreenshot()
|
|
36
|
-
this._logger.verbose('Done getting base64! Creating BufferedImage...')
|
|
37
|
-
|
|
38
|
-
const image = new MutableImage(screenshot64)
|
|
39
|
-
await this._eyes.getDebugScreenshotsProvider().save(image, 'FIREFOX_FRAME')
|
|
40
|
-
|
|
41
|
-
const frameChain = this._eyes.getDriver().getFrameChain()
|
|
42
|
-
if (frameChain.size() > 0) {
|
|
43
|
-
// Frame frame = frameChain.peek();
|
|
44
|
-
// Region region = this._eyes.getRegionToCheck();
|
|
45
|
-
const screenshot = await EyesWebDriverScreenshot.fromScreenshotType(
|
|
46
|
-
this._logger,
|
|
47
|
-
this._eyes.getDriver(),
|
|
48
|
-
image,
|
|
49
|
-
)
|
|
50
|
-
|
|
51
|
-
const viewportSize = await this._eyes.getViewportSize()
|
|
52
|
-
const location = screenshot.getFrameWindow().getLocation()
|
|
53
|
-
this._logger.verbose(`frame.getLocation(): ${location}`)
|
|
54
|
-
|
|
55
|
-
const scaleRatio = this._eyes.getDevicePixelRatio()
|
|
56
|
-
return image.crop(new Region(location.scale(scaleRatio), viewportSize.scale(scaleRatio)))
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
return image
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
exports.FirefoxScreenshotImageProvider = FirefoxScreenshotImageProvider
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const {BrowserNames} = require('@applitools/eyes-common')
|
|
4
|
-
|
|
5
|
-
const {TakesScreenshotImageProvider} = require('./TakesScreenshotImageProvider')
|
|
6
|
-
const {FirefoxScreenshotImageProvider} = require('./FirefoxScreenshotImageProvider')
|
|
7
|
-
const {SafariScreenshotImageProvider} = require('./SafariScreenshotImageProvider')
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* @ignore
|
|
11
|
-
*/
|
|
12
|
-
class ImageProviderFactory {
|
|
13
|
-
/**
|
|
14
|
-
* @param {UserAgent} userAgent
|
|
15
|
-
* @param {Eyes} eyes
|
|
16
|
-
* @param {Logger} logger
|
|
17
|
-
* @param {EyesWebDriver} driver
|
|
18
|
-
* @return {ImageProvider}
|
|
19
|
-
*/
|
|
20
|
-
static getImageProvider(userAgent, eyes, logger, driver) {
|
|
21
|
-
if (userAgent) {
|
|
22
|
-
if (userAgent.getBrowser() === BrowserNames.Firefox) {
|
|
23
|
-
try {
|
|
24
|
-
if (parseInt(userAgent.getBrowserMajorVersion(), 10) >= 48) {
|
|
25
|
-
return new FirefoxScreenshotImageProvider(eyes, logger, driver)
|
|
26
|
-
}
|
|
27
|
-
} catch (ignored) {
|
|
28
|
-
return new TakesScreenshotImageProvider(logger, driver)
|
|
29
|
-
}
|
|
30
|
-
} else if (userAgent.getBrowser() === BrowserNames.Safari) {
|
|
31
|
-
return new SafariScreenshotImageProvider(eyes, logger, driver, userAgent)
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
return new TakesScreenshotImageProvider(logger, driver)
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
exports.ImageProviderFactory = ImageProviderFactory
|
|
@@ -1,254 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const {MutableImage, Region, OSNames} = require('@applitools/eyes-common')
|
|
4
|
-
const {ImageProvider} = require('@applitools/eyes-sdk-core')
|
|
5
|
-
|
|
6
|
-
const {TestCafeExecutor} = require('../TestCafeExecutor')
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* @private
|
|
10
|
-
* @ignore
|
|
11
|
-
*/
|
|
12
|
-
class DeviceData {
|
|
13
|
-
constructor(width, height, vpWidth, vpHeight) {
|
|
14
|
-
this.width = width
|
|
15
|
-
this.height = height
|
|
16
|
-
this.vpWidth = vpWidth
|
|
17
|
-
this.vpHeight = vpHeight
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
hashCode() {
|
|
21
|
-
return this.width * 100000 + this.height * 1000 + this.vpWidth * 100 + this.vpHeight
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* @private
|
|
27
|
-
* @ignore
|
|
28
|
-
*/
|
|
29
|
-
class RegionAndVersion {
|
|
30
|
-
constructor(version, region) {
|
|
31
|
-
this.majorVersion = version
|
|
32
|
-
this.region = region
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
getMajorVersion() {
|
|
36
|
-
return this.majorVersion
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
getRegion() {
|
|
40
|
-
return this.region
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* @ignore
|
|
46
|
-
*/
|
|
47
|
-
class SafariScreenshotImageProvider extends ImageProvider {
|
|
48
|
-
/**
|
|
49
|
-
* @param {EyesTestCafe} eyes
|
|
50
|
-
* @param {Logger} logger - A Logger instance.
|
|
51
|
-
* @param {EyesWebDriver} tsInstance
|
|
52
|
-
* @param {UserAgent} userAgent
|
|
53
|
-
*/
|
|
54
|
-
constructor(eyes, logger, tsInstance, userAgent) {
|
|
55
|
-
super()
|
|
56
|
-
|
|
57
|
-
this._eyes = eyes
|
|
58
|
-
this._logger = logger
|
|
59
|
-
this._tsInstance = tsInstance
|
|
60
|
-
this._userAgent = userAgent
|
|
61
|
-
|
|
62
|
-
/** @type {Map<int, RegionAndVersion>} */
|
|
63
|
-
this._devicesRegions = undefined
|
|
64
|
-
this._jsExecutor = new TestCafeExecutor(tsInstance.getDriver())
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* @inheritDoc
|
|
69
|
-
* @return {Promise<MutableImage>}
|
|
70
|
-
*/
|
|
71
|
-
async getImage() {
|
|
72
|
-
this._logger.verbose('Getting screenshot as base64...')
|
|
73
|
-
let screenshot64 = await this._tsInstance.takeScreenshot()
|
|
74
|
-
screenshot64 = screenshot64.toString('base64')
|
|
75
|
-
screenshot64 = screenshot64.replace(/\r\n/g, '') // Because of SauceLabs returns image with line breaks
|
|
76
|
-
|
|
77
|
-
this._logger.verbose('Done getting base64! Creating MutableImage...')
|
|
78
|
-
const image = new MutableImage(screenshot64)
|
|
79
|
-
await this._eyes.getDebugScreenshotsProvider().save(image, 'SAFARI')
|
|
80
|
-
|
|
81
|
-
if (this._eyes.getIsCutProviderExplicitlySet()) {
|
|
82
|
-
return image
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
const originalViewportSize = await this._eyes.getViewportSize()
|
|
86
|
-
this._logger.verbose(`logical viewport size: ${originalViewportSize}`)
|
|
87
|
-
|
|
88
|
-
if (this._userAgent.getOS() === OSNames.IOS) {
|
|
89
|
-
if (!this._devicesRegions) {
|
|
90
|
-
this._initDeviceRegionsTable()
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
const imageWidth = image.getWidth()
|
|
94
|
-
const imageHeight = image.getHeight()
|
|
95
|
-
|
|
96
|
-
this._logger.verbose(`physical device pixel size: ${imageWidth} x ${imageHeight}`)
|
|
97
|
-
|
|
98
|
-
const deviceData = new DeviceData(
|
|
99
|
-
imageWidth,
|
|
100
|
-
imageHeight,
|
|
101
|
-
originalViewportSize.getWidth(),
|
|
102
|
-
originalViewportSize.getHeight(),
|
|
103
|
-
)
|
|
104
|
-
|
|
105
|
-
if (this._devicesRegions.has(deviceData.hashCode())) {
|
|
106
|
-
const majorVersion = parseInt(this._userAgent.getBrowserMajorVersion(), 10)
|
|
107
|
-
this._logger.verbose('device model found in hash table')
|
|
108
|
-
const cropByVersion = this._devicesRegions.get(deviceData.hashCode())
|
|
109
|
-
if (cropByVersion.getMajorVersion() <= majorVersion) {
|
|
110
|
-
await image.crop(cropByVersion.getRegion())
|
|
111
|
-
} else {
|
|
112
|
-
this._logger.verbose('device version not found in list. returning original image.')
|
|
113
|
-
}
|
|
114
|
-
} else {
|
|
115
|
-
this._logger.verbose('device not found in list. returning original image.')
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
return image
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
_initDeviceRegionsTable() {
|
|
123
|
-
this._devicesRegions = new Map()
|
|
124
|
-
|
|
125
|
-
// In JS, we need to maintain object reference if we want to use object as a key of Map.
|
|
126
|
-
// But if we use primitive type, we don't need to. So, we call `hashCode` method to convert class to primitive
|
|
127
|
-
this._devicesRegions.set(
|
|
128
|
-
new DeviceData(828, 1792, 414, 719).hashCode(),
|
|
129
|
-
new RegionAndVersion(12, new Region(0, 189, 828, 1436)),
|
|
130
|
-
)
|
|
131
|
-
this._devicesRegions.set(
|
|
132
|
-
new DeviceData(1792, 828, 808, 364).hashCode(),
|
|
133
|
-
new RegionAndVersion(12, new Region(88, 101, 1616, 685)),
|
|
134
|
-
)
|
|
135
|
-
this._devicesRegions.set(
|
|
136
|
-
new DeviceData(1242, 2688, 414, 719).hashCode(),
|
|
137
|
-
new RegionAndVersion(12, new Region(0, 283, 1242, 2155)),
|
|
138
|
-
)
|
|
139
|
-
this._devicesRegions.set(
|
|
140
|
-
new DeviceData(2688, 1242, 808, 364).hashCode(),
|
|
141
|
-
new RegionAndVersion(12, new Region(132, 151, 2424, 1028)),
|
|
142
|
-
)
|
|
143
|
-
|
|
144
|
-
this._devicesRegions.set(
|
|
145
|
-
new DeviceData(1125, 2436, 375, 635).hashCode(),
|
|
146
|
-
new RegionAndVersion(11, new Region(0, 283, 1125, 1903)),
|
|
147
|
-
)
|
|
148
|
-
this._devicesRegions.set(
|
|
149
|
-
new DeviceData(2436, 1125, 724, 325).hashCode(),
|
|
150
|
-
new RegionAndVersion(11, new Region(132, 151, 2436, 930)),
|
|
151
|
-
)
|
|
152
|
-
|
|
153
|
-
this._devicesRegions.set(
|
|
154
|
-
new DeviceData(1242, 2208, 414, 622).hashCode(),
|
|
155
|
-
new RegionAndVersion(11, new Region(0, 211, 1242, 1863)),
|
|
156
|
-
)
|
|
157
|
-
this._devicesRegions.set(
|
|
158
|
-
new DeviceData(2208, 1242, 736, 364).hashCode(),
|
|
159
|
-
new RegionAndVersion(11, new Region(0, 151, 2208, 1090)),
|
|
160
|
-
)
|
|
161
|
-
|
|
162
|
-
this._devicesRegions.set(
|
|
163
|
-
new DeviceData(1242, 2208, 414, 628).hashCode(),
|
|
164
|
-
new RegionAndVersion(10, new Region(0, 193, 1242, 1882)),
|
|
165
|
-
)
|
|
166
|
-
this._devicesRegions.set(
|
|
167
|
-
new DeviceData(2208, 1242, 736, 337).hashCode(),
|
|
168
|
-
new RegionAndVersion(10, new Region(0, 231, 2208, 1010)),
|
|
169
|
-
)
|
|
170
|
-
|
|
171
|
-
this._devicesRegions.set(
|
|
172
|
-
new DeviceData(750, 1334, 375, 553).hashCode(),
|
|
173
|
-
new RegionAndVersion(11, new Region(0, 141, 750, 1104)),
|
|
174
|
-
)
|
|
175
|
-
this._devicesRegions.set(
|
|
176
|
-
new DeviceData(1334, 750, 667, 325).hashCode(),
|
|
177
|
-
new RegionAndVersion(11, new Region(0, 101, 1334, 648)),
|
|
178
|
-
)
|
|
179
|
-
|
|
180
|
-
this._devicesRegions.set(
|
|
181
|
-
new DeviceData(750, 1334, 375, 559).hashCode(),
|
|
182
|
-
new RegionAndVersion(10, new Region(0, 129, 750, 1116)),
|
|
183
|
-
)
|
|
184
|
-
this._devicesRegions.set(
|
|
185
|
-
new DeviceData(1334, 750, 667, 331).hashCode(),
|
|
186
|
-
new RegionAndVersion(10, new Region(0, 89, 1334, 660)),
|
|
187
|
-
)
|
|
188
|
-
|
|
189
|
-
this._devicesRegions.set(
|
|
190
|
-
new DeviceData(640, 1136, 320, 460).hashCode(),
|
|
191
|
-
new RegionAndVersion(10, new Region(0, 129, 640, 918)),
|
|
192
|
-
)
|
|
193
|
-
this._devicesRegions.set(
|
|
194
|
-
new DeviceData(1136, 640, 568, 232).hashCode(),
|
|
195
|
-
new RegionAndVersion(10, new Region(0, 89, 1136, 462)),
|
|
196
|
-
)
|
|
197
|
-
|
|
198
|
-
this._devicesRegions.set(
|
|
199
|
-
new DeviceData(1536, 2048, 768, 954).hashCode(),
|
|
200
|
-
new RegionAndVersion(11, new Region(0, 141, 1536, 1907)),
|
|
201
|
-
)
|
|
202
|
-
this._devicesRegions.set(
|
|
203
|
-
new DeviceData(2048, 1536, 1024, 698).hashCode(),
|
|
204
|
-
new RegionAndVersion(11, new Region(0, 141, 2048, 1395)),
|
|
205
|
-
)
|
|
206
|
-
|
|
207
|
-
this._devicesRegions.set(
|
|
208
|
-
new DeviceData(1536, 2048, 768, 922).hashCode(),
|
|
209
|
-
new RegionAndVersion(11, new Region(0, 206, 1536, 1842)),
|
|
210
|
-
)
|
|
211
|
-
this._devicesRegions.set(
|
|
212
|
-
new DeviceData(2048, 1536, 1024, 666).hashCode(),
|
|
213
|
-
new RegionAndVersion(11, new Region(0, 206, 2048, 1330)),
|
|
214
|
-
)
|
|
215
|
-
|
|
216
|
-
this._devicesRegions.set(
|
|
217
|
-
new DeviceData(1536, 2048, 768, 960).hashCode(),
|
|
218
|
-
new RegionAndVersion(10, new Region(0, 129, 1536, 1919)),
|
|
219
|
-
)
|
|
220
|
-
this._devicesRegions.set(
|
|
221
|
-
new DeviceData(2048, 1536, 1024, 704).hashCode(),
|
|
222
|
-
new RegionAndVersion(10, new Region(0, 129, 2048, 1407)),
|
|
223
|
-
)
|
|
224
|
-
|
|
225
|
-
this._devicesRegions.set(
|
|
226
|
-
new DeviceData(1536, 2048, 768, 928).hashCode(),
|
|
227
|
-
new RegionAndVersion(10, new Region(0, 194, 1536, 1854)),
|
|
228
|
-
)
|
|
229
|
-
this._devicesRegions.set(
|
|
230
|
-
new DeviceData(2048, 1536, 1024, 672).hashCode(),
|
|
231
|
-
new RegionAndVersion(10, new Region(0, 194, 2048, 1342)),
|
|
232
|
-
)
|
|
233
|
-
|
|
234
|
-
this._devicesRegions.set(
|
|
235
|
-
new DeviceData(2048, 2732, 1024, 1296).hashCode(),
|
|
236
|
-
new RegionAndVersion(11, new Region(0, 141, 2048, 2591)),
|
|
237
|
-
)
|
|
238
|
-
this._devicesRegions.set(
|
|
239
|
-
new DeviceData(2732, 2048, 1366, 954).hashCode(),
|
|
240
|
-
new RegionAndVersion(11, new Region(0, 141, 2732, 1907)),
|
|
241
|
-
)
|
|
242
|
-
|
|
243
|
-
this._devicesRegions.set(
|
|
244
|
-
new DeviceData(1668, 2224, 834, 1042).hashCode(),
|
|
245
|
-
new RegionAndVersion(11, new Region(0, 141, 1668, 2083)),
|
|
246
|
-
)
|
|
247
|
-
this._devicesRegions.set(
|
|
248
|
-
new DeviceData(2224, 1668, 1112, 764).hashCode(),
|
|
249
|
-
new RegionAndVersion(11, new Region(0, 141, 2224, 1527)),
|
|
250
|
-
)
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
exports.SafariScreenshotImageProvider = SafariScreenshotImageProvider
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const {MutableImage} = require('@applitools/eyes-common')
|
|
4
|
-
const {ImageProvider} = require('@applitools/eyes-sdk-core')
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* An image provider based on WebDriver's interface.
|
|
8
|
-
*
|
|
9
|
-
* @ignore
|
|
10
|
-
*/
|
|
11
|
-
class TakesScreenshotImageProvider extends ImageProvider {
|
|
12
|
-
/**
|
|
13
|
-
* @param {Logger} logger - A Logger instance.
|
|
14
|
-
* @param {EyesWebDriver} tsInstance
|
|
15
|
-
*/
|
|
16
|
-
constructor(logger, tsInstance) {
|
|
17
|
-
super()
|
|
18
|
-
|
|
19
|
-
this._logger = logger
|
|
20
|
-
this._tsInstance = tsInstance
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* @override
|
|
25
|
-
* @return {Promise<MutableImage>}
|
|
26
|
-
*/
|
|
27
|
-
async getImage() {
|
|
28
|
-
this._logger.verbose('Getting screenshot as base64...')
|
|
29
|
-
const screenshot64 = await this._tsInstance.takeScreenshot()
|
|
30
|
-
this._logger.verbose('Done getting base64! Creating MutableImage...')
|
|
31
|
-
return new MutableImage(screenshot64)
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
exports.TakesScreenshotImageProvider = TakesScreenshotImageProvider
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const {EyesError} = require('@applitools/eyes-common')
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Encapsulates an error when trying to perform an action using WebDriver.
|
|
7
|
-
*/
|
|
8
|
-
class EyesDriverOperationError extends EyesError {}
|
|
9
|
-
|
|
10
|
-
exports.EyesDriverOperationError = EyesDriverOperationError
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const {Location, CoordinatesType} = require('@applitools/eyes-common')
|
|
4
|
-
const {GetAccessibilityRegion, AccessibilityMatchSettings} = require('@applitools/eyes-sdk-core')
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* @ignore
|
|
8
|
-
*/
|
|
9
|
-
class AccessibilityRegionByElement extends GetAccessibilityRegion {
|
|
10
|
-
/**
|
|
11
|
-
* @param {WebElement} regionSelector
|
|
12
|
-
* @param {AccessibilityRegionType} regionType
|
|
13
|
-
*/
|
|
14
|
-
constructor(regionSelector, regionType) {
|
|
15
|
-
super()
|
|
16
|
-
this._element = regionSelector
|
|
17
|
-
this._regionType = regionType
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
// noinspection JSCheckFunctionSignatures
|
|
21
|
-
/**
|
|
22
|
-
* @inheritDoc
|
|
23
|
-
* @param {Eyes} eyes
|
|
24
|
-
* @param {EyesScreenshot} screenshot
|
|
25
|
-
* @return {Promise<AccessibilityMatchSettings[]>}
|
|
26
|
-
*/
|
|
27
|
-
async getRegion(eyes, screenshot) {
|
|
28
|
-
const rect = await this._element.getRect()
|
|
29
|
-
const pTag = screenshot.convertLocation(
|
|
30
|
-
new Location(rect),
|
|
31
|
-
CoordinatesType.CONTEXT_RELATIVE,
|
|
32
|
-
CoordinatesType.SCREENSHOT_AS_IS,
|
|
33
|
-
)
|
|
34
|
-
|
|
35
|
-
const accessibilityRegion = new AccessibilityMatchSettings({
|
|
36
|
-
left: pTag.getX(),
|
|
37
|
-
top: pTag.getY(),
|
|
38
|
-
width: rect.width,
|
|
39
|
-
height: rect.height,
|
|
40
|
-
type: this._regionType,
|
|
41
|
-
})
|
|
42
|
-
return [accessibilityRegion]
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
exports.AccessibilityRegionByElement = AccessibilityRegionByElement
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const {
|
|
4
|
-
GetAccessibilityRegion,
|
|
5
|
-
Location,
|
|
6
|
-
CoordinatesType,
|
|
7
|
-
AccessibilityMatchSettings,
|
|
8
|
-
} = require('@applitools/eyes-sdk-core')
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* @ignore
|
|
12
|
-
*/
|
|
13
|
-
class AccessibilityRegionBySelector extends GetAccessibilityRegion {
|
|
14
|
-
/**
|
|
15
|
-
* @param {By} regionSelector
|
|
16
|
-
* @param {AccessibilityRegionType} regionType
|
|
17
|
-
*/
|
|
18
|
-
constructor(regionSelector, regionType) {
|
|
19
|
-
super()
|
|
20
|
-
this._selector = regionSelector
|
|
21
|
-
this._regionType = regionType
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
// noinspection JSCheckFunctionSignatures
|
|
25
|
-
/**
|
|
26
|
-
* @inheritDoc
|
|
27
|
-
* @param {Eyes} eyes
|
|
28
|
-
* @param {EyesScreenshot} screenshot
|
|
29
|
-
* @return {Promise<AccessibilityMatchSettings[]>}
|
|
30
|
-
*/
|
|
31
|
-
async getRegion(eyes, screenshot) {
|
|
32
|
-
const elements = await eyes.getDriver().findElements(this._selector)
|
|
33
|
-
|
|
34
|
-
const values = []
|
|
35
|
-
if (elements && elements.length > 0) {
|
|
36
|
-
for (let i = 0; i < elements.length; i += 1) {
|
|
37
|
-
const rect = await elements[i].getRect()
|
|
38
|
-
const lTag = screenshot.convertLocation(
|
|
39
|
-
new Location(rect),
|
|
40
|
-
CoordinatesType.CONTEXT_RELATIVE,
|
|
41
|
-
CoordinatesType.SCREENSHOT_AS_IS,
|
|
42
|
-
)
|
|
43
|
-
const accessibilityRegion = new AccessibilityMatchSettings({
|
|
44
|
-
left: lTag.getX(),
|
|
45
|
-
top: lTag.getY(),
|
|
46
|
-
width: rect.width,
|
|
47
|
-
height: rect.height,
|
|
48
|
-
type: this._regionType,
|
|
49
|
-
})
|
|
50
|
-
values.push(accessibilityRegion)
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
return values
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
exports.AccessibilityRegionBySelector = AccessibilityRegionBySelector
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const {Location, CoordinatesType, FloatingMatchSettings} = require('@applitools/eyes-common')
|
|
4
|
-
const {GetFloatingRegion} = require('@applitools/eyes-sdk-core')
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* @ignore
|
|
8
|
-
*/
|
|
9
|
-
class FloatingRegionByElement extends GetFloatingRegion {
|
|
10
|
-
/**
|
|
11
|
-
* @param {WebElement} webElement
|
|
12
|
-
* @param {number} maxUpOffset
|
|
13
|
-
* @param {number} maxDownOffset
|
|
14
|
-
* @param {number} maxLeftOffset
|
|
15
|
-
* @param {number} maxRightOffset
|
|
16
|
-
*/
|
|
17
|
-
constructor(webElement, maxUpOffset, maxDownOffset, maxLeftOffset, maxRightOffset) {
|
|
18
|
-
super()
|
|
19
|
-
this._element = webElement
|
|
20
|
-
this._maxUpOffset = maxUpOffset
|
|
21
|
-
this._maxDownOffset = maxDownOffset
|
|
22
|
-
this._maxLeftOffset = maxLeftOffset
|
|
23
|
-
this._maxRightOffset = maxRightOffset
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
// noinspection JSCheckFunctionSignatures
|
|
27
|
-
/**
|
|
28
|
-
* @inheritDoc
|
|
29
|
-
* @param {Eyes} eyes
|
|
30
|
-
* @param {EyesScreenshot} screenshot
|
|
31
|
-
* @return {Promise<FloatingMatchSettings[]>}
|
|
32
|
-
*/
|
|
33
|
-
async getRegion(eyes, screenshot) {
|
|
34
|
-
// eslint-disable-line no-unused-vars
|
|
35
|
-
const rect = await this._element.getRect()
|
|
36
|
-
const lTag = screenshot.convertLocation(
|
|
37
|
-
new Location(rect),
|
|
38
|
-
CoordinatesType.CONTEXT_RELATIVE,
|
|
39
|
-
CoordinatesType.SCREENSHOT_AS_IS,
|
|
40
|
-
)
|
|
41
|
-
|
|
42
|
-
const floatingRegion = new FloatingMatchSettings({
|
|
43
|
-
left: lTag.getX(),
|
|
44
|
-
top: lTag.getY(),
|
|
45
|
-
width: rect.width,
|
|
46
|
-
height: rect.height,
|
|
47
|
-
maxUpOffset: this._maxUpOffset,
|
|
48
|
-
maxDownOffset: this._maxDownOffset,
|
|
49
|
-
maxLeftOffset: this._maxLeftOffset,
|
|
50
|
-
maxRightOffset: this._maxRightOffset,
|
|
51
|
-
})
|
|
52
|
-
return [floatingRegion]
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
exports.FloatingRegionByElement = FloatingRegionByElement
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const {Location, CoordinatesType, FloatingMatchSettings} = require('@applitools/eyes-common')
|
|
4
|
-
const {GetFloatingRegion} = require('@applitools/eyes-sdk-core')
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* @ignore
|
|
8
|
-
*/
|
|
9
|
-
class FloatingRegionBySelector extends GetFloatingRegion {
|
|
10
|
-
/**
|
|
11
|
-
* @param {By} regionSelector
|
|
12
|
-
* @param {number} maxUpOffset
|
|
13
|
-
* @param {number} maxDownOffset
|
|
14
|
-
* @param {number} maxLeftOffset
|
|
15
|
-
* @param {number} maxRightOffset
|
|
16
|
-
*/
|
|
17
|
-
constructor(regionSelector, maxUpOffset, maxDownOffset, maxLeftOffset, maxRightOffset) {
|
|
18
|
-
super()
|
|
19
|
-
this._selector = regionSelector
|
|
20
|
-
this._maxUpOffset = maxUpOffset
|
|
21
|
-
this._maxDownOffset = maxDownOffset
|
|
22
|
-
this._maxLeftOffset = maxLeftOffset
|
|
23
|
-
this._maxRightOffset = maxRightOffset
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
// noinspection JSCheckFunctionSignatures
|
|
27
|
-
/**
|
|
28
|
-
* @inheritDoc
|
|
29
|
-
* @param {Eyes} eyes
|
|
30
|
-
* @param {EyesScreenshot} screenshot
|
|
31
|
-
* @return {Promise<FloatingMatchSettings[]>}
|
|
32
|
-
*/
|
|
33
|
-
async getRegion(eyes, screenshot) {
|
|
34
|
-
const elements = await eyes.getDriver().findElements(this._selector)
|
|
35
|
-
|
|
36
|
-
const values = []
|
|
37
|
-
if (elements && elements.length > 0) {
|
|
38
|
-
for (let i = 0; i < elements.length; i += 1) {
|
|
39
|
-
const rect = await elements[i].getRect()
|
|
40
|
-
const lTag = screenshot.convertLocation(
|
|
41
|
-
new Location(rect),
|
|
42
|
-
CoordinatesType.CONTEXT_RELATIVE,
|
|
43
|
-
CoordinatesType.SCREENSHOT_AS_IS,
|
|
44
|
-
)
|
|
45
|
-
const floatingRegion = new FloatingMatchSettings({
|
|
46
|
-
left: lTag.getX(),
|
|
47
|
-
top: lTag.getY(),
|
|
48
|
-
width: rect.width,
|
|
49
|
-
height: rect.height,
|
|
50
|
-
maxUpOffset: this._maxUpOffset,
|
|
51
|
-
maxDownOffset: this._maxDownOffset,
|
|
52
|
-
maxLeftOffset: this._maxLeftOffset,
|
|
53
|
-
maxRightOffset: this._maxRightOffset,
|
|
54
|
-
})
|
|
55
|
-
values.push(floatingRegion)
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
return values
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
exports.FloatingRegionBySelector = FloatingRegionBySelector
|