Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
target/
log
**/target/
**/log
**/browserstack-cli
**/.DS_Store
21 changes: 14 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,24 @@
1. **Clone the repository**

```sh
git clone https://github.com/browserstack/browserstack-playwright-load-testing-sample.git
cd testng-browserstack
git clone https://github.com/browserstack/browserstack-selenium-load-testing-sample.git
cd browserstack-selenium-load-testing-sample
```

2. **Install Maven dependencies**
2. **Choose the framework to run**

cd into the the respective framework folder, for instance to run the testng sample:
```sh
cd testng
```

3. **Install Maven dependencies**

```sh
mvn compile
```

3. **Install BrowserStack CLI**
4. **Install BrowserStack CLI**

Download the appropriate BrowserStack CLI binary based on your operating system:

Expand All @@ -40,14 +47,14 @@

> Place the downloaded `browserstack-cli` binary in the root of your project.

4. **Run tests using BrowserStack CLI**
5. **Run tests using BrowserStack CLI**

```sh
./browserstack-cli load run
```

5. **View Test Results**
6. **View Test Results**

Visit the [BrowserStack Load-Testing Dashboard](https://load.browserstack.com/projects) to monitor and analyze your test runs.

---
---
54 changes: 54 additions & 0 deletions junit-4/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# browserstack-selenium-load-testing-sample

![BrowserStack Logo](https://d98b8t1nnulk5.cloudfront.net/production/images/layout/logo-header.png?1469004780)

## Getting Started

### Run Sample Build

1. **Clone the repository**

```sh
git clone https://github.com/browserstack/browserstack-selenium-load-testing-sample.git
cd browserstack-selenium-load-testing-sample
cd junit-4
```

2. **Install Maven dependencies**

```sh
mvn compile
```

3. **Install BrowserStack CLI**

Download the appropriate BrowserStack CLI binary based on your operating system:

- **macOS x86**
[browserstack-cli-macOS-x86](https://load-api.browserstack.com/api/v1/binary?os=macos&arch=x64)

- **macOS ARM**
[browserstack-cli-macOS-arm](https://load-api.browserstack.com/api/v1/binary?os=macos&arch=arm64)

- **Windows x86**
[browserstack-cli-windows](https://load-api.browserstack.com/api/v1/binary?os=win&arch=x64)

- **Linux x86**
[browserstack-cli-linux-x86](https://load-api.browserstack.com/api/v1/binary?os=linux&arch=arm64)

- **Linux ARM**
[browserstack-cli-linux-arm](https://load-api.browserstack.com/api/v1/binary?os=linux&arch=x64)

> Place the downloaded `browserstack-cli` binary in the root of your project.

4. **Run tests using BrowserStack CLI**

```sh
./browserstack-cli load run
```

5. **View Test Results**

Visit the [BrowserStack Load-Testing Dashboard](https://load.browserstack.com/projects) to monitor and analyze your test runs.

---
44 changes: 44 additions & 0 deletions junit-4/browserstack-load.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# =============================
# Set BrowserStack Credentials
# =============================
# Add your BrowserStack userName and accessKey here or set BROWSERSTACK_USERNAME and BROWSERSTACK_ACCESS_KEY as env variables.
userName: BROWSERSTACK_USERNAME
accessKey: BROWSERSTACK_ACCESS_KEY

# ======================
# BrowserStack Reporting
# ======================
# The following parameters are used to set up reporting on BrowserStack Load Testing:
# Set 'projectName' to the name of your project. Example: 'Product ABC'. Tests under the same projectName will be grouped together.
projectName: Default Project

# Set 'testName' to the name of your test. Example: 'First Load Test'. Test runs with the same testName will be grouped together.
testName: Default Test

# ======================
# Set Load Configuration
# ======================
# The following parameters are used to set load configuration for your test:
# Set 'testType' to the type of load test that you want to execute. Example:'Playwright', 'Selenium'. This is a required parameter.
testType: Selenium

# Set 'vus' to the maximum number of virtual users to simulate during the test.
vus: 1

# Set multiple regions from which you would want to generate the load (percent should total 100 across all loadzones).
regions:
- loadzone: us-east-1
percent: 100

# Set language to the programming language used in your project. Example: 'java', 'nodejs'.
language: java

# Set framework to the test framework used in your Selenium project.
framework: junit

# Add list of file paths under 'dependencies' to help set up the test environment by installing required packages. Example: path to 'pom.xml' for Java projects using Maven, path to 'package.json' for Node.js projects.
# Add list of file paths under 'testConfigs' to define which configuration files should be used to run tests. Example: path to 'playwright.config.ts' for Playwright (Node.js), path to 'testng.xml' for Selenium (TestNG).
files:
dependencies:
- ./pom.xml
testConfigs: []
60 changes: 60 additions & 0 deletions junit-4/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>selenium-junit4-example</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>

<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<selenium.version>4.15.0</selenium.version>
<junit4.version>4.13.2</junit4.version>
</properties>

<dependencies>
<!-- Selenium WebDriver -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>${selenium.version}</version>
</dependency>

<!-- JUnit 4 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit4.version}</version>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.1.2</version>
<configuration>
<!-- Default config works for JUnit 4; tests in src/test/java picked up automatically -->
<includes>
<include>**/*Test.java</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
</project>
114 changes: 114 additions & 0 deletions junit-4/src/test/java/com/example/SimpleTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
package com.example;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.RemoteWebDriver;

import java.net.URL;
import java.time.Duration;

import static org.junit.Assert.assertEquals;

public class SimpleTest {

private WebDriver driver;
private static final String HUB_URL = "http://localhost:4444/wd/hub";

@Before
public void setUp() throws Exception {
try {
System.out.println("Setting up Chrome options...");
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments(
"--headless",
"--no-first-run",
"--no-default-browser-check",
"--disable-extensions",
"--disable-default-apps",
"--disable-gpu",
"--disable-dev-shm-usage",
"--disable-software-rasterizer",
"--no-sandbox",
"--disable-background-timer-throttling",
"--disable-backgrounding-occluded-windows",
"--disable-renderer-backgrounding",
"--disable-features=TranslateUI",
"--disable-ipc-flooding-protection",
"--disable-web-security",
"--disable-features=VizDisplayCompositor",
"--disable-logging",
"--silent"
);

System.out.println("Connecting to Selenium Grid at: " + HUB_URL);
driver = new RemoteWebDriver(new URL(HUB_URL), chromeOptions);
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
driver.manage().window().maximize();
System.out.println("Successfully connected to Selenium Grid!");
} catch (Exception e) {
System.err.println("Error during setup: " + e.getMessage());
e.printStackTrace();
throw e;
}
}

@Test
public void testAddToCartBStackDemo() {
driver.get("https://bstackdemo.com/");

WebElement productNameElem = driver.findElement(By.cssSelector("#\\33 > p"));
String productToAdd = productNameElem.getText();

WebElement addToCartBtn = driver.findElement(By.cssSelector("#\\33 > .shelf-item__buy-btn"));
addToCartBtn.click();

WebElement productInCartElem = driver.findElement(By.cssSelector("#__next > div > div > div.float-cart.float-cart--open > div.float-cart__content > div.float-cart__shelf-container > div > div.shelf-item__details > p.title"));
String productInCart = productInCartElem.getText();

assertEquals(productToAdd, productInCart);
System.out.println("Test passed: Add to cart works!");
}

@Test
public void testCheckoutFlowBStackDemo() {
driver.get("https://bstackdemo.com/");

driver.findElement(By.id("signin")).click();
driver.findElement(By.cssSelector("#username svg")).click();
driver.findElement(By.id("react-select-2-option-0-0")).click();
driver.findElement(By.cssSelector("#password svg")).click();
driver.findElement(By.id("react-select-3-option-0-0")).click();
driver.findElement(By.id("login-btn")).click();

try { Thread.sleep(500); } catch (InterruptedException e) { Thread.currentThread().interrupt(); }

driver.findElement(By.cssSelector("#\\31 > .shelf-item__buy-btn")).click();
driver.findElement(By.cssSelector("div.float-cart__close-btn")).click();
driver.findElement(By.cssSelector("#\\32 > .shelf-item__buy-btn")).click();
driver.findElement(By.cssSelector(".buy-btn")).click();

driver.findElement(By.id("firstNameInput")).sendKeys("first");
driver.findElement(By.id("lastNameInput")).sendKeys("last");
driver.findElement(By.id("addressLine1Input")).sendKeys("address");
driver.findElement(By.id("provinceInput")).sendKeys("province");
driver.findElement(By.id("postCodeInput")).sendKeys("pincode");

driver.findElement(By.id("checkout-shipping-continue")).click();
String checkoutMessage = driver.findElement(By.id("confirmation-message")).getText();
assertEquals("Your Order has been successfully placed.", checkoutMessage);
System.out.println("Test passed: Checkout flow works!");
}

@After
public void tearDown() {
if (driver != null) {
driver.quit();
System.out.println("Browser closed");
}
}
}
54 changes: 54 additions & 0 deletions junit-5/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# browserstack-selenium-load-testing-sample

![BrowserStack Logo](https://d98b8t1nnulk5.cloudfront.net/production/images/layout/logo-header.png?1469004780)

## Getting Started

### Run Sample Build

1. **Clone the repository**

```sh
git clone https://github.com/browserstack/browserstack-selenium-load-testing-sample.git
cd browserstack-selenium-load-testing-sample
cd junit-5
```

2. **Install Maven dependencies**

```sh
mvn compile
```

3. **Install BrowserStack CLI**

Download the appropriate BrowserStack CLI binary based on your operating system:

- **macOS x86**
[browserstack-cli-macOS-x86](https://load-api.browserstack.com/api/v1/binary?os=macos&arch=x64)

- **macOS ARM**
[browserstack-cli-macOS-arm](https://load-api.browserstack.com/api/v1/binary?os=macos&arch=arm64)

- **Windows x86**
[browserstack-cli-windows](https://load-api.browserstack.com/api/v1/binary?os=win&arch=x64)

- **Linux x86**
[browserstack-cli-linux-x86](https://load-api.browserstack.com/api/v1/binary?os=linux&arch=arm64)

- **Linux ARM**
[browserstack-cli-linux-arm](https://load-api.browserstack.com/api/v1/binary?os=linux&arch=x64)

> Place the downloaded `browserstack-cli` binary in the root of your project.

4. **Run tests using BrowserStack CLI**

```sh
./browserstack-cli load run
```

5. **View Test Results**

Visit the [BrowserStack Load-Testing Dashboard](https://load.browserstack.com/projects) to monitor and analyze your test runs.

---
Loading