@applitools/driver 1.11.27 → 1.11.29
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/context.js +6 -7
- package/dist/driver.js +1 -3
- package/dist/element.js +3 -3
- package/package.json +5 -5
- package/types/context.d.ts +33 -33
- package/types/debug/check-spec-driver.d.ts +4 -4
- package/types/driver.d.ts +26 -26
- package/types/element.d.ts +26 -26
- package/types/helper-android.d.ts +14 -14
- package/types/helper-ios.d.ts +11 -11
- package/types/selector.d.ts +8 -7
- package/types/spec-driver.d.ts +67 -61
- package/types/spec-utils.d.ts +10 -12
package/dist/context.js
CHANGED
|
@@ -30,8 +30,7 @@ const specUtils = __importStar(require("./spec-utils"));
|
|
|
30
30
|
const snippets = require('@applitools/snippets');
|
|
31
31
|
class Context {
|
|
32
32
|
_isReference(reference) {
|
|
33
|
-
return (reference
|
|
34
|
-
utils.types.isInteger(reference) ||
|
|
33
|
+
return (utils.types.isInteger(reference) ||
|
|
35
34
|
utils.types.isString(reference) ||
|
|
36
35
|
reference instanceof element_1.Element ||
|
|
37
36
|
this._spec.isElement(reference) ||
|
|
@@ -47,14 +46,12 @@ class Context {
|
|
|
47
46
|
this._target = options.context;
|
|
48
47
|
}
|
|
49
48
|
else {
|
|
50
|
-
throw new TypeError('Context constructor called with
|
|
49
|
+
throw new TypeError('Context constructor called with target context of unknown type');
|
|
51
50
|
}
|
|
52
51
|
}
|
|
53
52
|
if (this._isReference(options.reference)) {
|
|
54
|
-
if (options.reference instanceof Context)
|
|
55
|
-
return options.reference;
|
|
56
53
|
if (!options.parent) {
|
|
57
|
-
throw new TypeError('Cannot construct child context without
|
|
54
|
+
throw new TypeError('Cannot construct child context without parent context');
|
|
58
55
|
}
|
|
59
56
|
this._reference = options.reference;
|
|
60
57
|
this._parent = options.parent;
|
|
@@ -66,7 +63,7 @@ class Context {
|
|
|
66
63
|
this._driver = options.driver;
|
|
67
64
|
}
|
|
68
65
|
else {
|
|
69
|
-
throw new TypeError('Context constructor called with
|
|
66
|
+
throw new TypeError('Context constructor called with context reference of unknown type!');
|
|
70
67
|
}
|
|
71
68
|
}
|
|
72
69
|
get target() {
|
|
@@ -250,6 +247,8 @@ class Context {
|
|
|
250
247
|
return new Context({ spec: this._spec, parent: this, driver: this.driver, reference, logger: this._logger });
|
|
251
248
|
}
|
|
252
249
|
else if (utils.types.has(reference, 'reference')) {
|
|
250
|
+
if (reference.reference instanceof Context)
|
|
251
|
+
return this;
|
|
253
252
|
const parent = reference.parent ? await this.context(reference.parent) : this;
|
|
254
253
|
return new Context({
|
|
255
254
|
spec: this._spec,
|
package/dist/driver.js
CHANGED
|
@@ -797,9 +797,7 @@ function isDriver(driver, spec) {
|
|
|
797
797
|
}
|
|
798
798
|
exports.isDriver = isDriver;
|
|
799
799
|
async function makeDriver(options) {
|
|
800
|
-
const driver = options.driver instanceof Driver
|
|
801
|
-
? options.driver
|
|
802
|
-
: new Driver(options);
|
|
800
|
+
const driver = options.driver instanceof Driver ? options.driver : new Driver(options);
|
|
803
801
|
await driver.init();
|
|
804
802
|
await driver.refreshContexts();
|
|
805
803
|
return driver;
|
package/dist/element.js
CHANGED
|
@@ -649,9 +649,9 @@ class Element {
|
|
|
649
649
|
this._originalOverflow = null;
|
|
650
650
|
});
|
|
651
651
|
}
|
|
652
|
-
async refresh(
|
|
653
|
-
if (this._spec.isElement(
|
|
654
|
-
this._target =
|
|
652
|
+
async refresh(freshTarget) {
|
|
653
|
+
if (this._spec.isElement(freshTarget)) {
|
|
654
|
+
this._target = freshTarget;
|
|
655
655
|
return true;
|
|
656
656
|
}
|
|
657
657
|
if (!this._selector)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@applitools/driver",
|
|
3
|
-
"version": "1.11.
|
|
3
|
+
"version": "1.11.29",
|
|
4
4
|
"description": "Applitools universal framework wrapper",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"applitools",
|
|
@@ -71,8 +71,8 @@
|
|
|
71
71
|
"types"
|
|
72
72
|
],
|
|
73
73
|
"scripts": {
|
|
74
|
-
"lint": "
|
|
75
|
-
"build": "
|
|
74
|
+
"lint": "node ../../node_modules/.bin/eslint '**/*.ts'",
|
|
75
|
+
"build": "node ../../node_modules/.bin/tsc --project ./tsconfig.build.json",
|
|
76
76
|
"test": "yarn test:unit",
|
|
77
77
|
"test:sanity": "yarn test:unit",
|
|
78
78
|
"test:unit": "mocha --no-timeouts -r ts-node/register ./test/unit/*.spec.ts",
|
|
@@ -82,9 +82,9 @@
|
|
|
82
82
|
"postversion": "bongo postversion --skip-release-notification"
|
|
83
83
|
},
|
|
84
84
|
"dependencies": {
|
|
85
|
-
"@applitools/logger": "1.1.
|
|
85
|
+
"@applitools/logger": "1.1.45",
|
|
86
86
|
"@applitools/snippets": "2.4.15",
|
|
87
|
-
"@applitools/utils": "1.3.
|
|
87
|
+
"@applitools/utils": "1.3.30",
|
|
88
88
|
"semver": "7.3.7"
|
|
89
89
|
},
|
|
90
90
|
"devDependencies": {
|
package/types/context.d.ts
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
import type { Location, Size, Region } from '@applitools/utils';
|
|
2
2
|
import type { Cookie } from './types';
|
|
3
|
-
import { type SpecDriver, type WaitOptions } from './spec-driver';
|
|
3
|
+
import { type SpecType, type SpecDriver, type WaitOptions } from './spec-driver';
|
|
4
4
|
import { type Driver } from './driver';
|
|
5
5
|
import { type Selector } from './selector';
|
|
6
6
|
import { type Logger } from '@applitools/logger';
|
|
7
|
-
import { Element } from './element';
|
|
8
|
-
export type ContextReference<
|
|
9
|
-
export type
|
|
10
|
-
reference: ContextReference<
|
|
11
|
-
scrollingElement?: Element<
|
|
12
|
-
parent?:
|
|
7
|
+
import { Element, type ElementReference } from './element';
|
|
8
|
+
export type ContextReference<T extends SpecType> = Element<T> | ElementReference<T> | string | number;
|
|
9
|
+
export type NestedContextReference<T extends SpecType> = {
|
|
10
|
+
reference: ContextReference<T>;
|
|
11
|
+
scrollingElement?: Element<T>;
|
|
12
|
+
parent?: Context<T> | ContextReference<T> | NestedContextReference<T>;
|
|
13
13
|
};
|
|
14
|
-
type ContextOptions<
|
|
15
|
-
spec: SpecDriver<
|
|
16
|
-
context?:
|
|
17
|
-
driver?: Driver<
|
|
18
|
-
parent?: Context<
|
|
19
|
-
reference?: ContextReference<
|
|
20
|
-
element?: Element<
|
|
21
|
-
scrollingElement?: Element<
|
|
14
|
+
type ContextOptions<T extends SpecType> = {
|
|
15
|
+
spec: SpecDriver<T>;
|
|
16
|
+
context?: T['context'];
|
|
17
|
+
driver?: Driver<T>;
|
|
18
|
+
parent?: Context<T>;
|
|
19
|
+
reference?: ContextReference<T>;
|
|
20
|
+
element?: Element<T>;
|
|
21
|
+
scrollingElement?: Element<T>;
|
|
22
22
|
logger: Logger;
|
|
23
23
|
};
|
|
24
|
-
export declare class Context<
|
|
24
|
+
export declare class Context<T extends SpecType> {
|
|
25
25
|
private _target?;
|
|
26
26
|
private _driver?;
|
|
27
27
|
private _parent?;
|
|
@@ -31,13 +31,13 @@ export declare class Context<TDriver, TContext, TElement, TSelector> {
|
|
|
31
31
|
private _state;
|
|
32
32
|
private _logger;
|
|
33
33
|
private _isReference;
|
|
34
|
-
protected readonly _spec: SpecDriver<
|
|
35
|
-
constructor(options: ContextOptions<
|
|
36
|
-
get target():
|
|
37
|
-
get driver(): Driver<
|
|
38
|
-
get parent(): Context<
|
|
39
|
-
get main(): Context<
|
|
40
|
-
get path(): Context<
|
|
34
|
+
protected readonly _spec: SpecDriver<T>;
|
|
35
|
+
constructor(options: ContextOptions<T>);
|
|
36
|
+
get target(): T['driver'];
|
|
37
|
+
get driver(): Driver<T>;
|
|
38
|
+
get parent(): Context<T> | null;
|
|
39
|
+
get main(): Context<T>;
|
|
40
|
+
get path(): Context<T>[];
|
|
41
41
|
get isMain(): boolean;
|
|
42
42
|
get isCurrent(): boolean;
|
|
43
43
|
get isInitialized(): boolean;
|
|
@@ -45,11 +45,11 @@ export declare class Context<TDriver, TContext, TElement, TSelector> {
|
|
|
45
45
|
private _findElements;
|
|
46
46
|
init(): Promise<this>;
|
|
47
47
|
focus(): Promise<this>;
|
|
48
|
-
equals(context: Context<
|
|
49
|
-
context(reference:
|
|
50
|
-
element(elementOrSelector:
|
|
51
|
-
elements(selectorOrElement:
|
|
52
|
-
waitFor(selector: Selector<
|
|
48
|
+
equals(context: Context<T> | Element<T>): Promise<boolean>;
|
|
49
|
+
context(reference: ContextReference<T> | NestedContextReference<T>): Promise<Context<T>>;
|
|
50
|
+
element(elementOrSelector: ElementReference<T>): Promise<Element<T> | null>;
|
|
51
|
+
elements(selectorOrElement: ElementReference<T>): Promise<Element<T>[]>;
|
|
52
|
+
waitFor(selector: Selector<T>, options?: WaitOptions): Promise<Element<T> | null>;
|
|
53
53
|
execute(script: ((args: any) => any) | string, arg?: any): Promise<any>;
|
|
54
54
|
executePoll(script: ((arg: any) => any) | string | {
|
|
55
55
|
main: ((arg: any) => any) | string;
|
|
@@ -60,11 +60,11 @@ export declare class Context<TDriver, TContext, TElement, TSelector> {
|
|
|
60
60
|
executionTimeout?: number;
|
|
61
61
|
pollTimeout?: number;
|
|
62
62
|
}): Promise<any>;
|
|
63
|
-
getContextElement(): Promise<Element<
|
|
64
|
-
getScrollingElement(): Promise<Element<
|
|
65
|
-
setScrollingElement(scrollingElement: Element<
|
|
66
|
-
blurElement(element?: Element<
|
|
67
|
-
focusElement(element: Element<
|
|
63
|
+
getContextElement(): Promise<Element<T> | null>;
|
|
64
|
+
getScrollingElement(): Promise<Element<T> | null>;
|
|
65
|
+
setScrollingElement(scrollingElement: Element<T> | ElementReference<T> | undefined | null): Promise<void>;
|
|
66
|
+
blurElement(element?: Element<T>): Promise<T['element'] | null>;
|
|
67
|
+
focusElement(element: Element<T>): Promise<any>;
|
|
68
68
|
getRegion(): Promise<Region>;
|
|
69
69
|
getClientRegion(): Promise<Region>;
|
|
70
70
|
getScrollingRegion(): Promise<Region>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { type SpecDriver } from '../spec-driver';
|
|
2
|
-
export declare function checkSpecDriver<
|
|
3
|
-
spec: SpecDriver<
|
|
4
|
-
driver:
|
|
1
|
+
import { SpecType, type SpecDriver } from '../spec-driver';
|
|
2
|
+
export declare function checkSpecDriver<T extends SpecType>(options: {
|
|
3
|
+
spec: SpecDriver<T>;
|
|
4
|
+
driver: T['driver'];
|
|
5
5
|
}): Promise<({
|
|
6
6
|
skipped: boolean;
|
|
7
7
|
test: string;
|
package/types/driver.d.ts
CHANGED
|
@@ -2,22 +2,22 @@
|
|
|
2
2
|
import type { Size, Region } from '@applitools/utils';
|
|
3
3
|
import type { ScreenOrientation, Cookie } from './types';
|
|
4
4
|
import { type Selector } from './selector';
|
|
5
|
-
import { type SpecDriver, type WaitOptions } from './spec-driver';
|
|
5
|
+
import { type SpecType, type SpecDriver, type WaitOptions } from './spec-driver';
|
|
6
6
|
import { type Element } from './element';
|
|
7
7
|
import { Context, type ContextReference } from './context';
|
|
8
8
|
import { type Logger } from '@applitools/logger';
|
|
9
9
|
import { HelperIOS } from './helper-ios';
|
|
10
10
|
import { HelperAndroid } from './helper-android';
|
|
11
|
-
type DriverOptions<
|
|
12
|
-
spec: SpecDriver<
|
|
13
|
-
driver:
|
|
11
|
+
type DriverOptions<T extends SpecType> = {
|
|
12
|
+
spec: SpecDriver<T>;
|
|
13
|
+
driver: T['driver'];
|
|
14
14
|
logger?: Logger;
|
|
15
15
|
customConfig?: {
|
|
16
16
|
useCeilForViewportSize?: boolean;
|
|
17
17
|
disableHelper?: boolean;
|
|
18
18
|
};
|
|
19
19
|
};
|
|
20
|
-
export declare class Driver<
|
|
20
|
+
export declare class Driver<T extends SpecType> {
|
|
21
21
|
private _target;
|
|
22
22
|
private _mainContext;
|
|
23
23
|
private _currentContext;
|
|
@@ -26,12 +26,12 @@ export declare class Driver<TDriver, TContext, TElement, TSelector> {
|
|
|
26
26
|
private _customConfig;
|
|
27
27
|
private _helper?;
|
|
28
28
|
private _previousWorld?;
|
|
29
|
-
protected readonly _spec: SpecDriver<
|
|
30
|
-
constructor(options: DriverOptions<
|
|
31
|
-
get target():
|
|
32
|
-
get currentContext(): Context<
|
|
33
|
-
get mainContext(): Context<
|
|
34
|
-
get helper(): HelperAndroid<
|
|
29
|
+
protected readonly _spec: SpecDriver<T>;
|
|
30
|
+
constructor(options: DriverOptions<T>);
|
|
31
|
+
get target(): T['driver'];
|
|
32
|
+
get currentContext(): Context<T>;
|
|
33
|
+
get mainContext(): Context<T>;
|
|
34
|
+
get helper(): HelperAndroid<T> | HelperIOS<T> | null | undefined;
|
|
35
35
|
get features(): {
|
|
36
36
|
shadowSelector?: boolean | undefined;
|
|
37
37
|
allCookies?: boolean | undefined;
|
|
@@ -64,7 +64,7 @@ export declare class Driver<TDriver, TContext, TElement, TSelector> {
|
|
|
64
64
|
get isEC(): boolean;
|
|
65
65
|
get sessionId(): string | undefined;
|
|
66
66
|
get remoteHostname(): string | undefined;
|
|
67
|
-
updateCurrentContext(context: Context<
|
|
67
|
+
updateCurrentContext(context: Context<T>): void;
|
|
68
68
|
init(): Promise<this>;
|
|
69
69
|
switchWorld(options?: {
|
|
70
70
|
id?: string;
|
|
@@ -80,16 +80,16 @@ export declare class Driver<TDriver, TContext, TElement, TSelector> {
|
|
|
80
80
|
isWebView: boolean;
|
|
81
81
|
}>;
|
|
82
82
|
getSessionMetadata(): Promise<any>;
|
|
83
|
-
refreshContexts(): Promise<Context<
|
|
84
|
-
switchTo(context: Context<
|
|
85
|
-
switchToMainContext(): Promise<Context<
|
|
86
|
-
switchToParentContext(elevation?: number): Promise<Context<
|
|
87
|
-
switchToChildContext(...references: ContextReference<
|
|
83
|
+
refreshContexts(): Promise<Context<T>>;
|
|
84
|
+
switchTo(context: Context<T>): Promise<Context<T>>;
|
|
85
|
+
switchToMainContext(): Promise<Context<T>>;
|
|
86
|
+
switchToParentContext(elevation?: number): Promise<Context<T>>;
|
|
87
|
+
switchToChildContext(...references: ContextReference<T>[]): Promise<Context<T>>;
|
|
88
88
|
normalizeRegion(region: Region): Promise<Region>;
|
|
89
|
-
getRegionInViewport(context: Context<
|
|
90
|
-
element(selector: Selector<
|
|
91
|
-
elements(selector: Selector<
|
|
92
|
-
waitFor(selector: Selector<
|
|
89
|
+
getRegionInViewport(context: Context<T>, region: Region): Promise<Region>;
|
|
90
|
+
element(selector: Selector<T>): Promise<Element<T> | null>;
|
|
91
|
+
elements(selector: Selector<T>): Promise<Element<T>[]>;
|
|
92
|
+
waitFor(selector: Selector<T>, options?: WaitOptions): Promise<Element<T> | null>;
|
|
93
93
|
execute(script: ((arg: any) => any) | string, arg?: any): Promise<any>;
|
|
94
94
|
takeScreenshot(): Promise<Buffer>;
|
|
95
95
|
getViewportRegion(): Promise<Region>;
|
|
@@ -103,14 +103,14 @@ export declare class Driver<TDriver, TContext, TElement, TSelector> {
|
|
|
103
103
|
getUrl(): Promise<string>;
|
|
104
104
|
visit(url: string): Promise<void>;
|
|
105
105
|
}
|
|
106
|
-
export declare function isDriver<
|
|
107
|
-
export declare function makeDriver<
|
|
108
|
-
driver:
|
|
109
|
-
spec?: SpecDriver<
|
|
106
|
+
export declare function isDriver<T extends SpecType>(driver: any, spec?: SpecDriver<T>): driver is Driver<T> | T['driver'];
|
|
107
|
+
export declare function makeDriver<T extends SpecType>(options: {
|
|
108
|
+
driver: Driver<T> | T['driver'];
|
|
109
|
+
spec?: SpecDriver<T>;
|
|
110
110
|
logger?: Logger;
|
|
111
111
|
customConfig?: {
|
|
112
112
|
useCeilForViewportSize?: boolean;
|
|
113
113
|
disableHelper?: boolean;
|
|
114
114
|
};
|
|
115
|
-
}): Promise<Driver<
|
|
115
|
+
}): Promise<Driver<T>>;
|
|
116
116
|
export {};
|
package/types/element.d.ts
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
import type { Location, Size, Region } from '@applitools/utils';
|
|
2
|
-
import { type SpecDriver } from './spec-driver';
|
|
2
|
+
import { type SpecType, type SpecDriver } from './spec-driver';
|
|
3
3
|
import { type Context } from './context';
|
|
4
4
|
import { type Selector } from './selector';
|
|
5
5
|
import { type Logger } from '@applitools/logger';
|
|
6
|
-
export type ElementReference<
|
|
7
|
-
type ElementState
|
|
6
|
+
export type ElementReference<T extends SpecType> = T['element'] | Selector<T>;
|
|
7
|
+
type ElementState = {
|
|
8
8
|
contentSize?: Size;
|
|
9
9
|
scrollOffset?: Location;
|
|
10
10
|
transforms?: any;
|
|
11
11
|
attributes?: Record<string, string | Error>;
|
|
12
12
|
touchPadding?: number;
|
|
13
|
-
containedElements?: Map<
|
|
13
|
+
containedElements?: Map<any, boolean>;
|
|
14
14
|
};
|
|
15
|
-
type ElementOptions<
|
|
16
|
-
spec: SpecDriver<
|
|
17
|
-
context?: Context<
|
|
15
|
+
type ElementOptions<T extends SpecType> = {
|
|
16
|
+
spec: SpecDriver<T>;
|
|
17
|
+
context?: Context<T>;
|
|
18
18
|
logger: Logger;
|
|
19
19
|
} & ({
|
|
20
|
-
element:
|
|
21
|
-
selector?: Selector<
|
|
20
|
+
element: T['element'];
|
|
21
|
+
selector?: Selector<T>;
|
|
22
22
|
index?: number;
|
|
23
23
|
} | {
|
|
24
|
-
selector: Selector<
|
|
24
|
+
selector: Selector<T>;
|
|
25
25
|
index?: number;
|
|
26
26
|
});
|
|
27
|
-
export declare class Element<
|
|
27
|
+
export declare class Element<T extends SpecType> {
|
|
28
28
|
private _target?;
|
|
29
29
|
private _context?;
|
|
30
30
|
private _selector?;
|
|
@@ -33,18 +33,18 @@ export declare class Element<TDriver, TContext, TElement, TSelector> {
|
|
|
33
33
|
private _state;
|
|
34
34
|
private _originalOverflow;
|
|
35
35
|
private _logger;
|
|
36
|
-
protected readonly _spec: SpecDriver<
|
|
37
|
-
constructor(options: ElementOptions<
|
|
38
|
-
get target(): NonNullable<
|
|
39
|
-
get selector(): Selector<
|
|
36
|
+
protected readonly _spec: SpecDriver<T>;
|
|
37
|
+
constructor(options: ElementOptions<T>);
|
|
38
|
+
get target(): NonNullable<T["element"]>;
|
|
39
|
+
get selector(): Selector<T> | undefined;
|
|
40
40
|
get commonSelector(): Selector<never> | null;
|
|
41
41
|
get index(): number | undefined;
|
|
42
|
-
get context(): Context<
|
|
43
|
-
get driver(): import("./driver").Driver<
|
|
42
|
+
get context(): Context<T>;
|
|
43
|
+
get driver(): import("./driver").Driver<T>;
|
|
44
44
|
get isRef(): boolean;
|
|
45
|
-
equals(element: Element<
|
|
46
|
-
contains(innerElement: Element<
|
|
47
|
-
init(context: Context<
|
|
45
|
+
equals(element: Element<T> | T['element']): Promise<boolean>;
|
|
46
|
+
contains(innerElement: Element<T> | T['element']): Promise<boolean>;
|
|
47
|
+
init(context: Context<T>): Promise<this>;
|
|
48
48
|
getRegion(): Promise<Region>;
|
|
49
49
|
getClientRegion(): Promise<Region>;
|
|
50
50
|
getContentRegion(options?: {
|
|
@@ -64,7 +64,7 @@ export declare class Element<TDriver, TContext, TElement, TSelector> {
|
|
|
64
64
|
isPager(): Promise<boolean>;
|
|
65
65
|
isScrollable(): Promise<boolean>;
|
|
66
66
|
isRoot(): Promise<boolean>;
|
|
67
|
-
getShadowRoot(): Promise<
|
|
67
|
+
getShadowRoot(): Promise<T['element'] | null>;
|
|
68
68
|
getTouchPadding(): Promise<number>;
|
|
69
69
|
getText(): Promise<string>;
|
|
70
70
|
getAttribute(name: string): Promise<string>;
|
|
@@ -78,13 +78,13 @@ export declare class Element<TDriver, TContext, TElement, TSelector> {
|
|
|
78
78
|
getInnerOffset(): Promise<Location>;
|
|
79
79
|
click(): Promise<void>;
|
|
80
80
|
type(value: string): Promise<void>;
|
|
81
|
-
preserveState(): Promise<ElementState
|
|
82
|
-
restoreState(state?: ElementState
|
|
81
|
+
preserveState(): Promise<ElementState>;
|
|
82
|
+
restoreState(state?: ElementState): Promise<void>;
|
|
83
83
|
hideScrollbars(): Promise<void>;
|
|
84
84
|
restoreScrollbars(): Promise<void>;
|
|
85
|
-
refresh(
|
|
85
|
+
refresh(freshTarget?: T['element']): Promise<boolean>;
|
|
86
86
|
withRefresh<TResult>(operation: (...args: any[]) => TResult): Promise<TResult>;
|
|
87
|
-
toJSON():
|
|
87
|
+
toJSON(): T['element'];
|
|
88
88
|
}
|
|
89
|
-
export declare function isElementReference<
|
|
89
|
+
export declare function isElementReference<T extends SpecType>(reference: any, spec?: SpecDriver<T>): reference is ElementReference<T>;
|
|
90
90
|
export {};
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import type { Location, Region } from '@applitools/utils';
|
|
2
|
-
import { type
|
|
2
|
+
import { type Logger } from '@applitools/logger';
|
|
3
|
+
import { type SpecType, type SpecDriver } from './spec-driver';
|
|
3
4
|
import { type Driver } from './driver';
|
|
4
5
|
import { type Element } from './element';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
driver: Driver<TDriver, TContext, TElement, TSelector>;
|
|
6
|
+
export declare class HelperAndroid<T extends SpecType> {
|
|
7
|
+
static make<T extends SpecType>(options: {
|
|
8
|
+
spec: SpecDriver<T>;
|
|
9
|
+
driver: Driver<T>;
|
|
10
10
|
logger: Logger;
|
|
11
|
-
}): Promise<HelperAndroid<
|
|
11
|
+
}): Promise<HelperAndroid<T> | null>;
|
|
12
12
|
private readonly _spec;
|
|
13
13
|
private readonly _input;
|
|
14
14
|
private readonly _action;
|
|
@@ -17,16 +17,16 @@ export declare class HelperAndroid<TDriver, TContext, TElement, TSelector> {
|
|
|
17
17
|
private _logger;
|
|
18
18
|
readonly name: 'android' | 'android-legacy';
|
|
19
19
|
constructor(options: {
|
|
20
|
-
spec: SpecDriver<
|
|
21
|
-
input: Element<
|
|
22
|
-
action: Element<
|
|
20
|
+
spec: SpecDriver<T>;
|
|
21
|
+
input: Element<T>;
|
|
22
|
+
action: Element<T> | null;
|
|
23
23
|
legacy: boolean;
|
|
24
24
|
supportAsync: boolean;
|
|
25
25
|
logger: Logger;
|
|
26
26
|
});
|
|
27
27
|
private _getElementId;
|
|
28
28
|
private _command;
|
|
29
|
-
getContentRegion(element: Element<
|
|
29
|
+
getContentRegion(element: Element<T>, options?: {
|
|
30
30
|
lazyLoad?: {
|
|
31
31
|
scrollLength?: number;
|
|
32
32
|
waitingTime?: number;
|
|
@@ -34,7 +34,7 @@ export declare class HelperAndroid<TDriver, TContext, TElement, TSelector> {
|
|
|
34
34
|
};
|
|
35
35
|
}): Promise<Region | null>;
|
|
36
36
|
getTouchPadding(): Promise<number | undefined>;
|
|
37
|
-
getRegion(element: Element<
|
|
38
|
-
scrollToTop(element: Element<
|
|
39
|
-
scrollBy(element: Element<
|
|
37
|
+
getRegion(element: Element<T>): Promise<Region | null>;
|
|
38
|
+
scrollToTop(element: Element<T>): Promise<void>;
|
|
39
|
+
scrollBy(element: Element<T>, offset: Location): Promise<void>;
|
|
40
40
|
}
|
package/types/helper-ios.d.ts
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import type { Region } from '@applitools/utils';
|
|
2
|
-
import { type
|
|
2
|
+
import { type Logger } from '@applitools/logger';
|
|
3
|
+
import { type SpecType, type SpecDriver } from './spec-driver';
|
|
3
4
|
import { type Driver } from './driver';
|
|
4
5
|
import { type Element } from './element';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
driver: Driver<TDriver, TContext, TElement, TSelector>;
|
|
6
|
+
export declare class HelperIOS<T extends SpecType> {
|
|
7
|
+
static make<T extends SpecType>(options: {
|
|
8
|
+
spec: SpecDriver<T>;
|
|
9
|
+
driver: Driver<T>;
|
|
10
10
|
logger: Logger;
|
|
11
|
-
}): Promise<HelperIOS<
|
|
11
|
+
}): Promise<HelperIOS<T> | null>;
|
|
12
12
|
private readonly _driver;
|
|
13
13
|
private readonly _element;
|
|
14
14
|
private readonly _spec;
|
|
15
15
|
private _logger;
|
|
16
16
|
readonly name: 'ios';
|
|
17
17
|
constructor(options: {
|
|
18
|
-
driver: Driver<
|
|
19
|
-
element: Element<
|
|
20
|
-
spec: SpecDriver<
|
|
18
|
+
driver: Driver<T>;
|
|
19
|
+
element: Element<T>;
|
|
20
|
+
spec: SpecDriver<T>;
|
|
21
21
|
logger: Logger;
|
|
22
22
|
});
|
|
23
|
-
getContentRegion(element: Element<
|
|
23
|
+
getContentRegion(element: Element<T>): Promise<Region | null>;
|
|
24
24
|
}
|
package/types/selector.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { type SpecType } from './spec-driver';
|
|
2
|
+
export type Selector<T extends SpecType = never> = T['selector'] | string | CommonSelector<T>;
|
|
3
|
+
export type CommonSelector<T extends SpecType = never> = {
|
|
4
|
+
selector: T['selector'] | string;
|
|
3
5
|
type?: string;
|
|
4
|
-
child?:
|
|
5
|
-
shadow?:
|
|
6
|
-
frame?:
|
|
7
|
-
fallback?:
|
|
6
|
+
child?: T['selector'] | string | CommonSelector<T>;
|
|
7
|
+
shadow?: T['selector'] | string | CommonSelector<T>;
|
|
8
|
+
frame?: T['selector'] | string | CommonSelector<T>;
|
|
9
|
+
fallback?: T['selector'] | string | CommonSelector<T>;
|
|
8
10
|
};
|
|
9
|
-
export type CommonSelector = Selector;
|
package/types/spec-driver.d.ts
CHANGED
|
@@ -2,6 +2,73 @@
|
|
|
2
2
|
import type { Location, Size, Region } from '@applitools/utils';
|
|
3
3
|
import type { ScreenOrientation, Cookie } from './types';
|
|
4
4
|
import { type Selector } from './selector';
|
|
5
|
+
export type SpecType<TDriver = unknown, TContext = unknown, TElement = unknown, TSelector = unknown> = {
|
|
6
|
+
driver: TDriver;
|
|
7
|
+
context: TContext;
|
|
8
|
+
element: TElement;
|
|
9
|
+
selector: TSelector;
|
|
10
|
+
};
|
|
11
|
+
export interface SpecDriver<T extends SpecType> {
|
|
12
|
+
isDriver(driver: any): driver is T['driver'];
|
|
13
|
+
isContext?(context: any): context is T['context'];
|
|
14
|
+
isElement(element: any): element is T['element'];
|
|
15
|
+
isSelector(selector: any): selector is T['selector'];
|
|
16
|
+
transformDriver?(driver: any): T['driver'];
|
|
17
|
+
transformElement?(element: any): T['element'];
|
|
18
|
+
transformSelector?(selector: Selector<T>): T['selector'];
|
|
19
|
+
untransformSelector?(selector: T['selector'] | Selector<T>): Selector | null;
|
|
20
|
+
extractContext?(element: T['driver'] | T['context']): T['context'];
|
|
21
|
+
extractSelector?(element: T['element']): T['selector'];
|
|
22
|
+
isStaleElementError(error: any, selector?: T['selector']): boolean;
|
|
23
|
+
isEqualElements?(context: T['context'], element1: T['element'], element2: T['element']): Promise<boolean>;
|
|
24
|
+
extractHostName?(driver: T['driver']): string | null;
|
|
25
|
+
mainContext(context: T['context']): Promise<T['context']>;
|
|
26
|
+
parentContext?(context: T['context']): Promise<T['context']>;
|
|
27
|
+
childContext(context: T['context'], element: T['element']): Promise<T['context']>;
|
|
28
|
+
executeScript(context: T['context'], script: ((arg?: any) => any) | string, arg?: any): Promise<any>;
|
|
29
|
+
findElement(context: T['context'], selector: T['selector'], parent?: T['element']): Promise<T['element'] | null>;
|
|
30
|
+
findElements(context: T['context'], selector: T['selector'], parent?: T['element']): Promise<T['element'][]>;
|
|
31
|
+
waitForSelector?(context: T['context'], selector: T['selector'], parent?: T['element'], options?: WaitOptions): Promise<T['element'] | null>;
|
|
32
|
+
setElementText?(context: T['context'], element: T['element'], text: string): Promise<void>;
|
|
33
|
+
getElementText?(context: T['context'], element: T['element']): Promise<string>;
|
|
34
|
+
setWindowSize?(driver: T['driver'], size: Size): Promise<void>;
|
|
35
|
+
getWindowSize?(driver: T['driver']): Promise<Size>;
|
|
36
|
+
setViewportSize?(driver: T['driver'], size: Size): Promise<void>;
|
|
37
|
+
getViewportSize?(driver: T['driver']): Promise<Size>;
|
|
38
|
+
getCookies?(driver: T['driver'] | T['context'], context?: boolean): Promise<Cookie[]>;
|
|
39
|
+
getDriverInfo?(driver: T['driver']): Promise<DriverInfo>;
|
|
40
|
+
getCapabilities?(driver: T['driver']): Promise<Record<string, any>>;
|
|
41
|
+
getTitle(driver: T['driver']): Promise<string>;
|
|
42
|
+
getUrl(driver: T['driver']): Promise<string>;
|
|
43
|
+
takeScreenshot(driver: T['driver']): Promise<Buffer | string>;
|
|
44
|
+
click?(context: T['context'], element: T['element'] | T['selector']): Promise<void>;
|
|
45
|
+
visit?(driver: T['driver'], url: string): Promise<void>;
|
|
46
|
+
getOrientation?(driver: T['driver']): Promise<ScreenOrientation>;
|
|
47
|
+
setOrientation?(driver: T['driver'], orientation: ScreenOrientation): Promise<void>;
|
|
48
|
+
getSystemBars?(driver: T['driver']): Promise<{
|
|
49
|
+
statusBar: {
|
|
50
|
+
visible: boolean;
|
|
51
|
+
x: number;
|
|
52
|
+
y: number;
|
|
53
|
+
height: number;
|
|
54
|
+
width: number;
|
|
55
|
+
};
|
|
56
|
+
navigationBar: {
|
|
57
|
+
visible: boolean;
|
|
58
|
+
x: number;
|
|
59
|
+
y: number;
|
|
60
|
+
height: number;
|
|
61
|
+
width: number;
|
|
62
|
+
};
|
|
63
|
+
}>;
|
|
64
|
+
getElementRegion?(driver: T['driver'], element: T['element']): Promise<Region>;
|
|
65
|
+
getElementAttribute?(driver: T['driver'], element: T['element'], attr: string): Promise<string>;
|
|
66
|
+
performAction?(driver: T['driver'], steps: any[]): Promise<void>;
|
|
67
|
+
getCurrentWorld?(driver: T['driver']): Promise<string>;
|
|
68
|
+
getWorlds?(driver: T['driver']): Promise<string[]>;
|
|
69
|
+
switchWorld?(driver: T['driver'], id: string): Promise<void>;
|
|
70
|
+
getSessionMetadata?(driver: T['driver']): Promise<any>;
|
|
71
|
+
}
|
|
5
72
|
export type DriverInfo = {
|
|
6
73
|
sessionId?: string;
|
|
7
74
|
remoteHostname?: string;
|
|
@@ -43,64 +110,3 @@ export type WaitOptions = {
|
|
|
43
110
|
interval?: number;
|
|
44
111
|
timeout?: number;
|
|
45
112
|
};
|
|
46
|
-
export interface SpecDriver<TDriver, TContext, TElement, TSelector> {
|
|
47
|
-
isDriver(driver: any): driver is TDriver;
|
|
48
|
-
isContext?(context: any): context is TContext;
|
|
49
|
-
isElement(element: any): element is TElement;
|
|
50
|
-
isSelector(selector: any): selector is TSelector;
|
|
51
|
-
transformDriver?(driver: any): TDriver;
|
|
52
|
-
transformElement?(element: any): TElement;
|
|
53
|
-
transformSelector?(selector: Selector<TSelector>): TSelector;
|
|
54
|
-
untransformSelector?(selector: TSelector | Selector<TSelector>): Selector | null;
|
|
55
|
-
extractContext?(element: TDriver | TContext): TContext;
|
|
56
|
-
extractSelector?(element: TElement): TSelector;
|
|
57
|
-
isStaleElementError(error: any, selector?: TSelector): boolean;
|
|
58
|
-
isEqualElements?(context: TContext, element1: TElement, element2: TElement): Promise<boolean>;
|
|
59
|
-
extractHostName?(driver: TDriver): string | null;
|
|
60
|
-
mainContext(context: TContext): Promise<TContext>;
|
|
61
|
-
parentContext?(context: TContext): Promise<TContext>;
|
|
62
|
-
childContext(context: TContext, element: TElement): Promise<TContext>;
|
|
63
|
-
executeScript(context: TContext, script: ((arg?: any) => any) | string, arg?: any): Promise<any>;
|
|
64
|
-
findElement(context: TContext, selector: TSelector, parent?: TElement): Promise<TElement | null>;
|
|
65
|
-
findElements(context: TContext, selector: TSelector, parent?: TElement): Promise<TElement[]>;
|
|
66
|
-
waitForSelector?(context: TContext, selector: TSelector, parent?: TElement, options?: WaitOptions): Promise<TElement | null>;
|
|
67
|
-
setElementText?(context: TContext, element: TElement, text: string): Promise<void>;
|
|
68
|
-
getElementText?(context: TContext, element: TElement): Promise<string>;
|
|
69
|
-
setWindowSize?(driver: TDriver, size: Size): Promise<void>;
|
|
70
|
-
getWindowSize?(driver: TDriver): Promise<Size>;
|
|
71
|
-
setViewportSize?(driver: TDriver, size: Size): Promise<void>;
|
|
72
|
-
getViewportSize?(driver: TDriver): Promise<Size>;
|
|
73
|
-
getCookies?(driver: TDriver | TContext, context?: boolean): Promise<Cookie[]>;
|
|
74
|
-
getDriverInfo?(driver: TDriver): Promise<DriverInfo>;
|
|
75
|
-
getCapabilities?(driver: TDriver): Promise<Record<string, any>>;
|
|
76
|
-
getTitle(driver: TDriver): Promise<string>;
|
|
77
|
-
getUrl(driver: TDriver): Promise<string>;
|
|
78
|
-
takeScreenshot(driver: TDriver): Promise<Buffer | string>;
|
|
79
|
-
click?(context: TContext, element: TElement | TSelector): Promise<void>;
|
|
80
|
-
visit?(driver: TDriver, url: string): Promise<void>;
|
|
81
|
-
getOrientation?(driver: TDriver): Promise<ScreenOrientation>;
|
|
82
|
-
setOrientation?(driver: TDriver, orientation: ScreenOrientation): Promise<void>;
|
|
83
|
-
getSystemBars?(driver: TDriver): Promise<{
|
|
84
|
-
statusBar: {
|
|
85
|
-
visible: boolean;
|
|
86
|
-
x: number;
|
|
87
|
-
y: number;
|
|
88
|
-
height: number;
|
|
89
|
-
width: number;
|
|
90
|
-
};
|
|
91
|
-
navigationBar: {
|
|
92
|
-
visible: boolean;
|
|
93
|
-
x: number;
|
|
94
|
-
y: number;
|
|
95
|
-
height: number;
|
|
96
|
-
width: number;
|
|
97
|
-
};
|
|
98
|
-
}>;
|
|
99
|
-
getElementRegion?(driver: TDriver, element: TElement): Promise<Region>;
|
|
100
|
-
getElementAttribute?(driver: TDriver, element: TElement, attr: string): Promise<string>;
|
|
101
|
-
performAction?(driver: TDriver, steps: any[]): Promise<void>;
|
|
102
|
-
getCurrentWorld?(driver: TDriver): Promise<string>;
|
|
103
|
-
getWorlds?(driver: TDriver): Promise<string[]>;
|
|
104
|
-
switchWorld?(driver: TDriver, id: string): Promise<void>;
|
|
105
|
-
getSessionMetadata?(driver: TDriver): Promise<any>;
|
|
106
|
-
}
|
package/types/spec-utils.d.ts
CHANGED
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
import { type SpecDriver } from './spec-driver';
|
|
2
|
-
import { type Selector } from './selector';
|
|
3
|
-
type CommonSelector<TSelector = never> = Exclude<Selector<TSelector>, TSelector | string>;
|
|
1
|
+
import { type SpecType, type SpecDriver } from './spec-driver';
|
|
2
|
+
import { type Selector, type CommonSelector } from './selector';
|
|
4
3
|
export declare function isSimpleCommonSelector(selector: any): selector is CommonSelector;
|
|
5
|
-
export declare function isCommonSelector<
|
|
6
|
-
export declare function isSelector<
|
|
7
|
-
export declare function transformSelector<
|
|
4
|
+
export declare function isCommonSelector<T extends SpecType>(spec: Pick<SpecDriver<T>, 'isSelector'>, selector: any): selector is CommonSelector<T>;
|
|
5
|
+
export declare function isSelector<T extends SpecType>(spec: Pick<SpecDriver<T>, 'isSelector'>, selector: any): selector is Selector<T>;
|
|
6
|
+
export declare function transformSelector<T extends SpecType>(spec: Pick<SpecDriver<T>, 'isSelector' | 'transformSelector'>, selector: Selector<T>, environment?: {
|
|
8
7
|
isWeb?: boolean;
|
|
9
8
|
isNative?: boolean;
|
|
10
9
|
isIOS?: boolean;
|
|
11
10
|
isAndroid?: boolean;
|
|
12
|
-
}):
|
|
13
|
-
export declare function splitSelector<
|
|
14
|
-
contextSelectors: Selector<
|
|
15
|
-
elementSelector: Selector<
|
|
11
|
+
}): T['selector'];
|
|
12
|
+
export declare function splitSelector<T extends SpecType>(spec: Pick<SpecDriver<T>, 'isSelector'>, selector: Selector<T>): {
|
|
13
|
+
contextSelectors: Selector<T>[];
|
|
14
|
+
elementSelector: Selector<T>;
|
|
16
15
|
};
|
|
17
|
-
export declare function withFastCache<TSpecDriver extends SpecDriver<
|
|
18
|
-
export {};
|
|
16
|
+
export declare function withFastCache<TSpecDriver extends SpecDriver<SpecType>>(spec: TSpecDriver): TSpecDriver;
|