Executing tests on Mobile Broswer and app in a single TC

Hi All,

  1. Katalon has an extensive capability to execute the code written for desktop browser on Mobile Browser.
    https://www.katalon.com/resources-center/tutorials/running-application-mobile-browsers/

WebUI.openBrowser(‘http://demoaut.katalon.com/’)

Challenges faced for above thing to work: It will not work if the chrome/browser installed on mobile doesn’t support chromedriver of appium node-modules in your local.
This is the link which states the compatibility between chromedriver & chrome browser version
http://appium.io/docs/en/writing-running-appium/web/chromedriver/

One more issue which I encountered in upgrading the chromedriver of appium: you can’t upgrade just the chromedriver of node-module alone, you need to reinstall the complete appium node-modules with the specific chrome version you required
eg: npm install appium --chromedriver_version=“2.16”

  1. After you are done with the operations of the mobile browser if you want to open app as below
    Mobile.startApplication(appPath, false)

It throws error because it tries to open the app also on the mobile browser
error: Could not proxy command to remote server. Original error: Error: read ECONNRESET (WARNING: The server did not provide any stacktrace information)

Reason : Driver which Katalon has started for us doesn’t allow shifting between from browser/app to app.
How we solved it: Get the driver instance which katalon started for us from MobileDriverFactory(com.kms.katalon.core.mobile.keyword.internal.MobileDriverFactory – this package is not mentioned in the katalon api document) and quit that driver instance make sure to not stop the appium server.

AndroidDriver driver = MobileDriverFactory.getDriver();
driver.closeApp();
driver.quit();

Then start a new driver with the app you want to start by using same MobileDriverFactory

def appPath = PathUtil.absoluteToRelativePath(GlobalVariable.Android_App, RunConfiguration.getProjectDir());
AndroidDriver driver2=MobileDriverFactory.startMobileDriver(appPath, false)
driver2.launchApp();

By using MobileDriverFactory you can even create driver with your desired capabilities.

2 Likes