@applitools/driver 1.2.3 → 1.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/dist/context.js +1 -1
- package/dist/driver.js +11 -4
- package/dist/element.js +4 -4
- package/package.json +10 -5
- package/types/context.d.ts +70 -0
- package/types/driver.d.ts +60 -0
- package/types/element.d.ts +55 -0
- package/types/fake/mock-driver.d.ts +71 -0
- package/types/fake/spec-driver.d.ts +40 -0
- package/types/index.d.ts +5 -0
- package/types/user-agent.d.ts +12 -0
- package/types/utils.d.ts +11 -0
- package/.bongo/dry-run/package-lock.json +0 -30
- package/.bongo/dry-run.tgz +0 -0
- package/.eslintrc +0 -36
- package/src/context.ts +0 -519
- package/src/driver.ts +0 -451
- package/src/element.ts +0 -502
- package/src/fake/mock-driver.d.ts +0 -3
- package/src/fake/mock-driver.js +0 -355
- package/src/fake/spec-driver.d.ts +0 -11
- package/src/fake/spec-driver.js +0 -66
- package/src/index.ts +0 -6
- package/src/user-agent.ts +0 -99
- package/src/utils.ts +0 -77
- package/test/unit/context.spec.ts +0 -243
- package/test/unit/driver.spec.ts +0 -482
- package/test/unit/user-agent.spec.d.ts +0 -1
- package/tsconfig.json +0 -24
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,23 @@
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
5
|
|
|
6
|
+
## 1.2.7 - 2021/10/30
|
|
7
|
+
|
|
8
|
+
- updated to @applitools/types@1.0.18 (from 1.0.14)
|
|
9
|
+
- updated to @applitools/utils@1.2.4 (from 1.2.3)
|
|
10
|
+
|
|
11
|
+
## 1.2.6 - 2021/10/7
|
|
12
|
+
|
|
13
|
+
- fix issue with fractional viewport size on mobile devices
|
|
14
|
+
|
|
15
|
+
## 1.2.5 - 2021/10/5
|
|
16
|
+
|
|
17
|
+
- fix issue with wrong user agent overrides valid driver info
|
|
18
|
+
|
|
19
|
+
## 1.2.4 - 2021/9/24
|
|
20
|
+
|
|
21
|
+
- fix issue with switching to the duplicated context
|
|
22
|
+
|
|
6
23
|
## 1.2.3 - 2021/9/24
|
|
7
24
|
|
|
8
25
|
- updated to @applitools/types@1.0.14 (from 1.0.13)
|
package/dist/context.js
CHANGED
|
@@ -178,7 +178,7 @@ class Context {
|
|
|
178
178
|
}
|
|
179
179
|
async context(reference) {
|
|
180
180
|
if (reference instanceof Context) {
|
|
181
|
-
if (reference.parent !== this) {
|
|
181
|
+
if (reference.parent !== this && !(await this.equals(reference.parent))) {
|
|
182
182
|
throw Error('Cannot attach a child context because it has a different parent');
|
|
183
183
|
}
|
|
184
184
|
return reference;
|
package/dist/driver.js
CHANGED
|
@@ -125,13 +125,17 @@ class Driver {
|
|
|
125
125
|
this._currentContext = context;
|
|
126
126
|
}
|
|
127
127
|
async init() {
|
|
128
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
128
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;
|
|
129
129
|
this._driverInfo = await ((_b = (_a = this._spec).getDriverInfo) === null || _b === void 0 ? void 0 : _b.call(_a, this.target));
|
|
130
130
|
if (this.isWeb) {
|
|
131
131
|
const userAgent = (_d = (_c = this._driverInfo) === null || _c === void 0 ? void 0 : _c.userAgent) !== null && _d !== void 0 ? _d : (await this.execute(snippets.getUserAgent));
|
|
132
132
|
const pixelRatio = (_f = (_e = this._driverInfo) === null || _e === void 0 ? void 0 : _e.pixelRatio) !== null && _f !== void 0 ? _f : (await this.execute(snippets.getPixelRatio));
|
|
133
133
|
const userAgentInfo = userAgent ? user_agent_1.parseUserAgent(userAgent) : {};
|
|
134
|
-
this._driverInfo = Object.assign(Object.assign({}, this._driverInfo), { isMobile: (_h = (_g = this._driverInfo) === null || _g === void 0 ? void 0 : _g.isMobile) !== null && _h !== void 0 ? _h : ['iOS', 'Android'].includes(userAgentInfo.platformName), platformName: (_j =
|
|
134
|
+
this._driverInfo = Object.assign(Object.assign({}, this._driverInfo), { isMobile: (_h = (_g = this._driverInfo) === null || _g === void 0 ? void 0 : _g.isMobile) !== null && _h !== void 0 ? _h : ['iOS', 'Android'].includes(userAgentInfo.platformName), platformName: ((_j = this._driverInfo) === null || _j === void 0 ? void 0 : _j.isMobile)
|
|
135
|
+
? (_l = (_k = this._driverInfo) === null || _k === void 0 ? void 0 : _k.platformName) !== null && _l !== void 0 ? _l : userAgentInfo.platformName
|
|
136
|
+
: (_m = userAgentInfo.platformName) !== null && _m !== void 0 ? _m : (_o = this._driverInfo) === null || _o === void 0 ? void 0 : _o.platformName, platformVersion: ((_p = this._driverInfo) === null || _p === void 0 ? void 0 : _p.isMobile)
|
|
137
|
+
? (_r = (_q = this._driverInfo) === null || _q === void 0 ? void 0 : _q.platformVersion) !== null && _r !== void 0 ? _r : userAgentInfo.platformVersion
|
|
138
|
+
: (_s = userAgentInfo.platformVersion) !== null && _s !== void 0 ? _s : (_t = this._driverInfo) === null || _t === void 0 ? void 0 : _t.platformVersion, browserName: (_u = userAgentInfo.browserName) !== null && _u !== void 0 ? _u : (_v = this._driverInfo) === null || _v === void 0 ? void 0 : _v.browserName, browserVersion: (_w = userAgentInfo.browserVersion) !== null && _w !== void 0 ? _w : (_x = this._driverInfo) === null || _x === void 0 ? void 0 : _x.browserVersion, userAgent,
|
|
135
139
|
pixelRatio });
|
|
136
140
|
}
|
|
137
141
|
else {
|
|
@@ -221,8 +225,10 @@ class Driver {
|
|
|
221
225
|
}
|
|
222
226
|
}
|
|
223
227
|
async switchTo(context) {
|
|
224
|
-
if (await this.currentContext.equals(context))
|
|
228
|
+
if (await this.currentContext.equals(context)) {
|
|
229
|
+
this._currentContext = context;
|
|
225
230
|
return;
|
|
231
|
+
}
|
|
226
232
|
const currentPath = this.currentContext.path;
|
|
227
233
|
const requiredPath = context.path;
|
|
228
234
|
let diffIndex = -1;
|
|
@@ -303,7 +309,7 @@ class Driver {
|
|
|
303
309
|
for (const reference of references) {
|
|
304
310
|
if (reference === this.mainContext)
|
|
305
311
|
continue;
|
|
306
|
-
const context = await this.currentContext.context(reference
|
|
312
|
+
const context = await this.currentContext.context(reference);
|
|
307
313
|
await context.focus();
|
|
308
314
|
}
|
|
309
315
|
return this.currentContext;
|
|
@@ -348,6 +354,7 @@ class Driver {
|
|
|
348
354
|
}
|
|
349
355
|
}
|
|
350
356
|
}
|
|
357
|
+
size = utils.geometry.round(size);
|
|
351
358
|
}
|
|
352
359
|
else if (this._spec.getViewportSize) {
|
|
353
360
|
this._logger.log('Extracting viewport size from web driver using spec method');
|
package/dist/element.js
CHANGED
|
@@ -67,14 +67,14 @@ class Element {
|
|
|
67
67
|
if (this.isRef)
|
|
68
68
|
return false;
|
|
69
69
|
element = element instanceof Element ? element.target : element;
|
|
70
|
-
if (this.
|
|
71
|
-
return this._spec.isEqualElements(this.context.target, this.target, element);
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
70
|
+
if (this.driver.isWeb) {
|
|
74
71
|
return this._spec
|
|
75
72
|
.executeScript(this.context.target, snippets.isEqualElements, [this.target, element])
|
|
76
73
|
.catch(() => false);
|
|
77
74
|
}
|
|
75
|
+
else {
|
|
76
|
+
return this._spec.isEqualElements(this.context.target, this.target, element);
|
|
77
|
+
}
|
|
78
78
|
}
|
|
79
79
|
async init(context) {
|
|
80
80
|
this._context = context;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@applitools/driver",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.7",
|
|
4
4
|
"description": "Applitools universal framework wrapper",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"applitools",
|
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
},
|
|
17
17
|
"repository": {
|
|
18
18
|
"type": "git",
|
|
19
|
-
"url": "git://github.com/applitools/eyes.sdk.javascript1.git"
|
|
19
|
+
"url": "git://github.com/applitools/eyes.sdk.javascript1.git",
|
|
20
|
+
"directory": "packages/driver"
|
|
20
21
|
},
|
|
21
22
|
"license": "SEE LICENSE IN LICENSE",
|
|
22
23
|
"author": {
|
|
@@ -29,6 +30,10 @@
|
|
|
29
30
|
"lib": "./src",
|
|
30
31
|
"test": "./test"
|
|
31
32
|
},
|
|
33
|
+
"files": [
|
|
34
|
+
"dist",
|
|
35
|
+
"types"
|
|
36
|
+
],
|
|
32
37
|
"scripts": {
|
|
33
38
|
"lint": "eslint '**/*.ts' '**/*.js'",
|
|
34
39
|
"build": "tsc",
|
|
@@ -45,11 +50,11 @@
|
|
|
45
50
|
},
|
|
46
51
|
"dependencies": {
|
|
47
52
|
"@applitools/snippets": "2.1.7",
|
|
48
|
-
"@applitools/types": "1.0.
|
|
49
|
-
"@applitools/utils": "1.2.
|
|
53
|
+
"@applitools/types": "1.0.18",
|
|
54
|
+
"@applitools/utils": "1.2.4"
|
|
50
55
|
},
|
|
51
56
|
"devDependencies": {
|
|
52
|
-
"@applitools/sdk-release-kit": "0.13.
|
|
57
|
+
"@applitools/sdk-release-kit": "0.13.4",
|
|
53
58
|
"@types/mocha": "^9.0.0",
|
|
54
59
|
"@types/node": "^16.3.3",
|
|
55
60
|
"@typescript-eslint/eslint-plugin": "^4.28.3",
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type * as types from '@applitools/types';
|
|
2
|
+
import type { Driver } from './driver';
|
|
3
|
+
import { Element } from './element';
|
|
4
|
+
export declare type ContextReference<TDriver, TContext, TElement, TSelector> = Context<TDriver, TContext, TElement, TSelector> | Element<TDriver, TContext, TElement, TSelector> | TElement | types.Selector<TSelector> | string | number;
|
|
5
|
+
export declare type ContextPlain<TDriver, TContext, TElement, TSelector> = ContextReference<TDriver, TContext, TElement, TSelector> | {
|
|
6
|
+
reference: ContextReference<TDriver, TContext, TElement, TSelector>;
|
|
7
|
+
scrollingElement?: Element<TDriver, TContext, TElement, TSelector>;
|
|
8
|
+
parent?: ContextPlain<TDriver, TContext, TElement, TSelector>;
|
|
9
|
+
};
|
|
10
|
+
export declare type ContextState = {
|
|
11
|
+
region?: types.Region;
|
|
12
|
+
clientRegion?: types.Region;
|
|
13
|
+
scrollingRegion?: types.Region;
|
|
14
|
+
innerOffset?: types.Location;
|
|
15
|
+
};
|
|
16
|
+
export declare class Context<TDriver, TContext, TElement, TSelector> {
|
|
17
|
+
private _target;
|
|
18
|
+
private _driver;
|
|
19
|
+
private _parent;
|
|
20
|
+
private _element;
|
|
21
|
+
private _reference;
|
|
22
|
+
private _scrollingElement;
|
|
23
|
+
private _state;
|
|
24
|
+
private _logger;
|
|
25
|
+
private _utils;
|
|
26
|
+
private _isReference;
|
|
27
|
+
protected readonly _spec: types.SpecDriver<TDriver, TContext, TElement, TSelector>;
|
|
28
|
+
constructor(options: {
|
|
29
|
+
spec: types.SpecDriver<TDriver, TContext, TElement, TSelector>;
|
|
30
|
+
context?: TContext | Context<TDriver, TContext, TElement, TSelector>;
|
|
31
|
+
driver?: Driver<TDriver, TContext, TElement, TSelector>;
|
|
32
|
+
parent?: Context<TDriver, TContext, TElement, TSelector>;
|
|
33
|
+
reference?: ContextReference<TDriver, TContext, TElement, TSelector>;
|
|
34
|
+
element?: Element<TDriver, TContext, TElement, TSelector>;
|
|
35
|
+
scrollingElement?: Element<TDriver, TContext, TElement, TSelector>;
|
|
36
|
+
logger?: any;
|
|
37
|
+
});
|
|
38
|
+
get target(): TContext;
|
|
39
|
+
get driver(): Driver<TDriver, TContext, TElement, TSelector>;
|
|
40
|
+
get parent(): Context<TDriver, TContext, TElement, TSelector> | null;
|
|
41
|
+
get main(): Context<TDriver, TContext, TElement, TSelector>;
|
|
42
|
+
get path(): Context<TDriver, TContext, TElement, TSelector>[];
|
|
43
|
+
get isMain(): boolean;
|
|
44
|
+
get isCurrent(): boolean;
|
|
45
|
+
get isInitialized(): boolean;
|
|
46
|
+
get isRef(): boolean;
|
|
47
|
+
init(): Promise<this>;
|
|
48
|
+
focus(): Promise<this>;
|
|
49
|
+
equals(context: Context<TDriver, TContext, TElement, TSelector> | Element<TDriver, TContext, TElement, TSelector>): Promise<boolean>;
|
|
50
|
+
context(reference: ContextPlain<TDriver, TContext, TElement, TSelector>): Promise<Context<TDriver, TContext, TElement, TSelector>>;
|
|
51
|
+
element(elementOrSelector: TElement | types.Selector<TSelector>): Promise<Element<TDriver, TContext, TElement, TSelector>>;
|
|
52
|
+
elements(elementOrSelector: TElement | types.Selector<TSelector>): Promise<Element<TDriver, TContext, TElement, TSelector>[]>;
|
|
53
|
+
execute(script: ((args: any) => any) | string, arg?: any): Promise<any>;
|
|
54
|
+
getContextElement(): Promise<Element<TDriver, TContext, TElement, TSelector>>;
|
|
55
|
+
getScrollingElement(): Promise<Element<TDriver, TContext, TElement, TSelector>>;
|
|
56
|
+
setScrollingElement(scrollingElement: Element<TDriver, TContext, TElement, TSelector> | TElement | types.Selector<TSelector>): Promise<void>;
|
|
57
|
+
blurElement(element?: Element<TDriver, TContext, TElement, TSelector>): Promise<TElement>;
|
|
58
|
+
focusElement(element: Element<TDriver, TContext, TElement, TSelector>): Promise<any>;
|
|
59
|
+
getRegion(): Promise<types.Region>;
|
|
60
|
+
getClientRegion(): Promise<types.Region>;
|
|
61
|
+
getScrollingRegion(): Promise<types.Region>;
|
|
62
|
+
getContentSize(): Promise<types.Size>;
|
|
63
|
+
getInnerOffset(): Promise<types.Location>;
|
|
64
|
+
getLocationInMainContext(): Promise<types.Location>;
|
|
65
|
+
getLocationInViewport(): Promise<types.Location>;
|
|
66
|
+
getRegionInViewport(region: types.Region): Promise<types.Region>;
|
|
67
|
+
private preserveInnerOffset;
|
|
68
|
+
private preserveContextRegions;
|
|
69
|
+
private preserveScrollingRegion;
|
|
70
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type * as types from '@applitools/types';
|
|
3
|
+
import { Context, ContextReference } from './context';
|
|
4
|
+
import { Element } from './element';
|
|
5
|
+
export declare class Driver<TDriver, TContext, TElement, TSelector> {
|
|
6
|
+
private _target;
|
|
7
|
+
private _mainContext;
|
|
8
|
+
private _currentContext;
|
|
9
|
+
private _driverInfo;
|
|
10
|
+
private _logger;
|
|
11
|
+
private _utils;
|
|
12
|
+
protected readonly _spec: types.SpecDriver<TDriver, TContext, TElement, TSelector>;
|
|
13
|
+
constructor(options: {
|
|
14
|
+
spec: types.SpecDriver<TDriver, TContext, TElement, TSelector>;
|
|
15
|
+
driver: Driver<TDriver, TContext, TElement, TSelector> | TDriver;
|
|
16
|
+
logger?: any;
|
|
17
|
+
});
|
|
18
|
+
get target(): TDriver;
|
|
19
|
+
get currentContext(): Context<TDriver, TContext, TElement, TSelector>;
|
|
20
|
+
get mainContext(): Context<TDriver, TContext, TElement, TSelector>;
|
|
21
|
+
get features(): {
|
|
22
|
+
shadowSelector?: boolean;
|
|
23
|
+
};
|
|
24
|
+
get deviceName(): string;
|
|
25
|
+
get platformName(): string;
|
|
26
|
+
get platformVersion(): string | number;
|
|
27
|
+
get browserName(): string;
|
|
28
|
+
get browserVersion(): string | number;
|
|
29
|
+
get userAgent(): string;
|
|
30
|
+
get pixelRatio(): number;
|
|
31
|
+
get statusBarHeight(): number;
|
|
32
|
+
get navigationBarHeight(): number;
|
|
33
|
+
get isNative(): boolean;
|
|
34
|
+
get isWeb(): boolean;
|
|
35
|
+
get isMobile(): boolean;
|
|
36
|
+
get isIOS(): boolean;
|
|
37
|
+
get isAndroid(): boolean;
|
|
38
|
+
get isIE(): boolean;
|
|
39
|
+
get isEdgeLegacy(): boolean;
|
|
40
|
+
updateCurrentContext(context: Context<TDriver, TContext, TElement, TSelector>): void;
|
|
41
|
+
init(): Promise<this>;
|
|
42
|
+
refreshContexts(): Promise<Context<TDriver, TContext, TElement, TSelector>>;
|
|
43
|
+
switchTo(context: Context<TDriver, TContext, TElement, TSelector>): Promise<Context<TDriver, TContext, TElement, TSelector>>;
|
|
44
|
+
switchToMainContext(): Promise<Context<TDriver, TContext, TElement, TSelector>>;
|
|
45
|
+
switchToParentContext(elevation?: number): Promise<Context<TDriver, TContext, TElement, TSelector>>;
|
|
46
|
+
switchToChildContext(...references: ContextReference<TDriver, TContext, TElement, TSelector>[]): Promise<Context<TDriver, TContext, TElement, TSelector>>;
|
|
47
|
+
normalizeRegion(region: types.Region): Promise<types.Region>;
|
|
48
|
+
getRegionInViewport(context: Context<TDriver, TContext, TElement, TSelector>, region: types.Region): Promise<types.Region>;
|
|
49
|
+
element(selector: types.Selector<TSelector>): Promise<Element<TDriver, TContext, TElement, TSelector>>;
|
|
50
|
+
elements(selector: types.Selector<TSelector>): Promise<Element<TDriver, TContext, TElement, TSelector>[]>;
|
|
51
|
+
execute(script: ((arg: any) => any) | string, arg?: any): Promise<any>;
|
|
52
|
+
takeScreenshot(): Promise<Buffer | string>;
|
|
53
|
+
getViewportSize(): Promise<types.Size>;
|
|
54
|
+
setViewportSize(size: types.Size): Promise<void>;
|
|
55
|
+
getDisplaySize(): Promise<types.Size>;
|
|
56
|
+
getOrientation(): Promise<'portrait' | 'landscape'>;
|
|
57
|
+
getTitle(): Promise<string>;
|
|
58
|
+
getUrl(): Promise<string>;
|
|
59
|
+
visit(url: string): Promise<void>;
|
|
60
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type * as types from '@applitools/types';
|
|
2
|
+
import type { Context } from './context';
|
|
3
|
+
export declare type ElementState = {
|
|
4
|
+
contentSize?: types.Size;
|
|
5
|
+
scrollOffset?: types.Location;
|
|
6
|
+
transforms?: any;
|
|
7
|
+
};
|
|
8
|
+
export declare class Element<TDriver, TContext, TElement, TSelector> {
|
|
9
|
+
private _target;
|
|
10
|
+
private _context;
|
|
11
|
+
private _selector;
|
|
12
|
+
private _index;
|
|
13
|
+
private _state;
|
|
14
|
+
private _originalOverflow;
|
|
15
|
+
private _touchPadding;
|
|
16
|
+
private _logger;
|
|
17
|
+
private _utils;
|
|
18
|
+
protected readonly _spec: types.SpecDriver<TDriver, TContext, TElement, TSelector>;
|
|
19
|
+
constructor(options: {
|
|
20
|
+
spec: types.SpecDriver<TDriver, TContext, TElement, TSelector>;
|
|
21
|
+
element?: TElement | Element<TDriver, TContext, TElement, TSelector>;
|
|
22
|
+
context?: Context<TDriver, TContext, TElement, TSelector>;
|
|
23
|
+
selector?: types.Selector<TSelector>;
|
|
24
|
+
index?: number;
|
|
25
|
+
logger?: any;
|
|
26
|
+
});
|
|
27
|
+
get target(): TElement;
|
|
28
|
+
get selector(): types.Selector<TSelector>;
|
|
29
|
+
get context(): Context<TDriver, TContext, TElement, TSelector>;
|
|
30
|
+
get driver(): import("./driver").Driver<TDriver, TContext, TElement, TSelector>;
|
|
31
|
+
get isRef(): boolean;
|
|
32
|
+
equals(element: Element<TDriver, TContext, TElement, TSelector> | TElement): Promise<boolean>;
|
|
33
|
+
init(context: Context<TDriver, TContext, TElement, TSelector>): Promise<this>;
|
|
34
|
+
getRegion(): Promise<types.Region>;
|
|
35
|
+
getClientRegion(): Promise<types.Region>;
|
|
36
|
+
getContentSize(): Promise<types.Size>;
|
|
37
|
+
isScrollable(): Promise<boolean>;
|
|
38
|
+
isRoot(): Promise<boolean>;
|
|
39
|
+
getTouchPadding(): Promise<number>;
|
|
40
|
+
getAttribute(name: string): Promise<string>;
|
|
41
|
+
setAttribute(name: string, value: string): Promise<void>;
|
|
42
|
+
scrollTo(offset: types.Location): Promise<types.Location>;
|
|
43
|
+
translateTo(offset: types.Location): Promise<types.Location>;
|
|
44
|
+
getScrollOffset(): Promise<types.Location>;
|
|
45
|
+
getTranslateOffset(): Promise<types.Location>;
|
|
46
|
+
getInnerOffset(): Promise<types.Location>;
|
|
47
|
+
click(): Promise<void>;
|
|
48
|
+
preserveState(): Promise<ElementState>;
|
|
49
|
+
restoreState(state?: ElementState): Promise<void>;
|
|
50
|
+
hideScrollbars(): Promise<void>;
|
|
51
|
+
restoreScrollbars(): Promise<void>;
|
|
52
|
+
refresh(freshElement?: TElement): Promise<boolean>;
|
|
53
|
+
withRefresh<TResult>(operation: (...args: any[]) => TResult): Promise<TResult>;
|
|
54
|
+
toJSON(): TElement;
|
|
55
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
export class MockDriver {
|
|
3
|
+
constructor({ viewport, device, platform, browser, ua }?: {
|
|
4
|
+
viewport?: {
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
};
|
|
8
|
+
device: any;
|
|
9
|
+
platform: any;
|
|
10
|
+
browser: any;
|
|
11
|
+
ua: any;
|
|
12
|
+
});
|
|
13
|
+
_device: any;
|
|
14
|
+
_platform: any;
|
|
15
|
+
_browser: any;
|
|
16
|
+
_ua: any;
|
|
17
|
+
_window: {
|
|
18
|
+
title: string;
|
|
19
|
+
url: string;
|
|
20
|
+
rect: {
|
|
21
|
+
width: number;
|
|
22
|
+
height: number;
|
|
23
|
+
x: number;
|
|
24
|
+
y: number;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
_methods: Map<any, any>;
|
|
28
|
+
_scripts: Map<any, any>;
|
|
29
|
+
_elements: Map<any, any>;
|
|
30
|
+
_contexts: Map<any, any>;
|
|
31
|
+
_contextId: any;
|
|
32
|
+
mockScript(scriptMatcher: any, resultGenerator: any): void;
|
|
33
|
+
mockElement(selector: any, state: any): any;
|
|
34
|
+
mockElements(nodes: any, { parentId, parentContextId, parentRootId }?: {
|
|
35
|
+
parentId?: any;
|
|
36
|
+
parentContextId?: any;
|
|
37
|
+
parentRootId?: any;
|
|
38
|
+
}): void;
|
|
39
|
+
mockSelector(selector: any, element: any): void;
|
|
40
|
+
wrapMethod(name: any, wrapper: any): void;
|
|
41
|
+
unwrapMethod(name: any): void;
|
|
42
|
+
get info(): {
|
|
43
|
+
isMobile: boolean;
|
|
44
|
+
isNative: boolean;
|
|
45
|
+
deviceName: any;
|
|
46
|
+
platformName: any;
|
|
47
|
+
platformVersion: any;
|
|
48
|
+
browserName: any;
|
|
49
|
+
browserVersion: any;
|
|
50
|
+
};
|
|
51
|
+
executeScript(script: any, args?: any[]): Promise<any>;
|
|
52
|
+
findElement(selector: any, rootElement: any): Promise<any>;
|
|
53
|
+
findElements(selector: any, rootElement: any): Promise<any>;
|
|
54
|
+
switchToFrame(reference: any): Promise<MockDriver>;
|
|
55
|
+
switchToParentFrame(): Promise<MockDriver>;
|
|
56
|
+
getWindowRect(): Promise<{
|
|
57
|
+
width: number;
|
|
58
|
+
height: number;
|
|
59
|
+
x: number;
|
|
60
|
+
y: number;
|
|
61
|
+
}>;
|
|
62
|
+
setWindowRect(rect: any): Promise<void>;
|
|
63
|
+
getUrl(): Promise<string>;
|
|
64
|
+
getTitle(): Promise<string>;
|
|
65
|
+
visit(url: any): Promise<void>;
|
|
66
|
+
takeScreenshot(): Promise<void>;
|
|
67
|
+
toString(): string;
|
|
68
|
+
toJSON(): string;
|
|
69
|
+
[inspect.custom](): string;
|
|
70
|
+
}
|
|
71
|
+
import { inspect } from "util";
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export namespace spec {
|
|
2
|
+
function isDriver(driver: any): boolean;
|
|
3
|
+
function isDriver(driver: any): boolean;
|
|
4
|
+
function isElement(element: any): boolean;
|
|
5
|
+
function isElement(element: any): boolean;
|
|
6
|
+
function isSelector(selector: any): boolean;
|
|
7
|
+
function isSelector(selector: any): boolean;
|
|
8
|
+
function transformSelector(selector: any): any;
|
|
9
|
+
function transformSelector(selector: any): any;
|
|
10
|
+
function isStaleElementError(): boolean;
|
|
11
|
+
function isStaleElementError(): boolean;
|
|
12
|
+
function isEqualElements(_driver: any, element1: any, element2: any): boolean;
|
|
13
|
+
function isEqualElements(_driver: any, element1: any, element2: any): boolean;
|
|
14
|
+
function executeScript(driver: any, script: any, ...args: any[]): any;
|
|
15
|
+
function executeScript(driver: any, script: any, ...args: any[]): any;
|
|
16
|
+
function findElement(driver: any, selector: any, parent: any): any;
|
|
17
|
+
function findElement(driver: any, selector: any, parent: any): any;
|
|
18
|
+
function findElements(driver: any, selector: any, parent: any): any;
|
|
19
|
+
function findElements(driver: any, selector: any, parent: any): any;
|
|
20
|
+
function mainContext(driver: any): any;
|
|
21
|
+
function mainContext(driver: any): any;
|
|
22
|
+
function parentContext(driver: any): any;
|
|
23
|
+
function parentContext(driver: any): any;
|
|
24
|
+
function childContext(driver: any, reference: any): any;
|
|
25
|
+
function childContext(driver: any, reference: any): any;
|
|
26
|
+
function takeScreenshot(driver: any): any;
|
|
27
|
+
function takeScreenshot(driver: any): any;
|
|
28
|
+
function getDriverInfo(driver: any): any;
|
|
29
|
+
function getDriverInfo(driver: any): any;
|
|
30
|
+
function getWindowSize(driver: any): Promise<any>;
|
|
31
|
+
function getWindowSize(driver: any): Promise<any>;
|
|
32
|
+
function setWindowSize(driver: any, size: any): Promise<void>;
|
|
33
|
+
function setWindowSize(driver: any, size: any): Promise<void>;
|
|
34
|
+
function getUrl(driver: any): Promise<any>;
|
|
35
|
+
function getUrl(driver: any): Promise<any>;
|
|
36
|
+
function getTitle(driver: any): Promise<any>;
|
|
37
|
+
function getTitle(driver: any): Promise<any>;
|
|
38
|
+
function visit(driver: any, url: any): Promise<void>;
|
|
39
|
+
function visit(driver: any, url: any): Promise<void>;
|
|
40
|
+
}
|
package/types/index.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
declare type PlatformInfo = {
|
|
2
|
+
platformName: string;
|
|
3
|
+
platformVersion?: string;
|
|
4
|
+
};
|
|
5
|
+
declare type BrowserInfo = {
|
|
6
|
+
browserName: string;
|
|
7
|
+
browserVersion?: string;
|
|
8
|
+
};
|
|
9
|
+
export declare function parseUserAgent(userAgent: string): PlatformInfo & BrowserInfo;
|
|
10
|
+
export declare function parsePlatform(userAgent: string): PlatformInfo;
|
|
11
|
+
export declare function parseBrowser(userAgent: string): BrowserInfo;
|
|
12
|
+
export {};
|
package/types/utils.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type * as types from '@applitools/types';
|
|
2
|
+
export declare type SpecUtils<_TDriver, TContext, TElement, TSelector> = {
|
|
3
|
+
isSelector(selector: any): selector is types.Selector<TSelector>;
|
|
4
|
+
transformSelector(selector: types.Selector<TSelector>): TSelector;
|
|
5
|
+
splitSelector(selector: types.Selector<TSelector>): types.Selector<TSelector>[];
|
|
6
|
+
findRootElement(context: TContext, selector: types.Selector<TSelector>): Promise<{
|
|
7
|
+
root: TElement;
|
|
8
|
+
selector: types.Selector<TSelector>;
|
|
9
|
+
}>;
|
|
10
|
+
};
|
|
11
|
+
export declare function makeSpecUtils<TDriver, TContext, TElement, TSelector>(spec: types.SpecDriver<TDriver, TContext, TElement, TSelector>): SpecUtils<TDriver, TContext, TElement, TSelector>;
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"requires": true,
|
|
3
|
-
"lockfileVersion": 1,
|
|
4
|
-
"dependencies": {
|
|
5
|
-
"@applitools/driver": {
|
|
6
|
-
"version": "file:../dry-run.tgz",
|
|
7
|
-
"integrity": "sha512-Dpobb1JiG0th4CbT13OuchQ+JeDMWTCpdU2SXXjY5t/EXOh6pVmRK84b0RRNfJcwppepCchB+y4lALOWGA7HEQ==",
|
|
8
|
-
"requires": {
|
|
9
|
-
"@applitools/snippets": "2.1.7",
|
|
10
|
-
"@applitools/types": "1.0.14",
|
|
11
|
-
"@applitools/utils": "1.2.3"
|
|
12
|
-
}
|
|
13
|
-
},
|
|
14
|
-
"@applitools/snippets": {
|
|
15
|
-
"version": "2.1.7",
|
|
16
|
-
"resolved": "https://registry.npmjs.org/@applitools/snippets/-/snippets-2.1.7.tgz",
|
|
17
|
-
"integrity": "sha512-Tr4Gj7Qov/oPy+8WI4oVmmubxqpOzr8P3Wjzpl6rA57xKLg6/TiIg5oZNb4+jEmO2ShjNYLaEwRWHl7kPgb4fw=="
|
|
18
|
-
},
|
|
19
|
-
"@applitools/types": {
|
|
20
|
-
"version": "1.0.14",
|
|
21
|
-
"resolved": "https://registry.npmjs.org/@applitools/types/-/types-1.0.14.tgz",
|
|
22
|
-
"integrity": "sha512-Exfi8EOGGBwpRpaLizXmsUXInXGXNU26qup7AjLJSJLYETwn3Q3W+0aLHBUbdFA87w9fPCQjXJuZxJgqsNpVig=="
|
|
23
|
-
},
|
|
24
|
-
"@applitools/utils": {
|
|
25
|
-
"version": "1.2.3",
|
|
26
|
-
"resolved": "https://registry.npmjs.org/@applitools/utils/-/utils-1.2.3.tgz",
|
|
27
|
-
"integrity": "sha512-MZXsrzeHTvjFLzpfyKRDUmZWzNxH3gWd3reqYf+1kYimALKB3CO82VDNmkaGJykrRbxEP03Yqha7fHJj9eKslQ=="
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
package/.bongo/dry-run.tgz
DELETED
|
Binary file
|
package/.eslintrc
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"root": true,
|
|
3
|
-
"ignorePatterns": [
|
|
4
|
-
"node_modules/",
|
|
5
|
-
"dist/",
|
|
6
|
-
"logs",
|
|
7
|
-
"tmp/",
|
|
8
|
-
"types/",
|
|
9
|
-
"test/generic/",
|
|
10
|
-
"*.d.ts"
|
|
11
|
-
],
|
|
12
|
-
"env": {
|
|
13
|
-
"node": true
|
|
14
|
-
},
|
|
15
|
-
"parser": "@typescript-eslint/parser",
|
|
16
|
-
"parserOptions": {
|
|
17
|
-
"ecmaVersion": 2020,
|
|
18
|
-
"sourceType": "module"
|
|
19
|
-
},
|
|
20
|
-
"plugins": ["@typescript-eslint", "prettier", "node"],
|
|
21
|
-
"extends": ["plugin:@typescript-eslint/recommended", "prettier"],
|
|
22
|
-
"rules": {
|
|
23
|
-
"prettier/prettier": ["error", {
|
|
24
|
-
"arrowParens": "avoid",
|
|
25
|
-
"printWidth": 120
|
|
26
|
-
}],
|
|
27
|
-
"@typescript-eslint/no-unused-vars": [
|
|
28
|
-
"error",
|
|
29
|
-
{"varsIgnorePattern": "^_", "args": "all", "argsIgnorePattern": "^_"}
|
|
30
|
-
],
|
|
31
|
-
"@typescript-eslint/explicit-module-boundary-types": "off",
|
|
32
|
-
"@typescript-eslint/no-explicit-any": "off",
|
|
33
|
-
"@typescript-eslint/ban-ts-comment": "off",
|
|
34
|
-
"@typescript-eslint/no-var-requires": "off"
|
|
35
|
-
}
|
|
36
|
-
}
|