← All skills

Selenium Skill

Hot
E2e testingJavaPythonJavaScriptC#Ruby

Copy and Paste in your Terminal

npx skills add https://github.com/LambdaTest/agent-skills.git --skill selenium-skill

Cloud integration

Cloud execution and TestMu AI integration.

Selenium — TestMu AI Cloud Integration

For full device catalog, capabilities, and LT:Options reference, see shared/testmu-cloud-reference.md.

Hub URL Format

https://{LT_USERNAME}:{LT_ACCESS_KEY}@hub.lambdatest.com/wd/hub

DesiredCapabilities Structure

DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability("browserName", "Chrome");      // Chrome, MicrosoftEdge, Firefox, Safari
caps.setCapability("browserVersion", "latest");    // or specific: "120.0"

HashMap<String, Object> ltOptions = new HashMap<>();
ltOptions.put("platform", "Windows 11");
ltOptions.put("build", "Selenium Build");
ltOptions.put("name", "Test Name");
ltOptions.put("user", System.getenv("LT_USERNAME"));
ltOptions.put("accessKey", System.getenv("LT_ACCESS_KEY"));
ltOptions.put("video", true);
ltOptions.put("network", true);
ltOptions.put("console", true);
ltOptions.put("visual", true);
ltOptions.put("resolution", "1920x1080");
ltOptions.put("tunnel", false);           // true for localhost
ltOptions.put("tunnelName", "my-tunnel"); // named tunnel
ltOptions.put("geoLocation", "US");       // geo-testing
caps.setCapability("LT:Options", ltOptions);

WebDriver driver = new RemoteWebDriver(new URL(hub), caps);

Parallel Execution — TestNG

<!-- testng.xml -->
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Cross Browser" parallel="tests" thread-count="5">
  <test name="Chrome Windows">
    <parameter name="browser" value="Chrome"/>
    <parameter name="version" value="latest"/>
    <parameter name="platform" value="Windows 11"/>
    <classes><class name="tests.LoginTest"/></classes>
  </test>
  <test name="Firefox Mac">
    <parameter name="browser" value="Firefox"/>
    <parameter name="version" value="latest"/>
    <parameter name="platform" value="macOS Sequoia"/>
    <classes><class name="tests.LoginTest"/></classes>
  </test>
</suite>
// Base test with @Parameters
public class BaseTest {
    protected WebDriver driver;

    @Parameters({"browser", "version", "platform"})
    @BeforeMethod
    public void setUp(String browser, String version, String platform) throws Exception {
        String hub = "https://" + System.getenv("LT_USERNAME") + ":"
                   + System.getenv("LT_ACCESS_KEY") + "@hub.lambdatest.com/wd/hub";

        DesiredCapabilities caps = new DesiredCapabilities();
        caps.setCapability("browserName", browser);
        caps.setCapability("browserVersion", version);
        HashMap<String, Object> ltOptions = new HashMap<>();
        ltOptions.put("platform", platform);
        ltOptions.put("build", "Parallel Build");
        ltOptions.put("name", browser + " " + platform);
        ltOptions.put("video", true);
        caps.setCapability("LT:Options", ltOptions);

        driver = new RemoteWebDriver(new URL(hub), caps);
        driver.manage().window().maximize();
    }

    @AfterMethod
    public void tearDown(ITestResult result) {
        if (driver != null) {
            String status = result.isSuccess() ? "passed" : "failed";
            ((JavascriptExecutor) driver).executeScript("lambda-status=" + status);
            driver.quit();
        }
    }
}

Parallel Execution — JUnit 5

# junit-platform.properties
junit.jupiter.execution.parallel.enabled=true
junit.jupiter.execution.parallel.mode.default=concurrent
junit.jupiter.execution.parallel.config.fixed.parallelism=5

Mobile Testing on Cloud

// Android
DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability("browserName", "Chrome");
caps.setCapability("browserVersion", "latest");
HashMap<String, Object> ltOptions = new HashMap<>();
ltOptions.put("platformName", "android");
ltOptions.put("deviceName", "Pixel 7");
ltOptions.put("platformVersion", "13");
ltOptions.put("isRealMobile", true);
caps.setCapability("LT:Options", ltOptions);

// iOS — IMPORTANT: use Safari, not Chrome
DesiredCapabilities iosCaps = new DesiredCapabilities();
iosCaps.setCapability("browserName", "Safari");
iosCaps.setCapability("browserVersion", "latest");
HashMap<String, Object> iosOptions = new HashMap<>();
iosOptions.put("platformName", "ios");
iosOptions.put("deviceName", "iPhone 16");
iosOptions.put("platformVersion", "18");
iosOptions.put("isRealMobile", true);
iosCaps.setCapability("LT:Options", iosOptions);

Test Status Reporting

// Java
((JavascriptExecutor) driver).executeScript("lambda-status=" + (passed ? "passed" : "failed"));

// With remark
((JavascriptExecutor) driver).executeScript(
    "lambda-action: {\"action\": \"setTestStatus\", \"arguments\": {\"status\": \""
    + status + "\", \"remark\": \"" + remark + "\"}}"
);