Use when adding or updating Go CLI E2E coverage for one `tests/cli_e2e/{domain}` domain of the compiled `lark-cli`, especially when the work requires live `--help` or `schema` exploration, scenario-based `clie2e.RunCmd` workflows, and per-domain `coverage.md` maintenance.
Work on one domain per run. Produce exactly two artifacts for that domain:
tests/cli_e2e/{domain}/tests/cli_e2e/{domain}/coverage.mdFocus on domain testcase files. Do not change shared E2E support code such as tests/cli_e2e/core.go unless the user explicitly asks. Treat tests/cli_e2e/demo/ as reference only.
coverage.md.lark-cli --help
lark-cli <domain> --help
lark-cli <domain> +<shortcut> -h
lark-cli <domain> <group> --help
lark-cli <domain> <group> <method> -h
lark-cli schema <domain>.<group>.<method>
lark-cli <domain> <group> --help lists no subcommands, <group> itself is the leaf.task +create as one leaf and task tasks get as one leaf.tests/cli_e2e/{domain}/. Do not count tests/cli_e2e/demo/.Identify the provable risks for the touched workflow: invalid input, missing prerequisite, identity or permission, state transition, output shape, cleanup safety. If only the happy path is testable, document the blocked risk areas in coverage.md.
clie2e.RunCmd(ctx, clie2e.Request{...}).Args; put JSON in Params (URL/path parameters) and Data (request body).t.Run substeps.parentT.Cleanup so it survives subtest failures.Run go test ./tests/cli_e2e/{domain} -count=1 while iterating and before finishing. If command shape or behavior is unclear, re-check help or schema (step 1) before changing assertions.
coverage.md: recompute the denominator from live help output, mark each command as shortcut or api, and keep one command table for the whole domain.BinaryPath, DefaultAs, or Format on clie2e.Request only when the testcase truly needs it.require.NoError, result.AssertExitCode, result.AssertStdoutStatus, assert, and gjson.{ok: bool}) assert true; API responses ({code: int}) assert 0.t.Helper() only for setup or assertion helpers that are called from multiple tests.Keep coverage.md brief and mechanical. Include:
Test... workflow, key t.Run(...) proof points, and main blockersRecommended structure:
# <Domain> CLI E2E Coverage
## Metrics
- Denominator: N leaf commands
- Covered: N
- Coverage: N%
## Summary
- TestXxx: ... key `t.Run(...)` proof points ...
- Blocked area: ...
## Command Table
| Status | Cmd | Type | Testcase | Key parameter shapes | Notes / uncovered reason |
| --- | --- | --- | --- | --- | --- |
| ✓ | task +create | shortcut | task_status_workflow_test.go::TestTask_StatusWorkflow | basic create; create with due | |
| ✕ | task +assign | shortcut | | none | requires real user open_id |
shortcut or api.go test -run friendly form.parentT.Cleanup teardown are not counted as covered.--as user works.tests/cli_e2e/demo/.Params or Data fields when help or schema can tell you the exact shape.lark-cli-e2e- or <domain>-e2e-.delete in the same workflow that created the resource.