@applitools/eyes 1.36.15 → 1.36.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,106 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.36.17](https://github.com/Applitools-Dev/sdk/compare/js/eyes@1.36.16...js/eyes@1.36.17) (2025-12-07)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * capture JavaScript-modified CSS selectors in nested [@layer](https://github.com/layer) rules ([#3391](https://github.com/Applitools-Dev/sdk/issues/3391)) ([b3bceb5](https://github.com/Applitools-Dev/sdk/commit/b3bceb5bfe894f3548173d23942e09d0e04b7e04))
9
+
10
+
11
+ ### Dependencies
12
+
13
+ * @applitools/dom-snapshot bumped to 4.15.3
14
+ #### Bug Fixes
15
+
16
+ * capture JavaScript-modified CSS selectors in nested [@layer](https://github.com/layer) rules ([#3391](https://github.com/Applitools-Dev/sdk/issues/3391)) ([b3bceb5](https://github.com/Applitools-Dev/sdk/commit/b3bceb5bfe894f3548173d23942e09d0e04b7e04))
17
+ * @applitools/core bumped to 4.53.2
18
+ #### Bug Fixes
19
+
20
+ * Upgrade core version ([#3398](https://github.com/Applitools-Dev/sdk/issues/3398)) ([68858c7](https://github.com/Applitools-Dev/sdk/commit/68858c7024e0413c1cc6af68752b1c3a9a04bb0b))
21
+
22
+
23
+
24
+
25
+ ## [1.36.16](https://github.com/Applitools-Dev/sdk/compare/js/eyes@1.36.15...js/eyes@1.36.16) (2025-11-19)
26
+
27
+
28
+ ### Bug Fixes
29
+
30
+ * resolved an issue with `matchTimeout` changing `retryTimeout` ([f656f59](https://github.com/Applitools-Dev/sdk/commit/f656f59dbfb7c41fdb569fbc56d2e9daecefb854))
31
+
32
+
33
+ ### Dependencies
34
+
35
+ * @applitools/utils bumped to 1.14.0
36
+ #### Features
37
+
38
+ * disable heartbeats whenever no tests are running ([#3344](https://github.com/Applitools-Dev/sdk/issues/3344)) ([b66d28a](https://github.com/Applitools-Dev/sdk/commit/b66d28a7a382f26b68de70c8633c027cb4bdf225))
39
+ * @applitools/core-base bumped to 1.30.0
40
+ #### Features
41
+
42
+ * disable heartbeats whenever no tests are running ([#3344](https://github.com/Applitools-Dev/sdk/issues/3344)) ([b66d28a](https://github.com/Applitools-Dev/sdk/commit/b66d28a7a382f26b68de70c8633c027cb4bdf225))
43
+
44
+
45
+ #### Bug Fixes
46
+
47
+ * fails to create test with coded dynamic region | AD-11074 ([#3361](https://github.com/Applitools-Dev/sdk/issues/3361)) ([7f8c8cd](https://github.com/Applitools-Dev/sdk/commit/7f8c8cd85c0cd2e5861cd33fbc29c465903258d5))
48
+ * resolved an issue with `matchTimeout` changing `retryTimeout` ([f656f59](https://github.com/Applitools-Dev/sdk/commit/f656f59dbfb7c41fdb569fbc56d2e9daecefb854))
49
+
50
+
51
+
52
+ * @applitools/logger bumped to 2.2.6
53
+
54
+ * @applitools/dom-snapshot bumped to 4.15.1
55
+
56
+ * @applitools/socket bumped to 1.3.7
57
+
58
+ * @applitools/req bumped to 1.8.6
59
+
60
+ * @applitools/image bumped to 1.2.5
61
+
62
+ * @applitools/dom-capture bumped to 11.6.7
63
+
64
+ * @applitools/driver bumped to 1.24.2
65
+
66
+ * @applitools/spec-driver-webdriver bumped to 1.5.2
67
+
68
+ * @applitools/spec-driver-selenium bumped to 1.7.8
69
+
70
+ * @applitools/spec-driver-puppeteer bumped to 1.6.8
71
+
72
+ * @applitools/screenshoter bumped to 3.12.9
73
+
74
+ * @applitools/nml-client bumped to 1.11.11
75
+ #### Bug Fixes
76
+
77
+ * better nml error messages ([#3311](https://github.com/Applitools-Dev/sdk/issues/3311)) ([3deea01](https://github.com/Applitools-Dev/sdk/commit/3deea0130636c44573adc919b95c1c99e6d194f1))
78
+
79
+
80
+
81
+ * @applitools/tunnel-client bumped to 1.11.4
82
+
83
+ * @applitools/ufg-client bumped to 1.18.2
84
+
85
+ * @applitools/ec-client bumped to 1.12.13
86
+
87
+ * @applitools/core bumped to 4.53.0
88
+ #### Features
89
+
90
+ * disable heartbeats whenever no tests are running ([#3344](https://github.com/Applitools-Dev/sdk/issues/3344)) ([b66d28a](https://github.com/Applitools-Dev/sdk/commit/b66d28a7a382f26b68de70c8633c027cb4bdf225))
91
+
92
+
93
+ #### Bug Fixes
94
+
95
+ * better nml error messages ([#3311](https://github.com/Applitools-Dev/sdk/issues/3311)) ([3deea01](https://github.com/Applitools-Dev/sdk/commit/3deea0130636c44573adc919b95c1c99e6d194f1))
96
+ * fails to create test with coded dynamic region | AD-11074 ([#3361](https://github.com/Applitools-Dev/sdk/issues/3361)) ([7f8c8cd](https://github.com/Applitools-Dev/sdk/commit/7f8c8cd85c0cd2e5861cd33fbc29c465903258d5))
97
+ * resolved an issue with `matchTimeout` changing `retryTimeout` ([f656f59](https://github.com/Applitools-Dev/sdk/commit/f656f59dbfb7c41fdb569fbc56d2e9daecefb854))
98
+
99
+
100
+
101
+ * @applitools/test-server bumped to 1.3.5
102
+
103
+
3
104
  ## [1.36.15](https://github.com/Applitools-Dev/sdk/compare/js/eyes@1.36.14...js/eyes@1.36.15) (2025-11-09)
4
105
 
5
106
 
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ /* GENERATED FILE */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.AndroidMultiDeviceTarget = void 0;
5
+ const AndroidDeviceTarget_1 = require("../input/AndroidDeviceTarget");
6
+ // Const object with getters that return Device Target instances for fluent API
7
+ exports.AndroidMultiDeviceTarget = {
8
+ get Galaxy_S25() {
9
+ return new AndroidDeviceTarget_1.AndroidDeviceTarget('Galaxy S25');
10
+ },
11
+ get Galaxy_S25_Ultra() {
12
+ return new AndroidDeviceTarget_1.AndroidDeviceTarget('Galaxy S25 Ultra');
13
+ },
14
+ get Pixel_9() {
15
+ return new AndroidDeviceTarget_1.AndroidDeviceTarget('Pixel 9');
16
+ },
17
+ };
@@ -9,12 +9,17 @@ var IosDeviceNameEnum;
9
9
  IosDeviceNameEnum["iPad_10"] = "iPad (10th generation)";
10
10
  IosDeviceNameEnum["iPad_mini_6"] = "iPad mini (6th generation)";
11
11
  IosDeviceNameEnum["iPad_Air_4"] = "iPad Air (4th generation)";
12
+ IosDeviceNameEnum["iPad_Air_11_inch_M3"] = "iPad Air 11-inch (M3)";
13
+ IosDeviceNameEnum["iPad_Air_13_inch_M3"] = "iPad Air 13-inch (M3)";
14
+ IosDeviceNameEnum["iPad_A16"] = "iPad (A16)";
12
15
  /** @deprecated use {@link iPad_Pro_12_9_inch_3 } instead */
13
16
  IosDeviceNameEnum["iPad_Pro_3"] = "iPad Pro (12.9-inch) (3rd generation)";
14
- IosDeviceNameEnum["iPad_Pro_12_9_inch_3"] = "iPad Pro (12.9-inch) (3rd generation)";
15
17
  /** @deprecated use {@link iPad_Pro_11_inch_4 } instead */
16
18
  IosDeviceNameEnum["iPad_Pro_4"] = "iPad Pro (11-inch) (4th generation)";
17
19
  IosDeviceNameEnum["iPad_Pro_11_inch_4"] = "iPad Pro (11-inch) (4th generation)";
20
+ IosDeviceNameEnum["iPad_Pro_11_inch_M5"] = "iPad Pro 11-inch (M5)";
21
+ IosDeviceNameEnum["iPad_Pro_13_inch_M5"] = "iPad Pro 13-inch (M5)";
22
+ IosDeviceNameEnum["iPad_Pro_12_9_inch_3"] = "iPad Pro (12.9-inch) (3rd generation)";
18
23
  IosDeviceNameEnum["iPhone_SE_2"] = "iPhone SE (2nd generation)";
19
24
  IosDeviceNameEnum["iPhone_SE_3"] = "iPhone SE (3rd generation)";
20
25
  IosDeviceNameEnum["iPhone_XR"] = "iPhone XR";
@@ -44,4 +49,8 @@ var IosDeviceNameEnum;
44
49
  IosDeviceNameEnum["iPhone_16_Pro_Max"] = "iPhone 16 Pro Max";
45
50
  IosDeviceNameEnum["iPhone_16_Pro"] = "iPhone 16 Pro";
46
51
  IosDeviceNameEnum["iPhone_16_Plus"] = "iPhone 16 Plus";
52
+ IosDeviceNameEnum["iPhone_17"] = "iPhone 17";
53
+ IosDeviceNameEnum["iPhone_17_Pro"] = "iPhone 17 Pro";
54
+ IosDeviceNameEnum["iPhone_17_Pro_Max"] = "iPhone 17 Pro Max";
55
+ IosDeviceNameEnum["iPhone_Air"] = "iPhone Air";
47
56
  })(IosDeviceNameEnum || (exports.IosDeviceNameEnum = IosDeviceNameEnum = {}));
@@ -1,43 +1,131 @@
1
1
  "use strict";
2
2
  /* GENERATED FILE */
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.IosMultiDeviceTargetEnum = void 0;
5
- var IosMultiDeviceTargetEnum;
6
- (function (IosMultiDeviceTargetEnum) {
7
- IosMultiDeviceTargetEnum["iPhone_SE_1"] = "iPhone SE (1st generation)";
8
- IosMultiDeviceTargetEnum["iPhone_SE_2"] = "iPhone SE (2nd generation)";
9
- IosMultiDeviceTargetEnum["iPhone_SE_3"] = "iPhone SE (3rd generation)";
10
- IosMultiDeviceTargetEnum["iPhone_6"] = "iPhone 6";
11
- IosMultiDeviceTargetEnum["iPhone_6_Plus"] = "iPhone 6 Plus";
12
- IosMultiDeviceTargetEnum["iPhone_7"] = "iPhone 7";
13
- IosMultiDeviceTargetEnum["iPhone_7_Plus"] = "iPhone 7 Plus";
14
- IosMultiDeviceTargetEnum["iPhone_8"] = "iPhone 8";
15
- IosMultiDeviceTargetEnum["iPhone_8_Plus"] = "iPhone 8 Plus";
16
- IosMultiDeviceTargetEnum["iPhone_X"] = "iPhone X";
17
- IosMultiDeviceTargetEnum["iPhone_XR"] = "iPhone XR";
18
- IosMultiDeviceTargetEnum["iPhone_Xs"] = "iPhone Xs";
19
- IosMultiDeviceTargetEnum["iPhone_Xs_Max"] = "iPhone Xs Max";
20
- IosMultiDeviceTargetEnum["iPhone_11"] = "iPhone 11";
21
- IosMultiDeviceTargetEnum["iPhone_11_Pro"] = "iPhone 11 Pro";
22
- IosMultiDeviceTargetEnum["iPhone_11_Pro_Max"] = "iPhone 11 Pro Max";
23
- IosMultiDeviceTargetEnum["iPhone_12"] = "iPhone 12";
24
- IosMultiDeviceTargetEnum["iPhone_12_mini"] = "iPhone 12 mini";
25
- IosMultiDeviceTargetEnum["iPhone_12_Pro"] = "iPhone 12 Pro";
26
- IosMultiDeviceTargetEnum["iPhone_12_Pro_Max"] = "iPhone 12 Pro Max";
27
- IosMultiDeviceTargetEnum["iPhone_13"] = "iPhone 13";
28
- IosMultiDeviceTargetEnum["iPhone_13_mini"] = "iPhone 13 mini";
29
- IosMultiDeviceTargetEnum["iPhone_13_Pro"] = "iPhone 13 Pro";
30
- IosMultiDeviceTargetEnum["iPhone_13_Pro_Max"] = "iPhone 13 Pro Max";
31
- IosMultiDeviceTargetEnum["iPhone_14"] = "iPhone 14";
32
- IosMultiDeviceTargetEnum["iPhone_14_Pro"] = "iPhone 14 Pro";
33
- IosMultiDeviceTargetEnum["iPhone_14_Plus"] = "iPhone 14 Plus";
34
- IosMultiDeviceTargetEnum["iPhone_14_Pro_Max"] = "iPhone 14 Pro Max";
35
- IosMultiDeviceTargetEnum["iPhone_15"] = "iPhone 15";
36
- IosMultiDeviceTargetEnum["iPhone_15_Pro"] = "iPhone 15 Pro";
37
- IosMultiDeviceTargetEnum["iPhone_15_Plus"] = "iPhone 15 Plus";
38
- IosMultiDeviceTargetEnum["iPhone_15_Pro_Max"] = "iPhone 15 Pro Max";
39
- IosMultiDeviceTargetEnum["iPhone_16"] = "iPhone 16";
40
- IosMultiDeviceTargetEnum["iPhone_16_Pro"] = "iPhone 16 Pro";
41
- IosMultiDeviceTargetEnum["iPhone_16_Plus"] = "iPhone 16 Plus";
42
- IosMultiDeviceTargetEnum["iPhone_16_Pro_Max"] = "iPhone 16 Pro Max";
43
- })(IosMultiDeviceTargetEnum || (exports.IosMultiDeviceTargetEnum = IosMultiDeviceTargetEnum = {}));
4
+ exports.IosMultiDeviceTarget = void 0;
5
+ const IosDeviceTarget_1 = require("../input/IosDeviceTarget");
6
+ // Const object with getters that return Device Target instances for fluent API
7
+ exports.IosMultiDeviceTarget = {
8
+ get iPhone_SE_1() {
9
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone SE (1st generation)');
10
+ },
11
+ get iPhone_SE_2() {
12
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone SE (2nd generation)');
13
+ },
14
+ get iPhone_SE_3() {
15
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone SE (3rd generation)');
16
+ },
17
+ get iPhone_6() {
18
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 6');
19
+ },
20
+ get iPhone_6_Plus() {
21
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 6 Plus');
22
+ },
23
+ get iPhone_7() {
24
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 7');
25
+ },
26
+ get iPhone_7_Plus() {
27
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 7 Plus');
28
+ },
29
+ get iPhone_8() {
30
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 8');
31
+ },
32
+ get iPhone_8_Plus() {
33
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 8 Plus');
34
+ },
35
+ get iPhone_X() {
36
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone X');
37
+ },
38
+ get iPhone_XR() {
39
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone XR');
40
+ },
41
+ get iPhone_Xs() {
42
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone Xs');
43
+ },
44
+ get iPhone_Xs_Max() {
45
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone Xs Max');
46
+ },
47
+ get iPhone_11() {
48
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 11');
49
+ },
50
+ get iPhone_11_Pro() {
51
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 11 Pro');
52
+ },
53
+ get iPhone_11_Pro_Max() {
54
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 11 Pro Max');
55
+ },
56
+ get iPhone_12() {
57
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 12');
58
+ },
59
+ get iPhone_12_mini() {
60
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 12 mini');
61
+ },
62
+ get iPhone_12_Pro() {
63
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 12 Pro');
64
+ },
65
+ get iPhone_12_Pro_Max() {
66
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 12 Pro Max');
67
+ },
68
+ get iPhone_13() {
69
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 13');
70
+ },
71
+ get iPhone_13_mini() {
72
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 13 mini');
73
+ },
74
+ get iPhone_13_Pro() {
75
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 13 Pro');
76
+ },
77
+ get iPhone_13_Pro_Max() {
78
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 13 Pro Max');
79
+ },
80
+ get iPhone_14() {
81
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 14');
82
+ },
83
+ get iPhone_14_Pro() {
84
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 14 Pro');
85
+ },
86
+ get iPhone_14_Plus() {
87
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 14 Plus');
88
+ },
89
+ get iPhone_14_Pro_Max() {
90
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 14 Pro Max');
91
+ },
92
+ get iPhone_15() {
93
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 15');
94
+ },
95
+ get iPhone_15_Pro() {
96
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 15 Pro');
97
+ },
98
+ get iPhone_15_Plus() {
99
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 15 Plus');
100
+ },
101
+ get iPhone_15_Pro_Max() {
102
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 15 Pro Max');
103
+ },
104
+ get iPhone_16() {
105
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 16');
106
+ },
107
+ get iPhone_16e() {
108
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 16e');
109
+ },
110
+ get iPhone_16_Pro() {
111
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 16 Pro');
112
+ },
113
+ get iPhone_16_Plus() {
114
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 16 Plus');
115
+ },
116
+ get iPhone_16_Pro_Max() {
117
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 16 Pro Max');
118
+ },
119
+ get iPhone_17() {
120
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 17');
121
+ },
122
+ get iPhone_17_Pro() {
123
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 17 Pro');
124
+ },
125
+ get iPhone_17_Pro_Max() {
126
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone 17 Pro Max');
127
+ },
128
+ get iPhone_Air() {
129
+ return new IosDeviceTarget_1.IosDeviceTarget('iPhone Air');
130
+ },
131
+ };
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SessionUrls = exports.MatchResult = exports.AppUrls = exports.ApiUrls = exports.RunnerOptions = exports.RunnerOptionsFluent = exports.Region = exports.RectangleSize = exports.ProxySettings = exports.PropertyData = exports.NullLogHandler = exports.ConsoleLogHandler = exports.FileLogHandler = exports.LogHandler = exports.Location = exports.ImageRotation = exports.ImageMatchSettings = exports.FloatingMatchSettings = exports.ExactMatchSettings = exports.UnscaledFixedCutProvider = exports.FixedCutProvider = exports.CutProvider = exports.Configuration = exports.Target = exports.TargetAutomation = exports.TargetImage = exports.CheckSettingsAutomation = exports.CheckSettingsImage = exports.BatchInfo = exports.AccessibilityMatchSettings = exports.NewTestError = exports.DiffsFoundError = exports.TestFailedError = exports.EyesError = exports.DynamicTextType = exports.AccessibilityStatus = exports.AccessibilityRegionType = exports.AccessibilityLevel = exports.AccessibilityGuidelinesVersion = exports.TestResultsStatus = exports.StitchMode = exports.SessionType = exports.ScreenOrientation = exports.MatchLevel = exports.IosVersion = exports.IosDeviceName = exports.FailureReport = exports.DeviceName = exports.CorsIframeHandle = exports.BrowserType = void 0;
4
- exports.RemoteSessionEventHandler = exports.SessionEventHandlers = exports.SessionEventHandler = exports.VisualGridRunner = exports.ClassicRunner = exports.EyesRunner = exports.closeBatch = exports.BatchClose = exports.Eyes = exports.Logger = exports.ValidationResult = exports.ValidationInfo = exports.TestResultsSummary = exports.TestResultContainer = exports.TestResults = exports.StepInfo = void 0;
3
+ exports.RunnerOptions = exports.RunnerOptionsFluent = exports.Region = exports.RectangleSize = exports.ProxySettings = exports.PropertyData = exports.NullLogHandler = exports.ConsoleLogHandler = exports.FileLogHandler = exports.LogHandler = exports.Location = exports.ImageRotation = exports.ImageMatchSettings = exports.FloatingMatchSettings = exports.ExactMatchSettings = exports.UnscaledFixedCutProvider = exports.FixedCutProvider = exports.CutProvider = exports.Configuration = exports.Target = exports.TargetAutomation = exports.TargetImage = exports.CheckSettingsAutomation = exports.CheckSettingsImage = exports.BatchInfo = exports.AccessibilityMatchSettings = exports.NewTestError = exports.DiffsFoundError = exports.TestFailedError = exports.EyesError = exports.DynamicTextType = exports.AccessibilityStatus = exports.AccessibilityRegionType = exports.AccessibilityLevel = exports.AccessibilityGuidelinesVersion = exports.TestResultsStatus = exports.StitchMode = exports.SessionType = exports.ScreenOrientation = exports.MatchLevel = exports.IosVersion = exports.AndroidDeviceTarget = exports.IosDeviceTarget = exports.AndroidMultiDeviceTarget = exports.IosMultiDeviceTarget = exports.IosDeviceName = exports.FailureReport = exports.DeviceName = exports.CorsIframeHandle = exports.BrowserType = void 0;
4
+ exports.RemoteSessionEventHandler = exports.SessionEventHandlers = exports.SessionEventHandler = exports.VisualGridRunner = exports.ClassicRunner = exports.EyesRunner = exports.closeBatch = exports.BatchClose = exports.Eyes = exports.Logger = exports.ValidationResult = exports.ValidationInfo = exports.TestResultsSummary = exports.TestResultContainer = exports.TestResults = exports.StepInfo = exports.SessionUrls = exports.MatchResult = exports.AppUrls = exports.ApiUrls = void 0;
5
5
  // #region ENUM
6
6
  var BrowserType_1 = require("./enums/BrowserType");
7
7
  Object.defineProperty(exports, "BrowserType", { enumerable: true, get: function () { return BrowserType_1.BrowserTypeEnum; } });
@@ -13,6 +13,14 @@ var FailureReport_1 = require("./enums/FailureReport");
13
13
  Object.defineProperty(exports, "FailureReport", { enumerable: true, get: function () { return FailureReport_1.FailureReportEnum; } });
14
14
  var IosDeviceName_1 = require("./enums/IosDeviceName");
15
15
  Object.defineProperty(exports, "IosDeviceName", { enumerable: true, get: function () { return IosDeviceName_1.IosDeviceNameEnum; } });
16
+ var IosMultiDeviceTarget_1 = require("./enums/IosMultiDeviceTarget");
17
+ Object.defineProperty(exports, "IosMultiDeviceTarget", { enumerable: true, get: function () { return IosMultiDeviceTarget_1.IosMultiDeviceTarget; } });
18
+ var AndroidMultiDeviceTarget_1 = require("./enums/AndroidMultiDeviceTarget");
19
+ Object.defineProperty(exports, "AndroidMultiDeviceTarget", { enumerable: true, get: function () { return AndroidMultiDeviceTarget_1.AndroidMultiDeviceTarget; } });
20
+ var IosDeviceTarget_1 = require("./input/IosDeviceTarget");
21
+ Object.defineProperty(exports, "IosDeviceTarget", { enumerable: true, get: function () { return IosDeviceTarget_1.IosDeviceTarget; } });
22
+ var AndroidDeviceTarget_1 = require("./input/AndroidDeviceTarget");
23
+ Object.defineProperty(exports, "AndroidDeviceTarget", { enumerable: true, get: function () { return AndroidDeviceTarget_1.AndroidDeviceTarget; } });
16
24
  var IosVersion_1 = require("./enums/IosVersion");
17
25
  Object.defineProperty(exports, "IosVersion", { enumerable: true, get: function () { return IosVersion_1.IosVersionEnum; } });
18
26
  var MatchLevel_1 = require("./enums/MatchLevel");
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AndroidDeviceTarget = void 0;
4
+ const ScreenOrientation_1 = require("../enums/ScreenOrientation");
5
+ /**
6
+ * Represents an Android device target with optional orientation configuration.
7
+ * This class provides a fluent API for specifying device orientation.
8
+ */
9
+ class AndroidDeviceTarget {
10
+ constructor(deviceName) {
11
+ this.deviceName = deviceName;
12
+ }
13
+ /**
14
+ * Sets the device orientation to landscape.
15
+ * @returns this instance for method chaining
16
+ */
17
+ landscape() {
18
+ this.screenOrientation = ScreenOrientation_1.ScreenOrientationEnum.LANDSCAPE;
19
+ return this;
20
+ }
21
+ /**
22
+ * Sets the device orientation to portrait.
23
+ * @returns this instance for method chaining
24
+ */
25
+ portrait() {
26
+ this.screenOrientation = ScreenOrientation_1.ScreenOrientationEnum.PORTRAIT;
27
+ return this;
28
+ }
29
+ /**
30
+ * Gets the configured orientation for this device target.
31
+ * @returns the screen orientation, or undefined if not set
32
+ */
33
+ getOrientation() {
34
+ return this.screenOrientation;
35
+ }
36
+ /**
37
+ * Gets the device name.
38
+ * @returns the device name string
39
+ */
40
+ getDeviceName() {
41
+ return this.deviceName;
42
+ }
43
+ /**
44
+ * String representation of this device target.
45
+ * @returns the device name
46
+ */
47
+ toString() {
48
+ return this.deviceName;
49
+ }
50
+ }
51
+ exports.AndroidDeviceTarget = AndroidDeviceTarget;
@@ -648,7 +648,7 @@ class CheckSettingsAutomationFluent extends CheckSettingsBaseFluent {
648
648
  pageId: this._settings.pageId,
649
649
  lazyLoad: this._settings.lazyLoad,
650
650
  waitBeforeCapture: this._settings.waitBeforeCapture,
651
- retryTimeout: this._settings.timeout,
651
+ matchTimeout: this._settings.timeout,
652
652
  userCommandId: this._settings.variationGroupId,
653
653
  densityMetrics: this._settings.densityMetrics,
654
654
  assumesMutability: this.assumesMutability(),
@@ -27,6 +27,10 @@ exports.ConfigurationData = void 0;
27
27
  const StitchMode_1 = require("../enums/StitchMode");
28
28
  const MatchLevel_1 = require("../enums/MatchLevel");
29
29
  const BrowserType_1 = require("../enums/BrowserType");
30
+ const IosMultiDeviceTarget_1 = require("../enums/IosMultiDeviceTarget");
31
+ const AndroidMultiDeviceTarget_1 = require("../enums/AndroidMultiDeviceTarget");
32
+ const IosDeviceTarget_1 = require("./IosDeviceTarget");
33
+ const AndroidDeviceTarget_1 = require("./AndroidDeviceTarget");
30
34
  const ScreenOrientation_1 = require("../enums/ScreenOrientation");
31
35
  const RectangleSize_1 = require("./RectangleSize");
32
36
  const ImageRotation_1 = require("./ImageRotation");
@@ -225,12 +229,94 @@ class ConfigurationData {
225
229
  this.browsersInfo.push({ chromeEmulationInfo: { deviceName, screenOrientation } });
226
230
  return this;
227
231
  }
228
- addMultiDeviceTarget(deviceName) {
232
+ /**
233
+ * Add iOS and/or Android devices for multi-device testing.
234
+ *
235
+ * @param devices - Device targets. Supports three formats:
236
+ * - Plain strings: `'iPhone 13'`, `'Galaxy S25'`
237
+ * - Enum values: `IosMultiDeviceTarget.iPhone_13`, `AndroidMultiDeviceTarget.Galaxy_S25`
238
+ * - Fluent API: `IosMultiDeviceTarget.iPhone_13.landscape()`, `AndroidMultiDeviceTarget.Galaxy_S25.portrait()`
239
+ *
240
+ * @example
241
+ * ```typescript
242
+ * // Plain strings (backward compatible)
243
+ * config.addMultiDeviceTarget('iPhone 13', 'Galaxy S25')
244
+ *
245
+ * // Enum values
246
+ * config.addMultiDeviceTarget(IosMultiDeviceTarget.iPhone_13, AndroidMultiDeviceTargetEnum.Galaxy_S25)
247
+ *
248
+ * // Fluent API with orientation
249
+ * config.addMultiDeviceTarget(
250
+ * IosMultiDeviceTarget.iPhone_13.landscape(),
251
+ * AndroidMultiDeviceTarget.Galaxy_S25.portrait()
252
+ * )
253
+ *
254
+ * // Mix all three styles
255
+ * config.addMultiDeviceTarget(
256
+ * 'iPhone 14',
257
+ * IosMultiDeviceTarget.iPhone_15,
258
+ * IosMultiDeviceTarget.iPhone_16.landscape()
259
+ * )
260
+ * ```
261
+ */
262
+ addMultiDeviceTarget(...devices) {
229
263
  if (!this.browsersInfo)
230
264
  this.browsersInfo = [];
231
- this.browsersInfo.push({ iosDeviceInfo: { deviceName } });
265
+ for (const device of devices) {
266
+ // Check if it's a Target class instance (has getDeviceName method)
267
+ if (device instanceof IosDeviceTarget_1.IosDeviceTarget || device instanceof AndroidDeviceTarget_1.AndroidDeviceTarget) {
268
+ const deviceName = device.getDeviceName();
269
+ const screenOrientation = device.getOrientation();
270
+ // Auto-detect platform
271
+ if (device instanceof IosDeviceTarget_1.IosDeviceTarget || this._isIosDevice(deviceName)) {
272
+ this.browsersInfo.push({
273
+ iosDeviceInfo: {
274
+ deviceName: deviceName,
275
+ ...(screenOrientation && { screenOrientation }),
276
+ },
277
+ });
278
+ }
279
+ else {
280
+ this.browsersInfo.push({
281
+ androidDeviceInfo: {
282
+ deviceName: deviceName,
283
+ ...(screenOrientation && { screenOrientation }),
284
+ },
285
+ });
286
+ }
287
+ }
288
+ else {
289
+ const deviceName = device;
290
+ // Auto-detect platform by checking which const object the device belongs to
291
+ if (this._isIosDevice(deviceName)) {
292
+ this.browsersInfo.push({ iosDeviceInfo: { deviceName: deviceName } });
293
+ }
294
+ else if (this._isAndroidDevice(deviceName)) {
295
+ this.browsersInfo.push({ androidDeviceInfo: { deviceName: deviceName } });
296
+ }
297
+ else {
298
+ throw new Error(`Invalid device name: "${deviceName}". ` +
299
+ `Supported iOS devices: ${Object.values(IosMultiDeviceTarget_1.IosMultiDeviceTarget)
300
+ .map(d => d.getDeviceName())
301
+ .join(', ')}. ` +
302
+ `Supported Android devices: ${Object.values(AndroidMultiDeviceTarget_1.AndroidMultiDeviceTarget)
303
+ .map(d => d.getDeviceName())
304
+ .join(', ')}.`);
305
+ }
306
+ }
307
+ }
232
308
  return this;
233
309
  }
310
+ _isIosDevice(deviceName) {
311
+ return Object.values(IosMultiDeviceTarget_1.IosMultiDeviceTarget)
312
+ .map(target => target.getDeviceName())
313
+ .includes(deviceName);
314
+ }
315
+ _isAndroidDevice(deviceName) {
316
+ return Object.values(AndroidMultiDeviceTarget_1.AndroidMultiDeviceTarget)
317
+ .map(target => target.getDeviceName())
318
+ .includes(deviceName);
319
+ }
234
320
  get captureStatusBar() {
235
321
  return this._config.captureStatusBar;
236
322
  }
@@ -1144,7 +1230,7 @@ class ConfigurationData {
1144
1230
  disableBrowserFetching: this.disableBrowserFetching,
1145
1231
  autProxy: this.autProxy,
1146
1232
  sendDom: this.sendDom,
1147
- retryTimeout: this.matchTimeout,
1233
+ matchTimeout: this.matchTimeout,
1148
1234
  matchLevel: (_e = this.defaultMatchSettings) === null || _e === void 0 ? void 0 : _e.matchLevel,
1149
1235
  ignoreCaret: (_f = this.defaultMatchSettings) === null || _f === void 0 ? void 0 : _f.ignoreCaret,
1150
1236
  ignoreDisplacements: (_g = this.defaultMatchSettings) === null || _g === void 0 ? void 0 : _g.ignoreDisplacements,
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IosDeviceTarget = void 0;
4
+ const ScreenOrientation_1 = require("../enums/ScreenOrientation");
5
+ /**
6
+ * Represents an iOS device target with optional orientation configuration.
7
+ * This class provides a fluent API for specifying device orientation.
8
+ */
9
+ class IosDeviceTarget {
10
+ constructor(deviceName) {
11
+ this.deviceName = deviceName;
12
+ }
13
+ /**
14
+ * Sets the device orientation to landscape.
15
+ * @returns this instance for method chaining
16
+ */
17
+ landscape() {
18
+ this.screenOrientation = ScreenOrientation_1.ScreenOrientationEnum.LANDSCAPE;
19
+ return this;
20
+ }
21
+ /**
22
+ * Sets the device orientation to portrait.
23
+ * @returns this instance for method chaining
24
+ */
25
+ portrait() {
26
+ this.screenOrientation = ScreenOrientation_1.ScreenOrientationEnum.PORTRAIT;
27
+ return this;
28
+ }
29
+ /**
30
+ * Gets the configured orientation for this device target.
31
+ * @returns the screen orientation, or undefined if not set
32
+ */
33
+ getOrientation() {
34
+ return this.screenOrientation;
35
+ }
36
+ /**
37
+ * Gets the device name.
38
+ * @returns the device name string
39
+ */
40
+ getDeviceName() {
41
+ return this.deviceName;
42
+ }
43
+ /**
44
+ * String representation of this device target.
45
+ * @returns the device name
46
+ */
47
+ toString() {
48
+ return this.deviceName;
49
+ }
50
+ }
51
+ exports.IosDeviceTarget = IosDeviceTarget;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@applitools/eyes",
3
- "version": "1.36.15",
3
+ "version": "1.36.17",
4
4
  "keywords": [
5
5
  "applitools",
6
6
  "eyes",
@@ -46,14 +46,14 @@
46
46
  "test": "run --top-level mocha './test/**/*.spec.ts'"
47
47
  },
48
48
  "dependencies": {
49
- "@applitools/core": "4.52.0",
50
- "@applitools/logger": "2.2.5",
51
- "@applitools/utils": "1.13.0",
49
+ "@applitools/core": "4.53.2",
50
+ "@applitools/logger": "2.2.7",
51
+ "@applitools/utils": "1.14.1",
52
52
  "chalk": "4.1.2",
53
53
  "yargs": "17.7.2"
54
54
  },
55
55
  "devDependencies": {
56
- "@applitools/req": "^1.8.5",
56
+ "@applitools/req": "^1.8.7",
57
57
  "@types/node": "^12.20.55"
58
58
  },
59
59
  "engines": {
@@ -0,0 +1,9 @@
1
+ import { AndroidDeviceTarget } from '../input/AndroidDeviceTarget';
2
+ export declare const AndroidMultiDeviceTarget: {
3
+ readonly Galaxy_S25: AndroidDeviceTarget;
4
+ readonly Galaxy_S25_Ultra: AndroidDeviceTarget;
5
+ readonly Pixel_9: AndroidDeviceTarget;
6
+ };
7
+ export type AndroidDeviceTargetKeys = keyof typeof AndroidMultiDeviceTarget;
8
+ export type AndroidDeviceTargetValues = AndroidDeviceTarget;
9
+ export type AndroidDeviceTargetNames = 'Galaxy S25' | 'Galaxy S25 Ultra' | 'Pixel 9';
@@ -4,12 +4,17 @@ export declare enum IosDeviceNameEnum {
4
4
  iPad_10 = "iPad (10th generation)",
5
5
  iPad_mini_6 = "iPad mini (6th generation)",
6
6
  iPad_Air_4 = "iPad Air (4th generation)",
7
+ iPad_Air_11_inch_M3 = "iPad Air 11-inch (M3)",
8
+ iPad_Air_13_inch_M3 = "iPad Air 13-inch (M3)",
9
+ iPad_A16 = "iPad (A16)",
7
10
  /** @deprecated use {@link iPad_Pro_12_9_inch_3 } instead */
8
11
  iPad_Pro_3 = "iPad Pro (12.9-inch) (3rd generation)",
9
- iPad_Pro_12_9_inch_3 = "iPad Pro (12.9-inch) (3rd generation)",
10
12
  /** @deprecated use {@link iPad_Pro_11_inch_4 } instead */
11
13
  iPad_Pro_4 = "iPad Pro (11-inch) (4th generation)",
12
14
  iPad_Pro_11_inch_4 = "iPad Pro (11-inch) (4th generation)",
15
+ iPad_Pro_11_inch_M5 = "iPad Pro 11-inch (M5)",
16
+ iPad_Pro_13_inch_M5 = "iPad Pro 13-inch (M5)",
17
+ iPad_Pro_12_9_inch_3 = "iPad Pro (12.9-inch) (3rd generation)",
13
18
  iPhone_SE_2 = "iPhone SE (2nd generation)",
14
19
  iPhone_SE_3 = "iPhone SE (3rd generation)",
15
20
  iPhone_XR = "iPhone XR",
@@ -38,6 +43,10 @@ export declare enum IosDeviceNameEnum {
38
43
  iPhone_16 = "iPhone 16",
39
44
  iPhone_16_Pro_Max = "iPhone 16 Pro Max",
40
45
  iPhone_16_Pro = "iPhone 16 Pro",
41
- iPhone_16_Plus = "iPhone 16 Plus"
46
+ iPhone_16_Plus = "iPhone 16 Plus",
47
+ iPhone_17 = "iPhone 17",
48
+ iPhone_17_Pro = "iPhone 17 Pro",
49
+ iPhone_17_Pro_Max = "iPhone 17 Pro Max",
50
+ iPhone_Air = "iPhone Air"
42
51
  }
43
52
  export type IosDeviceName = `${IosDeviceNameEnum}`;
@@ -1,39 +1,47 @@
1
- export declare enum IosMultiDeviceTargetEnum {
2
- iPhone_SE_1 = "iPhone SE (1st generation)",
3
- iPhone_SE_2 = "iPhone SE (2nd generation)",
4
- iPhone_SE_3 = "iPhone SE (3rd generation)",
5
- iPhone_6 = "iPhone 6",
6
- iPhone_6_Plus = "iPhone 6 Plus",
7
- iPhone_7 = "iPhone 7",
8
- iPhone_7_Plus = "iPhone 7 Plus",
9
- iPhone_8 = "iPhone 8",
10
- iPhone_8_Plus = "iPhone 8 Plus",
11
- iPhone_X = "iPhone X",
12
- iPhone_XR = "iPhone XR",
13
- iPhone_Xs = "iPhone Xs",
14
- iPhone_Xs_Max = "iPhone Xs Max",
15
- iPhone_11 = "iPhone 11",
16
- iPhone_11_Pro = "iPhone 11 Pro",
17
- iPhone_11_Pro_Max = "iPhone 11 Pro Max",
18
- iPhone_12 = "iPhone 12",
19
- iPhone_12_mini = "iPhone 12 mini",
20
- iPhone_12_Pro = "iPhone 12 Pro",
21
- iPhone_12_Pro_Max = "iPhone 12 Pro Max",
22
- iPhone_13 = "iPhone 13",
23
- iPhone_13_mini = "iPhone 13 mini",
24
- iPhone_13_Pro = "iPhone 13 Pro",
25
- iPhone_13_Pro_Max = "iPhone 13 Pro Max",
26
- iPhone_14 = "iPhone 14",
27
- iPhone_14_Pro = "iPhone 14 Pro",
28
- iPhone_14_Plus = "iPhone 14 Plus",
29
- iPhone_14_Pro_Max = "iPhone 14 Pro Max",
30
- iPhone_15 = "iPhone 15",
31
- iPhone_15_Pro = "iPhone 15 Pro",
32
- iPhone_15_Plus = "iPhone 15 Plus",
33
- iPhone_15_Pro_Max = "iPhone 15 Pro Max",
34
- iPhone_16 = "iPhone 16",
35
- iPhone_16_Pro = "iPhone 16 Pro",
36
- iPhone_16_Plus = "iPhone 16 Plus",
37
- iPhone_16_Pro_Max = "iPhone 16 Pro Max"
38
- }
39
- export type IosMultiDeviceTarget = `${IosMultiDeviceTargetEnum}`;
1
+ import { IosDeviceTarget } from '../input/IosDeviceTarget';
2
+ export declare const IosMultiDeviceTarget: {
3
+ readonly iPhone_SE_1: IosDeviceTarget;
4
+ readonly iPhone_SE_2: IosDeviceTarget;
5
+ readonly iPhone_SE_3: IosDeviceTarget;
6
+ readonly iPhone_6: IosDeviceTarget;
7
+ readonly iPhone_6_Plus: IosDeviceTarget;
8
+ readonly iPhone_7: IosDeviceTarget;
9
+ readonly iPhone_7_Plus: IosDeviceTarget;
10
+ readonly iPhone_8: IosDeviceTarget;
11
+ readonly iPhone_8_Plus: IosDeviceTarget;
12
+ readonly iPhone_X: IosDeviceTarget;
13
+ readonly iPhone_XR: IosDeviceTarget;
14
+ readonly iPhone_Xs: IosDeviceTarget;
15
+ readonly iPhone_Xs_Max: IosDeviceTarget;
16
+ readonly iPhone_11: IosDeviceTarget;
17
+ readonly iPhone_11_Pro: IosDeviceTarget;
18
+ readonly iPhone_11_Pro_Max: IosDeviceTarget;
19
+ readonly iPhone_12: IosDeviceTarget;
20
+ readonly iPhone_12_mini: IosDeviceTarget;
21
+ readonly iPhone_12_Pro: IosDeviceTarget;
22
+ readonly iPhone_12_Pro_Max: IosDeviceTarget;
23
+ readonly iPhone_13: IosDeviceTarget;
24
+ readonly iPhone_13_mini: IosDeviceTarget;
25
+ readonly iPhone_13_Pro: IosDeviceTarget;
26
+ readonly iPhone_13_Pro_Max: IosDeviceTarget;
27
+ readonly iPhone_14: IosDeviceTarget;
28
+ readonly iPhone_14_Pro: IosDeviceTarget;
29
+ readonly iPhone_14_Plus: IosDeviceTarget;
30
+ readonly iPhone_14_Pro_Max: IosDeviceTarget;
31
+ readonly iPhone_15: IosDeviceTarget;
32
+ readonly iPhone_15_Pro: IosDeviceTarget;
33
+ readonly iPhone_15_Plus: IosDeviceTarget;
34
+ readonly iPhone_15_Pro_Max: IosDeviceTarget;
35
+ readonly iPhone_16: IosDeviceTarget;
36
+ readonly iPhone_16e: IosDeviceTarget;
37
+ readonly iPhone_16_Pro: IosDeviceTarget;
38
+ readonly iPhone_16_Plus: IosDeviceTarget;
39
+ readonly iPhone_16_Pro_Max: IosDeviceTarget;
40
+ readonly iPhone_17: IosDeviceTarget;
41
+ readonly iPhone_17_Pro: IosDeviceTarget;
42
+ readonly iPhone_17_Pro_Max: IosDeviceTarget;
43
+ readonly iPhone_Air: IosDeviceTarget;
44
+ };
45
+ export type IosDeviceTargetKeys = keyof typeof IosMultiDeviceTarget;
46
+ export type IosDeviceTargetValues = IosDeviceTarget;
47
+ export type IosDeviceTargetNames = 'iPhone SE (1st generation)' | 'iPhone SE (2nd generation)' | 'iPhone SE (3rd generation)' | 'iPhone 6' | 'iPhone 6 Plus' | 'iPhone 7' | 'iPhone 7 Plus' | 'iPhone 8' | 'iPhone 8 Plus' | 'iPhone X' | 'iPhone XR' | 'iPhone Xs' | 'iPhone Xs Max' | 'iPhone 11' | 'iPhone 11 Pro' | 'iPhone 11 Pro Max' | 'iPhone 12' | 'iPhone 12 mini' | 'iPhone 12 Pro' | 'iPhone 12 Pro Max' | 'iPhone 13' | 'iPhone 13 mini' | 'iPhone 13 Pro' | 'iPhone 13 Pro Max' | 'iPhone 14' | 'iPhone 14 Pro' | 'iPhone 14 Plus' | 'iPhone 14 Pro Max' | 'iPhone 15' | 'iPhone 15 Pro' | 'iPhone 15 Plus' | 'iPhone 15 Pro Max' | 'iPhone 16' | 'iPhone 16e' | 'iPhone 16 Pro' | 'iPhone 16 Plus' | 'iPhone 16 Pro Max' | 'iPhone 17' | 'iPhone 17 Pro' | 'iPhone 17 Pro Max' | 'iPhone Air';
package/types/index.d.ts CHANGED
@@ -3,6 +3,10 @@ export { CorsIframeHandle as CorsIframeHandlePlain, CorsIframeHandleEnum as Cors
3
3
  export { DeviceName as DeviceNamePlain, DeviceNameEnum as DeviceName } from './enums/DeviceName';
4
4
  export { FailureReport as FailureReportPlain, FailureReportEnum as FailureReport } from './enums/FailureReport';
5
5
  export { IosDeviceName as IosDeviceNamePlain, IosDeviceNameEnum as IosDeviceName } from './enums/IosDeviceName';
6
+ export { IosMultiDeviceTarget, IosDeviceTargetNames, IosDeviceTargetKeys, IosDeviceTargetValues, } from './enums/IosMultiDeviceTarget';
7
+ export { AndroidMultiDeviceTarget, AndroidDeviceTargetNames, AndroidDeviceTargetKeys, AndroidDeviceTargetValues, } from './enums/AndroidMultiDeviceTarget';
8
+ export { IosDeviceTarget } from './input/IosDeviceTarget';
9
+ export { AndroidDeviceTarget } from './input/AndroidDeviceTarget';
6
10
  export { IosVersion as IosVersionPlain, IosVersionEnum as IosVersion } from './enums/IosVersion';
7
11
  export { MatchLevel as MatchLevelPlain, MatchLevelEnum as MatchLevel } from './enums/MatchLevel';
8
12
  export { ScreenOrientation as ScreenOrientationPlain, ScreenOrientationEnum as ScreenOrientation, } from './enums/ScreenOrientation';
@@ -37,7 +41,7 @@ export { PropertyData as PropertyDataPlain, PropertyDataData as PropertyData } f
37
41
  export { ProxySettings as ProxySettingsPlain, ProxySettingsData as ProxySettings } from './input/ProxySettings';
38
42
  export { RectangleSize as RectangleSizePlain, RectangleSizeData as RectangleSize } from './input/RectangleSize';
39
43
  export { Region as RegionPlain, LegacyRegion as LegacyRegionPlain, RegionData as Region } from './input/Region';
40
- export { DesktopBrowserInfo, ChromeEmulationInfo, IOSDeviceInfo, IOSMultiDeviceInfo } from './input/RenderInfo';
44
+ export { DesktopBrowserInfo, ChromeEmulationInfo, IOSDeviceInfo, IOSMultiDeviceInfo, AndroidMultiDeviceInfo, } from './input/RenderInfo';
41
45
  export { RunnerOptions as RunnerOptionsPlain, RunnerOptionsFluent, RunnerOptionsFluentInit as RunnerOptions, } from './input/RunnerOptions';
42
46
  export { VisualLocatorSettings } from './input/VisualLocatorSettings';
43
47
  export { ApiUrls as ApiUrlsPlain, ApiUrlsData as ApiUrls } from './output/ApiUrls';
@@ -0,0 +1,35 @@
1
+ import { ScreenOrientationEnum as ScreenOrientation } from '../enums/ScreenOrientation';
2
+ /**
3
+ * Represents an Android device target with optional orientation configuration.
4
+ * This class provides a fluent API for specifying device orientation.
5
+ */
6
+ export declare class AndroidDeviceTarget {
7
+ readonly deviceName: string;
8
+ private screenOrientation?;
9
+ constructor(deviceName: string);
10
+ /**
11
+ * Sets the device orientation to landscape.
12
+ * @returns this instance for method chaining
13
+ */
14
+ landscape(): this;
15
+ /**
16
+ * Sets the device orientation to portrait.
17
+ * @returns this instance for method chaining
18
+ */
19
+ portrait(): this;
20
+ /**
21
+ * Gets the configured orientation for this device target.
22
+ * @returns the screen orientation, or undefined if not set
23
+ */
24
+ getOrientation(): ScreenOrientation | undefined;
25
+ /**
26
+ * Gets the device name.
27
+ * @returns the device name string
28
+ */
29
+ getDeviceName(): string;
30
+ /**
31
+ * String representation of this device target.
32
+ * @returns the device name
33
+ */
34
+ toString(): string;
35
+ }
@@ -5,7 +5,10 @@ import { StitchMode, StitchModeEnum } from '../enums/StitchMode';
5
5
  import { MatchLevel, MatchLevelEnum } from '../enums/MatchLevel';
6
6
  import { BrowserType } from '../enums/BrowserType';
7
7
  import { DeviceName } from '../enums/DeviceName';
8
- import { IosMultiDeviceTarget } from '../enums/IosMultiDeviceTarget';
8
+ import type { IosDeviceTargetNames } from '../enums/IosMultiDeviceTarget';
9
+ import type { AndroidDeviceTargetNames } from '../enums/AndroidMultiDeviceTarget';
10
+ import { IosDeviceTarget } from './IosDeviceTarget';
11
+ import { AndroidDeviceTarget } from './AndroidDeviceTarget';
9
12
  import { ScreenOrientation } from '../enums/ScreenOrientation';
10
13
  import { AccessibilitySettings } from './AccessibilitySettings';
11
14
  import { RenderInfo, RenderInfoLegacy } from './RenderInfo';
@@ -19,6 +22,7 @@ import { BatchInfo, BatchInfoData } from './BatchInfo';
19
22
  import { PropertyData, PropertyDataData } from './PropertyData';
20
23
  import { ImageMatchSettings } from './ImageMatchSettings';
21
24
  import { LatestCommitInfo } from './LatestCommitInfo';
25
+ type MultiDeviceTargetTypes = IosDeviceTargetNames | AndroidDeviceTargetNames | IosDeviceTarget | AndroidDeviceTarget;
22
26
  export type Configuration<TSpec extends Core.SpecType = Core.SpecType> = {
23
27
  accessibilityValidation?: AccessibilitySettings;
24
28
  agentId?: string;
@@ -149,7 +153,39 @@ export declare class ConfigurationData<TSpec extends Core.SpecType = Core.SpecTy
149
153
  addBrowser(browserInfo: RenderInfoLegacy): this;
150
154
  addBrowser(width: number, height: number, name?: BrowserType): this;
151
155
  addDeviceEmulation(deviceName: DeviceName, screenOrientation?: ScreenOrientation): this;
152
- addMultiDeviceTarget(deviceName: IosMultiDeviceTarget): this;
156
+ /**
157
+ * Add iOS and/or Android devices for multi-device testing.
158
+ *
159
+ * @param devices - Device targets. Supports three formats:
160
+ * - Plain strings: `'iPhone 13'`, `'Galaxy S25'`
161
+ * - Enum values: `IosMultiDeviceTarget.iPhone_13`, `AndroidMultiDeviceTarget.Galaxy_S25`
162
+ * - Fluent API: `IosMultiDeviceTarget.iPhone_13.landscape()`, `AndroidMultiDeviceTarget.Galaxy_S25.portrait()`
163
+ *
164
+ * @example
165
+ * ```typescript
166
+ * // Plain strings (backward compatible)
167
+ * config.addMultiDeviceTarget('iPhone 13', 'Galaxy S25')
168
+ *
169
+ * // Enum values
170
+ * config.addMultiDeviceTarget(IosMultiDeviceTarget.iPhone_13, AndroidMultiDeviceTargetEnum.Galaxy_S25)
171
+ *
172
+ * // Fluent API with orientation
173
+ * config.addMultiDeviceTarget(
174
+ * IosMultiDeviceTarget.iPhone_13.landscape(),
175
+ * AndroidMultiDeviceTarget.Galaxy_S25.portrait()
176
+ * )
177
+ *
178
+ * // Mix all three styles
179
+ * config.addMultiDeviceTarget(
180
+ * 'iPhone 14',
181
+ * IosMultiDeviceTarget.iPhone_15,
182
+ * IosMultiDeviceTarget.iPhone_16.landscape()
183
+ * )
184
+ * ```
185
+ */
186
+ addMultiDeviceTarget(...devices: MultiDeviceTargetTypes[]): this;
187
+ private _isIosDevice;
188
+ private _isAndroidDevice;
153
189
  get captureStatusBar(): boolean;
154
190
  set captureStatusBar(captureStatusBar: boolean);
155
191
  getCaptureStatusBar(): boolean;
@@ -435,3 +471,4 @@ export declare class ConfigurationData<TSpec extends Core.SpecType = Core.SpecTy
435
471
  /** @internal */
436
472
  toString(): string;
437
473
  }
474
+ export {};
@@ -0,0 +1,35 @@
1
+ import { ScreenOrientationEnum as ScreenOrientation } from '../enums/ScreenOrientation';
2
+ /**
3
+ * Represents an iOS device target with optional orientation configuration.
4
+ * This class provides a fluent API for specifying device orientation.
5
+ */
6
+ export declare class IosDeviceTarget {
7
+ readonly deviceName: string;
8
+ private screenOrientation?;
9
+ constructor(deviceName: string);
10
+ /**
11
+ * Sets the device orientation to landscape.
12
+ * @returns this instance for method chaining
13
+ */
14
+ landscape(): this;
15
+ /**
16
+ * Sets the device orientation to portrait.
17
+ * @returns this instance for method chaining
18
+ */
19
+ portrait(): this;
20
+ /**
21
+ * Gets the configured orientation for this device target.
22
+ * @returns the screen orientation, or undefined if not set
23
+ */
24
+ getOrientation(): ScreenOrientation | undefined;
25
+ /**
26
+ * Gets the device name.
27
+ * @returns the device name string
28
+ */
29
+ getDeviceName(): string;
30
+ /**
31
+ * String representation of this device target.
32
+ * @returns the device name
33
+ */
34
+ toString(): string;
35
+ }
@@ -3,7 +3,8 @@ import { DeviceName } from '../enums/DeviceName';
3
3
  import { IosDeviceName } from '../enums/IosDeviceName';
4
4
  import { IosVersion } from '../enums/IosVersion';
5
5
  import { ScreenOrientation } from '../enums/ScreenOrientation';
6
- import { IosMultiDeviceTarget } from '../enums/IosMultiDeviceTarget';
6
+ import type { IosDeviceTargetNames } from '../enums/IosMultiDeviceTarget';
7
+ import type { AndroidDeviceTargetNames } from '../enums/AndroidMultiDeviceTarget';
7
8
  type RenderInfoBase = {
8
9
  /** @internal */
9
10
  hostOS?: string;
@@ -39,9 +40,16 @@ export type IOSDeviceInfo = {
39
40
  };
40
41
  export type IOSMultiDeviceInfo = {
41
42
  iosDeviceInfo: {
42
- deviceName: IosMultiDeviceTarget;
43
+ deviceName: IosDeviceTargetNames;
44
+ screenOrientation?: ScreenOrientation;
45
+ };
46
+ };
47
+ export type AndroidMultiDeviceInfo = {
48
+ androidDeviceInfo: {
49
+ deviceName: AndroidDeviceTargetNames;
50
+ screenOrientation?: ScreenOrientation;
43
51
  };
44
52
  };
45
53
  export type RenderInfoLegacy = RenderInfoBase & (DesktopBrowserInfo | ChromeEmulationInfo | IOSDeviceInfo | ChromeEmulationInfoLegacy);
46
- export type RenderInfo = RenderInfoBase & (DesktopBrowserInfo | ChromeEmulationInfo | IOSDeviceInfo | IOSMultiDeviceInfo);
54
+ export type RenderInfo = RenderInfoBase & (DesktopBrowserInfo | ChromeEmulationInfo | IOSDeviceInfo | IOSMultiDeviceInfo | AndroidMultiDeviceInfo);
47
55
  export {};