@applitools/eyes-testcafe 2.0.0-beta.8 → 2.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.
Files changed (75) hide show
  1. package/CHANGELOG.md +467 -0
  2. package/LICENSE +1 -1
  3. package/README.md +7 -531
  4. package/dist/api.js +51 -0
  5. package/dist/extract-environment.js +15 -0
  6. package/dist/index-legacy.js +5 -0
  7. package/dist/index.js +19 -0
  8. package/dist/legacy.js +225 -0
  9. package/dist/spec-driver.js +245 -0
  10. package/package.json +73 -76
  11. package/types/index-legacy.d.ts +2 -0
  12. package/types/index.d.ts +1833 -0
  13. package/dist/captureFrameAndPoll.js +0 -1468
  14. package/dist/captureFrameAndPollForIE.js +0 -12569
  15. package/index.js +0 -29
  16. package/lib/BordersAwareElementContentLocationProvider.js +0 -79
  17. package/lib/Eyes.js +0 -927
  18. package/lib/EyesFactory.js +0 -73
  19. package/lib/EyesTestCafe.js +0 -1270
  20. package/lib/EyesTestcafeUtils.js +0 -440
  21. package/lib/EyesVisualGrid.js +0 -345
  22. package/lib/ImageOrientationHandler.js +0 -31
  23. package/lib/JavascriptHandler.js +0 -20
  24. package/lib/TestCafeExecutor.js +0 -57
  25. package/lib/capture/EyesWebDriverScreenshot.js +0 -650
  26. package/lib/capture/EyesWebDriverScreenshotFactory.js +0 -32
  27. package/lib/capture/FirefoxScreenshotImageProvider.js +0 -63
  28. package/lib/capture/ImageProviderFactory.js +0 -38
  29. package/lib/capture/SafariScreenshotImageProvider.js +0 -254
  30. package/lib/capture/TakesScreenshotImageProvider.js +0 -35
  31. package/lib/errors/EyesDriverOperationError.js +0 -10
  32. package/lib/errors/NoFramesError.js +0 -7
  33. package/lib/fluent/AccessibilityRegionByElement.js +0 -46
  34. package/lib/fluent/AccessibilityRegionBySelector.js +0 -58
  35. package/lib/fluent/FloatingRegionByElement.js +0 -56
  36. package/lib/fluent/FloatingRegionBySelector.js +0 -63
  37. package/lib/fluent/FrameLocator.js +0 -110
  38. package/lib/fluent/IgnoreRegionByElement.js +0 -51
  39. package/lib/fluent/IgnoreRegionBySelector.js +0 -57
  40. package/lib/fluent/SelectorByElement.js +0 -37
  41. package/lib/fluent/SelectorByLocator.js +0 -47
  42. package/lib/fluent/Target.js +0 -17
  43. package/lib/fluent/TestcafeCheckSettings.js +0 -352
  44. package/lib/frames/Frame.js +0 -149
  45. package/lib/frames/FrameChain.js +0 -175
  46. package/lib/getCaptureDomScript.js +0 -14
  47. package/lib/hash.js +0 -15
  48. package/lib/isTestcafeSelector.js +0 -7
  49. package/lib/makeClientFunctionWrapper.js +0 -61
  50. package/lib/positioning/CssTranslatePositionMemento.js +0 -39
  51. package/lib/positioning/CssTranslatePositionProvider.js +0 -130
  52. package/lib/positioning/ElementPositionMemento.js +0 -36
  53. package/lib/positioning/ElementPositionProvider.js +0 -88
  54. package/lib/positioning/FirefoxRegionPositionCompensation.js +0 -45
  55. package/lib/positioning/ImageRotation.js +0 -22
  56. package/lib/positioning/OverflowAwareCssTranslatePositionProvider.js +0 -17
  57. package/lib/positioning/OverflowAwareScrollPositionProvider.js +0 -17
  58. package/lib/positioning/RegionPositionCompensationFactory.js +0 -37
  59. package/lib/positioning/SafariRegionPositionCompensation.js +0 -26
  60. package/lib/positioning/ScrollPositionMemento.js +0 -36
  61. package/lib/positioning/ScrollPositionProvider.js +0 -118
  62. package/lib/positioning/fixImageMarkPosition.js +0 -36
  63. package/lib/regionVisibility/MoveToRegionVisibilityStrategy.js +0 -55
  64. package/lib/regionVisibility/NopRegionVisibilityStrategy.js +0 -35
  65. package/lib/regionVisibility/RegionVisibilityStrategy.js +0 -30
  66. package/lib/runner/ClassicRunner.js +0 -31
  67. package/lib/runner/EyesRunner.js +0 -41
  68. package/lib/runner/TestResultContainer.js +0 -38
  69. package/lib/runner/TestResultsSummary.js +0 -112
  70. package/lib/runner/VisualGridRunner.js +0 -57
  71. package/lib/safeExecuteFunction.js +0 -28
  72. package/lib/wrappers/EyesTargetLocator.js +0 -329
  73. package/lib/wrappers/EyesWebDriver.js +0 -560
  74. package/lib/wrappers/EyesWebElement.js +0 -383
  75. 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,7 +0,0 @@
1
- 'use strict'
2
-
3
- const {EyesError} = require('@applitools/eyes-common')
4
-
5
- class NoFramesError extends EyesError {}
6
-
7
- exports.NoFramesError = NoFramesError
@@ -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