@applitools/driver 1.10.3 → 1.10.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -14,6 +14,7 @@ function parseCapabilities(capabilities) {
14
14
  platformVersion: capabilities.platformVersion || undefined,
15
15
  isW3C: isW3C(capabilities),
16
16
  isMobile: isMobile(capabilities),
17
+ isChrome: isChrome(capabilities),
17
18
  };
18
19
  if (info.isMobile) {
19
20
  info.deviceName = ((_h = (_g = capabilities.desired) === null || _g === void 0 ? void 0 : _g.deviceName) !== null && _h !== void 0 ? _h : capabilities.deviceName) || undefined;
@@ -45,7 +46,7 @@ function isAppium(capabilities) {
45
46
  return (Boolean(capabilities.automationName || capabilities.deviceName || capabilities.appiumVersion) ||
46
47
  Object.keys(capabilities).some(cap => cap.startsWith('appium:')));
47
48
  }
48
- function _isChrome(capabilities) {
49
+ function isChrome(capabilities) {
49
50
  return Boolean(capabilities.chrome || capabilities['goog:chromeOptions']);
50
51
  }
51
52
  function _isFirefox(capabilities) {
package/dist/context.js CHANGED
@@ -24,9 +24,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.Context = void 0;
27
+ const element_1 = require("./element");
27
28
  const utils = __importStar(require("@applitools/utils"));
28
29
  const specUtils = __importStar(require("./spec-utils"));
29
- const element_1 = require("./element");
30
30
  const snippets = require('@applitools/snippets');
31
31
  class Context {
32
32
  constructor(options) {
@@ -358,9 +358,15 @@ class Context {
358
358
  this._scrollingElement = await this.element(this._scrollingElement);
359
359
  }
360
360
  else if (this.driver.isWeb) {
361
- const isIOS = this.driver.isIOS;
362
- const selector = isIOS ? 'html' : await this.execute(snippets.getDocumentScrollingElement);
363
- this._logger.log(`default SRE is ${selector}${isIOS ? ' (because Safari on iOS)' : ''}`);
361
+ let selector;
362
+ if (this.driver.isIOS && !this.driver.isEmulation) {
363
+ selector = 'html';
364
+ this._logger.log(`Using hardcoded default scrolling element for Safari on iOS - "${selector}"`);
365
+ }
366
+ else {
367
+ selector = await this.execute(snippets.getDocumentScrollingElement);
368
+ this._logger.log(`Using dynamic default scrolling element - "${selector}"`);
369
+ }
364
370
  this._scrollingElement = await this.element({ type: 'css', selector });
365
371
  }
366
372
  else {
package/dist/driver.js CHANGED
@@ -24,14 +24,14 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.makeDriver = exports.Driver = void 0;
27
- const logger_1 = require("@applitools/logger");
28
- const utils = __importStar(require("@applitools/utils"));
29
- const specUtils = __importStar(require("./spec-utils"));
30
27
  const context_1 = require("./context");
28
+ const logger_1 = require("@applitools/logger");
31
29
  const helper_ios_1 = require("./helper-ios");
32
30
  const helper_android_1 = require("./helper-android");
33
31
  const user_agent_1 = require("./user-agent");
34
32
  const capabilities_1 = require("./capabilities");
33
+ const utils = __importStar(require("@applitools/utils"));
34
+ const specUtils = __importStar(require("./spec-utils"));
35
35
  const snippets = require('@applitools/snippets');
36
36
  // eslint-disable-next-line
37
37
  class Driver {
@@ -126,6 +126,10 @@ class Driver {
126
126
  get isWeb() {
127
127
  return this.isWebView || !this.isNative;
128
128
  }
129
+ get isEmulation() {
130
+ var _a, _b;
131
+ return (_b = (_a = this._driverInfo) === null || _a === void 0 ? void 0 : _a.isEmulation) !== null && _b !== void 0 ? _b : false;
132
+ }
129
133
  get isMobile() {
130
134
  var _a, _b;
131
135
  return (_b = (_a = this._driverInfo) === null || _a === void 0 ? void 0 : _a.isMobile) !== null && _b !== void 0 ? _b : false;
@@ -160,7 +164,7 @@ class Driver {
160
164
  if (this.isMobile) {
161
165
  this._driverInfo.orientation =
162
166
  (_g = (await this.getOrientation().catch(() => undefined))) !== null && _g !== void 0 ? _g : this._driverInfo.orientation;
163
- const world = this.isMobile && (await this.getCurrentWorld());
167
+ const world = await this.getCurrentWorld();
164
168
  this._driverInfo.isWebView = !!(world === null || world === void 0 ? void 0 : world.isWebView);
165
169
  }
166
170
  if (this.isWeb) {
@@ -182,9 +186,10 @@ class Driver {
182
186
  }
183
187
  if (!this._driverInfo.isMobile && (this.isAndroid || this.isIOS)) {
184
188
  this._driverInfo.isMobile = true;
189
+ this._driverInfo.isEmulation = this._driverInfo.isChrome;
185
190
  }
186
191
  (_s = (_11 = this._driverInfo).features) !== null && _s !== void 0 ? _s : (_11.features = {});
187
- (_t = (_12 = this._driverInfo.features).allCookies) !== null && _t !== void 0 ? _t : (_12.allCookies = /chrome/i.test(this._driverInfo.browserName) && !this._driverInfo.isMobile);
192
+ (_t = (_12 = this._driverInfo.features).allCookies) !== null && _t !== void 0 ? _t : (_12.allCookies = this._driverInfo.isChrome || (/chrome/i.test(this._driverInfo.browserName) && !this._driverInfo.isMobile));
188
193
  }
189
194
  else {
190
195
  // this value always excludes the height of the navigation bar, and sometimes it also excludes the height of the status bar
package/dist/index.js CHANGED
@@ -27,7 +27,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.specUtils = void 0;
30
+ __exportStar(require("./spec-driver"), exports);
30
31
  __exportStar(require("./driver"), exports);
31
32
  __exportStar(require("./context"), exports);
32
33
  __exportStar(require("./element"), exports);
34
+ __exportStar(require("./selector"), exports);
35
+ __exportStar(require("./types"), exports);
33
36
  exports.specUtils = __importStar(require("./spec-utils"));
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@applitools/driver",
3
- "version": "1.10.3",
3
+ "version": "1.10.4",
4
4
  "description": "Applitools universal framework wrapper",
5
5
  "keywords": [
6
6
  "applitools",
@@ -87,15 +87,14 @@
87
87
  }
88
88
  },
89
89
  "dependencies": {
90
- "@applitools/logger": "1.1.24",
90
+ "@applitools/logger": "1.1.25",
91
91
  "@applitools/snippets": "2.4.5",
92
- "@applitools/types": "1.5.17",
93
92
  "@applitools/utils": "1.3.12",
94
93
  "semver": "7.3.7"
95
94
  },
96
95
  "devDependencies": {
97
96
  "@applitools/bongo": "^2.2.0",
98
- "@applitools/scripts": "^1.1.0",
97
+ "@applitools/scripts": "^1.2.0",
99
98
  "@types/mocha": "^9.1.1",
100
99
  "@types/node": "^17.0.31",
101
100
  "@typescript-eslint/eslint-plugin": "^5.22.0",
@@ -1,4 +1,4 @@
1
- import type * as types from '@applitools/types';
1
+ import { type DriverInfo } from './spec-driver';
2
2
  declare type Capabilities = Record<string, any>;
3
- export declare function parseCapabilities(capabilities: Capabilities): types.DriverInfo;
3
+ export declare function parseCapabilities(capabilities: Capabilities): DriverInfo;
4
4
  export {};
@@ -1,18 +1,20 @@
1
- import type * as types from '@applitools/types';
2
- import { type Logger } from '@applitools/logger';
1
+ import type { Location, Size, Region, Cookie } from './types';
2
+ import { type SpecDriver, type WaitOptions } from './spec-driver';
3
3
  import { type Driver } from './driver';
4
+ import { type Selector } from './selector';
5
+ import { type Logger } from '@applitools/logger';
4
6
  import { Element } from './element';
5
- export declare type ContextReference<TDriver, TContext, TElement, TSelector> = Context<TDriver, TContext, TElement, TSelector> | Element<TDriver, TContext, TElement, TSelector> | TElement | types.Selector<TSelector> | string | number;
7
+ export declare type ContextReference<TDriver, TContext, TElement, TSelector> = Context<TDriver, TContext, TElement, TSelector> | Element<TDriver, TContext, TElement, TSelector> | TElement | Selector<TSelector> | string | number;
6
8
  export declare type ContextPlain<TDriver, TContext, TElement, TSelector> = ContextReference<TDriver, TContext, TElement, TSelector> | {
7
9
  reference: ContextReference<TDriver, TContext, TElement, TSelector>;
8
10
  scrollingElement?: Element<TDriver, TContext, TElement, TSelector>;
9
11
  parent?: ContextPlain<TDriver, TContext, TElement, TSelector>;
10
12
  };
11
13
  export declare type ContextState = {
12
- region?: types.Region;
13
- clientRegion?: types.Region;
14
- scrollingRegion?: types.Region;
15
- innerOffset?: types.Location;
14
+ region?: Region;
15
+ clientRegion?: Region;
16
+ scrollingRegion?: Region;
17
+ innerOffset?: Location;
16
18
  };
17
19
  export declare class Context<TDriver, TContext, TElement, TSelector> {
18
20
  private _target;
@@ -24,9 +26,9 @@ export declare class Context<TDriver, TContext, TElement, TSelector> {
24
26
  private _state;
25
27
  private _logger;
26
28
  private _isReference;
27
- protected readonly _spec: types.SpecDriver<TDriver, TContext, TElement, TSelector>;
29
+ protected readonly _spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
28
30
  constructor(options: {
29
- spec: types.SpecDriver<TDriver, TContext, TElement, TSelector>;
31
+ spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
30
32
  context?: TContext | Context<TDriver, TContext, TElement, TSelector>;
31
33
  driver?: Driver<TDriver, TContext, TElement, TSelector>;
32
34
  parent?: Context<TDriver, TContext, TElement, TSelector>;
@@ -48,29 +50,29 @@ export declare class Context<TDriver, TContext, TElement, TSelector> {
48
50
  focus(): Promise<this>;
49
51
  equals(context: Context<TDriver, TContext, TElement, TSelector> | Element<TDriver, TContext, TElement, TSelector>): Promise<boolean>;
50
52
  context(reference: ContextPlain<TDriver, TContext, TElement, TSelector>): Promise<Context<TDriver, TContext, TElement, TSelector>>;
51
- root(selector: types.Selector<TSelector>): Promise<{
53
+ root(selector: Selector<TSelector>): Promise<{
52
54
  context: Context<TDriver, TContext, TElement, TSelector>;
53
55
  shadow?: Element<TDriver, TContext, TElement, TSelector>;
54
- selector: types.Selector<TSelector>;
56
+ selector: Selector<TSelector>;
55
57
  }>;
56
- element(elementOrSelector: TElement | types.Selector<TSelector>): Promise<Element<TDriver, TContext, TElement, TSelector>>;
57
- elements(selectorOrElement: types.Selector<TSelector> | TElement): Promise<Element<TDriver, TContext, TElement, TSelector>[]>;
58
- waitFor(selector: types.Selector<TSelector>, options?: types.WaitOptions): Promise<Element<TDriver, TContext, TElement, TSelector>>;
58
+ element(elementOrSelector: TElement | Selector<TSelector>): Promise<Element<TDriver, TContext, TElement, TSelector>>;
59
+ elements(selectorOrElement: Selector<TSelector> | TElement): Promise<Element<TDriver, TContext, TElement, TSelector>[]>;
60
+ waitFor(selector: Selector<TSelector>, options?: WaitOptions): Promise<Element<TDriver, TContext, TElement, TSelector>>;
59
61
  execute(script: ((args: any) => any) | string, arg?: any): Promise<any>;
60
62
  getContextElement(): Promise<Element<TDriver, TContext, TElement, TSelector>>;
61
63
  getScrollingElement(): Promise<Element<TDriver, TContext, TElement, TSelector>>;
62
- setScrollingElement(scrollingElement: Element<TDriver, TContext, TElement, TSelector> | TElement | types.Selector<TSelector>): Promise<void>;
64
+ setScrollingElement(scrollingElement: Element<TDriver, TContext, TElement, TSelector> | TElement | Selector<TSelector>): Promise<void>;
63
65
  blurElement(element?: Element<TDriver, TContext, TElement, TSelector>): Promise<TElement>;
64
66
  focusElement(element: Element<TDriver, TContext, TElement, TSelector>): Promise<any>;
65
- getRegion(): Promise<types.Region>;
66
- getClientRegion(): Promise<types.Region>;
67
- getScrollingRegion(): Promise<types.Region>;
68
- getContentSize(): Promise<types.Size>;
69
- getInnerOffset(): Promise<types.Location>;
70
- getLocationInMainContext(): Promise<types.Location>;
71
- getLocationInViewport(): Promise<types.Location>;
72
- getRegionInViewport(region: types.Region): Promise<types.Region>;
73
- getCookies(): Promise<types.Cookie[]>;
67
+ getRegion(): Promise<Region>;
68
+ getClientRegion(): Promise<Region>;
69
+ getScrollingRegion(): Promise<Region>;
70
+ getContentSize(): Promise<Size>;
71
+ getInnerOffset(): Promise<Location>;
72
+ getLocationInMainContext(): Promise<Location>;
73
+ getLocationInViewport(): Promise<Location>;
74
+ getRegionInViewport(region: Region): Promise<Region>;
75
+ getCookies(): Promise<Cookie[]>;
74
76
  private preserveInnerOffset;
75
77
  private preserveContextRegions;
76
78
  private preserveScrollingRegion;
@@ -1,4 +1,4 @@
1
- import type { SpecDriver } from '@applitools/types';
1
+ 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;
package/types/driver.d.ts CHANGED
@@ -1,15 +1,20 @@
1
1
  /// <reference types="node" />
2
- import type * as types from '@applitools/types';
2
+ import type { Size, Region, ScreenOrientation, Cookie } from './types';
3
+ import { type Selector } from './selector';
4
+ import { type SpecDriver } from './spec-driver';
5
+ import { type Element } from './element';
6
+ import { Context, type ContextReference } from './context';
3
7
  import { type Logger } from '@applitools/logger';
4
- import { Context, ContextReference } from './context';
5
- import { Element } from './element';
6
8
  import { HelperIOS } from './helper-ios';
7
9
  import { HelperAndroid } from './helper-android';
8
10
  declare type DriverOptions<TDriver, TContext, TElement, TSelector> = {
9
- spec: types.SpecDriver<TDriver, TContext, TElement, TSelector>;
11
+ spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
10
12
  driver: Driver<TDriver, TContext, TElement, TSelector> | TDriver;
11
13
  logger?: Logger;
12
- customConfig?: types.CustomDriverConfig;
14
+ customConfig?: {
15
+ useCeilForViewportSize?: boolean;
16
+ disableHelper?: boolean;
17
+ };
13
18
  };
14
19
  export declare class Driver<TDriver, TContext, TElement, TSelector> {
15
20
  private _target;
@@ -20,7 +25,7 @@ export declare class Driver<TDriver, TContext, TElement, TSelector> {
20
25
  private _customConfig;
21
26
  private _helper?;
22
27
  private _previousWorld;
23
- protected readonly _spec: types.SpecDriver<TDriver, TContext, TElement, TSelector>;
28
+ protected readonly _spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
24
29
  constructor(options: DriverOptions<TDriver, TContext, TElement, TSelector>);
25
30
  get target(): TDriver;
26
31
  get currentContext(): Context<TDriver, TContext, TElement, TSelector>;
@@ -36,7 +41,7 @@ export declare class Driver<TDriver, TContext, TElement, TSelector> {
36
41
  get browserName(): string;
37
42
  get browserVersion(): string | number;
38
43
  get userAgent(): string;
39
- get orientation(): 'portrait' | 'landscape' | 'portrait-secondary' | 'landscape-secondary';
44
+ get orientation(): ScreenOrientation;
40
45
  get pixelRatio(): number;
41
46
  get viewportScale(): number;
42
47
  get statusBarSize(): number;
@@ -44,6 +49,7 @@ export declare class Driver<TDriver, TContext, TElement, TSelector> {
44
49
  get isNative(): boolean;
45
50
  get isWebView(): boolean;
46
51
  get isWeb(): boolean;
52
+ get isEmulation(): boolean;
47
53
  get isMobile(): boolean;
48
54
  get isIOS(): boolean;
49
55
  get isAndroid(): boolean;
@@ -57,25 +63,31 @@ export declare class Driver<TDriver, TContext, TElement, TSelector> {
57
63
  goHome?: boolean;
58
64
  }): Promise<void>;
59
65
  getWorlds(attempt?: number): Promise<string[]>;
60
- getCurrentWorld(): Promise<types.WorldInfo>;
66
+ getCurrentWorld(): Promise<{
67
+ id: string;
68
+ home: string;
69
+ next?: string;
70
+ isNative: boolean;
71
+ isWebView: boolean;
72
+ }>;
61
73
  refreshContexts(): Promise<Context<TDriver, TContext, TElement, TSelector>>;
62
74
  switchTo(context: Context<TDriver, TContext, TElement, TSelector>): Promise<Context<TDriver, TContext, TElement, TSelector>>;
63
75
  switchToMainContext(): Promise<Context<TDriver, TContext, TElement, TSelector>>;
64
76
  switchToParentContext(elevation?: number): Promise<Context<TDriver, TContext, TElement, TSelector>>;
65
77
  switchToChildContext(...references: ContextReference<TDriver, TContext, TElement, TSelector>[]): Promise<Context<TDriver, TContext, TElement, TSelector>>;
66
- normalizeRegion(region: types.Region): Promise<types.Region>;
67
- getRegionInViewport(context: Context<TDriver, TContext, TElement, TSelector>, region: types.Region): Promise<types.Region>;
68
- element(selector: types.Selector<TSelector>): Promise<Element<TDriver, TContext, TElement, TSelector>>;
69
- elements(selector: types.Selector<TSelector>): Promise<Element<TDriver, TContext, TElement, TSelector>[]>;
78
+ normalizeRegion(region: Region): Promise<Region>;
79
+ getRegionInViewport(context: Context<TDriver, TContext, TElement, TSelector>, region: Region): Promise<Region>;
80
+ element(selector: Selector<TSelector>): Promise<Element<TDriver, TContext, TElement, TSelector>>;
81
+ elements(selector: Selector<TSelector>): Promise<Element<TDriver, TContext, TElement, TSelector>[]>;
70
82
  execute(script: ((arg: any) => any) | string, arg?: any): Promise<any>;
71
83
  takeScreenshot(): Promise<Buffer>;
72
- getViewportRegion(): Promise<types.Region>;
73
- getViewportSize(): Promise<types.Size>;
74
- setViewportSize(size: types.Size): Promise<void>;
75
- getDisplaySize(): Promise<types.Size>;
84
+ getViewportRegion(): Promise<Region>;
85
+ getViewportSize(): Promise<Size>;
86
+ setViewportSize(size: Size): Promise<void>;
87
+ getDisplaySize(): Promise<Size>;
76
88
  getOrientation(): Promise<'portrait' | 'landscape' | 'portrait-secondary' | 'landscape-secondary'>;
77
89
  setOrientation(orientation: 'portrait' | 'landscape'): Promise<void>;
78
- getCookies(): Promise<types.Cookie[]>;
90
+ getCookies(): Promise<Cookie[]>;
79
91
  getTitle(): Promise<string>;
80
92
  getUrl(): Promise<string>;
81
93
  visit(url: string): Promise<void>;
@@ -1,9 +1,11 @@
1
- import type * as types from '@applitools/types';
2
- import { type Logger } from '@applitools/logger';
1
+ import type { Location, Size, Region } from './types';
2
+ import { type SpecDriver } from './spec-driver';
3
3
  import { type Context } from './context';
4
+ import { type Selector } from './selector';
5
+ import { type Logger } from '@applitools/logger';
4
6
  export declare type ElementState<TElement> = {
5
- contentSize?: types.Size;
6
- scrollOffset?: types.Location;
7
+ contentSize?: Size;
8
+ scrollOffset?: Location;
7
9
  transforms?: any;
8
10
  attributes?: Record<string, string | Error>;
9
11
  touchPadding?: number;
@@ -18,18 +20,18 @@ export declare class Element<TDriver, TContext, TElement, TSelector> {
18
20
  private _state;
19
21
  private _originalOverflow;
20
22
  private _logger;
21
- protected readonly _spec: types.SpecDriver<TDriver, TContext, TElement, TSelector>;
23
+ protected readonly _spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
22
24
  constructor(options: {
23
- spec: types.SpecDriver<TDriver, TContext, TElement, TSelector>;
25
+ spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
24
26
  element?: TElement | Element<TDriver, TContext, TElement, TSelector>;
25
27
  context?: Context<TDriver, TContext, TElement, TSelector>;
26
- selector?: types.Selector<TSelector>;
28
+ selector?: Selector<TSelector>;
27
29
  index?: number;
28
30
  logger?: Logger;
29
31
  });
30
32
  get target(): TElement;
31
- get selector(): types.Selector<TSelector>;
32
- get commonSelector(): types.Selector<never>;
33
+ get selector(): Selector<TSelector>;
34
+ get commonSelector(): Selector<never>;
33
35
  get index(): number;
34
36
  get context(): Context<TDriver, TContext, TElement, TSelector>;
35
37
  get driver(): import("./driver").Driver<TDriver, TContext, TElement, TSelector>;
@@ -37,15 +39,15 @@ export declare class Element<TDriver, TContext, TElement, TSelector> {
37
39
  equals(element: Element<TDriver, TContext, TElement, TSelector> | TElement): Promise<boolean>;
38
40
  contains(innerElement: Element<TDriver, TContext, TElement, TSelector> | TElement): Promise<boolean>;
39
41
  init(context: Context<TDriver, TContext, TElement, TSelector>): Promise<this>;
40
- getRegion(): Promise<types.Region>;
41
- getClientRegion(): Promise<types.Region>;
42
+ getRegion(): Promise<Region>;
43
+ getClientRegion(): Promise<Region>;
42
44
  getContentSize(options?: {
43
45
  lazyLoad?: {
44
46
  scrollLength?: number;
45
47
  waitingTime?: number;
46
48
  maxAmountToScroll?: number;
47
49
  };
48
- }): Promise<types.Size>;
50
+ }): Promise<Size>;
49
51
  isPager(): Promise<boolean>;
50
52
  isScrollable(): Promise<boolean>;
51
53
  isRoot(): Promise<boolean>;
@@ -54,13 +56,13 @@ export declare class Element<TDriver, TContext, TElement, TSelector> {
54
56
  getText(): Promise<string>;
55
57
  getAttribute(name: string): Promise<string>;
56
58
  setAttribute(name: string, value: string): Promise<void>;
57
- scrollTo(offset: types.Location, options?: {
59
+ scrollTo(offset: Location, options?: {
58
60
  force: boolean;
59
- }): Promise<types.Location>;
60
- translateTo(offset: types.Location): Promise<types.Location>;
61
- getScrollOffset(): Promise<types.Location>;
62
- getTranslateOffset(): Promise<types.Location>;
63
- getInnerOffset(): Promise<types.Location>;
61
+ }): Promise<Location>;
62
+ translateTo(offset: Location): Promise<Location>;
63
+ getScrollOffset(): Promise<Location>;
64
+ getTranslateOffset(): Promise<Location>;
65
+ getInnerOffset(): Promise<Location>;
64
66
  click(): Promise<void>;
65
67
  type(value: string): Promise<void>;
66
68
  preserveState(): Promise<ElementState<TElement>>;
@@ -1,5 +1,6 @@
1
1
  /// <reference types="node" />
2
- import type { Size, DriverInfo } from '@applitools/types';
2
+ import { type Size } from '../types';
3
+ import { type DriverInfo } from '../spec-driver';
3
4
  export declare type Driver = any;
4
5
  export declare type Element = any;
5
6
  export declare type Selector = string | {
@@ -1,10 +1,11 @@
1
- import type * as types from '@applitools/types';
1
+ import type { Location, Region } from './types';
2
+ import { type SpecDriver } from './spec-driver';
3
+ import { type Driver } from './driver';
4
+ import { type Element } from './element';
2
5
  import { type Logger } from '@applitools/logger';
3
- import type { Driver } from './driver';
4
- import type { Element } from './element';
5
6
  export declare class HelperAndroid<TDriver, TContext, TElement, TSelector> {
6
7
  static make<TDriver, TContext, TElement, TSelector>(options: {
7
- spec: types.SpecDriver<TDriver, TContext, TElement, TSelector>;
8
+ spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
8
9
  driver: Driver<TDriver, TContext, TElement, TSelector>;
9
10
  logger: Logger;
10
11
  }): Promise<HelperAndroid<TDriver, TContext, TElement, TSelector> | null>;
@@ -16,7 +17,7 @@ export declare class HelperAndroid<TDriver, TContext, TElement, TSelector> {
16
17
  private _logger;
17
18
  readonly name: 'android' | 'android-legacy';
18
19
  constructor(options: {
19
- spec: types.SpecDriver<TDriver, TContext, TElement, TSelector>;
20
+ spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
20
21
  input: Element<TDriver, TContext, TElement, TSelector>;
21
22
  action?: Element<TDriver, TContext, TElement, TSelector>;
22
23
  legacy: boolean;
@@ -31,9 +32,9 @@ export declare class HelperAndroid<TDriver, TContext, TElement, TSelector> {
31
32
  waitingTime?: number;
32
33
  maxAmountToScroll?: number;
33
34
  };
34
- }): Promise<types.Region>;
35
+ }): Promise<Region>;
35
36
  getTouchPadding(): Promise<number>;
36
- getRegion(element: Element<TDriver, TContext, TElement, TSelector>): Promise<types.Region>;
37
+ getRegion(element: Element<TDriver, TContext, TElement, TSelector>): Promise<Region>;
37
38
  scrollToTop(element: Element<TDriver, TContext, TElement, TSelector>): Promise<void>;
38
- scrollBy(element: Element<TDriver, TContext, TElement, TSelector>, offset: types.Location): Promise<void>;
39
+ scrollBy(element: Element<TDriver, TContext, TElement, TSelector>, offset: Location): Promise<void>;
39
40
  }
@@ -1,10 +1,11 @@
1
- import type * as types from '@applitools/types';
1
+ import type { Region } from './types';
2
+ import { type SpecDriver } from './spec-driver';
3
+ import { type Driver } from './driver';
4
+ import { type Element } from './element';
2
5
  import { type Logger } from '@applitools/logger';
3
- import type { Driver } from './driver';
4
- import type { Element } from './element';
5
6
  export declare class HelperIOS<TDriver, TContext, TElement, TSelector> {
6
7
  static make<TDriver, TContext, TElement, TSelector>(options: {
7
- spec: types.SpecDriver<TDriver, TContext, TElement, TSelector>;
8
+ spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
8
9
  driver: Driver<TDriver, TContext, TElement, TSelector>;
9
10
  logger: Logger;
10
11
  }): Promise<HelperIOS<TDriver, TContext, TElement, TSelector> | null>;
@@ -16,8 +17,8 @@ export declare class HelperIOS<TDriver, TContext, TElement, TSelector> {
16
17
  constructor(options: {
17
18
  driver: Driver<TDriver, TContext, TElement, TSelector>;
18
19
  element: Element<TDriver, TContext, TElement, TSelector>;
19
- spec: types.SpecDriver<TDriver, TContext, TElement, TSelector>;
20
+ spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
20
21
  logger?: Logger;
21
22
  });
22
- getContentRegion(element: Element<TDriver, TContext, TElement, TSelector>): Promise<types.Region>;
23
+ getContentRegion(element: Element<TDriver, TContext, TElement, TSelector>): Promise<Region>;
23
24
  }
package/types/index.d.ts CHANGED
@@ -1,4 +1,7 @@
1
+ export * from './spec-driver';
1
2
  export * from './driver';
2
3
  export * from './context';
3
4
  export * from './element';
5
+ export * from './selector';
6
+ export * from './types';
4
7
  export * as specUtils from './spec-utils';
@@ -0,0 +1,7 @@
1
+ export declare type Selector<TSelector = never> = TSelector | string | {
2
+ selector: TSelector | string;
3
+ type?: string;
4
+ shadow?: Selector<TSelector>;
5
+ frame?: Selector<TSelector>;
6
+ };
7
+ export declare type CommonSelector = Selector;
@@ -0,0 +1,97 @@
1
+ /// <reference types="node" />
2
+ import type { Location, Size, Region, ScreenOrientation, Cookie } from './types';
3
+ import { type Selector } from './selector';
4
+ export declare type DriverInfo = {
5
+ sessionId?: string;
6
+ browserName?: string;
7
+ browserVersion?: string;
8
+ platformName?: string;
9
+ platformVersion?: string;
10
+ deviceName?: string;
11
+ userAgent?: string;
12
+ viewportLocation?: Location;
13
+ viewportSize?: Size;
14
+ displaySize?: Size;
15
+ orientation?: ScreenOrientation;
16
+ pixelRatio?: number;
17
+ viewportScale?: number;
18
+ safeArea?: Region;
19
+ statusBarSize?: number;
20
+ navigationBarSize?: number;
21
+ isW3C?: boolean;
22
+ isChrome?: boolean;
23
+ isEmulation?: boolean;
24
+ isMobile?: boolean;
25
+ isNative?: boolean;
26
+ isAndroid?: boolean;
27
+ isIOS?: boolean;
28
+ isWebView?: boolean;
29
+ features?: {
30
+ shadowSelector?: boolean;
31
+ allCookies?: boolean;
32
+ };
33
+ };
34
+ export declare type WaitOptions = {
35
+ state?: 'exist' | 'visible';
36
+ interval?: number;
37
+ timeout?: number;
38
+ };
39
+ export interface SpecDriver<TDriver, TContext, TElement, TSelector> {
40
+ isDriver(driver: any): driver is TDriver;
41
+ isContext?(context: any): context is TContext;
42
+ isElement(element: any): element is TElement;
43
+ isSelector(selector: any): selector is TSelector;
44
+ transformDriver?(driver: any): TDriver;
45
+ transformElement?(element: any): TElement;
46
+ transformSelector?(selector: Selector<TSelector>): TSelector;
47
+ untransformSelector?(selector: TSelector | Selector<TSelector>): Selector;
48
+ extractContext?(element: TDriver | TContext): TContext;
49
+ extractSelector?(element: TElement): TSelector;
50
+ isStaleElementError(error: any, selector?: TSelector): boolean;
51
+ isEqualElements?(context: TContext, element1: TElement, element2: TElement): Promise<boolean>;
52
+ mainContext(context: TContext): Promise<TContext>;
53
+ parentContext?(context: TContext): Promise<TContext>;
54
+ childContext(context: TContext, element: TElement): Promise<TContext>;
55
+ executeScript(context: TContext, script: ((arg?: any) => any) | string, arg?: any): Promise<any>;
56
+ findElement(context: TContext, selector: TSelector, parent?: TElement): Promise<TElement | null>;
57
+ findElements(context: TContext, selector: TSelector, parent?: TElement): Promise<TElement[]>;
58
+ waitForSelector?(context: TContext, selector: TSelector, parent?: TElement, options?: WaitOptions): Promise<TElement | null>;
59
+ setWindowSize?(driver: TDriver, size: Size): Promise<void>;
60
+ getWindowSize?(driver: TDriver): Promise<Size>;
61
+ setViewportSize?(driver: TDriver, size: Size): Promise<void>;
62
+ getViewportSize?(driver: TDriver): Promise<Size>;
63
+ getCookies?(driver: TDriver | TContext, context?: boolean): Promise<Cookie[]>;
64
+ getDriverInfo?(driver: TDriver): Promise<DriverInfo>;
65
+ getCapabilities?(driver: TDriver): Promise<Record<string, any>>;
66
+ getTitle(driver: TDriver): Promise<string>;
67
+ getUrl(driver: TDriver): Promise<string>;
68
+ takeScreenshot(driver: TDriver): Promise<Buffer | string>;
69
+ click?(context: TContext, element: TElement | TSelector): Promise<void>;
70
+ type?(context: TContext, element: TElement, value: string): Promise<void>;
71
+ visit?(driver: TDriver, url: string): Promise<void>;
72
+ getOrientation?(driver: TDriver): Promise<ScreenOrientation>;
73
+ setOrientation?(driver: TDriver, orientation: ScreenOrientation): Promise<void>;
74
+ getSystemBars?(driver: TDriver): Promise<{
75
+ statusBar: {
76
+ visible: boolean;
77
+ x: number;
78
+ y: number;
79
+ height: number;
80
+ width: number;
81
+ };
82
+ navigationBar: {
83
+ visible: boolean;
84
+ x: number;
85
+ y: number;
86
+ height: number;
87
+ width: number;
88
+ };
89
+ }>;
90
+ getElementRegion?(driver: TDriver, element: TElement): Promise<Region>;
91
+ getElementAttribute?(driver: TDriver, element: TElement, attr: string): Promise<string>;
92
+ getElementText?(driver: TDriver, element: TElement): Promise<string>;
93
+ performAction?(driver: TDriver, steps: any[]): Promise<void>;
94
+ getCurrentWorld?(driver: TDriver): Promise<string>;
95
+ getWorlds?(driver: TDriver): Promise<string[]>;
96
+ switchWorld?(driver: TDriver, id: string): Promise<void>;
97
+ }
@@ -1,4 +1,5 @@
1
- import type * as types from '@applitools/types';
1
+ import { type SpecDriver } from './spec-driver';
2
+ import { type Selector } from './selector';
2
3
  declare type CommonSelector<TSelector = never> = {
3
4
  selector: TSelector | string;
4
5
  type?: string;
@@ -6,17 +7,17 @@ declare type CommonSelector<TSelector = never> = {
6
7
  frame?: CommonSelector<TSelector> | TSelector | string;
7
8
  };
8
9
  export declare function isSimpleCommonSelector(selector: any): selector is CommonSelector;
9
- export declare function isCommonSelector<TSelector>(spec: Pick<types.SpecDriver<unknown, unknown, unknown, TSelector>, 'isSelector'>, selector: any): selector is CommonSelector<TSelector>;
10
- export declare function isSelector<TSelector>(spec: Pick<types.SpecDriver<unknown, unknown, unknown, TSelector>, 'isSelector'>, selector: any): selector is types.Selector<TSelector>;
11
- export declare function transformSelector<TSelector>(spec: Pick<types.SpecDriver<unknown, unknown, unknown, TSelector>, 'isSelector' | 'transformSelector'>, selector: types.Selector<TSelector>, environment?: {
10
+ export declare function isCommonSelector<TSelector>(spec: Pick<SpecDriver<unknown, unknown, unknown, TSelector>, 'isSelector'>, selector: any): selector is CommonSelector<TSelector>;
11
+ export declare function isSelector<TSelector>(spec: Pick<SpecDriver<unknown, unknown, unknown, TSelector>, 'isSelector'>, selector: any): selector is Selector<TSelector>;
12
+ export declare function transformSelector<TSelector>(spec: Pick<SpecDriver<unknown, unknown, unknown, TSelector>, 'isSelector' | 'transformSelector'>, selector: Selector<TSelector>, environment?: {
12
13
  isWeb?: boolean;
13
14
  isNative?: boolean;
14
15
  isIOS?: boolean;
15
16
  isAndroid?: boolean;
16
17
  }): TSelector;
17
- export declare function splitSelector<TSelector>(spec: Pick<types.SpecDriver<unknown, unknown, unknown, TSelector>, 'isSelector'>, selector: types.Selector<TSelector>): {
18
- contextSelectors: types.Selector<TSelector>[];
19
- elementSelector: types.Selector<TSelector>;
18
+ export declare function splitSelector<TSelector>(spec: Pick<SpecDriver<unknown, unknown, unknown, TSelector>, 'isSelector'>, selector: Selector<TSelector>): {
19
+ contextSelectors: Selector<TSelector>[];
20
+ elementSelector: Selector<TSelector>;
20
21
  };
21
- export declare function withFastCache<TSpecDriver extends types.SpecDriver<unknown, unknown, unknown, unknown>>(spec: TSpecDriver): TSpecDriver;
22
+ export declare function withFastCache<TSpecDriver extends SpecDriver<unknown, unknown, unknown, unknown>>(spec: TSpecDriver): TSpecDriver;
22
23
  export {};
@@ -0,0 +1,20 @@
1
+ export declare type Location = {
2
+ x: number;
3
+ y: number;
4
+ };
5
+ export declare type Size = {
6
+ width: number;
7
+ height: number;
8
+ };
9
+ export declare type Region = Location & Size;
10
+ export declare type ScreenOrientation = 'portrait' | 'landscape' | 'portrait-secondary' | 'landscape-secondary';
11
+ export declare type Cookie = {
12
+ name: string;
13
+ value: string;
14
+ domain?: string;
15
+ path?: string;
16
+ expiry?: number;
17
+ httpOnly?: boolean;
18
+ secure?: boolean;
19
+ sameSite?: 'Strict' | 'Lax' | 'None';
20
+ };