Skip to content

Commit 61bb55a

Browse files
committed
refactor: Enhance Appium session options with auto-permission and alert handling
1 parent 1d032d1 commit 61bb55a

2 files changed

Lines changed: 20 additions & 14 deletions

File tree

src/config/appium.config.ts

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ export interface IOSCapabilityOptions {
1212
deviceName: string;
1313
platformVersion?: string;
1414
automationName?: 'XCUITest';
15+
autoGrantPermissions?: boolean;
1516
autoAcceptAlerts?: boolean;
1617
autoDismissAlerts?: boolean;
1718
[key: string]: any;
@@ -22,6 +23,8 @@ export interface AndroidCapabilityOptions {
2223
platformVersion?: string;
2324
automationName?: 'UiAutomator2' | 'Espresso';
2425
autoGrantPermissions?: boolean;
26+
autoAcceptAlerts?: boolean;
27+
autoDismissAlerts?: boolean;
2528
appWaitActivity?: string;
2629
[key: string]: any;
2730
}
@@ -52,13 +55,12 @@ export function buildIOSCapabilities(
5255
'appium:app': appPath,
5356
};
5457

55-
// Optional iOS-specific settings
56-
if (options.autoAcceptAlerts !== undefined) {
57-
capabilities['appium:autoAcceptAlerts'] = options.autoAcceptAlerts;
58-
}
58+
capabilities['appium:autoGrantPermissions'] = options.autoGrantPermissions ?? true;
59+
capabilities['appium:autoAcceptAlerts'] = options.autoAcceptAlerts ?? true;
5960

6061
if (options.autoDismissAlerts !== undefined) {
6162
capabilities['appium:autoDismissAlerts'] = options.autoDismissAlerts;
63+
capabilities['appium:autoAcceptAlerts'] = undefined;
6264
}
6365

6466
// Add any additional custom options
@@ -91,8 +93,12 @@ export function buildAndroidCapabilities(
9193
};
9294

9395
// Optional Android-specific settings
94-
if (options.autoGrantPermissions !== undefined) {
95-
capabilities['appium:autoGrantPermissions'] = options.autoGrantPermissions;
96+
capabilities['appium:autoGrantPermissions'] = options.autoGrantPermissions ?? true;
97+
capabilities['appium:autoAcceptAlerts'] = options.autoAcceptAlerts ?? true;
98+
99+
if (options.autoDismissAlerts !== undefined) {
100+
capabilities['appium:autoDismissAlerts'] = options.autoDismissAlerts;
101+
capabilities['appium:autoAcceptAlerts'] = undefined;
96102
}
97103

98104
if (options.appWaitActivity) {

src/tools/app-session.tool.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,9 @@ export const startAppToolArguments = {
2121
appiumHost: z.string().optional().describe('Appium server hostname (overrides APPIUM_URL env var)'),
2222
appiumPort: z.number().optional().describe('Appium server port (overrides APPIUM_URL_PORT env var)'),
2323
appiumPath: z.string().optional().describe('Appium server path (overrides APPIUM_PATH env var)'),
24-
autoGrantPermissions: z
25-
.boolean()
26-
.optional()
27-
.describe('Auto-grant app permissions (Android only, default: true)'),
28-
autoAcceptAlerts: z.boolean().optional().describe('Auto-accept alerts (iOS only)'),
29-
autoDismissAlerts: z.boolean().optional().describe('Auto-dismiss alerts (iOS only)'),
24+
autoGrantPermissions: z.boolean().optional().describe('Auto-grant app permissions (default: true)'),
25+
autoAcceptAlerts: z.boolean().optional().describe('Auto-accept alerts (default: true)'),
26+
autoDismissAlerts: z.boolean().optional().describe('Auto-dismiss alerts (default: false, will override "autoAcceptAlerts" to undefined if set)'),
3027
appWaitActivity: z.string().optional().describe('Activity to wait for on launch (Android only)'),
3128
};
3229

@@ -88,6 +85,7 @@ export const startAppTool: ToolCallback = async (args: {
8885
deviceName,
8986
platformVersion,
9087
automationName: (automationName as 'XCUITest') || 'XCUITest',
88+
autoGrantPermissions,
9189
autoAcceptAlerts,
9290
autoDismissAlerts,
9391
});
@@ -98,6 +96,8 @@ export const startAppTool: ToolCallback = async (args: {
9896
platformVersion,
9997
automationName: (automationName as 'UiAutomator2' | 'Espresso') || 'UiAutomator2',
10098
autoGrantPermissions,
99+
autoAcceptAlerts,
100+
autoDismissAlerts,
101101
appWaitActivity,
102102
});
103103
}
@@ -111,7 +111,7 @@ export const startAppTool: ToolCallback = async (args: {
111111
capabilities,
112112
});
113113

114-
const { sessionId } = browser;
114+
const {sessionId} = browser;
115115

116116
// Store session and metadata
117117
const state = getState();
@@ -132,7 +132,7 @@ export const startAppTool: ToolCallback = async (args: {
132132
};
133133
} catch (e) {
134134
return {
135-
content: [{ type: 'text', text: `Error starting app session: ${e}` }],
135+
content: [{type: 'text', text: `Error starting app session: ${e}`}],
136136
};
137137
}
138138
};

0 commit comments

Comments
 (0)