automate-manual-test-cases
About automate-manual-test-cases
automate-manual-test-cases is a skill for turning manual test scenarios into automated scripts that fit a project's existing framework and conventions. It guides analysis, implementation, execution, and limited repair of generated tests.
Key features
- 01Detects the project's test framework
- 02Analyzes conventions and reusable components
- 03Normalizes manual steps and expectations
- 04Generates tests using existing patterns
- 05Runs and repairs tests up to three attempts
Use cases
- 01Automating documented manual scenarios
- 02Adding tests to an existing Page Object setup
- 03Checking and fixing a generated test
MCP support
The skill describes using available MCP or debugging tools to inspect the DOM and capture logs, screenshots, or traces during test diagnosis.
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ testomatio/ skills --skill automate-manual-test-casesAfter installing, type/automate-manual-test-casesin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
CLAUDE.mdreferences/CODECEPTJS_BEST_PRACTICES.mdFINAL_SUMMARY_TEMPLATE.mdPLAYWRIGHT_BEST_PRACTICES.mdPOM_BEST_PRACTICES.mdTEST_DATA_MANAGEMENT.mdDetails
From the project READMEAutomate Manual Test Cases
Generate production-ready automated test scripts from manual test cases, reusing the project's existing framework, patterns, and components.
Checklist
Complete all steps in order:
- Analyze project architecture => detect framework (1.1), analyze conventions (1.2), find reusable components (1.3).
- Understand manual test => normalize input (2.1), handle ambiguous steps (2.2), detect inconsistencies (2.3).
- Write test code => implement using existing POM/patterns (3.1-3.2), add assertions (3.3), output code (3.4).
- Verify & heal => execute test (4.1), heal if fails: locators → timing → assertions → flow (4.2), max 3 attempts.
- Finalization => save test (5.1), manage test data & fixtures (5.2), run related tests and output summary (5.3).
Progress
- STEP: 1/5 (Analyze Project Architecture)
- Previous: (none)
- Next ➡️ Step 2: Understand Manual Test.
Update this block after completing each step (see CLAUDE.md).
Step 1: Analyze Project Architecture
1.1 Detect Automation Framework
-
If the user specifies a framework (e.g., "use CodeceptJS") => trust it.
-
Otherwise inspect the project:
package.jsondependencies and scripts.- Config files (
playwright.config.js,codecept.conf.js,cypress.json, etc.).
-
If detection fails, ask with numbered options:
❓ Which framework should I use? 1. Playwright 2. CodeceptJS 3. Cypress 4. Other (specify)
After detection, apply the matching reference:
1.2 Analyze Project Conventions
- Test structure and naming: folders (
tests/,e2e/) and file patterns (*.spec.js, etc.). - Execution:
package.jsonscripts and test commands. - Configuration: base URLs, env variables, global setup.
- Assertion style: libraries and patterns used in existing tests.
1.3 Identify Reusable Components
Scan for:
- Page Objects: existing locators and methods (
src/pages,pages/,page-objects/, etc.). - Fixtures/hooks: setup and teardown patterns.
- Test data: constants, CSV, JSON (
test-data,src/testData, etc.). - Utils/helpers (
utils/,helpers/, etc.).
Exclude from analysis:
- Dependency folders (
node_modules/). - Build artifacts (
dist/,build/,out/). - Hidden/system folders (
.git/,.cache/). - Deprecated code:
deprecated/,legacy/,old/,backup/,__backup__/,archive/,temp/, files markedoutdated, older versioned folders (v1/,v2/) when newer versions exist. - Do not auto-exclude folders with unclear purpose.
- User-specified exclusions always override auto-detected ones.
Step 2: Understand Manual Test
Input may be plain text, markdown steps, or comment blocks in source files (//, /* */).
2.1 Normalize Input Structure
Convert input into:
summary(or scenario title).preconditions(optional).steps(required) — ordered actions with expected results.
For comment-based inputs:
- Treat comment markers (
//,*,-) as structural hints. - Convert bullet points into ordered steps.
- Bind
_Expected:_orExpected Resultsblocks to the preceding step. - Merge multiline expected results into a single logical expectation.
Example:
* Navigate to page
_Expected:_ Page opens
* Click once on the ${Custom statuses} block
_Expected_: List includes "manual" option.
Do not delete or rewrite original manual test comments.
- Keep them as-is in the file.
- Generate automation code below or alongside them.
- Separate with a marker:
// === AUTO-GENERATED TEST (based on steps above) ===
2.2 Handle Ambiguous Steps
Classify each step:
-
Clear => proceed.
-
Partially clear => make a reasonable assumption, mark it with ⚠️ in output (e.g., "⚠️ Assuming 'Submit' button triggers form submission"), continue.
-
Unclear and blocking => ask the user, with numbered options when there are alternatives:
❓ Do you want to: 1. Use existing LoginPage 2. Create new LoginPage 3. Skip login step
Use context from previous steps and common UI patterns (click, input, navigation). Do not block the whole flow on one unclear step — continue with the rest.
2.3 Detect Inconsistencies
If step actions, expected results, and known UI patterns disagree:
- Proceed with best-effort interpretation.
- Flag with ⚠️ in output.
Step 3: Write Test Code
3.1 Choose Implementation Strategy
- Reusable components exist (Page Objects, helpers, fixtures) => reuse them; follow project patterns and naming.
- Partial structure exists => extend existing components; keep consistency with current design.
- No structure => simple readable locators, minimal implementation, no unnecessary abstractions.
Priorities: consistency with the project, then readability, then maintainability.
Do not ignore existing Page Objects or duplicate selectors/logic.
3.2 Follow Framework Patterns
- One test, one flow — each test validates a single scenario.
- Separation of concerns: tests => assertions and flow control; Page Objects => UI interactions; utils => reusable logic.
- Extend, don't modify — add to existing components without changing stable code.
- Use fixtures for setup, authentication, and shared state.
See POM Best Practices.
3.3 Generate Assertions
- Base assertions on expected results from manual steps.
- Validate UI state (visibility, text, attributes), data correctness, navigation outcomes.
- Avoid weak assertions (only checking page load) and over-asserting irrelevant details.
3.4 Output Test Code
- Generate complete, runnable code that integrates with the existing framework.
- Follow project formatting and style conventions.
- Place code in the appropriate test file or suggest a location.
Step 4: Verify & Heal
4.1 Execute Test
Run only the generated test, never the full suite:
- Playwright:
npx playwright test path/to/spec.ts - CodeceptJS:
npx codeceptjs run path/to/test.js
If it passes => go to Step 5. If it fails => heal (4.2).
4.2 Heal Failed Tests
Fix one issue at a time, in priority order:
- Locators — prefer stable selectors (
data-testid,aria-label), avoid deeply nested XPath. - Timing — use framework-native waits, avoid hard sleeps.
- Assertions — match actual app behavior, not assumptions.
- Flow — verify navigation, preconditions, missing steps.
Process: identify a single failure => apply one fix => re-run => repeat. Keep the last working version to roll back to if stuck.
Max 3 healing attempts. If still failing, stop and report the issues.
When the root cause is unclear, use the debug-fix-failed-flaky-autotests skill for structured step-by-step diagnosis.
If MCP/debug tools are available:
- Inspect DOM (
document.querySelector(...).outerHTML). - Use step-by-step execution.
- Capture logs, screenshots, or traces.
4.3 Stability Criteria
A test is stable when it:
- Passes 1-2 consecutive runs.
- Has no hard waits.
- Uses resilient locators.
Step 5: Finalization
5.1 Save Final Test Code
- Save the working test to the appropriate project location.
- Follow naming conventions and stay consistent with existing tests.
5.2 Test Data & Fixtures
- Use centralized test data if the project has it (JSON/CSV/constants).
- Reuse authentication/setup fixtures; don't duplicate setup inside tests.
See Test Data Management.
5.3 Final Run & Summary
-
Execute 1-2 related tests to confirm integration (related tests only, not the full suite).
-
Exit condition: test passes 2 consecutive runs.
-
Show a spec-to-code mapping:
Manual Step Automation Action Navigate to Settings basePage.clickOnNavigationMenuButton("Settings") -
Output the final summary using Final Summary Template.
Example: Comment-Based Request
Use automate-manual-test-cases skill for CodeceptJS framework to write automation
script "tests/plan-for-guest.test.ts" based on manual steps below in this file as
comments (leaving comments in the file for further analysis). Set a specific "smoke"
tag for this test.
Use as reference for extra proper examples:
* `tests/payment-methods.test.ts` - Canonical test file with team approved format.
* `src/pages/paymentMethods.page.ts` - Good described payment page object.
Avoid mistakes from legacy code examples:
* `src/pages/paymentOutdated.page.ts` - Outdated example with old patterns.
Finally, verify that the generated test is passed on - `BASE_URL = 'https://test.com/'`
and provide final review for user.