eyes_universal 3.6.0 → 4.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +504 -0
- data/Rakefile +49 -0
- data/ext/eyes-universal/Rakefile +6 -16
- data/ext/eyes-universal/core.tar.gz +0 -0
- data/eyes_universal.gemspec +37 -0
- data/lib/applitools/eyes_universal/executable_finder.rb +57 -0
- data/lib/applitools/eyes_universal/universal_server_control.rb +92 -0
- data/lib/applitools/eyes_universal/universal_server_downloader.rb +109 -0
- data/lib/applitools/eyes_universal/version.rb +8 -0
- data/lib/eyes_universal.rb +9 -0
- metadata +17 -11
- data/lib/applitools/universal_sdk/universal_server_downloader.rb +0 -212
- data/lib/applitools/version.rb +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 91a60a8975b7f9f13ab8fd7c8ca4a0d6cfab3d93861979b87d938e6c16551746
|
4
|
+
data.tar.gz: 3aa6ccb1912c3750f5368a35d39ddc40db6fdbec9592224a6ecef210ab414872
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c3d5eb2a6f39269b1e215dea73fa992a92729244ab07db0ec13cce33f685fa634be9e8e03e5ff763a89e0135c24ab6e663006ec40a462b8ea6cfda136b792111
|
7
|
+
data.tar.gz: 7eb42dbf24cb74adb2381d3a2f159f004384ff448a26b2b2ff937497555af7bd90024efd48c9219acf12a4f16a8b1dec74646c7c11cc0bb77df5b6adfe0f59b6
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,504 @@
|
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
## [6.0.0] (2023-12-13)
|
4
|
+
|
5
|
+
### Dependencies
|
6
|
+
|
7
|
+
### Breaking Changes:
|
8
|
+
* #### Features
|
9
|
+
* Update version of Universal SDK Core to v4
|
10
|
+
|
11
|
+
* #### Added
|
12
|
+
* new api eyes.get_results to get results
|
13
|
+
|
14
|
+
* #### Removed
|
15
|
+
* eyes.checks now returns nil (added new eyes.get_results to get a results)
|
16
|
+
|
17
|
+
### Features
|
18
|
+
* added notification about outdated sdk version
|
19
|
+
* log driver environment info to splank
|
20
|
+
* show aborted tests in Eyes dashboard
|
21
|
+
* allowed running multiple classic test with different devices for applitoolsified native apps
|
22
|
+
* add more logs for tunnel worker
|
23
|
+
* added warning when driver used with capabilities that may conflict with applitools lib workflow
|
24
|
+
### Bug Fixes
|
25
|
+
* fix custom sequence_name in BatchInfo
|
26
|
+
* suppport coded regions with layoutBreakpoints reload
|
27
|
+
* update dom-snapshot to support xml pages and parens inside css URLs
|
28
|
+
* upgrade dom-capture to get font-family in DOM
|
29
|
+
* change expiration time of the tunnel
|
30
|
+
* async cache should wait for upload
|
31
|
+
* async cache race condition
|
32
|
+
* allow css scrolling when taking screenshot of the webview
|
33
|
+
* generate safe selectors as close as possible to taking dom snapshot
|
34
|
+
* added retries on ufg requests that respond with 503 status code
|
35
|
+
* fix incorrect stitchMode mapping in checkSettings
|
36
|
+
* handled duplicated style properties in inline style tags
|
37
|
+
* fixed issue that caused dom snapshots to be taken for different viewport sizes when layout breakpoints were explicitly turned off
|
38
|
+
* remove some connection timeout in case of a long running tasks
|
39
|
+
* return result when error in the ufg
|
40
|
+
* send devtool commands in chromium
|
41
|
+
* preserve css declarations order in dom-snapshot
|
42
|
+
* do not block concurrency when server response is 503
|
43
|
+
### Code Refactoring
|
44
|
+
* reorganized code between gems
|
45
|
+
|
46
|
+
## [5.0.0] - 2023-07-11
|
47
|
+
### Breaking Changes:
|
48
|
+
- get_all_test_results return TestResultSummary with additional info
|
49
|
+
- TestResults Array now in get_all_test_results.results or can be accessed old-style with get_all_test_results[0]
|
50
|
+
- eyes.close always return first result, even when have failed check
|
51
|
+
- eyes.abort on closed/aborted eye now return nil
|
52
|
+
### Added
|
53
|
+
- Add support for reloading the page when using layout_breakpoints
|
54
|
+
- add errors to TestResults
|
55
|
+
### Updated
|
56
|
+
- Update version of Universal SDK Core to 3.6.0
|
57
|
+
### Features
|
58
|
+
- ability to skip deserialize dom snapshot
|
59
|
+
- prevent animated gif images from playing in ufg
|
60
|
+
- support custom property per renderer
|
61
|
+
### Bug fixes
|
62
|
+
- fixed issue that caused creation of unnecessary tunnels
|
63
|
+
- start tunnels with proper regional server
|
64
|
+
## [4.6.3] - 2023-07-04
|
65
|
+
### Updated
|
66
|
+
- Update version of Universal SDK Core to 3.4.0
|
67
|
+
### Added
|
68
|
+
- Add api for mobile (set_nmg_capabilities, set_mobile_capabilities, use_system_screenshot)
|
69
|
+
### Features
|
70
|
+
- Drop support of legacy vhs extraction
|
71
|
+
- Add an API to send logEvents
|
72
|
+
- Add support for reloading the page when using layoutBreakpoints
|
73
|
+
- Fixed issue with failed find element responses in EC
|
74
|
+
- Fixed issue when on certain browser versions test didn't target a previously created baseline
|
75
|
+
- added a new mode for taking native app screenshots
|
76
|
+
### Bug fixes
|
77
|
+
- Increase timeout for rendering results polling
|
78
|
+
- Fixed issue when logs are not show up
|
79
|
+
- Add isProcess property when calling makeCoreServer
|
80
|
+
- Fixed issue with Safari mobile screenshots
|
81
|
+
- Fixed issue with default settings in extractText
|
82
|
+
- Fixed issue with viewport information extraction when switched to webview
|
83
|
+
- apply default scrolling mode
|
84
|
+
## [4.6.2] - 2023-05-10
|
85
|
+
### Added
|
86
|
+
- Add remove_duplicate_tests option & set_remove_duplicate_tests method to eyes runner
|
87
|
+
### Updated
|
88
|
+
- Update version of Universal SDK Core to 2.5.8
|
89
|
+
### Features
|
90
|
+
- Added functional session feature
|
91
|
+
- Add a timeout and max concurrency for fetching resources
|
92
|
+
### Bug fixes
|
93
|
+
- Fixed issue in dom snapshot that prevented urls that start with a whitespace to be mapped
|
94
|
+
- Improved appium prefixed capabilities parsing
|
95
|
+
- Fix issue when locate return wrong type of the region, with left and top properties instead of x and y
|
96
|
+
- Fixed issue with when webview were wasn't recognized as web compatible world
|
97
|
+
- Fixed the issue with session metadata extraction
|
98
|
+
- Fixed functional test feature issues in ec client
|
99
|
+
- Fixed typo in ec custom property
|
100
|
+
- Fixed issue with hanging requests
|
101
|
+
- Fixed platform name formatting
|
102
|
+
- Prevented driver metadata extraction during check in ufg eyes
|
103
|
+
- Fixed dynamic import issue in universal binaries
|
104
|
+
- Fixed detection of emulated mobile drivers
|
105
|
+
- Remove 'Execution Cloud' custom property
|
106
|
+
## [4.6.1] - 2023-04-12
|
107
|
+
### Changed
|
108
|
+
- Packaging server core inside eyes_universal
|
109
|
+
### Updated
|
110
|
+
- Update version of Universal SDK Core to 2.4.8
|
111
|
+
### Features
|
112
|
+
- Added removeDuplicateTests property to the GetManagerResultsSettings
|
113
|
+
- Changed makeManager api to accept settings
|
114
|
+
- Improved extraction of nml element
|
115
|
+
- Update broker url using last response instead of using driver
|
116
|
+
### Bug fixes
|
117
|
+
- Fixed screenshot framing
|
118
|
+
- Fixed issue with css fetching for dom capture
|
119
|
+
- Fixed issue with emulation driver detection
|
120
|
+
- Fixed relative url resolution in css files
|
121
|
+
- Added timeout to css fetching during preparing dom capture
|
122
|
+
- Improve performance in DOM snapshot
|
123
|
+
- Fixed retry interval during poll requests to eyes back-end
|
124
|
+
- Fixed issue with concurrency of the renders in ufg mode
|
125
|
+
- Fixed issue with concurrency of the renders in ufg mode
|
126
|
+
- Fixed ufg concurrency regression
|
127
|
+
- Replaced broker url cache with nml element cache
|
128
|
+
- Fixed selector transformation for scroll root elements for ufg
|
129
|
+
- Upgrade tunnel version
|
130
|
+
## [4.6.0] - 2023-03-06
|
131
|
+
### Changed
|
132
|
+
- change server package to @applitools/core
|
133
|
+
### Updated
|
134
|
+
- Improve logging in core server
|
135
|
+
- Passing density metric for PPI support in the sdk
|
136
|
+
### Added
|
137
|
+
- Integrate universal protocol to run core via transport
|
138
|
+
- Added Resize stitch mode value
|
139
|
+
- Add NML support for Android
|
140
|
+
- Add makeECClient api
|
141
|
+
### Bug fixes
|
142
|
+
- upgrade dom-snapshot with a fix to CSP
|
143
|
+
- Fixed issue when .visualgrid was not added to agent id
|
144
|
+
- Fixed issue with aborting ufg tests
|
145
|
+
## [4.5.5] - 2023-01-06
|
146
|
+
### Updated
|
147
|
+
- Update version of Universal SDK to 3.2.2
|
148
|
+
## [4.5.4] - 2023-01-04
|
149
|
+
### Updated
|
150
|
+
- Update version of Universal SDK to 3.2.1
|
151
|
+
- Update arm64-darwin server recognition
|
152
|
+
### Features
|
153
|
+
- Filter styles and resources with non-screen media queries
|
154
|
+
### Bug fixes
|
155
|
+
- Fixed issue with parsing capabilities for iOS with native app
|
156
|
+
## [4.5.3] - 2022-12-30
|
157
|
+
### Fixed
|
158
|
+
- skip yanked gem versions
|
159
|
+
## [4.5.2] - 2022-12-30
|
160
|
+
### Updated
|
161
|
+
- Update version of Universal SDK to 3.2.0
|
162
|
+
### Added
|
163
|
+
- Add dont_close_batches flag to eyes [Trello 3093](https://trello.com/c/3E0ilb0A)
|
164
|
+
### Features
|
165
|
+
- Add server support for arm
|
166
|
+
- Additional internal event logs
|
167
|
+
### Bug fixes
|
168
|
+
- Fixed OCR functionality with latest eyes server
|
169
|
+
- Fixed issue when helper lib inputs were not cleaned up before calling new command
|
170
|
+
- Fixed issue with element scroll position not being restored after screenshot is taken on native platforms
|
171
|
+
- Handed error during polling in long requests to eyes server
|
172
|
+
- Handle fake shadowRoot with UFG
|
173
|
+
## [4.5.1] - 2022-11-28
|
174
|
+
### Fixed
|
175
|
+
- releasing as stable all eyes
|
176
|
+
## [4.0.0.alpha-eyes-images] - 2022-11-28
|
177
|
+
### Added
|
178
|
+
- eyes_images updated to universal server sdk(v3)
|
179
|
+
### Deprecated (eyes_images)
|
180
|
+
- eyes_images inputs Applitools::Screenshot and ChunkyPNG::Image now are image_path and image (examples in spec/images/eyes_images_functional_spec.rb)
|
181
|
+
### Added (eyes_images)
|
182
|
+
- eyes_images: Applitools::MatchLevel::IGNORE_COLORS
|
183
|
+
## [4.5.0.alpha] - 2022-11-23
|
184
|
+
- Update version of Universal SDK to v3 (sdk: 3.0.2)
|
185
|
+
## [4.4.1] - 2022-10-03
|
186
|
+
### Added
|
187
|
+
- Added iPhone 14 and iPhone 14 Pro Max devices [Trello 73](https://trello.com/c/M1YiwtHb)
|
188
|
+
## [4.4.0] - 2022-09-16
|
189
|
+
### Updated
|
190
|
+
- Update version of Universal SDK to 2.12.3
|
191
|
+
### Added
|
192
|
+
- Created testing client for eyes-universal
|
193
|
+
### Fixed
|
194
|
+
- Using lazyLoad.waitingTime as a delay between stitches by default
|
195
|
+
- Using proxy while polling for the result of the nml command
|
196
|
+
## [4.3.0] - 2022-09-16
|
197
|
+
### Updated
|
198
|
+
- Update version of Universal SDK to 2.12.0
|
199
|
+
### Added
|
200
|
+
- Add proxy support when using NML for NMG
|
201
|
+
- Add NML NMG support for iOS
|
202
|
+
- Added support for lazy loading views in android native apps
|
203
|
+
- tests for alpine
|
204
|
+
### Fixed
|
205
|
+
- Sending correct commands with android helper lib
|
206
|
+
- Fixed issue that prevented NMG from working when NML was enabled
|
207
|
+
## [4.2.0] - 2022-09-05
|
208
|
+
### Removed
|
209
|
+
- removed device name Galaxy S8, S8 Plus, Note 8
|
210
|
+
## [4.1.4] - 2022-09-02
|
211
|
+
### Updated
|
212
|
+
- Update version of Universal SDK to 2.10.8
|
213
|
+
### Changed
|
214
|
+
- U-SDK server spawn once per process
|
215
|
+
- U-SDK server shutdown-mode changed
|
216
|
+
## [4.1.4.alpha] - 2022-08-15
|
217
|
+
### Updated
|
218
|
+
- Update version of Universal SDK to 2.10.5
|
219
|
+
### Changed
|
220
|
+
- ci moved to github
|
221
|
+
## [4.1.3] - 2022-08-04
|
222
|
+
### Added
|
223
|
+
- add enum for edge-2 (EDGE_CHROMIUM_TWO_VERSIONS_BACK)
|
224
|
+
- Android 12 device name [Trello 54](https://trello.com/c/SZAPDKSI)
|
225
|
+
### Updated
|
226
|
+
- Update version of Universal SDK to 2.10.3
|
227
|
+
## [4.1.2] - 2022-07-07
|
228
|
+
### Added
|
229
|
+
- add padding support for regions [Trello 2929](https://trello.com/c/kHbnEdC7), [Trello 42](https://trello.com/c/PYKqJLbg)
|
230
|
+
- add custom region id support for regions [Trello 47](https://trello.com/c/pv51sCYA)
|
231
|
+
### Updated
|
232
|
+
- Update version of Universal SDK to 2.9.5
|
233
|
+
### Fixed
|
234
|
+
- fix freeze in communication with universal server
|
235
|
+
- fix floating region bounds option(as 4 numbers) parsing
|
236
|
+
## [4.1.1] - 2022-06-16
|
237
|
+
### Added
|
238
|
+
- add support lazy loading as part of the check-api [Trello](https://trello.com/c/BIHFMhVk)
|
239
|
+
### Updated
|
240
|
+
- Update version of Universal SDK to 2.8.0
|
241
|
+
## [4.1.0] - 2022-06-16
|
242
|
+
### Removed
|
243
|
+
- alpha flag from version number
|
244
|
+
## [4.1.0.alpha] - 2022-06-13
|
245
|
+
### Updated
|
246
|
+
- Update version of Universal SDK to 2.7.2
|
247
|
+
## Removed
|
248
|
+
- removed eventmachine from eyes_core
|
249
|
+
## [4.0.5.4] - 2022-06-10
|
250
|
+
### Updated
|
251
|
+
- Update version of Universal SDK to 2.7.1
|
252
|
+
### Fixed
|
253
|
+
- Fix default boolean field transition to server(like full page screenshot)
|
254
|
+
## [4.0.5.3] - 2022-06-02
|
255
|
+
### Updated
|
256
|
+
- Update version of Universal SDK to 2.5.19
|
257
|
+
### Fixed
|
258
|
+
- fix ruby-3.1 installation collision
|
259
|
+
## [4.0.5.2] - 2022-05-24
|
260
|
+
### Updated
|
261
|
+
- Update version of Universal SDK to 2.5.17
|
262
|
+
### Fixed
|
263
|
+
- Fix closing batches with closeManager
|
264
|
+
## Removed
|
265
|
+
- removed nokogiri frozen version
|
266
|
+
- remove old&unused js(now processed by universal server)
|
267
|
+
## [4.0.5.1] - 2022-05-18
|
268
|
+
### Fixed
|
269
|
+
- Fix wrong gem yank
|
270
|
+
## [4.0.5] - 2022-05-18
|
271
|
+
### Updated
|
272
|
+
- Update version of Universal SDK to 2.5.11
|
273
|
+
### Fixed
|
274
|
+
- Fix for default notify_on_completion value(moved to universal server)
|
275
|
+
## [4.0.4] - 2022-05-13
|
276
|
+
### Fixed
|
277
|
+
- Fix for mingw
|
278
|
+
## [4.0.3] - 2022-05-13
|
279
|
+
### Updated
|
280
|
+
- Update version of Universal SDK to 2.5.7
|
281
|
+
### Added
|
282
|
+
- added api: wait_before_capture, page_id
|
283
|
+
- api for native ufg: add_mobile_device, add_mobile_devices
|
284
|
+
- new ios devices
|
285
|
+
- AndroidDeviceName and AndroidDeviceInfo
|
286
|
+
### Fixed
|
287
|
+
- Fix installing universal server issues on windows
|
288
|
+
- fix getting connection info for universal server on ci
|
289
|
+
## Removed
|
290
|
+
- png processing lib dependecies
|
291
|
+
## [4.0.2] - 2022-02-08
|
292
|
+
### Updated
|
293
|
+
- Update version of Universal SDK to 1.0.9
|
294
|
+
### Fixed
|
295
|
+
- Fix installing issues with latest ruby version and installing on windows
|
296
|
+
## [4.0.1] - 2022-02-08 - unreleased
|
297
|
+
### Updated
|
298
|
+
- Update version of Universal SDK to 1.0.7
|
299
|
+
## [4.0.0] - 2022-01-24
|
300
|
+
### Changed
|
301
|
+
- Library is now based on Universal SDK
|
302
|
+
## [3.18.4] - 2021-08-31
|
303
|
+
### Fixed
|
304
|
+
- Fix Appium runner option [Trello 2697](https://trello.com/c/F6dLF1VF)
|
305
|
+
- Fix parsing css transition [Trello 2647](https://trello.com/c/CIzoKPNY)
|
306
|
+
- Fix require warning: No such file or directory @ dir_chdir - lib/applitools/selenium/scripts/node_modules [Trello 2148](https://trello.com/c/j5sAPSBa)
|
307
|
+
## [3.18.3] - 2021-06-24
|
308
|
+
### Added
|
309
|
+
- Support cross origin iframes in UFG [Trello 2259](https://trello.com/c/iJKPvd75), [Trello 2584](https://trello.com/c/QyLzmnGl)
|
310
|
+
## [3.18.2] - 2021-05-05
|
311
|
+
### Added
|
312
|
+
- Support variation_group_id and agentRunId [Trello 2527](https://trello.com/c/6SyxJXVZ)
|
313
|
+
## [3.18.1] - 2021-04-28
|
314
|
+
### Added
|
315
|
+
- Allow defining custom properties at the batch level [Trello 2445](https://trello.com/c/IKTydXLv)
|
316
|
+
## [3.18.0] - 2021-04-20
|
317
|
+
### Fixed
|
318
|
+
- Fix Selenium and Appium libraries conflict [Trello 2500](https://trello.com/c/UOwzI2s8)
|
319
|
+
## Deprecated
|
320
|
+
- Ruby 1.9 support for Appium lib (Requirement 2.2+)
|
321
|
+
## [3.17.23] - 2021-01-22
|
322
|
+
### Fixed
|
323
|
+
- Fix viewport rect of a native app at some android devices [Trello 2079](https://trello.com/c/sQJLgtUL)
|
324
|
+
### Updated
|
325
|
+
- Update Ruby Coverege Tests to v2
|
326
|
+
## [3.17.22] - 2021-01-12
|
327
|
+
### Added
|
328
|
+
- Supporting check full element with ufg [Trello 2145](https://trello.com/c/8tPAnz66)
|
329
|
+
### Updated
|
330
|
+
- Supporting iPhone 12 in `IosDeviceName` class. [Trello 2269](https://trello.com/c/yWFy2pRE)
|
331
|
+
### Fixed
|
332
|
+
- Restart on calling eyes.open with started driver [Trello 2162](https://trello.com/c/1SCQUUnW), [Trello 2233](https://trello.com/c/yPY3jhjW)
|
333
|
+
## [3.17.21] - 2020-08-20
|
334
|
+
### added
|
335
|
+
- UFG: the ability to set :visual_grid_options for the UFG SDK (Both globally and through the fluent interface) [Trello_2089](https://trello.com/c/d4zggQes/2089-ufg-sdks-visualgridoptionspolyfilladoptedstylesheets)
|
336
|
+
## [3.17.20] - 2020-08-20
|
337
|
+
### fixed
|
338
|
+
- Skip resources list: the errorStatusCode is passed to the server for UFG resources (if present) [Trello_2101](https://trello.com/c/vw3Ag8eO/2101-sdk-doesnt-pass-errorstatuscode-for-ufg-resources-if-an-error-occurred)
|
339
|
+
## [3.17.19] - 2020-08-18
|
340
|
+
### Updated
|
341
|
+
- Skip resources list for UFG is implemented [Trello_1974](https://trello.com/c/44xq8dze/1974-dom-snapshot-should-accept-a-skip-list-for-fetched-resources)
|
342
|
+
## [3.17.18] - 2020-08-01
|
343
|
+
### Fixed
|
344
|
+
- appium region screenshot issue [Trello_1996](https://trello.com/c/bmD4fCbs/1996-appium-native-ruby-error-with-png-signature-for-targetregion)
|
345
|
+
## [3.17.17] - 2020-07-29
|
346
|
+
### Fixed
|
347
|
+
- The availability to set :notify_on_completion manually for Applitools::BatchInfo. [Trello_2012](https://trello.com/c/OdYXtkFI/2012-batch-sequence-and-batch-notifications-are-not-working-in-the-ruby-selenium-sdk)
|
348
|
+
### Updated
|
349
|
+
- Screenshot retry mechanism is now more efficient. [Trello 1866](https://trello.com/c/KyxkI6Bu)
|
350
|
+
## [3.17.16] - 2020-07-16
|
351
|
+
### Fixed
|
352
|
+
- The test name is not updated in case of double open->check->close call. [Trello 2011](https://trello.com/c/7UN1AbYU/2011-ruby-ufg-tests-creates-tests-out-of-order-when-classic-eyesopen-is-used)
|
353
|
+
## [3.17.15] - 2020-07-16
|
354
|
+
### Added
|
355
|
+
- Added `VisualViewport` for UFG client. [Trello 1957](https://trello.com/c/jWvdBwex/1957-add-visual-viewport-support-in-the-ui-for-mobile-devices)
|
356
|
+
## [3.17.14] - 2020-07-9
|
357
|
+
### Updated
|
358
|
+
- Added missing `StitchingService` URI field in `RenderRequest`. [Trello 1988](https://trello.com/c/Yr6EsUlL)
|
359
|
+
## [3.17.13] - 2020-07-03
|
360
|
+
## Fixed
|
361
|
+
- eyes_appium: Coded Floating Regions Incorrectly Placed [Trello_1960](https://trello.com/c/j6nJh1LS/1960-ruby-native-app-coded-floating-regions-incorrectly-placed)
|
362
|
+
- eyes_images: Simple eyes_images test is broken [Trello_1949](https://trello.com/c/dHQbz96i/1949-eyesimages-seem-to-be-broken)
|
363
|
+
## [3.17.12] - 2020-07-02
|
364
|
+
## Fixed
|
365
|
+
- :match_timeout property is moved to configuration object [Trello_1935](https://trello.com/c/2Z070Qgs/1935-ruby-selenium-matchtimeout-not-available-in-the-configuration-object)
|
366
|
+
## [3.17.11] - 2020-06-25
|
367
|
+
## Fixed
|
368
|
+
- IosDeviceOrientation is replaced by Orientation [Trello_1944](https://trello.com/c/EzyG7525/1944-ufg-safari-on-ios-orientations-changes)
|
369
|
+
## [Eyes.sdk.ruby 3.17.10] - 2020-06-20
|
370
|
+
## Fixed
|
371
|
+
- a configuration shared between Eyes instances in Rspec [Trello_1938](https://trello.com/c/qOQkbDO7/1938-a-configuration-shared-between-eyes-instances-in-rspec)
|
372
|
+
## [Eyes.sdk.ruby 3.17.9] - 2020-06-19
|
373
|
+
## Fixed
|
374
|
+
- Call :clone on a NilClass for ruby 2.3 [Trello_1855](https://trello.com/c/LCBhnTMd/1885-selenium-ruby-cant-clone-nilclass)
|
375
|
+
## [Eyes.sdk.ruby 3.17.7] - 2020-06-18
|
376
|
+
## Added
|
377
|
+
- eyes.ignore_displacements= and eyes.ignore_displacements methods [Trello_841](https://trello.com/c/uwrYb1Vj/841-add-a-general-method-for-ignoredisplacements?menu=filter&filter=visual%20loca,due:notdue)
|
378
|
+
## Fixed
|
379
|
+
- Encoded regions for 'selector' mode [Trello_1915](https://trello.com/c/BQIrbCfC/1915-ruby-ultrafast-grid-incorrect-placement-of-coded-regions-for-targetregion)
|
380
|
+
## [Eyes.sdk.ruby 3.17.6] - 2020-06-16
|
381
|
+
## Fixed
|
382
|
+
- config.add_device_emulation(name, orientation) is fixed [Trello_1914](https://trello.com/c/l7WRvhSP/1914-ruby-ultrafast-grid-adddeviceemulation-throws-error-after-upgrading-to-3175?menu=filter&filter=due:notdue)
|
383
|
+
## Added
|
384
|
+
- Appium driver support is ectended (Applitools::Appium::Eyes.new(driver: Appium::Driver.new)) [Trello_1913](https://trello.com/c/wQTgRNrN/1913-appium-ruby-regression-unknown-driver-appiumdriver0x00007fbaf9903448-applitoolseyeserror?menu=filter&filter=due:notdue)
|
385
|
+
## [Eyes.sdk.ruby 3.17.5] - 2020-06-15
|
386
|
+
## Added
|
387
|
+
- The ability to set :baseline_env_name for DesktopBrowserInfo, IosDeviceInfo and ChromeEmulationInfo
|
388
|
+
## Fixed
|
389
|
+
- IosScreenOrientation instead of the IosScreenshotOrientation
|
390
|
+
## [Eyes.sdk.ruby 3.17.4] - 2020-06-11
|
391
|
+
## Fixed
|
392
|
+
- restricted to set emulation_info && ios_device_info for DesktopBrowserInfo
|
393
|
+
## [Eyes.sdk.ruby 3.17.3] - 2020-06-06
|
394
|
+
## Deprecated
|
395
|
+
- BrowserTypes module is deprecated in a favor of BrowserType
|
396
|
+
- Orientations module is deprecated in a favor of Orientation
|
397
|
+
## Fixed
|
398
|
+
- IosDeviceOrientation instead of IosDeviceOrientations(plural)
|
399
|
+
## Deprecated
|
400
|
+
## [Eyes.sdk.ruby 3.17.2] - 2020-06-06
|
401
|
+
## Added
|
402
|
+
- safari on ios device emulation for UFG [Trello_1872](https://trello.com/c/bykk2rzB/1872-ufg-safari-on-ios-simulators-support)
|
403
|
+
## [Eyes.sdk.ruby 3.17.1] - 2020-05-26
|
404
|
+
## Fixed
|
405
|
+
- eyes.properties for VG [Trello_1804](https://trello.com/c/Jt2BYz0e/1804-ruby-selenium-addproperty-method-not-recognized-when-running-with-visualgridrunner)
|
406
|
+
- SessionStartInfo parameters were not passed to Json correctly
|
407
|
+
## [Eyes.sdk.ruby 3.17.0] - 2020-05-18
|
408
|
+
## Added
|
409
|
+
- eyes.accessibility_validation(Applitools::AccessibilitySettings.new(Applitools::AccessibilityLevel::AA, Applitools::AccessibilityVersion::WCAG_2_0)) - [Trello_1767](https://trello.com/c/gq69woeK/1767-all-sdks-accessibility-accessiblity-guidelines-version-support-and-additional-verifications?menu=filter&filter=due:notdue)
|
410
|
+
## Removed
|
411
|
+
- eyes.accessibility_level
|
412
|
+
## [Eyes.sdk.ruby 3.16.16] - 2020-04-28
|
413
|
+
## Added
|
414
|
+
- Regions support for eyes_appium (Target#ignore, Target#floating, Target#accessibility, Target#layout, etc.)
|
415
|
+
## [Eyes.sdk.ruby 3.16.15] - 2020-04-24
|
416
|
+
## Deprecated
|
417
|
+
- BrowserTypes::EDGE is deprecated. Please change it to either "EDGE_LEGACY" for the legacy version or to "EDGE_CHROMIUM" for the new Chromium-based version. [Trello 1757](https://trello.com/c/LUe43aee/1757-all-ultrafast-sdks-edge-chromium-support)
|
418
|
+
## [Eyes.sdk.ruby 3.16.14] - 2020-04-10
|
419
|
+
## Added
|
420
|
+
- new_session? flag is taken from start_session server response with fallback to the status code [Trello_1715](https://trello.com/c/DcVzWbeR/1715-all-sdks-updated-long-running-task-mode-for-startsession)
|
421
|
+
## [Eyes.sdk.ruby 3.16.13] - 2020-04-06
|
422
|
+
## Fixed
|
423
|
+
- eyes#hide_scrollbars is true by default [Trello 1592](https://trello.com/c/MXixwLnj/1592-upload-dom-directly-to-azure)
|
424
|
+
- eyes#ignore_caret has been included tothe configuration object [Trello)_1706](https://trello.com/c/16JqYlYb/1706-ignorecaret-globally-is-missing-ruby)
|
425
|
+
- Irrelevant URLs are excluded from SVG resource parsing results [Trello 1691](https://trello.com/c/EAIpEh8s/1691-ruby-vg-parsing-of-irrelevant-urls-from-css-and-svg-resources)
|
426
|
+
## Added
|
427
|
+
- x-applitools-eyes-client header for all API requests [Trello_1697](https://trello.com/c/CzhUxOqE/1697-all-sdks-should-report-their-version-in-all-requests-to-the-eyes-server)
|
428
|
+
## [Eyes.sdk.ruby 3.16.12] - 2020-03-30
|
429
|
+
## Fixed
|
430
|
+
- eyes#send_dom didn't work [Trello 1659](https://trello.com/c/9CfD0fhn/1659-disable-dom-capturing-is-not-working-on-the-test-level-ruby)
|
431
|
+
## [Eyes.sdk.ruby 3.16.11] - 2020-03-27
|
432
|
+
## Fixed
|
433
|
+
- dom_capture threw an exception on a particular page [Trello 1658](https://trello.com/c/x0uYFwx0/1658-test-is-being-aborted-when-trying-to-capture-dom-ruby)
|
434
|
+
## [Eyes.sdk.ruby 3.16.10] - 2020-03-24
|
435
|
+
## Added
|
436
|
+
- The ability to use different Faraday adapters instead the default one [Trello 1683](https://trello.com/c/6IASHoBB/1683-add-http2-support-to-the-communication-library)
|
437
|
+
- The ability to set up timeout for HTTP request
|
438
|
+
- The ability to set up timeout for an Applitools::Future
|
439
|
+
## [Eyes.sdk.ruby 3.16.9] - 2020-03-17
|
440
|
+
## Fixed
|
441
|
+
- Agent ID for eyes_appium set to eyes.appium.ruby/version
|
442
|
+
## [Eyes.sdk.ruby 3.16.8] - 2020-03-13
|
443
|
+
## Fixed
|
444
|
+
- SDK fetch resources: the request header 'Accept-Language' is used along with 'User-Agent'
|
445
|
+
- Timeout for Thread.join is increased up to Faraday's connection timeout
|
446
|
+
- Error handling for resources that failed to fetch
|
447
|
+
## Added
|
448
|
+
- Log messages for resource fetching now include the URL and status code
|
449
|
+
## [Eyes.sdk.ruby 3.16.7] - 2020-03-06
|
450
|
+
### Added
|
451
|
+
- dom_snapshot is uploaded directly to Azure storage
|
452
|
+
### Fixed
|
453
|
+
- dom_snapshot script updated to 7.1.3
|
454
|
+
- send_dom is true by default for EyesSelenium
|
455
|
+
## [Eyes.sdk.ruby 3.16.6] - 2020-03-05
|
456
|
+
### Fixed
|
457
|
+
- eyes#check might be called as #check(tag, target) as well as #check(target)
|
458
|
+
- Selenium Eyes: ignore regions in the current target caused an exception
|
459
|
+
## [Eyes.sdk.ruby 3.16.5] - 2020-03-02
|
460
|
+
### Fixed
|
461
|
+
- double slash issue for custom server URL
|
462
|
+
## [Eyes.sdk.ruby 3.16.2] - 2020-02-06
|
463
|
+
### Fixed
|
464
|
+
- DefaultMatchSettings being overridden incorrectly by ImageMatchSettings
|
465
|
+
## [Eyes.sdk.ruby 3.16.1] - 2020-01-29
|
466
|
+
### Fixed
|
467
|
+
- eyes_appium crashed trying to get viewport_size
|
468
|
+
### Added
|
469
|
+
- long_requests are used for start session
|
470
|
+
## [Eyes.sdk.ruby 3.16.0] - 2020-01-24
|
471
|
+
### Added
|
472
|
+
- Screenshot uploading direct to cloud store
|
473
|
+
## [Eyes.sdk.ruby 3.15.48] - 2020-01-20
|
474
|
+
### Added
|
475
|
+
- New browser types for the VisualGrid (CHROME, CHROME_ONE_VERSION_BACK, CHROME_TWO_VERSIONS_BACK, FIREFOX, FIREFOX_ONE_VERSION_BACK, FIREFOX_TWO_VERSIONS_BACK, SAFARI, SAFARI_ONE_VERSION_BACK, SAFARI_TWO_VERSIONS_BACK, IE_10, IE_11, EDGE)
|
476
|
+
## [Eyes.sdk.ruby 3.15.47] - 2020-01-08
|
477
|
+
### Fixed
|
478
|
+
- eyes_images throws "undefined method `each' for nil:NilClass (NoMethodError)"
|
479
|
+
## [Eyes.sdk.ruby 3.15.43] - 2019-12-20
|
480
|
+
### Removed
|
481
|
+
- delta compression for screenshots
|
482
|
+
## [Eyes.sdk.ruby 3.15.43] - 2019-12-19
|
483
|
+
### Added
|
484
|
+
- eyes.abort_async method implementation
|
485
|
+
### Fixed
|
486
|
+
- save_new_tests is true by default
|
487
|
+
- tests are aborted instead of being closed on render fail
|
488
|
+
## [Eyes.sdk.ruby 3.15.43] - 2019-12-12
|
489
|
+
### Added
|
490
|
+
- Return empty test if the render fails
|
491
|
+
- eyes.abort method
|
492
|
+
## [Eyes.sdk.ruby 3.15.42] - 2019-12-10
|
493
|
+
### Fixed
|
494
|
+
- CSS paring & fetching font urls
|
495
|
+
- VisualGridEyes#config renamed to #configuration
|
496
|
+
- VisualGridEyes.configuration returns a clone of a configuration object
|
497
|
+
## [Eyes.sdk.ruby 3.15.41] - 2019-11-06
|
498
|
+
### Fixed
|
499
|
+
- Various VG related bugs
|
500
|
+
## [Eyes.sdk.ruby 3.15.39] - 2019-11-06
|
501
|
+
### Added
|
502
|
+
- This CHANGELOG file.
|
503
|
+
### Fixed
|
504
|
+
- Chrome 78 css stitching bug
|
data/Rakefile
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'rake/clean'
|
4
|
+
require 'securerandom'
|
5
|
+
|
6
|
+
require 'bundler/gem_helper'
|
7
|
+
# Monkey patch the Bundler release class to change tags for eyes_images
|
8
|
+
module Bundler
|
9
|
+
class GemHelper
|
10
|
+
|
11
|
+
def version_tag
|
12
|
+
ruby_tag = "@applitools/ruby"
|
13
|
+
"#{ruby_tag}/#{gemspec.name}@#{version}"
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
Bundler::GemHelper.install_tasks
|
20
|
+
|
21
|
+
namespace :applitools do
|
22
|
+
|
23
|
+
task :get_build_server do
|
24
|
+
load 'ext/eyes-universal/Rakefile'
|
25
|
+
Rake::Task['get_compress_all_binaries'].invoke
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
task :build => ['applitools:get_build_server']
|
31
|
+
|
32
|
+
namespace 'github' do
|
33
|
+
task :set_batch_info do
|
34
|
+
batch_id = SecureRandom.uuid
|
35
|
+
# next if ENV['APPLITOOLS_BATCH_ID'] && !ENV['APPLITOOLS_BATCH_ID'].empty?
|
36
|
+
ENV['APPLITOOLS_DONT_CLOSE_BATCHES'] = 'true'
|
37
|
+
ENV['APPLITOOLS_BATCH_ID'] = batch_id unless ENV['APPLITOOLS_BATCH_ID'] && !ENV['APPLITOOLS_BATCH_ID'].empty?
|
38
|
+
ENV['APPLITOOLS_BATCH_NAME'] = "Eyes Ruby SDK(#{RUBY_VERSION} | #{RUBY_PLATFORM})"
|
39
|
+
end
|
40
|
+
|
41
|
+
task :check do
|
42
|
+
puts "Batch ID: #{ENV['APPLITOOLS_BATCH_ID']}"
|
43
|
+
puts "Batch NAME: #{ENV['APPLITOOLS_BATCH_NAME']}"
|
44
|
+
end
|
45
|
+
|
46
|
+
task :server_tests => [:set_batch_info, :check] do
|
47
|
+
sh('bundle exec parallel_rspec -n 1 -- --tag universal_server -- spec/eyes_universal/*_spec.rb')
|
48
|
+
end
|
49
|
+
end
|
data/ext/eyes-universal/Rakefile
CHANGED
@@ -1,30 +1,20 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'rake/clean'
|
3
3
|
|
4
|
-
CURRENT_VERSION_PATH = File.expand_path('../../lib/applitools/version', File.dirname(__FILE__))
|
4
|
+
CURRENT_VERSION_PATH = File.expand_path('../../lib/applitools/eyes_universal/version', File.dirname(__FILE__))
|
5
5
|
require CURRENT_VERSION_PATH
|
6
|
-
DOWNLOADER_PATH = File.expand_path('../../lib/applitools/
|
6
|
+
DOWNLOADER_PATH = File.expand_path('../../lib/applitools/eyes_universal/universal_server_downloader', File.dirname(__FILE__))
|
7
7
|
require DOWNLOADER_PATH
|
8
8
|
|
9
|
-
desc "
|
9
|
+
desc "Install universal server binaries"
|
10
10
|
task :default => [:prepare_server]
|
11
11
|
|
12
|
-
# depricated
|
13
|
-
file "get_server" do
|
14
|
-
Applitools::UniversalServerDownloader.download(File.dirname(__FILE__))
|
15
|
-
end
|
16
|
-
|
17
|
-
# depricated
|
18
|
-
file "get_server_compressed" do
|
19
|
-
Applitools::UniversalServerDownloader.tar_gz_download(File.dirname(__FILE__))
|
20
|
-
end
|
21
|
-
|
22
12
|
# install
|
23
13
|
file "prepare_server" do
|
24
|
-
Applitools::UniversalServerDownloader.prepare_server(File.dirname(__FILE__))
|
14
|
+
Applitools::EyesUniversal::UniversalServerDownloader.prepare_server(File.dirname(__FILE__))
|
25
15
|
end
|
26
16
|
|
27
17
|
# build
|
28
18
|
file "get_compress_all_binaries" do
|
29
|
-
Applitools::UniversalServerDownloader.get_compress_all_binaries(File.dirname(__FILE__))
|
30
|
-
end
|
19
|
+
Applitools::EyesUniversal::UniversalServerDownloader.get_compress_all_binaries(File.dirname(__FILE__))
|
20
|
+
end
|
Binary file
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
lib = File.expand_path('../lib', __FILE__)
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
+
|
6
|
+
require_relative "lib/applitools/eyes_universal/version"
|
7
|
+
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
Gem::Specification.new do |spec|
|
12
|
+
spec.name = 'eyes_universal'
|
13
|
+
spec.version = Applitools::EyesUniversal::VERSION
|
14
|
+
spec.authors = ['Applitools Team']
|
15
|
+
spec.email = ['team@applitools.com']
|
16
|
+
spec.description = 'eyes-universal binaries for writing Applitools tests'
|
17
|
+
spec.summary = 'Applitools Ruby Universal binaries for SDK'
|
18
|
+
spec.homepage = 'https://www.applitools.com'
|
19
|
+
spec.license = 'Applitools'
|
20
|
+
|
21
|
+
spec.files = [
|
22
|
+
'ext/eyes-universal/core.tar.gz',
|
23
|
+
'ext/eyes-universal/Rakefile',
|
24
|
+
'lib/applitools/eyes_universal/universal_server_downloader.rb',
|
25
|
+
'lib/applitools/eyes_universal/executable_finder.rb',
|
26
|
+
'lib/applitools/eyes_universal/universal_server_control.rb',
|
27
|
+
'lib/eyes_universal.rb',
|
28
|
+
'lib/applitools/eyes_universal/version.rb',
|
29
|
+
'CHANGELOG.md',
|
30
|
+
'eyes_universal.gemspec',
|
31
|
+
'Rakefile',
|
32
|
+
]
|
33
|
+
spec.extensions = ["ext/eyes-universal/Rakefile"]
|
34
|
+
|
35
|
+
spec.add_development_dependency 'open-uri', '~> 0.1', '>= 0.1.0'
|
36
|
+
spec.add_development_dependency 'stringio'
|
37
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Applitools::EyesUniversal
|
4
|
+
module UniversalServerGemFinder
|
5
|
+
extend self
|
6
|
+
|
7
|
+
SERVER_GEM_NAME = 'eyes_universal'
|
8
|
+
|
9
|
+
def filepath
|
10
|
+
server_lib ? File.join(server_lib.gem_dir, 'ext', 'eyes-universal', filename) : ''
|
11
|
+
end
|
12
|
+
|
13
|
+
def other_filepaths
|
14
|
+
in_gem_path = File.join('gems', server_lib.full_name, 'ext', 'eyes-universal', filename)
|
15
|
+
Gem.path.map {|path| File.expand_path(in_gem_path, path) }
|
16
|
+
end
|
17
|
+
|
18
|
+
def executable_filepath
|
19
|
+
raise 'Universal server not Found' if server_lib.nil?
|
20
|
+
return filepath if valid_file?(filepath)
|
21
|
+
core_path = other_filepaths.find {|path| valid_file?(path) }
|
22
|
+
return core_path if core_path
|
23
|
+
raise 'Universal server unrecognized'
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def server_lib
|
29
|
+
Gem::Specification.find_by_name(SERVER_GEM_NAME)
|
30
|
+
rescue Gem::MissingSpecError
|
31
|
+
nil
|
32
|
+
end
|
33
|
+
|
34
|
+
def filename
|
35
|
+
return 'core-win.exe' if Gem.win_platform?
|
36
|
+
case RUBY_PLATFORM
|
37
|
+
when /darwin/i
|
38
|
+
'core-macos'
|
39
|
+
when /arm/i
|
40
|
+
'core-linux-arm64'
|
41
|
+
when /mswin|windows|mingw/i
|
42
|
+
'core-win.exe'
|
43
|
+
when /musl/i
|
44
|
+
'core-alpine'
|
45
|
+
when /linux|arch/i
|
46
|
+
'core-linux'
|
47
|
+
else
|
48
|
+
raise 'Unsupported platform'
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def valid_file?(path)
|
53
|
+
File.exist?(path) && File.executable?(path)
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'singleton'
|
4
|
+
require 'socket'
|
5
|
+
|
6
|
+
module Applitools::EyesUniversal
|
7
|
+
class UniversalServerControl
|
8
|
+
|
9
|
+
include Singleton
|
10
|
+
|
11
|
+
DEFAULT_SERVER_IP = '127.0.0.1'
|
12
|
+
DEFAULT_SERVER_HOST = 'localhost'
|
13
|
+
EXECUTABLE_FILEPATH = Applitools::EyesUniversal::UniversalServerGemFinder.executable_filepath
|
14
|
+
|
15
|
+
def initialize
|
16
|
+
@control_pipe = nil
|
17
|
+
@port_pipe = nil
|
18
|
+
@usdk_pid = nil
|
19
|
+
@monitoring_thread = nil
|
20
|
+
@port = nil
|
21
|
+
start_server_with_pipe
|
22
|
+
@sockets = []
|
23
|
+
end
|
24
|
+
|
25
|
+
def server_port
|
26
|
+
@port
|
27
|
+
end
|
28
|
+
|
29
|
+
def new_server_socket_connection
|
30
|
+
begin
|
31
|
+
# socket = TCPSocket.new(DEFAULT_SERVER_IP, @port)
|
32
|
+
socket = Addrinfo.tcp(DEFAULT_SERVER_HOST, @port).connect
|
33
|
+
@sockets.push(socket)
|
34
|
+
socket
|
35
|
+
rescue Errno::ECONNREFUSED => e
|
36
|
+
puts e
|
37
|
+
nil
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def server_running?
|
42
|
+
return false if @monitoring_thread.nil?
|
43
|
+
monitoring_result = @monitoring_thread.join(1)
|
44
|
+
monitoring_result.nil?
|
45
|
+
end
|
46
|
+
|
47
|
+
def stop_server
|
48
|
+
return if @control_pipe.nil?
|
49
|
+
@control_pipe.close_write
|
50
|
+
@sockets.each {|socket| socket.close unless socket.closed? }
|
51
|
+
sleep(1)
|
52
|
+
end
|
53
|
+
|
54
|
+
def to_s # for test & debug
|
55
|
+
"SDKServer(port=#{@port}; pid=#{@usdk_pid})"
|
56
|
+
end
|
57
|
+
|
58
|
+
private
|
59
|
+
|
60
|
+
def start_server_with_pipe
|
61
|
+
in_pipe, @control_pipe = IO.pipe
|
62
|
+
@port_pipe, port_w = IO.pipe
|
63
|
+
|
64
|
+
@usdk_pid = spawn(
|
65
|
+
EXECUTABLE_FILEPATH, 'universal', '--no-singleton', '--shutdown-mode', 'stdin',
|
66
|
+
in: in_pipe, out: port_w, err: port_w,
|
67
|
+
# close_others: true
|
68
|
+
)
|
69
|
+
in_pipe.close_read
|
70
|
+
port_w.close_write
|
71
|
+
|
72
|
+
@monitoring_thread = Process.detach(@usdk_pid)
|
73
|
+
|
74
|
+
# can print Warning from server
|
75
|
+
server_message = @port_pipe.readline.strip
|
76
|
+
while server_message.to_i.zero?
|
77
|
+
if ENV['APPLITOOLS_SHOW_LOGS']
|
78
|
+
puts server_message
|
79
|
+
end
|
80
|
+
server_message = @port_pipe.readline.strip
|
81
|
+
end
|
82
|
+
@port = server_message.to_i
|
83
|
+
|
84
|
+
@port_pipe.close_read
|
85
|
+
|
86
|
+
if ENV['APPLITOOLS_SHOW_LOGS']
|
87
|
+
puts "Started Universal SDK server at #{@port} pid = #{@usdk_pid} ; from #{EXECUTABLE_FILEPATH}"
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|
92
|
+
end
|
@@ -0,0 +1,109 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'open-uri'
|
4
|
+
require 'rubygems/package'
|
5
|
+
require 'zlib'
|
6
|
+
|
7
|
+
module Applitools
|
8
|
+
module EyesUniversal
|
9
|
+
class UniversalServerDownloader
|
10
|
+
class << self
|
11
|
+
|
12
|
+
def tar_gz_filepath(to)
|
13
|
+
File.expand_path(tar_gz_filename, to)
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
def prepare_server(to) # install
|
18
|
+
where = tar_gz_filepath(to)
|
19
|
+
puts "[eyes-universal] prepare server : #{where}"
|
20
|
+
|
21
|
+
Gem::Package::TarReader.new(Zlib::GzipReader.open(where)) do |tar|
|
22
|
+
tar.each do |entry|
|
23
|
+
binary_filename = File.basename(entry.full_name)
|
24
|
+
if filename != binary_filename
|
25
|
+
puts "[eyes-universal] skip #{binary_filename}"
|
26
|
+
next
|
27
|
+
end
|
28
|
+
puts "[eyes-universal] process #{binary_filename}"
|
29
|
+
unpacked_binary = File.expand_path(binary_filename, to)
|
30
|
+
File.open(unpacked_binary, 'wb') {|f| f.print entry.read }
|
31
|
+
|
32
|
+
FileUtils.chmod('+x', unpacked_binary)
|
33
|
+
# binary_version = `#{unpacked_binary} --version`
|
34
|
+
puts "[eyes-universal] Binary ready #{binary_filename} (#{Applitools::EyesUniversal::UNIVERSAL_CORE_VERSION}) at #{unpacked_binary}"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
def get_compress_all_binaries(to)
|
41
|
+
filenames = ['core-alpine', 'core-linux', 'core-linux-arm64', 'core-macos', 'core-win.exe']
|
42
|
+
|
43
|
+
target_core = File.expand_path(tar_gz_filename, to)
|
44
|
+
if File.exist?(target_core)
|
45
|
+
puts "[eyes-universal] Use Server placed in #{target_core}"
|
46
|
+
return
|
47
|
+
end
|
48
|
+
File.open(target_core, "wb") do |file|
|
49
|
+
Zlib::GzipWriter.wrap(file) do |gzip|
|
50
|
+
Gem::Package::TarWriter.new(gzip) do |tar|
|
51
|
+
|
52
|
+
filenames.each do |fname|
|
53
|
+
binary_url = URI.join(base_url, fname)
|
54
|
+
where = File.expand_path(fname, to)
|
55
|
+
binary_url.open {|cloud| File.binwrite(where, cloud.read) }
|
56
|
+
mode = File.stat(where).mode
|
57
|
+
tar.add_file_simple(fname, mode, File.size(where)) do |io|
|
58
|
+
File.open(where, "rb") do |f|
|
59
|
+
io.write(f.read)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
puts "[eyes-universal] Download complete. Server placed in #{where}"
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
if File.exist?(target_core)
|
70
|
+
puts "[eyes-universal] Download complete (#{Applitools::EyesUniversal::UNIVERSAL_CORE_VERSION}). Server placed in #{target_core}"
|
71
|
+
else
|
72
|
+
raise "[eyes-universal] ERROR : Download incomplete (#{Applitools::EyesUniversal::UNIVERSAL_CORE_VERSION}). Server not ready"
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
|
77
|
+
private
|
78
|
+
|
79
|
+
def base_url
|
80
|
+
"https://github.com/applitools/eyes.sdk.javascript1/releases/download/js%2Fcore%40#{Applitools::EyesUniversal::UNIVERSAL_CORE_VERSION}/"
|
81
|
+
end
|
82
|
+
|
83
|
+
def filename
|
84
|
+
return 'core-win.exe' if Gem.win_platform?
|
85
|
+
case RUBY_PLATFORM
|
86
|
+
when /darwin/i
|
87
|
+
'core-macos'
|
88
|
+
when /arm/i
|
89
|
+
'core-linux-arm64'
|
90
|
+
when /mswin|windows|mingw/i
|
91
|
+
'core-win.exe'
|
92
|
+
when /musl/i
|
93
|
+
'core-alpine'
|
94
|
+
when /linux|arch/i
|
95
|
+
'core-linux'
|
96
|
+
else
|
97
|
+
raise "Unsupported platform #{RUBY_PLATFORM}"
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
def tar_gz_filename
|
102
|
+
'core.tar.gz'
|
103
|
+
end
|
104
|
+
|
105
|
+
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "applitools/eyes_universal/version"
|
4
|
+
require_relative "applitools/eyes_universal/executable_finder"
|
5
|
+
require_relative "applitools/eyes_universal/universal_server_control"
|
6
|
+
|
7
|
+
module Applitools::EyesUniversal
|
8
|
+
|
9
|
+
end
|
metadata
CHANGED
@@ -1,35 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eyes_universal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 4.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Applitools Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-12-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: open-uri
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0.1'
|
20
17
|
- - ">="
|
21
18
|
- !ruby/object:Gem::Version
|
22
19
|
version: 0.1.0
|
20
|
+
- - "~>"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0.1'
|
23
23
|
type: :development
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
|
-
- - "~>"
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '0.1'
|
30
27
|
- - ">="
|
31
28
|
- !ruby/object:Gem::Version
|
32
29
|
version: 0.1.0
|
30
|
+
- - "~>"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0.1'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: stringio
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,10 +52,16 @@ extensions:
|
|
52
52
|
- ext/eyes-universal/Rakefile
|
53
53
|
extra_rdoc_files: []
|
54
54
|
files:
|
55
|
+
- CHANGELOG.md
|
56
|
+
- Rakefile
|
55
57
|
- ext/eyes-universal/Rakefile
|
56
58
|
- ext/eyes-universal/core.tar.gz
|
57
|
-
-
|
58
|
-
- lib/applitools/
|
59
|
+
- eyes_universal.gemspec
|
60
|
+
- lib/applitools/eyes_universal/executable_finder.rb
|
61
|
+
- lib/applitools/eyes_universal/universal_server_control.rb
|
62
|
+
- lib/applitools/eyes_universal/universal_server_downloader.rb
|
63
|
+
- lib/applitools/eyes_universal/version.rb
|
64
|
+
- lib/eyes_universal.rb
|
59
65
|
homepage: https://www.applitools.com
|
60
66
|
licenses:
|
61
67
|
- Applitools
|
@@ -75,7 +81,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
75
81
|
- !ruby/object:Gem::Version
|
76
82
|
version: '0'
|
77
83
|
requirements: []
|
78
|
-
rubygems_version: 3.3.
|
84
|
+
rubygems_version: 3.0.3.1
|
79
85
|
signing_key:
|
80
86
|
specification_version: 4
|
81
87
|
summary: Applitools Ruby Universal binaries for SDK
|
@@ -1,212 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'open-uri'
|
4
|
-
require 'digest'
|
5
|
-
require 'fileutils'
|
6
|
-
require 'rubygems/package'
|
7
|
-
require 'zlib'
|
8
|
-
|
9
|
-
module Applitools
|
10
|
-
class UniversalServerDownloader
|
11
|
-
class << self
|
12
|
-
|
13
|
-
EXPECTED_SHA = {
|
14
|
-
# 'core.tar.gz' => '18c85f7aa8800b954847640dfb959cc48794ad05d95dde96c15db42c9154792f',
|
15
|
-
'core-alpine' => 'ddb73106b9162b067cc3c6eeb45549db46cd27cc1dce10049e0462ca53a05997',
|
16
|
-
'core-linux' => '4bb76583b380cc300979bdd7ecc5e17cc6b954187c1e18619fdd5bb102b31d0a',
|
17
|
-
'core-linux-arm64' => 'de8e502ac25edfeced882b7fbde44eb825e9708fa186c0338d3943fe4c03f693',
|
18
|
-
'core-macos' => 'a4d0a1c19a93e12e1e4d0b67944110614b08889108aae77c31749d287c9023d7',
|
19
|
-
'core-win.exe' => 'd883e3ac51e6510ebb1ba22491bd51313bb2c44456b3ae404a461603cb42e4eb'
|
20
|
-
}
|
21
|
-
|
22
|
-
def download(to)
|
23
|
-
puts "[eyes-universal] Downloading Eyes universal server from #{full_url}"
|
24
|
-
where = filepath(to)
|
25
|
-
full_url.open {|cloud| File.binwrite(where, cloud.read) }
|
26
|
-
if Digest::SHA256.file(where).to_s == expected_binary_sha
|
27
|
-
FileUtils.chmod('+x', where)
|
28
|
-
puts "[eyes-universal] Download complete. Server placed in #{where}"
|
29
|
-
else
|
30
|
-
puts "[eyes-universal] Download broken. Please try reinstall"
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def filepath(to)
|
35
|
-
File.expand_path(filename, to)
|
36
|
-
end
|
37
|
-
|
38
|
-
def tar_gz_filepath(to)
|
39
|
-
File.expand_path(tar_gz_filename, to)
|
40
|
-
end
|
41
|
-
|
42
|
-
def tar_gz_download(to) # build - depricated
|
43
|
-
puts "[eyes-universal] Downloading Core server from #{tar_gz_full_url}"
|
44
|
-
where = tar_gz_filepath(to)
|
45
|
-
unless File.exist?(where) && Digest::SHA256.file(where).to_s == tar_gz_sha
|
46
|
-
tar_gz_full_url.open {|cloud| File.binwrite(where, cloud.read) }
|
47
|
-
end
|
48
|
-
downloaded_sha = Digest::SHA256.file(where).to_s
|
49
|
-
if downloaded_sha == tar_gz_sha
|
50
|
-
Gem::Package::TarReader.new(Zlib::GzipReader.open(where)) do |tar|
|
51
|
-
tar.each do |entry|
|
52
|
-
binary_filename = File.basename(entry.full_name)
|
53
|
-
dest = File.expand_path(binary_filename, to)
|
54
|
-
dest_dir = File.dirname(dest)
|
55
|
-
FileUtils.mkdir_p(dest_dir) unless Dir.exist?(dest_dir)
|
56
|
-
FileUtils.remove_file(dest) if File.exist?(dest)
|
57
|
-
File.open(dest, 'wb') {|f| f.print entry.read }
|
58
|
-
|
59
|
-
binary_sha = Digest::SHA256.file(dest).to_s
|
60
|
-
if check_binary(binary_filename, binary_sha)
|
61
|
-
FileUtils.chmod('+x', dest)
|
62
|
-
puts "[eyes-universal] Binary check pass #{binary_filename} (#{Applitools::UNIVERSAL_CORE_VERSION}): #{dest}"
|
63
|
-
FileUtils.rm(dest)
|
64
|
-
else
|
65
|
-
raise "[eyes-universal] Binary fail #{binary_filename} (#{Applitools::UNIVERSAL_CORE_VERSION}): #{binary_sha}"
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
puts "[eyes-universal] Download complete (#{Applitools::UNIVERSAL_CORE_VERSION}). Server placed in #{where}"
|
70
|
-
else
|
71
|
-
raise "[eyes-universal] Download broken. (mismatch: #{downloaded_sha})"
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
def prepare_server(to) # install
|
76
|
-
where = tar_gz_filepath(to)
|
77
|
-
# downloaded_sha = Digest::SHA256.file(where).to_s
|
78
|
-
# puts "[eyes-universal] prepare server : #{where} #{downloaded_sha}"
|
79
|
-
puts "[eyes-universal] prepare server : #{where}"
|
80
|
-
|
81
|
-
# if downloaded_sha == tar_gz_sha
|
82
|
-
Gem::Package::TarReader.new(Zlib::GzipReader.open(where)) do |tar|
|
83
|
-
tar.each do |entry|
|
84
|
-
binary_filename = File.basename(entry.full_name)
|
85
|
-
if filename != binary_filename
|
86
|
-
puts "[eyes-universal] skip #{binary_filename}"
|
87
|
-
next
|
88
|
-
end
|
89
|
-
puts "[eyes-universal] process #{binary_filename}"
|
90
|
-
unpacked_binary = File.expand_path(binary_filename, to)
|
91
|
-
# FileUtils.remove_file(unpacked_binary) if File.exist?(unpacked_binary)
|
92
|
-
File.open(unpacked_binary, 'wb') {|f| f.print entry.read }
|
93
|
-
|
94
|
-
# binary_sha = Digest::SHA256.file(unpacked_binary).to_s
|
95
|
-
# if check_binary(binary_filename, binary_sha)
|
96
|
-
FileUtils.chmod('+x', unpacked_binary)
|
97
|
-
puts "[eyes-universal] Binary ready #{binary_filename} (#{Applitools::UNIVERSAL_CORE_VERSION}) at #{unpacked_binary}"
|
98
|
-
# else
|
99
|
-
# puts "[eyes-universal] Binary check fail #{binary_filename} (#{Applitools::UNIVERSAL_CORE_VERSION}): #{binary_sha}"
|
100
|
-
# end
|
101
|
-
end
|
102
|
-
end
|
103
|
-
# else
|
104
|
-
# puts "[eyes-universal] Server broken. (mismatch: #{downloaded_sha})"
|
105
|
-
# end
|
106
|
-
end
|
107
|
-
|
108
|
-
def get_compress_all_binaries(to)
|
109
|
-
filenames = EXPECTED_SHA.keys
|
110
|
-
|
111
|
-
target_core = File.expand_path(tar_gz_filename, to)
|
112
|
-
File.open(target_core, "wb") do |file|
|
113
|
-
Zlib::GzipWriter.wrap(file) do |gzip|
|
114
|
-
Gem::Package::TarWriter.new(gzip) do |tar|
|
115
|
-
|
116
|
-
filenames.each do |fname|
|
117
|
-
binary_url = URI.join(base_url, fname)
|
118
|
-
where = File.expand_path(fname, to)
|
119
|
-
# unless File.exist?(where) && Digest::SHA256.file(where).to_s == EXPECTED_SHA[fname] # local dev/debug
|
120
|
-
binary_url.open {|cloud| File.binwrite(where, cloud.read) }
|
121
|
-
# end
|
122
|
-
# downloaded_sha = Digest::SHA256.file(where).to_s
|
123
|
-
# if downloaded_sha == EXPECTED_SHA[fname]
|
124
|
-
mode = File.stat(where).mode
|
125
|
-
tar.add_file_simple(fname, mode, File.size(where)) do |io|
|
126
|
-
File.open(where, "rb") do |f|
|
127
|
-
io.write(f.read)
|
128
|
-
end
|
129
|
-
end
|
130
|
-
puts "[eyes-universal] Download complete. Server placed in #{where}"
|
131
|
-
# else
|
132
|
-
# puts "[eyes-universal] Download broken. (#{fname} mismatch: #{downloaded_sha})"
|
133
|
-
# end
|
134
|
-
end
|
135
|
-
|
136
|
-
end
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
if File.exist?(target_core)
|
141
|
-
puts "[eyes-universal] Download complete (#{Applitools::UNIVERSAL_CORE_VERSION}). Server placed in #{target_core}"
|
142
|
-
else
|
143
|
-
raise "[eyes-universal] ERROR : Download incomplete (#{Applitools::UNIVERSAL_CORE_VERSION}). Server not ready"
|
144
|
-
end
|
145
|
-
end
|
146
|
-
|
147
|
-
private
|
148
|
-
|
149
|
-
def base_url
|
150
|
-
"https://github.com/applitools/eyes.sdk.javascript1/releases/download/js%2Fcore%40#{Applitools::UNIVERSAL_CORE_VERSION}/"
|
151
|
-
end
|
152
|
-
|
153
|
-
def full_url
|
154
|
-
URI.join(base_url, filename)
|
155
|
-
end
|
156
|
-
|
157
|
-
def expected_binary_sha
|
158
|
-
return EXPECTED_SHA['core-win.exe'] if Gem.win_platform?
|
159
|
-
case RUBY_PLATFORM
|
160
|
-
when /darwin/i
|
161
|
-
EXPECTED_SHA['core-macos']
|
162
|
-
when /arm/i
|
163
|
-
EXPECTED_SHA['core-linux-arm64']
|
164
|
-
when /mswin|windows|mingw/i
|
165
|
-
EXPECTED_SHA['core-win.exe']
|
166
|
-
when /musl/i
|
167
|
-
EXPECTED_SHA['core-alpine']
|
168
|
-
when /linux|arch/i
|
169
|
-
EXPECTED_SHA['core-linux']
|
170
|
-
else
|
171
|
-
raise 'Unsupported platform'
|
172
|
-
end
|
173
|
-
end
|
174
|
-
|
175
|
-
def filename
|
176
|
-
return 'core-win.exe' if Gem.win_platform?
|
177
|
-
case RUBY_PLATFORM
|
178
|
-
when /darwin/i
|
179
|
-
'core-macos'
|
180
|
-
when /arm/i
|
181
|
-
'core-linux-arm64'
|
182
|
-
when /mswin|windows|mingw/i
|
183
|
-
'core-win.exe'
|
184
|
-
when /musl/i
|
185
|
-
'core-alpine'
|
186
|
-
when /linux|arch/i
|
187
|
-
'core-linux'
|
188
|
-
else
|
189
|
-
raise "Unsupported platform #{RUBY_PLATFORM}"
|
190
|
-
end
|
191
|
-
end
|
192
|
-
|
193
|
-
def tar_gz_full_url
|
194
|
-
URI.join(base_url, tar_gz_filename)
|
195
|
-
end
|
196
|
-
|
197
|
-
def tar_gz_filename
|
198
|
-
'core.tar.gz'
|
199
|
-
end
|
200
|
-
def tar_gz_sha
|
201
|
-
EXPECTED_SHA[tar_gz_filename]
|
202
|
-
end
|
203
|
-
|
204
|
-
def check_binary(binary_filename, binary_sha)
|
205
|
-
expected_sha = EXPECTED_SHA[binary_filename]
|
206
|
-
raise "Unsupported platform #{binary_filename}" if expected_sha.nil?
|
207
|
-
binary_sha == expected_sha
|
208
|
-
end
|
209
|
-
|
210
|
-
end
|
211
|
-
end
|
212
|
-
end
|