Best io.appium code snippet using io.appium.java_client.android.AndroidMobileCommandHelper.currentActivityCommand
AndroidDriver.java
Source:AndroidDriver.java  
...14 * limitations under the License.15 */16package io.appium.java_client.android;17import static com.google.common.base.Preconditions.checkNotNull;18import static io.appium.java_client.android.AndroidMobileCommandHelper.currentActivityCommand;19import static io.appium.java_client.android.AndroidMobileCommandHelper.endTestCoverageCommand;20import static io.appium.java_client.android.AndroidMobileCommandHelper.getNetworkConnectionCommand;21import static io.appium.java_client.android.AndroidMobileCommandHelper.isLockedCommand;22import static io.appium.java_client.android.AndroidMobileCommandHelper.lockDeviceCommand;23import static io.appium.java_client.android.AndroidMobileCommandHelper.longPressKeyCodeCommand;24import static io.appium.java_client.android.AndroidMobileCommandHelper.openNotificationsCommand;25import static io.appium.java_client.android.AndroidMobileCommandHelper.pressKeyCodeCommand;26import static io.appium.java_client.android.AndroidMobileCommandHelper.pushFileCommandCommand;27import static io.appium.java_client.android.AndroidMobileCommandHelper.setConnectionCommand;28import static io.appium.java_client.android.AndroidMobileCommandHelper.startActivityCommand;29import static io.appium.java_client.android.AndroidMobileCommandHelper.toggleLocationServicesCommand;30import static io.appium.java_client.android.AndroidMobileCommandHelper.unlockCommand;31import io.appium.java_client.AppiumDriver;32import io.appium.java_client.AppiumSetting;33import io.appium.java_client.CommandExecutionHelper;34import io.appium.java_client.FindsByAndroidUIAutomator;35import io.appium.java_client.MobileSelector;36import io.appium.java_client.android.internal.JsonToAndroidElementConverter;37import io.appium.java_client.remote.MobilePlatform;38import io.appium.java_client.service.local.AppiumDriverLocalService;39import io.appium.java_client.service.local.AppiumServiceBuilder;40import org.apache.commons.codec.binary.Base64;41import org.apache.commons.io.FileUtils;42import org.openqa.selenium.Capabilities;43import org.openqa.selenium.WebDriverException;44import org.openqa.selenium.WebElement;45import org.openqa.selenium.remote.HttpCommandExecutor;46import org.openqa.selenium.remote.http.HttpClient;47import java.io.File;48import java.io.IOException;49import java.net.URL;50import java.util.List;51/**52 * @param <T> the required type of class which implement {@link org.openqa.selenium.WebElement}.53 *     Instances of the defined type will be returned via findElement* and findElements*.54 *     Warning (!!!). Allowed types:55 * {@link org.openqa.selenium.WebElement}56 * {@link io.appium.java_client.TouchableElement}57 * {@link org.openqa.selenium.remote.RemoteWebElement}58 * {@link io.appium.java_client.MobileElement}59 * {@link io.appium.java_client.android.AndroidElement}60 */61public class AndroidDriver<T extends WebElement>62    extends AppiumDriver<T>63    implements AndroidDeviceActionShortcuts, HasNetworkConnection, PushesFiles, StartsActivity,64    FindsByAndroidUIAutomator<T> {65    private static final String ANDROID_PLATFORM = MobilePlatform.ANDROID;66    /**67     * @param executor is an instance of {@link org.openqa.selenium.remote.HttpCommandExecutor}68     *                 or class that extends it. Default commands or another vendor-specific69     *                 commands may be specified there.70     * @param capabilities take a look71     *                     at {@link org.openqa.selenium.Capabilities}72     */73    public AndroidDriver(HttpCommandExecutor executor, Capabilities capabilities) {74        super(executor, capabilities, JsonToAndroidElementConverter.class);75    }76    /**77     * @param remoteAddress is the address of remotely/locally78     *                      started Appium server79     * @param desiredCapabilities take a look80     *                            at {@link org.openqa.selenium.Capabilities}81     */82    public AndroidDriver(URL remoteAddress, Capabilities desiredCapabilities) {83        super(remoteAddress, substituteMobilePlatform(desiredCapabilities, ANDROID_PLATFORM),84            JsonToAndroidElementConverter.class);85    }86    /**87     * @param remoteAddress is the address of remotely/locally88     *                      started Appium server89     * @param httpClientFactory take a look90     *                          at {@link org.openqa.selenium.remote.http.HttpClient.Factory}91     * @param desiredCapabilities take a look92     *                            at {@link org.openqa.selenium.Capabilities}93     */94    public AndroidDriver(URL remoteAddress, HttpClient.Factory httpClientFactory,95        Capabilities desiredCapabilities) {96        super(remoteAddress, httpClientFactory,97            substituteMobilePlatform(desiredCapabilities, ANDROID_PLATFORM),98            JsonToAndroidElementConverter.class);99    }100    /**101     * @param service take a look102     *                at {@link io.appium.java_client.service.local.AppiumDriverLocalService}103     * @param desiredCapabilities take a look104     *                            at {@link org.openqa.selenium.Capabilities}105     */106    public AndroidDriver(AppiumDriverLocalService service, Capabilities desiredCapabilities) {107        super(service, substituteMobilePlatform(desiredCapabilities, ANDROID_PLATFORM),108            JsonToAndroidElementConverter.class);109    }110    /**111     * @param service take a look112     *                at {@link io.appium.java_client.service.local.AppiumDriverLocalService}113     * @param httpClientFactory take a look114     *                          at {@link org.openqa.selenium.remote.http.HttpClient.Factory}115     * @param desiredCapabilities take a look116     *                            at {@link org.openqa.selenium.Capabilities}117     */118    public AndroidDriver(AppiumDriverLocalService service, HttpClient.Factory httpClientFactory,119        Capabilities desiredCapabilities) {120        super(service, httpClientFactory,121            substituteMobilePlatform(desiredCapabilities, ANDROID_PLATFORM),122            JsonToAndroidElementConverter.class);123    }124    /**125     * @param builder take a look126     *                at {@link io.appium.java_client.service.local.AppiumServiceBuilder}127     * @param desiredCapabilities take a look128     *                            at {@link org.openqa.selenium.Capabilities}129     */130    public AndroidDriver(AppiumServiceBuilder builder, Capabilities desiredCapabilities) {131        super(builder, substituteMobilePlatform(desiredCapabilities, ANDROID_PLATFORM),132            JsonToAndroidElementConverter.class);133    }134    /**135     * @param builder take a look136     *                at {@link io.appium.java_client.service.local.AppiumServiceBuilder}137     * @param httpClientFactory take a look138     *                          at {@link org.openqa.selenium.remote.http.HttpClient.Factory}139     * @param desiredCapabilities take a look140     *                            at {@link org.openqa.selenium.Capabilities}141     */142    public AndroidDriver(AppiumServiceBuilder builder, HttpClient.Factory httpClientFactory,143        Capabilities desiredCapabilities) {144        super(builder, httpClientFactory,145            substituteMobilePlatform(desiredCapabilities, ANDROID_PLATFORM),146            JsonToAndroidElementConverter.class);147    }148    /**149     * @param httpClientFactory take a look150     *                          at {@link org.openqa.selenium.remote.http.HttpClient.Factory}151     * @param desiredCapabilities take a look152     *                            at {@link org.openqa.selenium.Capabilities}153     */154    public AndroidDriver(HttpClient.Factory httpClientFactory, Capabilities desiredCapabilities) {155        super(httpClientFactory, substituteMobilePlatform(desiredCapabilities, ANDROID_PLATFORM),156            JsonToAndroidElementConverter.class);157    }158    /**159     * @param desiredCapabilities take a look160     *                            at {@link org.openqa.selenium.Capabilities}161     */162    public AndroidDriver(Capabilities desiredCapabilities) {163        super(substituteMobilePlatform(desiredCapabilities, ANDROID_PLATFORM),164            JsonToAndroidElementConverter.class);165    }166    /**167     * @see io.appium.java_client.TouchShortcuts#swipe(int, int, int, int, int)168     */169    @Override public void swipe(int startx, int starty, int endx, int endy, int duration) {170        doSwipe(startx, starty, endx, endy, duration);171    }172    /**173     * Send a key event to the device.174     *175     * @param key code for the key pressed on the device.176     */177    @Override public void pressKeyCode(int key) {178        CommandExecutionHelper.execute(this, pressKeyCodeCommand(key));179    }180    /**181     * @param key       code for the key pressed on the Android device.182     * @param metastate metastate for the keypress.183     * @see AndroidKeyCode184     * @see AndroidKeyMetastate185     * @see AndroidDeviceActionShortcuts#pressKeyCode(int, Integer).186     */187    @Override public void pressKeyCode(int key, Integer metastate) {188        CommandExecutionHelper.execute(this, pressKeyCodeCommand(key, metastate));189    }190    /**191     * Send a long key event to the device.192     *193     * @param key code for the long key pressed on the device.194     */195    @Override public void longPressKeyCode(int key) {196        CommandExecutionHelper.execute(this, longPressKeyCodeCommand(key));197    }198    /**199     * @param key       code for the long key pressed on the Android device.200     * @param metastate metastate for the long key press.201     * @see AndroidKeyCode202     * @see AndroidKeyMetastate203     * @see AndroidDeviceActionShortcuts#pressKeyCode(int, Integer)204     */205    @Override public void longPressKeyCode(int key, Integer metastate) {206        CommandExecutionHelper.execute(this, longPressKeyCodeCommand(key, metastate));207    }208    @Override public void setConnection(Connection connection) {209        CommandExecutionHelper.execute(this, setConnectionCommand(connection));210    }211    @Override public Connection getConnection() {212        long bitMask = CommandExecutionHelper.execute(this, getNetworkConnectionCommand());213        Connection[] types = Connection.values();214        for (Connection connection: types) {215            if (connection.bitMask == bitMask) {216                return connection;217            }218        }219        throw new WebDriverException("The unknown network connection "220            + "type has been returned. The bitmask is " + bitMask);221    }222    @Override public void pushFile(String remotePath, byte[] base64Data) {223        CommandExecutionHelper.execute(this, pushFileCommandCommand(remotePath, base64Data));224    }225    @Override public void pushFile(String remotePath, File file) throws IOException {226        checkNotNull(file, "A reference to file should not be NULL");227        if (!file.exists()) {228            throw new IOException("The given file "229                + file.getAbsolutePath() + " doesn't exist");230        }231        pushFile(remotePath,232            Base64.encodeBase64(FileUtils.readFileToByteArray(file)));233    }234    @Override public void startActivity(String appPackage, String appActivity,235        String appWaitPackage,236        String appWaitActivity, String intentAction,237        String intentCategory, String intentFlags,238        String optionalIntentArguments,boolean stopApp )239        throws IllegalArgumentException {240        CommandExecutionHelper.execute(this, startActivityCommand(appPackage, appActivity,241            appWaitPackage, appWaitActivity, intentAction, intentCategory, intentFlags,242            optionalIntentArguments, stopApp));243    }244    @Override245    public void startActivity(String appPackage, String appActivity,246        String appWaitPackage, String appWaitActivity, boolean stopApp)247        throws IllegalArgumentException {248        this.startActivity(appPackage,appActivity,appWaitPackage,249            appWaitActivity,null,null,null,null,stopApp);250    }251    @Override public void startActivity(String appPackage, String appActivity,252        String appWaitPackage,253        String appWaitActivity) throws IllegalArgumentException {254        this.startActivity(appPackage, appActivity,255            appWaitPackage, appWaitActivity,null,null,null,null,true);256    }257    @Override public void startActivity(String appPackage, String appActivity)258        throws IllegalArgumentException {259        this.startActivity(appPackage, appActivity, null, null,260            null,null,null,null,true);261    }262    @Override public void startActivity(String appPackage, String appActivity,263        String appWaitPackage, String appWaitActivity,264        String intentAction,String intentCategory,265        String intentFlags,String intentOptionalArgs)266        throws IllegalArgumentException {267        this.startActivity(appPackage,appActivity,268            appWaitPackage,appWaitActivity,269            intentAction,intentCategory,intentFlags,intentOptionalArgs,true);270    }271    /**272     * Get test-coverage data.273     *274     * @param intent intent to broadcast.275     * @param path   path to .ec file.276     */277    public void endTestCoverage(String intent, String path) {278        CommandExecutionHelper.execute(this, endTestCoverageCommand(intent, path));279    }280    /**281     * Get the current activity being run on the mobile device.282     *283     * @return a current activity being run on the mobile device.284     */285    public String currentActivity() {286        return CommandExecutionHelper.execute(this, currentActivityCommand());287    }288    /**289     * Open the notification shade, on Android devices.290     */291    public void openNotifications() {292        CommandExecutionHelper.execute(this, openNotificationsCommand());293    }294    /**295     * Check if the device is locked.296     *297     * @return true if device is locked. False otherwise298     */299    public boolean isLocked() {300        return CommandExecutionHelper.execute(this, isLockedCommand());...AndroidMobileCommandHelper.java
Source:AndroidMobileCommandHelper.java  
...32     *33     * @return a key-value pair. The key is the command name. The value is a34     * {@link java.util.Map} command arguments.35     */36    public static Map.Entry<String, Map<String, ?>> currentActivityCommand() {37        return new AbstractMap.SimpleEntry<String,38            Map<String, ?>>(CURRENT_ACTIVITY, ImmutableMap.<String, Object>of());39    }40    /**41     * This method forms a {@link java.util.Map} of parameters for the42     * ending of the test coverage.43     *44     * @param intent intent to broadcast.45     * @param path   path to .ec file.46     * @return a key-value pair. The key is the command name. The value is a47     * {@link java.util.Map} command arguments.48     */49    public static Map.Entry<String, Map<String, ?>> endTestCoverageCommand(String intent,50        String path) {...StartsActivity.java
Source:StartsActivity.java  
...13 * See the License for the specific language governing permissions and14 * limitations under the License.15 */16package io.appium.java_client.android;17import static io.appium.java_client.android.AndroidMobileCommandHelper.currentActivityCommand;18import static io.appium.java_client.android.AndroidMobileCommandHelper.currentPackageCommand;19import static io.appium.java_client.android.AndroidMobileCommandHelper.startActivityCommand;20import io.appium.java_client.CommandExecutionHelper;21import io.appium.java_client.ExecutesMethod;22public interface StartsActivity extends ExecutesMethod {23    /**24     * This method should start arbitrary activity during a test. If the activity belongs to25     * another application, that application is started and the activity is opened.26     * <p>27     * Usage:28     * </p>29     * <pre>30     *     {@code31     *     Activity activity = new Activity("app package goes here", "app activity goes here");32     *     activity.setWaitAppPackage("app wait package goes here");33     *     activity.setWaitAppActivity("app wait activity goes here");34     *     driver.startActivity(activity);35     *     }36     * </pre>37     *38     * @param activity The {@link Activity} object39     */40    default void startActivity(Activity activity) {41        CommandExecutionHelper.execute(this,42            startActivityCommand(activity.getAppPackage(), activity.getAppActivity(),43                activity.getAppWaitPackage(), activity.getAppWaitActivity(),44                activity.getIntentAction(), activity.getIntentCategory(), activity.getIntentFlags(),45                activity.getOptionalIntentArguments(), activity.isStopApp()));46    }47    /**48     * Get the current activity being run on the mobile device.49     *50     * @return a current activity being run on the mobile device.51     */52    default String currentActivity() {53        return CommandExecutionHelper.execute(this, currentActivityCommand());54    }55    /**56     * Get the current package being run on the mobile device.57     *58     * @return a current package being run on the mobile device.59     */60    default String getCurrentPackage() {61        return CommandExecutionHelper.execute(this, currentPackageCommand());62    }63}...currentActivityCommand
Using AI Code Generation
1AndroidMobileCommandHelper androidMobileCommandHelper = new AndroidMobileCommandHelper();2String currentActivity = androidMobileCommandHelper.currentActivityCommand();3AndroidMobileCommandHelper androidMobileCommandHelper = new AndroidMobileCommandHelper();4String currentActivity = androidMobileCommandHelper.currentActivityCommand();5AndroidMobileCommandHelper androidMobileCommandHelper = new AndroidMobileCommandHelper();6String currentActivity = androidMobileCommandHelper.currentActivityCommand();7AndroidMobileCommandHelper androidMobileCommandHelper = new AndroidMobileCommandHelper();8String currentActivity = androidMobileCommandHelper.currentActivityCommand();9AndroidMobileCommandHelper androidMobileCommandHelper = new AndroidMobileCommandHelper();10String currentActivity = androidMobileCommandHelper.currentActivityCommand();11AndroidMobileCommandHelper androidMobileCommandHelper = new AndroidMobileCommandHelper();12String currentActivity = androidMobileCommandHelper.currentActivityCommand();13AndroidMobileCommandHelper androidMobileCommandHelper = new AndroidMobileCommandHelper();14String currentActivity = androidMobileCommandHelper.currentActivityCommand();15AndroidMobileCommandHelper androidMobileCommandHelper = new AndroidMobileCommandHelper();16String currentActivity = androidMobileCommandHelper.currentActivityCommand();17AndroidMobileCommandHelper androidMobileCommandHelper = new AndroidMobileCommandHelper();18String currentActivity = androidMobileCommandHelper.currentActivityCommand();currentActivityCommand
Using AI Code Generation
1AndroidMobileCommandHelper androidMobileCommandHelper = new AndroidMobileCommandHelper();2String currentActivity = androidMobileCommandHelper.currentActivityCommand((AndroidDriver) driver);3AndroidMobileCommandHelper androidMobileCommandHelper = new AndroidMobileCommandHelper();4String currentActivity = androidMobileCommandHelper.currentActivityCommand((AndroidDriver) driver);5AndroidMobileCommandHelper androidMobileCommandHelper = new AndroidMobileCommandHelper();6String currentActivity = androidMobileCommandHelper.currentActivityCommand((AndroidDriver) driver);7AndroidMobileCommandHelper androidMobileCommandHelper = new AndroidMobileCommandHelper();8String currentActivity = androidMobileCommandHelper.currentActivityCommand((AndroidDriver) driver);9AndroidMobileCommandHelper androidMobileCommandHelper = new AndroidMobileCommandHelper();10String currentActivity = androidMobileCommandHelper.currentActivityCommand((AndroidDriver) driver);11AndroidMobileCommandHelper androidMobileCommandHelper = new AndroidMobileCommandHelper();12String currentActivity = androidMobileCommandHelper.currentActivityCommand((AndroidDriver) driver);13AndroidMobileCommandHelper androidMobileCommandHelper = new AndroidMobileCommandHelper();14String currentActivity = androidMobileCommandHelper.currentActivityCommand((AndroidDriver) driver);15AndroidMobileCommandHelper androidMobileCommandHelper = new AndroidMobileCommandHelper();16String currentActivity = androidMobileCommandHelper.currentActivityCommand((AndroidDriver) driver);17AndroidMobileCommandHelper androidMobileCommandHelper = new AndroidMobileCommandHelper();18String currentActivity = androidMobileCommandHelper.currentActivityCommand((AndroidDriver) driver);19AndroidMobileCommandHelper androidMobileCommandHelper = new AndroidMobileCommandHelper();currentActivityCommand
Using AI Code Generation
1AndroidMobileCommandHelper androidMobileCommandHelper = new AndroidMobileCommandHelper();2String activity = androidMobileCommandHelper.currentActivityCommand(driver);3System.out.println("Current Activity is : " + activity);4String package = androidMobileCommandHelper.currentPackageCommand(driver);5System.out.println("Current Package is : " + package);6String context = androidMobileCommandHelper.currentContextCommand(driver);7System.out.println("Current Context is : " + context);8String contextHandle = androidMobileCommandHelper.currentContextHandleCommand(driver);9System.out.println("Current Context Handle is : " + contextHandle);10String deviceActivity = androidMobileCommandHelper.currentDeviceActivityCommand(driver);11System.out.println("Current Device Activity is : " + deviceActivity);12String deviceDensity = androidMobileCommandHelper.currentDeviceDensityCommand(driver);13System.out.println("Current Device Density is : " + deviceDensity);14String deviceLanguage = androidMobileCommandHelper.currentDeviceLanguageCommand(driver);15System.out.println("Current Device Language is : " + deviceLanguage);16String deviceLocale = androidMobileCommandHelper.currentDeviceLocaleCommand(driver);17System.out.println("Current Device Locale is : " + deviceLocale);18String deviceOrientation = androidMobileCommandHelper.currentDeviceOrientationCommand(driver);19System.out.println("Current Device Orientation is : " + deviceOrientation);20String devicePlatform = androidMobileCommandHelper.currentDevicePlatformCommand(driver);21System.out.println("Current Device Platform is : " + devicePlatform);currentActivityCommand
Using AI Code Generation
1package com.appium.tests;2import java.net.MalformedURLException;3import java.net.URL;4import org.openqa.selenium.remote.DesiredCapabilities;5import io.appium.java_client.android.AndroidDriver;6import io.appium.java_client.android.AndroidElement;7public class CurrentActivityTest {8	public static void main(String[] args) {9		DesiredCapabilities capabilities = new DesiredCapabilities();10		capabilities.setCapability("deviceName", "Android Emulator");11		capabilities.setCapability("platformName", "Android");12		capabilities.setCapability("appPackage", "com.android.calculator2");13		capabilities.setCapability("appActivity", "com.android.calculator2.Calculator");14		AndroidDriver<AndroidElement> driver = null;15		try {currentActivityCommand
Using AI Code Generation
1import io.appium.java_client.android.AndroidMobileCommandHelper;2public class currentActivityCommand {3    public static void main(String[] args) {4        try {5            AndroidMobileCommandHelper.currentActivityCommand();6        } catch (Exception e) {7            System.out.println(e);8        }9    }10}11import io.appium.java_client.android.AndroidMobileCommandHelper;12public class currentContextCommand {13    public static void main(String[] args) {14        try {15            AndroidMobileCommandHelper.currentContextCommand();16        } catch (Exception e) {17            System.out.println(e);18        }19    }20}21import io.appium.java_client.android.AndroidMobileCommandHelper;22public class currentPackageCommand {23    public static void main(String[] args) {24        try {25            AndroidMobileCommandHelper.currentPackageCommand();26        } catch (Exception e) {27            System.out.println(e);28        }29    }30}31import io.appium.java_client.android.AndroidMobileCommandHelper;32public class deviceKeyEventCommand {33    public static void main(String[] args) {34        try {35            AndroidMobileCommandHelper.deviceKeyEventCommand();36        } catch (Exception e) {37            System.out.println(e);38        }39    }40}41import io.appium.java_client.android.AndroidMobileCommandHelper;42public class dragCommand {43    public static void main(String[] args) {44        try {45            AndroidMobileCommandHelper.dragCommand();46        } catch (Exception e) {47            System.out.println(e);48        }49    }50}51import io.appium.java_client.android.AndroidMobileCommandHelper;52public class endCoverageCommand {53    public static void main(String[] args) {54        try {55            AndroidMobileCommandHelper.endCoverageCommand();56        } catch (Exception e) {57            System.out.println(e);58        }59    }60}currentActivityCommand
Using AI Code Generation
1AndroidDriver driver;2String currentActivity = ((AndroidMobileCommandHelper) driver).currentActivityCommand();3System.out.println(currentActivity);4AndroidDriver driver;5String currentActivity = ((AndroidMobileCommandHelper) driver).currentActivityCommand();6System.out.println(currentActivity);7AndroidDriver driver;8String currentActivity = ((AndroidMobileCommandHelper) driver).currentActivityCommand();9System.out.println(currentActivity);10AndroidDriver driver;11String currentActivity = ((AndroidMobileCommandHelper) driver).currentActivityCommand();12System.out.println(currentActivity);13AndroidDriver driver;14String currentActivity = ((AndroidMobileCommandHelper) driver).currentActivityCommand();15System.out.println(currentActivity);16AndroidDriver driver;17String currentActivity = ((AndroidMobileCommandHelper) driver).currentActivityCommand();18System.out.println(currentActivity);19AndroidDriver driver;20String currentActivity = ((AndroidMobileCommandHelper) driver).currentActivityCommand();21System.out.println(currentActivity);22AndroidDriver driver;23String currentActivity = ((AndroidMobileCommandHelper) driver).currentActivityCommand();24System.out.println(currentActivity);25AndroidDriver driver;26String currentActivity = ((AndroidMobileCommandHelper) driver).currentActivityCommand();27System.out.println(currentActivity);28AndroidDriver driver;29String currentActivity = ((AndroidMobileCommandLearn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
