Skip to main content

Multi Device Report

Description

In order to connect several reports, users can use the multiTestId test property. It available for Grid tests. To enable this, select "Allow users to create new fields from code environment*".*

*

In the generated report you can swap between related tests by clicking the 'Device' field at the top left of the report.

After clicking a list of devices is presented with their names.

Examples

Appium Expand source

import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInfo;
import org.openqa.selenium.remote.DesiredCapabilities;

import java.net.URL;
import java.util.UUID;

public class AppiumExample {
private final static String host = "<Cloud URL>";
private final static String accessKey = "<Your Access Key>";
private static String multiLink = String.valueOf(UUID.randomUUID());
private String reportDirectory = "reports";
private String reportFormat = "xml";
private String firstDeviceTestName = "Multi Device Test- Device 1";
private String secondDeviceTestName = "Multi Device Test- Device 2";
AndroidDriver<AndroidElement> driver1;
AndroidDriver<AndroidElement> driver2;

public DesiredCapabilities mustHaveCapabilitiesForMultiDeviceReport(String testName){
DesiredCapabilities dc = new DesiredCapabilities();
dc.setCapability("reportDirectory", reportDirectory);
dc.setCapability("reportFormat", reportFormat);
dc.setCapability("testName", testName);
dc.setCapability("accessKey", accessKey);
dc.setCapability("multiTestId", multiLink);// This line makes the connection
return dc;
}

@BeforeEach
public void beforeEach(TestInfo testInfo) throws Exception {
driver1 = new AndroidDriver<>(new URL(host + "/wd/hub"), getCapabilitiesForDevice1());
driver2 = new AndroidDriver<>(new URL(host + "/wd/hub"), getCapabilitiesForDevice2());

}
@Test
public void firstDevice() {
// Your test logic....
}

@AfterEach
public void afterEach(TestInfo testInfo) {
driver1.quit();
driver2.quit();
}

public DesiredCapabilities getCapabilitiesForDevice1() {
DesiredCapabilities dc = mustHaveCapabilitiesForMultiDeviceReport(firstDeviceTestName);
dc.setCapability("newCommandTimeout", 120000);


//.... additional capabilities....
return dc;
}
public DesiredCapabilities getCapabilitiesForDevice2() {
DesiredCapabilities dc = mustHaveCapabilitiesForMultiDeviceReport(secondDeviceTestName);
dc.setCapability("newCommandTimeout", 120000);


//.... additional capabilities....
return dc;
}
}

Seetest Expand source

import com.experitest.client.Client;
import com.experitest.client.GridClient;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import java.util.UUID;


public class STAExample {
private final static String host = "<Cloud URL>";
private final static String accessKey = "<Your Access Key>";
private static String multiLink = String.valueOf(UUID.randomUUID());
private String reportDirectory = "reports";
private String reportFormat = "xml";
private String firstDeviceTestName = "Multi Device Test- Device 1";
private String secondDeviceTestName = "Multi Device Test- Device 2";
protected Client client1;
protected Client client2;

@BeforeEach
public void beforeEach() {
GridClient grid1 = new GridClient(accessKey, host);
GridClient grid2 = new GridClient(accessKey, host);
client1 = grid1.lockDeviceForExecution(firstDeviceTestName, "", 10, 50000);
client2 = grid2.lockDeviceForExecution(secondDeviceTestName, "", 10, 50000);
client1.setProperty("controller.idle.timeout",""+120000 );
client2.setProperty("controller.idle.timeout",""+120000 );
client1.setReporter(reportFormat, reportDirectory, firstDeviceTestName);
client2.setReporter(reportFormat, reportDirectory, secondDeviceTestName);
client1.addTestProperty("multiTestId",multiLink);
client2.addTestProperty("multiTestId",multiLink);


}
@Test
public void test(){
//Your test logic

}

@AfterEach
public void afterEach(){
client1.generateReport(false);
client2.generateReport(false);
client1.releaseClient();
client2.releaseClient();
}
}