---
description: Run semantic validation and functional tests for a specific feature, module, or file.
handoffs: 
  - label: Fix Implementation
    agent: speckit.implement
    prompt: Fix the issues found during testing...
    send: true
---

## User Input

```text
$ARGUMENTS
```

**Input format:** Can be a file path, a directory, or a feature name.

## Outline

1. **Context Analysis**:
   - Determine the target scope (Backend vs Frontend vs Full Feature).
   - Read `semantic_protocol.md` to load validation rules.

2. **Phase 1: Semantic Static Analysis (The "Compiler" Check)**
   - **Command:** Use `grep` or script to verify Protocol compliance before running code.
   - **Check:**
     - Does the file start with `[DEF:...]` header?
     - Are `@TIER` and `@PURPOSE` defined?
     - Are imports located *after* the contracts?
     - Do functions marked "Critical" have `@PRE`/`@POST` tags?
   - **Action:** If this phase fails, **STOP** and report "Semantic Compilation Failed". Do not run runtime tests.

3. **Phase 2: Environment Prep**
   - Detect project type:
     - **Python**: Check if `.venv` is active.
     - **Svelte**: Check if `node_modules` exists.
   - **Command:** Run linter (e.g., `ruff check`, `eslint`) to catch syntax errors immediately.

4. **Phase 3: Test Execution (Runtime)**
   - Select the test runner based on the file path:
     - **Backend (`*.py`)**:
       - Command: `pytest <path_to_test_file> -v`
       - If no specific test file exists, try to find it by convention: `tests/test_<module_name>.py`.
     - **Frontend (`*.svelte`, `*.ts`)**:
       - Command: `npm run test -- <path_to_component>`
   
   - **Verification**:
     - Analyze output logs.
     - If tests fail, summarize the failure (AssertionError, Timeout, etc.).

5. **Phase 4: Contract Coverage Check (Manual/LLM verify)**
   - Review the test cases executed.
   - **Question**: Do the tests explicitly verify the `@POST` guarantees defined in the module header?
   - **Report**: Mark as "Weak Coverage" if contracts exist but aren't tested.

## Execution Rules

- **Fail Fast**: If semantic headers are missing, don't waste time running pytest.
- **No Silent Failures**: Always output the full error log if a command fails.
- **Auto-Correction Hint**: If a test fails, suggest the specific `speckit.implement` command to fix it.

## Example Commands

- **Python**: `pytest backend/tests/test_auth.py`
- **Svelte**: `npm run test:unit -- src/components/Button.svelte`
- **Lint**: `ruff check backend/src/api/`
