diff --git a/.github/workflows/maven-workflow-run.yml b/.github/workflows/maven-workflow-run.yml
deleted file mode 100644
index e93bb3f..0000000
--- a/.github/workflows/maven-workflow-run.yml
+++ /dev/null
@@ -1,91 +0,0 @@
-# This job is to test different maven profiles in sdk branch again Pull Request raised
-# This workflow targets Java with Maven execution
-
-name: Java SDK Test workflow for Maven on workflow_dispatch
-
-on:
-  workflow_dispatch:
-    inputs:
-      pull_request_number:
-        description: 'The pull request number to build'
-        required: true
-
-jobs:
-  comment-run:
-    runs-on: ${{ matrix.os }}
-    strategy:
-      fail-fast: false
-      max-parallel: 3
-      matrix:
-        java: [ '8', '11', '17' ]
-        os: [ 'macos-latest', 'windows-latest', 'ubuntu-latest' ]
-    name: Cucumber Repo ${{ matrix.Java }} - ${{ matrix.os }} Sample
-    env:
-      BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }}
-      BROWSERSTACK_ACCESS_KEY: ${{ secrets.BROWSERSTACK_ACCESS_KEY }}
-
-    steps:
-      - uses: actions/checkout@v3
-        with:
-          ref: refs/pull/${{ github.event.inputs.pull_request_number }}/head
-      - name: Fetch Commit SHA
-        run: |
-          git log -1 --format='%H'
-          echo "commit_sha=$(git log -1 --format='%H')" >> $GITHUB_ENV
-          echo "commit_sha=$(git log -1 --format='%H')" >> $env:GITHUB_ENV
-      - uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975
-        id: status-check-in-progress
-        env:
-          job_name: Cucumber Repo ${{ matrix.Java }} - ${{ matrix.os }} Sample
-        with:
-          github-token: ${{ github.token }}
-          script: |
-            const result = await github.rest.checks.create({
-              owner: context.repo.owner,
-              repo: context.repo.repo,
-              name: process.env.job_name,
-              head_sha: process.env.commit_sha,
-              status: 'in_progress'
-            }).catch((err) => ({status: err.status, response: err.response}));
-            console.log(`The status-check response : ${result.status} Response : ${JSON.stringify(result.response)}`)
-            if (result.status !== 201) {
-              console.log('Failed to create check run')
-            }
-      - name: Set up Java
-        uses: actions/setup-java@v3
-        with:
-          distribution: 'temurin'
-          java-version: ${{ matrix.java }}
-      - name: Run mvn test
-        run: |
-          mvn compile
-          mvn test
-      - name: Run mvn profile sample-local-test
-        run: |
-          mvn compile
-          mvn test -P sample-local-test
-      - name: Run mvn profile sample-test
-        run: |
-          mvn compile
-          mvn test -P sample-test
-      - if: always()
-        uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975
-        id: status-check-completed
-        env:
-          conclusion: ${{ job.status }}
-          job_name: Cucumber Repo ${{ matrix.Java }} - ${{ matrix.os }} Sample
-        with:
-          github-token: ${{ github.token }}
-          script: |
-            const result = await github.rest.checks.create({
-            owner: context.repo.owner,
-            repo: context.repo.repo,
-            name: process.env.job_name,
-            head_sha: process.env.commit_sha,
-            status: 'completed',
-            conclusion: process.env.conclusion
-            }).catch((err) => ({status: err.status, response: err.response}));
-            console.log(`The status-check response : ${result.status} Response : ${JSON.stringify(result.response)}`)
-            if (result.status !== 201) {
-              console.log('Failed to create check run')
-            }
diff --git a/README.md b/README.md
index 86c6a84..c89c502 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# Cucumber Java Browserstack 
+# Cucumber-Junit4 Java Browserstack 
 ![BrowserStack Logo](https://d98b8t1nnulk5.cloudfront.net/production/images/layout/logo-header.png?1469004780)
 
 [Cucumber JVM](https://cucumber.io/docs/reference/jvm) Integration with BrowserStack.
@@ -12,7 +12,6 @@
 - Install dependencies `mvn compile`
 - To run the test suite having cross-platform with parallelization, run `mvn test -P sample-test`
 - To run local tests, run `mvn test -P sample-local-test`
-- To view Allure Reports, run `allure serve target/allure-results`
 
 Understand how many parallel sessions you need by using our [Parallel Test Calculator](https://www.browserstack.com/automate/parallel-calculator?ref=github)
 
@@ -46,10 +45,14 @@ Understand how many parallel sessions you need by using our [Parallel Test Calcu
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <version>3.0.0-M5</version>
+                <dependencies>
+                    <dependency>
+                        <groupId>org.apache.maven.surefire</groupId>
+                        <artifactId>surefire-junit47</artifactId>
+                        <version>3.0.0-M5</version>
+                    </dependency>
+                </dependencies>
                 <configuration>
-                    <suiteXmlFiles>
-                        <suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
-                    </suiteXmlFiles>
                     <argLine>
                         -javaagent:${com.browserstack:browserstack-java-sdk:jar}
                     </argLine>
@@ -57,43 +60,5 @@ Understand how many parallel sessions you need by using our [Parallel Test Calcu
             </plugin>
 ```
 
-### Migrate from Vanilla Cucumber to use Testng Runner 
-* If you are using Vanilla Cucumber CLI, you can migrate to use TestNG Runner with BrowserStack using the below command :
-```
-mvn archetype:generate -DarchetypeGroupId=com.browserstack -DarchetypeArtifactId=cucumber-testng-archetype -DarchetypeVersion=1.0 -DgroupId=com.browserstack -DartifactId=cucumber-testng-archetype -Dversion=1.0 -DinteractiveMode=false
-```
-* Run your tests using `mvn test`
-* To use specific `@CucumberOptions` in generated class `BrowserStackCucumberTestNgRunner`, refer - https://javadoc.io/static/io.cucumber/cucumber-testng/5.0.0-RC2/io/cucumber/testng/CucumberOptions.html
-
-## Using Gradle
-
-### Run sample build
-
-- Clone the repository
-- Install dependencies `gradle build`
-- To run the test suite having cross-platform with parallelization, run `gradle sampleTest`
-- To run local tests, run `gradle sampleLocalTest`
-
-Understand how many parallel sessions you need by using our [Parallel Test Calculator](https://www.browserstack.com/automate/parallel-calculator?ref=github)
-
-### Integrate your test suite
-
-* Install dependencies `gradle build`
-* Following are the changes required in `gradle.build` -
-    * Add `compileOnly 'com.browserstack:browserstack-java-sdk:latest.release'` in dependencies
-    * Fetch Artifact Information and add `jvmArgs` property in tasks *SampleTest* and *SampleLocalTest* :
-  ```
-  def browserstackSDKArtifact = configurations.compileClasspath.resolvedConfiguration.resolvedArtifacts.find { it.name == 'browserstack-java-sdk' }
-  
-  task sampleTest(type: Test) {
-    useTestNG() {
-      dependsOn cleanTest
-      useDefaultListeners = true
-      suites "config/sample-test.testng.xml"
-      jvmArgs "-javaagent:${browserstackSDKArtifact.file}"
-    }
-  }
-  ```
-
 ## Notes
 * You can view your test results on the [BrowserStack Automate dashboard](https://www.browserstack.com/automate)
diff --git a/browserstack.yml b/browserstack.yml
index 99bde03..ab4b4ae 100644
--- a/browserstack.yml
+++ b/browserstack.yml
@@ -22,7 +22,7 @@ buildName: browserstack build
 buildIdentifier: '#${BUILD_NUMBER}' # Supports strings along with either/both ${expression}
 # Set `framework` of your test suite. Example, `testng`, `cucumber`, `cucumber-testng`
 # This property is needed to send test context to BrowserStack (test name, status)
-framework: cucumber-testng
+framework: cucumber-junit4
 
 # =======================================
 # Platforms (Browsers / Devices to test)
diff --git a/build.gradle b/build.gradle
deleted file mode 100644
index 31d6830..0000000
--- a/build.gradle
+++ /dev/null
@@ -1,57 +0,0 @@
-plugins {
-    id 'java'
-}
-
-repositories {
-    mavenCentral()
-}
-
-dependencies {
-    implementation 'org.seleniumhq.selenium:selenium-java:4.1.4'
-    testImplementation 'io.cucumber:cucumber-java:7.3.4'
-    testImplementation 'io.cucumber:cucumber-testng:7.3.4'
-    testImplementation 'io.cucumber:cucumber-core:7.3.4'
-    compileOnly 'com.browserstack:browserstack-java-sdk:latest.release'
-}
-
-group = 'com.browserstack'
-version = '1.0-SNAPSHOT'
-description = 'cucumber-java-browserstack'
-sourceCompatibility = '1.8'
-targetCompatibility = '1.8'
-
-def browserstackSDKArtifact = configurations.compileClasspath.resolvedConfiguration.resolvedArtifacts.find { it.name == 'browserstack-java-sdk' }
-
-tasks.withType(JavaCompile) {
-    options.encoding = 'UTF-8'
-}
-
-tasks.withType(Test) {
-    systemProperties = System.properties
-}
-
-task sampleTest(type: Test) {
-    systemProperty "cucumber.publish.quiet", "true"
-    systemProperty "cucumber.features", "src/test/resources/features/test"
-    systemProperties System.getProperties()
-    useTestNG() {
-        dependsOn clean
-        useDefaultListeners = true
-        suites "src/test/resources/testng.xml"
-        jvmArgs "-javaagent:${browserstackSDKArtifact.file}"
-    }
-    scanForTestClasses = false
-}
-
-task sampleLocalTest(type: Test) {
-    systemProperty "cucumber.publish.quiet", "true"
-    systemProperty "cucumber.features", "src/test/resources/features/localtest"
-    systemProperties System.getProperties()
-    useTestNG() {
-        dependsOn clean
-        useDefaultListeners = true
-        suites "src/test/resources/testng.xml"
-        jvmArgs "-javaagent:${browserstackSDKArtifact.file}"
-    }
-    scanForTestClasses = false
-}
diff --git a/pom.xml b/pom.xml
index fdb9d51..98f9846 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,20 +14,21 @@
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <maven.compiler.source>1.8</maven.compiler.source>
         <maven.compiler.target>1.8</maven.compiler.target>
-        <cucumber.version>7.4.1</cucumber.version>
+        <cucumber.version>7.8.1</cucumber.version>
         <testng.version>7.4.0</testng.version>
         <selenium-java.version>4.1.4</selenium-java.version>
         <browserstack-local-java.version>1.0.6</browserstack-local-java.version>
         <json-simple.version>1.1.1</json-simple.version>
         <browserstack-java-sdk.version>LATEST</browserstack-java-sdk.version>
+        <allure.cucumber5.version>2.20.0</allure.cucumber5.version>
+        <aspectj.version>1.8.0</aspectj.version>
     </properties>
 
     <dependencies>
         <dependency>
-            <groupId>org.testng</groupId>
-            <artifactId>testng</artifactId>
-            <version>${testng.version}</version>
-            <scope>test</scope>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.13.2</version>
         </dependency>
         <dependency>
             <groupId>io.cucumber</groupId>
@@ -37,7 +38,7 @@
         </dependency>
         <dependency>
             <groupId>io.cucumber</groupId>
-            <artifactId>cucumber-testng</artifactId>
+            <artifactId>cucumber-junit</artifactId>
             <version>${cucumber.version}</version>
             <scope>test</scope>
         </dependency>
@@ -53,12 +54,6 @@
             <version>${browserstack-java-sdk.version}</version>
             <scope>compile</scope>
         </dependency>
-        <dependency>
-            <groupId>io.qameta.allure</groupId>
-            <artifactId>allure-testng</artifactId>
-            <version>2.18.1</version>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
 
     <build>
@@ -87,10 +82,14 @@
                 <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-surefire-plugin</artifactId>
                     <version>3.0.0-M5</version>
+                    <dependencies>
+                        <dependency>
+                            <groupId>org.apache.maven.surefire</groupId>
+                            <artifactId>surefire-junit47</artifactId>
+                            <version>3.0.0-M5</version>
+                        </dependency>
+                    </dependencies>
                     <configuration>
-                        <suiteXmlFiles>
-                            <suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
-                        </suiteXmlFiles>
                         <argLine>
                             -javaagent:${com.browserstack:browserstack-java-sdk:jar}
                         </argLine>
@@ -111,9 +110,6 @@
                         <artifactId>maven-surefire-plugin</artifactId>
                         <version>3.0.0-M5</version>
                         <configuration>
-                            <suiteXmlFiles>
-                                <suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
-                            </suiteXmlFiles>
                             <argLine>
                                 -javaagent:${com.browserstack:browserstack-java-sdk:jar}
                             </argLine>
@@ -135,9 +131,6 @@
                         <artifactId>maven-surefire-plugin</artifactId>
                         <version>3.0.0-M5</version>
                         <configuration>
-                            <suiteXmlFiles>
-                                <suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
-                            </suiteXmlFiles>
                             <argLine>
                                 -javaagent:${com.browserstack:browserstack-java-sdk:jar}
                             </argLine>
diff --git a/src/test/java/com/browserstack/RunWebDriverCucumberTests.java b/src/test/java/com/browserstack/RunWebDriverCucumberTests.java
index 3be242f..1f0fb13 100644
--- a/src/test/java/com/browserstack/RunWebDriverCucumberTests.java
+++ b/src/test/java/com/browserstack/RunWebDriverCucumberTests.java
@@ -1,15 +1,19 @@
 package com.browserstack;
 
-import io.cucumber.testng.*;
+import io.cucumber.junit.Cucumber;
+import io.cucumber.junit.CucumberOptions;
+import org.junit.runner.RunWith;
 
 @CucumberOptions(
         glue = "com.browserstack.stepdefs",
         features = "src/test/resources/features/test",
         plugin = {
                 "pretty",
-                "html:reports/tests/cucumber/cucumber-pretty.html",
-                "testng:reports/tests/cucumber/testng/cucumber.xml",
+                "junit:reports/tests/cucumber/junit/cucumber.xml",
                 "json:reports/tests/cucumber/json/cucumberTestReport.json"
         }
 )
-public class RunWebDriverCucumberTests extends AbstractTestNGCucumberTests {}
+
+@RunWith(Cucumber.class)
+public class RunWebDriverCucumberTests {
+}
diff --git a/src/test/java/com/browserstack/stepdefs/StackDemoSteps.java b/src/test/java/com/browserstack/stepdefs/StackDemoSteps.java
index 42f2f4c..5ef5537 100644
--- a/src/test/java/com/browserstack/stepdefs/StackDemoSteps.java
+++ b/src/test/java/com/browserstack/stepdefs/StackDemoSteps.java
@@ -7,28 +7,42 @@
 import io.cucumber.java.en.Given;
 import io.cucumber.java.en.Then;
 import io.cucumber.java.en.When;
+import org.junit.Assert;
 import org.openqa.selenium.MutableCapabilities;
 import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.remote.RemoteWebDriver;
+import org.yaml.snakeyaml.Yaml;
 
 import java.net.MalformedURLException;
 import java.net.URL;
-import java.util.HashMap;
-
-import org.testng.Assert;
+import java.io.File;
+import java.io.InputStream;
+import java.nio.file.Files;
+import java.util.*;
 
 public class StackDemoSteps {
     private WebDriver driver;
     private HomePage homePage;
 
+    public static String userName, accessKey;
+    public static Map<String, Object> browserStackYamlMap;
+    public static final String USER_DIR = "user.dir";
+
+    public StackDemoSteps() {
+        File file = new File(getUserDir() + "/browserstack.yml");
+        this.browserStackYamlMap = convertYamlFileToMap(file, new HashMap<>());
+    }
+
     @Before
     public void setUp() throws MalformedURLException {
         MutableCapabilities capabilities = new MutableCapabilities();
         HashMap<String, String> bstackOptions = new HashMap<>();
-        bstackOptions.putIfAbsent("source", "cucumber-java:sample-master:v1.2");
+        userName = System.getenv("BROWSERSTACK_USERNAME") != null ? System.getenv("BROWSERSTACK_USERNAME") : (String) browserStackYamlMap.get("userName");
+        accessKey = System.getenv("BROWSERSTACK_ACCESS_KEY") != null ? System.getenv("BROWSERSTACK_ACCESS_KEY") : (String) browserStackYamlMap.get("accessKey");
+        bstackOptions.putIfAbsent("source", "cucumber-java:sample-cucumber-junit4:v1.0");
         capabilities.setCapability("bstack:options", bstackOptions);
         driver = new RemoteWebDriver(
-                new URL("https://hub.browserstack.com/wd/hub"), capabilities);
+                new URL(String.format("https://%s:%s@hub.browserstack.com/wd/hub", userName , accessKey)), capabilities);
         homePage = new HomePage(driver);
     }
 
@@ -61,4 +75,20 @@ public void teardown(Scenario scenario) throws Exception {
         Thread.sleep(2000);
         driver.quit();
     }
+
+    private String getUserDir() {
+        return System.getProperty(USER_DIR);
+    }
+
+    private Map<String, Object> convertYamlFileToMap(File yamlFile, Map<String, Object> map) {
+        try {
+            InputStream inputStream = Files.newInputStream(yamlFile.toPath());
+            Yaml yaml = new Yaml();
+            Map<String, Object> config = yaml.load(inputStream);
+            map.putAll(config);
+        } catch (Exception e) {
+            throw new RuntimeException(String.format("Malformed browserstack.yml file - %s.", e));
+        }
+        return map;
+    }
 }
diff --git a/src/test/resources/allure.properties b/src/test/resources/allure.properties
deleted file mode 100644
index 80b02dd..0000000
--- a/src/test/resources/allure.properties
+++ /dev/null
@@ -1 +0,0 @@
-allure.results.directory=target/allure-results
diff --git a/src/test/resources/features/localtest/Local.feature b/src/test/resources/features/localtest/Local.feature
index bf5edbf..ee12509 100644
--- a/src/test/resources/features/localtest/Local.feature
+++ b/src/test/resources/features/localtest/Local.feature
@@ -1,5 +1,5 @@
 Feature: Verify Local test
 
-  Scenario: Navigate to Local App page
+  Scenario: BStack Local Test - Navigate to Local App page
     Given I am on the website 'http://bs-local.com:45454/'
     Then the page title should contain 'BrowserStack Local'
diff --git a/src/test/resources/features/test/StackDemo.feature b/src/test/resources/features/test/StackDemo.feature
index 9e3a2e5..f0df316 100644
--- a/src/test/resources/features/test/StackDemo.feature
+++ b/src/test/resources/features/test/StackDemo.feature
@@ -1,6 +1,6 @@
 Feature: BrowserStack Demo
 
-  Scenario: Add product to cart
+  Scenario: BStack Sample Test - Add product to cart
     Given I am on the website 'https://www.bstackdemo.com'
     When I select a product and click on 'Add to cart' button
     Then the product should be added to cart
diff --git a/src/test/resources/testng.xml b/src/test/resources/testng.xml
deleted file mode 100644
index 28c168b..0000000
--- a/src/test/resources/testng.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
-<suite name="BDD Test Suite" verbose="1">
-    <test name="Cucumber Tests">
-        <classes>
-            <class name="com.browserstack.RunWebDriverCucumberTests" />
-        </classes>
-    </test>
-</suite>
