0

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:- java-1.8 appium-6.1.0 appium server- gui based version 1.13.0 testng- 6.8

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

testng: 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>

setCapability file: It is used to set the capability

@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);
            }
    }

Loading config: Calling load config file

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

1 Answers1

0
  1. Remove static access modifier from your loadConfigProp function
  2. Consider putting your AndroidDriver instances into ThreadLocal

It is hard to tell what else is wrong without seeing your full code along with TestNG configuration so in the meantime you can check out Parallel Tests - Best Practices article which contains tips and tricks along with the project you can use as a basis for your tests.

Dmitri T
  • 159,985
  • 5
  • 83
  • 133