---
name: Real E2E Test
slug: real-e2e-test
category: Quality
description: Real E2E Test runs real end-to-end tests that start claude-tap from local source, connect to the real Claude CLI, and verify trace output. Use it to validate pytest and tmux interactions, tool use, HTML viewer generation, and API key redaction.
github: "https://github.com/liaohch3/claude-tap/tree/main/.agents/skills/real-e2e-test"
language: Python
stars: 3064
forks: 266
install: "npx degit https://github.com/liaohch3/claude-tap/tree/main/.agents/skills/real-e2e-test ~/.claude/skills/real-e2e-test"
installs_to: ~/.claude/skills/real-e2e-test
source_path: .agents/skills/real-e2e-test/SKILL.md
collection_size: 11
category_size: 1354
collection_url: "https://dirskills.com/collections/liaohch3/claude-tap"
added: 2026-08-17T07:09:17.201Z
last_synced: 2026-08-17T07:09:17.201Z
canonical_url: "https://dirskills.com/skills/real-e2e-test"
---

# Real E2E Test

Real E2E Test runs real end-to-end tests that start claude-tap from local source, connect to the real Claude CLI, and verify trace output. Use it to validate pytest and tmux interactions, tool use, HTML viewer generation, and API key redaction.

**Install:**

```bash
npx degit https://github.com/liaohch3/claude-tap/tree/main/.agents/skills/real-e2e-test ~/.claude/skills/real-e2e-test
```

## README

# Real E2E Test Skill

Run real end-to-end tests that start `claude-tap` from local source, connect to the
real Claude CLI, and verify trace output.

## Prerequisites

- `claude` CLI installed and authenticated
- Python dev dependencies installed: `uv sync --extra dev`
- `tmux` installed for interactive mode (`brew install tmux`)

## Mode 1: Pytest Real E2E (7 test cases)

### Run all real E2E tests
```bash
uv run pytest tests/e2e/ --run-real-e2e --timeout=300 -v
```

### Run a single test
```bash
uv run pytest tests/e2e/test_real_proxy.py::TestRealProxy::test_single_turn --run-real-e2e --timeout=180 -v -s
```

### Run with debug output
```bash
uv run pytest tests/e2e/ --run-real-e2e --timeout=300 -v -s --tb=long
```

## Mode 2: tmux Interactive Real E2E

Use this when you need to validate non-`-p` interactive behavior in Claude Code TUI.

```bash
scripts/run_real_e2e_tmux.sh
```

Optional overrides:

```bash
PROMPT_ONE="Use the shell tool to run command ls in the current directory, then reply with any 5 filenames only." \
PROMPT_TWO="Thank you." \
SUBMIT_KEY="Enter" \
PERMISSION_MODE="bypassPermissions" \
scripts/run_real_e2e_tmux.sh
```

Important tmux interaction notes:

- Submit key is `Enter` for Claude Code TUI in tmux (confirmed working).
- `PROMPT_ONE` should intentionally trigger tool use.
- For portability, use `grep -F` instead of `rg` in shell assertions (`rg` may be unavailable).

## Verification Checklist (for both modes)

- Latest trace `.jsonl` contains both prompts (`PROMPT_ONE`, `PROMPT_TWO`)
- At least 2 requests hit `/v1/messages`
- At least one response content block has `"type": "tool_use"`
- HTML viewer file is generated (`trace_*.html`)

## Notes

- Real E2E tests are skipped by default; `--run-real-e2e` is required.
- Each pytest case starts a fresh proxy server and trace directory.
- Timeouts are intentionally generous because real API calls are involved.
- tmux mode includes retry logic for prompt submission and post-run JSONL assertions.

## Pytest Test Cases

| Test | Timeout | What It Tests |
|------|---------|---------------|
| `test_single_turn` | 180s | Basic prompt/response trace capture |
| `test_multi_turn` | 300s | Conversation memory with `-c` flag |
| `test_tool_use` | 180s | Tool use generates multiple trace records |
| `test_html_viewer_generated` | 180s | HTML viewer generated with embedded trace data |
| `test_api_key_redaction` | 180s | API keys redacted from trace output |
| `test_streaming_sse_capture` | 180s | SSE events captured in streaming mode |
| `test_trace_summary` | 180s | CLI stdout includes trace summary and API call count |
