@appium/universal-xml-plugin 1.0.3 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +2 -2
- package/build/lib/attr-map.d.ts +58 -0
- package/build/lib/attr-map.d.ts.map +1 -0
- package/build/lib/attr-map.js +1 -1
- package/build/lib/attr-map.js.map +1 -0
- package/build/lib/index.d.ts +5 -0
- package/build/lib/index.d.ts.map +1 -0
- package/build/lib/index.js +26 -0
- package/build/lib/index.js.map +1 -0
- package/build/lib/logger.d.ts +3 -0
- package/build/lib/logger.d.ts.map +1 -0
- package/build/lib/logger.js +2 -2
- package/build/lib/logger.js.map +1 -0
- package/build/lib/node-map.d.ts +200 -0
- package/build/lib/node-map.d.ts.map +1 -0
- package/build/lib/node-map.js +15 -57
- package/build/lib/node-map.js.map +1 -0
- package/build/lib/plugin.d.ts +8 -0
- package/build/lib/plugin.d.ts.map +1 -0
- package/build/lib/plugin.js +16 -8
- package/build/lib/plugin.js.map +1 -0
- package/build/lib/source.d.ts +24 -0
- package/build/lib/source.d.ts.map +1 -0
- package/build/lib/source.js +24 -10
- package/build/lib/source.js.map +1 -0
- package/build/lib/transformers.d.ts +8 -0
- package/build/lib/transformers.d.ts.map +1 -0
- package/build/lib/transformers.js +1 -1
- package/build/lib/transformers.js.map +1 -0
- package/build/lib/xpath.d.ts +4 -0
- package/build/lib/xpath.d.ts.map +1 -0
- package/build/lib/xpath.js +3 -2
- package/build/lib/xpath.js.map +1 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/index.js +3 -17
- package/lib/attr-map.js +1 -1
- package/lib/index.js +19 -0
- package/lib/logger.js +1 -1
- package/lib/node-map.js +14 -58
- package/lib/plugin.js +36 -25
- package/lib/source.js +30 -13
- package/lib/transformers.js +3 -3
- package/lib/xpath.js +7 -6
- package/package.json +48 -23
- package/tsconfig.json +2 -6
- package/build/index.js +0 -25
- package/build/test/fixtures/android-transformed-path.xml +0 -39
- package/build/test/fixtures/android-transformed.xml +0 -39
- package/build/test/fixtures/android.xml +0 -39
- package/build/test/fixtures/index.js +0 -25
- package/build/test/fixtures/ios-edge.xml +0 -16
- package/build/test/fixtures/ios-transformed-edge.xml +0 -16
- package/build/test/fixtures/ios-transformed-path.xml +0 -54
- package/build/test/fixtures/ios-transformed.xml +0 -54
- package/build/test/fixtures/ios.xml +0 -51
- package/build/test/unit/plugin-specs.js +0 -59
- package/build/test/unit/source-specs.js +0 -82
- package/build/test/unit/xpath-specs.js +0 -46
- package/test/fixtures/android-transformed-path.xml +0 -39
- package/test/fixtures/android-transformed.xml +0 -39
- package/test/fixtures/android.xml +0 -39
- package/test/fixtures/index.js +0 -14
- package/test/fixtures/ios-edge.xml +0 -16
- package/test/fixtures/ios-transformed-edge.xml +0 -16
- package/test/fixtures/ios-transformed-path.xml +0 -54
- package/test/fixtures/ios-transformed.xml +0 -54
- package/test/fixtures/ios.xml +0 -51
- package/test/unit/plugin-specs.js +0 -57
- package/test/unit/source-specs.js +0 -79
- package/test/unit/xpath-specs.js +0 -43
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
|
|
2
|
-
<hierarchy index="0" class="hierarchy" rotation="0" width="1080" height="1920">
|
|
3
|
-
<android.widget.FrameLayout index="0" package="io.cloudgrey.the_app" class="android.widget.FrameLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][1080,1920]" displayed="true">
|
|
4
|
-
<android.widget.LinearLayout index="0" package="io.cloudgrey.the_app" class="android.widget.LinearLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,0][1080,1920]" displayed="true">
|
|
5
|
-
<android.widget.FrameLayout index="0" package="io.cloudgrey.the_app" class="android.widget.FrameLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,72][1080,1920]" displayed="true">
|
|
6
|
-
<android.widget.LinearLayout index="0" package="io.cloudgrey.the_app" class="android.widget.LinearLayout" text="" resource-id="io.cloudgrey.the_app:id/action_bar_root" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,72][1080,1920]" displayed="true">
|
|
7
|
-
<android.widget.FrameLayout index="0" package="io.cloudgrey.the_app" class="android.widget.FrameLayout" text="" resource-id="android:id/content" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,72][1080,1920]" displayed="true">
|
|
8
|
-
<android.widget.RelativeLayout index="0" package="io.cloudgrey.the_app" class="android.widget.RelativeLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,72][1080,1920]" displayed="true">
|
|
9
|
-
<android.view.ViewGroup index="0" package="io.cloudgrey.the_app" class="android.view.ViewGroup" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,72][1080,1920]" displayed="true" />
|
|
10
|
-
<android.widget.RelativeLayout index="1" package="io.cloudgrey.the_app" class="android.widget.RelativeLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,72][1080,1920]" displayed="true">
|
|
11
|
-
<android.widget.LinearLayout index="0" package="io.cloudgrey.the_app" class="android.widget.LinearLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,72][1080,240]" displayed="true">
|
|
12
|
-
<android.widget.FrameLayout index="0" package="io.cloudgrey.the_app" class="android.widget.FrameLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,72][1080,240]" displayed="true">
|
|
13
|
-
<android.view.ViewGroup index="0" package="io.cloudgrey.the_app" class="android.view.ViewGroup" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,72][1080,240]" displayed="true">
|
|
14
|
-
<android.widget.ImageButton index="0" package="io.cloudgrey.the_app" class="android.widget.ImageButton" text="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,72][168,240]" displayed="true" />
|
|
15
|
-
</android.view.ViewGroup>
|
|
16
|
-
</android.widget.FrameLayout>
|
|
17
|
-
</android.widget.LinearLayout>
|
|
18
|
-
<android.widget.FrameLayout index="1" package="io.cloudgrey.the_app" class="android.widget.FrameLayout" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[0,240][1080,1920]" displayed="true">
|
|
19
|
-
<android.widget.TextView index="0" package="io.cloudgrey.the_app" class="android.widget.TextView" text="Login" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[413,360][668,496]" displayed="true" />
|
|
20
|
-
<android.view.ViewGroup index="1" package="io.cloudgrey.the_app" class="android.view.ViewGroup" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[150,496][930,616]" displayed="true">
|
|
21
|
-
<android.widget.EditText index="0" package="io.cloudgrey.the_app" class="android.widget.EditText" text="alice" content-desc="username" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="true" password="false" scrollable="false" selected="false" bounds="[150,504][930,616]" displayed="true" />
|
|
22
|
-
</android.view.ViewGroup>
|
|
23
|
-
<android.view.ViewGroup index="2" package="io.cloudgrey.the_app" class="android.view.ViewGroup" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[150,616][930,736]" displayed="true">
|
|
24
|
-
<android.widget.EditText index="0" package="io.cloudgrey.the_app" class="android.widget.EditText" text="•••••••••" content-desc="password" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" long-clickable="true" password="true" scrollable="false" selected="false" bounds="[150,624][930,736]" displayed="true" />
|
|
25
|
-
</android.view.ViewGroup>
|
|
26
|
-
<android.view.ViewGroup index="3" package="io.cloudgrey.the_app" class="android.view.ViewGroup" text="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[456,736][624,849]" displayed="true">
|
|
27
|
-
<android.view.ViewGroup index="0" package="io.cloudgrey.the_app" class="android.view.ViewGroup" text="" content-desc="loginBtn" checkable="false" checked="false" clickable="false" enabled="true" focusable="true" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[456,736][624,849]" displayed="true">
|
|
28
|
-
<android.widget.TextView index="0" package="io.cloudgrey.the_app" class="android.widget.TextView" text="Login" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" long-clickable="false" password="false" scrollable="false" selected="false" bounds="[456,736][624,849]" displayed="true" />
|
|
29
|
-
</android.view.ViewGroup>
|
|
30
|
-
</android.view.ViewGroup>
|
|
31
|
-
</android.widget.FrameLayout>
|
|
32
|
-
</android.widget.RelativeLayout>
|
|
33
|
-
</android.widget.RelativeLayout>
|
|
34
|
-
</android.widget.FrameLayout>
|
|
35
|
-
</android.widget.LinearLayout>
|
|
36
|
-
</android.widget.FrameLayout>
|
|
37
|
-
</android.widget.LinearLayout>
|
|
38
|
-
</android.widget.FrameLayout>
|
|
39
|
-
</hierarchy>
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.XML_IOS_EDGE_TRANSFORMED = exports.XML_IOS_EDGE = exports.XML_ANDROID_TRANSFORMED_INDEX_PATH = exports.XML_IOS_TRANSFORMED_INDEX_PATH = exports.XML_ANDROID_TRANSFORMED = exports.XML_IOS_TRANSFORMED = exports.XML_ANDROID = exports.XML_IOS = void 0;
|
|
7
|
-
const fs_1 = __importDefault(require("fs"));
|
|
8
|
-
const path_1 = __importDefault(require("path"));
|
|
9
|
-
const XML_IOS = fs_1.default.readFileSync(path_1.default.resolve(__dirname, 'ios.xml'), 'utf8').trim();
|
|
10
|
-
exports.XML_IOS = XML_IOS;
|
|
11
|
-
const XML_IOS_TRANSFORMED = fs_1.default.readFileSync(path_1.default.resolve(__dirname, 'ios-transformed.xml'), 'utf8').trim();
|
|
12
|
-
exports.XML_IOS_TRANSFORMED = XML_IOS_TRANSFORMED;
|
|
13
|
-
const XML_IOS_TRANSFORMED_INDEX_PATH = fs_1.default.readFileSync(path_1.default.resolve(__dirname, 'ios-transformed-path.xml'), 'utf8').trim();
|
|
14
|
-
exports.XML_IOS_TRANSFORMED_INDEX_PATH = XML_IOS_TRANSFORMED_INDEX_PATH;
|
|
15
|
-
const XML_IOS_EDGE = fs_1.default.readFileSync(path_1.default.resolve(__dirname, 'ios-edge.xml'), 'utf8').trim();
|
|
16
|
-
exports.XML_IOS_EDGE = XML_IOS_EDGE;
|
|
17
|
-
const XML_IOS_EDGE_TRANSFORMED = fs_1.default.readFileSync(path_1.default.resolve(__dirname, 'ios-transformed-edge.xml'), 'utf8').trim();
|
|
18
|
-
exports.XML_IOS_EDGE_TRANSFORMED = XML_IOS_EDGE_TRANSFORMED;
|
|
19
|
-
const XML_ANDROID = fs_1.default.readFileSync(path_1.default.resolve(__dirname, 'android.xml'), 'utf8').trim();
|
|
20
|
-
exports.XML_ANDROID = XML_ANDROID;
|
|
21
|
-
const XML_ANDROID_TRANSFORMED = fs_1.default.readFileSync(path_1.default.resolve(__dirname, 'android-transformed.xml'), 'utf8').trim();
|
|
22
|
-
exports.XML_ANDROID_TRANSFORMED = XML_ANDROID_TRANSFORMED;
|
|
23
|
-
const XML_ANDROID_TRANSFORMED_INDEX_PATH = fs_1.default.readFileSync(path_1.default.resolve(__dirname, 'android-transformed-path.xml'), 'utf8').trim();
|
|
24
|
-
exports.XML_ANDROID_TRANSFORMED_INDEX_PATH = XML_ANDROID_TRANSFORMED_INDEX_PATH;
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L2ZpeHR1cmVzL2luZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDRDQUFvQjtBQUNwQixnREFBd0I7QUFFeEIsTUFBTSxPQUFPLEdBQUcsWUFBRSxDQUFDLFlBQVksQ0FBQyxjQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQVMxRSwwQkFBTztBQVJoQixNQUFNLG1CQUFtQixHQUFHLFlBQUUsQ0FBQyxZQUFZLENBQUMsY0FBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUscUJBQXFCLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQVE1RSxrREFBbUI7QUFQbEQsTUFBTSw4QkFBOEIsR0FBRyxZQUFFLENBQUMsWUFBWSxDQUFDLGNBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLDBCQUEwQixDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFPOUMsd0VBQThCO0FBTjNHLE1BQU0sWUFBWSxHQUFHLFlBQUUsQ0FBQyxZQUFZLENBQUMsY0FBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFPdkQsb0NBQVk7QUFObEQsTUFBTSx3QkFBd0IsR0FBRyxZQUFFLENBQUMsWUFBWSxDQUFDLGNBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLDBCQUEwQixDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFNakUsNERBQXdCO0FBTDVFLE1BQU0sV0FBVyxHQUFHLFlBQUUsQ0FBQyxZQUFZLENBQUMsY0FBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFJekUsa0NBQVc7QUFIN0IsTUFBTSx1QkFBdUIsR0FBRyxZQUFFLENBQUMsWUFBWSxDQUFDLGNBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLHlCQUF5QixDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFHL0QsMERBQXVCO0FBRjNFLE1BQU0sa0NBQWtDLEdBQUcsWUFBRSxDQUFDLFlBQVksQ0FBQyxjQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSw4QkFBOEIsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBR2pJLGdGQUFrQyJ9
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<AppiumAUT>
|
|
3
|
-
<XCUIElementTypeApplication type="XCUIElementTypeApplication" name="TheApp" label="TheApp" enabled="true" visible="true" x="0" y="0" width="414" height="896" index="0">
|
|
4
|
-
<SomeRandoElement type="blah" oddAttribute="odd" />
|
|
5
|
-
<SomeRandoElement type="blah" oddAttribute="odd" />
|
|
6
|
-
<XCUIElementTypeOther type="XCUIElementTypeOther" name="username" label="username" enabled="true" visible="true" x="50" y="185" width="314" height="51" index="0">
|
|
7
|
-
<XCUIElementTypeTextField type="XCUIElementTypeTextField" value="alice" name="username" label="username" enabled="true" visible="true" x="50" y="185" width="314" height="51" index="0"/>
|
|
8
|
-
<XCUIElementTypeTab type="XCUIElementTypeTab" name="fakeTab" label="" enabled="" visible="true" x="50" y="185" width="314" height="51" index="1"/>
|
|
9
|
-
<XCUIElementTypeTab type="XCUIElementTypeTab" name="fakeTab" label="" enabled="" visible="true" x="50" y="185" width="314" height="51" index="2"/>
|
|
10
|
-
<XCUIElementTypeKey type="XCUIElementTypeKey" name="fakeKey" label="" enabled="" visible="true" x="50" y="185" width="314" height="51" index="3">
|
|
11
|
-
<XCUIElementTypeOther type="XCUIElementTypeOther" name="fakeOther" label="" enabled="" visible="true" x="1" y="2" width="3" height="4" index="0"/>
|
|
12
|
-
</XCUIElementTypeKey>
|
|
13
|
-
<XCUIElementTypeKey type="XCUIElementTypeKey" name="fakeKey" label="" enabled="" visible="true" x="50" y="185" width="314" height="51" index="4"/>
|
|
14
|
-
</XCUIElementTypeOther>
|
|
15
|
-
</XCUIElementTypeApplication>
|
|
16
|
-
</AppiumAUT>
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<UI>
|
|
3
|
-
<App visible="true" x="0" y="0" width="414" height="896" axId="TheApp" text="TheApp">
|
|
4
|
-
<SomeRandoElement oddAttribute="odd"></SomeRandoElement>
|
|
5
|
-
<SomeRandoElement oddAttribute="odd"></SomeRandoElement>
|
|
6
|
-
<Element visible="true" x="50" y="185" width="314" height="51" axId="username" text="username">
|
|
7
|
-
<TextInput value="alice" visible="true" x="50" y="185" width="314" height="51" axId="username" text="username"></TextInput>
|
|
8
|
-
<Button visible="true" x="50" y="185" width="314" height="51" axId="fakeTab" text=""></Button>
|
|
9
|
-
<Button visible="true" x="50" y="185" width="314" height="51" axId="fakeTab" text=""></Button>
|
|
10
|
-
<Button visible="true" x="50" y="185" width="314" height="51" axId="fakeKey" text="">
|
|
11
|
-
<Element visible="true" x="1" y="2" width="3" height="4" axId="fakeOther" text=""></Element>
|
|
12
|
-
</Button>
|
|
13
|
-
<Button visible="true" x="50" y="185" width="314" height="51" axId="fakeKey" text=""></Button>
|
|
14
|
-
</Element>
|
|
15
|
-
</App>
|
|
16
|
-
</UI>
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<UI indexPath="/0">
|
|
3
|
-
<App visible="true" x="0" y="0" width="414" height="896" indexPath="/0/0" axId="TheApp" text="TheApp">
|
|
4
|
-
<Window visible="true" x="0" y="0" width="414" height="896" indexPath="/0/0/0">
|
|
5
|
-
<Element visible="true" x="0" y="0" width="414" height="896" indexPath="/0/0/0/0">
|
|
6
|
-
<Nav visible="true" x="0" y="48" width="414" height="44" indexPath="/0/0/0/0/0" axId="RCCView">
|
|
7
|
-
<Button visible="true" x="0" y="48" width="96" height="44" indexPath="/0/0/0/0/0/0" axId="The App" text="The App"></Button>
|
|
8
|
-
</Nav>
|
|
9
|
-
<Element visible="true" x="0" y="0" width="414" height="896" indexPath="/0/0/0/0/1">
|
|
10
|
-
<Element visible="true" x="0" y="0" width="414" height="896" indexPath="/0/0/0/0/1/0">
|
|
11
|
-
<Element visible="true" x="0" y="92" width="414" height="804" indexPath="/0/0/0/0/1/0/0">
|
|
12
|
-
<Element visible="true" x="0" y="92" width="414" height="804" indexPath="/0/0/0/0/1/0/0/0" axId="Login username password loginBtn" text="Login username password loginBtn">
|
|
13
|
-
<Element visible="true" x="0" y="92" width="414" height="804" indexPath="/0/0/0/0/1/0/0/0/0" axId="Login username password loginBtn" text="Login username password loginBtn">
|
|
14
|
-
<Element visible="true" x="0" y="92" width="414" height="804" indexPath="/0/0/0/0/1/0/0/0/0/0" axId="Login username password loginBtn" text="Login username password loginBtn">
|
|
15
|
-
<Element visible="true" x="0" y="92" width="414" height="273" indexPath="/0/0/0/0/1/0/0/0/0/0/0" axId="Login username password loginBtn" text="Login username password loginBtn">
|
|
16
|
-
<Text value="Login" visible="true" x="157" y="132" width="101" height="51" indexPath="/0/0/0/0/1/0/0/0/0/0/0/0" axId="Login" text="Login"></Text>
|
|
17
|
-
<Element visible="true" x="50" y="183" width="314" height="40" indexPath="/0/0/0/0/1/0/0/0/0/0/0/1" axId="username" text="username">
|
|
18
|
-
<Element visible="true" x="50" y="183" width="314" height="40" indexPath="/0/0/0/0/1/0/0/0/0/0/0/1/0" axId="username" text="username">
|
|
19
|
-
<Element visible="true" x="50" y="185" width="314" height="51" indexPath="/0/0/0/0/1/0/0/0/0/0/0/1/0/0" axId="username" text="username">
|
|
20
|
-
<TextInput value="alice" visible="true" x="50" y="185" width="314" height="51" indexPath="/0/0/0/0/1/0/0/0/0/0/0/1/0/0/0" axId="username" text="username"></TextInput>
|
|
21
|
-
<Button visible="true" x="50" y="185" width="314" height="51" indexPath="/0/0/0/0/1/0/0/0/0/0/0/1/0/0/1" axId="fakeTab" text=""></Button>
|
|
22
|
-
<Button visible="true" x="50" y="185" width="314" height="51" indexPath="/0/0/0/0/1/0/0/0/0/0/0/1/0/0/2" axId="fakeKey" text=""></Button>
|
|
23
|
-
</Element>
|
|
24
|
-
</Element>
|
|
25
|
-
</Element>
|
|
26
|
-
<Element visible="true" x="50" y="223" width="314" height="40" indexPath="/0/0/0/0/1/0/0/0/0/0/0/2" axId="password" text="password">
|
|
27
|
-
<Element visible="true" x="50" y="223" width="314" height="40" indexPath="/0/0/0/0/1/0/0/0/0/0/0/2/0" axId="password" text="password">
|
|
28
|
-
<Element visible="true" x="50" y="225" width="314" height="51" indexPath="/0/0/0/0/1/0/0/0/0/0/0/2/0/0" axId="password" text="password">
|
|
29
|
-
<TextInput value="•••••••••" visible="true" x="50" y="225" width="314" height="51" indexPath="/0/0/0/0/1/0/0/0/0/0/0/2/0/0/0" axId="password" text="password"></TextInput>
|
|
30
|
-
</Element>
|
|
31
|
-
</Element>
|
|
32
|
-
</Element>
|
|
33
|
-
<Element visible="true" x="177" y="263" width="60" height="102" indexPath="/0/0/0/0/1/0/0/0/0/0/0/3" axId="loginBtn" text="loginBtn">
|
|
34
|
-
<Element visible="true" x="177" y="327" width="60" height="38" indexPath="/0/0/0/0/1/0/0/0/0/0/0/3/0" axId="loginBtn" text="loginBtn"></Element>
|
|
35
|
-
</Element>
|
|
36
|
-
</Element>
|
|
37
|
-
</Element>
|
|
38
|
-
</Element>
|
|
39
|
-
</Element>
|
|
40
|
-
</Element>
|
|
41
|
-
</Element>
|
|
42
|
-
</Element>
|
|
43
|
-
</Element>
|
|
44
|
-
</Window>
|
|
45
|
-
<Window visible="false" x="0" y="0" width="414" height="896" indexPath="/0/0/1">
|
|
46
|
-
<Element visible="false" x="0" y="0" width="414" height="896" indexPath="/0/0/1/0">
|
|
47
|
-
<Element visible="false" x="0" y="0" width="414" height="896" indexPath="/0/0/1/0/0"></Element>
|
|
48
|
-
<Element visible="false" x="0" y="896" width="414" height="71" indexPath="/0/0/1/0/1">
|
|
49
|
-
<Element visible="false" x="0" y="896" width="414" height="71" indexPath="/0/0/1/0/1/0"></Element>
|
|
50
|
-
</Element>
|
|
51
|
-
</Element>
|
|
52
|
-
</Window>
|
|
53
|
-
</App>
|
|
54
|
-
</UI>
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<UI>
|
|
3
|
-
<App visible="true" x="0" y="0" width="414" height="896" axId="TheApp" text="TheApp">
|
|
4
|
-
<Window visible="true" x="0" y="0" width="414" height="896">
|
|
5
|
-
<Element visible="true" x="0" y="0" width="414" height="896">
|
|
6
|
-
<Nav visible="true" x="0" y="48" width="414" height="44" axId="RCCView">
|
|
7
|
-
<Button visible="true" x="0" y="48" width="96" height="44" axId="The App" text="The App"></Button>
|
|
8
|
-
</Nav>
|
|
9
|
-
<Element visible="true" x="0" y="0" width="414" height="896">
|
|
10
|
-
<Element visible="true" x="0" y="0" width="414" height="896">
|
|
11
|
-
<Element visible="true" x="0" y="92" width="414" height="804">
|
|
12
|
-
<Element visible="true" x="0" y="92" width="414" height="804" axId="Login username password loginBtn" text="Login username password loginBtn">
|
|
13
|
-
<Element visible="true" x="0" y="92" width="414" height="804" axId="Login username password loginBtn" text="Login username password loginBtn">
|
|
14
|
-
<Element visible="true" x="0" y="92" width="414" height="804" axId="Login username password loginBtn" text="Login username password loginBtn">
|
|
15
|
-
<Element visible="true" x="0" y="92" width="414" height="273" axId="Login username password loginBtn" text="Login username password loginBtn">
|
|
16
|
-
<Text value="Login" visible="true" x="157" y="132" width="101" height="51" axId="Login" text="Login"></Text>
|
|
17
|
-
<Element visible="true" x="50" y="183" width="314" height="40" axId="username" text="username">
|
|
18
|
-
<Element visible="true" x="50" y="183" width="314" height="40" axId="username" text="username">
|
|
19
|
-
<Element visible="true" x="50" y="185" width="314" height="51" axId="username" text="username">
|
|
20
|
-
<TextInput value="alice" visible="true" x="50" y="185" width="314" height="51" axId="username" text="username"></TextInput>
|
|
21
|
-
<Button visible="true" x="50" y="185" width="314" height="51" axId="fakeTab" text=""></Button>
|
|
22
|
-
<Button visible="true" x="50" y="185" width="314" height="51" axId="fakeKey" text=""></Button>
|
|
23
|
-
</Element>
|
|
24
|
-
</Element>
|
|
25
|
-
</Element>
|
|
26
|
-
<Element visible="true" x="50" y="223" width="314" height="40" axId="password" text="password">
|
|
27
|
-
<Element visible="true" x="50" y="223" width="314" height="40" axId="password" text="password">
|
|
28
|
-
<Element visible="true" x="50" y="225" width="314" height="51" axId="password" text="password">
|
|
29
|
-
<TextInput value="•••••••••" visible="true" x="50" y="225" width="314" height="51" axId="password" text="password"></TextInput>
|
|
30
|
-
</Element>
|
|
31
|
-
</Element>
|
|
32
|
-
</Element>
|
|
33
|
-
<Element visible="true" x="177" y="263" width="60" height="102" axId="loginBtn" text="loginBtn">
|
|
34
|
-
<Element visible="true" x="177" y="327" width="60" height="38" axId="loginBtn" text="loginBtn"></Element>
|
|
35
|
-
</Element>
|
|
36
|
-
</Element>
|
|
37
|
-
</Element>
|
|
38
|
-
</Element>
|
|
39
|
-
</Element>
|
|
40
|
-
</Element>
|
|
41
|
-
</Element>
|
|
42
|
-
</Element>
|
|
43
|
-
</Element>
|
|
44
|
-
</Window>
|
|
45
|
-
<Window visible="false" x="0" y="0" width="414" height="896">
|
|
46
|
-
<Element visible="false" x="0" y="0" width="414" height="896">
|
|
47
|
-
<Element visible="false" x="0" y="0" width="414" height="896"></Element>
|
|
48
|
-
<Element visible="false" x="0" y="896" width="414" height="71">
|
|
49
|
-
<Element visible="false" x="0" y="896" width="414" height="71"></Element>
|
|
50
|
-
</Element>
|
|
51
|
-
</Element>
|
|
52
|
-
</Window>
|
|
53
|
-
</App>
|
|
54
|
-
</UI>
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?><AppiumAUT><XCUIElementTypeApplication type="XCUIElementTypeApplication" name="TheApp" label="TheApp" enabled="true" visible="true" x="0" y="0" width="414" height="896" index="0">
|
|
2
|
-
<XCUIElementTypeWindow type="XCUIElementTypeWindow" enabled="true" visible="true" x="0" y="0" width="414" height="896" index="0">
|
|
3
|
-
<XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" x="0" y="0" width="414" height="896" index="0">
|
|
4
|
-
<XCUIElementTypeNavigationBar type="XCUIElementTypeNavigationBar" name="RCCView" enabled="true" visible="true" x="0" y="48" width="414" height="44" index="0">
|
|
5
|
-
<XCUIElementTypeButton type="XCUIElementTypeButton" name="The App" label="The App" enabled="true" visible="true" x="0" y="48" width="96" height="44" index="0"/>
|
|
6
|
-
</XCUIElementTypeNavigationBar>
|
|
7
|
-
<XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" x="0" y="0" width="414" height="896" index="1">
|
|
8
|
-
<XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" x="0" y="0" width="414" height="896" index="0">
|
|
9
|
-
<XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="true" x="0" y="92" width="414" height="804" index="0">
|
|
10
|
-
<XCUIElementTypeOther type="XCUIElementTypeOther" name="Login username password loginBtn" label="Login username password loginBtn" enabled="true" visible="true" x="0" y="92" width="414" height="804" index="0">
|
|
11
|
-
<XCUIElementTypeOther type="XCUIElementTypeOther" name="Login username password loginBtn" label="Login username password loginBtn" enabled="true" visible="true" x="0" y="92" width="414" height="804" index="0">
|
|
12
|
-
<XCUIElementTypeOther type="XCUIElementTypeOther" name="Login username password loginBtn" label="Login username password loginBtn" enabled="true" visible="true" x="0" y="92" width="414" height="804" index="0">
|
|
13
|
-
<XCUIElementTypeOther type="XCUIElementTypeOther" name="Login username password loginBtn" label="Login username password loginBtn" enabled="true" visible="true" x="0" y="92" width="414" height="273" index="0">
|
|
14
|
-
<XCUIElementTypeStaticText type="XCUIElementTypeStaticText" value="Login" name="Login" label="Login" enabled="true" visible="true" x="157" y="132" width="101" height="51" index="0"/>
|
|
15
|
-
<XCUIElementTypeOther type="XCUIElementTypeOther" name="username" label="username" enabled="true" visible="true" x="50" y="183" width="314" height="40" index="1">
|
|
16
|
-
<XCUIElementTypeOther type="XCUIElementTypeOther" name="username" label="username" enabled="true" visible="true" x="50" y="183" width="314" height="40" index="0">
|
|
17
|
-
<XCUIElementTypeOther type="XCUIElementTypeOther" name="username" label="username" enabled="true" visible="true" x="50" y="185" width="314" height="51" index="0">
|
|
18
|
-
<XCUIElementTypeTextField type="XCUIElementTypeTextField" value="alice" name="username" label="username" enabled="true" visible="true" x="50" y="185" width="314" height="51" index="0"/>
|
|
19
|
-
<XCUIElementTypeTab type="XCUIElementTypeTab" name="fakeTab" label="" enabled="" visible="true" x="50" y="185" width="314" height="51" index="1"/>
|
|
20
|
-
<XCUIElementTypeKey type="XCUIElementTypeKey" name="fakeKey" label="" enabled="" visible="true" x="50" y="185" width="314" height="51" index="2"/>
|
|
21
|
-
</XCUIElementTypeOther>
|
|
22
|
-
</XCUIElementTypeOther>
|
|
23
|
-
</XCUIElementTypeOther>
|
|
24
|
-
<XCUIElementTypeOther type="XCUIElementTypeOther" name="password" label="password" enabled="true" visible="true" x="50" y="223" width="314" height="40" index="2">
|
|
25
|
-
<XCUIElementTypeOther type="XCUIElementTypeOther" name="password" label="password" enabled="true" visible="true" x="50" y="223" width="314" height="40" index="0">
|
|
26
|
-
<XCUIElementTypeOther type="XCUIElementTypeOther" name="password" label="password" enabled="true" visible="true" x="50" y="225" width="314" height="51" index="0">
|
|
27
|
-
<XCUIElementTypeSecureTextField type="XCUIElementTypeSecureTextField" value="•••••••••" name="password" label="password" enabled="true" visible="true" x="50" y="225" width="314" height="51" index="0"/>
|
|
28
|
-
</XCUIElementTypeOther>
|
|
29
|
-
</XCUIElementTypeOther>
|
|
30
|
-
</XCUIElementTypeOther>
|
|
31
|
-
<XCUIElementTypeOther type="XCUIElementTypeOther" name="loginBtn" label="loginBtn" enabled="true" visible="true" x="177" y="263" width="60" height="102" index="3">
|
|
32
|
-
<XCUIElementTypeOther type="XCUIElementTypeOther" name="loginBtn" label="loginBtn" enabled="true" visible="true" x="177" y="327" width="60" height="38" index="0"/>
|
|
33
|
-
</XCUIElementTypeOther>
|
|
34
|
-
</XCUIElementTypeOther>
|
|
35
|
-
</XCUIElementTypeOther>
|
|
36
|
-
</XCUIElementTypeOther>
|
|
37
|
-
</XCUIElementTypeOther>
|
|
38
|
-
</XCUIElementTypeOther>
|
|
39
|
-
</XCUIElementTypeOther>
|
|
40
|
-
</XCUIElementTypeOther>
|
|
41
|
-
</XCUIElementTypeOther>
|
|
42
|
-
</XCUIElementTypeWindow>
|
|
43
|
-
<XCUIElementTypeWindow type="XCUIElementTypeWindow" enabled="true" visible="false" x="0" y="0" width="414" height="896" index="1">
|
|
44
|
-
<XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="false" x="0" y="0" width="414" height="896" index="0">
|
|
45
|
-
<XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="false" x="0" y="0" width="414" height="896" index="0"/>
|
|
46
|
-
<XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="false" x="0" y="896" width="414" height="71" index="1">
|
|
47
|
-
<XCUIElementTypeOther type="XCUIElementTypeOther" enabled="true" visible="false" x="0" y="896" width="414" height="71" index="0"/>
|
|
48
|
-
</XCUIElementTypeOther>
|
|
49
|
-
</XCUIElementTypeOther>
|
|
50
|
-
</XCUIElementTypeWindow>
|
|
51
|
-
</XCUIElementTypeApplication></AppiumAUT>
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const chai_1 = __importDefault(require("chai"));
|
|
7
|
-
const chai_as_promised_1 = __importDefault(require("chai-as-promised"));
|
|
8
|
-
const index_1 = __importDefault(require("../../index"));
|
|
9
|
-
const base_driver_1 = __importDefault(require("@appium/base-driver"));
|
|
10
|
-
const fixtures_1 = require("../fixtures");
|
|
11
|
-
const xpath_1 = require("../../lib/xpath");
|
|
12
|
-
chai_1.default.use(chai_as_promised_1.default);
|
|
13
|
-
chai_1.default.should();
|
|
14
|
-
describe('UniversalXMLPlugin', function () {
|
|
15
|
-
let next;
|
|
16
|
-
const p = new index_1.default();
|
|
17
|
-
describe('getPageSource', function () {
|
|
18
|
-
const driver = new base_driver_1.default();
|
|
19
|
-
it('should transform page source for ios', async function () {
|
|
20
|
-
next = driver.getPageSource = () => fixtures_1.XML_IOS;
|
|
21
|
-
driver.caps = { platformName: 'iOS' };
|
|
22
|
-
await p.getPageSource(next, driver).should.eventually.eql(fixtures_1.XML_IOS_TRANSFORMED);
|
|
23
|
-
});
|
|
24
|
-
it('should transform page source for android', async function () {
|
|
25
|
-
next = driver.getPageSourcce = () => fixtures_1.XML_ANDROID;
|
|
26
|
-
driver.caps = { platformName: 'Android' };
|
|
27
|
-
driver.opts = { appPackage: 'io.cloudgrey.the_app' };
|
|
28
|
-
await p.getPageSource(next, driver).should.eventually.eql(fixtures_1.XML_ANDROID_TRANSFORMED);
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
describe('findElement(s)', function () {
|
|
32
|
-
const driver = new base_driver_1.default();
|
|
33
|
-
it('should turn an xpath query into another query run on the original ios source', async function () {
|
|
34
|
-
next = driver.getPageSource = () => fixtures_1.XML_IOS;
|
|
35
|
-
driver.caps = { platformName: 'iOS' };
|
|
36
|
-
// mock out the findElement function to just return an xml node from the fixture
|
|
37
|
-
driver.findElement = (strategy, selector) => {
|
|
38
|
-
const nodes = (0, xpath_1.runQuery)(selector, fixtures_1.XML_IOS.replace(/<\/?AppiumAUT>/, ''));
|
|
39
|
-
return nodes[0];
|
|
40
|
-
};
|
|
41
|
-
const node = await p.findElement(next, driver, 'xpath', '//TextInput[@axId="username"]');
|
|
42
|
-
(0, xpath_1.getNodeAttrVal)(node, 'value').should.eql('alice');
|
|
43
|
-
node.nodeName.should.eql('XCUIElementTypeTextField');
|
|
44
|
-
});
|
|
45
|
-
it('should turn an xpath query into another query run on the original android source', async function () {
|
|
46
|
-
next = driver.getPageSource = () => fixtures_1.XML_ANDROID;
|
|
47
|
-
driver.caps = { platformName: 'Android' };
|
|
48
|
-
driver.opts = { appPackage: 'io.cloudgrey.the_app' };
|
|
49
|
-
driver.findElement = (strategy, selector) => {
|
|
50
|
-
const nodes = (0, xpath_1.runQuery)(selector, fixtures_1.XML_ANDROID);
|
|
51
|
-
return nodes[0];
|
|
52
|
-
};
|
|
53
|
-
const node = await p.findElement(next, driver, 'xpath', '//TextInput[@axId="username"]');
|
|
54
|
-
(0, xpath_1.getNodeAttrVal)(node, 'content-desc').should.eql('username');
|
|
55
|
-
node.nodeName.should.eql('android.widget.EditText');
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLXNwZWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L3BsdWdpbi1zcGVjcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGdEQUF3QjtBQUN4Qix3RUFBOEM7QUFDOUMsd0RBQTZDO0FBQzdDLHNFQUE2QztBQUM3QywwQ0FBaUc7QUFDakcsMkNBQTJEO0FBRTNELGNBQUksQ0FBQyxHQUFHLENBQUMsMEJBQWMsQ0FBQyxDQUFDO0FBQ3pCLGNBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUVkLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRTtJQUM3QixJQUFJLElBQUksQ0FBQztJQUNULE1BQU0sQ0FBQyxHQUFHLElBQUksZUFBa0IsRUFBRSxDQUFDO0lBQ25DLFFBQVEsQ0FBQyxlQUFlLEVBQUU7UUFDeEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxxQkFBVSxFQUFFLENBQUM7UUFDaEMsRUFBRSxDQUFDLHNDQUFzQyxFQUFFLEtBQUs7WUFDOUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxhQUFhLEdBQUcsR0FBRyxFQUFFLENBQUMsa0JBQU8sQ0FBQztZQUM1QyxNQUFNLENBQUMsSUFBSSxHQUFHLEVBQUMsWUFBWSxFQUFFLEtBQUssRUFBQyxDQUFDO1lBQ3BDLE1BQU0sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsOEJBQW1CLENBQUMsQ0FBQztRQUNqRixDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQywwQ0FBMEMsRUFBRSxLQUFLO1lBQ2xELElBQUksR0FBRyxNQUFNLENBQUMsY0FBYyxHQUFHLEdBQUcsRUFBRSxDQUFDLHNCQUFXLENBQUM7WUFDakQsTUFBTSxDQUFDLElBQUksR0FBRyxFQUFDLFlBQVksRUFBRSxTQUFTLEVBQUMsQ0FBQztZQUN4QyxNQUFNLENBQUMsSUFBSSxHQUFHLEVBQUMsVUFBVSxF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
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const chai_1 = __importDefault(require("chai"));
|
|
7
|
-
const fixtures_1 = require("../fixtures");
|
|
8
|
-
const source_1 = require("../../lib/source");
|
|
9
|
-
chai_1.default.should();
|
|
10
|
-
describe('source functions', function () {
|
|
11
|
-
describe('transformSourceXml', function () {
|
|
12
|
-
it('should transform an xml doc based on platform', function () {
|
|
13
|
-
const { xml, unknowns: { nodes, attrs } } = (0, source_1.transformSourceXml)(fixtures_1.XML_IOS, 'ios');
|
|
14
|
-
xml.should.eql(fixtures_1.XML_IOS_TRANSFORMED);
|
|
15
|
-
nodes.should.eql([]);
|
|
16
|
-
attrs.should.eql([]);
|
|
17
|
-
});
|
|
18
|
-
it('should transform an xml doc and include index path', function () {
|
|
19
|
-
const { xml, unknowns: { nodes, attrs } } = (0, source_1.transformSourceXml)(fixtures_1.XML_IOS, 'ios', { addIndexPath: true });
|
|
20
|
-
xml.should.eql(fixtures_1.XML_IOS_TRANSFORMED_INDEX_PATH);
|
|
21
|
-
nodes.should.eql([]);
|
|
22
|
-
attrs.should.eql([]);
|
|
23
|
-
});
|
|
24
|
-
it('should transform an xml doc and return any unknown nodes or attrs', function () {
|
|
25
|
-
const { xml, unknowns: { nodes, attrs } } = (0, source_1.transformSourceXml)(fixtures_1.XML_IOS_EDGE, 'ios');
|
|
26
|
-
xml.should.eql(fixtures_1.XML_IOS_EDGE_TRANSFORMED);
|
|
27
|
-
nodes.should.eql(['SomeRandoElement']);
|
|
28
|
-
attrs.should.eql(['oddAttribute']);
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
describe('transformChildNodes', function () {
|
|
32
|
-
it('should loop through child nodes of an object and transform them based on platform', function () {
|
|
33
|
-
const node = { XCUIElementTypeIcon: [{}], XCUIElementTypeKey: [{}], XCUIElementTypeTab: [{}] };
|
|
34
|
-
const metadata = {};
|
|
35
|
-
(0, source_1.transformChildNodes)(node, Object.keys(node), 'ios', metadata).should.eql({ nodes: [], attrs: [] });
|
|
36
|
-
node.should.eql({ Button: [{}, {}], Icon: [{}] });
|
|
37
|
-
});
|
|
38
|
-
it('should leave unknown nodes intact and add them to unknowns list', function () {
|
|
39
|
-
const node = { XCUIElementTypeIcon: [{}], UnknownThingo: [{}], XCUIElementTypeTab: [{}] };
|
|
40
|
-
const metadata = {};
|
|
41
|
-
(0, source_1.transformChildNodes)(node, Object.keys(node), 'ios', metadata).should.eql({ nodes: ['UnknownThingo'], attrs: [] });
|
|
42
|
-
node.should.eql({ Button: [{}], UnknownThingo: [{}], Icon: [{}] });
|
|
43
|
-
});
|
|
44
|
-
it('should leave nodes for other platforms intact and add them to unknowns list', function () {
|
|
45
|
-
const node = { XCUIElementTypeIcon: [{}], 'android.widget.EditText': [{}], XCUIElementTypeTab: [{}] };
|
|
46
|
-
const metadata = {};
|
|
47
|
-
(0, source_1.transformChildNodes)(node, Object.keys(node), 'ios', metadata).should.eql({ nodes: ['android.widget.EditText'], attrs: [] });
|
|
48
|
-
node.should.eql({ Button: [{}], 'android.widget.EditText': [{}], Icon: [{}] });
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
describe('transformAttrs', function () {
|
|
52
|
-
it('should remove attributes in the REMOVE_ATTRS list', function () {
|
|
53
|
-
const obj = { '@_type': 'foo', '@_package': 'yes', '@_class': 'lol' };
|
|
54
|
-
const attrs = Object.keys(obj);
|
|
55
|
-
const unknowns = (0, source_1.transformAttrs)(obj, attrs, 'ios');
|
|
56
|
-
obj.should.eql({});
|
|
57
|
-
unknowns.should.eql([]);
|
|
58
|
-
});
|
|
59
|
-
it('should translate attributes for the platform', function () {
|
|
60
|
-
const obj = { '@_type': 'foo', '@_resource-id': 'someId' };
|
|
61
|
-
const attrs = Object.keys(obj);
|
|
62
|
-
const unknowns = (0, source_1.transformAttrs)(obj, attrs, 'android');
|
|
63
|
-
obj.should.eql({ '@_id': 'someId' });
|
|
64
|
-
unknowns.should.eql([]);
|
|
65
|
-
});
|
|
66
|
-
it('should not translate unknown attributes and return them in the unknowns list', function () {
|
|
67
|
-
const obj = { '@_type': 'foo', '@_resource-id': 'someId', '@_rando': 'lorian' };
|
|
68
|
-
const attrs = Object.keys(obj);
|
|
69
|
-
const unknowns = (0, source_1.transformAttrs)(obj, attrs, 'android');
|
|
70
|
-
obj.should.eql({ '@_id': 'someId', '@_rando': 'lorian' });
|
|
71
|
-
unknowns.should.eql(['rando']);
|
|
72
|
-
});
|
|
73
|
-
it('should not translate attributes for a different platform', function () {
|
|
74
|
-
const obj = { '@_type': 'foo', '@_resource-id': 'someId' };
|
|
75
|
-
const attrs = Object.keys(obj);
|
|
76
|
-
const unknowns = (0, source_1.transformAttrs)(obj, attrs, 'ios');
|
|
77
|
-
obj.should.eql({ '@_resource-id': 'someId' });
|
|
78
|
-
unknowns.should.eql(['resource-id']);
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlLXNwZWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L3NvdXJjZS1zcGVjcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGdEQUF3QjtBQUN4QiwwQ0FDcUU7QUFDckUsNkNBQTJGO0FBRTNGLGNBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUVkLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRTtJQUMzQixRQUFRLENBQUMsb0JBQW9CLEVBQUU7UUFDN0IsRUFBRSxDQUFDLCtDQUErQyxFQUFFO1lBQ2xELE1BQU0sRUFBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLEVBQUMsS0FBSyxFQUFFLEtBQUssRUFBQyxFQUFDLEdBQUcsSUFBQSwyQkFBa0IsRUFBQyxrQkFBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzNFLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLDhCQUFtQixDQUFDLENBQUM7WUFDcEMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDckIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsb0RBQW9ELEVBQUU7WUFDdkQsTUFBTSxFQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBQyxLQUFLLEVBQUUsS0FBSyxFQUFDLEVBQUMsR0FBRyxJQUFBLDJCQUFrQixFQUFDLGtCQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUMsWUFBWSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7WUFDakcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMseUNBQThCLENBQUMsQ0FBQztZQUMvQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNyQixLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztR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
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const chai_1 = __importDefault(require("chai"));
|
|
7
|
-
const xpath_1 = require("../../lib/xpath");
|
|
8
|
-
const source_1 = require("../../lib/source");
|
|
9
|
-
const fixtures_1 = require("../fixtures");
|
|
10
|
-
const should = chai_1.default.should();
|
|
11
|
-
describe('xpath functions', function () {
|
|
12
|
-
describe('runQuery', function () {
|
|
13
|
-
it('should run an xpath query on an XML string and return nodes', function () {
|
|
14
|
-
(0, xpath_1.runQuery)('//*', fixtures_1.XML_IOS).should.have.length(31);
|
|
15
|
-
(0, xpath_1.runQuery)('//XCUIElementTypeTextField', fixtures_1.XML_IOS).should.have.length(1);
|
|
16
|
-
});
|
|
17
|
-
});
|
|
18
|
-
describe('transformQuery', function () {
|
|
19
|
-
it('should transform a query into a single new query', function () {
|
|
20
|
-
const { xml } = (0, source_1.transformSourceXml)(fixtures_1.XML_IOS, 'ios', { addIndexPath: true });
|
|
21
|
-
(0, xpath_1.transformQuery)('//TextInput', xml, false)
|
|
22
|
-
.should.eql('/*[1]/*[1]/*[1]/*[1]/*[2]/*[1]/*[1]/*[1]/*[1]/*[1]/*[1]/*[2]/*[1]/*[1]/*[1]');
|
|
23
|
-
});
|
|
24
|
-
it('should transform a query into a multiple new queries if asked', function () {
|
|
25
|
-
const { xml } = (0, source_1.transformSourceXml)(fixtures_1.XML_IOS, 'ios', { addIndexPath: true });
|
|
26
|
-
(0, xpath_1.transformQuery)('//Window', xml, true)
|
|
27
|
-
.split('|')
|
|
28
|
-
.should.have.length(2);
|
|
29
|
-
});
|
|
30
|
-
it('should return null for queries that dont find anything', function () {
|
|
31
|
-
const { xml } = (0, source_1.transformSourceXml)(fixtures_1.XML_IOS, 'ios', { addIndexPath: true });
|
|
32
|
-
should.not.exist((0, xpath_1.transformQuery)('//blah', xml, false));
|
|
33
|
-
});
|
|
34
|
-
});
|
|
35
|
-
describe('getNodeAttrVal', function () {
|
|
36
|
-
it('should get the attribute for a node', function () {
|
|
37
|
-
const node = (0, xpath_1.runQuery)('//XCUIElementTypeTextField', fixtures_1.XML_IOS)[0];
|
|
38
|
-
(0, xpath_1.getNodeAttrVal)(node, 'name').should.eql('username');
|
|
39
|
-
});
|
|
40
|
-
it('should throw an error if the attr does not exist', function () {
|
|
41
|
-
const node = (0, xpath_1.runQuery)('//XCUIElementTypeTextField', fixtures_1.XML_IOS)[0];
|
|
42
|
-
should.throw(() => (0, xpath_1.getNodeAttrVal)(node, 'foo'));
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHBhdGgtc3BlY3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQveHBhdGgtc3BlY3MuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxnREFBd0I7QUFDeEIsMkNBQTJFO0FBQzNFLDZDQUFzRDtBQUN0RCwwQ0FBc0M7QUFFdEMsTUFBTSxNQUFNLEdBQUcsY0FBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBRTdCLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRTtJQUMxQixRQUFRLENBQUMsVUFBVSxFQUFFO1FBQ25CLEVBQUUsQ0FBQyw2REFBNkQsRUFBRTtZQUNoRSxJQUFBLGdCQUFRLEVBQUMsS0FBSyxFQUFFLGtCQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoRCxJQUFBLGdCQUFRLEVBQUMsNEJBQTRCLEVBQUUsa0JBQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDSCxRQUFRLENBQUMsZ0JBQWdCLEVBQUU7UUFDekIsRUFBRSxDQUFDLGtEQUFrRCxFQUFFO1lBQ3JELE1BQU0sRUFBQyxHQUFHLEVBQUMsR0FBRyxJQUFBLDJCQUFrQixFQUFDLGtCQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUMsWUFBWSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7WUFDdkUsSUFBQSxzQkFBYyxFQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDO2lCQUN0QyxNQUFNLENBQUMsR0FBRyxDQUFDLDZFQUE2RSxDQUFDLENBQUM7UUFDL0YsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsK0RBQStELEVBQUU7WUFDbEUsTUFBTSxFQUFDLEdBQUcsRUFBQyxHQUFHLElBQUEsMkJBQWtCLEVBQUMsa0JBQU8sRUFBRSxLQUFLLEVBQUUsRUFBQyxZQUFZLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztZQUN2RSxJQUFBLHNCQUFjLEVBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUM7aUJBQ2xDLEtBQUssQ0FBQyxHQUFHLENBQUM7aUJBQ1YsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsd0RBQXdELEVBQUU7WUFDM0QsTUFBTSxFQUFDLEdBQUcsRUFBQyxHQUFHLElBQUEsMkJBQWtCLEVBQUMsa0JBQU8sRUFBRSxLQUFLLEVBQUUsRUFBQyxZQUFZLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztZQUN2RSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFBLHNCQUFjLEVBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3pELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDSCxRQUFRLENBQUUsZ0JBQWdCLEVBQUU7UUFDMUIsRUFBRSxDQUFDLHFDQUFxQyxFQUFFO1lBQ3hDLE1BQU0sSUFBSSxHQUFHLElBQUEsZ0JBQVEsRUFBQyw0QkFBNEIsRUFBRSxrQkFBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEUsSUFBQSxzQkFBYyxFQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO1FBQ0gsRUFBRSxDQUFDLGtEQUFrRCxFQUFFO1lBQ3JELE1BQU0sSUFBSSxHQUFHLElBQUEsZ0JBQVEsRUFBQyw0QkFBNEIsRUFBRSxrQkFBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEUsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFBLHNCQUFjLEVBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIn0=
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<UI width="1080" height="1920" indexPath="/0">
|
|
3
|
-
<View text="" indexPath="/0/0" x="0" y="0" width="1080" height="1920" visible="true">
|
|
4
|
-
<View text="" indexPath="/0/0/0" x="0" y="0" width="1080" height="1920" visible="true">
|
|
5
|
-
<View text="" indexPath="/0/0/0/0" x="0" y="72" width="1080" height="1848" visible="true">
|
|
6
|
-
<View text="" indexPath="/0/0/0/0/0" x="0" y="72" width="1080" height="1848" id="action_bar_root" visible="true">
|
|
7
|
-
<View text="" indexPath="/0/0/0/0/0/0" x="0" y="72" width="1080" height="1848" id="android:id/content" visible="true">
|
|
8
|
-
<View text="" indexPath="/0/0/0/0/0/0/0" x="0" y="72" width="1080" height="1848" visible="true">
|
|
9
|
-
<View text="" indexPath="/0/0/0/0/0/0/0/0" x="0" y="72" width="1080" height="1848" visible="true"></View>
|
|
10
|
-
<View text="" indexPath="/0/0/0/0/0/0/0/1" x="0" y="72" width="1080" height="1848" visible="true">
|
|
11
|
-
<View text="" indexPath="/0/0/0/0/0/0/0/1/0" x="0" y="72" width="1080" height="168" visible="true">
|
|
12
|
-
<View text="" indexPath="/0/0/0/0/0/0/0/1/0/0" x="0" y="72" width="1080" height="168" visible="true">
|
|
13
|
-
<View text="" indexPath="/0/0/0/0/0/0/0/1/0/0/0" x="0" y="72" width="1080" height="168" visible="true">
|
|
14
|
-
<Button text="" indexPath="/0/0/0/0/0/0/0/1/0/0/0/0" x="0" y="72" width="168" height="168" visible="true"></Button>
|
|
15
|
-
</View>
|
|
16
|
-
</View>
|
|
17
|
-
</View>
|
|
18
|
-
<View text="" indexPath="/0/0/0/0/0/0/0/1/1" x="0" y="240" width="1080" height="1680" visible="true">
|
|
19
|
-
<Text text="Login" indexPath="/0/0/0/0/0/0/0/1/1/0" x="413" y="360" width="255" height="136" visible="true"></Text>
|
|
20
|
-
<View text="" indexPath="/0/0/0/0/0/0/0/1/1/1" x="150" y="496" width="780" height="120" visible="true">
|
|
21
|
-
<TextInput text="alice" indexPath="/0/0/0/0/0/0/0/1/1/1/0" x="150" y="504" width="780" height="112" axId="username" visible="true"></TextInput>
|
|
22
|
-
</View>
|
|
23
|
-
<View text="" indexPath="/0/0/0/0/0/0/0/1/1/2" x="150" y="616" width="780" height="120" visible="true">
|
|
24
|
-
<TextInput text="•••••••••" indexPath="/0/0/0/0/0/0/0/1/1/2/0" x="150" y="624" width="780" height="112" axId="password" visible="true"></TextInput>
|
|
25
|
-
</View>
|
|
26
|
-
<View text="" indexPath="/0/0/0/0/0/0/0/1/1/3" x="456" y="736" width="168" height="113" visible="true">
|
|
27
|
-
<View text="" indexPath="/0/0/0/0/0/0/0/1/1/3/0" x="456" y="736" width="168" height="113" axId="loginBtn" visible="true">
|
|
28
|
-
<Text text="Login" indexPath="/0/0/0/0/0/0/0/1/1/3/0/0" x="456" y="736" width="168" height="113" visible="true"></Text>
|
|
29
|
-
</View>
|
|
30
|
-
</View>
|
|
31
|
-
</View>
|
|
32
|
-
</View>
|
|
33
|
-
</View>
|
|
34
|
-
</View>
|
|
35
|
-
</View>
|
|
36
|
-
</View>
|
|
37
|
-
</View>
|
|
38
|
-
</View>
|
|
39
|
-
</UI>
|