appium / appium/java-client

Parallel execution is not working in appium with testng

Open
#1,212 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

User side problem/problem of an external tool
Dominant language
Java
Stars
1.3k
Forks
752
Avg merge
6d 21h
Merged PRs (30d)
8

Description

The problem

I am providing the udid and it's ruining but it is not executing my tests, it just reset sometime and then stop working.

I am using the:-

If I don't initialize loadconfig there it is not initializing the driver and beforesuite annotation is not even working.

Environment

*java-1.8
*appium-6.1.0
*appium server- gui based version 1.13.0
*testng- 6.8

Details

If I don't initialize loadconfig there it is not initializing the driver and beforesuite annotation is not even working.

Code To Reproduce Issue [ Good To Have ]

it's testng file:

<test name="Emulator">
        <parameter name="runAs" value="grid"></parameter>
        <parameter name="platform" value="mobile"></parameter>
        <parameter name="runOn" value="emulator-5554"></parameter>
        <parameter name="port" value="4726"></parameter>
        <classes>
            <class name="TestCase.Login"/>
        </classes>
    </test>
    <test name="Samsung J7">
        <parameter name="runAs" value="grid"></parameter>
        <parameter name="platform" value="mobile"></parameter>
        <parameter name="runOn" value="52039763fe37a3eb"></parameter>
        <parameter name="port" value="4729"></parameter>
        <classes>
            <class name="TestCase.Login"/>
        </classes>
    </test>

Capability files:-

@Parameters({"runOn"})
    @BeforeSuite
    public static void loadConfigProp(@Optional("chrome_normal") String runOn) throws IOException
    {//Importing the files
        FileInputStream fis = new FileInputStream(System.getProperty("user.dir")+"\\src\\main\\resources\\Properties\\"+"data.properties");
        prop.load(fis);
        app= new File(prop.getProperty("app.path"));
        //APPLICATION_NAME = prop.getProperty("application.path");
        BASE_PKG = prop.getProperty("base.pkg");
        APP_ACTIVITY = prop.getProperty("application.activity");        AUTOMATION_INSTRUMENTATION=prop.getProperty("automation.instumentation");
        DEVICE_NAME=prop.getProperty("device.name");

        PLATFORM_NAME=prop.getProperty("platform.name");

        capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME,
                Base.PLATFORM_NAME);
        capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android");
        capabilities.setCapability(MobileCapabilityType.APP,app.getAbsolutePath());
        capabilities.setCapability(AndroidMobileCapabilityType.APP_ACTIVITY,
                Base.APP_ACTIVITY);
        capabilities.setCapability("noReset","true");
        capabilities.setCapability("fullReset","false");
        capabilities.setCapability(AndroidMobileCapabilityType.APP_PACKAGE,
                Base.BASE_PKG);
        if(runOn.equals("52039763fe37a3eb"))
            {
                capabilities.setCapability("udid", "52039763fe37a3eb");
                driver = new AndroidDriver(new URL("http://127.0.0.1:4729/wd/hub"), capabilities);
            }else if(runOn.equals("emulator-5554"))
            {
                capabilities.setCapability("udid", "emulator-5554");
                driver = new AndroidDriver(new URL("http://127.0.0.1:4726/wd/hub"), capabilities);
            }
    }

Config file to load it:

 @BeforeTest
    public void start() throws IOException {
        Base b= new Base();
        b.loadConfigProp("52039763fe37a3eb");
        b.loadConfigProp("emulator-5554");
        driver=b.getDriver();
    }

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the TestNG XML and the @BeforeSuite loadConfigProp and @BeforeTest start entry points shown in the report. Reproduce the run using both device IDs and Appium ports, then trace when each driver is initialized and reset. Done means both configured tests execute reliably in parallel without stopping or resetting unexpectedly.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
mobile, testing
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.