Home / Blog / How to Transition from Manual Tester to Automation Engineer

Career

How to Transition from Manual Tester to Automation Engineer

QA Knowledge Hub·2026-04-03·10 min read

You have been doing manual testing for a year or two. You understand the application, you write good test cases, and you find real bugs. But automation engineers earn more, work on more interesting problems, and have better long-term career prospects.

So how do you make the switch?

This is not a vague motivational guide. It is the exact path, with honest assessments of what is hard, what takes time, and what you can skip.

The Honest Reality First

Most guides skip this part. Here is what you actually need to know:

It takes 6–18 months to make a credible transition, depending on how much time you can invest per day.

You will write bad code first. Everyone does. The goal is not perfect code — it is working automation that a team can maintain. That standard is achievable within a year.

Your manual testing background is an advantage, not a liability. Automation engineers who never did manual testing often build tests that pass when the feature is broken, because they do not understand how the feature is actually supposed to work. You do.

You do not need a CS degree. You need to write Python or Java at a working level, understand one automation framework, and be able to debug test failures. That is learnable by anyone who is genuinely motivated.

Step 1: Choose a Language (and Commit)

The two practical choices are Python and Java.

Python

  • Simpler syntax, faster to learn
  • Used with Pytest, Playwright, Selenium, Robot Framework
  • Growing rapidly in QA automation
  • Best choice if you have zero programming background

Java

  • More verbose but widely used in enterprise
  • Used with Selenium + TestNG, REST Assured, Cucumber
  • Required at many large corporations (banks, telecoms, large IT services)
  • Best choice if your company or target companies use Java

Pick one and do not switch for at least 6 months. The mistake beginners make is trying both simultaneously, becoming average at both.

What to learn first (Python example)

# Week 1-2: Variables, data types, conditionals
name = "QA Engineer"
experience_years = 2
is_automation = False

if experience_years >= 2:
    print(f"{name} is ready to learn automation")

# Week 3-4: Lists, dictionaries, loops
test_cases = ["login", "checkout", "search", "profile_update"]
for tc in test_cases:
    print(f"Running: {tc}")

# Week 5-6: Functions
def get_user_data(user_id: int) -> dict:
    return {"id": user_id, "name": "Test User", "email": "test@example.com"}

# Week 7-8: Classes
class LoginPage:
    def __init__(self, driver):
        self.driver = driver
    
    def enter_email(self, email: str):
        self.driver.find_element("id", "email").send_keys(email)

Milestone: Solve 20 easy LeetCode problems in your chosen language. This proves you can think programmatically, not just copy-paste.

Step 2: Master API Testing First

Before writing a single line of UI automation, become proficient at API testing. Here is why:

  1. No browser setup complexity — you make HTTP requests, you get responses
  2. Faster feedback — API tests run in seconds, not minutes
  3. Higher value in interviews — SDET interviewers care more about API automation than Selenium
  4. Directly validates backend logic — which is where most real bugs live

Python: Requests Library

import requests

BASE_URL = "https://jsonplaceholder.typicode.com"

def test_get_user():
    response = requests.get(f"{BASE_URL}/users/1")
    
    assert response.status_code == 200
    
    data = response.json()
    assert data["id"] == 1
    assert "name" in data
    assert "email" in data
    print(f"User: {data['name']}, Email: {data['email']}")

test_get_user()

Structure it with Pytest

# tests/test_users_api.py
import pytest
import requests

BASE_URL = "https://jsonplaceholder.typicode.com"

class TestUsersAPI:
    
    def test_get_user_returns_200(self):
        response = requests.get(f"{BASE_URL}/users/1")
        assert response.status_code == 200
    
    def test_get_user_has_required_fields(self):
        response = requests.get(f"{BASE_URL}/users/1")
        data = response.json()
        
        required_fields = ["id", "name", "email", "phone"]
        for field in required_fields:
            assert field in data, f"Missing field: {field}"
    
    def test_get_nonexistent_user_returns_404(self):
        response = requests.get(f"{BASE_URL}/users/9999")
        assert response.status_code == 404
    
    def test_create_user(self):
        payload = {"name": "Test User", "email": "test@example.com"}
        response = requests.post(f"{BASE_URL}/users", json=payload)
        
        assert response.status_code == 201
        data = response.json()
        assert data["name"] == payload["name"]

Milestone: A working Pytest project with 10+ API tests for a public API, committed to GitHub.

Step 3: Learn Playwright or Selenium for UI Automation

Once API automation is solid, add UI automation. The two main tools:

Playwright (recommended for new learners)

  • Modern, fast, built-in waiting
  • Python and JavaScript support
  • Auto-waiting reduces flaky tests dramatically

Selenium

  • Industry standard, 15+ years old
  • Java and Python support
  • Enormous community and job listings mention it explicitly

Page Object Model — The Pattern You Must Know

The Page Object Model (POM) is a design pattern that separates test logic from UI interaction code. Every senior SDET interviewer asks about it.

# pages/login_page.py
from playwright.sync_api import Page

class LoginPage:
    def __init__(self, page: Page):
        self.page = page
        self.email_field = page.get_by_label("Email")
        self.password_field = page.get_by_label("Password")
        self.submit_button = page.get_by_role("button", name="Sign In")
        self.error_message = page.locator(".error-banner")
    
    def navigate(self):
        self.page.goto("/login")
    
    def login(self, email: str, password: str):
        self.email_field.fill(email)
        self.password_field.fill(password)
        self.submit_button.click()
    
    def get_error_text(self) -> str:
        return self.error_message.inner_text()
# tests/test_login.py
import pytest
from playwright.sync_api import Page
from pages.login_page import LoginPage

class TestLogin:
    
    def test_valid_login_redirects_to_dashboard(self, page: Page):
        login_page = LoginPage(page)
        login_page.navigate()
        login_page.login("admin@example.com", "password123")
        
        assert "/dashboard" in page.url
    
    def test_invalid_password_shows_error(self, page: Page):
        login_page = LoginPage(page)
        login_page.navigate()
        login_page.login("admin@example.com", "wrongpassword")
        
        error = login_page.get_error_text()
        assert "Invalid credentials" in error

Milestone: A Playwright or Selenium project with POM, covering a full user journey (login → action → assertion), committed to GitHub.

Step 4: Add CI/CD Integration

This is what separates an "automation engineer" from a "tester who wrote some scripts." Your tests need to run automatically on every code change.

GitHub Actions — The Fastest Starting Point

# .github/workflows/tests.yml
name: Run Automation Tests

on:
  push:
    branches: [main, develop]
  pull_request:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    
    steps:
      - uses: actions/checkout@v3
      
      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: '3.11'
      
      - name: Install dependencies
        run: |
          pip install -r requirements.txt
          playwright install chromium
      
      - name: Run API tests
        run: pytest tests/api/ -v
      
      - name: Run UI tests
        run: pytest tests/ui/ -v --headed=false

Once you push this file and your tests pass in GitHub Actions, you have proof of CI integration. This is what you show in interviews.

Milestone: Your GitHub Actions workflow runs green on every push.

Step 5: Build a Portfolio Project

A single portfolio project that demonstrates all four skills (language, API testing, UI automation, CI) is worth more than 10 disconnected scripts.

Portfolio Project Idea: E-Commerce Test Suite

Pick a free demo application (like automationexercise.com or saucedemo.com) and build a complete test suite:

qa-portfolio/
├── README.md          ← Explains what the project tests and how to run it
├── requirements.txt
├── conftest.py        ← Pytest fixtures (browser setup, API base URL)
├── pages/
│   ├── login_page.py
│   ├── product_page.py
│   └── checkout_page.py
├── tests/
│   ├── api/
│   │   ├── test_products_api.py
│   │   └── test_orders_api.py
│   └── ui/
│       ├── test_login.py
│       ├── test_search.py
│       └── test_checkout.py
└── .github/
    └── workflows/
        └── tests.yml

The README should explain:

  • What application is being tested
  • How to run the tests locally
  • What the CI pipeline does
  • Any known limitations

This project is what you link in your resume and discuss in interviews.

How to Gain Experience Without a New Job

You do not need an automation engineer title to build automation experience. You can do it in your current role.

Talk to Your Team Lead

Most QA teams have a growing backlog of manual regression tests that nobody has automated. Propose taking on one module — "I'd like to automate the login and checkout regression tests in my spare time." Most managers say yes, because the risk is low and the upside is free automation coverage.

Even if the code is not perfect, you now have work experience writing automation at a company — not just a personal project.

Contribute to Open Source Testing Projects

Find open-source projects on GitHub that are looking for test contributors. Even small contributions count.

Build Tests for Apps You Use Daily

Pick any app you use and build automation for it. Swiggy's checkout flow, Zomato's search, a government portal. You will encounter real-world challenges (dynamic selectors, iframes, pop-ups) that make for much better interview stories than textbook examples.

Update Your Resume

Add a "Technical Skills" section with specific tools (Selenium/Playwright, Pytest/TestNG, REST Assured, Git, GitHub Actions). Do not list "Automation" without specifying the tool.

Your "Work Experience" section for your current manual QA role should include:

  • "Automated regression test suite for login and checkout flows using Playwright and Python"
  • "Reduced manual regression time from 4 hours to 25 minutes via test automation"

Quantified impact is what stands out.

Target the Right Roles

Look for: "Junior Automation Engineer," "QA Automation Engineer," "SDET (Junior)," "Test Engineer — Automation."

Roles that say "automation" in the title but "3-5 years experience required" are often flexible if you can demonstrate skill. Apply anyway.

Prepare for Technical Interviews

Automation engineer interviews typically include:

  1. Language basics: "Write a function that reverses a string." Simple but eliminates those who cannot write code.
  2. Framework questions: "Explain the Page Object Model." "What is a test fixture?" "How do you handle flaky tests?"
  3. Live coding: Write a simple Selenium/Playwright test for a given scenario.
  4. Design questions: "How would you approach automating a login feature?" "How would you structure an API test framework?"

The QA Interview Kit on this site covers all of these in depth with model answers.

How Long Will It Really Take?

Here is an honest timeline assuming 1–2 hours of daily practice:

TimeframeWhere You Should Be
Week 1–4Comfortable with language basics (loops, functions, classes)
Week 5–8First API tests running with Pytest/TestNG
Week 9–12First UI tests running with Playwright/Selenium
Week 13–16POM implemented, GitHub Actions running
Week 17–20Portfolio project complete, starting to apply for roles
Month 6–12First automation role secured (depending on job market)

These timelines assume consistent effort. If you skip weeks, they stretch proportionally.

Common Mistakes to Avoid

Mistake 1: Learning tools before fundamentals If you cannot explain what a class is, why a function should have a single responsibility, or what an assertion does, learning Selenium first will only create confusion.

Mistake 2: Never running tests in CI Local tests that work on your machine but not in CI are not ready for a job interview. Run everything in GitHub Actions.

Mistake 3: Copy-pasting without understanding When you find a working code snippet online, type it manually and make sure you understand every line. Copy-paste learning does not transfer to interviews.

Mistake 4: Waiting until ready to start applying Start applying when your portfolio has one complete, working project. You will learn more from interviews than from additional study — rejection feedback is the fastest teacher.

Summary

The transition from manual tester to automation engineer is completely achievable with 6–18 months of consistent effort. The path is: Python or Java → API testing → UI automation → CI/CD integration → portfolio project → job applications.

Your manual testing experience is not baggage. It is the context that makes your automated tests meaningful. Automation without testing judgment produces passing tests for broken features.

Start with the language. Everything else follows.

Recommended Resource

QA Interview Kit

Interview prep kit with real-world QA and API scenarios.

999Get This Guide →

Related Posts

📝
Career
Apr 2026·10 min read

QA Engineer Salary in India 2026: Complete Breakdown by Role and City

Real QA and SDET salary ranges in India for 2026 — by experience level, company type, city, and skills. Includes manual QA, automation, and SDET roles.

Read article →
📝
Interview Prep
Apr 2026·12 min read

Behavioral Interview Questions for QA Engineers (With Sample Answers)

Behavioral interview questions specifically for QA and SDET roles — with the STAR method explained and sample answers that actually sound human.

Read article →
📝
Interview Prep
Apr 2026·12 min read

QA Interview Preparation Checklist: Everything You Need to Know

A complete QA interview preparation checklist — what to study, what to practice, and how to approach each round of a QA or SDET interview.

Read article →