@applitools/eyes-testcafe 1.15.5 → 1.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,24 @@
3
3
  ## Unreleased
4
4
 
5
5
 
6
+
7
+
8
+
9
+
10
+
11
+ ## 1.16.0 - 2022/5/17
12
+
13
+ ### Features
14
+ - Support UFG for native mobile
15
+ - `runner.getAllTestResults` returns the corresponding UFG browser/device configuration for each test. This is available as `runner.getAllTestResults()[i].browserInfo`.
16
+ - Support `failTestcafeOnDiff` as environment variable `APPLITOOLS_FAIL_TESTCAFE_ON_DIFF`
17
+ - Support iPhone SE `IosDeviceName.iPhone_SE` and iPhone 8 Plus `IosDeviceName.iPhone_8_Plus` iOS devices
18
+ ### Bug fixes
19
+ - `runner.getAllTestResults` now aborts unclosed tests
20
+ - `runner.getAllTestResults` now returns all results, including aborted tests
21
+ - `extractText` now supports regions that don't use hints while using `x`/`y` coordinates
22
+ - Support data urls in iframes
23
+
6
24
  ## 1.15.5 - 2022/2/22
7
25
 
8
26
  - add support for configuring notifyOnCompletion through an environment variable ([Trello](https://trello.com/c/WWdwQvpv))
package/dist/api.js CHANGED
@@ -6,15 +6,27 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
6
6
  if (k2 === undefined) k2 = k;
7
7
  o[k2] = m[k];
8
8
  }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
9
21
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
22
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
23
  };
12
24
  Object.defineProperty(exports, "__esModule", { value: true });
13
25
  exports.BatchClose = exports.Target = exports.CheckSettings = exports.Configuration = exports.Eyes = void 0;
14
26
  const eyes_sdk_core_1 = require("@applitools/eyes-sdk-core");
15
- const api = require("@applitools/eyes-api");
16
- const legacy = require("./legacy");
17
- const spec = require("./spec-driver");
27
+ const api = __importStar(require("@applitools/eyes-api"));
28
+ const legacy = __importStar(require("./legacy"));
29
+ const spec = __importStar(require("./spec-driver"));
18
30
  process.env.APPLITOOLS_SCRIPT_RESULT_MAX_BYTE_LENGTH = '4718592';
19
31
  process.env.APPLITOOLS_SCRIPT_REMOVE_REVERSE_PROXY_URL_PREFIXES = 'true';
20
32
  const sdk = (0, eyes_sdk_core_1.makeSDK)({
package/dist/legacy.js CHANGED
@@ -1,4 +1,23 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
2
21
  var __rest = (this && this.__rest) || function (s, e) {
3
22
  var t = {};
4
23
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
@@ -12,21 +31,20 @@ var __rest = (this && this.__rest) || function (s, e) {
12
31
  };
13
32
  Object.defineProperty(exports, "__esModule", { value: true });
14
33
  exports.transformCheckSettings = exports.transformConfig = exports.LegacyTestCafeEyesMixin = void 0;
15
- const utils = require("@applitools/utils");
16
- const api = require("@applitools/eyes-api");
17
- const fs = require("fs");
18
- const path = require("path");
19
- const spec = require("./spec-driver");
34
+ const utils = __importStar(require("@applitools/utils"));
35
+ const api = __importStar(require("@applitools/eyes-api"));
36
+ const fs = __importStar(require("fs"));
37
+ const path = __importStar(require("path"));
38
+ const spec = __importStar(require("./spec-driver"));
20
39
  const eyes_sdk_core_1 = require("@applitools/eyes-sdk-core");
21
40
  function LegacyTestCafeEyesMixin(Eyes) {
22
41
  return class TestCafeEyes extends Eyes {
23
42
  constructor(runnerOrConfigOrOptions, configOrRunner) {
24
- var _a, _b, _c, _d;
43
+ var _a, _b, _c;
25
44
  if (utils.types.isNull(runnerOrConfigOrOptions) || utils.types.has(runnerOrConfigOrOptions, 'configPath')) {
26
45
  const testcafeConfig = eyes_sdk_core_1.ConfigUtils.getConfig({ configPath: runnerOrConfigOrOptions === null || runnerOrConfigOrOptions === void 0 ? void 0 : runnerOrConfigOrOptions.configPath });
27
46
  const runner = (_a = runnerOrConfigOrOptions === null || runnerOrConfigOrOptions === void 0 ? void 0 : runnerOrConfigOrOptions.runner) !== null && _a !== void 0 ? _a : new api.VisualGridRunner({ testConcurrency: (_c = (_b = testcafeConfig.concurrency) !== null && _b !== void 0 ? _b : testcafeConfig.testConcurrency) !== null && _c !== void 0 ? _c : 1 });
28
47
  super(runner, transformConfig(testcafeConfig));
29
- (_d = testcafeConfig.failTestcafeOnDiff) !== null && _d !== void 0 ? _d : (testcafeConfig.failTestcafeOnDiff = true);
30
48
  this._testcafeConfig = testcafeConfig;
31
49
  }
32
50
  else {
@@ -59,13 +77,12 @@ function LegacyTestCafeEyesMixin(Eyes) {
59
77
  return super.checkWindow(nameOrSetting, timeout, fully);
60
78
  }
61
79
  async close(throwErr = true) {
62
- var _a;
63
- return super.close(throwErr && Boolean((_a = this._testcafeConfig) === null || _a === void 0 ? void 0 : _a.failTestcafeOnDiff));
80
+ return super.close(throwErr && getFailTestcafeOnDiff(this._testcafeConfig));
64
81
  }
65
82
  async waitForResults(throwErr = true) {
66
- var _a, _b;
67
- const resultsSummary = await this.runner.getAllTestResults(throwErr && Boolean((_a = this._testcafeConfig) === null || _a === void 0 ? void 0 : _a.failTestcafeOnDiff));
68
- if ((_b = this._testcafeConfig) === null || _b === void 0 ? void 0 : _b.tapDirPath) {
83
+ var _a;
84
+ const resultsSummary = await this.runner.getAllTestResults(throwErr && getFailTestcafeOnDiff(this._testcafeConfig));
85
+ if ((_a = this._testcafeConfig) === null || _a === void 0 ? void 0 : _a.tapDirPath) {
69
86
  const results = resultsSummary.getAllResults().map(r => r.getTestResults());
70
87
  const includeSubTests = false;
71
88
  const markNewAsPassed = true;
@@ -77,6 +94,15 @@ function LegacyTestCafeEyesMixin(Eyes) {
77
94
  };
78
95
  }
79
96
  exports.LegacyTestCafeEyesMixin = LegacyTestCafeEyesMixin;
97
+ function getFailTestcafeOnDiff(_testcafeConfig) {
98
+ if (utils.general.isDefined(process.env.APPLITOOLS_FAIL_TESTCAFE_ON_DIFF)) {
99
+ return String(process.env.APPLITOOLS_FAIL_TESTCAFE_ON_DIFF).toLowerCase() === 'true';
100
+ }
101
+ if (_testcafeConfig && utils.general.isDefined(_testcafeConfig.failTestcafeOnDiff)) {
102
+ return String(_testcafeConfig.failTestcafeOnDiff).toLowerCase() === 'true';
103
+ }
104
+ return true;
105
+ }
80
106
  function transformConfig(options) {
81
107
  const config = Object.assign({}, options);
82
108
  if (options.concurrency)
@@ -1,9 +1,28 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
2
21
  Object.defineProperty(exports, "__esModule", { value: true });
3
22
  exports.build = exports.waitUntilDisplayed = exports.scrollIntoView = exports.hover = exports.type = exports.click = exports.takeScreenshot = exports.visit = exports.getUrl = exports.getTitle = exports.getDriverInfo = exports.setViewportSize = exports.findElements = exports.findElement = exports.childContext = exports.mainContext = exports.executeScript = exports.isStaleElementError = exports.extractSelector = exports.transformSelector = exports.transformElement = exports.isSelector = exports.isElement = exports.isDriver = void 0;
4
- const testcafe = require("testcafe");
5
- const fs = require("fs");
6
- const utils = require("@applitools/utils");
23
+ const testcafe = __importStar(require("testcafe"));
24
+ const fs = __importStar(require("fs"));
25
+ const utils = __importStar(require("@applitools/utils"));
7
26
  function XPathSelector(selector, options) {
8
27
  const getElementsByXPath = testcafe.Selector(xpath => {
9
28
  const iterator = document.evaluate(xpath, document, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@applitools/eyes-testcafe",
3
- "version": "1.15.5",
3
+ "version": "1.16.0",
4
4
  "description": "Applitools Eyes SDK for TestCafe",
5
5
  "keywords": [
6
6
  "eyes-testcafe",
@@ -59,8 +59,8 @@
59
59
  "deps": "bongo deps",
60
60
  "gh:test": "gh workflow run test.yml --ref $(git rev-parse --abbrev-ref HEAD) -f packages='testcafe' -f links='eyes-sdk-core eyes-api types test-utils utils driver snippets screenshoter sdk-shared visual-grid-client' -f linking-depth=3",
61
61
  "gh:publish": "gh workflow run publish-testcafe.yml --ref $(git rev-parse --abbrev-ref HEAD)",
62
- "preversion": "yarn deps && bongo preversion && yarn build",
63
- "version": "bongo version",
62
+ "preversion": "yarn deps && bongo preversion --verifyPendingChanges && yarn build",
63
+ "version": "bongo version --withPendingChanges",
64
64
  "postversion": "bongo postversion"
65
65
  },
66
66
  "husky": {
@@ -69,19 +69,20 @@
69
69
  }
70
70
  },
71
71
  "dependencies": {
72
- "@applitools/eyes-api": "1.1.8",
73
- "@applitools/eyes-sdk-core": "13.0.6",
74
- "@applitools/utils": "1.2.13",
75
- "@applitools/visual-grid-client": "15.9.0"
72
+ "@applitools/eyes-api": "1.4.0",
73
+ "@applitools/eyes-sdk-core": "13.6.11",
74
+ "@applitools/utils": "1.3.0",
75
+ "@applitools/visual-grid-client": "15.12.23"
76
76
  },
77
77
  "devDependencies": {
78
78
  "@applitools/api-extractor": "1.2.7",
79
+ "@applitools/bongo": "^2.0.3",
79
80
  "@applitools/scripts": "1.1.0",
80
81
  "@applitools/sdk-coverage-tests": "^2.3.18",
81
- "@applitools/sdk-release-kit": "^0.13.11",
82
82
  "@applitools/sdk-shared": "0.9.11",
83
83
  "@applitools/test-server": "1.0.8",
84
- "@applitools/test-utils": "1.0.12",
84
+ "@applitools/test-utils": "1.3.2",
85
+ "@types/yargs": "^17.0.10",
85
86
  "@typescript-eslint/eslint-plugin": "^4.15.1",
86
87
  "@typescript-eslint/parser": "^4.15.1",
87
88
  "eslint": "^7.9.0",
package/types/index.d.ts CHANGED
@@ -147,6 +147,7 @@ export type ConfigurationPlain = {
147
147
  apiKey?: string;
148
148
  serverUrl?: string;
149
149
  proxy?: ProxySettingsPlain;
150
+ autProxy?: { proxy: { url: string; username?: string; password?: string; isHttpOnly?: boolean; }; domains?: Array<string>; AUTProxyMode?: "Allow" | "Block"; };
150
151
  isDisabled?: boolean;
151
152
  connectionTimeout?: number;
152
153
  removeSession?: boolean;
@@ -257,6 +258,10 @@ export class Configuration implements Required<ConfigurationPlain> {
257
258
  setProxy(proxy: ProxySettingsPlain): Configuration;
258
259
  setProxy(url: string, username?: string, password?: string, isHttpOnly?: boolean): Configuration;
259
260
  setProxy(isEnabled: false): Configuration;
261
+ get autProxy(): { proxy: { url: string; username?: string; password?: string; isHttpOnly?: boolean; }; domains?: Array<string>; AUTProxyMode?: "Allow" | "Block"; };
262
+ set autProxy(autProxy: { proxy: { url: string; username?: string; password?: string; isHttpOnly?: boolean; }; domains?: Array<string>; AUTProxyMode?: "Allow" | "Block"; });
263
+ getAutProxy(): { proxy: { url: string; username?: string; password?: string; isHttpOnly?: boolean; }; domains?: Array<string>; AUTProxyMode?: "Allow" | "Block"; };
264
+ setAutProxy(autProxy: { proxy: { url: string; username?: string; password?: string; isHttpOnly?: boolean; }; domains?: Array<string>; AUTProxyMode?: "Allow" | "Block"; }): Configuration;
260
265
  get connectionTimeout(): number;
261
266
  set connectionTimeout(connectionTimeout: number);
262
267
  getConnectionTimeout(): number;
@@ -468,6 +473,7 @@ export type CheckSettingsPlain = {
468
473
  visualGridOptions?: { [key: string]: any; };
469
474
  hooks?: { beforeCaptureScreenshot: string; };
470
475
  renderId?: string;
476
+ pageId?: string;
471
477
  variationGroupId?: string;
472
478
  timeout?: number;
473
479
  waitBeforeCapture?: number;
@@ -547,6 +553,7 @@ export class CheckSettings {
547
553
  visualGridOption(key: string, value: any): CheckSettings;
548
554
  visualGridOptions(options: { [key: string]: any; }): CheckSettings;
549
555
  renderId(renderId: string): CheckSettings;
556
+ pageId(pageId: string): CheckSettings;
550
557
  variationGroupId(variationGroupId: string): CheckSettings;
551
558
  timeout(timeout: number): CheckSettings;
552
559
  waitBeforeCapture(waitBeforeCapture: number): CheckSettings;
@@ -737,7 +744,7 @@ export enum FailureReport {
737
744
  IMMEDIATE = 'IMMEDIATE',
738
745
  ON_CLOSE = 'ON_CLOSE'
739
746
  }
740
- export type IosDeviceNamePlain = "iPhone 11" | "iPhone 11 Pro" | "iPhone 11 Pro Max" | "iPhone X" | "iPhone XR" | "iPhone 13 Pro Max" | "iPhone 13 Pro" | "iPhone 13" | "iPhone 12 Pro Max" | "iPhone 12 Pro" | "iPhone 12" | "iPhone 12 mini" | "iPhone Xs" | "iPhone 8" | "iPhone 7" | "iPad Pro (12.9-inch) (3rd generation)" | "iPad (7th generation)" | "iPad (9th generation)" | "iPad Air (2nd generation)" | "iPad Air (4th generation)";
747
+ export type IosDeviceNamePlain = "iPhone 11" | "iPhone 11 Pro" | "iPhone 11 Pro Max" | "iPhone X" | "iPhone XR" | "iPhone 13 Pro Max" | "iPhone 13 Pro" | "iPhone 13" | "iPhone 12 Pro Max" | "iPhone 12 Pro" | "iPhone 12" | "iPhone 12 mini" | "iPhone Xs" | "iPhone 8" | "iPhone 8 Plus" | "iPhone 7" | "iPhone SE (1st generation)" | "iPad Pro (12.9-inch) (3rd generation)" | "iPad (7th generation)" | "iPad (9th generation)" | "iPad Air (2nd generation)" | "iPad Air (4th generation)";
741
748
  export enum IosDeviceName {
742
749
  iPhone_13_Pro_Max = 'iPhone 13 Pro Max',
743
750
  iPhone_13_Pro = 'iPhone 13 Pro',
@@ -753,7 +760,9 @@ export enum IosDeviceName {
753
760
  iPhone_XS = 'iPhone Xs',
754
761
  iPhone_X = 'iPhone X',
755
762
  iPhone_8 = 'iPhone 8',
763
+ iPhone_8_Plus = 'iPhone 8 Plus',
756
764
  iPhone_7 = 'iPhone 7',
765
+ iPhone_SE = 'iPhone SE (1st generation)',
757
766
  iPad_Pro_3 = 'iPad Pro (12.9-inch) (3rd generation)',
758
767
  iPad_7 = 'iPad (7th generation)',
759
768
  iPad_9 = 'iPad (9th generation)',
@@ -1398,15 +1407,71 @@ export class TestResults implements Required<TestResultsPlain> {
1398
1407
  delete(): Promise<void>;
1399
1408
  deleteSession(): Promise<void>;
1400
1409
  }
1401
- export type TestResultContainerPlain = { readonly exception: Error; readonly testResults: TestResultsPlain; };
1410
+ export type TestResultContainerPlain = { readonly exception?: Error; readonly testResults?: {
1411
+ readonly id?: string;
1412
+ readonly name?: string;
1413
+ readonly secretToken?: string;
1414
+ readonly status?: "Passed" | "Failed" | "Unresolved";
1415
+ readonly appName?: string;
1416
+ readonly batchId?: string;
1417
+ readonly batchName?: string;
1418
+ readonly branchName?: string;
1419
+ readonly hostOS?: string;
1420
+ readonly hostApp?: string;
1421
+ readonly hostDisplaySize?: { width: number; height: number; };
1422
+ readonly accessibilityStatus?: { readonly level: "AA" | "AAA"; readonly version: "WCAG_2_0" | "WCAG_2_1"; readonly status: "Passed" | "Failed"; };
1423
+ readonly startedAt?: string | Date;
1424
+ readonly duration?: number;
1425
+ readonly isNew?: boolean;
1426
+ readonly isDifferent?: boolean;
1427
+ readonly isAborted?: boolean;
1428
+ readonly appUrls?: { readonly batch?: string; readonly session?: string; };
1429
+ readonly apiUrls?: { readonly batch?: string; readonly session?: string; };
1430
+ readonly stepsInfo?: Array<{
1431
+ readonly name?: string;
1432
+ readonly isDifferent?: boolean;
1433
+ readonly hasBaselineImage?: boolean;
1434
+ readonly hasCurrentImage?: boolean;
1435
+ readonly appUrls?: { readonly step?: string; readonly stepEditor?: string; };
1436
+ readonly apiUrls?: {
1437
+ readonly baselineImage?: string;
1438
+ readonly currentImage?: string;
1439
+ readonly checkpointImage?: string;
1440
+ readonly checkpointImageThumbnail?: string;
1441
+ readonly diffImage?: string;
1442
+ };
1443
+ readonly renderId?: Array<string>;
1444
+ }>;
1445
+ readonly steps?: number;
1446
+ readonly matches?: number;
1447
+ readonly mismatches?: number;
1448
+ readonly missing?: number;
1449
+ readonly exactMatches?: number;
1450
+ readonly strictMatches?: number;
1451
+ readonly contentMatches?: number;
1452
+ readonly layoutMatches?: number;
1453
+ readonly noneMatches?: number;
1454
+ readonly url?: string;
1455
+ }; readonly browserInfo?: { name?: "chrome" | "chrome-one-version-back" | "chrome-two-versions-back" | "firefox" | "firefox-one-version-back" | "firefox-two-versions-back" | "ie" | "ie10" | "edge" | "edgechromium" | "edgelegacy" | "edgechromium-one-version-back" | "edgechromium-two-versions-back" | "safari" | "safari-earlyaccess" | "safari-one-version-back" | "safari-two-versions-back"; width: number; height: number; } | { chromeEmulationInfo: { deviceName: "Blackberry PlayBook" | "BlackBerry Z30" | "Galaxy A5" | "Galaxy Note 10" | "Galaxy Note 10 Plus" | "Galaxy Note 2" | "Galaxy Note 3" | "Galaxy Note 4" | "Galaxy Note 8" | "Galaxy Note 9" | "Galaxy S3" | "Galaxy S5" | "Galaxy S8" | "Galaxy S8 Plus" | "Galaxy S9" | "Galaxy S9 Plus" | "Galaxy S10" | "Galaxy S10 Plus" | "Galaxy S20" | "Galaxy Tab S7" | "iPad" | "iPad 6th Gen" | "iPad 7th Gen" | "iPad Air 2" | "iPad Mini" | "iPad Pro" | "iPhone 11" | "iPhone 11 Pro" | "iPhone 11 Pro Max" | "iPhone 4" | "iPhone 5/SE" | "iPhone 6/7/8" | "iPhone 6/7/8 Plus" | "iPhone X" | "iPhone XR" | "iPhone XS" | "iPhone XS Max" | "Kindle Fire HDX" | "Laptop with HiDPI screen" | "Laptop with MDPI screen" | "Laptop with touch" | "LG G6" | "LG Optimus L70" | "Microsoft Lumia 550" | "Microsoft Lumia 950" | "Nexus 10" | "Nexus 4" | "Nexus 5" | "Nexus 5X" | "Nexus 6" | "Nexus 6P" | "Nexus 7" | "Nokia Lumia 520" | "Nokia N9" | "OnePlus 7T" | "OnePlus 7T Pro" | "Pixel 2" | "Pixel 2 XL" | "Pixel 3" | "Pixel 3 XL" | "Pixel 4" | "Pixel 4 XL" | "Pixel 5"; screenOrientation?: "portrait" | "landscape"; }; } | { iosDeviceInfo: { deviceName: "iPhone 11" | "iPhone 11 Pro" | "iPhone 11 Pro Max" | "iPhone X" | "iPhone XR" | "iPhone 13 Pro Max" | "iPhone 13 Pro" | "iPhone 13" | "iPhone 12 Pro Max" | "iPhone 12 Pro" | "iPhone 12" | "iPhone 12 mini" | "iPhone Xs" | "iPhone 8" | "iPhone 8 Plus" | "iPhone 7" | "iPhone SE (1st generation)" | "iPad Pro (12.9-inch) (3rd generation)" | "iPad (7th generation)" | "iPad (9th generation)" | "iPad Air (2nd generation)" | "iPad Air (4th generation)"; iosVersion?: "latest" | "latest-1"; screenOrientation?: "portrait" | "landscape"; }; }; };
1402
1456
  export class TestResultContainer implements Required<TestResultContainerPlain> {
1403
1457
  get testResults(): TestResultsPlain;
1404
1458
  getTestResults(): TestResults;
1405
1459
  get exception(): Error;
1406
1460
  getException(): Error;
1461
+ get browserInfo(): { name?: "chrome" | "chrome-one-version-back" | "chrome-two-versions-back" | "firefox" | "firefox-one-version-back" | "firefox-two-versions-back" | "ie" | "ie10" | "edge" | "edgechromium" | "edgelegacy" | "edgechromium-one-version-back" | "edgechromium-two-versions-back" | "safari" | "safari-earlyaccess" | "safari-one-version-back" | "safari-two-versions-back"; width: number; height: number; } | { chromeEmulationInfo: { deviceName: "Blackberry PlayBook" | "BlackBerry Z30" | "Galaxy A5" | "Galaxy Note 10" | "Galaxy Note 10 Plus" | "Galaxy Note 2" | "Galaxy Note 3" | "Galaxy Note 4" | "Galaxy Note 8" | "Galaxy Note 9" | "Galaxy S3" | "Galaxy S5" | "Galaxy S8" | "Galaxy S8 Plus" | "Galaxy S9" | "Galaxy S9 Plus" | "Galaxy S10" | "Galaxy S10 Plus" | "Galaxy S20" | "Galaxy Tab S7" | "iPad" | "iPad 6th Gen" | "iPad 7th Gen" | "iPad Air 2" | "iPad Mini" | "iPad Pro" | "iPhone 11" | "iPhone 11 Pro" | "iPhone 11 Pro Max" | "iPhone 4" | "iPhone 5/SE" | "iPhone 6/7/8" | "iPhone 6/7/8 Plus" | "iPhone X" | "iPhone XR" | "iPhone XS" | "iPhone XS Max" | "Kindle Fire HDX" | "Laptop with HiDPI screen" | "Laptop with MDPI screen" | "Laptop with touch" | "LG G6" | "LG Optimus L70" | "Microsoft Lumia 550" | "Microsoft Lumia 950" | "Nexus 10" | "Nexus 4" | "Nexus 5" | "Nexus 5X" | "Nexus 6" | "Nexus 6P" | "Nexus 7" | "Nokia Lumia 520" | "Nokia N9" | "OnePlus 7T" | "OnePlus 7T Pro" | "Pixel 2" | "Pixel 2 XL" | "Pixel 3" | "Pixel 3 XL" | "Pixel 4" | "Pixel 4 XL" | "Pixel 5"; screenOrientation?: "portrait" | "landscape"; }; } | { iosDeviceInfo: { deviceName: "iPhone 11" | "iPhone 11 Pro" | "iPhone 11 Pro Max" | "iPhone X" | "iPhone XR" | "iPhone 13 Pro Max" | "iPhone 13 Pro" | "iPhone 13" | "iPhone 12 Pro Max" | "iPhone 12 Pro" | "iPhone 12" | "iPhone 12 mini" | "iPhone Xs" | "iPhone 8" | "iPhone 8 Plus" | "iPhone 7" | "iPhone SE (1st generation)" | "iPad Pro (12.9-inch) (3rd generation)" | "iPad (7th generation)" | "iPad (9th generation)" | "iPad Air (2nd generation)" | "iPad Air (4th generation)"; iosVersion?: "latest" | "latest-1"; screenOrientation?: "portrait" | "landscape"; }; };
1462
+ getBrowserInfo(): { name?: "chrome" | "chrome-one-version-back" | "chrome-two-versions-back" | "firefox" | "firefox-one-version-back" | "firefox-two-versions-back" | "ie" | "ie10" | "edge" | "edgechromium" | "edgelegacy" | "edgechromium-one-version-back" | "edgechromium-two-versions-back" | "safari" | "safari-earlyaccess" | "safari-one-version-back" | "safari-two-versions-back"; width: number; height: number; } | { chromeEmulationInfo: { deviceName: "Blackberry PlayBook" | "BlackBerry Z30" | "Galaxy A5" | "Galaxy Note 10" | "Galaxy Note 10 Plus" | "Galaxy Note 2" | "Galaxy Note 3" | "Galaxy Note 4" | "Galaxy Note 8" | "Galaxy Note 9" | "Galaxy S3" | "Galaxy S5" | "Galaxy S8" | "Galaxy S8 Plus" | "Galaxy S9" | "Galaxy S9 Plus" | "Galaxy S10" | "Galaxy S10 Plus" | "Galaxy S20" | "Galaxy Tab S7" | "iPad" | "iPad 6th Gen" | "iPad 7th Gen" | "iPad Air 2" | "iPad Mini" | "iPad Pro" | "iPhone 11" | "iPhone 11 Pro" | "iPhone 11 Pro Max" | "iPhone 4" | "iPhone 5/SE" | "iPhone 6/7/8" | "iPhone 6/7/8 Plus" | "iPhone X" | "iPhone XR" | "iPhone XS" | "iPhone XS Max" | "Kindle Fire HDX" | "Laptop with HiDPI screen" | "Laptop with MDPI screen" | "Laptop with touch" | "LG G6" | "LG Optimus L70" | "Microsoft Lumia 550" | "Microsoft Lumia 950" | "Nexus 10" | "Nexus 4" | "Nexus 5" | "Nexus 5X" | "Nexus 6" | "Nexus 6P" | "Nexus 7" | "Nokia Lumia 520" | "Nokia N9" | "OnePlus 7T" | "OnePlus 7T Pro" | "Pixel 2" | "Pixel 2 XL" | "Pixel 3" | "Pixel 3 XL" | "Pixel 4" | "Pixel 4 XL" | "Pixel 5"; screenOrientation?: "portrait" | "landscape"; }; } | { iosDeviceInfo: { deviceName: "iPhone 11" | "iPhone 11 Pro" | "iPhone 11 Pro Max" | "iPhone X" | "iPhone XR" | "iPhone 13 Pro Max" | "iPhone 13 Pro" | "iPhone 13" | "iPhone 12 Pro Max" | "iPhone 12 Pro" | "iPhone 12" | "iPhone 12 mini" | "iPhone Xs" | "iPhone 8" | "iPhone 8 Plus" | "iPhone 7" | "iPhone SE (1st generation)" | "iPad Pro (12.9-inch) (3rd generation)" | "iPad (7th generation)" | "iPad (9th generation)" | "iPad Air (2nd generation)" | "iPad Air (4th generation)"; iosVersion?: "latest" | "latest-1"; screenOrientation?: "portrait" | "landscape"; }; };
1407
1463
  }
1408
- export type TestResultsSummaryPlain = Iterable<TestResultContainerPlain>;
1409
- export class TestResultsSummary implements TestResultsSummaryPlain {
1464
+ export type TestResultsSummaryPlain = {
1465
+ results: Array<TestResultContainerPlain>;
1466
+ passed: number;
1467
+ unresolved: number;
1468
+ failed: number;
1469
+ exceptions: number;
1470
+ mismatches: number;
1471
+ missing: number;
1472
+ matches: number;
1473
+ };
1474
+ export class TestResultsSummary implements Iterable<TestResultContainerPlain> {
1410
1475
  getAllResults(): Array<TestResultContainer>;
1411
1476
  [Symbol.iterator](): Iterator<TestResultContainer, any, undefined>;
1412
1477
  }
@@ -1442,41 +1507,8 @@ export class Logger {
1442
1507
  fatal(...messages: Array<any>): void;
1443
1508
  open(): void;
1444
1509
  close(): void;
1445
- extend(options?: Omit<{
1446
- handler?: CustomLogHandlerPlain | FileLogHandlerPlain | ConsoleLogHandlerPlain | {
1447
- type: "rolling file";
1448
- dirname?: string;
1449
- name?: string;
1450
- maxFileLength?: number;
1451
- maxFileNumber?: number;
1452
- };
1453
- format?: (message: any, options: {
1454
- formatting?: boolean;
1455
- label?: string;
1456
- timestamp?: Date;
1457
- level?: "silent" | "fatal" | "error" | "warn" | "info";
1458
- tags?: Record<string, unknown>;
1459
- color?: string | Array<string>;
1460
- colors?: { timestamp?: string | Array<string>; level?: {
1461
- silent?: string | Array<string>;
1462
- fatal?: string | Array<string>;
1463
- error?: string | Array<string>;
1464
- warn?: string | Array<string>;
1465
- info?: string | Array<string>;
1466
- }; tags?: string | Array<string>; message?: string | Array<string>; };
1467
- }) => string;
1468
- label?: string;
1469
- timestamp?: false;
1470
- level?: number | ("silent" | "fatal" | "error" | "warn" | "info");
1471
- colors?: boolean | { timestamp?: string | Array<string>; level?: {
1472
- silent?: string | Array<string>;
1473
- fatal?: string | Array<string>;
1474
- error?: string | Array<string>;
1475
- warn?: string | Array<string>;
1476
- info?: string | Array<string>;
1477
- }; tags?: string | Array<string>; message?: string | Array<string>; };
1478
- console?: boolean | CustomLogHandlerPlain;
1479
- }, "handler">): Logger;
1510
+ tag(name: string, value: any): void;
1511
+ extend(options?: import('node_modules/@applitools/eyes-api/node_modules/@applitools/logger/types/logger.d.ts').ExtendOptions): Logger;
1480
1512
  extend(label?: string): Logger;
1481
1513
  }
1482
1514
  export function closeBatch(spec: { closeBatches(options: { settings: { batchIds: Array<string>; serverUrl?: string; apiKey?: string; proxy?: ProxySettingsPlain; }; }): Promise<void>; }): (options: { batchIds: Array<string>; serverUrl?: string; apiKey?: string; proxy?: ProxySettingsPlain; }) => Promise<void>;