Hari Prasad
SDET Experts Pvt Ltd
LEAD SDET
|
AUTOMATION TEST LEAD
|
TEST ARCHITECT
|
JAVA
|
JAVASCRIPT
|
TYPESCRIPT
|
PLAYWRIGHT
|
KATALON STUDIO
|
CYPRESS
|
SELENIUM
|
AZURE CLOUD
|
FLUTTER

TEST
AUTOMATION
ARCHITECT

SDET Experts Pvt Ltd | Engineering Quality at Scale

Independent Test Automation Consultant providing specialized expertise through SDET Experts Pvt Ltd. Delivering robust, scalable test automation frameworks that accelerate delivery cycles while maintaining exceptional quality standards. Expert in creating intelligent testing solutions that integrate seamlessly into modern CI/CD pipelines for enterprises worldwide.

10,000+
Tests Automated
85%
Faster Releases
99.7%
Test Reliability
24/7
Continuous Testing
01

Core Expertise

🤖

Framework Architecture

Designing and implementing scalable test automation frameworks from scratch using industry best practices, design patterns, and modular architecture for maximum maintainability.

Selenium Playwright Cypress TestNG JUnit

CI/CD Integration

Seamless integration of automated tests into continuous integration and deployment pipelines, enabling shift-left testing and rapid feedback loops.

Jenkins GitHub Actions GitLab CI Azure DevOps
🔍

API Testing

Comprehensive API test automation with contract testing, performance validation, and security testing to ensure backend reliability and integrity.

RestAssured Postman Pact JMeter
📊

Performance Testing

Load, stress, and scalability testing to identify bottlenecks and ensure applications perform optimally under varying conditions and peak loads.

K6 Gatling Locust Artillery
📱

Mobile Testing

Native and cross-platform mobile app testing automation for iOS and Android, covering functional, UI, and integration testing scenarios.

Appium Detox Espresso XCUITest
🔐

Security Testing

Automated security testing integration including SAST, DAST, and dependency scanning to identify vulnerabilities early in the development lifecycle.

OWASP ZAP Snyk SonarQube Burp Suite
02

Technical Proficiency

Test Automation & Frameworks EXPERT
CI/CD & DevOps Pipeline Integration EXPERT
Programming (Java, Python, JavaScript, TypeScript) ADVANCED
Cloud Platforms & Containerization ADVANCED
03

Certifications

🏆

Katalon Practitioner Level Certification

Certified by Katalon for demonstrating proficiency in test automation using Katalon Studio, including web, API, and mobile testing automation best practices.

Katalon Studio Web Testing API Testing Mobile Testing
🎯

Playwright Automation Test Framework Certification

Certified in modern web automation using Playwright framework, covering advanced testing techniques, cross-browser testing, and end-to-end test automation strategies.

Playwright TypeScript Cross-Browser E2E Testing
04

Impact Highlights

E-Commerce Platform Test Automation

Client Engagement - Enterprise Retail Solution

↓ 70% Testing Time
Q3 2024 - Q4 2024

Provided consultancy through SDET Experts Pvt Ltd to architect and implement comprehensive test automation framework covering 5,000+ test cases across web, mobile, and API layers. Integrated with Jenkins for continuous testing, achieving 95% test coverage and reducing manual testing effort by 70%. Implemented parallel execution reducing suite runtime from 8 hours to 45 minutes.

Selenium WebDriver Appium RestAssured Jenkins Docker

Microservices API Testing Framework

Client Engagement - Financial Services Platform

99.5% Reliability
Q1 2024 - Q2 2024

Engaged by financial services client through SDET Experts Pvt Ltd to design contract-based testing framework for 50+ microservices using Pact and RestAssured. Implemented automated API testing in CI/CD pipeline with comprehensive assertion libraries and data-driven testing capabilities. Achieved 99.5% test reliability with zero false positives.

Pact RestAssured GitHub Actions Kubernetes

Performance Testing Infrastructure

Client Engagement - SaaS Application Platform

10K+ Concurrent Users
Q4 2023 - Q1 2024

Consulted for SaaS client via SDET Experts Pvt Ltd to build scalable performance testing framework using K6 and Grafana for real-time monitoring. Conducted load, stress, and spike testing simulating 10,000+ concurrent users. Identified and resolved critical performance bottlenecks, improving response times by 60%.

K6 Grafana InfluxDB AWS
05

Code Snippets & Projects

GitHub Portfolio

Open Source Contributions & Test Automation Frameworks

🚀 Active

Explore my collection of test automation frameworks, reusable code snippets, and open-source contributions. Featuring production-ready automation solutions using Playwright, Selenium, Cypress, and Katalon Studio. Each repository includes comprehensive documentation, best practices, and real-world implementation examples.

Playwright Selenium Cypress Katalon TypeScript Java
VIEW GITHUB PROFILE
05

Live Code Snippets

login.spec.ts TypeScript • Playwright
import { test, expect } from '@playwright/test';

test.describe('User Authentication', () => {
  test('should login successfully with valid credentials', async ({ page }) => {
    // Navigate to login page
    await page.goto('https://example.com/login');
    
    // Fill login form
    await page.fill('[data-test="username"]', '[email protected]');
    await page.fill('[data-test="password"]', 'SecurePass123!');
    
    // Click login button
    await page.click('[data-test="login-button"]');
    
    // Verify successful login
    await expect(page).toHaveURL(/.*dashboard/);
    await expect(page.locator('[data-test="user-menu"]')).toBeVisible();
    
    // Verify user greeting
    const greeting = await page.locator('.user-greeting').textContent();
    expect(greeting).toContain('Welcome');
  });

  test('should show error with invalid credentials', async ({ page }) => {
    await page.goto('https://example.com/login');
    
    await page.fill('[data-test="username"]', '[email protected]');
    await page.fill('[data-test="password"]', 'wrongpassword');
    await page.click('[data-test="login-button"]');
    
    // Verify error message
    const errorMsg = page.locator('[data-test="error-message"]');
    await expect(errorMsg).toBeVisible();
    await expect(errorMsg).toHaveText('Invalid credentials');
  });
});
LoginTest.java Java • Selenium WebDriver
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.By;
import org.testng.annotations.*;
import org.testng.Assert;

public class LoginTest {
    private WebDriver driver;
    
    @BeforeMethod
    public void setup() {
        driver = new ChromeDriver();
        driver.manage().window().maximize();
    }
    
    @Test
    public void testSuccessfulLogin() {
        driver.get("https://example.com/login");
        
        driver.findElement(By.id("username"))
              .sendKeys("[email protected]");
        driver.findElement(By.id("password"))
              .sendKeys("SecurePass123!");
        driver.findElement(By.cssSelector("button[type='submit']"))
              .click();
        
        // Wait and verify redirect
        String currentUrl = driver.getCurrentUrl();
        Assert.assertTrue(currentUrl.contains("dashboard"),
            "Should redirect to dashboard");
        
        // Verify user menu is displayed
        boolean isUserMenuPresent = driver
            .findElement(By.className("user-menu"))
            .isDisplayed();
        Assert.assertTrue(isUserMenuPresent,
            "User menu should be visible");
    }
    
    @AfterMethod
    public void teardown() {
        if (driver != null) {
            driver.quit();
        }
    }
}
login.cy.js JavaScript • Cypress
describe('User Login Flow', () => {
  beforeEach(() => {
    cy.visit('/login');
  });

  it('should login with valid credentials', () => {
    cy.get('[data-cy=email-input]')
      .type('[email protected]');
    cy.get('[data-cy=password-input]')
      .type('SecurePass123!');
    cy.get('[data-cy=login-button]')
      .click();

    // Verify successful login
    cy.url().should('include', '/dashboard');
    cy.get('[data-cy=user-avatar]')
      .should('be.visible');
    cy.get('.welcome-message')
      .should('contain', 'Welcome back');
  });

  it('should handle invalid credentials', () => {
    cy.get('[data-cy=email-input]')
      .type('[email protected]');
    cy.get('[data-cy=password-input]')
      .type('wrongpassword');
    cy.get('[data-cy=login-button]')
      .click();

    // Verify error handling
    cy.get('.error-alert')
      .should('be.visible')
      .and('contain', 'Invalid email or password');
    cy.url().should('include', '/login');
  });

  it('should validate required fields', () => {
    cy.get('[data-cy=login-button]')
      .click();

    cy.get('#email-error')
      .should('contain', 'Email is required');
    cy.get('#password-error')
      .should('contain', 'Password is required');
  });
});
ApiTests.java Java • REST Assured
import io.restassured.RestAssured;
import io.restassured.response.Response;
import org.testng.annotations.Test;
import static io.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;

public class ApiTests {
    
    @Test
    public void testGetUserById() {
        given()
            .baseUri("https://api.example.com")
            .header("Authorization", "Bearer " + getToken())
            .pathParam("userId", 123)
        .when()
            .get("/users/{userId}")
        .then()
            .statusCode(200)
            .body("id", equalTo(123))
            .body("email", notNullValue())
            .body("status", equalTo("active"));
    }
    
    @Test
    public void testCreateUser() {
        String requestBody = """
            {
                "name": "John Doe",
                "email": "[email protected]",
                "role": "user"
            }
            """;
        
        Response response = given()
            .baseUri("https://api.example.com")
            .header("Content-Type", "application/json")
            .body(requestBody)
        .when()
            .post("/users")
        .then()
            .statusCode(201)
            .body("name", equalTo("John Doe"))
            .body("id", notNullValue())
            .extract().response();
        
        int userId = response.path("id");
        System.out.println("Created user ID: " + userId);
    }
    
    private String getToken() {
        return "your-auth-token-here";
    }
}
VIEW ALL REPOSITORIES ON GITHUB

Ready to Transform Your Testing Strategy?

Let's discuss how SDET Experts Pvt Ltd can elevate your quality automation

DOWNLOAD MY CV

Last updated: February 09, 2026

VISIT MY LINKEDIN PROFILE