diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..6df026d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,6 @@
+target/
+log
+src/.DS_Store
+src/test/.DS_Store
+src/test/java/.DS_Store
+src/test/java/com/.DS_Store
diff --git a/README.md b/README.md
index 9103ada..f440653 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,53 @@
 # browserstack-selenium-load-testing-sample
-Sample repository for Selenium load-testing test 
+
+![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-playwright-load-testing-sample.git
+   cd testng-browserstack
+   ```
+
+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.
+
+---
\ No newline at end of file
diff --git a/browserstack-load.yml b/browserstack-load.yml
new file mode 100644
index 0000000..88ee9e9
--- /dev/null
+++ b/browserstack-load.yml
@@ -0,0 +1,45 @@
+# =============================
+# 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. Example: 'testng'.
+# framework: testng
+
+# 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: 
+   - ./src/test/resources/testng.xml
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..7d05ab3
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,61 @@
+<?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-testng-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>
+        <testng.version>7.8.0</testng.version>
+    </properties>
+
+    <dependencies>
+        <!-- Selenium WebDriver -->
+        <dependency>
+            <groupId>org.seleniumhq.selenium</groupId>
+            <artifactId>selenium-java</artifactId>
+            <version>${selenium.version}</version>
+        </dependency>
+
+        <!-- TestNG -->
+        <dependency>
+            <groupId>org.testng</groupId>
+            <artifactId>testng</artifactId>
+            <version>${testng.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.11.0</version>
+                <configuration>
+                    <source>11</source>
+                    <target>11</target>
+                </configuration>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <version>3.1.2</version>
+                <configuration>
+                    <suiteXmlFiles>
+                        <suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
+                    </suiteXmlFiles>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>
\ No newline at end of file
diff --git a/src/test/java/com/example/SimpleTest.java b/src/test/java/com/example/SimpleTest.java
new file mode 100644
index 0000000..3718721
--- /dev/null
+++ b/src/test/java/com/example/SimpleTest.java
@@ -0,0 +1,141 @@
+package com.example;
+
+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.DesiredCapabilities;
+import org.openqa.selenium.remote.RemoteWebDriver;
+import org.testng.Assert;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import java.net.URL;
+import java.time.Duration;
+
+public class SimpleTest {
+    
+    private WebDriver driver;
+    private static final String HUB_URL = "http://localhost:4444/wd/hub";
+    
+    @BeforeMethod
+    public void setUp() throws Exception {
+        try {
+            System.out.println("Setting up Chrome options...");
+            
+            // Try a simpler approach first - just basic capabilities
+            DesiredCapabilities caps = new DesiredCapabilities();
+            caps.setBrowserName("chrome");
+            
+            // Add Chrome options as a map
+            ChromeOptions chromeOptions = new ChromeOptions();
+            // Use timestamp for unique user data directory
+            String uniqueUserDataDir = "/tmp/chrome-user-data-" + System.currentTimeMillis();
+            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("Chrome options configured. User data dir: " + uniqueUserDataDir);
+            
+            // Merge the chrome options with capabilities
+            
+            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() {
+        // Visit BStackDemo
+        driver.get("https://bstackdemo.com/");
+
+        // Get name of product to add to cart (first product)
+        WebElement productNameElem = driver.findElement(By.cssSelector("#\\33  > p"));
+        String productToAdd = productNameElem.getText();
+
+        // Click on add to cart
+        WebElement addToCartBtn = driver.findElement(By.cssSelector("#\\33 > .shelf-item__buy-btn"));
+        addToCartBtn.click();
+
+        // Get name of item in cart
+        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();
+
+        // Check if product in cart is same as one added
+        Assert.assertEquals(productInCart, productToAdd);
+        System.out.println("Test passed: Add to cart works!");
+    }
+
+    @Test
+    public void testCheckoutFlowBStackDemo() {
+        // Visit BStackDemo
+        driver.get("https://bstackdemo.com/");
+
+        // Sign in
+        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();
+
+        // Wait for login
+        try { Thread.sleep(500); } catch (InterruptedException e) { Thread.currentThread().interrupt(); }
+
+        // Click on buy item
+        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();
+
+        // Add address details
+        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");
+
+        // Checkout
+        driver.findElement(By.id("checkout-shipping-continue")).click();
+        driver.findElement(By.xpath("//*[text()='Continue']")).click();
+        driver.findElement(By.xpath("//*[text()='Orders']")).click();
+
+        System.out.println("Test passed: Checkout flow works!");
+    }
+    
+    @AfterMethod
+    public void tearDown() {
+        if (driver != null) {
+            driver.quit();
+            System.out.println("Browser closed");
+        }
+    }
+}
diff --git a/src/test/resources/testng.xml b/src/test/resources/testng.xml
new file mode 100644
index 0000000..c70b42e
--- /dev/null
+++ b/src/test/resources/testng.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
+<suite name="Simple Selenium Test Suite">
+    <test name="Basic Tests">
+        <classes>
+            <class name="com.example.SimpleTest"/>
+        </classes>
+    </test>
+</suite>
