@applitools/driver 1.11.26 → 1.11.27

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.
@@ -30,16 +30,6 @@ exports.HelperAndroid = void 0;
30
30
  const utils = __importStar(require("@applitools/utils"));
31
31
  const gte_1 = __importDefault(require("semver/functions/gte"));
32
32
  class HelperAndroid {
33
- constructor(options) {
34
- this._supportAsync = false;
35
- this._spec = options.spec;
36
- this._input = options.input;
37
- this._action = options.action;
38
- this._legacy = options.legacy;
39
- this._logger = options.logger;
40
- this.name = this._legacy ? 'android-legacy' : 'android';
41
- this._supportAsync = options.supportAsync === true;
42
- }
43
33
  static async make(options) {
44
34
  var _a;
45
35
  const { spec, driver, logger } = options;
@@ -68,6 +58,16 @@ class HelperAndroid {
68
58
  })
69
59
  : null;
70
60
  }
61
+ constructor(options) {
62
+ this._supportAsync = false;
63
+ this._spec = options.spec;
64
+ this._input = options.input;
65
+ this._action = options.action;
66
+ this._legacy = options.legacy;
67
+ this._logger = options.logger;
68
+ this.name = this._legacy ? 'android-legacy' : 'android';
69
+ this._supportAsync = options.supportAsync === true;
70
+ }
71
71
  async _getElementId(element) {
72
72
  const resourceId = await element.getAttribute('resource-id');
73
73
  if (!resourceId)
@@ -91,12 +91,12 @@ class HelperAndroid {
91
91
  }
92
92
  if (text === 'WAIT') {
93
93
  this._logger.warn(`Helper library didn't provide a response for async command (${command}) during ${timeout}ms`);
94
- text = null;
94
+ text = '';
95
95
  }
96
96
  return text;
97
97
  }
98
98
  async getContentRegion(element, options) {
99
- var _a, _b, _c;
99
+ var _a, _b, _c, _d, _e;
100
100
  const elementId = await this._getElementId(element);
101
101
  if (!elementId)
102
102
  return null;
@@ -115,18 +115,18 @@ class HelperAndroid {
115
115
  const contentHeight = Number(contentHeightString);
116
116
  if (Number.isNaN(contentHeight))
117
117
  return null;
118
- const region = await this._spec.getElementRegion(this._input.driver.target, element.target);
119
- if (contentHeight < region.height)
118
+ const region = await ((_e = (_d = this._spec).getElementRegion) === null || _e === void 0 ? void 0 : _e.call(_d, this._input.driver.target, element.target));
119
+ if (!region || contentHeight < region.height)
120
120
  return null;
121
121
  return { x: region.x, y: region.y, width: region.width, height: contentHeight };
122
122
  }
123
123
  async getTouchPadding() {
124
124
  if (this._legacy)
125
- return null;
125
+ return undefined;
126
126
  const touchPaddingString = await this._command(`getTouchPadding;0;0;0;0;0`);
127
127
  const touchPadding = Number(touchPaddingString);
128
128
  if (!touchPadding || Number.isNaN(touchPadding))
129
- return null;
129
+ return undefined;
130
130
  return touchPadding;
131
131
  }
132
132
  async getRegion(element) {
@@ -146,18 +146,18 @@ class HelperAndroid {
146
146
  }
147
147
  async scrollToTop(element) {
148
148
  if (this._legacy)
149
- return null;
149
+ return;
150
150
  const elementId = await this._getElementId(element);
151
151
  if (!elementId)
152
- return null;
152
+ return;
153
153
  await this._command(`moveToTop;${elementId};0;-1;0`);
154
154
  }
155
155
  async scrollBy(element, offset) {
156
156
  if (this._legacy)
157
- return null;
157
+ return;
158
158
  const elementId = await this._getElementId(element);
159
159
  if (!elementId)
160
- return null;
160
+ return;
161
161
  await this._command(`scroll;${elementId};${offset.y};0;0;0`);
162
162
  }
163
163
  }
@@ -2,6 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.HelperIOS = void 0;
4
4
  class HelperIOS {
5
+ static async make(options) {
6
+ const { spec, driver, logger } = options;
7
+ const element = await driver.element({ type: 'name', selector: 'applitools_grab_scrollable_data_button' });
8
+ return element ? new HelperIOS({ driver, element, spec, logger }) : null;
9
+ }
5
10
  constructor(options) {
6
11
  this._driver = options.driver;
7
12
  this._element = options.element;
@@ -9,14 +14,9 @@ class HelperIOS {
9
14
  this._logger = options.logger;
10
15
  this.name = 'ios';
11
16
  }
12
- static async make(options) {
13
- const { spec, driver, logger } = options;
14
- const element = await driver.element({ type: 'name', selector: 'applitools_grab_scrollable_data_button' });
15
- return element ? new HelperIOS({ driver, element, spec, logger }) : null;
16
- }
17
17
  async getContentRegion(element) {
18
+ var _a, _b;
18
19
  await this._element.click();
19
- const region = await this._spec.getElementRegion(this._driver.target, element.target);
20
20
  const sizeLabel = await this._driver.element({ type: 'name', selector: 'applitools_content_size_label' });
21
21
  const sizeString = await (sizeLabel === null || sizeLabel === void 0 ? void 0 : sizeLabel.getText());
22
22
  if (!sizeString)
@@ -35,6 +35,9 @@ class HelperIOS {
35
35
  if (!Number.isNaN(contentOffset.y))
36
36
  contentSize.height -= contentOffset.y;
37
37
  }
38
+ const region = await ((_b = (_a = this._spec).getElementRegion) === null || _b === void 0 ? void 0 : _b.call(_a, this._driver.target, element.target));
39
+ if (!region || contentSize.height < region.height)
40
+ return null;
38
41
  return contentSize.height >= region.height ? { x: region.x, y: region.y, ...contentSize } : null;
39
42
  }
40
43
  }
@@ -9,7 +9,7 @@ const WINDOWS_VERSIONS = {
9
9
  '15.0.0': '11',
10
10
  };
11
11
  function parseUserAgentData(userAgentData) {
12
- var _a, _b, _c;
12
+ var _a, _b, _c, _d;
13
13
  const chromiumBrand = (_a = userAgentData.brands) === null || _a === void 0 ? void 0 : _a.find(brand => /Chromium/i.test(brand.brand));
14
14
  const browserBrand = (_c = (_b = userAgentData.brands) === null || _b === void 0 ? void 0 : _b.find(brand => brand !== chromiumBrand && !/Not.?A.?Brand/i.test(brand.brand))) !== null && _c !== void 0 ? _c : chromiumBrand;
15
15
  const info = {
@@ -26,7 +26,7 @@ function parseUserAgentData(userAgentData) {
26
26
  }
27
27
  else if (info.platformName === 'macOS') {
28
28
  info.platformName = 'Mac OS X';
29
- info.platformVersion = info.platformVersion.split(/[._]/, 2).join('.');
29
+ info.platformVersion = (_d = info.platformVersion) === null || _d === void 0 ? void 0 : _d.split(/[._]/, 2).join('.');
30
30
  }
31
31
  return info;
32
32
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@applitools/driver",
3
- "version": "1.11.26",
3
+ "version": "1.11.27",
4
4
  "description": "Applitools universal framework wrapper",
5
5
  "keywords": [
6
6
  "applitools",
@@ -71,8 +71,8 @@
71
71
  "types"
72
72
  ],
73
73
  "scripts": {
74
- "lint": "eslint '**/*.ts'",
75
- "build": "tsc",
74
+ "lint": "npx eslint '**/*.ts'",
75
+ "build": "npx tsc --project ./tsconfig.build.json",
76
76
  "test": "yarn test:unit",
77
77
  "test:sanity": "yarn test:unit",
78
78
  "test:unit": "mocha --no-timeouts -r ts-node/register ./test/unit/*.spec.ts",
@@ -81,34 +81,17 @@
81
81
  "version": "bongo version",
82
82
  "postversion": "bongo postversion --skip-release-notification"
83
83
  },
84
- "husky": {
85
- "hooks": {
86
- "pre-push": "yarn bongo lint"
87
- }
88
- },
89
84
  "dependencies": {
90
- "@applitools/logger": "1.1.42",
91
- "@applitools/snippets": "2.4.14",
92
- "@applitools/utils": "1.3.28",
85
+ "@applitools/logger": "1.1.44",
86
+ "@applitools/snippets": "2.4.15",
87
+ "@applitools/utils": "1.3.29",
93
88
  "semver": "7.3.7"
94
89
  },
95
90
  "devDependencies": {
96
91
  "@applitools/bongo": "^2.2.2",
97
- "@applitools/scripts": "^1.2.0",
98
92
  "@types/mocha": "^9.1.1",
99
- "@types/node": "^17.0.31",
100
- "@typescript-eslint/eslint-plugin": "^5.22.0",
101
- "@typescript-eslint/parser": "^5.22.0",
102
- "eslint": "^8.14.0",
103
- "eslint-config-prettier": "^8.5.0",
104
- "eslint-plugin-mocha-no-only": "^1.1.1",
105
- "eslint-plugin-node": "^11.1.0",
106
- "eslint-plugin-prettier": "^4.0.0",
107
- "husky": "^4.3.7",
108
- "mocha": "^10.0.0",
109
- "prettier": "^2.6.2",
110
- "ts-node": "^10.7.0",
111
- "typescript": "^4.6.4"
93
+ "@types/node": "12",
94
+ "mocha": "^10.0.0"
112
95
  },
113
96
  "engines": {
114
97
  "node": ">=12.13.0"
@@ -1,4 +1,4 @@
1
1
  import { type DriverInfo } from './spec-driver';
2
- declare type Capabilities = Record<string, any>;
2
+ type Capabilities = Record<string, any>;
3
3
  export declare function parseCapabilities(capabilities: Capabilities): DriverInfo;
4
4
  export {};
@@ -5,39 +5,34 @@ import { type Driver } from './driver';
5
5
  import { type Selector } from './selector';
6
6
  import { type Logger } from '@applitools/logger';
7
7
  import { Element } from './element';
8
- export declare type ContextReference<TDriver, TContext, TElement, TSelector> = Context<TDriver, TContext, TElement, TSelector> | Element<TDriver, TContext, TElement, TSelector> | TElement | Selector<TSelector> | string | number;
9
- export declare type ContextPlain<TDriver, TContext, TElement, TSelector> = ContextReference<TDriver, TContext, TElement, TSelector> | {
8
+ export type ContextReference<TDriver, TContext, TElement, TSelector> = Context<TDriver, TContext, TElement, TSelector> | Element<TDriver, TContext, TElement, TSelector> | TElement | Selector<TSelector> | string | number;
9
+ export type ContextPlain<TDriver, TContext, TElement, TSelector> = ContextReference<TDriver, TContext, TElement, TSelector> | {
10
10
  reference: ContextReference<TDriver, TContext, TElement, TSelector>;
11
11
  scrollingElement?: Element<TDriver, TContext, TElement, TSelector>;
12
12
  parent?: ContextPlain<TDriver, TContext, TElement, TSelector>;
13
13
  };
14
- export declare type ContextState = {
15
- region?: Region;
16
- clientRegion?: Region;
17
- scrollingRegion?: Region;
18
- innerOffset?: Location;
14
+ type ContextOptions<TDriver, TContext, TElement, TSelector> = {
15
+ spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
16
+ context?: TContext;
17
+ driver?: Driver<TDriver, TContext, TElement, TSelector>;
18
+ parent?: Context<TDriver, TContext, TElement, TSelector>;
19
+ reference?: ContextReference<TDriver, TContext, TElement, TSelector>;
20
+ element?: Element<TDriver, TContext, TElement, TSelector>;
21
+ scrollingElement?: Element<TDriver, TContext, TElement, TSelector>;
22
+ logger: Logger;
19
23
  };
20
24
  export declare class Context<TDriver, TContext, TElement, TSelector> {
21
- private _target;
22
- private _driver;
23
- private _parent;
24
- private _element;
25
- private _reference;
26
- private _scrollingElement;
25
+ private _target?;
26
+ private _driver?;
27
+ private _parent?;
28
+ private _element?;
29
+ private _reference?;
30
+ private _scrollingElement?;
27
31
  private _state;
28
32
  private _logger;
29
33
  private _isReference;
30
34
  protected readonly _spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
31
- constructor(options: {
32
- spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
33
- context?: TContext | Context<TDriver, TContext, TElement, TSelector>;
34
- driver?: Driver<TDriver, TContext, TElement, TSelector>;
35
- parent?: Context<TDriver, TContext, TElement, TSelector>;
36
- reference?: ContextReference<TDriver, TContext, TElement, TSelector>;
37
- element?: Element<TDriver, TContext, TElement, TSelector>;
38
- scrollingElement?: Element<TDriver, TContext, TElement, TSelector>;
39
- logger?: Logger;
40
- });
35
+ constructor(options: ContextOptions<TDriver, TContext, TElement, TSelector>);
41
36
  get target(): TContext;
42
37
  get driver(): Driver<TDriver, TContext, TElement, TSelector>;
43
38
  get parent(): Context<TDriver, TContext, TElement, TSelector> | null;
@@ -52,9 +47,9 @@ export declare class Context<TDriver, TContext, TElement, TSelector> {
52
47
  focus(): Promise<this>;
53
48
  equals(context: Context<TDriver, TContext, TElement, TSelector> | Element<TDriver, TContext, TElement, TSelector>): Promise<boolean>;
54
49
  context(reference: ContextPlain<TDriver, TContext, TElement, TSelector>): Promise<Context<TDriver, TContext, TElement, TSelector>>;
55
- element(elementOrSelector: TElement | Selector<TSelector>): Promise<Element<TDriver, TContext, TElement, TSelector>>;
50
+ element(elementOrSelector: TElement | Selector<TSelector>): Promise<Element<TDriver, TContext, TElement, TSelector> | null>;
56
51
  elements(selectorOrElement: Selector<TSelector> | TElement): Promise<Element<TDriver, TContext, TElement, TSelector>[]>;
57
- waitFor(selector: Selector<TSelector>, options?: WaitOptions): Promise<Element<TDriver, TContext, TElement, TSelector>>;
52
+ waitFor(selector: Selector<TSelector>, options?: WaitOptions): Promise<Element<TDriver, TContext, TElement, TSelector> | null>;
58
53
  execute(script: ((args: any) => any) | string, arg?: any): Promise<any>;
59
54
  executePoll(script: ((arg: any) => any) | string | {
60
55
  main: ((arg: any) => any) | string;
@@ -65,10 +60,10 @@ export declare class Context<TDriver, TContext, TElement, TSelector> {
65
60
  executionTimeout?: number;
66
61
  pollTimeout?: number;
67
62
  }): Promise<any>;
68
- getContextElement(): Promise<Element<TDriver, TContext, TElement, TSelector>>;
69
- getScrollingElement(): Promise<Element<TDriver, TContext, TElement, TSelector>>;
70
- setScrollingElement(scrollingElement: Element<TDriver, TContext, TElement, TSelector> | TElement | Selector<TSelector>): Promise<void>;
71
- blurElement(element?: Element<TDriver, TContext, TElement, TSelector>): Promise<TElement>;
63
+ getContextElement(): Promise<Element<TDriver, TContext, TElement, TSelector> | null>;
64
+ getScrollingElement(): Promise<Element<TDriver, TContext, TElement, TSelector> | null>;
65
+ setScrollingElement(scrollingElement: Element<TDriver, TContext, TElement, TSelector> | TElement | Selector<TSelector> | undefined | null): Promise<void>;
66
+ blurElement(element?: Element<TDriver, TContext, TElement, TSelector>): Promise<TElement | null>;
72
67
  focusElement(element: Element<TDriver, TContext, TElement, TSelector>): Promise<any>;
73
68
  getRegion(): Promise<Region>;
74
69
  getClientRegion(): Promise<Region>;
@@ -83,3 +78,4 @@ export declare class Context<TDriver, TContext, TElement, TSelector> {
83
78
  private preserveContextRegions;
84
79
  private preserveScrollingRegion;
85
80
  }
81
+ export {};
@@ -2,4 +2,19 @@ import { type SpecDriver } from '../spec-driver';
2
2
  export declare function checkSpecDriver<TDriver, TContext, TElement, TSelector>(options: {
3
3
  spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
4
4
  driver: TDriver;
5
- }): Promise<any[]>;
5
+ }): Promise<({
6
+ skipped: boolean;
7
+ test: string;
8
+ error?: undefined;
9
+ } | {
10
+ success: boolean;
11
+ test: string;
12
+ error?: undefined;
13
+ } | {
14
+ test: string;
15
+ error: {
16
+ message: any;
17
+ expected: any;
18
+ actual: any;
19
+ };
20
+ })[]>;
package/types/driver.d.ts CHANGED
@@ -2,15 +2,15 @@
2
2
  import type { Size, Region } from '@applitools/utils';
3
3
  import type { ScreenOrientation, Cookie } from './types';
4
4
  import { type Selector } from './selector';
5
- import { type SpecDriver } from './spec-driver';
5
+ import { type SpecDriver, type WaitOptions } from './spec-driver';
6
6
  import { type Element } from './element';
7
7
  import { Context, type ContextReference } from './context';
8
8
  import { type Logger } from '@applitools/logger';
9
9
  import { HelperIOS } from './helper-ios';
10
10
  import { HelperAndroid } from './helper-android';
11
- declare type DriverOptions<TDriver, TContext, TElement, TSelector> = {
11
+ type DriverOptions<TDriver, TContext, TElement, TSelector> = {
12
12
  spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
13
- driver: Driver<TDriver, TContext, TElement, TSelector> | TDriver;
13
+ driver: TDriver;
14
14
  logger?: Logger;
15
15
  customConfig?: {
16
16
  useCeilForViewportSize?: boolean;
@@ -25,29 +25,29 @@ export declare class Driver<TDriver, TContext, TElement, TSelector> {
25
25
  private _logger;
26
26
  private _customConfig;
27
27
  private _helper?;
28
- private _previousWorld;
28
+ private _previousWorld?;
29
29
  protected readonly _spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
30
30
  constructor(options: DriverOptions<TDriver, TContext, TElement, TSelector>);
31
31
  get target(): TDriver;
32
32
  get currentContext(): Context<TDriver, TContext, TElement, TSelector>;
33
33
  get mainContext(): Context<TDriver, TContext, TElement, TSelector>;
34
- get helper(): HelperAndroid<TDriver, TContext, TElement, TSelector> | HelperIOS<TDriver, TContext, TElement, TSelector>;
34
+ get helper(): HelperAndroid<TDriver, TContext, TElement, TSelector> | HelperIOS<TDriver, TContext, TElement, TSelector> | null | undefined;
35
35
  get features(): {
36
- shadowSelector?: boolean;
37
- allCookies?: boolean;
38
- canExecuteOnlyFunctionScripts?: boolean;
39
- };
40
- get deviceName(): string;
41
- get platformName(): string;
42
- get platformVersion(): string | number;
43
- get browserName(): string;
44
- get browserVersion(): string | number;
45
- get userAgent(): string;
46
- get orientation(): ScreenOrientation;
36
+ shadowSelector?: boolean | undefined;
37
+ allCookies?: boolean | undefined;
38
+ canExecuteOnlyFunctionScripts?: boolean | undefined;
39
+ } | undefined;
40
+ get deviceName(): string | undefined;
41
+ get platformName(): string | undefined;
42
+ get platformVersion(): string | number | undefined;
43
+ get browserName(): string | undefined;
44
+ get browserVersion(): string | number | undefined;
45
+ get userAgent(): string | undefined;
46
+ get orientation(): ScreenOrientation | undefined;
47
47
  get pixelRatio(): number;
48
48
  get viewportScale(): number;
49
- get statusBarSize(): number;
50
- get navigationBarSize(): number;
49
+ get statusBarSize(): number | undefined;
50
+ get navigationBarSize(): number | undefined;
51
51
  get isNative(): boolean;
52
52
  get isWebView(): boolean;
53
53
  get isWeb(): boolean;
@@ -62,7 +62,7 @@ export declare class Driver<TDriver, TContext, TElement, TSelector> {
62
62
  get isEdgeLegacy(): boolean;
63
63
  get isECClient(): boolean;
64
64
  get isEC(): boolean;
65
- get sessionId(): string;
65
+ get sessionId(): string | undefined;
66
66
  get remoteHostname(): string | undefined;
67
67
  updateCurrentContext(context: Context<TDriver, TContext, TElement, TSelector>): void;
68
68
  init(): Promise<this>;
@@ -87,15 +87,16 @@ export declare class Driver<TDriver, TContext, TElement, TSelector> {
87
87
  switchToChildContext(...references: ContextReference<TDriver, TContext, TElement, TSelector>[]): Promise<Context<TDriver, TContext, TElement, TSelector>>;
88
88
  normalizeRegion(region: Region): Promise<Region>;
89
89
  getRegionInViewport(context: Context<TDriver, TContext, TElement, TSelector>, region: Region): Promise<Region>;
90
- element(selector: Selector<TSelector>): Promise<Element<TDriver, TContext, TElement, TSelector>>;
90
+ element(selector: Selector<TSelector>): Promise<Element<TDriver, TContext, TElement, TSelector> | null>;
91
91
  elements(selector: Selector<TSelector>): Promise<Element<TDriver, TContext, TElement, TSelector>[]>;
92
+ waitFor(selector: Selector<TSelector>, options?: WaitOptions): Promise<Element<TDriver, TContext, TElement, TSelector> | null>;
92
93
  execute(script: ((arg: any) => any) | string, arg?: any): Promise<any>;
93
94
  takeScreenshot(): Promise<Buffer>;
94
95
  getViewportRegion(): Promise<Region>;
95
96
  getViewportSize(): Promise<Size>;
96
97
  setViewportSize(size: Size): Promise<void>;
97
98
  getDisplaySize(): Promise<Size>;
98
- getOrientation(): Promise<'portrait' | 'landscape' | 'portrait-secondary' | 'landscape-secondary'>;
99
+ getOrientation(): Promise<ScreenOrientation>;
99
100
  setOrientation(orientation: 'portrait' | 'landscape'): Promise<void>;
100
101
  getCookies(): Promise<Cookie[]>;
101
102
  getTitle(): Promise<string>;
@@ -103,5 +104,13 @@ export declare class Driver<TDriver, TContext, TElement, TSelector> {
103
104
  visit(url: string): Promise<void>;
104
105
  }
105
106
  export declare function isDriver<TDriver>(driver: any, spec?: SpecDriver<TDriver, any, any, any>): driver is Driver<TDriver, any, any, any> | TDriver;
106
- export declare function makeDriver<TDriver, TContext, TElement, TSelector>(options: DriverOptions<TDriver, TContext, TElement, TSelector>): Promise<Driver<TDriver, TContext, TElement, TSelector>>;
107
+ export declare function makeDriver<TDriver, TContext, TElement, TSelector>(options: {
108
+ driver: TDriver | Driver<TDriver, TContext, TElement, TSelector>;
109
+ spec?: SpecDriver<TDriver, TContext, TElement, TSelector>;
110
+ logger?: Logger;
111
+ customConfig?: {
112
+ useCeilForViewportSize?: boolean;
113
+ disableHelper?: boolean;
114
+ };
115
+ }): Promise<Driver<TDriver, TContext, TElement, TSelector>>;
107
116
  export {};
@@ -3,7 +3,8 @@ import { type SpecDriver } from './spec-driver';
3
3
  import { type Context } from './context';
4
4
  import { type Selector } from './selector';
5
5
  import { type Logger } from '@applitools/logger';
6
- export declare type ElementState<TElement> = {
6
+ export type ElementReference<TElement, TSelector> = TElement | Selector<TSelector>;
7
+ type ElementState<TElement> = {
7
8
  contentSize?: Size;
8
9
  scrollOffset?: Location;
9
10
  transforms?: any;
@@ -11,28 +12,33 @@ export declare type ElementState<TElement> = {
11
12
  touchPadding?: number;
12
13
  containedElements?: Map<TElement, boolean>;
13
14
  };
15
+ type ElementOptions<TDriver, TContext, TElement, TSelector> = {
16
+ spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
17
+ context?: Context<TDriver, TContext, TElement, TSelector>;
18
+ logger: Logger;
19
+ } & ({
20
+ element: TElement;
21
+ selector?: Selector<TSelector>;
22
+ index?: number;
23
+ } | {
24
+ selector: Selector<TSelector>;
25
+ index?: number;
26
+ });
14
27
  export declare class Element<TDriver, TContext, TElement, TSelector> {
15
- private _target;
16
- private _context;
17
- private _selector;
18
- private _commonSelector?;
19
- private _index;
28
+ private _target?;
29
+ private _context?;
30
+ private _selector?;
31
+ private _commonSelector;
32
+ private _index?;
20
33
  private _state;
21
34
  private _originalOverflow;
22
35
  private _logger;
23
36
  protected readonly _spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
24
- constructor(options: {
25
- spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
26
- element?: TElement | Element<TDriver, TContext, TElement, TSelector>;
27
- context?: Context<TDriver, TContext, TElement, TSelector>;
28
- selector?: Selector<TSelector>;
29
- index?: number;
30
- logger?: Logger;
31
- });
32
- get target(): TElement;
33
- get selector(): Selector<TSelector>;
34
- get commonSelector(): Selector<never>;
35
- get index(): number;
37
+ constructor(options: ElementOptions<TDriver, TContext, TElement, TSelector>);
38
+ get target(): NonNullable<TElement>;
39
+ get selector(): Selector<TSelector> | undefined;
40
+ get commonSelector(): Selector<never> | null;
41
+ get index(): number | undefined;
36
42
  get context(): Context<TDriver, TContext, TElement, TSelector>;
37
43
  get driver(): import("./driver").Driver<TDriver, TContext, TElement, TSelector>;
38
44
  get isRef(): boolean;
@@ -48,7 +54,6 @@ export declare class Element<TDriver, TContext, TElement, TSelector> {
48
54
  maxAmountToScroll?: number;
49
55
  };
50
56
  }): Promise<Region>;
51
- getContentSizeIOS(): Promise<Region>;
52
57
  getContentSize(options?: {
53
58
  lazyLoad?: {
54
59
  scrollLength?: number;
@@ -59,7 +64,7 @@ export declare class Element<TDriver, TContext, TElement, TSelector> {
59
64
  isPager(): Promise<boolean>;
60
65
  isScrollable(): Promise<boolean>;
61
66
  isRoot(): Promise<boolean>;
62
- getShadowRoot(): Promise<TElement>;
67
+ getShadowRoot(): Promise<TElement | null>;
63
68
  getTouchPadding(): Promise<number>;
64
69
  getText(): Promise<string>;
65
70
  getAttribute(name: string): Promise<string>;
@@ -81,3 +86,5 @@ export declare class Element<TDriver, TContext, TElement, TSelector> {
81
86
  withRefresh<TResult>(operation: (...args: any[]) => TResult): Promise<TResult>;
82
87
  toJSON(): TElement;
83
88
  }
89
+ export declare function isElementReference<TElement, TSelector>(reference: any, spec?: SpecDriver<unknown, unknown, TElement, TSelector>): reference is ElementReference<TElement, TSelector>;
90
+ export {};
@@ -3,12 +3,14 @@ export declare class MockDriver {
3
3
  mockScript(scriptMatcher: any, resultGenerator: any): void;
4
4
  mockElement(selector: any, state: any): any;
5
5
  mockElements(nodes: any, { parentId, parentContextId, parentRootId }?: {
6
- parentId?: any;
7
- parentContextId?: any;
8
- parentRootId?: any;
6
+ parentId?: null | undefined;
7
+ parentContextId?: null | undefined;
8
+ parentRootId?: null | undefined;
9
9
  }): void;
10
10
  mockSelector(selector: any, element: any): void;
11
- wrapMethod(name: any, wrapper: any): void;
11
+ wrapMethod<TName extends {
12
+ [K in keyof MockDriver]: MockDriver[K] extends (...args: any[]) => any ? K : never;
13
+ }[keyof MockDriver]>(name: TName, wrapper: (method: this[TName], thisArg: this, args: Parameters<this[TName]>) => ReturnType<this[TName]>): void;
12
14
  unwrapMethod(name: any): void;
13
15
  get info(): {
14
16
  isMobile: boolean;
@@ -19,7 +21,7 @@ export declare class MockDriver {
19
21
  browserName: any;
20
22
  browserVersion: any;
21
23
  };
22
- executeScript(script: any, args?: any[]): Promise<any>;
24
+ executeScript(script: any, args?: never[]): Promise<any>;
23
25
  findElement(selector: any, rootElement?: any): Promise<any>;
24
26
  findElements(selector: any, rootElement?: any): Promise<any>;
25
27
  switchToFrame(reference: any): Promise<this>;
@@ -29,7 +31,7 @@ export declare class MockDriver {
29
31
  getUrl(): Promise<any>;
30
32
  getTitle(): Promise<any>;
31
33
  visit(url: any): Promise<void>;
32
- takeScreenshot(): Promise<void>;
34
+ takeScreenshot(): Promise<unknown>;
33
35
  toString(): string;
34
36
  toJSON(): string;
35
37
  }
@@ -1,13 +1,13 @@
1
1
  /// <reference types="node" />
2
2
  import type { Size } from '@applitools/utils';
3
3
  import { type DriverInfo } from '../spec-driver';
4
- export declare type Driver = any;
5
- export declare type Element = any;
6
- export declare type Selector = string | {
4
+ export type Driver = any;
5
+ export type Element = any;
6
+ export type Selector = string | {
7
7
  using: string;
8
8
  value: string;
9
9
  };
10
- declare type CommonSelector = string | {
10
+ type CommonSelector = string | {
11
11
  selector: string;
12
12
  type?: string;
13
13
  };
@@ -17,7 +17,7 @@ export declare function isSelector(selector: any): selector is Selector;
17
17
  export declare function transformSelector(selector: Selector | {
18
18
  selector: Selector;
19
19
  }): Selector;
20
- export declare function untransformSelector(selector: Selector): CommonSelector;
20
+ export declare function untransformSelector(selector: Selector): CommonSelector | null;
21
21
  export declare function extractSelector(element: Element): any;
22
22
  export declare function isStaleElementError(): boolean;
23
23
  export declare function isEqualElements(_driver: Driver, element1: Element, element2: Element): Promise<boolean>;
@@ -11,7 +11,7 @@ export declare class HelperAndroid<TDriver, TContext, TElement, TSelector> {
11
11
  }): Promise<HelperAndroid<TDriver, TContext, TElement, TSelector> | null>;
12
12
  private readonly _spec;
13
13
  private readonly _input;
14
- private readonly _action?;
14
+ private readonly _action;
15
15
  private readonly _legacy;
16
16
  private readonly _supportAsync;
17
17
  private _logger;
@@ -19,10 +19,10 @@ export declare class HelperAndroid<TDriver, TContext, TElement, TSelector> {
19
19
  constructor(options: {
20
20
  spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
21
21
  input: Element<TDriver, TContext, TElement, TSelector>;
22
- action?: Element<TDriver, TContext, TElement, TSelector>;
22
+ action: Element<TDriver, TContext, TElement, TSelector> | null;
23
23
  legacy: boolean;
24
- logger?: any;
25
- supportAsync?: boolean;
24
+ supportAsync: boolean;
25
+ logger: Logger;
26
26
  });
27
27
  private _getElementId;
28
28
  private _command;
@@ -32,9 +32,9 @@ export declare class HelperAndroid<TDriver, TContext, TElement, TSelector> {
32
32
  waitingTime?: number;
33
33
  maxAmountToScroll?: number;
34
34
  };
35
- }): Promise<Region>;
36
- getTouchPadding(): Promise<number>;
37
- getRegion(element: Element<TDriver, TContext, TElement, TSelector>): Promise<Region>;
35
+ }): Promise<Region | null>;
36
+ getTouchPadding(): Promise<number | undefined>;
37
+ getRegion(element: Element<TDriver, TContext, TElement, TSelector>): Promise<Region | null>;
38
38
  scrollToTop(element: Element<TDriver, TContext, TElement, TSelector>): Promise<void>;
39
39
  scrollBy(element: Element<TDriver, TContext, TElement, TSelector>, offset: Location): Promise<void>;
40
40
  }
@@ -18,7 +18,7 @@ export declare class HelperIOS<TDriver, TContext, TElement, TSelector> {
18
18
  driver: Driver<TDriver, TContext, TElement, TSelector>;
19
19
  element: Element<TDriver, TContext, TElement, TSelector>;
20
20
  spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
21
- logger?: Logger;
21
+ logger: Logger;
22
22
  });
23
- getContentRegion(element: Element<TDriver, TContext, TElement, TSelector>): Promise<Region>;
23
+ getContentRegion(element: Element<TDriver, TContext, TElement, TSelector>): Promise<Region | null>;
24
24
  }
@@ -1,4 +1,4 @@
1
- export declare type Selector<TSelector = never> = TSelector | string | {
1
+ export type Selector<TSelector = never> = TSelector | string | {
2
2
  selector: TSelector | string;
3
3
  type?: string;
4
4
  child?: Selector<TSelector>;
@@ -6,4 +6,4 @@ export declare type Selector<TSelector = never> = TSelector | string | {
6
6
  frame?: Selector<TSelector>;
7
7
  fallback?: Selector<TSelector>;
8
8
  };
9
- export declare type CommonSelector = Selector;
9
+ export type CommonSelector = Selector;