Skip to content

Commit d7429cf

Browse files
Load caps from env
Co-authored-by: SrinivasanTarget <[email protected]>
1 parent 1ba0a4e commit d7429cf

File tree

3 files changed

+58
-12
lines changed

3 files changed

+58
-12
lines changed

capabilities.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"android": {
3+
"appium:app": "/app/path"
4+
},
5+
"ios": {
6+
"appium:deviceName": "iPhone 16 Pro",
7+
"appium:platformVersion": "18.2",
8+
"appium:udid": ""
9+
}
10+
}

src/resources/java/template.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ export default function javaTemplatesResource(server: any) {
66
uri: 'generate://code-with-locators',
77
name: 'Generate Code With Locators',
88
description: `Generate code for the current page with locators which was retrieved from generate_locators tool.
9-
which follows the page factory pattern.`,
9+
which follows the page factory pattern. Dont not strictly create test cases, just generate the code for locators.`,
1010
mimeType: 'text/plain',
1111
async load() {
1212
// Return all content directly without templates object

src/tools/create-session.ts

Lines changed: 47 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
* Tool to create a new mobile session (Android or iOS)
33
*/
44
import { z } from 'zod';
5+
import fs from 'fs';
6+
import path from 'path';
57
import { AndroidUiautomator2Driver } from 'appium-uiautomator2-driver';
68
import { XCUITestDriver } from 'appium-xcuitest-driver';
79
import { setSession, getDriver, getSessionId } from './sessionStore.js';
@@ -10,10 +12,16 @@ import { setSession, getDriver, getSessionId } from './sessionStore.js';
1012
interface Capabilities {
1113
platformName: string;
1214
'appium:automationName': string;
13-
'appium:deviceName': string;
15+
'appium:deviceName'?: string;
1416
[key: string]: any;
1517
}
1618

19+
// Define capabilities config type
20+
interface CapabilitiesConfig {
21+
android: Record<string, any>;
22+
ios: Record<string, any>;
23+
}
24+
1725
export default function createSession(server: any): void {
1826
server.addTool({
1927
name: 'create_session',
@@ -42,35 +50,63 @@ export default function createSession(server: any): void {
4250

4351
let defaultCapabilities: Capabilities;
4452
let driver: any;
45-
53+
let finalCapabilities: Capabilities;
54+
55+
// Load capabilities from config file
56+
let configCapabilities: CapabilitiesConfig = { android: {}, ios: {} };
57+
const configPath = process.env.CAPABILITIES_CONFIG;
58+
59+
if (configPath && fs.existsSync(configPath)) {
60+
try {
61+
const configContent = fs.readFileSync(configPath, 'utf8');
62+
configCapabilities = JSON.parse(configContent);
63+
} catch (error) {
64+
console.warn(`Failed to parse capabilities config: ${error}`);
65+
}
66+
}
67+
4668
if (platform === 'android') {
4769
defaultCapabilities = {
4870
platformName: 'Android',
4971
'appium:automationName': 'UiAutomator2',
5072
'appium:deviceName': 'Android Device',
5173
};
74+
75+
// Get platform-specific capabilities from config
76+
const androidCaps = configCapabilities.android || {};
77+
78+
// Merge custom capabilities with defaults and config capabilities
79+
finalCapabilities = {
80+
...defaultCapabilities,
81+
...androidCaps,
82+
...customCapabilities,
83+
};
84+
5285
driver = new AndroidUiautomator2Driver();
5386
} else if (platform === 'ios') {
5487
defaultCapabilities = {
5588
platformName: 'iOS',
5689
'appium:automationName': 'XCUITest',
57-
'appium:deviceName': 'iPhone 16 Pro',
58-
'appium:platformVersion': '18.2',
59-
'appium:udid': 'E9F10A3E-58E6-4506-B273-B22AF836014E',
90+
'appium:deviceName': 'iPhone Simulator',
91+
};
92+
93+
// Get platform-specific capabilities from config
94+
const iosCaps = configCapabilities.ios || {};
95+
96+
// Merge custom capabilities with defaults and config capabilities
97+
finalCapabilities = {
98+
...defaultCapabilities,
99+
...iosCaps,
100+
...customCapabilities,
60101
};
102+
61103
driver = new XCUITestDriver();
62104
} else {
63105
throw new Error(
64106
`Unsupported platform: ${platform}. Please choose 'android' or 'ios'.`
65107
);
66108
}
67109

68-
// Merge custom capabilities with defaults
69-
const finalCapabilities = {
70-
...defaultCapabilities,
71-
...customCapabilities,
72-
};
73-
74110
console.log(
75111
`Creating new ${platform.toUpperCase()} session with capabilities:`,
76112
JSON.stringify(finalCapabilities, null, 2)

0 commit comments

Comments
 (0)