Automatically design comprehensive end-to-end (E2E) test cases for newly implemented vibing.nvim features. Use immediately after completing feature implementation (Phase 5.4) and before running E2E tests. Generates test scenarios covering happy paths, error cases, edge cases, and integration points, with a prioritized risk ranking (Critical / High / Medium / Low) and ready-to-use test code templates following e2e_helper.lua conventions.
Generate comprehensive E2E test scenarios after implementing new features.
Provide context when invoking:
/test-design
I implemented [feature description].
Changed files:
- [list of new/modified files]
Existing tests:
- [list of existing test files]
Example:
/test-design
I implemented a new slash command `/export` that exports chat history to Markdown.
Changed files:
- lua/vibing/application/chat/slash_commands.lua (added export_command)
- lua/vibing/utils/markdown_exporter.lua (new file)
Existing tests:
- tests/e2e/chat_basic_flow_spec.lua (basic chat operations)
Categorized scenarios with checkboxes:
Ready-to-implement code using e2e_helper.lua:
describe("E2E: [Feature Name]", function()
local nvim_instance
before_each(function()
nvim_instance = helper.spawn_nvim_instance({
headless = true,
init_script = "tests/minimal_init.lua",
})
end)
after_each(function()
helper.cleanup_instance(nvim_instance)
end)
-- Test cases with appropriate TIMEOUTS constants
end)
For a /export command that exports chat to Markdown:
Happy Path ✅
Error Cases ❌
Edge Cases 🔸
Integration Points 🔗
Critical
High
Medium
-- tests/e2e/export_command_spec.lua
local helper = require("vibing.testing.e2e_helper")
local TIMEOUTS = {
CHAT_CREATION = 2000,
COMMAND_EXECUTION = 3000,
}
describe("E2E: /export command", function()
local nvim_instance
before_each(function()
nvim_instance = helper.spawn_nvim_instance({
headless = true,
init_script = "tests/minimal_init.lua",
})
end)
after_each(function()
helper.cleanup_instance(nvim_instance)
end)
it("should export chat to markdown file", function()
helper.send_keys(nvim_instance, ":VibingChat<CR>")
vim.wait(TIMEOUTS.CHAT_CREATION)
helper.send_keys(nvim_instance, "GiTest message<Esc><CR>")
local ok = helper.wait_for_buffer_content(
nvim_instance,
"## .* Assistant",
30000
)
assert.is_true(ok, "Assistant should respond")
-- Execute /export and verify...
end)
end)
Do:
git diff --name-only)Don't:
After running /test-design:
tests/e2e/npm run test:e2e.claude/rules/self-testing.md).claude/rules/self-testing.md - Complete self-testing procedureslua/vibing/testing/e2e_helper.lua - E2E helper API referencetests/e2e/chat_basic_flow_spec.lua - Example test suiteSearch for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer