Available for opportunities

Kanu
Kennedy

QA Automation Engineer — building reliable software through comprehensive testing. Exploring backend development.

Test Automation Java + Playwright API Testing Bug Hunting Learning Backend
View My Work Get in Touch
Scroll

About Me

I'm Kanu Kennedy, a QA Engineer specializing in building robust, maintainable test frameworks that catch bugs before they reach production. My core strength is in Java-based test automation using Playwright and JUnit for both UI and API testing.

My journey started with a curiosity about why software breaks. That curiosity evolved into a methodology: test early, test often, automate everything possible. I build test suites that integrate seamlessly into CI/CD pipelines, giving teams the confidence to ship faster.

I'm also actively learning backend development — understanding how to build APIs has made me a better tester. I can think from both sides of the codebase, which helps me write more effective tests and catch issues earlier in the development cycle.

55+
Test Suites Written
8+
Projects Delivered
95%+
Bug Detection Rate
4+
Years Experience

Core QA Competencies

  • Test Automation Framework Development
  • Java + Playwright + JUnit
  • UI & API Test Automation
  • Manual & Exploratory Testing
  • REST API Testing (Postman)
  • Performance Testing (JMeter)
  • Bug Reporting & Root Cause Analysis
  • Test Data Management
  • Agile / Scrum Workflows
  • NoSQL Database Validation

Currently Learning

  • Backend Development (Spring Boot)
  • GraphQL API Testing Strategies
  • Security Testing (OWASP Top 10)
  • Docker & Container Testing
  • CI/CD Integration (GitHub Actions)

Why QA Matters

Quality Assurance is often seen as a bottleneck. In reality, it's the safety net that lets teams move faster with confidence. Here's why investing in QA is one of the highest-ROI decisions any engineering team can make.

🔍
Bugs Cost More Later

A bug found in development costs a fraction of what it costs in production. QA shifts defect discovery left — catching issues before they reach real users and real consequences.

30×
Cost to fix in prod vs dev
Speed Through Confidence

Automated regression suites give developers the confidence to ship fast. Without tests, every change is a gamble. With them, every deployment is a calculated, evidence-backed decision.

Faster release cycles with automation
🛡️
Protects Your Brand

A single production incident can erode months of user trust. QA is the discipline that ensures your product reflects your brand promise — every build, every release, every time.

88%
Of users abandon after poor experience
🧠
QA Improves Code Quality

Writing testable code forces better architecture. Test-driven practices lead to cleaner interfaces, better separation of concerns, and more maintainable codebases overall.

40%
Defect reduction with TDD
📊
Data-Driven Decisions

QA generates metrics — test coverage, defect density, mean time to failure. These are real engineering signals that inform roadmap prioritization and team allocation.

Insight from proper test reporting
🤝
Bridge Between Teams

QA engineers speak both business and engineering. We translate user requirements into test scenarios and translate defects into developer-friendly reproduction steps.

1
Team — Devs, QA & Stakeholders aligned

Skills & Tools

Core Stack

Test Automation

Java85%
Playwright (Java)88%
JUnit82%
Selenium (Basics)55%
Cypress (Basics)50%
Maven TestNG Page Object Model Data-Driven Testing

API & Database

Backend Testing

Postman / REST API90%
NoSQL / MongoDB75%
JSON Schema Validation70%
REST Assured65%
MongoDB Compass API Mocking Newman (CLI) JSON / XML

CI/CD & DevOps

Integration & Deployment

GitHub Actions80%
Git / Version Control85%
Docker (Learning)45%
Jenkins (Basics) JIRA Confluence Test Reports

Learning Path

Backend Development

Spring Boot (Learning)35%
REST API Design40%
Database Design50%
JPA / Hibernate CRUD Operations Authentication Microservices

Step-by-Step
Test Automation Guide

This is the exact framework I follow when building test automation from scratch for a new project using Java, Playwright, and JUnit. It's battle-tested, scalable, and CI/CD-ready.

01

Understand Requirements & Define Test Scope

Before writing a single line of code, I map the application's features, user flows, and business rules. I identify what's critical to test (happy paths, edge cases, failure modes) and what can be deferred. This step prevents over-engineering and under-coverage.

Confluence JIRA Test Plans Mind Maps
02

Set Up Java Project with Maven

I create a Maven project and add Playwright and JUnit dependencies. Maven handles all dependency management and makes the project easy to run on any machine or CI/CD pipeline. Project structure follows best practices with clear separation of tests, page objects, and utilities.

<!-- pom.xml - Core dependencies --> <dependencies> <dependency> <groupId>com.microsoft.playwright</groupId> <artifactId>playwright</artifactId> <version>1.43.0</version> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter</artifactId> <version>5.10.0</version> <scope>test</scope> </dependency> </dependencies>
Maven JDK 11+ IntelliJ IDEA
03

Implement Page Object Model (POM)

I follow the Page Object Model pattern to separate test logic from UI selectors. Each page gets its own class with methods representing user actions. This makes tests readable, maintainable, and resilient to UI changes — update one locator, fix all tests.

// LoginPage.java - Page Object example public class LoginPage { private final Page page; private final Locator emailInput; private final Locator passwordInput; private final Locator submitButton; public LoginPage(Page page) { this.page = page; this.emailInput = page.locator("#email"); this.passwordInput = page.locator("#password"); this.submitButton = page.locator("button[type='submit']"); } public void login(String email, String password) { emailInput.fill(email); passwordInput.fill(password); submitButton.click(); } }
Page Object Model Locator Strategies Reusable Components
04

Write JUnit Test Cases

I write tests using JUnit 5's clean syntax with @Test annotations. Each test is independent, follows the AAA pattern (Arrange, Act, Assert), and has a clear, descriptive name. I use @BeforeEach and @AfterEach for setup/teardown to keep tests isolated.

// LoginTest.java - JUnit test example public class LoginTest { private Playwright playwright; private Browser browser; private Page page; @BeforeEach void setUp() { playwright = Playwright.create(); browser = playwright.chromium().launch(); page = browser.newPage(); } @Test void userCanLoginSuccessfully() { // Arrange LoginPage loginPage = new LoginPage(page); page.navigate("https://app.example.com/"); // Act loginPage.login("user@example.com", "password"); // Assert assertEquals("https://app.example.com/dashboard", page.url()); } @AfterEach void tearDown() { browser.close(); playwright.close(); } }
JUnit 5 Assertions Test Lifecycle
05

Add API Testing with REST Assured

For API testing, I use REST Assured alongside Playwright. This lets me validate backend responses, test API contracts, and verify data integrity. I can combine UI and API tests to cover end-to-end workflows comprehensively.

// API test example with REST Assured @Test void getUserReturnsValidResponse() { Response response = given() .header("Authorization", "Bearer token") .when() .get("https://api.example.com/users/1") .then() .statusCode(200) .extract().response(); assertEquals("John Doe", response.jsonPath().getString("name")); }
REST Assured Postman JSON Validation
06

Integrate with CI/CD Pipeline

Tests only matter if they run automatically. I configure GitHub Actions to trigger the full test suite on every pull request and every merge to main. Maven handles the build and test execution. Failed tests block deployment — quality is non-negotiable.

# .github/workflows/tests.yml name: Run Automated Tests on: [push, pull_request] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up JDK 11 uses: actions/setup-java@v3 with: java-version: '11' - name: Install Playwright browsers run: mvn exec:java -D exec.mainClass=com.microsoft.playwright.CLI - name: Run tests run: mvn clean test - name: Upload test report uses: actions/upload-artifact@v3 with: name: test-results path: target/surefire-reports
GitHub Actions Maven Surefire Test Reports

Projects

UI & API Test Automation

PayEdge | Supply Chain Finance

Led comprehensive QA efforts for a supply chain finance platform handling high-volume invoice processing and payments. Validated complex financial workflows, data accuracy, and compliance requirements in transaction-heavy interfaces. Automated critical regression scenarios with Playwright and Java, improving deployment confidence and accelerating release velocity by 35%.

Java Playwright JUnit Maven GitHub Actions
002

UAT Testing

E-commerce Platform

Executed end-to-end tests for customer-facing flows including product search, cart management, checkout, and payment processing. Built automated test suites covering user registration, order fulfillment, and inventory management workflows. Validated merchant-side tools for storefront customization and order tracking. Implemented data-driven tests with CSV fixtures to verify personalization logic across multiple user personas.

Java REST Assured JUnit Postman JSON Schema
003

API Testing

Introspec & Reconciliation – Banking Ops Automation

Executed end-to-end testing for a reconciliation tool integrating with core banking systems. Uncovered 60+ critical edge case defects during UAT through exploratory testing and boundary value analysis, leading to a 40% drop in production issues. Validated backend logic across 35+ API endpoints using Postman, focusing on data transformation accuracy and exception handling.

Java Playwright JUnit CSV Test Data
004

UI and API Testing

Fintech - Digital Banking Platform

Conducted comprehensive testing for digital banking and payment products with emphasis on security, data integrity, and user trust. Validated secure transaction flows, authentication mechanisms (OAuth, JWT), and encryption standards. Performed API contract testing using REST Assured to ensure backend reliability. Identified critical security vulnerabilities during penetration testing phase, contributing to SOC 2 compliance readiness.

Java JUnit MongoDB NoSQL

Get in Touch

I'm currently open to new opportunities — whether that's a full-time QA role, contract work, or a collaborative project. If you value quality, automation, and thoroughness, let's build something reliable together.

Email kanukennedy20@gmail.com
📍
Location Open to Remote / Hybrid Roles
Response Time Within 24 hours