🎯 ln-343-manual-tester Workflow

Linear Workflow - Worker v1.0.0

Overview

Purpose: Perform manual functional testing of Story Acceptance Criteria using curl (API) or puppeteer (UI).

Type: Linear Workflow (7 sequential phases)

Single Responsibility: ONLY performs manual testing and documents results - does NOT create tasks or change statuses.

Output: JSON verdict + Linear comment (Format v1.0) + temporary testing script for re-running tests.

graph TD Start([START]) --> Phase1[Phase 1: Setup Environment
Detect Story type API/UI
Verify app running] Phase1 --> Phase2[Phase 2: Load Story AC
Parse Given-When-Then
Extract 3-5 AC] Phase2 --> Phase3[Phase 3: Test AC
curl for API / puppeteer for UI
Record PASS/FAIL results] Phase3 --> Phase4[Phase 4: Test Edge Cases
Invalid inputs, boundaries
3-5 edge case scenarios] Phase4 --> Phase5[Phase 5: Test Error Handling
400s, 500s, validation
Verify user-friendly messages] Phase5 --> Phase6[Phase 6: Test Integration
Database, APIs, auth
2-3 integration points] Phase6 --> Phase7[Phase 7: Document Results
Linear comment Format v1.0
Create temp script
Return JSON verdict] Phase7 --> End([END:
JSON verdict + temp script]) classDef phase fill:#E3F2FD,stroke:#1976D2,stroke-width:2px classDef endpoint fill:#C8E6C9,stroke:#388E3C,stroke-width:2px class Phase1,Phase2,Phase3,Phase4,Phase5,Phase6,Phase7 phase class Start,End endpoint

Phase Descriptions

Phase 1: Setup Environment
Phase 2: Load Story Acceptance Criteria
Phase 3: Test Acceptance Criteria
Phase 4: Test Edge Cases
Phase 5: Test Error Handling
Phase 6: Test Integration Points
Phase 7: Document Results

Output Format

{
  "verdict": "PASS" | "FAIL",
  "story_type": "API" | "UI",
  "story_id": "US001",
  "main_scenarios": [
    {
      "ac_id": "AC1",
      "result": "PASS",
      "details": "Response 200, token valid, expires in 3600s"
    }
  ],
  "edge_cases": [
    {
      "case": "Invalid credentials",
      "result": "PASS",
      "details": "Response 401, correct error message"
    }
  ],
  "error_handling": [
    {
      "scenario": "401 Unauthorized",
      "result": "PASS",
      "details": "Correct status code + user-friendly message"
    }
  ],
  "integration": [
    {
      "integration": "Database persistence",
      "result": "PASS",
      "details": "User record saved with correct fields"
    }
  ],
  "linear_comment_id": "abc123",
  "temp_script_path": "scripts/tmp_US001.sh"
}
    

Key Characteristics

Testing Patterns

API Testing (curl)

curl -X POST http://localhost:8000/api/login \
  -H "Content-Type: application/json" \
  -d '{"email": "user@example.com", "password": "test123"}' \
  -w "\\nHTTP Status: %{http_code}\\n"
    

UI Testing (puppeteer)

await page.goto('http://localhost:3000/login');
await page.fill('[name="email"]', 'user@example.com');
await page.fill('[name="password"]', 'test123');
await page.click('button[type="submit"]');
await page.waitForURL('**/dashboard');
    

Temporary Testing Script

Purpose: Reusable bash script for re-running manual tests after refactoring/fixes.

Location: scripts/tmp_[story_id].sh

Lifecycle: