eyes_images 6.5.2 → 6.5.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 17ff6aaef191825a021f827971a9e4ecbc49282243f65907e7daa0d4d0ab6368
4
- data.tar.gz: 7d1bd99a566a18819107f027e43658f772870c33f82731a7808c9fdf3ec9d741
3
+ metadata.gz: a1065b462858b2cc0adada9b3605b6b39493eeea5b0ee468fb10954721366fcb
4
+ data.tar.gz: 49d044dab2953e71625b6de9ae0fd0097ae9a5e6dafacf2aec6a1c3ec439d21c
5
5
  SHA512:
6
- metadata.gz: 4dd2a0ebf4fb1ff93942087efb1ff46636c6e8a4e6152a29c72c3f7b594270f50fc61f01de50178c71c1691b74cc4242485e5edbbe819cb0b240cbf614fe12e0
7
- data.tar.gz: 512dc154345972f0e2d08227fc34bf8e191ae1935c728c2f350eee6b854233e42d7640538203ce7e66eee7483808763a35bb86a4e5f779c2caf275a7317a178a
6
+ metadata.gz: 7eb04ea845d8f07dadef21a37678ed6f5523ea48de359d60427cdfedced1704f06a7580f06a8d727d0ae208c0a3da321c2236b2961261a2b3721900813111824
7
+ data.tar.gz: a7ae9671aa1f24ac43782117caf7e5171bce3c7aecc36f24a9c589d7aae8be6f0c07c8959156324e410bca476bb2fb3fd4729aa3763e37417e69ae721a865ae6
data/CHANGELOG.md CHANGED
@@ -1,5 +1,97 @@
1
1
  # Changelog
2
2
 
3
+ ## [6.5.4](https://github.com/Applitools-Dev/sdk/compare/ruby/eyes_images@6.5.3...ruby/eyes_images@6.5.4) (2025-06-15)
4
+
5
+
6
+ ### Dependencies
7
+
8
+ * @applitools/dom-snapshot bumped to 4.11.22
9
+ #### Bug Fixes
10
+
11
+ * css media query group conditions | FLD-3151 ([#3023](https://github.com/Applitools-Dev/sdk/issues/3023)) ([56ec107](https://github.com/Applitools-Dev/sdk/commit/56ec107bcda6a5a330d19c278267d73de5d86d8b))
12
+
13
+
14
+
15
+ * @applitools/req bumped to 1.7.13
16
+
17
+ * @applitools/dom-capture bumped to 11.5.6
18
+
19
+ * @applitools/spec-driver-webdriver bumped to 1.2.6
20
+
21
+ * @applitools/screenshoter bumped to 3.11.5
22
+
23
+ * @applitools/nml-client bumped to 1.9.5
24
+ #### Bug Fixes
25
+
26
+ * nml-client depends on core-base ([#2995](https://github.com/Applitools-Dev/sdk/issues/2995)) ([1f7cf69](https://github.com/Applitools-Dev/sdk/commit/1f7cf6930709a40a498dd1f525132648aa593af0))
27
+
28
+
29
+
30
+ * @applitools/tunnel-client bumped to 1.8.0
31
+ #### Features
32
+
33
+ * update build script to include individual zip creation ([#3008](https://github.com/Applitools-Dev/sdk/issues/3008)) ([46a0cfc](https://github.com/Applitools-Dev/sdk/commit/46a0cfcc472ab69384560095d90a7fa58b4b9186))
34
+
35
+
36
+
37
+ * @applitools/ufg-client bumped to 1.16.12
38
+ #### Bug Fixes
39
+
40
+ * remove safari-early-access browser version for js sdks | AD-10226 ([#3034](https://github.com/Applitools-Dev/sdk/issues/3034)) ([7ca09f5](https://github.com/Applitools-Dev/sdk/commit/7ca09f5c0c271570142058ea766533b86434dc2e))
41
+
42
+
43
+
44
+ * @applitools/core-base bumped to 1.25.4
45
+ #### Bug Fixes
46
+
47
+ * Differentiate Between Invalid and Missing API Key Errors ([6ac17d4](https://github.com/Applitools-Dev/sdk/commit/6ac17d40d7aff45b3de5c949dc7d4673b9739bfd))
48
+ * export issues for ts js with legacy solution ([#3016](https://github.com/Applitools-Dev/sdk/issues/3016)) ([a3a9daf](https://github.com/Applitools-Dev/sdk/commit/a3a9daf9c3361bb1f253499c1335a1434ec520d1))
49
+
50
+
51
+
52
+ * @applitools/test-server bumped to 1.2.3
53
+ #### Bug Fixes
54
+
55
+ * basic auth protected resources | FLD-2761 | FMRI-120 ([#2444](https://github.com/Applitools-Dev/sdk/issues/2444)) ([b48cf49](https://github.com/Applitools-Dev/sdk/commit/b48cf49dec50bbf1ed2ba111608a48cf09962565))
56
+ * export issues for ts js with legacy solution ([#3016](https://github.com/Applitools-Dev/sdk/issues/3016)) ([a3a9daf](https://github.com/Applitools-Dev/sdk/commit/a3a9daf9c3361bb1f253499c1335a1434ec520d1))
57
+ * storybook navigation timeouts ([#2701](https://github.com/Applitools-Dev/sdk/issues/2701)) ([64e3a40](https://github.com/Applitools-Dev/sdk/commit/64e3a40a524ae76ec457ae9c2d1170fbaea5e982))
58
+
59
+
60
+
61
+ * @applitools/ec-client bumped to 1.10.15
62
+
63
+ * @applitools/core bumped to 4.40.0
64
+ #### Features
65
+
66
+ * update build script to include individual zip creation ([#3008](https://github.com/Applitools-Dev/sdk/issues/3008)) ([46a0cfc](https://github.com/Applitools-Dev/sdk/commit/46a0cfcc472ab69384560095d90a7fa58b4b9186))
67
+
68
+
69
+ #### Bug Fixes
70
+
71
+ * css media query group conditions | FLD-3151 ([#3023](https://github.com/Applitools-Dev/sdk/issues/3023)) ([56ec107](https://github.com/Applitools-Dev/sdk/commit/56ec107bcda6a5a330d19c278267d73de5d86d8b))
72
+ * export issues for ts js with legacy solution ([#3016](https://github.com/Applitools-Dev/sdk/issues/3016)) ([a3a9daf](https://github.com/Applitools-Dev/sdk/commit/a3a9daf9c3361bb1f253499c1335a1434ec520d1))
73
+ * extractLatestCommitInfo | FLD-3217 ([#3039](https://github.com/Applitools-Dev/sdk/issues/3039)) ([3f72a23](https://github.com/Applitools-Dev/sdk/commit/3f72a230fa0166046ea85ae004cfb544de86e628))
74
+ * handle error when sending started message in tunnel manager server ([#3019](https://github.com/Applitools-Dev/sdk/issues/3019)) ([2cdaad8](https://github.com/Applitools-Dev/sdk/commit/2cdaad896fd679187449b69abe529b006f6255ee))
75
+
76
+
77
+
78
+ * eyes_universal bumped to 4.40.0
79
+
80
+ * eyes_core bumped to 6.7.2
81
+
82
+
83
+ ## [6.5.3](https://github.com/Applitools-Dev/sdk/compare/ruby/eyes_images@6.5.2...ruby/eyes_images@6.5.3) (2025-05-22)
84
+
85
+
86
+ ### Dependencies
87
+
88
+ * eyes_universal bumped to 4.38.0
89
+ #### Features
90
+
91
+ * adding the mac-arm64 binary ([#2975](https://github.com/Applitools-Dev/sdk/issues/2975)) ([95d647f](https://github.com/Applitools-Dev/sdk/commit/95d647ff4a451309d985a786f7cec544d926f0e5))
92
+ * eyes_core bumped to 6.7.1
93
+
94
+
3
95
  ## [6.5.2](https://github.com/Applitools-Dev/sdk/compare/ruby/eyes_images@6.5.1...ruby/eyes_images@6.5.2) (2025-04-17)
4
96
 
5
97
 
data/LICENSE ADDED
@@ -0,0 +1,26 @@
1
+ - -
2
+ SDK LICENSE AGREEMENT
3
+ IMPORTANT - PLEASE READ CAREFULLY THE TERMS OF THIS LICENSE AGREEMENT ("AGREEMENT"). BY INSTALLING, ACCESSING AND/OR USING THE SOFTWARE (AS DEFINED BELOW), YOU EXPRESSLY ACKNOWLEDGE AND AGREE THAT YOU, OR THE COMPANY YOU REPRESENT, ("YOU" OR "LICENSEE") ARE ENTERING INTO A LEGAL AGREEMENT WITH APPLITOOLS LTD. AND ITS AFFILIATES ("APPLITOOLS"), AND HAVE UNDERSTOOD AND AGREE TO COMPLY WITH, AND BE LEGALLY BOUND BY, THE TERMS AND CONDITIONS OF THIS AGREEMENT. YOU HEREBY WAIVE ANY RIGHTS OR REQUIREMENTS UNDER ANY LAWS OR REGULATIONS IN ANY JURISDICTION WHICH REQUIRE AN ORIGINAL (NON-ELECTRONIC) SIGNATURE OR DELIVERY OR RETENTION OF NON-ELECTRONIC RECORDS, TO THE EXTENT PERMITTED UNDER APPLICABLE LAW.
4
+ THE SOFTWARE MAY BE USED SOLELY FOR YOUR PERSONAL, NON-COMMERCIAL PURPOSES. FOR COMMERCIAL PURPOSES PLEASE CONTACT THE REGIONAL APPLITOOLS BUSINESS REPRESENTATIVE.
5
+ 1. Definitions. For purposes of this Agreement, the following capitalized terms shall have the following meaning:
6
+ 1. "Documentation" means the user's guides and technical manuals delivered by Applitools to Licensee.
7
+ 2. "Feedback" means suggestions, comments or feedback (whether orally or in writing) with respect to the Software.
8
+ 3. "Intellectual Property Rights" means all intangible legal rights, titles and interests evidenced by or embodied in all: (i) inventions (regardless of patentability and whether or not reduced to practice), improvements thereto, patents, patent applications, patent disclosures, together with all reissuances, continuations, continuations in part, revisions, extensions and reexaminations thereof; (ii) trademarks, service marks, trade dress, logos, trade names, corporate names, together with translations, adaptations, derivations and combinations thereof, including goodwill associated therewith, and applications, registrations, and renewals in connection therewith; (iii) any work of authorship, regardless of copyrightable, copyrightable works, copyrights (including moral rights), and applications, registrations and renewals in connection therewith; (iv) mask works and applications, registrations and renewals in connection therewith; (v) trade secrets and Confidential Information; and (vi) other proprietary rights and any other similar rights, in each case on a worldwide basis, and copies and tangible embodiments thereof, in whatever form or medium.
9
+ 4. "License" means the right to use the Software pursuant to Section ‎2.1 to this Agreement.
10
+ 5. "Software" means Applitools' software development kit software in object or source code version, Documentation and any updates and upgrade thereto (to the extent delivered).
11
+ 1. License
12
+ 1. Grant of License. Subject to the terms and conditions of this Agreement, Applitools grants You, during the Term, a personal, non-exclusive, non-sublicensable, non-transferable, revocable license to: (i) use the Software solely for Your own personal (non-commercial) use and (ii) use and display Applitools' Marks solely for the purpose of publicizing or advertising that You are using the Software.
13
+ 2. Documentation. Applitools may make available Documentation to Licensee for Licensee to use solely in connection with Licensee's use of the Software during the term of this Agreement. Licensee may print or copy the Documentation as needed for its own purposes provided that all copyright notices are included therein. The Documentation shall be considered the Confidential Information of Applitools.
14
+ 1. Reservation of Rights; Use Restrictions. Other than the rights explicitly granted in this Agreement, Licensee shall have no other rights, express or implied, in the Software. Without limiting the generality of the foregoing, Licensee agrees and undertakes not to: (i) allow any third party to use the Software in any manner, including but not limited to, sell, lease, sublicense or distribute the Software, or any part thereof; (ii) modify, revise, or alter the Software or reverse engineer, decompile, disassemble or otherwise reduce to human-perceivable form the Software's source code; (iii) copy or allow copies of the Software to be made; (iv) remove, alter or obscure any proprietary notice or identification, including copyright, trademark, patent or other notices, contained in or displayed on or via the Software; (v) use the Software to violate any applicable laws, rules or regulations, or for any unlawful, harmful, irresponsible, or inappropriate purpose, or in any manner that breaches this Agreement, and/or (vi) represent that it possesses any proprietary interest in the Software.
15
+ 1. Third Party Software. Licensee acknowledges and agrees that any third party software ("Third Party Software") that provided with the Software is provided under the terms of the license attached/linked thereto or, if no such license is attached, such Third Party Software is provided for free and on "AS IS" basis. Applitools is not liable for any losses or damages which may occur resulting from the use of any Third Party Software. Applitools does not possess any proprietary interest in such Third Party Software.
16
+ 1. Open Source Licenses. The Software includes certain open source code software and materials (as shall be listed in the documentation of the Software) ("Open Source Software") that are subject to their respective open source licenses ("Open Source Licenses"). Such Open Source Licenses contain a list of conditions with respect to warranty, copyright policy and other provisions. By executing this Agreement, Licensee undertakes to strictly comply with the terms and condition of the Open Source Licenses, as may be amended from time to time. In order to comply with the Open Source Licenses, Licensee shall read the respective licenses or notices, such list of Open Source Licenses may be amended from time to time by Applitools, at its sole discretion. In the event of any inconsistencies or conflicting provisions between the provisions of the Open Source Licenses and the provisions of this Agreement, the provisions of the Open Source Licenses shall prevail. Without derogating from the generality of the foregoing, it is clarified that any Open Source Software is provided on an "AS IS" basis, without indemnity or warranty of any kind, whether express or implied. For clarity, the representations and warranties set forth in Section ‎4 hereunder shall not apply to any Open Source Software.
17
+ 1. Title & Ownership. APPLITOOLS DOES NOT SELL OR TRANSFER TITLE IN THE SOFTWARE, OR ANY PART THEREOF, TO LICENSEE. The Documentation, Software (excluding any Open Source Software and Third Party Software therein which are owned by their respective licensors) and/or any copies thereof, including without limitation any derivative works made (regardless of whether such derivative works were made and/or developed pursuant to the request and/or specifications of Licensee, and irrespective of any support and/or assistance Applitools may, will or had received from Licensee, or any third party on its behalf, with respect thereto), as well as any updates or upgrades thereto, if provided to Applitools pursuant to this Agreement, shall remain Applitools' sole and exclusive property. All Intellectual Property Rights evidenced by or embodied in and/or attached/connected/related to the Software, or part thereof, are and shall be owned solely and exclusively by Applitools. Nothing in this Agreement shall constitute a waiver of Applitools' Intellectual Property Rights under any law, or be in any way construed or interpreted as such. It is further agreed that to the extent Licensee provides Applitools with Feedback, Licensee acknowledges that any and all rights, including Intellectual Property Rights in such Feedback shall belong exclusively to Applitools and Licensee hereby irrevocably and unconditionally transfers and assigns to Applitools all intellectual property rights in such Feedback and waives any and all moral rights that Licensee may have in respect thereto. It is further understood that use of Feedback, if any, may be made by Applitools at its sole discretion, and that Applitools in no way shall be obliged to make use of any kind of the Feedback or part thereof.
18
+ 1. Warranty. Applitools warrants that to its knowledge it has the right to grant the license under this Agreement. Applitools' sole liability for any breach of this warranty or any other warranty under this Agreement shall be, at Applitools' sole discretion: (i) to replace or repair the Software or the applicable portion thereof; or (ii) to terminate this Agreement.
19
+ 2. Warranty Exclusions. The warranties set forth in Section ‎4 are contingent upon Licensee's proper use of the Software, and shall not apply to damage caused by abuse, misuse, alteration, neglect or unauthorized repair or installation, or by the use or attempted use of Software other than that supplied and supported by Applitools. Applitools will use reasonable commercial efforts to repair or replace the Software or the applicable portion thereof, pursuant to the foregoing warranty within thirty (30) days of being so notified.
20
+ 1. Warranty Disclaimers. AS BETWEEN LICENSEE AND APPLITOOLS, EXCEPT AS SET IN SECTION ‎4, THE SOFTWARE IS PROVIDED ON AN "AS IS" AND "AS AVAILABLE" BASIS WITHOUT WARRANTIES OF ANY KIND INCLUDING, WITHOUT LIMITATION, REPRESENTATIONS, WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR INTENDED OR PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, THAT THE SOFTWARE WILL MEET LICENSEE'S REQUIREMENTS OR EXPECTATIONS OR WILL ACHIEVE ANY SPECIFIC RESULTS AND THOSE ARISING BY STATUTE OR FROM A COURSE OF DEALING OR USAGE OF TRADE. Applicable law may not allow the exclusion of certain warranties, so to that extent such exclusions may not apply.
21
+ 1. High Risk Activities. You acknowledge that the Software is not fault tolerant and is not designed, manufactured, or intended for use or resale as on-line control equipment in hazardous or high risk environments and activities requiring fail-safe performance (such as in the operation of nuclear facilities, aircraft navigation or communication systems, air traffic control, direct life support machines and/or devices, or weapons systems) in which the failure of the Software could lead directly to death, personal injury, or severe physical or environmental damage, and You agree not to use or allow the use of the Software or any portion thereof for, or in connection with, any such environment or activity.
22
+ 1. Indemnify. You agree that Applitools shall have no liability whatsoever for any use made of the Software by You or any third party. You hereby agree to defend, indemnify and hold harmless Applitools and its affiliates and their respective officers, directors, agents and employees from any and all claims, damages, liabilities, costs, and expenses (including attorney's fees) arising from claims related to Your use of the Software as well as from Your failure to comply with this Agreement.
23
+ 1. Limitation of Liability. UNDER NO CIRCUMSTANCES SHALL APPLITOOLS AND/OR ITS AFFILIATES BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL DAMAGES, OR FOR ANY LOSS OF DATA, REVENUE, BUSINESS OR REPUTATION, THAT ARISES UNDER OR IN CONNECTION WITH THIS AGREEMENT, OR THAT RESULTS FROM THE USE OF, OR THE INABILITY TO USE, THE SOFTWARE. APPLITOOLS'S TOTAL AGGREGATE LIABILITY FOR ANY AND ALL DIRECT DAMAGES AND LOSSES THAT ARISE UNDER OR IN CONNECTION WITH THIS AGREEMENT SHALL NOT IN ANY CIRCUMSTANCE EXCEED THE AMOUNT OF 100.00 (ONE HUNDRED) UNITED STATES DOLLARS. THE FOREGOING LIMITATIONS AND EXCLUSIONS IN THIS SECTION ‎7 SHALL APPLY: (I) EVEN IF APPLITOOLS HAS BEEN ADVISED OF THE POSSIBILITY OF ANY DAMAGES OR LOSSES; (II) EVEN IF ANY REMEDY SET FORTH HEREIN FAILS OF ITS ESSENTIAL PURPOSE; AND (III) REGARDLESS OF THE BASIS OR THEORY OF LIABILITY.
24
+ 1. Export Laws. Licensee agrees to comply fully with all U.S., EU, Israeli, and all applicable export laws and regulations to ensure that neither the Software nor any technical data related thereto are exported or re-exported directly or indirectly in violation of, or used for any purposes prohibited by, such laws and regulations. For clarity, and without derogating from Section ‎11 below, in case of any change of any applicable law, policy or regulation, which might affect Applitools' business, Applitools will have the right to terminate this Agreement and the license granted hereunder and the Licensee shall have no claims regarding such termination.
25
+ 1. Term and Termination. This Agreement shall continue until terminated as set forth in this section (the "Term"). You may terminate this Agreement at any time by removing the Software from Your system and destroying all copies of the Software and Documentation relating to the Software. Unauthorized copying of the Software or otherwise failing to comply with this Agreement will result in automatic immediate termination of this Agreement and will make available to Applitools legal remedies. Applitools reserves the right to terminate this Agreement and the License at any time and without notice. Upon termination of this Agreement, the License will terminate and You: (i) will cease any and all rights to use the Software, and (ii) will remove the Software from all hard drives, networks and other storage media and destroy all copies of the Software in your possession or under your control. The provisions of Sections ‎2.3, ‎2.4, ‎2.5, ‎6, ‎7, ‎8, ‎9, 10, ‎11 and ‎12 shall survive the termination, expiration or other ending of this Agreement.
26
+ 1. Miscellaneous. This Agreement represents the complete agreement concerning the Software between You and Applitools and supersedes all prior agreements and representations between You and Applitools. If any provision of this Agreement is held to be unenforceable for any reason, such provision shall be reformed only to the extent necessary to make it enforceable. Any waiver of any provision of this Agreement will be effective only if in writing and signed by Applitools. This Agreement is personal to You and may not be assigned or transferred for any reason whatsoever without the consent of Applitools and any action or conduct in violation of the foregoing shall be void and without effect. Applitools expressly reserves the right to assign this Agreement and to delegate any of its obligations hereunder. This Agreement are governed by and construed under the laws of the State of Israel, excluding its conflicts of law rules. You expressly agree that the exclusive jurisdiction for any claim or action arising out of or relating to this Agreement shall be the courts located in Tel Aviv, Israel, and You further agree and submit to the exercise of personal jurisdiction of such courts for the purpose of litigating any such claim or action. In any action or proceeding to enforce rights under this Agreement, the prevailing party shall be entitled to recover costs and attorneys' fees.
data/README.md ADDED
@@ -0,0 +1,440 @@
1
+ # Applitools Eyes Images SDK for Ruby
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/eyes_images.svg)](https://badge.fury.io/rb/eyes_images)
4
+
5
+ The Applitools Eyes Images SDK for Ruby enables visual testing of images from any source. Test screenshots, rendered images, or any visual content without requiring browser automation.
6
+
7
+ ## Table of Contents
8
+
9
+ 1. [Overview](#overview)
10
+ 2. [Installation](#installation)
11
+ 3. [Key Components](#key-components)
12
+ 4. [Basic Usage](#basic-usage)
13
+ 5. [Advanced Features](#advanced-features)
14
+ - [Region-based Testing](#region-based-testing)
15
+ - [Target API](#target-api)
16
+ - [Batch Testing](#batch-testing)
17
+ - [Match Levels](#match-levels)
18
+ - [Ignoring Regions](#ignoring-regions)
19
+ - [Floating Regions](#floating-regions)
20
+ 6. [Configuration](#configuration)
21
+ 7. [Best Practices](#best-practices)
22
+ 8. [Troubleshooting](#troubleshooting)
23
+ 9. [FAQ](#faq)
24
+ 10. [API Reference](#api-reference)
25
+
26
+ ## Overview
27
+
28
+ The Applitools Eyes Images SDK enables you to perform visual testing on image files directly. Unlike other Applitools SDKs that work with web browsers or mobile devices, the Images SDK works with raw image data from any source.
29
+
30
+ ### Key Features
31
+
32
+ - **Direct Image Testing**: Test images without browser or device automation
33
+ - **Multiple Image Sources**: Support for files, byte arrays, base64, and image objects
34
+ - **Region-Based Testing**: Focus on specific areas within images
35
+ - **Flexible Matching**: Apply different match levels and comparison strategies
36
+ - **Dynamic Content Handling**: Ignore or float regions with changing content
37
+ - **Test Organization**: Group related tests with batch management
38
+ - **Framework Integration**: Works with RSpec, Minitest, and other Ruby test frameworks
39
+
40
+ ### Common Use Cases
41
+
42
+ - Testing generated PDFs, charts, or reports
43
+ - Validating screenshots from desktop applications
44
+ - Cross-platform UI consistency checks
45
+ - Design mockup validation
46
+ - Image processing pipeline testing
47
+
48
+ ## Installation
49
+
50
+ Add the SDK to your Gemfile:
51
+
52
+ ```ruby
53
+ gem 'eyes_images'
54
+ ```
55
+
56
+ Or install it directly:
57
+
58
+ ```
59
+ gem install eyes_images
60
+ ```
61
+
62
+ ### Dependencies
63
+
64
+ The Eyes Images SDK has the following dependencies:
65
+ - `eyes_core` - Core Applitools functionality
66
+ - Ruby image handling libraries
67
+
68
+ ## Key Components
69
+
70
+ ### Eyes Class
71
+
72
+ `Applitools::Images::Eyes` is the main class for interacting with the Applitools Eyes service. It provides methods for initializing, configuring, and performing visual checks on images.
73
+
74
+ ### Target Class
75
+
76
+ `Applitools::Images::Target` defines what to capture during a check operation. It provides a fluent interface for specifying:
77
+ - Image source (path, bytes, or image object)
78
+ - Regions to check
79
+ - Regions to ignore
80
+ - Floating regions
81
+ - Match levels
82
+
83
+ ### Image Class
84
+
85
+ The SDK works with several types of image representations:
86
+ - File paths
87
+ - Image bytes
88
+ - Ruby image objects
89
+ - Base64 encoded image strings
90
+
91
+ ## Basic Usage
92
+
93
+ ### Initializing Eyes
94
+
95
+ ```ruby
96
+ require 'eyes_images'
97
+
98
+ # Initialize the Eyes SDK
99
+ eyes = Applitools::Images::Eyes.new
100
+ eyes.api_key = 'YOUR_APPLITOOLS_API_KEY'
101
+
102
+ # Optional: Configure logging
103
+ eyes.log_handler = Logger.new(STDOUT)
104
+ ```
105
+
106
+ ### Opening a Test
107
+
108
+ ```ruby
109
+ # Start the test
110
+ eyes.open(
111
+ app_name: 'My Image App',
112
+ test_name: 'Product Images Test'
113
+ )
114
+ ```
115
+
116
+ ### Visual Validations
117
+
118
+ ```ruby
119
+ # Check an image from a file path
120
+ eyes.check_image(
121
+ image_path: '/path/to/image.png',
122
+ tag: 'Product Image'
123
+ )
124
+
125
+ # Check an image from bytes
126
+ image_bytes = File.read('/path/to/image.png', mode: 'rb')
127
+ eyes.check_image(
128
+ image_bytes: image_bytes,
129
+ tag: 'Product Image from Bytes'
130
+ )
131
+
132
+ # Check a specific region in an image
133
+ region = Applitools::Region.new(10, 20, 300, 150) # x, y, width, height
134
+ eyes.check_region(
135
+ image_path: '/path/to/image.png',
136
+ region: region,
137
+ tag: 'Product Logo'
138
+ )
139
+ ```
140
+
141
+ ### Closing a Test
142
+
143
+ ```ruby
144
+ # Close the test and get results
145
+ results = eyes.close(false)
146
+ puts "Test results: #{results}"
147
+
148
+ # Always include in an ensure block
149
+ ensure
150
+ # If the test was not closed properly, abort it
151
+ eyes.abort_if_not_closed
152
+ ```
153
+
154
+ ## Advanced Features
155
+
156
+ ### Region-based Testing
157
+
158
+ Test specific regions within an image:
159
+
160
+ ```ruby
161
+ # Define a region
162
+ region = Applitools::Region.new(10, 20, 300, 200) # x, y, width, height
163
+
164
+ # Check only that region
165
+ eyes.check_region(
166
+ image_path: '/path/to/image.png',
167
+ region: region,
168
+ tag: 'Header region'
169
+ )
170
+ ```
171
+
172
+ ### Target API
173
+
174
+ The Target API provides a fluent interface for more complex validations:
175
+
176
+ ```ruby
177
+ # Create a target from a file path
178
+ target = Applitools::Images::Target.path('/path/to/image.png')
179
+
180
+ # Create a target from image bytes
181
+ bytes = File.read('/path/to/image.png', mode: 'rb')
182
+ target = Applitools::Images::Target.bytes(bytes)
183
+
184
+ # Run the check
185
+ eyes.check('My image check', target)
186
+ ```
187
+
188
+ ### Batch Testing
189
+
190
+ Group multiple tests into a batch for easier management and reporting:
191
+
192
+ ```ruby
193
+ # Create a batch
194
+ batch = Applitools::BatchInfo.new('Product Images Batch')
195
+ batch.id = 'unique-batch-id' # Optional: Set a custom batch ID
196
+
197
+ # Assign batch to the Eyes instance
198
+ eyes.batch = batch
199
+
200
+ # Run multiple tests with this batch
201
+ eyes.open(app_name: 'My App', test_name: 'First Test')
202
+ eyes.check_image(image_path: '/path/to/image1.png', tag: 'Image 1')
203
+ eyes.close
204
+
205
+ # Another test in the same batch
206
+ eyes.open(app_name: 'My App', test_name: 'Second Test')
207
+ eyes.check_image(image_path: '/path/to/image2.png', tag: 'Image 2')
208
+ eyes.close
209
+ ```
210
+
211
+ ### Match Levels
212
+
213
+ Set different strictness levels for visual comparisons:
214
+
215
+ ```ruby
216
+ # Set match level for the entire test
217
+ eyes.match_level = Applitools::MatchLevel::LAYOUT
218
+
219
+ # Set match level for a specific check using Target API
220
+ target = Applitools::Images::Target.path('/path/to/image.png')
221
+ .match_level(Applitools::MatchLevel::CONTENT)
222
+ eyes.check('Content Match Level', target)
223
+
224
+ # Available match levels:
225
+ # - Applitools::MatchLevel::EXACT # Pixel-perfect matching
226
+ # - Applitools::MatchLevel::STRICT # Default, allows small differences
227
+ # - Applitools::MatchLevel::CONTENT # Ignores colors, checks content
228
+ # - Applitools::MatchLevel::LAYOUT # Checks only layout structure
229
+ # - Applitools::MatchLevel::NONE # No comparison, just captures image
230
+ ```
231
+
232
+ ### Ignoring Regions
233
+
234
+ Specify regions to ignore during comparison:
235
+
236
+ ```ruby
237
+ # Using Target API with region object
238
+ ignore_region = Applitools::Region.new(50, 100, 200, 50)
239
+ target = Applitools::Images::Target.path('/path/to/image.png')
240
+ .ignore(ignore_region)
241
+ eyes.check('Image with ignored region', target)
242
+
243
+ # Multiple ignore regions
244
+ target = Applitools::Images::Target.path('/path/to/image.png')
245
+ .ignore(Applitools::Region.new(50, 100, 200, 50))
246
+ .ignore(Applitools::Region.new(300, 200, 100, 100))
247
+ eyes.check('Image with multiple ignored regions', target)
248
+ ```
249
+
250
+ ### Floating Regions
251
+
252
+ Floating regions allow elements to "float" or shift position within defined bounds:
253
+
254
+ ```ruby
255
+ # Define a floating region with offsets (max_left, max_up, max_right, max_down)
256
+ floating_region = Applitools::Region.new(10, 20, 300, 150)
257
+ target = Applitools::Images::Target.path('/path/to/image.png')
258
+ .floating(floating_region, 10, 10, 10, 10)
259
+ eyes.check('Image with floating region', target)
260
+ ```
261
+
262
+ ## Configuration
263
+
264
+ ### Test Configuration
265
+
266
+ ```ruby
267
+ # Set the viewport size (affects baseline selection)
268
+ eyes.viewport_size = Applitools::RectangleSize.new(1024, 768)
269
+
270
+ # Configure match settings
271
+ eyes.match_timeout = 5000 # milliseconds
272
+ eyes.match_level = Applitools::MatchLevel::STRICT
273
+
274
+ # Set server URL (for on-premise deployments)
275
+ eyes.server_url = 'https://eyes.mycompany.com'
276
+
277
+ # Set a proxy
278
+ eyes.proxy = Applitools::Connectivity::Proxy.new('http://proxy.company.com', 8080)
279
+ ```
280
+
281
+ ### Batch Configuration
282
+
283
+ ```ruby
284
+ # Create a batch with name
285
+ batch = Applitools::BatchInfo.new('My Batch Name')
286
+
287
+ # Set batch sequence name for grouping batches
288
+ batch.sequence_name = 'Weekly Regression'
289
+
290
+ # Additional batch properties
291
+ batch.id = 'unique-id-for-batch' # Custom ID for the batch
292
+ batch.add_property('Environment', 'Production')
293
+ batch.add_property('Branch', 'main')
294
+
295
+ # Assign to Eyes instance
296
+ eyes.batch = batch
297
+ ```
298
+
299
+ ## Best Practices
300
+
301
+ 1. **Consistent Image Sources**
302
+ - Ensure images are captured consistently (same resolution, format, etc.)
303
+ - Use the same image processing library throughout your tests
304
+
305
+ 2. **Efficient Region Selection**
306
+ - Test specific regions when possible instead of full images
307
+ - Group related elements into logical regions
308
+
309
+ 3. **Proper Error Handling**
310
+ - Always use try/finally blocks and call `abort_if_not_closed()`
311
+ - Handle and log exceptions appropriately
312
+
313
+ 4. **Batch Organization**
314
+ - Group related tests into meaningful batches
315
+ - Use batch properties to add important metadata
316
+
317
+ 5. **Match Level Selection**
318
+ - Use appropriate match levels based on content type
319
+ - Consider using LAYOUT for dynamic text content
320
+ - Consider using STRICT for logos and important branding elements
321
+
322
+ 6. **Baseline Management**
323
+ - Establish good baseline images under controlled conditions
324
+ - Review and update baselines when intended changes occur
325
+
326
+ 7. **API Key Security**
327
+ - Store API keys in environment variables or secure configuration
328
+ - Never hard-code API keys in source code
329
+
330
+ ## Troubleshooting
331
+
332
+ ### Common Issues
333
+
334
+ 1. **Authentication Errors**
335
+ - Check that your API key is set correctly
336
+ - Verify connectivity to the Applitools server
337
+
338
+ 2. **Image Format Issues**
339
+ - Ensure the image is in a supported format (PNG, JPEG, etc.)
340
+ - Check for corrupt or incomplete image files
341
+
342
+ 3. **Region Validation Failures**
343
+ - Verify region coordinates are within the image bounds
344
+ - Check that regions are properly defined (non-zero width/height)
345
+
346
+ 4. **Baseline Mismatches**
347
+ - Review test results in the Applitools dashboard
348
+ - Check for unexpected changes in image content/format
349
+ - Verify environment settings affecting the images
350
+
351
+ 5. **Performance Issues**
352
+ - Large images may take longer to process
353
+ - Consider resizing very large images before testing
354
+ - Check network connectivity to Applitools servers
355
+
356
+ ### Debugging Tips
357
+
358
+ 1. Enable verbose logging:
359
+ ```ruby
360
+ eyes.log_handler = Logger.new(STDOUT)
361
+ eyes.log_handler.level = Logger::DEBUG
362
+ ```
363
+
364
+ 2. Check the image path and accessibility:
365
+ ```ruby
366
+ puts "File exists: #{File.exist?('/path/to/image.png')}"
367
+ puts "File size: #{File.size('/path/to/image.png')}"
368
+ ```
369
+
370
+ 3. Verify region coordinates:
371
+ ```ruby
372
+ region = Applitools::Region.new(x, y, width, height)
373
+ puts "Region: #{region.to_s}"
374
+ ```
375
+
376
+ ## FAQ
377
+
378
+ **Q: Can I use Eyes Images SDK to test screenshots from web applications?**
379
+ A: Yes, you can capture screenshots using any method and then use the Eyes Images SDK to validate them.
380
+
381
+ **Q: How do I handle dynamic content in images?**
382
+ A: Use ignore regions for content that changes between tests, or use a more lenient match level like LAYOUT.
383
+
384
+ **Q: Can I test images with different resolutions?**
385
+ A: Yes, but be aware that differing resolutions may cause baseline mismatches. Consider resizing images to a standard resolution before testing.
386
+
387
+ **Q: Is it possible to compare two images directly without using the Applitools service?**
388
+ A: The SDK is designed to work with the Applitools service. For direct image comparison without Applitools, you would need to use separate image processing libraries.
389
+
390
+ **Q: How can I test multiple images in sequence?**
391
+ A: You can make multiple `check_image` calls within a single test session (between `open` and `close`), or you can group related images into a batch.
392
+
393
+ **Q: Can I integrate this SDK with my existing test framework?**
394
+ A: Yes, the SDK can be integrated with any Ruby test framework including RSpec, Cucumber, Minitest, etc.
395
+
396
+ **Q: How do I handle images with varying content but same structure?**
397
+ A: Use the LAYOUT match level which focuses on the structure of elements rather than their exact content.
398
+
399
+ ## API Reference
400
+
401
+ ### `Applitools::Images::Eyes`
402
+
403
+ Core methods:
404
+ - `initialize` - Creates a new Eyes instance
405
+ - `open(options)` - Starts a test session
406
+ - `check_image(options)` - Checks a full image
407
+ - `check_region(options)` - Checks a specific region in an image
408
+ - `check(tag, target)` - Checks using the Target API
409
+ - `close(throw_exception = true)` - Closes a test session
410
+ - `abort_if_not_closed` - Aborts an open test
411
+
412
+ Configuration methods:
413
+ - `api_key=` - Sets the Applitools API key
414
+ - `server_url=` - Sets the Applitools server URL
415
+ - `proxy=` - Sets the proxy configuration
416
+ - `match_level=` - Sets the default match level
417
+ - `match_timeout=` - Sets the match timeout
418
+ - `batch=` - Sets the batch information
419
+ - `branch_name=` - Sets the branch name
420
+ - `parent_branch_name=` - Sets the parent branch name
421
+ - `viewport_size=` - Sets the viewport size
422
+
423
+ ### `Applitools::Images::Target`
424
+
425
+ Factory methods:
426
+ - `Target.path(path)` - Creates a target from an image file path
427
+ - `Target.bytes(image_bytes)` - Creates a target from image bytes
428
+ - `Target.image(image)` - Creates a target from an image object
429
+
430
+ Instance methods:
431
+ - `ignore(region)` - Defines a region to ignore
432
+ - `floating(region, max_left, max_up, max_right, max_down)` - Defines a floating region
433
+ - `match_level(match_level)` - Sets the match level for this target
434
+ - `timeout(timeout_ms)` - Sets the match timeout for this target
435
+
436
+ ## License
437
+
438
+ This SDK is distributed under the Applitools SDK License Agreement. See the [LICENSE](LICENSE) file for more details.
439
+
440
+ **Important:** This SDK may be used solely for your personal, non-commercial purposes. For commercial use, please contact your Applitools representative or visit [applitools.com](https://applitools.com) to obtain a commercial license.
data/eyes_images.gemspec CHANGED
@@ -13,13 +13,15 @@ Gem::Specification.new do |spec|
13
13
  spec.description = 'Provides Images SDK for Applitools tests.'
14
14
  spec.summary = 'Applitools Ruby Images SDK'
15
15
  spec.homepage = 'https://www.applitools.com'
16
- spec.license = 'Applitools'
16
+ spec.license = 'Proprietary'
17
17
 
18
18
  spec.metadata['yard.run'] = 'yri' # use "yard" to build full HTML docs.
19
19
 
20
20
  spec.files = `git ls-files lib/applitools/images`.split($RS) + [
21
21
  'lib/eyes_images.rb',
22
22
  'lib/applitools/eyes_images/version.rb',
23
+ 'LICENSE',
24
+ 'README.md',
23
25
  'CHANGELOG.md',
24
26
  'eyes_images.gemspec',
25
27
  'Rakefile',
@@ -27,5 +29,5 @@ Gem::Specification.new do |spec|
27
29
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
28
30
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
29
31
  spec.require_paths = %w(lib)
30
- spec.add_dependency 'eyes_core', "= 6.7.0"
32
+ spec.add_dependency 'eyes_core', "= 6.7.2"
31
33
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Applitools
4
4
  module EyesImages
5
- VERSION = '6.5.2'.freeze
5
+ VERSION = '6.5.4'.freeze
6
6
  end
7
7
  end
@@ -117,7 +117,7 @@ module Applitools::Images
117
117
 
118
118
  image = target.image
119
119
  self.viewport_size = Applitools::RectangleSize.new image.width, image.height if viewport_size.nil?
120
- self.screenshot = EyesImagesScreenshot.new image
120
+ self.screenshot = image
121
121
 
122
122
  if match_window_data.is_a? Applitools::MatchSingleCheckData
123
123
  return check_single_base(
@@ -155,7 +155,7 @@ module Applitools::Images
155
155
  end
156
156
 
157
157
  define_singleton_method :coordinate_type do
158
- Applitools::EyesScreenshot::COORDINATE_TYPES[:context_relative]
158
+ :context_relative
159
159
  end
160
160
  end
161
161
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eyes_images
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.5.2
4
+ version: 6.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Applitools Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-04-17 00:00:00.000000000 Z
11
+ date: 2025-06-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: eyes_core
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 6.7.0
19
+ version: 6.7.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 6.7.0
26
+ version: 6.7.2
27
27
  description: Provides Images SDK for Applitools tests.
28
28
  email:
29
29
  - team@applitools.com
@@ -32,6 +32,8 @@ extensions: []
32
32
  extra_rdoc_files: []
33
33
  files:
34
34
  - CHANGELOG.md
35
+ - LICENSE
36
+ - README.md
35
37
  - Rakefile
36
38
  - eyes_images.gemspec
37
39
  - lib/applitools/eyes_images/version.rb
@@ -40,7 +42,7 @@ files:
40
42
  - lib/eyes_images.rb
41
43
  homepage: https://www.applitools.com
42
44
  licenses:
43
- - Applitools
45
+ - Proprietary
44
46
  metadata:
45
47
  yard.run: yri
46
48
  post_install_message: