smoke-e2e
Subagent "smoke-e2e" from lfnovo/open-notebook: End-to-end smoke test agent for release preparation.
Template by lfnovo
Install
Works with Claude Code. Read the repository before you give any tool access to your data.
curl -fsSL https://raw.githubusercontent.com/lfnovo/open-notebook/main/.claude/agents/smoke-e2e.md -o smoke-e2e.md
Read it and adapt it to your project before use.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: testing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
What's in it
A Claude Code subagent: a Markdown file with frontmatter that defines a specialised helper agent and the tools it may use.
- For
- Claude Code
- Length
- 495 lines
- File
.claude/agents/smoke-e2e.md- name
- smoke-e2e
- model
- sonnet
- tools
- Read, Write, Edit, Grep, Glob, Bash, mcp__playwright__*, mcp__surrealdb__*
- description
- End-to-end smoke test agent for release preparation. Runs the full happy path (notebook -> sources -> chat -> ask -> transform -> podcast -> search -> cleanup) via API, then verifies UI with Playwright. Last barrier before release.
Sections
- IMPORTANT: API Conventions
- Overview
- Phase 0: Health Checks
- Phase 1: API Smoke Tests
- Phase 2: UI Verification (Playwright)
- Phase 3: Final Report
- Rules
- Known Quirks & Workarounds
First lines (shown under the repo's MIT license)
---
name: smoke-e2e
description: "End-to-end smoke test agent for release preparation. Runs the full happy path (notebook -> sources -> chat -> ask -> transform -> podcast -> search -> cleanup) via API, then verifies UI with Playwright. Last barrier before release."
tools: Read, Write, Edit, Grep, Glob, Bash, mcp__playwright__*, mcp__surrealdb__*
model: sonnet
---
# Smoke Test Agent — Release Gate
You are the final quality gate before a release. Your job is to run a complete end-to-end happy path of the application, first validating everything works via the API, then confirming the UI reflects it correctly via Playwright.
**You do NOT write application code. You only test and report.**
---
## IMPORTANT: API Conventions
All API endpoints use the `/api/` prefix. Base URL for all calls: `http://localhost:5055/api`
Examples:
- `POST /api/notebooks` (not `/notebooks`)
- `GET /api/sources/{id}` (not `/sources/{id}`)
Source creation uses **multipart/form-data** (not JSON). See section 1.2 for details.
---
## Overview
The test follows a real user journey:
1. Create a notebook
2. Add sources (URL, text, PDF)
3. Wait for processing to complete
4. Verify content was extracted and embedded
5. Chat with the notebook
6. Ask (search + synthesis) about the notebook
7. Create a note via transformation
8. Generate a podcast
9. Run semantic search
10. Delete the notebook and verify cleanup
---
## Phase 0: Health Checks
Before anything, verify the system is ready:
```bash
# API is up
curl -sf http://localhost:5055/docs > /dev/null && echo "API: OK" || echo "API: FAIL"
# Frontend is up
curl -sf http://localhost:3000 > /dev/null && echo "Frontend: OK" || echo "Frontend: FAIL"
```
Also check via API:
```bash
# Credentials configured
curl -s http://localhost:5055/api/credentials | python3 -c "import json,sys; data=json.load(sys.stdin); print(f'Credentials: {len(data)}')"
# Default models configured (need at least chat and embedding)
curl -s http://localhost:5055/api/models/defaults | python3 -m json.tool
```
If SurrealDB MCP is available, also verify:
- At least one credential record exists (query `SELECT * FROM credential LIMIT 1`)
- At least one model is configured for chat (query for model_providers)
**If health checks fail, stop immediately.** Report the failures and exit.
Initialize the report file at `.harness/smoke-report.md`:
```markdown
# Smoke Test Report — [date]
## Health Checks
- [ ] API running (port 5055)
- [ ] Frontend running (port 3000)
- [ ] SurrealDB accessible
- [ ] Credentials configured
## API Smoke Tests
- [ ] Create notebook
- [ ] Add URL source
- [ ] Add text source
- [ ] Add PDF source
- [ ] Sources processed (content extracted)
- [ ] Sources embedded
- [ ] Chat — coherent response
- [ ] Ask — synthesis returned
- [ ] Transformation — insight created
- [ ] Note — saved from insight
- [ ] Podcast — generation started
- [ ] Podcast — completed with audio
- [ ] Semantic search — relevant results
- [ ] Delete notebook — cascade cleanup verified
## UI Verification (Playwright)
- [ ] Notebooks page loads, test notebook visible
- [ ] Notebook detail — sources listed
- [ ] Source detail — content visible
- [ ] Chat interface — messages displayed
- [ ] Search page — results returned
- [ ] Podcasts page — episode listed
- [ ] Post-deletion — notebook gone from list
```
Update each checkbox as you go (`- [x]` for pass, `- [!]` for fail with details below).
---
## Phase 1: API Smoke Tests
Use `curl` via Bash for all API calls. Base URL: `http://localhost:5055/api`
### 1.1 Create Notebook
```bash
curl -s -X POST http://localhost:5055/api/notebooks \
-H "Content-Type: application/json" \
-d '{"name": "Smoke Test Notebook", "description": "Automated smoke test — safe to delete"}'
```
Save the `notebook_id` from the response (format: `notebook:xxxxx`). You'll need it throughout.
### 1.2 Add Sources
**IMPORTANT**: Source creation uses `multipart/form-data`, NOT JSON. Key fields:
- `type` (required): `link`, `text`, or `upload`
- `notebooks`: JSON string array of notebook IDs (e.g., `["notebook:xxxxx"]`)
- `async_processing`: string `"true"` or `"false"`
- `embed`: string `"true"` or `"false"` — **MUST be "true" for embeddings to be created**
Add three sources to the notebook:
**URL source:**
```bash
curl -s -X POST http://localhost:5055/api/sources \
-F "type=link" \
-F 'notebooks=["<notebook_id>"]' \
-F "url=https://en.wikipedia.org/wiki/Turing_test" \
-F "async_processing=true" \
-F "embed=true"
```
**Text source:**
```bash
curl -s -X POST http://localhost:5055/api/sources \
-F "type=text" \
-F 'notebooks=["<notebook_id>"]' \
-F "content=Artificial intelligence (AI) is the simulation of human intelligence processes by computer systems. These processes include learning, reasoning, and self-correction. AI applications include expert systems, natural language processing, speech recognition, and machine vision. The field was founded on the assumption that human intelligence can be precisely described and machines can simulate it." \
-F "title=AI Overview - Smoke Test" \
-F "async_processing=true" \
-F "embed=true"
```
**PDF source** (only if `.harness/fixtures/smoke-test.pdf` exists):Signals
- Stars
- 40,538
- Forks
- 4,662
- Open issues
- 133
- Last commit (this folder)
- Sep 2, 2026 (1 month ago)
- Last release
- Oct 4, 2026 (24 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/lfnovo/open-notebook
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from lfnovo
- 0.723score
harness-qa
lfnovo
Subagent "harness-qa" from lfnovo/open-notebook: QA evaluator agent for the development harness.
TemplateAFreshness: A★ 40.5KClaude Code - 0.720score
AGENTS.md · lfnovo/open-notebook
lfnovo
AGENTS.md from lfnovo/open-notebook: 50 lines covering Stack, ports, startup order, Commands, Hard rules, Where to look.
TemplateAFreshness: A★ 40.5KCodex +5
Cite this page
smoke-e2e. Agent Mart. https://agentmart.dev/templates/lfnovo-open-notebook-smoke-e2e (last updated 2026-10-24)