Katalon has bug when running test suite collection in parallel mode with two or more devices, raising a WebDriverException.

Hello Everyone,

I hope you are having a good day. I would like to bring to your attention a critical bug I have discovered in Katalon.

The issue arises when running a test suite collection in parallel mode with at least two devices. An exception error “org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: Could not proxy command to the remote server. Original error: socket hang up” is raised under these conditions.

I have created a simple project to ensure there are no other factors that could cause this issue.

Here is the code being used

testcase 1

import static com.kms.katalon.core.checkpoint.CheckpointFactory.findCheckpoint;
import static com.kms.katalon.core.testcase.TestCaseFactory.findTestCase;
import static com.kms.katalon.core.testdata.TestDataFactory.findTestData;
import static com.kms.katalon.core.testobject.ObjectRepository.findTestObject;
import static com.kms.katalon.core.testobject.ObjectRepository.findWindowsObject;
import com.kms.katalon.core.checkpoint.Checkpoint;
import com.kms.katalon.core.cucumber.keyword.CucumberBuiltinKeywords as CucumberKW;
import com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords as Mobile;
import com.kms.katalon.core.model.FailureHandling as FailureHandling;
import com.kms.katalon.core.testcase.TestCase;
import com.kms.katalon.core.testdata.TestData;
import com.kms.katalon.core.testng.keyword.TestNGBuiltinKeywords as TestNGKW;
import com.kms.katalon.core.testobject.TestObject;
import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords as WS;
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI;
import com.kms.katalon.core.windows.keyword.WindowsBuiltinKeywords as Windows;
import internal.GlobalVariable as GlobalVariable;
import org.openqa.selenium.Keys as Keys;

Mobile.verifyEqual("1", "1");

testcase2

import static com.kms.katalon.core.checkpoint.CheckpointFactory.findCheckpoint;
import static com.kms.katalon.core.testcase.TestCaseFactory.findTestCase;
import static com.kms.katalon.core.testdata.TestDataFactory.findTestData;
import static com.kms.katalon.core.testobject.ObjectRepository.findTestObject;
import static com.kms.katalon.core.testobject.ObjectRepository.findWindowsObject;
import com.kms.katalon.core.checkpoint.Checkpoint;
import com.kms.katalon.core.cucumber.keyword.CucumberBuiltinKeywords as CucumberKW;
import com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords as Mobile;
import com.kms.katalon.core.model.FailureHandling as FailureHandling;
import com.kms.katalon.core.testcase.TestCase;
import com.kms.katalon.core.testdata.TestData;
import com.kms.katalon.core.testng.keyword.TestNGBuiltinKeywords as TestNGKW;
import com.kms.katalon.core.testobject.TestObject;
import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords as WS;
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI;
import com.kms.katalon.core.windows.keyword.WindowsBuiltinKeywords as Windows;
import internal.GlobalVariable as GlobalVariable;
import org.openqa.selenium.Keys as Keys;

Mobile.verifyEqual("10", "20");

testcase 3

import static com.kms.katalon.core.checkpoint.CheckpointFactory.findCheckpoint;
import static com.kms.katalon.core.testcase.TestCaseFactory.findTestCase;
import static com.kms.katalon.core.testdata.TestDataFactory.findTestData;
import static com.kms.katalon.core.testobject.ObjectRepository.findTestObject;
import static com.kms.katalon.core.testobject.ObjectRepository.findWindowsObject;
import com.kms.katalon.core.checkpoint.Checkpoint;
import com.kms.katalon.core.cucumber.keyword.CucumberBuiltinKeywords as CucumberKW;
import com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords as Mobile;
import com.kms.katalon.core.model.FailureHandling as FailureHandling;
import com.kms.katalon.core.testcase.TestCase;
import com.kms.katalon.core.testdata.TestData;
import com.kms.katalon.core.testng.keyword.TestNGBuiltinKeywords as TestNGKW;
import com.kms.katalon.core.testobject.TestObject;
import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords as WS;
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI;
import com.kms.katalon.core.windows.keyword.WindowsBuiltinKeywords as Windows;
import internal.GlobalVariable as GlobalVariable;
import org.openqa.selenium.Keys as Keys;

Mobile.verifyEqual("10", "20");

Test Suites:

  • testSuite1 contains testCase1
  • testSuite2 contains testCase2
  • testSuite3 contains testCase3

Test Suite Collection:

  • Contains test suites: [testSuite1, testSuite2, testSuite3]
  • Execution Mode: Parallel
  • Max concurrent: 2

Expected Result: The execution should run smoothly.

Actual Result: The execution starts, but some connected devices show an error message.

Important Notes:

  • This test was conducted on three devices: [Note20, OnePlus Nord, Galaxy A51, Lenovo K15].
  • Multiple USB debugging methods were used (two types of USBs, wireless debugging for 5G network).
  • The issue does not occur when executing normally through an individual test suite or possibly in sequential mode in the test suite collection.
  • I have tried to re-install the Android SDK from the katalon and tried to used different SDK, but same issue existed

Logs for test suite collection run

2024-06-13 07:37:30.517 INFO  c.k.katalon.core.main.TestSuiteExecutor  - START Test Suites/testSuite2
2024-06-13 07:37:30.644 INFO  c.k.katalon.core.main.TestSuiteExecutor  - hostName = user - DESKTOP-4OAJ0LS
2024-06-13 07:37:30.646 INFO  c.k.katalon.core.main.TestSuiteExecutor  - os = Windows 10 64bit
2024-06-13 07:37:30.648 INFO  c.k.katalon.core.main.TestSuiteExecutor  - hostAddress = 192.168.0.160
2024-06-13 07:37:30.650 INFO  c.k.katalon.core.main.TestSuiteExecutor  - katalonVersion = 9.0.0.212
Before Test Suite
2024-06-13 07:37:32.104 INFO  c.k.k.c.a.driver.AppiumDriverManager     - Detected NodeJS location: "C:\Program Files\nodejs\node.exe"
e[35m[Appium]e[39m Welcome to Appium v1.21.0
e[35m[Appium]e[39m Non-default server args:
e[35m[Appium]e[39m   port: 51796
e[35m[Appium]e[39m   loglevel: info
e[35m[Appium]e[39m   tmpDir: C:\Users\user\AppData\Local\Temp\\Katalon\Appium\Temp1718289451644
e[35m[Appium]e[39m   chromedriverPort: 51797
e[35m[Appium]e[39m Deprecated server args:
e[35m[Appium]e[39m   e[31m--chromedriver-porte[39m => --default-capabilities
e[35m[Appium]e[39m Default capabilities, which will be added to each request unless overridden by desired capabilities:
e[35m[Appium]e[39m   chromedriverPort: 51797
e[35m[Appium]e[39m Appium REST http interface listener started on 0.0.0.0:51796
2024-06-13 07:37:35.246 INFO  c.k.k.c.a.driver.AppiumDriverManager     - Appium server started on port 51,796
e[35m[HTTP]e[39m e[37m-->e[39m e[37mGETe[39m e[37m/wd/hub/statuse[39m
e[35m[HTTP]e[39m e[90m{}e[39m
e[35m[HTTP]e[39m e[37m<-- GET /wd/hub/status e[39me[32m200e[39m e[90m16 ms - 68e[39m
e[35m[HTTP]e[39m e[90me[39m
e[35m[HTTP]e[39m e[37m-->e[39m e[37mPOSTe[39m e[37m/wd/hub/sessione[39m
e[35m[HTTP]e[39m e[90m{"desiredCapabilities":{"appActivity":".Settings","appPackage":"com.android.settings","newCommandTimeout":1800,"platformVersion":"12","automationName":"uiautomator2","autoGrantPermissions":true,"platformName":"Android","udid":"RZ8MC1EVY4X","deviceName":"samsung SM-A515F (Android 12)","platform":"ANDROID","systemPort":8271},"capabilities":{"firstMatch":[{"appium:appActivity":".Settings","appium:appPackage":"com.android.settings","appium:autoGrantPermissions":true,"appium:automationName":"uiautomator2","appium:deviceName":"samsung SM-A515F (Android 12)","appium:newCommandTimeout":1800,"platform":"ANDROID","platformName":"android","appium:platformVersion":"12","appium:systemPort":8271,"appium:udid":"RZ8MC1EVY4X"}]}}e[39m
e[35m[BaseDriver]e[39m The following capabilities are not standard capabilities and should have an extension prefix:
e[35m[BaseDriver]e[39m   platform
e[35m[BaseDriver]e[39m   chromedriverPort
e[35m[Appium]e[39m Appium v1.21.0 creating new AndroidUiautomator2Driver (v1.65.0) session
e[35m[BaseDriver]e[39m The following capabilities were provided, but are not recognized by Appium:
e[35m[BaseDriver]e[39m   platform
e[35m[BaseDriver]e[39m Session created with session id: 8d77e58c-e2e0-4ee6-baa4-01cf6d93d45d
e[35m[UiAutomator2]e[39m Starting 'com.android.settings' directly on the device
e[35m[ADB]e[39m Found 2 'build-tools' folders under 'C:\Users\user\AppData\Local\Android\Sdk' (newest first):
e[35m[ADB]e[39m     C:/Users/user/AppData/Local/Android/Sdk/build-tools/34.0.0
e[35m[ADB]e[39m     C:/Users/user/AppData/Local/Android/Sdk/build-tools/29.0.3
e[35m[ADB]e[39m Using 'adb.exe' from 'C:\Users\user\AppData\Local\Android\Sdk\platform-tools\adb.exe'
e[35m[AndroidDriver]e[39m Retrieving device list
e[35m[AndroidDriver]e[39m Using device: RZ8MC1EVY4X
e[35m[ADB]e[39m Using 'adb.exe' from 'C:\Users\user\AppData\Local\Android\Sdk\platform-tools\adb.exe'
e[35m[ADB]e[39m Getting device platform version
e[35m[UiAutomator2]e[39m Relaxing hidden api policy
e[35m[AndroidDriver]e[39m No app sent in, not parsing package/activity
e[35m[ADB]e[39m The application at 'C:\Users\USER\AppData\Roaming\npm\node_modules\appium\node_modules\io.appium.settings\apks\settings_apk-debug.apk' will not be cached, because the device under test has confirmed the support of streamed installs
e[35m[ADB]e[39m The installation of 'settings_apk-debug.apk' took 484ms
e[35m[ADB]e[39m Using 'apksigner.jar' from 'C:\Users\user\AppData\Local\Android\Sdk\build-tools\34.0.0\lib\apksigner.jar'
e[35m[ADB]e[39m 'C:\Users\USER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-server\apks\appium-uiautomator2-server-v4.21.1.apk' is signed with the default certificate
e[35m[ADB]e[39m 'C:\Users\USER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-server\apks\appium-uiautomator2-server-debug-androidTest.apk' is signed with the default certificate
e[35m[UiAutomator2]e[39m Server packages are going to be (re)installed
e[35m[ADB]e[39m The application at 'C:\Users\USER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-server\apks\appium-uiautomator2-server-v4.21.1.apk' will not be cached, because the device under test has confirmed the support of streamed installs
e[35m[ADB]e[39m The installation of 'appium-uiautomator2-server-v4.21.1.apk' took 387ms
e[35m[ADB]e[39m The application at 'C:\Users\USER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-server\apks\appium-uiautomator2-server-debug-androidTest.apk' will not be cached, because the device under test has confirmed the support of streamed installs
e[35m[ADB]e[39m The installation of 'appium-uiautomator2-server-debug-androidTest.apk' took 942ms
e[35m[ADB]e[39m Adding packages ["io.appium.settings","io.appium.uiautomator2.server","io.appium.uiautomator2.server.test"] to Doze whitelist
e[35m[UiAutomator2]e[39m Starting UIAutomator2 server 4.21.1
e[35m[UiAutomator2]e[39m Using UIAutomator2 server from 'C:\Users\USER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-server\apks\appium-uiautomator2-server-v4.21.1.apk' and test from 'C:\Users\USER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-server\apks\appium-uiautomator2-server-debug-androidTest.apk'
e[35m[UiAutomator2]e[39m Waiting up to 30000ms for UiAutomator2 to be online...
e[35m[WD Proxy]e[39m socket hang up
e[35m[WD Proxy]e[39m socket hang up
e[35m[WD Proxy]e[39m socket hang up
e[35m[UiAutomator2]e[39m The instrumentation process has been unexpectedly terminated. Retrying UiAutomator2 startup (#1 of 1)
e[35m[ADB]e[39m No 'uiautomator' process has been found
e[35m[UiAutomator2]e[39m Waiting up to 30000ms for UiAutomator2 to be online...
e[35m[WD Proxy]e[39m Determined the downstream protocol as 'W3C'
e[35m[AndroidDriver]e[39m Screen already unlocked, doing nothing
e[35m[UiAutomator2]e[39m Starting 'com.android.settings/.Settings and waiting for 'com.android.settings/.Settings'
e[35m[WD Proxy]e[39m socket hang up
e[35m[WD Proxy]e[39m socket hang up
e[35m[UiAutomator2]e[39m Did not get confirmation UiAutomator2 deleteSession worked; Error was: UnknownError: An unknown server-side error occurred while processing the command. Original error: Could not proxy command to the remote server. Original error: socket hang up
2024-06-13 07:37:57.945 INFO  c.k.k.c.a.driver.AppiumDriverManager     - deviceId = RZ8MC1EVY4X
2024-06-13 07:37:57.945 INFO  c.k.k.c.a.driver.AppiumDriverManager     - deviceName = samsung SM-A515F (Android 12)
2024-06-13 07:37:57.946 INFO  c.k.k.c.a.driver.AppiumDriverManager     - deviceModel = SM-A515F
2024-06-13 07:37:57.947 INFO  c.k.k.c.a.driver.AppiumDriverManager     - deviceManufacturer = samsung
2024-06-13 07:37:57.948 INFO  c.k.k.c.a.driver.AppiumDriverManager     - deviceOS = Android
2024-06-13 07:37:57.949 INFO  c.k.k.c.a.driver.AppiumDriverManager     - deviceOSVersion = 12
2024-06-13 07:37:57.989 ERROR c.k.k.core.keyword.internal.KeywordMain  - ❌ Unable to start app with application ID: 'com.urpay.consumer.sit' (Root cause: org.openqa.selenium.SessionNotCreatedException: Unable to create a new remote session. Please check the server log for more details. Original error: An unknown server-side error occurred while processing the command. Original error: Could not proxy command to the remote server. Original error: socket hang up
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'DESKTOP-4OAJ0LS', ip: '192.168.0.160', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '17.0.7'
Driver info: driver.version: MobileDriverFactory$startMobileDriver
remote stacktrace: UnknownError: An unknown server-side error occurred while processing the command. Original error: Could not proxy command to the remote server. Original error: socket hang up
    at UIA2Proxy.command (C:\Users\USER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-base-driver\lib\jsonwp-proxy\proxy.js:274:13)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at AndroidUiautomator2Driver.commands.getDevicePixelRatio (C:\Users\USER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-driver\lib\commands\viewport.js:14:10)
    at AndroidUiautomator2Driver.fillDeviceDetails (C:\Users\USER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-driver\lib\driver.js:238:28)
    at AndroidUiautomator2Driver.createSession (C:\Users\USER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-driver\lib\driver.js:224:7)
    at AppiumDriver.createSession (C:\Users\USER\AppData\Roaming\npm\node_modules\appium\lib\appium.js:387:35)
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'DESKTOP-4OAJ0LS', ip: '192.168.0.160', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '17.0.7'
Driver info: driver.version: MobileDriverFactory$startMobileDriver
	at io.appium.java_client.remote.AppiumCommandExecutor$1.createSession(AppiumCommandExecutor.java:208)
	at io.appium.java_client.remote.AppiumCommandExecutor.createSession(AppiumCommandExecutor.java:217)
	at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:239)
	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
	at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:42)
	at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)
	at io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1)
	at com.kms.katalon.core.appium.driver.SwipeableAndroidDriver.execute(SwipeableAndroidDriver.java:1)
	at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213)
	at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
	at io.appium.java_client.DefaultGenericMobileDriver.<init>(DefaultGenericMobileDriver.java:38)
	at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:84)
	at io.appium.java_client.android.AndroidDriver.<init>(AndroidDriver.java:85)
	at com.kms.katalon.core.appium.driver.SwipeableAndroidDriver.<init>(SwipeableAndroidDriver.java:24)
	at com.kms.katalon.core.appium.driver.AppiumDriverManager.createMobileDriver(AppiumDriverManager.java:510)
	at com.kms.katalon.core.appium.driver.AppiumDriverManager.createMobileDriver(AppiumDriverManager.java:492)
	at com.kms.katalon.core.mobile.keyword.internal.MobileDriverFactory.startMobileDriver(MobileDriverFactory.java:446)
	at com.kms.katalon.core.mobile.keyword.internal.MobileDriverFactory$startMobileDriver.call(Unknown Source)
	at com.kms.katalon.core.mobile.keyword.builtin.StartExistingApplicationKeyword$_startApplication_closure1.doCall(StartExistingApplicationKeyword.groovy:49)
	at com.kms.katalon.core.mobile.keyword.builtin.StartExistingApplicationKeyword$_startApplication_closure1.doCall(StartExistingApplicationKeyword.groovy)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at com.kms.katalon.core.mobile.keyword.internal.MobileKeywordMain.runKeyword(MobileKeywordMain.groovy:21)
	at com.kms.katalon.core.mobile.keyword.internal.MobileKeywordMain$runKeyword.call(Unknown Source)
	at com.kms.katalon.core.mobile.keyword.builtin.StartExistingApplicationKeyword.startApplication(StartExistingApplicationKeyword.groovy:52)
	at com.kms.katalon.core.mobile.keyword.builtin.StartExistingApplicationKeyword.execute(StartExistingApplicationKeyword.groovy:37)
	at com.kms.katalon.core.keyword.internal.KeywordExecutor.executeKeywordForPlatform(KeywordExecutor.groovy:74)
	at com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords.startExistingApplication(MobileBuiltInKeywords.groovy:92)
	at USpaceListener.sampleBeforeTestSuite(NewTestListener.groovy:64)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at com.kms.katalon.core.context.internal.TestHooker.invokeMethod(TestHooker.java:111)
	at com.kms.katalon.core.context.internal.TestHooker.lambda$3(TestHooker.java:95)
	at com.kms.katalon.core.context.internal.TestHooker.invokeContextMethods(TestHooker.java:94)
	at com.kms.katalon.core.context.internal.TestListenerCollector.lambda$3(TestListenerCollector.java:88)
	at com.kms.katalon.core.context.internal.TestListenerCollector.handleListenerEvent(TestListenerCollector.java:85)
	at com.kms.katalon.core.context.internal.ExecutionEventManager.publicEvent(ExecutionEventManager.java:36)
	at com.kms.katalon.core.main.TestSuiteExecutor.execute(TestSuiteExecutor.java:104)
	at com.kms.katalon.core.main.TestCaseMain.startTestSuite(TestCaseMain.java:187)
	at TempTestSuite1718289432868.run(TempTestSuite1718289432868.groovy:36)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at io.appium.java_client.remote.AppiumCommandExecutor$1.createSession(AppiumCommandExecutor.java:186)
	... 44 more
Caused by: org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: Could not proxy command to the remote server. Original error: socket hang up
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'DESKTOP-4OAJ0LS', ip: '192.168.0.160', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '17.0.7'
Driver info: driver.version: MobileDriverFactory$startMobileDriver
remote stacktrace: UnknownError: An unknown server-side error occurred while processing the command. Original error: Could not proxy command to the remote server. Original error: socket hang up
    at UIA2Proxy.command (C:\Users\USER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-base-driver\lib\jsonwp-proxy\proxy.js:274:13)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at AndroidUiautomator2Driver.commands.getDevicePixelRatio (C:\Users\USER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-driver\lib\commands\viewport.js:14:10)
    at AndroidUiautomator2Driver.fillDeviceDetails (C:\Users\USER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-driver\lib\driver.js:238:28)
    at AndroidUiautomator2Driver.createSession (C:\Users\USER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-driver\lib\driver.js:224:7)
    at AppiumDriver.createSession (C:\Users\USER\AppData\Roaming\npm\node_modules\appium\lib\appium.js:387:35)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$errorHandler$0(W3CHandshakeResponse.java:62)
	at org.openqa.selenium.remote.HandshakeResponse.lambda$getResponseFunction$0(HandshakeResponse.java:30)
	at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:126)
	at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:128)
	... 48 more
)
2024-06-13 07:37:58.002 ERROR c.k.k.core.context.internal.TestHooker   - ❌ com.kms.katalon.core.exception.StepFailedException: Unable to start app with application ID: 'com.urpay.consumer.sit' (Root cause: org.openqa.selenium.SessionNotCreatedException: Unable to create a new remote session. Please check the server log for more details. Original error: An unknown server-side error occurred while processing the command. Original error: Could not proxy command to the remote server. Original error: socket hang up
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'DESKTOP-4OAJ0LS', ip: '192.168.0.160', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '17.0.7'
Driver info: driver.version: MobileDriverFactory$startMobileDriver
remote stacktrace: UnknownError: An unknown server-side error occurred while processing the command. Original error: Could not proxy command to the remote server. Original error: socket hang up
    at UIA2Proxy.command (C:\Users\USER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-base-driver\lib\jsonwp-proxy\proxy.js:274:13)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at AndroidUiautomator2Driver.commands.getDevicePixelRatio (C:\Users\USER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-driver\lib\commands\viewport.js:14:10)
    at AndroidUiautomator2Driver.fillDeviceDetails (C:\Users\USER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-driver\lib\driver.js:238:28)
    at AndroidUiautomator2Driver.createSession (C:\Users\USER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-driver\lib\driver.js:224:7)
    at AppiumDriver.createSession (C:\Users\USER\AppData\Roaming\npm\node_modules\appium\lib\appium.js:387:35)
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'DESKTOP-4OAJ0LS', ip: '192.168.0.160', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '17.0.7'
Driver info: driver.version: MobileDriverFactory$startMobileDriver
	at io.appium.java_client.remote.AppiumCommandExecutor$1.createSession(AppiumCommandExecutor.java:208)
	at io.appium.java_client.remote.AppiumCommandExecutor.createSession(AppiumCommandExecutor.java:217)
	at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:239)
	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
	at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:42)
	at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)
	at io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1)
	at com.kms.katalon.core.appium.driver.SwipeableAndroidDriver.execute(SwipeableAndroidDriver.java:1)
	at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213)
	at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
	at io.appium.java_client.DefaultGenericMobileDriver.<init>(DefaultGenericMobileDriver.java:38)
	at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:84)
	at io.appium.java_client.android.AndroidDriver.<init>(AndroidDriver.java:85)
	at com.kms.katalon.core.appium.driver.SwipeableAndroidDriver.<init>(SwipeableAndroidDriver.java:24)
	at com.kms.katalon.core.appium.driver.AppiumDriverManager.createMobileDriver(AppiumDriverManager.java:510)
	at com.kms.katalon.core.appium.driver.AppiumDriverManager.createMobileDriver(AppiumDriverManager.java:492)
	at com.kms.katalon.core.mobile.keyword.internal.MobileDriverFactory.startMobileDriver(MobileDriverFactory.java:446)
	at com.kms.katalon.core.mobile.keyword.internal.MobileDriverFactory$startMobileDriver.call(Unknown Source)
	at com.kms.katalon.core.mobile.keyword.builtin.StartExistingApplicationKeyword$_startApplication_closure1.doCall(StartExistingApplicationKeyword.groovy:49)
	at com.kms.katalon.core.mobile.keyword.builtin.StartExistingApplicationKeyword$_startApplication_closure1.doCall(StartExistingApplicationKeyword.groovy)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at com.kms.katalon.core.mobile.keyword.internal.MobileKeywordMain.runKeyword(MobileKeywordMain.groovy:21)
	at com.kms.katalon.core.mobile.keyword.internal.MobileKeywordMain$runKeyword.call(Unknown Source)
	at com.kms.katalon.core.mobile.keyword.builtin.StartExistingApplicationKeyword.startApplication(StartExistingApplicationKeyword.groovy:52)
	at com.kms.katalon.core.mobile.keyword.builtin.StartExistingApplicationKeyword.execute(StartExistingApplicationKeyword.groovy:37)
	at com.kms.katalon.core.keyword.internal.KeywordExecutor.executeKeywordForPlatform(KeywordExecutor.groovy:74)
	at com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords.startExistingApplication(MobileBuiltInKeywords.groovy:92)
	at USpaceListener.sampleBeforeTestSuite(NewTestListener.groovy:64)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at com.kms.katalon.core.context.internal.TestHooker.invokeMethod(TestHooker.java:111)
	at com.kms.katalon.core.context.internal.TestHooker.lambda$3(TestHooker.java:95)
	at com.kms.katalon.core.context.internal.TestHooker.invokeContextMethods(TestHooker.java:94)
	at com.kms.katalon.core.context.internal.TestListenerCollector.lambda$3(TestListenerCollector.java:88)
	at com.kms.katalon.core.context.internal.TestListenerCollector.handleListenerEvent(TestListenerCollector.java:85)
	at com.kms.katalon.core.context.internal.ExecutionEventManager.publicEvent(ExecutionEventManager.java:36)
	at com.kms.katalon.core.main.TestSuiteExecutor.execute(TestSuiteExecutor.java:104)
	at com.kms.katalon.core.main.TestCaseMain.startTestSuite(TestCaseMain.java:187)
	at TempTestSuite1718289432868.run(TempTestSuite1718289432868.groovy:36)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at io.appium.java_client.remote.AppiumCommandExecutor$1.createSession(AppiumCommandExecutor.java:186)
	... 44 more
Caused by: org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: Could not proxy command to the remote server. Original error: socket hang up
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'DESKTOP-4OAJ0LS', ip: '192.168.0.160', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '17.0.7'
Driver info: driver.version: MobileDriverFactory$startMobileDriver
remote stacktrace: UnknownError: An unknown server-side error occurred while processing the command. Original error: Could not proxy command to the remote server. Original error: socket hang up
    at UIA2Proxy.command (C:\Users\USER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-base-driver\lib\jsonwp-proxy\proxy.js:274:13)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at AndroidUiautomator2Driver.commands.getDevicePixelRatio (C:\Users\USER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-driver\lib\commands\viewport.js:14:10)
    at AndroidUiautomator2Driver.fillDeviceDetails (C:\Users\USER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-driver\lib\driver.js:238:28)
    at AndroidUiautomator2Driver.createSession (C:\Users\USER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-driver\lib\driver.js:224:7)
    at AppiumDriver.createSession (C:\Users\USER\AppData\Roaming\npm\node_modules\appium\lib\appium.js:387:35)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$errorHandler$0(W3CHandshakeResponse.java:62)
	at org.openqa.selenium.remote.HandshakeResponse.lambda$getResponseFunction$0(HandshakeResponse.java:30)
	at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:126)
	at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:128)
	... 48 more
)
	at com.kms.katalon.core.keyword.internal.KeywordMain.stepFailed(KeywordMain.groovy:51)
	at com.kms.katalon.core.mobile.keyword.internal.MobileKeywordMain.stepFailed(MobileKeywordMain.groovy:40)
	at com.kms.katalon.core.mobile.keyword.internal.MobileKeywordMain.runKeyword(MobileKeywordMain.groovy:23)
	at com.kms.katalon.core.mobile.keyword.internal.MobileKeywordMain$runKeyword.call(Unknown Source)
	at com.kms.katalon.core.mobile.keyword.builtin.StartExistingApplicationKeyword.startApplication(StartExistingApplicationKeyword.groovy:52)
	at com.kms.katalon.core.mobile.keyword.builtin.StartExistingApplicationKeyword.execute(StartExistingApplicationKeyword.groovy:37)
	at com.kms.katalon.core.keyword.internal.KeywordExecutor.executeKeywordForPlatform(KeywordExecutor.groovy:74)
	at com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords.startExistingApplication(MobileBuiltInKeywords.groovy:92)
	at USpaceListener.sampleBeforeTestSuite(NewTestListener.groovy:64)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at com.kms.katalon.core.context.internal.TestHooker.invokeMethod(TestHooker.java:111)
	at com.kms.katalon.core.context.internal.TestHooker.lambda$3(TestHooker.java:95)
	at com.kms.katalon.core.context.internal.TestHooker.invokeContextMethods(TestHooker.java:94)
	at com.kms.katalon.core.context.internal.TestListenerCollector.lambda$3(TestListenerCollector.java:88)
	at com.kms.katalon.core.context.internal.TestListenerCollector.handleListenerEvent(TestListenerCollector.java:85)
	at com.kms.katalon.core.context.internal.ExecutionEventManager.publicEvent(ExecutionEventManager.java:36)
	at com.kms.katalon.core.main.TestSuiteExecutor.execute(TestSuiteExecutor.java:104)
	at com.kms.katalon.core.main.TestCaseMain.startTestSuite(TestCaseMain.java:187)
	at TempTestSuite1718289432868.run(TempTestSuite1718289432868.groovy:36)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Caused by: org.openqa.selenium.SessionNotCreatedException: Unable to create a new remote session. Please check the server log for more details. Original error: An unknown server-side error occurred while processing the command. Original error: Could not proxy command to the remote server. Original error: socket hang up
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'DESKTOP-4OAJ0LS', ip: '192.168.0.160', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '17.0.7'
Driver info: driver.version: MobileDriverFactory$startMobileDriver
remote stacktrace: UnknownError: An unknown server-side error occurred while processing the command. Original error: Could not proxy command to the remote server. Original error: socket hang up
    at UIA2Proxy.command (C:\Users\USER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-base-driver\lib\jsonwp-proxy\proxy.js:274:13)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at AndroidUiautomator2Driver.commands.getDevicePixelRatio (C:\Users\USER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-driver\lib\commands\viewport.js:14:10)
    at AndroidUiautomator2Driver.fillDeviceDetails (C:\Users\USER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-driver\lib\driver.js:238:28)
    at AndroidUiautomator2Driver.createSession (C:\Users\USER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-driver\lib\driver.js:224:7)
    at AppiumDriver.createSession (C:\Users\USER\AppData\Roaming\npm\node_modules\appium\lib\appium.js:387:35)
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'DESKTOP-4OAJ0LS', ip: '192.168.0.160', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '17.0.7'
Driver info: driver.version: MobileDriverFactory$startMobileDriver
	at io.appium.java_client.remote.AppiumCommandExecutor$1.createSession(AppiumCommandExecutor.java:208)
	at io.appium.java_client.remote.AppiumCommandExecutor.createSession(AppiumCommandExecutor.java:217)
	at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:239)
	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
	at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:42)
	at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)
	at io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1)
	at com.kms.katalon.core.appium.driver.SwipeableAndroidDriver.execute(SwipeableAndroidDriver.java:1)
	at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213)
	at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
	at io.appium.java_client.DefaultGenericMobileDriver.<init>(DefaultGenericMobileDriver.java:38)
	at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:84)
	at io.appium.java_client.android.AndroidDriver.<init>(AndroidDriver.java:85)
	at com.kms.katalon.core.appium.driver.SwipeableAndroidDriver.<init>(SwipeableAndroidDriver.java:24)
	at com.kms.katalon.core.appium.driver.AppiumDriverManager.createMobileDriver(AppiumDriverManager.java:510)
	at com.kms.katalon.core.appium.driver.AppiumDriverManager.createMobileDriver(AppiumDriverManager.java:492)
	at com.kms.katalon.core.mobile.keyword.internal.MobileDriverFactory.startMobileDriver(MobileDriverFactory.java:446)
	at com.kms.katalon.core.mobile.keyword.internal.MobileDriverFactory$startMobileDriver.call(Unknown Source)
	at com.kms.katalon.core.mobile.keyword.builtin.StartExistingApplicationKeyword$_startApplication_closure1.doCall(StartExistingApplicationKeyword.groovy:49)
	at com.kms.katalon.core.mobile.keyword.builtin.StartExistingApplicationKeyword$_startApplication_closure1.doCall(StartExistingApplicationKeyword.groovy)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at com.kms.katalon.core.mobile.keyword.internal.MobileKeywordMain.runKeyword(MobileKeywordMain.groovy:21)
	... 21 more
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at io.appium.java_client.remote.AppiumCommandExecutor$1.createSession(AppiumCommandExecutor.java:186)
	... 44 more
Caused by: org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: Could not proxy command to the remote server. Original error: socket hang up
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'DESKTOP-4OAJ0LS', ip: '192.168.0.160', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '17.0.7'
Driver info: driver.version: MobileDriverFactory$startMobileDriver
remote stacktrace: UnknownError: An unknown server-side error occurred while processing the command. Original error: Could not proxy command to the remote server. Original error: socket hang up
    at UIA2Proxy.command (C:\Users\USER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-base-driver\lib\jsonwp-proxy\proxy.js:274:13)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at AndroidUiautomator2Driver.commands.getDevicePixelRatio (C:\Users\USER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-driver\lib\commands\viewport.js:14:10)
    at AndroidUiautomator2Driver.fillDeviceDetails (C:\Users\USER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-driver\lib\driver.js:238:28)
    at AndroidUiautomator2Driver.createSession (C:\Users\USER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-driver\lib\driver.js:224:7)
    at AppiumDriver.createSession (C:\Users\USER\AppData\Roaming\npm\node_modules\appium\lib\appium.js:387:35)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$errorHandler$0(W3CHandshakeResponse.java:62)
	at org.openqa.selenium.remote.HandshakeResponse.lambda$getResponseFunction$0(HandshakeResponse.java:30)
	at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:126)
	at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:128)
	... 48 more

2024-06-13 07:37:58.197 INFO  c.k.katalon.core.main.TestCaseExecutor   - --------------------
2024-06-13 07:37:58.198 INFO  c.k.katalon.core.main.TestCaseExecutor   - START Test Cases/test2
Test Cases/test2
[:]
e[35m[UiAutomator2]e[39m Restoring hidden api policy to the device default configuration
e[35m[HTTP]e[39m e[37m<-- POST /wd/hub/session e[39me[31m500e[39m e[90m21008 ms - 1310e[39m
e[35m[HTTP]e[39m e[90me[39m
2024-06-13 07:37:58.456 DEBUG testcase.test2                           - 1: verifyEqual("10", "20")
2024-06-13 07:37:58.517 ERROR c.k.k.core.keyword.internal.KeywordMain  - ❌ Unable to verify equal between actual object '10' and expected object '20' (Root cause: com.kms.katalon.core.exception.StepFailedException: Actual object '10' and expected object '20' are not equal
	at com.kms.katalon.core.keyword.builtin.VerifyEqualKeyword$_verifyEqual_closure1.doCall(VerifyEqualKeyword.groovy:58)
	at com.kms.katalon.core.keyword.builtin.VerifyEqualKeyword$_verifyEqual_closure1.call(VerifyEqualKeyword.groovy)
	at com.kms.katalon.core.keyword.internal.KeywordMain.runKeyword(KeywordMain.groovy:75)
	at com.kms.katalon.core.keyword.builtin.VerifyEqualKeyword.verifyEqual(VerifyEqualKeyword.groovy:63)
	at com.kms.katalon.core.keyword.builtin.VerifyEqualKeyword.execute(VerifyEqualKeyword.groovy:44)
	at com.kms.katalon.core.keyword.internal.KeywordExecutor.executeKeywordForPlatform(KeywordExecutor.groovy:74)
	at com.kms.katalon.core.keyword.BuiltinKeywords.verifyEqual(BuiltinKeywords.groovy:146)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at test2.run(test2:22)
	at com.kms.katalon.core.main.ScriptEngine.run(ScriptEngine.java:194)
	at com.kms.katalon.core.main.ScriptEngine.runScriptAsRawText(ScriptEngine.java:119)
	at com.kms.katalon.core.main.TestCaseExecutor.runScript(TestCaseExecutor.java:448)
	at com.kms.katalon.core.main.TestCaseExecutor.doExecute(TestCaseExecutor.java:439)
	at com.kms.katalon.core.main.TestCaseExecutor.processExecutionPhase(TestCaseExecutor.java:418)
	at com.kms.katalon.core.main.TestCaseExecutor.accessMainPhase(TestCaseExecutor.java:410)
	at com.kms.katalon.core.main.TestCaseExecutor.execute(TestCaseExecutor.java:285)
	at com.kms.katalon.core.common.CommonExecutor.accessTestCaseMainPhase(CommonExecutor.java:65)
	at com.kms.katalon.core.main.TestSuiteExecutor.accessTestSuiteMainPhase(TestSuiteExecutor.java:148)
	at com.kms.katalon.core.main.TestSuiteExecutor.execute(TestSuiteExecutor.java:106)
	at com.kms.katalon.core.main.TestCaseMain.startTestSuite(TestCaseMain.java:187)
	at TempTestSuite1718289432868.run(TempTestSuite1718289432868.groovy:36)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
)
2024-06-13 07:37:58.524 ERROR c.k.katalon.core.main.TestCaseExecutor   - ❌ Test Cases/test2 FAILED.
Reason:
com.kms.katalon.core.exception.StepFailedException: Actual object '10' and expected object '20' are not equal
	at com.kms.katalon.core.keyword.builtin.VerifyEqualKeyword$_verifyEqual_closure1.doCall(VerifyEqualKeyword.groovy:58)
	at com.kms.katalon.core.keyword.builtin.VerifyEqualKeyword$_verifyEqual_closure1.call(VerifyEqualKeyword.groovy)
	at com.kms.katalon.core.keyword.internal.KeywordMain.runKeyword(KeywordMain.groovy:75)
	at com.kms.katalon.core.keyword.builtin.VerifyEqualKeyword.verifyEqual(VerifyEqualKeyword.groovy:63)
	at com.kms.katalon.core.keyword.builtin.VerifyEqualKeyword.execute(VerifyEqualKeyword.groovy:44)
	at com.kms.katalon.core.keyword.internal.KeywordExecutor.executeKeywordForPlatform(KeywordExecutor.groovy:74)
	at com.kms.katalon.core.keyword.BuiltinKeywords.verifyEqual(BuiltinKeywords.groovy:146)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at test2.run(test2:22)
	at com.kms.katalon.core.main.ScriptEngine.run(ScriptEngine.java:194)
	at com.kms.katalon.core.main.ScriptEngine.runScriptAsRawText(ScriptEngine.java:119)
	at com.kms.katalon.core.main.TestCaseExecutor.runScript(TestCaseExecutor.java:448)
	at com.kms.katalon.core.main.TestCaseExecutor.doExecute(TestCaseExecutor.java:439)
	at com.kms.katalon.core.main.TestCaseExecutor.processExecutionPhase(TestCaseExecutor.java:418)
	at com.kms.katalon.core.main.TestCaseExecutor.accessMainPhase(TestCaseExecutor.java:410)
	at com.kms.katalon.core.main.TestCaseExecutor.execute(TestCaseExecutor.java:285)
	at com.kms.katalon.core.common.CommonExecutor.accessTestCaseMainPhase(CommonExecutor.java:65)
	at com.kms.katalon.core.main.TestSuiteExecutor.accessTestSuiteMainPhase(TestSuiteExecutor.java:148)
	at com.kms.katalon.core.main.TestSuiteExecutor.execute(TestSuiteExecutor.java:106)
	at com.kms.katalon.core.main.TestCaseMain.startTestSuite(TestCaseMain.java:187)
	at TempTestSuite1718289432868.run(TempTestSuite1718289432868.groovy:36)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

Test Cases/test2
FAILED
2024-06-13 07:37:58.541 INFO  c.k.katalon.core.main.TestCaseExecutor   - END Test Cases/test2
Test Suites/testSuite2
2024-06-13 07:37:58.992 INFO  com.kms.katalon.core.util.KeywordUtil    - Start generating HTML report folder at: C:\Users\user\Katalon Studio\MobileProject\Reports\20240613_073711\testSuite2\20240613_073712...
2024-06-13 07:37:59.051 INFO  com.kms.katalon.core.util.KeywordUtil    - HTML report generated
2024-06-13 07:37:59.052 INFO  com.kms.katalon.core.util.KeywordUtil    - Start generating CSV report folder at: C:\Users\user\Katalon Studio\MobileProject\Reports\20240613_073711\testSuite2\20240613_073712...
2024-06-13 07:37:59.074 INFO  com.kms.katalon.core.util.KeywordUtil    - CSV report generated
2024-06-13 07:37:59.574 INFO  c.k.katalon.core.main.TestSuiteExecutor  - --------------------
2024-06-13 07:37:59.574 INFO  c.k.katalon.core.main.TestSuiteExecutor  - END Test Suites/testSuite2
2024-06-13 07:37:59.574 INFO  c.k.katalon.core.main.TestSuiteExecutor  - ====================

Katalon version: 9.0.0
OS: windows 10
Mobile versions: Android 13 & 12
Severity: critical
priority: high

1 Like
remote stacktrace: UnknownError: An unknown server-side error occurred while processing the command. Original error: Could not proxy command to the remote server. Original error: socket hang up
    at UIA2Proxy.command (C:\Users\USER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-base-driver\lib\jsonwp-proxy\proxy.js:274:13)

This is not a bug.

You have only a limited set of hardware resources on a single machine (CPU, Memory, IO Channels, Network etc). Resource contentions are inevitable. A single PC can not host multiple parallel processes of heavy work load.

You should never use Test Suite Collection in parallel mode. It will annoy you. It won’t help you. Any investigation on it will be a waste of your time.

If you desperately want to run 3 Test Suites in parallel, then you should get 3 PCs on your desk, distribute a Katalon project onto each 3 machines. Run a Test Suite on a single machine. You can launch 3 processes prallely just manually on 3 machines. They will run fine without exceptions.

Do you want 10 processes in parallel? OK. You should get 10 PCs and 10 active Katalon licenses …

This is my personal opinion. I don’t know how Katalon sees it.

1 Like

I wish Katalon made it clear in their documentation ))

1 Like

Thank you @kazurayam for your reply,
but then, why katalon made this service. and note that I think this feature already existed in testNG, and can be work in katalon. I hope if it will not work, katalon studio removes this feature “parallel mode”.

Hi there Greg, :wave:

Could you let us know which documentation you were referring to in your comment? We could get our Technical Writing team to take a look at it and revise it if needed.

Alternatively, you could also voice your feedback if you find any documentation to be unclear/incorrect by heading to the Documentation space.

Thanks,
Albert

1 Like

Hi there Albert,

I don’t think you are going to put it in any documentation. It was just kind of ‘wishful thinking’)

(I thank you for your reply and apologize for possible miscommunication because for some reason kazurayam’s quote didn’t get into my previous posts)

Let me look back into the history of Katalon product.

I found this announcement of Katalon Studio v4.x

(This blog post does not tell the date when it was published. May be prior to 2018 when I started playing with KS v5.7.)

Katalon Studio v4 is old.

The blog writes:

Test Suite Collection:

  1. Support option for parallel execution in test suite collection. Default option for execution settings will be ‘Sequential’ where Test Suites will be run in order.

This simple sentence lets me guess, the Katalon developers took it easy to add the feature. Possibly they chatted: “Why not we add the parallel mode? It is easy enough to implement. Let’s just do it”. But possibly they didn’t imagine how the parallel mode could be resource-hungry and error-prone.

I am aware that TestNG is capable of running multiple tests in threads. And it is possible to run Appium in TestNG.

When I googled, found the following article.

This article discusses how to run TestNG threads in parallel which execute tests for mobile devices using Appium. The author proudly wrote:

So get ready to take this journey of running automation tests with Appium parallel testing with me.

Wow, this implies, TestNG beats Katalon Studio!


I am just saying. I am not interested in TestNG and KS comparison. I won’t do anything about it.

1 Like

I find a principal design difference between TestNG and Katalon.

TestNG’s parallelism uses “multi-threads”, which could be implemented light-weighted if you develop your code carefully so that you avoid any resource contentions.

Katalon’s Test Suites Collection’s parallel mode of uses “multi-processes”, which is easy to implement but inevitablly resource-hungry and error prone.

2 Likes

I have ever tried to develop a Katalon project that runs multiple test scripts in multiple threads in parallel. See TestClosure --- executing Groovy Closures in multi-Threads in a Test Case simultaneously . I found it damn hard to write and debug codes that run properly in threads.

And I found that my “parallel mode” on a single machine did not run any faster than a sequential execution due to hardware resource contentions (instantiating WebDriver and Appium is heavy enough). I was disappointed with it.

So I thought that

  1. Any parallel execution on a single machine is no useful.
  2. Parallelism by threads or by processes — it doesn’t really matter; the hardware resource matters

If I want my WebDriver/Appium-based tests to run faster, then I have to employ multiple machines, split the total workload into chunks and distribute them onto the machines.

I am sure it is achievable using Jenkins and Selenium Grid. But I don’t know if any of Katalon products offers a similar functionality: distributing a bunch of WebDriver tests onto multiple machines.

1 Like

Hi. I agree with the above comments that given parallel execution in Katalon is not as optimal as it should be. From my own user experience, I have also frustrating experiences.
When I run tests sequentially all is fine, but the test suite collection takes more than an hour to complete. I then split the one big test suite into 2 test suites and made them run in parallel. It works, but had to address some code changes to address unexpected flakiness. I am now at a stage where I need to run 3 in parallel as my test set grows (together with the application-under-test).
Some very inconsistent behaviour started to happen! I made sure the resources on our Jenkins agent were set high enough, but still noticed that the (chrome) browser seemed to struggle to get the tests going. Very often a new type of flakiness showed. When our web based application is supposed to open a popup or any other sort of overlay, that webElement is deemed “present” by Katalon, but any interaction with it was impossible. From screenshots, we could see the popup present, but in a very particular layout. It looked like it was faded-out, like the animation that brings the popup to the front was just happening and the screenshot caught it in a 1 milliseconds time frame of opening. It is not a timing issue, as all waitForElementPresent or even hardcoded sleeps of >59 seconds did not solve this. The state of that element was blocked for interaction as a click resulted in “element not found”. Very weirdly, I noticed that taking a screenshot solved this! Yes, I know, that doesn’t sound logic, but consistently on that particular type of flakiness, the taking of screenshot unlocks the element and the test automation continues successful. So, at this stage I am adding flakiness workarounds to verifyElementPresent with FailureHandling.OPTIONAL to take a screenshot, interact with the element and then my tests run to the end.
I have one test case that I know involves much resources. It uses among others an infinite scroll that needs to go to the bottom. That test case NEVER ran fine while being ran in parallel. Another test case also took more than 20 minutes while a stand-alone run took 3 minutes. Both these test cases I have placed at the end of the third test suite and, before starting them, check that the other 2 test suites that run in parallel are finished. That’s my only way to make them stable. In the end, there isn’t a whole lot of difference between my 2 parallel & 3 parallel run time, at least not the gain I was hoping for, so yeah… I get the frustration.

1 Like

Hi there,

Thank you very much for your topic. Please note that it may take a little while before a member of our community or from Katalon team responds to you.

Thanks!

I also have a doubt about the browser’s capability to run in parallel on a single machine.

When I run multiple Test Suites each of which opens a Chrome browser, I can see in the Task Manager that multiple processes of Chrome are launched.

Do these Chrome processes are acting in parallel?

No. As far as I observed, Chrome processes never make multiple HTTP Request-Response conversations in parallel. I observed Chrome process#1 and Chrome process#2 acted just sequentially. While the process#1 is in action (send request and wait for the response), then the process#2 waits blocked for the prior conversation to finish.

I think, this is how Chrome is designed. Remember, a browser is an agent for human user who slowly operates UI interactively with his/her fingers. I guess that Chrome is well-engineered that it controls the consumption of the given hardware resources (especially IO to network) moderate not to exceed the limit.

Yes, we can tell Katalon’s Test Suites processes to run in parallel. But in the background, I believe, the Chrome processes work effectively sequentially. Katalon is unable to change the way how Chrome behaves. So, I think, the parallel mode of Katalon’s Test Suite Collection is a fake. It makes you to misunderstand that you can make everything to perform in parallel, but in fact the system does not work as such.

Rule of thumb; if you want 3 Chrome processes to act really in parallel, you need 3 machines.

1 Like

I got a question. Let me assume I have 3 Test Suites in a Test Suite Collection, and

  • run the Test Suite #1 with Chrome
  • run the Test Suite #2 with Firefox
  • run the Test Suite #3 with Edge or Safari
  • run these 3 on a single machine

Chrome, Firefox, Safari — These are independent software, there must be no mutual control of resource consumption.

Will these 3 Test Suites run really in parallel?

I tried it. Yes, they ran in parallel while competing for resources. My Mac got the CPU usage 100%, fully occupied by 3 processes. Each process looked very slow due to resource contention. Parallel mode on a single machine makes my machine busy, but does not make my test run faster at all.

I can be mistaken, but I was under impression that when you run, for example, 3 test suite collections in parallel on the same Jenkins agent, you still need to pay for 3 KRE licenses. If that’s so, why don’t you just run each suite collection as a separate Jenkins job (but in parallel with the other 2 jobs) on a separate Jenkins agent? You would still be paying for 3 KRE licenses but without all that headache you described.

I have 1 test suite collection consisting of 3 test suites running in parallel. For that we can use just 1 KRE license.
In the end I want to have a report of the test suite collection run, not 3 different individual reports.
I honestly don’t know if we have multiple KSE licenses that we can use those (or more specifically: Katalon assigns those) within the same test suite collection run (over multiple agents?) to have more stable outputs… ?

1 Like

No, you can’t get it. You are requesting a new feature.

… I know in this forum some other people have ever expressed their wishes for the feature. Katalon has done nothing about it.

If you want a single report, you should not use a Test Suite Collection at all. You should transform your seperated 3 Test Suites into a single united Test Suite.


A similar case. I discussed with @dsingh1 and I wrote “you should stop using Test Suite Collection

I think that Test Suite Collection is not useful, it confuses many people. Not only you, @joost.degeyndt

1 Like

“Max concurrent instances: 3” does not require you to purchace 3 KSE licenses. A single KSE licence allows you to execute 3 Test Suites in a Test Suite Collection. The number of licenses you have does not improve the stability.

Recently @mohit.kumar demonstrated that we can compile test reports using Extent Reports in Katalon Studio.

This is a great development. With Extent Reports integrated, your are no longer forced to depend on the Katalon-built-in Report. You can compile test reports by your own code.

On the other hand, I found that Extent Report enables us to merge multiple reports into one.

So, theoretically it should be possible for me to

  1. create a Jenkins Pipeline that runs Katalon Test Suites with multiple Jenkins Agents. Each agentes will run Test Suites and compile reports using Extent Reports. They will transfer the reports back to the Jenkins Controller.
  2. I would be able to distribute the Test Suites onto multiple (say, 10) Jenkins Agents on AWS Lambda instances for maximum speed.
  3. Jenkins Controller accepts multiple reports of Test Suites, and Jenkins Controller lets a new agent to merge the multiple reports into one.

The final report would be what @joost.degeyndt desires.

Here I ignored the Katalon’s feature “Test Suites Collection”. In place of it, I would employ Jenkin’s pipeline.

I am just describing a dream. I am not going to do anything about it.

1 Like