I'm having issues with my appium testing framework running in parallel
I’m using appium java-client 7.6.0, testnt 7.6.1, Appium v1.22.3 with 1 ios simulator & 1 android emulator with 2 appium servers running separately for both devices.
this is how my testng looks like:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Mobile Test Automation Suite" parallel="tests" thread-count="2">
<listeners>
<listener class-name="com.qa.listeners.testListener"/>
</listeners>
<test name="iOS login Test">
<parameter name="platformName" value="iOS"/>
<parameter name="deviceName" value="iphone12"/>
<parameter name="emulator" value="true"/>
<parameter name="platformVersion" value="15.5"></parameter>
<parameter name="udid" value="55896861-DB90-4F13-955A-F65D20F409B3"></parameter>
<parameter name="wdaLocalPort" value="8101"></parameter>
<classes>
<class name="com.qa.tests.LoginTest"/>
</classes>
</test>
<test name="Android login Test">
<parameter name="platformName" value="Android"/>
<parameter name="deviceName" value="Pixel_3"/>
<parameter name="emulator" value="true"/>
<parameter name="platformVersion" value="12.0"></parameter>
<parameter name="udid" value="emulator-5554"></parameter>
<parameter name="systemPort" value="8201"></parameter>
<parameter name="mjpegServerPort" value="9001"></parameter>
<classes>
<class name="com.qa.tests.LoginTest"/>
</classes>
</test>
<test name="iOS Logout Test">
<parameter name="platformName" value="iOS"/>
<parameter name="deviceName" value="iphone12"/>
<parameter name="emulator" value="true"/>
<parameter name="platformVersion" value="15.5"></parameter>
<parameter name="udid" value="55896861-DB90-4F13-955A-F65D20F409B3"></parameter>
<parameter name="wdaLocalPort" value="8102"></parameter>
<classes>
<class name="com.qa.tests.LogoutTest"/>
</classes>
</test>
<test name="Android Logout Test">
<parameter name="platformName" value="Android"/>
<parameter name="deviceName" value="Pixel_3"/>
<parameter name="emulator" value="true"/>
<parameter name="platformVersion" value="12.0"></parameter>
<parameter name="udid" value="emulator-5554"></parameter>
<parameter name="systemPort" value="8202"></parameter>
<parameter name="mjpegServerPort" value="9002"></parameter>
<classes>
<class name="com.qa.tests.LogoutTest"/>
</classes>
</test>
</suite>
This is currently sequence of execution happening for me:
-----------Android—driver STARTED with SessionID: 3709cdd0-e24f-4499-bf17-29461eb967df-----------
-----------iOS—driver STARTED with SessionID: 39ad63ed-2384-4d51-8442-b1feaf70e522-----------
first android test finishes earlier
-----------Android—driver QUITED with SessionID: 3709cdd0-e24f-4499-bf17-29461eb967df-----------
-----------iOS—driver STARTED with SessionID: 7bfe770a-8caa-4d40-949e-07c25e042bc0-----------
-----------iOS—driver QUITED with SessionID: 39ad63ed-2384-4d51-8442-b1feaf70e522-----------
-----------Android—driver STARTED with SessionID: e572838a-b3e2-46e9-b388-4065f391af3d-----------
-----------iOS—driver QUITED with SessionID: 7bfe770a-8caa-4d40-949e-07c25e042bc0-----------
-----------Android—driver QUITED with SessionID: e572838a-b3e2-46e9-b388-4065f391af3d-----------
I observed that because the sequence of tests in testng it tries to start another iOS test while the previous one was still running, is there a way how we can control this ? i.e let previous ios or android test finish before starting a new one ?
I want each test to run independently tests should wait for other one to finish.