@appium/fake-driver 6.1.0 → 6.1.2
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/build/lib/command-maps/execute-method-map.d.ts +22 -0
- package/build/lib/command-maps/execute-method-map.d.ts.map +1 -0
- package/build/lib/command-maps/execute-method-map.js +20 -0
- package/build/lib/command-maps/execute-method-map.js.map +1 -0
- package/build/lib/command-maps/new-bidi-commands.d.ts +26 -0
- package/build/lib/command-maps/new-bidi-commands.d.ts.map +1 -0
- package/build/lib/command-maps/new-bidi-commands.js +29 -0
- package/build/lib/command-maps/new-bidi-commands.js.map +1 -0
- package/build/lib/command-maps/new-method-map.d.ts +30 -0
- package/build/lib/command-maps/new-method-map.d.ts.map +1 -0
- package/build/lib/command-maps/new-method-map.js +19 -0
- package/build/lib/command-maps/new-method-map.js.map +1 -0
- package/build/lib/commands/alert.d.ts +3 -0
- package/build/lib/commands/alert.d.ts.map +1 -1
- package/build/lib/commands/alert.js +3 -0
- package/build/lib/commands/alert.js.map +1 -1
- package/build/lib/commands/contexts.d.ts +4 -0
- package/build/lib/commands/contexts.d.ts.map +1 -1
- package/build/lib/commands/contexts.js +4 -0
- package/build/lib/commands/contexts.js.map +1 -1
- package/build/lib/commands/element.d.ts +14 -0
- package/build/lib/commands/element.d.ts.map +1 -1
- package/build/lib/commands/element.js +14 -0
- package/build/lib/commands/element.js.map +1 -1
- package/build/lib/commands/find.d.ts +6 -0
- package/build/lib/commands/find.d.ts.map +1 -1
- package/build/lib/commands/find.js +5 -0
- package/build/lib/commands/find.js.map +1 -1
- package/build/lib/commands/general.d.ts +15 -0
- package/build/lib/commands/general.d.ts.map +1 -1
- package/build/lib/commands/general.js +15 -0
- package/build/lib/commands/general.js.map +1 -1
- package/build/lib/driver.d.ts +84 -84
- package/build/lib/driver.d.ts.map +1 -1
- package/build/lib/driver.js +27 -77
- package/build/lib/driver.js.map +1 -1
- package/build/lib/fake-app.d.ts +4 -4
- package/build/lib/fake-app.d.ts.map +1 -1
- package/build/lib/fake-app.js +13 -13
- package/build/lib/fake-app.js.map +1 -1
- package/build/lib/fake-element.d.ts +2 -2
- package/build/lib/fake-element.d.ts.map +1 -1
- package/build/lib/fake-element.js +14 -14
- package/build/lib/fake-element.js.map +1 -1
- package/build/lib/index.d.ts +1 -0
- package/build/lib/index.d.ts.map +1 -1
- package/build/lib/index.js +1 -0
- package/build/lib/index.js.map +1 -1
- package/lib/command-maps/execute-method-map.ts +19 -0
- package/lib/command-maps/new-bidi-commands.ts +27 -0
- package/lib/command-maps/new-method-map.ts +18 -0
- package/lib/commands/alert.ts +3 -0
- package/lib/commands/contexts.ts +4 -0
- package/lib/commands/element.ts +14 -0
- package/lib/commands/find.ts +7 -0
- package/lib/commands/general.ts +15 -0
- package/lib/driver.ts +36 -87
- package/lib/fake-app.ts +16 -16
- package/lib/fake-element.ts +20 -20
- package/lib/index.ts +1 -0
- package/package.json +4 -4
- package/tsconfig.json +4 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fake-element.d.ts","sourceRoot":"","sources":["../../lib/fake-element.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,QAAQ,IAAI,WAAW,EAAkB,MAAM,gBAAgB,CAAC;AAC7E,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,YAAY,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,EAAE,CAAC;CAC7C;AAED,wGAAwG;AACxG,qBAAa,WAAW;IACtB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAEhB,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO;IAqB9C,OAAO,
|
|
1
|
+
{"version":3,"file":"fake-element.d.ts","sourceRoot":"","sources":["../../lib/fake-element.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,QAAQ,IAAI,WAAW,EAAkB,MAAM,gBAAgB,CAAC;AAC7E,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,YAAY,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,EAAE,CAAC;CAC7C;AAED,wGAAwG;AACxG,qBAAa,WAAW;IACtB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAEhB,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO;IAqB9C,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,WAAW,IAAI,WAAW,CAQ7B;IAED,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAInC,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAI1B,SAAS,IAAI,OAAO;IAIpB,SAAS,IAAI,OAAO;IAIpB,UAAU,IAAI,OAAO;IAIrB,WAAW,IAAI;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAC;IAOrC,cAAc,IAAI;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC;IAIvE,OAAO,IAAI;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC;IAO1C,KAAK,IAAI,IAAI;IASb,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO;IAInC,SAAS,IAAI,OAAO;IAIpB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAOnC,OAAO,CAAC,QAAQ;CAWjB"}
|
|
@@ -32,20 +32,13 @@ class FakeElement {
|
|
|
32
32
|
}
|
|
33
33
|
this.parseCss();
|
|
34
34
|
}
|
|
35
|
-
parseCss() {
|
|
36
|
-
if (this.nodeAttrs.style) {
|
|
37
|
-
const segments = this.nodeAttrs.style.split(';');
|
|
38
|
-
for (const s of segments) {
|
|
39
|
-
let [prop, val] = s.split(':');
|
|
40
|
-
prop = prop.trim();
|
|
41
|
-
val = val.trim();
|
|
42
|
-
this.css[prop] = val;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
35
|
get tagName() {
|
|
47
36
|
return this.node.tagName;
|
|
48
37
|
}
|
|
38
|
+
get xmlFragment() {
|
|
39
|
+
const frag = new xmldom_1.default.XMLSerializer().serializeToString(this.node);
|
|
40
|
+
return new xmldom_1.default.DOMParser().parseFromString(frag, xmldom_1.default.MIME_TYPE.XML_TEXT);
|
|
41
|
+
}
|
|
49
42
|
setAttr(k, v) {
|
|
50
43
|
this.attrs[k] = v;
|
|
51
44
|
}
|
|
@@ -96,9 +89,16 @@ class FakeElement {
|
|
|
96
89
|
}
|
|
97
90
|
return null;
|
|
98
91
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
92
|
+
parseCss() {
|
|
93
|
+
if (this.nodeAttrs.style) {
|
|
94
|
+
const segments = this.nodeAttrs.style.split(';');
|
|
95
|
+
for (const s of segments) {
|
|
96
|
+
let [prop, val] = s.split(':');
|
|
97
|
+
prop = prop.trim();
|
|
98
|
+
val = val.trim();
|
|
99
|
+
this.css[prop] = val;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
104
|
exports.FakeElement = FakeElement;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fake-element.js","sourceRoot":"","sources":["../../lib/fake-element.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAuB;AACvB,4DAAoC;AASpC,wGAAwG;AACxG,MAAa,WAAW;IACb,GAAG,CAAU;IACb,IAAI,CAAS;IACb,SAAS,CAAyB;IAClC,IAAI,CAAc;IAC3B,KAAK,CAAyB;IAC9B,GAAG,CAAyB;IAE5B,YAAY,OAAoB,EAAE,GAAY;QAC5C,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,mFAAmF;QACnF,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAEtB,CAAC;QACH,KAAK,MAAM,IAAI,IAAI,gBAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;YACjD,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;YAC/B,CAAC;QACH,CAAC;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;
|
|
1
|
+
{"version":3,"file":"fake-element.js","sourceRoot":"","sources":["../../lib/fake-element.ts"],"names":[],"mappings":"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"}
|
package/build/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { FakeDriver } from './driver';
|
|
2
2
|
import { startServer } from './server';
|
|
3
|
+
/** main. */
|
|
3
4
|
export declare function main(): Promise<import("../../types/build/lib").AppiumServer>;
|
|
4
5
|
export { FakeDriver, startServer };
|
|
5
6
|
export type { FakeDriverCaps, W3CFakeDriverCaps } from './types';
|
package/build/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,WAAW,EAAC,MAAM,UAAU,CAAC;AAKrC,wBAAsB,IAAI,0DAQzB;AAED,OAAO,EAAC,UAAU,EAAE,WAAW,EAAC,CAAC;AACjC,YAAY,EAAC,cAAc,EAAE,iBAAiB,EAAC,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,WAAW,EAAC,MAAM,UAAU,CAAC;AAKrC,YAAY;AACZ,wBAAsB,IAAI,0DAQzB;AAED,OAAO,EAAC,UAAU,EAAE,WAAW,EAAC,CAAC;AACjC,YAAY,EAAC,cAAc,EAAE,iBAAiB,EAAC,MAAM,SAAS,CAAC"}
|
package/build/lib/index.js
CHANGED
|
@@ -8,6 +8,7 @@ const server_1 = require("./server");
|
|
|
8
8
|
Object.defineProperty(exports, "startServer", { enumerable: true, get: function () { return server_1.startServer; } });
|
|
9
9
|
const DEFAULT_HOST = 'localhost';
|
|
10
10
|
const DEFAULT_PORT = 4774;
|
|
11
|
+
/** main. */
|
|
11
12
|
async function main() {
|
|
12
13
|
const getArgValue = (argName) => {
|
|
13
14
|
const argIndex = process.argv.indexOf(argName);
|
package/build/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":";;;AAOA,oBAQC;AAfD,qCAAoC;AAiB5B,2FAjBA,mBAAU,OAiBA;AAhBlB,qCAAqC;AAgBjB,4FAhBZ,oBAAW,OAgBY;AAd/B,MAAM,YAAY,GAAG,WAAW,CAAC;AACjC,MAAM,YAAY,GAAG,IAAI,CAAC;AAE1B,YAAY;AACL,KAAK,UAAU,IAAI;IACxB,MAAM,WAAW,GAAG,CAAC,OAAe,EAAiB,EAAE;QACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/C,OAAO,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAClE,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,YAAY,CAAC;IACzE,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC;IACnD,OAAO,MAAM,IAAA,oBAAW,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type {ExecuteMethodMap} from '@appium/types';
|
|
2
|
+
import type {FakeDriver} from '../driver';
|
|
3
|
+
|
|
4
|
+
export const EXECUTE_METHOD_MAP = {
|
|
5
|
+
'fake: addition': {
|
|
6
|
+
command: 'fakeAddition',
|
|
7
|
+
params: {required: ['num1', 'num2'], optional: ['num3']},
|
|
8
|
+
},
|
|
9
|
+
'fake: getThing': {
|
|
10
|
+
command: 'getFakeThing',
|
|
11
|
+
},
|
|
12
|
+
'fake: setThing': {
|
|
13
|
+
command: 'setFakeThing',
|
|
14
|
+
params: {required: ['thing']},
|
|
15
|
+
},
|
|
16
|
+
'fake: getDeprecatedCommandsCalled': {
|
|
17
|
+
command: 'getDeprecatedCommandsCalled',
|
|
18
|
+
},
|
|
19
|
+
} as const satisfies ExecuteMethodMap<FakeDriver>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type {BidiModuleMap} from '@appium/types';
|
|
2
|
+
|
|
3
|
+
export const NEW_BIDI_COMMANDS = {
|
|
4
|
+
'appium:fake': {
|
|
5
|
+
getFakeThing: {
|
|
6
|
+
command: 'getFakeThing',
|
|
7
|
+
},
|
|
8
|
+
setFakeThing: {
|
|
9
|
+
command: 'setFakeThing',
|
|
10
|
+
params: {
|
|
11
|
+
required: ['thing'],
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
doSomeMath: {
|
|
15
|
+
command: 'doSomeMath',
|
|
16
|
+
params: {
|
|
17
|
+
required: ['num1', 'num2'],
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
doSomeMath2: {
|
|
21
|
+
command: 'doSomeMath2',
|
|
22
|
+
params: {
|
|
23
|
+
required: ['num1', 'num2'],
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
} as const satisfies BidiModuleMap;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type {MethodMap} from '@appium/types';
|
|
2
|
+
import type {FakeDriver} from '../driver';
|
|
3
|
+
|
|
4
|
+
export const NEW_METHOD_MAP = {
|
|
5
|
+
'/session/:sessionId/fakedriver': {
|
|
6
|
+
GET: {command: 'getFakeThing'},
|
|
7
|
+
POST: {command: 'setFakeThing', payloadParams: {required: ['thing'] as const}},
|
|
8
|
+
},
|
|
9
|
+
'/session/:sessionId/fakedriverargs': {
|
|
10
|
+
GET: {command: 'getFakeDriverArgs'},
|
|
11
|
+
},
|
|
12
|
+
'/session/:sessionId/deprecated': {
|
|
13
|
+
POST: {command: 'callDeprecatedCommand', deprecated: true},
|
|
14
|
+
},
|
|
15
|
+
'/session/:sessionId/doubleclick': {
|
|
16
|
+
POST: {command: 'doubleClick'},
|
|
17
|
+
},
|
|
18
|
+
} as const satisfies MethodMap<FakeDriver>;
|
package/lib/commands/alert.ts
CHANGED
|
@@ -15,11 +15,13 @@ export function assertAlert(this: FakeDriver): void {
|
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
/** getAlertText. */
|
|
18
19
|
export async function getAlertText(this: FakeDriver): Promise<string> {
|
|
19
20
|
this.assertAlert();
|
|
20
21
|
return this.appModel.alertText();
|
|
21
22
|
}
|
|
22
23
|
|
|
24
|
+
/** setAlertText. */
|
|
23
25
|
export async function setAlertText(this: FakeDriver, text: string): Promise<void> {
|
|
24
26
|
this.assertAlert();
|
|
25
27
|
try {
|
|
@@ -29,6 +31,7 @@ export async function setAlertText(this: FakeDriver, text: string): Promise<void
|
|
|
29
31
|
}
|
|
30
32
|
}
|
|
31
33
|
|
|
34
|
+
/** postAcceptAlert. */
|
|
32
35
|
export async function postAcceptAlert(this: FakeDriver): Promise<void> {
|
|
33
36
|
this.assertAlert();
|
|
34
37
|
this.appModel.handleAlert();
|
package/lib/commands/contexts.ts
CHANGED
|
@@ -21,14 +21,17 @@ export function assertWebviewContext(this: FakeDriver): void {
|
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
+
/** getCurrentContext. */
|
|
24
25
|
export async function getCurrentContext(this: FakeDriver): Promise<string> {
|
|
25
26
|
return this.curContext;
|
|
26
27
|
}
|
|
27
28
|
|
|
29
|
+
/** getContexts. */
|
|
28
30
|
export async function getContexts(this: FakeDriver): Promise<string[]> {
|
|
29
31
|
return _.keys(this.getRawContexts());
|
|
30
32
|
}
|
|
31
33
|
|
|
34
|
+
/** setContext. */
|
|
32
35
|
export async function setContext(this: FakeDriver, context: string): Promise<void> {
|
|
33
36
|
const contexts = this.getRawContexts();
|
|
34
37
|
if (context in contexts) {
|
|
@@ -47,6 +50,7 @@ export async function setContext(this: FakeDriver, context: string): Promise<voi
|
|
|
47
50
|
}
|
|
48
51
|
}
|
|
49
52
|
|
|
53
|
+
/** setFrame. */
|
|
50
54
|
export async function setFrame(this: FakeDriver, frameId: number | null): Promise<void> {
|
|
51
55
|
this.assertWebviewContext();
|
|
52
56
|
if (frameId === null) {
|
package/lib/commands/element.ts
CHANGED
|
@@ -14,30 +14,36 @@ export function getElements(this: FakeDriver, elementIds: string[]): FakeElement
|
|
|
14
14
|
return elementIds.map((e) => this.elMap[e]);
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
+
/** getElement. */
|
|
17
18
|
export function getElement(this: FakeDriver, elementId: string): FakeElement {
|
|
18
19
|
return this.getElements([elementId])[0];
|
|
19
20
|
}
|
|
20
21
|
|
|
22
|
+
/** getName. */
|
|
21
23
|
export async function getName(this: FakeDriver, elementId: string): Promise<string> {
|
|
22
24
|
const el = this.getElement(elementId);
|
|
23
25
|
return el.tagName;
|
|
24
26
|
}
|
|
25
27
|
|
|
28
|
+
/** elementDisplayed. */
|
|
26
29
|
export async function elementDisplayed(this: FakeDriver, elementId: string): Promise<boolean> {
|
|
27
30
|
const el = this.getElement(elementId);
|
|
28
31
|
return el.isVisible();
|
|
29
32
|
}
|
|
30
33
|
|
|
34
|
+
/** elementEnabled. */
|
|
31
35
|
export async function elementEnabled(this: FakeDriver, elementId: string): Promise<boolean> {
|
|
32
36
|
const el = this.getElement(elementId);
|
|
33
37
|
return el.isEnabled();
|
|
34
38
|
}
|
|
35
39
|
|
|
40
|
+
/** elementSelected. */
|
|
36
41
|
export async function elementSelected(this: FakeDriver, elementId: string): Promise<boolean> {
|
|
37
42
|
const el = this.getElement(elementId);
|
|
38
43
|
return el.isSelected();
|
|
39
44
|
}
|
|
40
45
|
|
|
46
|
+
/** setValue. */
|
|
41
47
|
export async function setValue(
|
|
42
48
|
this: FakeDriver,
|
|
43
49
|
keys: string | string[],
|
|
@@ -52,15 +58,18 @@ export async function setValue(
|
|
|
52
58
|
el.setAttr('value', value);
|
|
53
59
|
}
|
|
54
60
|
|
|
61
|
+
/** getText. */
|
|
55
62
|
export async function getText(this: FakeDriver, elementId: string): Promise<string> {
|
|
56
63
|
const el = this.getElement(elementId);
|
|
57
64
|
return el.getAttr('value');
|
|
58
65
|
}
|
|
59
66
|
|
|
67
|
+
/** clear. */
|
|
60
68
|
export async function clear(this: FakeDriver, elementId: string): Promise<void> {
|
|
61
69
|
await this.setValue('', elementId);
|
|
62
70
|
}
|
|
63
71
|
|
|
72
|
+
/** click. */
|
|
64
73
|
export async function click(this: FakeDriver, elementId: string): Promise<void> {
|
|
65
74
|
this.assertNoAlert();
|
|
66
75
|
const el = this.getElement(elementId);
|
|
@@ -81,16 +90,19 @@ export async function getAttribute(
|
|
|
81
90
|
return el.getAttr(attributeName);
|
|
82
91
|
}
|
|
83
92
|
|
|
93
|
+
/** getElementRect. */
|
|
84
94
|
export async function getElementRect(this: FakeDriver, elementId: string): Promise<Rect> {
|
|
85
95
|
const el = this.getElement(elementId);
|
|
86
96
|
return el.getElementRect();
|
|
87
97
|
}
|
|
88
98
|
|
|
99
|
+
/** getSize. */
|
|
89
100
|
export async function getSize(this: FakeDriver, elementId: string): Promise<Size> {
|
|
90
101
|
const el = this.getElement(elementId);
|
|
91
102
|
return el.getSize();
|
|
92
103
|
}
|
|
93
104
|
|
|
105
|
+
/** equalsElement. */
|
|
94
106
|
export async function equalsElement(
|
|
95
107
|
this: FakeDriver,
|
|
96
108
|
elementIdA: string,
|
|
@@ -112,11 +124,13 @@ export async function getCssProperty(
|
|
|
112
124
|
return el.getCss(propertyName) ?? '';
|
|
113
125
|
}
|
|
114
126
|
|
|
127
|
+
/** getLocation. */
|
|
115
128
|
export async function getLocation(this: FakeDriver, elementId: string): Promise<Position> {
|
|
116
129
|
const el = this.getElement(elementId);
|
|
117
130
|
return el.getLocation();
|
|
118
131
|
}
|
|
119
132
|
|
|
133
|
+
/** getLocationInView. */
|
|
120
134
|
export async function getLocationInView(
|
|
121
135
|
this: FakeDriver,
|
|
122
136
|
elementId: string
|
package/lib/commands/find.ts
CHANGED
|
@@ -49,6 +49,7 @@ export function wrapNewEl(
|
|
|
49
49
|
return {ELEMENT: maxElId, [W3C_WEB_ELEMENT_IDENTIFIER]: maxElId};
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
+
/** findElOrElsImpl. */
|
|
52
53
|
async function findElOrElsImpl<Ctx = unknown>(
|
|
53
54
|
this: FakeDriver,
|
|
54
55
|
strategy: string,
|
|
@@ -56,6 +57,7 @@ async function findElOrElsImpl<Ctx = unknown>(
|
|
|
56
57
|
mult: true,
|
|
57
58
|
context?: Ctx
|
|
58
59
|
): Promise<Element[]>;
|
|
60
|
+
/** findElOrElsImpl. */
|
|
59
61
|
async function findElOrElsImpl<Ctx = unknown>(
|
|
60
62
|
this: FakeDriver,
|
|
61
63
|
strategy: string,
|
|
@@ -63,6 +65,7 @@ async function findElOrElsImpl<Ctx = unknown>(
|
|
|
63
65
|
mult: false,
|
|
64
66
|
context?: Ctx
|
|
65
67
|
): Promise<Element>;
|
|
68
|
+
/** findElOrElsImpl. */
|
|
66
69
|
async function findElOrElsImpl<Ctx = unknown>(
|
|
67
70
|
this: FakeDriver,
|
|
68
71
|
strategy: string,
|
|
@@ -107,6 +110,7 @@ async function findElOrElsImpl<Ctx = unknown>(
|
|
|
107
110
|
|
|
108
111
|
export const findElOrEls = findElOrElsImpl;
|
|
109
112
|
|
|
113
|
+
/** findElement. */
|
|
110
114
|
export async function findElement(
|
|
111
115
|
this: FakeDriver,
|
|
112
116
|
strategy: string,
|
|
@@ -117,6 +121,7 @@ export async function findElement(
|
|
|
117
121
|
|
|
118
122
|
// Protocol passes (strategy, selector, elementId) for find-from-element routes.
|
|
119
123
|
|
|
124
|
+
/** findElements. */
|
|
120
125
|
export async function findElements(
|
|
121
126
|
this: FakeDriver,
|
|
122
127
|
strategy: string,
|
|
@@ -125,6 +130,7 @@ export async function findElements(
|
|
|
125
130
|
return this.findElOrEls(strategy, selector, true);
|
|
126
131
|
}
|
|
127
132
|
|
|
133
|
+
/** findElementFromElement. */
|
|
128
134
|
export async function findElementFromElement(
|
|
129
135
|
this: FakeDriver,
|
|
130
136
|
strategy: string,
|
|
@@ -135,6 +141,7 @@ export async function findElementFromElement(
|
|
|
135
141
|
return this.findElOrEls(strategy, selector, false, el.xmlFragment);
|
|
136
142
|
}
|
|
137
143
|
|
|
144
|
+
/** findElementsFromElement. */
|
|
138
145
|
export async function findElementsFromElement(
|
|
139
146
|
this: FakeDriver,
|
|
140
147
|
strategy: string,
|
package/lib/commands/general.ts
CHANGED
|
@@ -10,6 +10,7 @@ export async function title(this: FakeDriver): Promise<string> {
|
|
|
10
10
|
return this.appModel.title;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
+
/** keys. */
|
|
13
14
|
export async function keys(
|
|
14
15
|
this: FakeDriver,
|
|
15
16
|
value: string | string[]
|
|
@@ -20,6 +21,7 @@ export async function keys(
|
|
|
20
21
|
await this.setValue(value, this.focusedElId);
|
|
21
22
|
}
|
|
22
23
|
|
|
24
|
+
/** setGeoLocation. */
|
|
23
25
|
export async function setGeoLocation(
|
|
24
26
|
this: FakeDriver,
|
|
25
27
|
location: Location
|
|
@@ -29,18 +31,22 @@ export async function setGeoLocation(
|
|
|
29
31
|
return location;
|
|
30
32
|
}
|
|
31
33
|
|
|
34
|
+
/** getGeoLocation. */
|
|
32
35
|
export async function getGeoLocation(this: FakeDriver): Promise<Location> {
|
|
33
36
|
return this.appModel.currentGeoLocation;
|
|
34
37
|
}
|
|
35
38
|
|
|
39
|
+
/** getPageSource. */
|
|
36
40
|
export async function getPageSource(this: FakeDriver): Promise<string> {
|
|
37
41
|
return this.appModel.rawXml;
|
|
38
42
|
}
|
|
39
43
|
|
|
44
|
+
/** getOrientation. */
|
|
40
45
|
export async function getOrientation(this: FakeDriver): Promise<string> {
|
|
41
46
|
return this.appModel.orientation;
|
|
42
47
|
}
|
|
43
48
|
|
|
49
|
+
/** setOrientation. */
|
|
44
50
|
export async function setOrientation(
|
|
45
51
|
this: FakeDriver,
|
|
46
52
|
o: Orientation
|
|
@@ -51,18 +57,22 @@ export async function setOrientation(
|
|
|
51
57
|
this.appModel.orientation = o;
|
|
52
58
|
}
|
|
53
59
|
|
|
60
|
+
/** getScreenshot. */
|
|
54
61
|
export async function getScreenshot(this: FakeDriver): Promise<string> {
|
|
55
62
|
return this.appModel.getScreenshot();
|
|
56
63
|
}
|
|
57
64
|
|
|
65
|
+
/** getWindowSize. */
|
|
58
66
|
export async function getWindowSize(this: FakeDriver): Promise<Size> {
|
|
59
67
|
return {width: this.appModel.width, height: this.appModel.height};
|
|
60
68
|
}
|
|
61
69
|
|
|
70
|
+
/** getWindowRect. */
|
|
62
71
|
export async function getWindowRect(this: FakeDriver): Promise<Rect> {
|
|
63
72
|
return {width: this.appModel.width, height: this.appModel.height, x: 0, y: 0};
|
|
64
73
|
}
|
|
65
74
|
|
|
75
|
+
/** performActions. */
|
|
66
76
|
export async function performActions(
|
|
67
77
|
this: FakeDriver,
|
|
68
78
|
actions: ActionSequence[]
|
|
@@ -70,6 +80,7 @@ export async function performActions(
|
|
|
70
80
|
this.appModel.actionLog.push(actions);
|
|
71
81
|
}
|
|
72
82
|
|
|
83
|
+
/** releaseActions. */
|
|
73
84
|
export async function releaseActions(this: FakeDriver): Promise<void> {}
|
|
74
85
|
|
|
75
86
|
/** Supported log types: 'actions'. TODO: add more log types if needed for tests. */
|
|
@@ -85,12 +96,15 @@ export async function getLog(
|
|
|
85
96
|
}
|
|
86
97
|
}
|
|
87
98
|
|
|
99
|
+
/** mobileShake. */
|
|
88
100
|
export async function mobileShake(this: FakeDriver): Promise<void> {
|
|
89
101
|
this.shook = true;
|
|
90
102
|
}
|
|
91
103
|
|
|
104
|
+
/** doubleClick. */
|
|
92
105
|
export async function doubleClick(this: FakeDriver): Promise<void> {}
|
|
93
106
|
|
|
107
|
+
/** execute. */
|
|
94
108
|
export async function execute(
|
|
95
109
|
this: FakeDriver,
|
|
96
110
|
script: string,
|
|
@@ -99,6 +113,7 @@ export async function execute(
|
|
|
99
113
|
return await this.executeMethod(script, args);
|
|
100
114
|
}
|
|
101
115
|
|
|
116
|
+
/** fakeAddition. */
|
|
102
117
|
export async function fakeAddition(
|
|
103
118
|
this: FakeDriver,
|
|
104
119
|
num1: number,
|
package/lib/driver.ts
CHANGED
|
@@ -13,12 +13,19 @@ import * as contextsCommands from './commands/contexts';
|
|
|
13
13
|
import * as elementCommands from './commands/element';
|
|
14
14
|
import * as findCommands from './commands/find';
|
|
15
15
|
import * as generalCommands from './commands/general';
|
|
16
|
+
import {NEW_BIDI_COMMANDS} from './command-maps/new-bidi-commands';
|
|
17
|
+
import {NEW_METHOD_MAP} from './command-maps/new-method-map';
|
|
18
|
+
import {EXECUTE_METHOD_MAP} from './command-maps/execute-method-map';
|
|
16
19
|
|
|
17
20
|
export type {FakeDriverConstraints};
|
|
18
21
|
export type {Orientation} from '@appium/types';
|
|
19
22
|
|
|
20
23
|
/** Driver supporting a generic "fake thing" value (getFakeThing / setFakeThing). */
|
|
21
24
|
export class FakeDriver<Thing = unknown> extends BaseDriver<FakeDriverConstraints> {
|
|
25
|
+
static newBidiCommands = NEW_BIDI_COMMANDS;
|
|
26
|
+
static newMethodMap = NEW_METHOD_MAP;
|
|
27
|
+
static executeMethodMap = EXECUTE_METHOD_MAP;
|
|
28
|
+
|
|
22
29
|
readonly desiredCapConstraints = desiredCapConstraints;
|
|
23
30
|
|
|
24
31
|
curContext: string;
|
|
@@ -31,9 +38,6 @@ export class FakeDriver<Thing = unknown> extends BaseDriver<FakeDriverConstraint
|
|
|
31
38
|
maxElId: number;
|
|
32
39
|
/** Map of element id (string) to FakeElement for this session. */
|
|
33
40
|
elMap: Record<string, FakeElement>;
|
|
34
|
-
/** If set, Bidi connections are proxied to this URL instead of handling locally. */
|
|
35
|
-
private _bidiProxyUrl: string | null;
|
|
36
|
-
private _clockRunning = false;
|
|
37
41
|
/** Current document URL; set by bidiNavigate, returned by getUrl. */
|
|
38
42
|
url: string = '';
|
|
39
43
|
|
|
@@ -101,6 +105,9 @@ export class FakeDriver<Thing = unknown> extends BaseDriver<FakeDriverConstraint
|
|
|
101
105
|
fakeAddition = generalCommands.fakeAddition;
|
|
102
106
|
getUrl = generalCommands.getUrl;
|
|
103
107
|
bidiNavigate = generalCommands.bidiNavigate;
|
|
108
|
+
/** If set, Bidi connections are proxied to this URL instead of handling locally. */
|
|
109
|
+
private _bidiProxyUrl: string | null;
|
|
110
|
+
private _clockRunning = false;
|
|
104
111
|
|
|
105
112
|
constructor(opts: InitialOpts = {} as InitialOpts, shouldValidateCaps = true) {
|
|
106
113
|
super(opts, shouldValidateCaps);
|
|
@@ -115,6 +122,31 @@ export class FakeDriver<Thing = unknown> extends BaseDriver<FakeDriverConstraint
|
|
|
115
122
|
this._bidiProxyUrl = null;
|
|
116
123
|
}
|
|
117
124
|
|
|
125
|
+
get bidiProxyUrl(): string | null {
|
|
126
|
+
return this._bidiProxyUrl;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
override get driverData(): {isUnique: boolean} {
|
|
130
|
+
return {
|
|
131
|
+
isUnique: !!this.caps.uniqueApp,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
static fakeRoute(_req: Request, res: Response): void {
|
|
136
|
+
res.send(JSON.stringify({fakedriver: 'fakeResponse'}));
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
static async updateServer(
|
|
140
|
+
expressApp: Express,
|
|
141
|
+
_httpServer: HttpServer,
|
|
142
|
+
cliArgs: Record<string, unknown>
|
|
143
|
+
): Promise<void> {
|
|
144
|
+
expressApp.all('/fakedriver', FakeDriver.fakeRoute);
|
|
145
|
+
expressApp.all('/fakedriverCliArgs', (_req: Request, res: Response) => {
|
|
146
|
+
res.send(JSON.stringify(cliArgs));
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
|
|
118
150
|
proxyActive(): boolean {
|
|
119
151
|
return this._proxyActive;
|
|
120
152
|
}
|
|
@@ -123,10 +155,6 @@ export class FakeDriver<Thing = unknown> extends BaseDriver<FakeDriverConstraint
|
|
|
123
155
|
return true;
|
|
124
156
|
}
|
|
125
157
|
|
|
126
|
-
get bidiProxyUrl(): string | null {
|
|
127
|
-
return this._bidiProxyUrl;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
158
|
proxyReqRes(req: Request, res: Response): void {
|
|
131
159
|
res.set('content-type', 'application/json');
|
|
132
160
|
const resBodyObj: {value: string; sessionId: string | null} = {
|
|
@@ -170,7 +198,7 @@ export class FakeDriver<Thing = unknown> extends BaseDriver<FakeDriverConstraint
|
|
|
170
198
|
this.caps = caps;
|
|
171
199
|
await this.appModel.loadApp(caps.app);
|
|
172
200
|
if (this.caps.runClock) {
|
|
173
|
-
this.startClock();
|
|
201
|
+
void this.startClock();
|
|
174
202
|
}
|
|
175
203
|
return [sessionId, caps];
|
|
176
204
|
}
|
|
@@ -188,12 +216,6 @@ export class FakeDriver<Thing = unknown> extends BaseDriver<FakeDriverConstraint
|
|
|
188
216
|
return ['1'];
|
|
189
217
|
}
|
|
190
218
|
|
|
191
|
-
override get driverData(): {isUnique: boolean} {
|
|
192
|
-
return {
|
|
193
|
-
isUnique: !!this.caps.uniqueApp,
|
|
194
|
-
};
|
|
195
|
-
}
|
|
196
|
-
|
|
197
219
|
async getFakeThing(): Promise<Thing | null> {
|
|
198
220
|
await sleep(1);
|
|
199
221
|
return this.fakeThing;
|
|
@@ -245,77 +267,4 @@ export class FakeDriver<Thing = unknown> extends BaseDriver<FakeDriverConstraint
|
|
|
245
267
|
this._clockRunning = false;
|
|
246
268
|
}
|
|
247
269
|
|
|
248
|
-
static newBidiCommands = {
|
|
249
|
-
'appium:fake': {
|
|
250
|
-
getFakeThing: {
|
|
251
|
-
command: 'getFakeThing',
|
|
252
|
-
},
|
|
253
|
-
setFakeThing: {
|
|
254
|
-
command: 'setFakeThing',
|
|
255
|
-
params: {
|
|
256
|
-
required: ['thing'],
|
|
257
|
-
},
|
|
258
|
-
},
|
|
259
|
-
doSomeMath: {
|
|
260
|
-
command: 'doSomeMath',
|
|
261
|
-
params: {
|
|
262
|
-
required: ['num1', 'num2'],
|
|
263
|
-
},
|
|
264
|
-
},
|
|
265
|
-
doSomeMath2: {
|
|
266
|
-
command: 'doSomeMath2',
|
|
267
|
-
params: {
|
|
268
|
-
required: ['num1', 'num2'],
|
|
269
|
-
},
|
|
270
|
-
},
|
|
271
|
-
},
|
|
272
|
-
} as const;
|
|
273
|
-
|
|
274
|
-
static newMethodMap = {
|
|
275
|
-
'/session/:sessionId/fakedriver': {
|
|
276
|
-
GET: {command: 'getFakeThing'},
|
|
277
|
-
POST: {command: 'setFakeThing', payloadParams: {required: ['thing'] as const}},
|
|
278
|
-
},
|
|
279
|
-
'/session/:sessionId/fakedriverargs': {
|
|
280
|
-
GET: {command: 'getFakeDriverArgs'},
|
|
281
|
-
},
|
|
282
|
-
'/session/:sessionId/deprecated': {
|
|
283
|
-
POST: {command: 'callDeprecatedCommand', deprecated: true},
|
|
284
|
-
},
|
|
285
|
-
'/session/:sessionId/doubleclick': {
|
|
286
|
-
POST: {command: 'doubleClick'},
|
|
287
|
-
},
|
|
288
|
-
} as const;
|
|
289
|
-
|
|
290
|
-
static executeMethodMap = {
|
|
291
|
-
'fake: addition': {
|
|
292
|
-
command: 'fakeAddition',
|
|
293
|
-
params: {required: ['num1', 'num2'], optional: ['num3']},
|
|
294
|
-
},
|
|
295
|
-
'fake: getThing': {
|
|
296
|
-
command: 'getFakeThing',
|
|
297
|
-
},
|
|
298
|
-
'fake: setThing': {
|
|
299
|
-
command: 'setFakeThing',
|
|
300
|
-
params: {required: ['thing']},
|
|
301
|
-
},
|
|
302
|
-
'fake: getDeprecatedCommandsCalled': {
|
|
303
|
-
command: 'getDeprecatedCommandsCalled',
|
|
304
|
-
},
|
|
305
|
-
} as const;
|
|
306
|
-
|
|
307
|
-
static fakeRoute(req: Request, res: Response): void {
|
|
308
|
-
res.send(JSON.stringify({fakedriver: 'fakeResponse'}));
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
static async updateServer(
|
|
312
|
-
expressApp: Express,
|
|
313
|
-
httpServer: HttpServer,
|
|
314
|
-
cliArgs: Record<string, unknown>
|
|
315
|
-
): Promise<void> {
|
|
316
|
-
expressApp.all('/fakedriver', FakeDriver.fakeRoute);
|
|
317
|
-
expressApp.all('/fakedriverCliArgs', (req: Request, res: Response) => {
|
|
318
|
-
res.send(JSON.stringify(cliArgs));
|
|
319
|
-
});
|
|
320
|
-
}
|
|
321
270
|
}
|