appium-cdp-driver 1.0.2 → 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/README.md +4 -4
- package/build/scripts/brave.js +99 -0
- package/build/scripts/duckduckgo.js +100 -0
- package/build/scripts/opera.js +43 -13
- package/build/src/adb.js +34 -2
- package/build/src/commands/element.js +3 -2
- package/build/src/commands/find.js +16 -4
- package/build/src/driver.js +10 -3
- package/package.json +7 -5
- package/src/adb.js +32 -1
- package/src/commands/element.js +2 -1
- package/src/commands/find.js +15 -3
- package/src/driver.js +8 -2
package/README.md
CHANGED
|
@@ -30,10 +30,10 @@ LOCAL_PROTOCOL=true appium server -pa /wd/hub --use-drivers=cdp-driver
|
|
|
30
30
|
|
|
31
31
|
### Appium Capabilities
|
|
32
32
|
|
|
33
|
-
| Capability | Required | Type | Description
|
|
34
|
-
| ----------------------- | :------: | :----: |
|
|
35
|
-
| `appium:automationName` | + | string | Must be `CDP`
|
|
36
|
-
| `appium:browserName` | + | string | Must be `chrome` or `Terrace` or `opera` or `brave` |
|
|
33
|
+
| Capability | Required | Type | Description |
|
|
34
|
+
| ----------------------- | :------: | :----: | ------------------------------------------------------------------- |
|
|
35
|
+
| `appium:automationName` | + | string | Must be `CDP` |
|
|
36
|
+
| `appium:browserName` | + | string | Must be `chrome` or `Terrace` or `opera` or `brave` or `duckduckgo` |
|
|
37
37
|
|
|
38
38
|
### W3C Capabilities
|
|
39
39
|
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
4
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
5
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
6
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
7
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
8
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
9
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
13
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
14
|
+
};
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
const appium_uiautomator2_driver_1 = require("appium-uiautomator2-driver");
|
|
17
|
+
const appium_adb_1 = require("appium-adb");
|
|
18
|
+
const logger_js_1 = __importDefault(require("../src/logger.js"));
|
|
19
|
+
const asyncbox_1 = require("asyncbox");
|
|
20
|
+
const START_APP_WAIT_DURATION = 60000;
|
|
21
|
+
const brave = {
|
|
22
|
+
pkg: 'com.brave.browser',
|
|
23
|
+
activity: 'com.google.android.apps.chrome.Main',
|
|
24
|
+
};
|
|
25
|
+
const common = {
|
|
26
|
+
waitDuration: START_APP_WAIT_DURATION,
|
|
27
|
+
optionalIntentArguments: '-d www.appium.io',
|
|
28
|
+
};
|
|
29
|
+
function skipWelcomeBrave() {
|
|
30
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
const adb = yield appium_adb_1.ADB.createADB();
|
|
32
|
+
yield adb.adbExec(['shell', 'pm', 'clear', 'com.brave.browser']);
|
|
33
|
+
//await adb.startApp(Object.assign({}, opera, common));
|
|
34
|
+
const driver = new appium_uiautomator2_driver_1.AndroidUiautomator2Driver();
|
|
35
|
+
const caps = {
|
|
36
|
+
platformName: "Android",
|
|
37
|
+
"appium:automationName": "UiAutomator2",
|
|
38
|
+
"appium:deviceName": "Android Device",
|
|
39
|
+
"appium:appPackage": "com.brave.browser",
|
|
40
|
+
"appium:appActivity": "com.google.android.apps.chrome.Main",
|
|
41
|
+
};
|
|
42
|
+
try {
|
|
43
|
+
yield driver.createSession(null, {
|
|
44
|
+
alwaysMatch: caps,
|
|
45
|
+
firstMatch: [{}],
|
|
46
|
+
});
|
|
47
|
+
const activity = yield driver.getCurrentActivity();
|
|
48
|
+
logger_js_1.default.info(`Activity is ${activity}`);
|
|
49
|
+
if (activity.includes('Welcome')) {
|
|
50
|
+
const findElementWithWaitForCondition = (strategy_1, selector_1, ...args_1) => __awaiter(this, [strategy_1, selector_1, ...args_1], void 0, function* (strategy, selector, timeout = 6000) {
|
|
51
|
+
try {
|
|
52
|
+
return yield (0, asyncbox_1.waitForCondition)(() => __awaiter(this, void 0, void 0, function* () {
|
|
53
|
+
try {
|
|
54
|
+
logger_js_1.default.info(`Attempting to find element (${strategy}: ${selector})`);
|
|
55
|
+
const element = yield driver.findElement(strategy, selector);
|
|
56
|
+
logger_js_1.default.info(`Successfully found element (${strategy}: ${selector})`);
|
|
57
|
+
return element;
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
// Return false to continue waiting
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
}), {
|
|
64
|
+
waitMs: timeout,
|
|
65
|
+
intervalMs: 1000,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
throw new Error(`Failed to find element (${strategy}: ${selector}) within ${timeout}ms timeout: ${error.message}`);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
const cancelButton = yield findElementWithWaitForCondition('id', 'android:id/button2');
|
|
73
|
+
logger_js_1.default.info(`Cancel button is ${JSON.stringify(cancelButton, null, 2)}`);
|
|
74
|
+
yield driver.click(cancelButton.ELEMENT);
|
|
75
|
+
try {
|
|
76
|
+
yield findElementWithWaitForCondition('xpath', '//android.widget.TextView[@text="Allow Brave to send you notifications?"]');
|
|
77
|
+
const allowButton = yield findElementWithWaitForCondition('id', 'com.android.permissioncontroller:id/permission_allow_button');
|
|
78
|
+
yield driver.click(allowButton.ELEMENT);
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
logger_js_1.default.info(`Help make Brave better text not found, skipping`);
|
|
82
|
+
}
|
|
83
|
+
const laterButton = yield findElementWithWaitForCondition('id', 'com.brave.browser:id/btn_negative');
|
|
84
|
+
yield driver.click(laterButton.ELEMENT);
|
|
85
|
+
yield findElementWithWaitForCondition('xpath', '//android.widget.TextView[@text="Help make Brave better."]');
|
|
86
|
+
const continueButton = yield findElementWithWaitForCondition('id', 'com.brave.browser:id/btn_positive');
|
|
87
|
+
yield driver.click(continueButton.ELEMENT);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
finally {
|
|
91
|
+
yield driver.deleteSession();
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
96
|
+
yield skipWelcomeBrave();
|
|
97
|
+
process.exit(0);
|
|
98
|
+
}))();
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zY3JpcHRzL2JyYXZlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUVBLDJFQUF1RTtBQUN2RSwyQ0FBaUM7QUFDakMsaUVBQW1DO0FBQ25DLHVDQUE0QztBQUU1QyxNQUFNLHVCQUF1QixHQUFHLEtBQUssQ0FBQztBQUV0QyxNQUFNLEtBQUssR0FBRztJQUNaLEdBQUcsRUFBRSxtQkFBbUI7SUFDeEIsUUFBUSxFQUFFLHFDQUFxQztDQUNoRCxDQUFDO0FBRUYsTUFBTSxNQUFNLEdBQUc7SUFDYixZQUFZLEVBQUUsdUJBQXVCO0lBQ3JDLHVCQUF1QixFQUFFLGtCQUFrQjtDQUM1QyxDQUFDO0FBRUYsU0FBZSxnQkFBZ0I7O1FBQzdCLE1BQU0sR0FBRyxHQUFHLE1BQU0sZ0JBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNsQyxNQUFNLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7UUFDakUsdURBQXVEO1FBQ3ZELE1BQU0sTUFBTSxHQUFHLElBQUksc0RBQXlCLEVBQUUsQ0FBQztRQUMvQyxNQUFNLElBQUksR0FBRztZQUNYLFlBQVksRUFBRSxTQUFTO1lBQ3ZCLHVCQUF1QixFQUFFLGNBQWM7WUFDdkMsbUJBQW1CLEVBQUUsZ0JBQWdCO1lBQ3JDLG1CQUFtQixFQUFFLG1CQUFtQjtZQUN4QyxvQkFBb0IsRUFBRSxxQ0FBcUM7U0FDNUQsQ0FBQztRQUNGLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUU7Z0JBQy9CLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUM7YUFDakIsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FB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
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
4
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
5
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
6
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
7
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
8
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
9
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
13
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
14
|
+
};
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
const appium_uiautomator2_driver_1 = require("appium-uiautomator2-driver");
|
|
17
|
+
const appium_adb_1 = require("appium-adb");
|
|
18
|
+
const logger_js_1 = __importDefault(require("../src/logger.js"));
|
|
19
|
+
const asyncbox_1 = require("asyncbox");
|
|
20
|
+
const START_APP_WAIT_DURATION = 60000;
|
|
21
|
+
const duckduckgo = {
|
|
22
|
+
pkg: 'com.duckduckgo.mobile.android',
|
|
23
|
+
activity: 'com.duckduckgo.app.browser.BrowserActivity',
|
|
24
|
+
};
|
|
25
|
+
const common = {
|
|
26
|
+
waitDuration: START_APP_WAIT_DURATION,
|
|
27
|
+
optionalIntentArguments: '-d www.appium.io',
|
|
28
|
+
};
|
|
29
|
+
function skipWelcomeDuckDuckGo() {
|
|
30
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
const adb = yield appium_adb_1.ADB.createADB();
|
|
32
|
+
yield adb.adbExec(['shell', 'pm', 'clear', 'com.duckduckgo.mobile.android']);
|
|
33
|
+
const driver = new appium_uiautomator2_driver_1.AndroidUiautomator2Driver();
|
|
34
|
+
const caps = {
|
|
35
|
+
platformName: "Android",
|
|
36
|
+
"appium:automationName": "UiAutomator2",
|
|
37
|
+
"appium:deviceName": "Android Device",
|
|
38
|
+
"appium:appPackage": "com.duckduckgo.mobile.android",
|
|
39
|
+
"appium:appActivity": "com.duckduckgo.app.browser.BrowserActivity",
|
|
40
|
+
};
|
|
41
|
+
try {
|
|
42
|
+
yield driver.createSession(null, {
|
|
43
|
+
alwaysMatch: caps,
|
|
44
|
+
firstMatch: [{}],
|
|
45
|
+
});
|
|
46
|
+
const activity = yield driver.getCurrentActivity();
|
|
47
|
+
logger_js_1.default.info(`Activity is ${activity}`);
|
|
48
|
+
if (activity.includes('BrowserActivity')) {
|
|
49
|
+
const findElementWithWaitForCondition = (strategy_1, selector_1, ...args_1) => __awaiter(this, [strategy_1, selector_1, ...args_1], void 0, function* (strategy, selector, timeout = 6000) {
|
|
50
|
+
try {
|
|
51
|
+
return yield (0, asyncbox_1.waitForCondition)(() => __awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
try {
|
|
53
|
+
logger_js_1.default.info(`Attempting to find element (${strategy}: ${selector})`);
|
|
54
|
+
const element = yield driver.findElement(strategy, selector);
|
|
55
|
+
logger_js_1.default.info(`Successfully found element (${strategy}: ${selector})`);
|
|
56
|
+
return element;
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
// Return false to continue waiting
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
}), {
|
|
63
|
+
waitMs: timeout,
|
|
64
|
+
intervalMs: 1000,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
throw new Error(`Failed to find element (${strategy}: ${selector}) within ${timeout}ms timeout: ${error.message}`);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
let attempt = 0;
|
|
72
|
+
let found = false;
|
|
73
|
+
const MAX_RETRIES = 3;
|
|
74
|
+
while (attempt < MAX_RETRIES && !found) {
|
|
75
|
+
try {
|
|
76
|
+
const dismissButton = yield findElementWithWaitForCondition('id', 'com.duckduckgo.mobile.android:id/bottomSheetPromoSecondaryButton');
|
|
77
|
+
logger_js_1.default.info(`Dismiss button found: ${JSON.stringify(dismissButton, null, 2)} in attempt ${attempt}`);
|
|
78
|
+
yield driver.click(dismissButton.ELEMENT);
|
|
79
|
+
found = true;
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
logger_js_1.default.info(`Dismiss button not found, retrying after opening a url...`);
|
|
83
|
+
}
|
|
84
|
+
finally {
|
|
85
|
+
yield adb.shell(['am', 'start', '-a', 'android.intent.action.VIEW', '-d', 'https://www.appium.io', duckduckgo.pkg]);
|
|
86
|
+
attempt++;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
finally {
|
|
92
|
+
yield driver.deleteSession();
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
97
|
+
yield skipWelcomeDuckDuckGo();
|
|
98
|
+
process.exit(0);
|
|
99
|
+
}))();
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVja2R1Y2tnby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NjcmlwdHMvZHVja2R1Y2tnby5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFFQSwyRUFBdUU7QUFDdkUsMkNBQWlDO0FBQ2pDLGlFQUFtQztBQUNuQyx1Q0FBNEM7QUFFNUMsTUFBTSx1QkFBdUIsR0FBRyxLQUFLLENBQUM7QUFFdEMsTUFBTSxVQUFVLEdBQUc7SUFDakIsR0FBRyxFQUFFLCtCQUErQjtJQUNwQyxRQUFRLEVBQUUsNENBQTRDO0NBQ3ZELENBQUM7QUFFRixNQUFNLE1BQU0sR0FBRztJQUNiLFlBQVksRUFBRSx1QkFBdUI7SUFDckMsdUJBQXVCLEVBQUUsa0JBQWtCO0NBQzVDLENBQUM7QUFFRixTQUFlLHFCQUFxQjs7UUFDbEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxnQkFBRyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLCtCQUErQixDQUFDLENBQUMsQ0FBQztRQUM3RSxNQUFNLE1BQU0sR0FBRyxJQUFJLHNEQUF5QixFQUFFLENBQUM7UUFDL0MsTUFBTSxJQUFJLEdBQUc7WUFDWCxZQUFZLEVBQUUsU0FBUztZQUN2Qix1QkFBdUIsRUFBRSxjQUFjO1lBQ3ZDLG1CQUFtQixFQUFFLGdCQUFnQjtZQUNyQyxtQkFBbUIsRUFBRSwrQkFBK0I7WUFDcEQsb0JBQW9CLEVBQUUsNENBQTRDO1NBQ25FLENBQUM7UUFDRixJQUFJLENBQUM7WUFDSCxNQUFNLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFO2dCQUMvQixXQUFXLEVBQUUsSUFBSTtnQkFDakIsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDO2FBQ2pCLENBQUMsQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDbkQsbUJBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3BDLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pDLE1BQU0sK0JBQStCLEdBQUcsb0NBSXRDLEVBQUUseUVBSEYsUUFBUSxFQUNSLFFBQVEsRUFDUixPQUFPLEdBQUcsSUFBSTtvQkFFZCxJQUFJLENBQUM7d0JBQ0gsT0FBTyxNQUFNLElBQUEsMkJBQWdCLEVBQzNCLEdBQVMsRUFBRTs0QkFDVCxJQUFJLENBQUM7Z0NBQ0gsbUJBQUcsQ0FBQyxJQUFJLENBQ04sK0JBQStCLFFBQVEsS0FBSyxRQUFRLEdBQUcsQ0FDeEQsQ0FBQztnQ0FDRixNQUFNLE9BQU8sR0FBRyxNQUFNLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dDQUM3RCxtQkFBRyxDQUFDLElBQUksQ0FDTiwrQkFBK0IsUUFBUSxLQUFLLFFBQVEsR0FBRyxDQUN4RCxDQUFDO2dDQUNGLE9BQU8sT0FBTyxDQUFDOzRCQUNqQixDQUFDOzRCQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0NBQ2YsbUNBQW1DO2dDQUNuQyxPQUFPLEtBQUssQ0FBQzs0QkFDZixDQUFDO3dCQUNILENBQUMsQ0FBQSxFQUNEOzRCQUNFLE1BQU0sRUFBRSxPQUFPOzRCQUNmLFVBQVUsRUFBRSxJQUFJO3lCQUNqQixDQUNGLENBQUM7b0JBQ0osQ0FBQztvQkFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO3dCQUNmLE1BQU0sSUFBSSxLQUFLLENBQ2IsMkJBQTJCLFFBQVEsS0FBSyxRQUFRLFlBQVksT0FBTyxlQUFlLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FDbEcsQ0FBQztvQkFDSixDQUFDO2dCQUNILENBQUMsQ0FBQSxDQUFDO2dCQUVGLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztnQkFDaEIsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDO2dCQUNsQixNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUM7Z0JBRXRCLE9BQU8sT0FBTyxHQUFHLFdBQVcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUN2QyxJQUFHLENBQUM7d0JBQ0YsTUFBTSxhQUFhLEdBQUcsTUFBTSwrQkFBK0IsQ0FDekQsSUFBSSxFQUNKLGtFQUFrRSxDQUNuRSxDQUFDO3dCQUNGLG1CQUFHLENBQUMsSUFBSSxDQUFDLHlCQUF5QixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLGVBQWUsT0FBTyxFQUFFLENBQUMsQ0FBQzt3QkFDbEcsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQzt3QkFDMUMsS0FBSyxHQUFHLElBQUksQ0FBQztvQkFDZixDQUFDO29CQUFDLE9BQU0sS0FBSyxFQUFFLENBQUM7d0JBQ2QsbUJBQUcsQ0FBQyxJQUFJLENBQUMsMkRBQTJELENBQUMsQ0FBQztvQkFDeEUsQ0FBQzs0QkFDTyxDQUFDO3dCQUNQLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLDRCQUE0QixFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzt3QkFDcEgsT0FBTyxFQUFFLENBQUM7b0JBQ1osQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7Z0JBQVMsQ0FBQztZQUNULE1BQU0sTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQy9CLENBQUM7SUFDSCxDQUFDO0NBQUE7QUFFRCxDQUFDLEdBQVMsRUFBRTtJQUNWLE1BQU0scUJBQXFCLEVBQUUsQ0FBQztJQUM5QixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLENBQUMsQ0FBQSxDQUFDLEVBQUUsQ0FBQyJ9
|
package/build/scripts/opera.js
CHANGED
|
@@ -44,9 +44,6 @@ function skipWelcomeOpera() {
|
|
|
44
44
|
alwaysMatch: caps,
|
|
45
45
|
firstMatch: [{}],
|
|
46
46
|
});
|
|
47
|
-
yield driver.updateSettings({
|
|
48
|
-
waitForIdleTimeout: 0,
|
|
49
|
-
});
|
|
50
47
|
const activity = yield driver.getCurrentActivity();
|
|
51
48
|
logger_js_1.default.info(`Activity is ${activity}`);
|
|
52
49
|
if (activity.includes('Welcome')) {
|
|
@@ -77,18 +74,51 @@ function skipWelcomeOpera() {
|
|
|
77
74
|
logger_js_1.default.info(`Next button is ${JSON.stringify(nextButton, null, 2)}`);
|
|
78
75
|
yield driver.click(nextButton.ELEMENT);
|
|
79
76
|
const skipButton = yield findElementWithWaitForCondition('id', 'com.opera.browser:id/skip_button');
|
|
80
|
-
|
|
81
|
-
|
|
77
|
+
const MAX_RETRIES = 3;
|
|
78
|
+
let attempt = 0;
|
|
79
|
+
let found = false;
|
|
80
|
+
while (attempt < MAX_RETRIES && !found) {
|
|
81
|
+
yield driver.click(skipButton.ELEMENT);
|
|
82
|
+
try {
|
|
83
|
+
yield findElementWithWaitForCondition('xpath', '//android.widget.Button[@text="Enable notifications"]');
|
|
84
|
+
found = true;
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
logger_js_1.default.info(`Enable notifications text not found, retrying skip...`);
|
|
88
|
+
attempt++;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
82
91
|
const skipAgainButton = yield findElementWithWaitForCondition('id', 'com.opera.browser:id/skip_button');
|
|
83
|
-
|
|
92
|
+
attempt = 0;
|
|
93
|
+
found = false;
|
|
94
|
+
while (attempt < MAX_RETRIES && !found) {
|
|
95
|
+
yield driver.click(skipAgainButton.ELEMENT);
|
|
96
|
+
try {
|
|
97
|
+
yield findElementWithWaitForCondition('xpath', '//android.widget.Button[@text="Allow"]');
|
|
98
|
+
found = true;
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
logger_js_1.default.info(`Enable notifications text not found, retrying skip...`);
|
|
102
|
+
attempt++;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
84
105
|
const allowButton = yield findElementWithWaitForCondition('xpath', '//android.widget.Button[@text="Allow"]');
|
|
85
106
|
yield driver.click(allowButton.ELEMENT);
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
107
|
+
attempt = 0;
|
|
108
|
+
found = false;
|
|
109
|
+
while (attempt < MAX_RETRIES && !found) {
|
|
110
|
+
try {
|
|
111
|
+
const doneButton = yield findElementWithWaitForCondition('id', 'com.opera.browser:id/positive_button', 8000);
|
|
112
|
+
yield driver.click(doneButton.ELEMENT);
|
|
113
|
+
found = true;
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
logger_js_1.default.info(`Done button not found, retrying after opening a url...`);
|
|
117
|
+
}
|
|
118
|
+
finally {
|
|
119
|
+
yield adb.shell(['am', 'start', '-a', 'android.intent.action.VIEW', '-d', 'https://www.appium.io', opera.pkg]);
|
|
120
|
+
attempt++;
|
|
121
|
+
}
|
|
92
122
|
}
|
|
93
123
|
}
|
|
94
124
|
}
|
|
@@ -101,4 +131,4 @@ function skipWelcomeOpera() {
|
|
|
101
131
|
yield skipWelcomeOpera();
|
|
102
132
|
process.exit(0);
|
|
103
133
|
}))();
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zY3JpcHRzL29wZXJhLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUVBLDJFQUF1RTtBQUN2RSwyQ0FBaUM7QUFDakMsaUVBQW1DO0FBQ25DLHVDQUE0QztBQUU1QyxNQUFNLHVCQUF1QixHQUFHLEtBQUssQ0FBQztBQUV0QyxNQUFNLEtBQUssR0FBRztJQUNaLEdBQUcsRUFBRSxtQkFBbUI7SUFDeEIsUUFBUSxFQUFFLG1DQUFtQztDQUM5QyxDQUFDO0FBRUYsTUFBTSxNQUFNLEdBQUc7SUFDYixZQUFZLEVBQUUsdUJBQXVCO0lBQ3JDLHVCQUF1QixFQUFFLGtCQUFrQjtDQUM1QyxDQUFDO0FBRUYsU0FBZSxnQkFBZ0I7O1FBQzdCLE1BQU0sR0FBRyxHQUFHLE1BQU0sZ0JBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNsQyxNQUFNLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7UUFDakUsdURBQXVEO1FBQ3ZELE1BQU0sTUFBTSxHQUFHLElBQUksc0RBQXlCLEVBQUUsQ0FBQztRQUMvQyxNQUFNLElBQUksR0FBRztZQUNYLFlBQVksRUFBRSxTQUFTO1lBQ3ZCLHVCQUF1QixFQUFFLGNBQWM7WUFDdkMsbUJBQW1CLEVBQUUsZ0JBQWdCO1lBQ3JDLG1CQUFtQixFQUFFLG1CQUFtQjtZQUN4QyxvQkFBb0IsRUFBRSxtQ0FBbUM7U0FDMUQsQ0FBQztRQUNGLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUU7Z0JBQy9CLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUM7YUFDakIsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FB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
|
package/build/src/adb.js
CHANGED
|
@@ -26,6 +26,7 @@ const DEVTOOLS_SOCKET_MAP = {
|
|
|
26
26
|
chrome: 'chrome_devtools_remote',
|
|
27
27
|
brave: 'chrome_devtools_remote',
|
|
28
28
|
opera: 'com.opera.browser.devtools',
|
|
29
|
+
duckduckgo: 'webview_devtools_remote',
|
|
29
30
|
terrance: 'com.sec.android.app.sbrowser_devtools_remote',
|
|
30
31
|
};
|
|
31
32
|
function getAdb() {
|
|
@@ -60,7 +61,16 @@ function requireSdkRoot() {
|
|
|
60
61
|
function adbExec() {
|
|
61
62
|
return __awaiter(this, arguments, void 0, function* (browser = 'chrome') {
|
|
62
63
|
let freePort = yield (0, get_port_1.default)();
|
|
63
|
-
|
|
64
|
+
let devtoolsSocket = DEVTOOLS_SOCKET_MAP[browser] || `${browser}_devtools_remote`;
|
|
65
|
+
if (browser === 'duckduckgo') {
|
|
66
|
+
const pid = yield getDuckDuckGoPid(browser);
|
|
67
|
+
if (pid) {
|
|
68
|
+
devtoolsSocket = `webview_devtools_remote_${pid}`;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
throw new Error(`Unable to get PID for ${browser}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
64
74
|
yield adb.adbExec([
|
|
65
75
|
'forward',
|
|
66
76
|
`tcp:${freePort}`,
|
|
@@ -69,6 +79,20 @@ function adbExec() {
|
|
|
69
79
|
return freePort;
|
|
70
80
|
});
|
|
71
81
|
}
|
|
82
|
+
function getDuckDuckGoPid() {
|
|
83
|
+
return __awaiter(this, arguments, void 0, function* (browser = 'duckduckgo') {
|
|
84
|
+
const packageName = 'com.duckduckgo.mobile.android';
|
|
85
|
+
try {
|
|
86
|
+
const output = yield adb.adbExec(['shell', 'pidof', packageName]);
|
|
87
|
+
const pid = output.trim();
|
|
88
|
+
return pid || null;
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
console.error(`Unable to get PID for ${browser}:`, err.message);
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}
|
|
72
96
|
function startApplication() {
|
|
73
97
|
return __awaiter(this, arguments, void 0, function* (browser = 'chrome') {
|
|
74
98
|
const common = {
|
|
@@ -91,6 +115,10 @@ function startApplication() {
|
|
|
91
115
|
pkg: 'com.opera.browser',
|
|
92
116
|
activity: 'com.opera.android.BrowserActivity',
|
|
93
117
|
};
|
|
118
|
+
const duckduckgo = {
|
|
119
|
+
pkg: 'com.duckduckgo.mobile.android',
|
|
120
|
+
activity: 'com.duckduckgo.app.browser.BrowserActivity',
|
|
121
|
+
};
|
|
94
122
|
if (browser === 'chrome') {
|
|
95
123
|
logger_1.default.info(`Starting Chrome`);
|
|
96
124
|
yield adb.startApp(Object.assign({}, chrome, common));
|
|
@@ -107,6 +135,10 @@ function startApplication() {
|
|
|
107
135
|
logger_1.default.info(`Starting Opera`);
|
|
108
136
|
yield adb.startApp(Object.assign({}, opera, common));
|
|
109
137
|
}
|
|
138
|
+
else if (browser === 'duckduckgo') {
|
|
139
|
+
logger_1.default.info(`Starting DuckDuckGo`);
|
|
140
|
+
yield adb.startApp(Object.assign({}, duckduckgo, common));
|
|
141
|
+
}
|
|
110
142
|
});
|
|
111
143
|
}
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRiLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FkYi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQWdCQSx3QkFRQztBQUVELHdDQXNCQztBQUVELDBCQW9CQztBQWNELDRDQThDQztBQWxJRCwyQ0FBb0Q7QUFDcEQsNkNBQXFDO0FBQ3JDLHdEQUErQjtBQUMvQixzREFBMkI7QUFFM0IsSUFBSSxHQUFHLENBQUM7QUFDUixNQUFNLHVCQUF1QixHQUFHLEtBQUssQ0FBQztBQUV0QyxNQUFNLG1CQUFtQixHQUFHO0lBQzFCLE1BQU0sRUFBRSx3QkFBd0I7SUFDaEMsS0FBSyxFQUFFLHdCQUF3QjtJQUMvQixLQUFLLEVBQUUsNEJBQTRCO0lBQ25DLFVBQVUsRUFBRSx5QkFBeUI7SUFDckMsUUFBUSxFQUFFLDhDQUE4QztDQUN6RCxDQUFDO0FBRUYsU0FBc0IsTUFBTTs7UUFDMUIsSUFBSSxDQUFDO1lBQ0gsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNULEdBQUcsR0FBRyxNQUFNLGdCQUFHLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDOUIsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQixDQUFDO0lBQ0gsQ0FBQztDQUFBO0FBRUQsU0FBc0IsY0FBYzs7UUFDbEMsTUFBTSxPQUFPLEdBQUcsSUFBQSw4QkFBaUIsR0FBRSxDQUFDO1FBQ3BDLE1BQU0sTUFBTSxHQUNWLG1GQUFtRixDQUFDO1FBQ3RGLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQ2IsZ0ZBQWdGLE1BQU0sRUFBRSxDQUN6RixDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxDQUFDLE1BQU0sWUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMs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
|
|
@@ -47,7 +47,8 @@ commands.elementEnabled = function elementEnabled(elementId) {
|
|
|
47
47
|
commands.setValue = function setValue(value, elementId) {
|
|
48
48
|
return __awaiter(this, void 0, void 0, function* () {
|
|
49
49
|
const element = find_1.elementCache[elementId];
|
|
50
|
-
|
|
50
|
+
const input = Array.isArray(value) ? value.join('') : value;
|
|
51
|
+
yield (0, taiko_1.write)(input, (0, taiko_1.into)(element));
|
|
51
52
|
});
|
|
52
53
|
};
|
|
53
54
|
commands.clear = function clear(elementId) {
|
|
@@ -81,4 +82,4 @@ commands.getName = function getName(elementId) {
|
|
|
81
82
|
};
|
|
82
83
|
Object.assign(extensions, commands, helpers);
|
|
83
84
|
exports.default = extensions;
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9lbGVtZW50LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLGlDQUFtRDtBQUNuRCxpQ0FBc0M7QUFFdEMsSUFBSSxRQUFRLEdBQUcsRUFBRSxFQUNmLE9BQU8sR0FBRyxFQUFFLEVBQ1osVUFBVSxHQUFHLEVBQUUsQ0FBQztBQTJEVCw0QkFBUTtBQUFFLDBCQUFPO0FBekQxQixTQUFlLE1BQU0sQ0FBQyxPQUFPOztRQUMzQixNQUFNLElBQUEsYUFBSyxFQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7Q0FBQTtBQUNELFFBQVEsQ0FBQyxLQUFLLEdBQUcsU0FBZSxLQUFLLENBQUMsU0FBUzs7UUFDN0MsTUFBTSxPQUFPLEdBQUcsbUJBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4QyxNQUFNLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QixDQUFDO0NBQUEsQ0FBQztBQUVGLFFBQVEsQ0FBQyxPQUFPLEdBQUcsU0FBZSxPQUFPLENBQUMsU0FBUzs7UUFDakQsTUFBTSxPQUFPLEdBQUcsbUJBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4QyxPQUFPLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDO0NBQUEsQ0FBQztBQUVGLFFBQVEsQ0FBQyxnQkFBZ0IsR0FBRyxTQUFlLGdCQUFnQixDQUFDLFNBQVM7O1FBQ25FLE1BQU0sT0FBTyxHQUFHLG1CQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEMsT0FBTyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDN0IsQ0FBQztDQUFBLENBQUM7QUFFRixRQUFRLENBQUMsY0FBYyxHQUFHLFNBQWUsY0FBYyxDQUFDLFNBQVM7O1FBQy9ELE1BQU0sT0FBTyxHQUFHLG1CQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEMsT0FBTyxDQUFDLENBQUEsTUFBTSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUEsQ0FBQztJQUNyQyxDQUFDO0NBQUEsQ0FBQztBQUVGLFFBQVEsQ0FBQyxRQUFRLEdBQUcsU0FBZSxRQUFRLENBQUMsS0FBSyxFQUFFLFNBQVM7O1FBQzFELE1BQU0sT0FBTyxHQUFHLG1CQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzVELE1BQU0sSUFBQSxhQUFLLEVBQUMsS0FBSyxFQUFFLElBQUEsWUFBSSxFQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDcEMsQ0FBQztDQUFBLENBQUM7QUFFRixRQUFRLENBQUMsS0FBSyxHQUFHLFNBQWUsS0FBSyxDQUFDLFNBQVM7O1FBQzdDLE1BQU0sT0FBTyxHQUFHLG1CQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEMsTUFBTSxJQUFBLGFBQUssRUFBQyxFQUFFLEVBQUUsSUFBQSxZQUFJLEVBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0NBQUEsQ0FBQztBQUVGLFFBQVEsQ0FBQyxZQUFZLEdBQUcsU0FBZSxZQUFZLENBQUMsS0FBSyxFQUFFLFNBQVM7O1FBQ2xFLE1BQU0sT0FBTyxHQUFHLG1CQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEMsT0FBTyxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztDQUFBLENBQUM7QUFFRixRQUFRLENBQUMsY0FBYyxHQUFHLFNBQWUsY0FBYyxDQUFDLFNBQVM7O1FBQy9ELE1BQU0sT0FBTyxHQUFHLG1CQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEMsT0FBTyxNQUFNLElBQUEsZ0JBQVEsRUFBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUV6QyxNQUFNLEVBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDL0QsT0FBTyxFQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFBO1FBQy9CLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUFBLENBQUE7QUFFRCxRQUFRLENBQUMsT0FBTyxHQUFHLFNBQWUsT0FBTyxDQUFDLFNBQVM7O1FBQ2pELE1BQU0sT0FBTyxHQUFHLG1CQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEMsT0FBTyxNQUFNLElBQUEsZ0JBQVEsRUFBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUUxQyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQUEsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUU3QyxrQkFBZSxVQUFVLENBQUMifQ==
|
|
@@ -31,15 +31,27 @@ helpers.findElOrEls = function findElOrEls(strategy, selector, mult, context) {
|
|
|
31
31
|
logger_1.default.info(`Selector is ${selector}`);
|
|
32
32
|
logger_1.default.info(`Mult is ${mult}`);
|
|
33
33
|
logger_1.default.info(`Context is ${context}`);
|
|
34
|
-
const elStrategy =
|
|
34
|
+
// const elStrategy = $(selector);
|
|
35
|
+
let elStrategy;
|
|
36
|
+
switch (strategy) {
|
|
37
|
+
case 'id':
|
|
38
|
+
elStrategy = (0, taiko_1.$)(`#${selector}`);
|
|
39
|
+
break;
|
|
40
|
+
case 'class':
|
|
41
|
+
elStrategy = (0, taiko_1.$)(`.${selector}`);
|
|
42
|
+
default:
|
|
43
|
+
elStrategy = (0, taiko_1.$)(selector);
|
|
44
|
+
}
|
|
35
45
|
if ((yield elStrategy.exists()) && !mult) {
|
|
36
46
|
const elementId = getUUID();
|
|
37
47
|
elementCache[elementId] = elStrategy;
|
|
38
48
|
return { [constants_1.W3C_ELEMENT_KEY]: elementId };
|
|
39
49
|
}
|
|
40
50
|
else if (mult) {
|
|
41
|
-
|
|
42
|
-
(
|
|
51
|
+
const foundEls = yield elStrategy.elements();
|
|
52
|
+
logger_1.default.info(`Found ${foundEls.length} elements using strategy: ${strategy}`);
|
|
53
|
+
const els = [];
|
|
54
|
+
foundEls.forEach((element) => {
|
|
43
55
|
const elementId = getUUID();
|
|
44
56
|
elementCache[elementId] = element;
|
|
45
57
|
els.push({ ELEMENT: elementId });
|
|
@@ -63,4 +75,4 @@ commands.findElements = function findElements(strategy, selector) {
|
|
|
63
75
|
};
|
|
64
76
|
Object.assign(extensions, commands, helpers);
|
|
65
77
|
exports.default = extensions;
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9maW5kLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHFEQUE2QztBQUM3QyxpQ0FBMEI7QUFDMUIsdURBQTRCO0FBQzVCLDZDQUF1QztBQUN2Qyx1RUFBMEU7QUFFMUUsSUFBSSxRQUFRLEdBQUcsRUFBRSxFQUNmLE9BQU8sR0FBRyxFQUFFLEVBQ1osVUFBVSxHQUFHLEVBQUUsRUFDZixZQUFZLEdBQUcsRUFBRSxDQUFDO0FBdURYLDRCQUFRO0FBQUUsMEJBQU87QUFBRSxvQ0FBWTtBQXJEeEMsU0FBUyxPQUFPO0lBQ2QsT0FBTyxjQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDdkIsQ0FBQztBQUVELE9BQU8sQ0FBQyxXQUFXLEdBQUcsU0FBZSxXQUFXLENBQzlDLFFBQVEsRUFDUixRQUFRLEVBQ1IsSUFBSSxFQUNKLE9BQU87O1FBRVAsZ0JBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLGdCQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNwQyxnQkFBRyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLENBQUM7UUFDNUIsZ0JBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLGtDQUFrQztRQUNsQyxJQUFJLFVBQVUsQ0FBQztRQUNmLFFBQVEsUUFBUSxFQUFFLENBQUM7WUFDakIsS0FBSyxJQUFJO2dCQUNQLFVBQVUsR0FBRyxJQUFBLFNBQUMsRUFBQyxJQUFJLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQy9CLE1BQU07WUFDUixLQUFLLE9BQU87Z0JBQ1YsVUFBVSxHQUFHLElBQUEsU0FBQyxFQUFDLElBQUksUUFBUSxFQUFFLENBQUMsQ0FBQztZQUNqQztnQkFDRSxVQUFVLEdBQUcsSUFBQSxTQUFDLEVBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDekMsTUFBTSxTQUFTLEdBQUcsT0FBTyxFQUFFLENBQUM7WUFDNUIsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFVBQVUsQ0FBQztZQUNyQyxPQUFPLEVBQUUsQ0FBQywyQkFBZSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUM7UUFDMUMsQ0FBQzthQUFNLElBQUksSUFBSSxFQUFFLENBQUM7WUFDaEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDN0MsZ0JBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxRQUFRLENBQUMsTUFBTSw2QkFBNkIsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUMxRSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7WUFDZixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQzNCLE1BQU0sU0FBUyxHQUFHLE9BQU8sRUFBRSxDQUFDO2dCQUM1QixZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsT0FBTyxDQUFDO2dCQUNsQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDbkMsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLG9CQUFNLENBQUMsa0JBQWtCLENBQUMsMkJBQTJCLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDN0UsQ0FBQztJQUNILENBQUM7Q0FBQSxDQUFDO0FBRUYsUUFBUSxDQUFDLFdBQVcsR0FBRyxTQUFlLFdBQVcsQ0FBQyxRQUFRLEVBQUUsUUFBUTs7UUFDbEUsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckQsQ0FBQztDQUFBLENBQUM7QUFFRixRQUFRLENBQUMsWUFBWSxHQUFHLFNBQWUsWUFBWSxDQUFDLFFBQVEsRUFBRSxRQUFROztRQUNwRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNwRCxDQUFDO0NBQUEsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUU3QyxrQkFBZSxVQUFVLENBQUMifQ==
|
package/build/src/driver.js
CHANGED
|
@@ -45,8 +45,15 @@ class AppiumCDPDriver extends base_driver_1.BaseDriver {
|
|
|
45
45
|
const res = yield _super.createSession.call(this, w3cCaps);
|
|
46
46
|
const browser = w3cCaps.alwaysMatch['browserName'];
|
|
47
47
|
yield (0, adb_1.getAdb)();
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
let port;
|
|
49
|
+
if (browser === 'duckduckgo') {
|
|
50
|
+
yield (0, adb_1.startApplication)(browser);
|
|
51
|
+
port = yield (0, adb_1.adbExec)(browser);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
port = yield (0, adb_1.adbExec)(browser);
|
|
55
|
+
yield (0, adb_1.startApplication)(browser);
|
|
56
|
+
}
|
|
50
57
|
logger_1.default.info('Browser opened');
|
|
51
58
|
// Wait a bit longer for Opera to initialize its CDP interface
|
|
52
59
|
yield new Promise((resolve) => setTimeout(resolve, 3000));
|
|
@@ -97,4 +104,4 @@ class AppiumCDPDriver extends base_driver_1.BaseDriver {
|
|
|
97
104
|
}
|
|
98
105
|
exports.AppiumCDPDriver = AppiumCDPDriver;
|
|
99
106
|
Object.assign(AppiumCDPDriver.prototype, commands_1.default);
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJpdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RyaXZlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxREFBeUQ7QUFDekQsK0JBQTBEO0FBQzFELGlDQUFxRDtBQUNyRCwwREFBa0M7QUFDbEMsc0RBQTJCO0FBQzNCLDREQUErQjtBQUMvQiw4REFBZ0M7QUFDaEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO0FBQ2xDLE1BQU0sZUFBZ0IsU0FBUSx3QkFBVTtJQUN0QyxZQUFZLElBQUk7UUFDZCxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDWixJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLHFCQUFxQixHQUFHO1lBQzNCLGNBQWMsRUFBRTtnQkFDZCxRQUFRLEVBQUUsSUFBSTtnQkFDZCxRQUFRLEVBQUUsSUFBSTthQUNmO1lBQ0QsV0FBVyxFQUFFO2dCQUNYLFFBQVEsRUFBRSxJQUFJO2dCQUNkLFFBQVEsRUFBRSxJQUFJO2FBQ2Y7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVLLGFBQWEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxlQUFlOzs7OztZQUM1RCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBQSxpQkFBUyxFQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDdEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFNLGFBQWEsWUFBQyxPQUFPLENBQUMsQ0FBQztZQUMvQyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ25ELE1BQU0sSUFBQSxZQUFNLEdBQUUsQ0FBQztZQUNmLElBQUksSUFBSSxDQUFDO1lBQ1QsSUFBSSxPQUFPLEtBQUssWUFBWSxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sSUFBQSxzQkFB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
|
package/package.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"appium",
|
|
6
6
|
"chrome-dev-tools"
|
|
7
7
|
],
|
|
8
|
-
"version": "1.0.
|
|
8
|
+
"version": "1.0.4",
|
|
9
9
|
"author": "",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"repository": {
|
|
@@ -32,7 +32,9 @@
|
|
|
32
32
|
],
|
|
33
33
|
"mainClass": "AppiumCDPDriver",
|
|
34
34
|
"scripts": {
|
|
35
|
-
"skip-welcome-opera": "./build/scripts/opera.js"
|
|
35
|
+
"skip-welcome-opera": "./build/scripts/opera.js",
|
|
36
|
+
"skip-welcome-brave": "./build/scripts/brave.js",
|
|
37
|
+
"skip-welcome-duckduckgo": "./build/scripts/duckduckgo.js"
|
|
36
38
|
}
|
|
37
39
|
},
|
|
38
40
|
"scripts": {
|
|
@@ -54,15 +56,15 @@
|
|
|
54
56
|
},
|
|
55
57
|
"dependencies": {
|
|
56
58
|
"@appium/base-driver": "^8.5.7",
|
|
57
|
-
"appium-uiautomator2-driver": "^4.2.3",
|
|
58
59
|
"@appium/support": "^2.59.2",
|
|
59
60
|
"appium-adb": "^9.10.0",
|
|
61
|
+
"appium-uiautomator2-driver": "^4.2.3",
|
|
60
62
|
"async-retry": "^1.3.3",
|
|
63
|
+
"asyncbox": "3.0.0",
|
|
61
64
|
"chai": "^4.3.6",
|
|
62
65
|
"chrome-remote-interface": "^0.31.3",
|
|
63
66
|
"get-port": "^5.1.1",
|
|
64
|
-
"taiko": "https://github.com/getgauge/taiko.git"
|
|
65
|
-
"asyncbox": "3.0.0"
|
|
67
|
+
"taiko": "https://github.com/getgauge/taiko.git"
|
|
66
68
|
},
|
|
67
69
|
"peerDependencies": {
|
|
68
70
|
"appium": "^2.4.1 || ^3.0.0-beta.0"
|
package/src/adb.js
CHANGED
|
@@ -10,6 +10,7 @@ const DEVTOOLS_SOCKET_MAP = {
|
|
|
10
10
|
chrome: 'chrome_devtools_remote',
|
|
11
11
|
brave: 'chrome_devtools_remote',
|
|
12
12
|
opera: 'com.opera.browser.devtools',
|
|
13
|
+
duckduckgo: 'webview_devtools_remote',
|
|
13
14
|
terrance: 'com.sec.android.app.sbrowser_devtools_remote',
|
|
14
15
|
};
|
|
15
16
|
|
|
@@ -49,8 +50,18 @@ export async function requireSdkRoot() {
|
|
|
49
50
|
|
|
50
51
|
export async function adbExec(browser = 'chrome') {
|
|
51
52
|
let freePort = await getPort();
|
|
52
|
-
|
|
53
|
+
let devtoolsSocket =
|
|
53
54
|
DEVTOOLS_SOCKET_MAP[browser] || `${browser}_devtools_remote`;
|
|
55
|
+
|
|
56
|
+
if (browser === 'duckduckgo') {
|
|
57
|
+
const pid = await getDuckDuckGoPid(browser);
|
|
58
|
+
if (pid) {
|
|
59
|
+
devtoolsSocket = `webview_devtools_remote_${pid}`;
|
|
60
|
+
} else {
|
|
61
|
+
throw new Error(`Unable to get PID for ${browser}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
54
65
|
await adb.adbExec([
|
|
55
66
|
'forward',
|
|
56
67
|
`tcp:${freePort}`,
|
|
@@ -58,6 +69,18 @@ export async function adbExec(browser = 'chrome') {
|
|
|
58
69
|
]);
|
|
59
70
|
return freePort;
|
|
60
71
|
}
|
|
72
|
+
|
|
73
|
+
async function getDuckDuckGoPid(browser = 'duckduckgo') {
|
|
74
|
+
const packageName = 'com.duckduckgo.mobile.android';
|
|
75
|
+
try {
|
|
76
|
+
const output = await adb.adbExec(['shell', 'pidof', packageName]);
|
|
77
|
+
const pid = output.trim();
|
|
78
|
+
return pid || null;
|
|
79
|
+
} catch (err) {
|
|
80
|
+
console.error(`Unable to get PID for ${browser}:`, err.message);
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
61
84
|
|
|
62
85
|
export async function startApplication(browser = 'chrome') {
|
|
63
86
|
const common = {
|
|
@@ -84,6 +107,11 @@ export async function startApplication(browser = 'chrome') {
|
|
|
84
107
|
activity: 'com.opera.android.BrowserActivity',
|
|
85
108
|
};
|
|
86
109
|
|
|
110
|
+
const duckduckgo = {
|
|
111
|
+
pkg: 'com.duckduckgo.mobile.android',
|
|
112
|
+
activity: 'com.duckduckgo.app.browser.BrowserActivity',
|
|
113
|
+
};
|
|
114
|
+
|
|
87
115
|
if (browser === 'chrome') {
|
|
88
116
|
log.info(`Starting Chrome`);
|
|
89
117
|
await adb.startApp(Object.assign({}, chrome, common));
|
|
@@ -96,5 +124,8 @@ export async function startApplication(browser = 'chrome') {
|
|
|
96
124
|
} else if (browser === 'opera') {
|
|
97
125
|
log.info(`Starting Opera`);
|
|
98
126
|
await adb.startApp(Object.assign({}, opera, common));
|
|
127
|
+
} else if (browser === 'duckduckgo') {
|
|
128
|
+
log.info(`Starting DuckDuckGo`);
|
|
129
|
+
await adb.startApp(Object.assign({}, duckduckgo, common));
|
|
99
130
|
}
|
|
100
131
|
}
|
package/src/commands/element.js
CHANGED
|
@@ -30,7 +30,8 @@ commands.elementEnabled = async function elementEnabled(elementId) {
|
|
|
30
30
|
|
|
31
31
|
commands.setValue = async function setValue(value, elementId) {
|
|
32
32
|
const element = elementCache[elementId];
|
|
33
|
-
|
|
33
|
+
const input = Array.isArray(value) ? value.join('') : value;
|
|
34
|
+
await write(input, into(element));
|
|
34
35
|
};
|
|
35
36
|
|
|
36
37
|
commands.clear = async function clear(elementId) {
|
package/src/commands/find.js
CHANGED
|
@@ -23,14 +23,26 @@ helpers.findElOrEls = async function findElOrEls(
|
|
|
23
23
|
log.info(`Selector is ${selector}`);
|
|
24
24
|
log.info(`Mult is ${mult}`);
|
|
25
25
|
log.info(`Context is ${context}`);
|
|
26
|
-
const elStrategy =
|
|
26
|
+
// const elStrategy = $(selector);
|
|
27
|
+
let elStrategy;
|
|
28
|
+
switch (strategy) {
|
|
29
|
+
case 'id':
|
|
30
|
+
elStrategy = $(`#${selector}`);
|
|
31
|
+
break;
|
|
32
|
+
case 'class':
|
|
33
|
+
elStrategy = $(`.${selector}`);
|
|
34
|
+
default:
|
|
35
|
+
elStrategy = $(selector);
|
|
36
|
+
}
|
|
27
37
|
if ((await elStrategy.exists()) && !mult) {
|
|
28
38
|
const elementId = getUUID();
|
|
29
39
|
elementCache[elementId] = elStrategy;
|
|
30
40
|
return { [W3C_ELEMENT_KEY]: elementId };
|
|
31
41
|
} else if (mult) {
|
|
32
|
-
|
|
33
|
-
(
|
|
42
|
+
const foundEls = await elStrategy.elements();
|
|
43
|
+
log.info(`Found ${foundEls.length} elements using strategy: ${strategy}`);
|
|
44
|
+
const els = [];
|
|
45
|
+
foundEls.forEach((element) => {
|
|
34
46
|
const elementId = getUUID();
|
|
35
47
|
elementCache[elementId] = element;
|
|
36
48
|
els.push({ ELEMENT: elementId });
|
package/src/driver.js
CHANGED
|
@@ -27,8 +27,14 @@ class AppiumCDPDriver extends BaseDriver {
|
|
|
27
27
|
const res = await super.createSession(w3cCaps);
|
|
28
28
|
const browser = w3cCaps.alwaysMatch['browserName'];
|
|
29
29
|
await getAdb();
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
let port;
|
|
31
|
+
if (browser === 'duckduckgo') {
|
|
32
|
+
await startApplication(browser);
|
|
33
|
+
port = await adbExec(browser);
|
|
34
|
+
} else {
|
|
35
|
+
port = await adbExec(browser);
|
|
36
|
+
await startApplication(browser);
|
|
37
|
+
}
|
|
32
38
|
log.info('Browser opened');
|
|
33
39
|
// Wait a bit longer for Opera to initialize its CDP interface
|
|
34
40
|
await new Promise((resolve) => setTimeout(resolve, 3000));
|