@applitools/driver 1.10.3 → 1.10.5
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/dist/capabilities.js +2 -1
- package/dist/context.js +10 -4
- package/dist/driver.js +10 -5
- package/dist/index.js +3 -0
- package/dist/selector.js +2 -0
- package/dist/spec-driver.js +2 -0
- package/dist/types.js +2 -0
- package/package.json +3 -4
- package/types/capabilities.d.ts +2 -2
- package/types/context.d.ts +26 -24
- package/types/debug/check-spec-driver.d.ts +1 -1
- package/types/driver.d.ts +29 -17
- package/types/element.d.ts +20 -18
- package/types/fake/spec-driver.d.ts +2 -1
- package/types/helper-android.d.ts +9 -8
- package/types/helper-ios.d.ts +7 -6
- package/types/index.d.ts +3 -0
- package/types/selector.d.ts +7 -0
- package/types/spec-driver.d.ts +97 -0
- package/types/spec-utils.d.ts +9 -8
- package/types/types.d.ts +20 -0
package/dist/capabilities.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
362
|
-
|
|
363
|
-
|
|
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 =
|
|
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"));
|
package/dist/selector.js
ADDED
package/dist/types.js
ADDED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@applitools/driver",
|
|
3
|
-
"version": "1.10.
|
|
3
|
+
"version": "1.10.5",
|
|
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.
|
|
90
|
+
"@applitools/logger": "1.1.26",
|
|
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.
|
|
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",
|
package/types/capabilities.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type DriverInfo } from './spec-driver';
|
|
2
2
|
declare type Capabilities = Record<string, any>;
|
|
3
|
-
export declare function parseCapabilities(capabilities: Capabilities):
|
|
3
|
+
export declare function parseCapabilities(capabilities: Capabilities): DriverInfo;
|
|
4
4
|
export {};
|
package/types/context.d.ts
CHANGED
|
@@ -1,18 +1,20 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import { type
|
|
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 |
|
|
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?:
|
|
13
|
-
clientRegion?:
|
|
14
|
-
scrollingRegion?:
|
|
15
|
-
innerOffset?:
|
|
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:
|
|
29
|
+
protected readonly _spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
|
|
28
30
|
constructor(options: {
|
|
29
|
-
spec:
|
|
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:
|
|
53
|
+
root(selector: Selector<TSelector>): Promise<{
|
|
52
54
|
context: Context<TDriver, TContext, TElement, TSelector>;
|
|
53
55
|
shadow?: Element<TDriver, TContext, TElement, TSelector>;
|
|
54
|
-
selector:
|
|
56
|
+
selector: Selector<TSelector>;
|
|
55
57
|
}>;
|
|
56
|
-
element(elementOrSelector: TElement |
|
|
57
|
-
elements(selectorOrElement:
|
|
58
|
-
waitFor(selector:
|
|
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 |
|
|
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<
|
|
66
|
-
getClientRegion(): Promise<
|
|
67
|
-
getScrollingRegion(): Promise<
|
|
68
|
-
getContentSize(): Promise<
|
|
69
|
-
getInnerOffset(): Promise<
|
|
70
|
-
getLocationInMainContext(): Promise<
|
|
71
|
-
getLocationInViewport(): Promise<
|
|
72
|
-
getRegionInViewport(region:
|
|
73
|
-
getCookies(): Promise<
|
|
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
|
|
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
|
|
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:
|
|
11
|
+
spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
|
|
10
12
|
driver: Driver<TDriver, TContext, TElement, TSelector> | TDriver;
|
|
11
13
|
logger?: Logger;
|
|
12
|
-
customConfig?:
|
|
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:
|
|
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():
|
|
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<
|
|
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:
|
|
67
|
-
getRegionInViewport(context: Context<TDriver, TContext, TElement, TSelector>, region:
|
|
68
|
-
element(selector:
|
|
69
|
-
elements(selector:
|
|
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<
|
|
73
|
-
getViewportSize(): Promise<
|
|
74
|
-
setViewportSize(size:
|
|
75
|
-
getDisplaySize(): Promise<
|
|
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<
|
|
90
|
+
getCookies(): Promise<Cookie[]>;
|
|
79
91
|
getTitle(): Promise<string>;
|
|
80
92
|
getUrl(): Promise<string>;
|
|
81
93
|
visit(url: string): Promise<void>;
|
package/types/element.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import { type
|
|
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?:
|
|
6
|
-
scrollOffset?:
|
|
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:
|
|
23
|
+
protected readonly _spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
|
|
22
24
|
constructor(options: {
|
|
23
|
-
spec:
|
|
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?:
|
|
28
|
+
selector?: Selector<TSelector>;
|
|
27
29
|
index?: number;
|
|
28
30
|
logger?: Logger;
|
|
29
31
|
});
|
|
30
32
|
get target(): TElement;
|
|
31
|
-
get selector():
|
|
32
|
-
get commonSelector():
|
|
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<
|
|
41
|
-
getClientRegion(): Promise<
|
|
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<
|
|
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:
|
|
59
|
+
scrollTo(offset: Location, options?: {
|
|
58
60
|
force: boolean;
|
|
59
|
-
}): Promise<
|
|
60
|
-
translateTo(offset:
|
|
61
|
-
getScrollOffset(): Promise<
|
|
62
|
-
getTranslateOffset(): Promise<
|
|
63
|
-
getInnerOffset(): Promise<
|
|
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
|
|
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
|
|
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:
|
|
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:
|
|
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<
|
|
35
|
+
}): Promise<Region>;
|
|
35
36
|
getTouchPadding(): Promise<number>;
|
|
36
|
-
getRegion(element: Element<TDriver, TContext, TElement, TSelector>): Promise<
|
|
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:
|
|
39
|
+
scrollBy(element: Element<TDriver, TContext, TElement, TSelector>, offset: Location): Promise<void>;
|
|
39
40
|
}
|
package/types/helper-ios.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import type
|
|
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:
|
|
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:
|
|
20
|
+
spec: SpecDriver<TDriver, TContext, TElement, TSelector>;
|
|
20
21
|
logger?: Logger;
|
|
21
22
|
});
|
|
22
|
-
getContentRegion(element: Element<TDriver, TContext, TElement, TSelector>): Promise<
|
|
23
|
+
getContentRegion(element: Element<TDriver, TContext, TElement, TSelector>): Promise<Region>;
|
|
23
24
|
}
|
package/types/index.d.ts
CHANGED
|
@@ -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
|
+
}
|
package/types/spec-utils.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type
|
|
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<
|
|
10
|
-
export declare function isSelector<TSelector>(spec: Pick<
|
|
11
|
-
export declare function transformSelector<TSelector>(spec: Pick<
|
|
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<
|
|
18
|
-
contextSelectors:
|
|
19
|
-
elementSelector:
|
|
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
|
|
22
|
+
export declare function withFastCache<TSpecDriver extends SpecDriver<unknown, unknown, unknown, unknown>>(spec: TSpecDriver): TSpecDriver;
|
|
22
23
|
export {};
|
package/types/types.d.ts
ADDED
|
@@ -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
|
+
};
|