import json import os from appium.options.android import UiAutomator2Options from appium.options.ios import XCUITestOptions def build_options(platform, permission_mode="accept"): if platform == "android": return UiAutomator2Options().load_capabilities({ "platformName": "Android", "appium:automationName": "UiAutomator2", "appium:deviceName": "Android Emulator", "appium:udid": "emulator-5554", "appium:app": "/home/developer/apps/PermissionDemo.apk", "appium:autoGrantPermissions": True, }) ios_capabilities = { "platformName": "iOS", "appium:automationName": "XCUITest", "appium:deviceName": "iPhone 15", "appium:platformVersion": "17.5", "appium:app": "/Users/developer/Builds/PermissionDemo.app", } if permission_mode == "deny": ios_capabilities["appium:autoDismissAlerts"] = True else: ios_capabilities["appium:autoAcceptAlerts"] = True return XCUITestOptions().load_capabilities(ios_capabilities) def permission_payload(options): capabilities = options.to_capabilities() return { key: capabilities[key] for key in sorted(capabilities) if key in { "appium:autoGrantPermissions", "appium:autoAcceptAlerts", "appium:autoDismissAlerts", } } if __name__ == "__main__": platform = os.getenv("APPIUM_PLATFORM", "android").lower() permission_mode = os.getenv("PERMISSION_MODE", "accept").lower() options = build_options(platform, permission_mode) print(f"platform={platform}") print(json.dumps(permission_payload(options), indent=2, sort_keys=True))