Manual Tests vs. Automated UI Tests: Planning Them Separately, Not Sequentially
Why automation candidates should be identified during refinement rather than derived from manual test results afterward, with a workflow, checklist, and side-by-side example.
A note on how this came about: these are exploratory notes rather than a settled guide — written up from a back-and-forth working through the question rather than a from-scratch analysis, and treated here as a starting point for discussion rather than a fact sheet.
Automating manual tests after finalizing a feature
The question that started this: In a typical SDLC, test cases for manual tests get written during refinement. After development and manual testing wrap up, the team decides which manual tests could be replaced by automated UI tests. That sequencing feels a little off — a manually executed test case seems to operate on a different abstraction level, with a different focus, than an automated UI test. What’s the better approach, and what’s actually recommended here?
The instinct that something’s off is correct. Manual tests and automated UI tests serve different purposes and operate on different abstraction levels. Treating manual tests as a direct candidate list for automation after they’ve already been executed mixes those two worlds together, and it can lead to wrong automation priorities or just wasted effort.
Where they actually differ
| Aspect | Manual Tests | Automated UI Tests |
|---|---|---|
| Goal | Explorative, human intuition, catching unexpected issues, subjective quality validation | Repetitive validation of expected behaviors, fast feedback for regressions |
| Abstraction | High — “does this feel right?” and holistic behavior | Low to medium — “does this specific interaction work exactly as coded?” |
| Focus | Flexibility, creativity, usability, edge cases | Stability, repeatability, known paths |
| Typical use cases | New feature exploration, UI look and feel, edge cases, ad hoc scenarios | Regression tests, smoke tests, basic workflow validation |
Why “automate after manual testing” is the wrong sequence
- It risks automating tests that are valuable because they’re manual — exploratory paths lose their point once scripted.
- It misses the chance to design automation for robustness and maintainability, because manual test wording doesn’t always translate cleanly into automation.
- It produces retrofit automation instead of automation-by-design, which is usually the weaker outcome.
A better flow
Decide what should be automated at refinement time, or at the latest when development starts — not after manual testing is already done:
- Identify which paths are critical and which are stable enough to justify automation.
- Decide explicitly: this needs UI automation, that one stays manual.
- Write automation-specific acceptance criteria, or at least hints — “Automated UI test: log in as admin → create item → verify item in list.” Not every manual test maps 1:1 onto an automated one.
- After manual testing wraps up, use the findings to adjust the automation plan where something important surfaced — don’t derive the whole plan from those findings after the fact.
Think in layers while deciding: unit tests for business logic, API/integration tests for services and contracts, and UI automation reserved for what genuinely needs UI-level validation — actual user workflows, visual element presence. Keep automated UI tests focused and small; avoid one giant end-to-end test standing in for everything.
A practical transition
If a team already works the “decide after manual testing” way, evolving the process gently tends to work better than a hard cutover:
- During refinement, explicitly ask: which tests do we plan to automate from the start, and does this make sense for UI automation or only manual testing?
- During development, capture “automation notes” alongside tasks — candidates for UI tests, noted as they come up.
- After manual testing, use the results only to catch gaps or refine the plan — not as the main source of automation decisions.
The short version: manual tests and automated UI tests should be planned separately, based on their different purposes and abstraction levels. Identify automation candidates during refinement, and use manual testing mainly to catch what automation planning missed — not as the primary source for deciding what to automate.
A lightweight workflow and checklist
The follow-up question: could this be sketched as a simple workflow diagram or checklist a team could actually adopt?
The workflow
During refinement
- Review acceptance criteria.
- Ask, for each story: what should be tested manually? What should be tested automatically, and at which layer — unit, API, or UI?
- Tag work items accordingly: “needs UI automation,” “manual exploratory testing only,” “API test sufficient.”
During development
- Developers add simple automation hints — “login flow needs UI automation.”
- Where useful, sketch rough automation steps in technical notes.
During manual testing
- Execute manual tests for exploratory behavior, UX quality, and edge cases that aren’t easily automated.
- If manual testing surfaces important regressions or gaps, propose additional automation — don’t let this become the primary planning input.
After manual testing
- Review the automation plan: confirm what was planned still makes sense, and add automation for genuine gaps — without automating everything blindly just because it was touched.
A checklist for work items
At refinement: Are acceptance criteria clear enough? Which paths should be automated? Is UI automation actually needed, or does unit/API testing cover it? Which parts genuinely require human judgment?
At development: Are automation candidates documented? Are stable IDs/selectors in place if UI tests are needed?
At manual testing: Were unexpected behaviors found? Do any findings require a new automated regression test?
Before closing the work item: Is the planned automation actually implemented, if agreed? Do manual tests cover whatever risk remains non-automatable?
The shape of it, visually
[Refinement] → [Decide: Manual vs Automation] → [Dev: Note Automation Hints]
↓ ↓
[Manual Test for UX/Edge Cases] [Automation Implementation]
↓ ↓
[Review and Adjust Automation Plan] → [Done]
One phrasing tip worth keeping: phrase automation candidates differently than manual test cases. A manual test case might read “verify the UI color changes to green after success.” The automation candidate version: “validate success status is indicated visually, ignoring exact color unless it’s actually crucial.” Automation should target what matters, not copy-paste human steps into code.
A quick decision table
The next ask: a simple “automation decision table” for refinement — something like “if the feature is critical and the UI is stable, automate; otherwise, manual” — to keep discussions moving without turning into deep debates every time.
| Criteria | Yes → | No → |
|---|---|---|
| Is the feature critical for the business? | Consider automation. | Manual testing may be enough. |
| Is the feature stable (few UI/requirement changes expected)? | Good candidate for automation. | Delay automation until stabilized. |
| Is the test highly repetitive (needs to be rerun often)? | Automate to save effort. | Manual is fine for a one-time thing. |
| Is the test suitable for machine validation (clear pass/fail)? | Automate. | Manual if human judgment is key — “does it feel intuitive?” |
| Is API or unit test coverage already sufficient? | Maybe no UI automation needed. | UI automation can fill the gap. |
| Is the UI easily automatable (stable DOM elements, IDs)? | Automate the UI flow. | Prefer lower-level tests, or manual, if the UI is flaky. |
Scanned quickly: critical, stable, repetitive, and machine-checkable points toward UI automation. Non-critical, unstable UI, and something that needs human perception points toward manual testing.
Three rules of thumb for UI automation specifically: automate only the happy paths unless a specific bug demands otherwise; prefer many small tests over one giant end-to-end journey; invest in good selectors and avoid visual assertions unless they’re actually necessary.
A lightweight way to capture this during refinement:
Test Plan:
- Manual: Edge cases, UI polish verification
- Automated (UI): Basic workflow "Create item" → "Verify item listed"
- Automated (API): Validation of backend data storage
Writing it down this explicitly avoids the bigger decision discussion happening later, under more pressure.
Manual vs. automation-ready: the same feature, two styles
The last question in this thread: a small real-world example showing how a manual test case and an automation-ready test case differ in style for the same feature — often more illuminating side by side than in the abstract.
Example feature: “User can log in”
Manual test case:
| Field | Content |
|---|---|
| Title | Verify User Login |
| Steps | 1. Open the application in a browser. 2. Click “Login” in the header. 3. Enter a valid username and password. 4. Click “Submit.” 5. Observe if the user dashboard loads correctly. |
| Expected Result | The dashboard page should display, showing the user’s name in the top-right corner. |
Manual testers are free to also observe styling, loading times, typos, smoothness, and other usability factors along the way — that latitude is part of the point.
Automation-ready test case:
| Field | Content |
|---|---|
| Title | Automated UI Test: Successful Login Navigates to Dashboard |
| Precondition | User account exists with known credentials. |
| Steps | 1. Navigate to the login page URL directly (/login). 2. Fill the username field with validUser. 3. Fill the password field with validPassword123!. 4. Click “Submit” (selector: #submit-login). |
| Assertions | URL contains /dashboard. Element #user-profile-name is visible. Text content of #user-profile-name is not empty. |
| Out of scope | No visual style validation (e.g. CSS colors). No timing/load-time validation unless separately measured. |
The difference, side by side
| Manual | Automation | |
|---|---|---|
| Focus | Exploratory, usability, broad verification | Precise, technical, reproducible, fast checks |
| Steps | Descriptive and flexible | Exact, minimal, selector-based |
| Validation | Look and feel, UX quality | Concrete presence/state of elements |
| Freedom | Tester can “feel” around | Automation checks only what it’s told to check |
The key takeaway: manual test cases describe behaviors humans should validate intuitively. Automation test cases define technical facts that scripts can reliably assert. That’s why “automating a manual test” verbatim is usually the wrong move — the better path is writing purpose-built automation that focuses on technical validation, informed by but not copied from the manual version.