mirror of
https://github.com/QwenLM/qwen-code.git
synced 2026-04-28 19:52:02 +00:00
51 lines
1.9 KiB
Markdown
51 lines
1.9 KiB
Markdown
# Inline Command Approval Cards
|
|
|
|
- Slice date: 2026-04-26
|
|
- Executable harness: `packages/desktop/scripts/e2e-cdp-smoke.mjs`
|
|
- Command:
|
|
`cd packages/desktop && npm run e2e:cdp`
|
|
- Result: pass
|
|
- Artifact directory:
|
|
`.qwen/e2e-tests/electron-desktop/artifacts/2026-04-25T17-47-26-492Z/`
|
|
|
|
## Scenario
|
|
|
|
1. Launch the real Electron app with isolated HOME, runtime, user-data, and a
|
|
fake dirty Git workspace.
|
|
2. Open the fake project through the desktop directory picker path.
|
|
3. Send the first composer prompt without manually creating a thread.
|
|
4. Wait for the fake ACP command permission request.
|
|
5. Assert the request renders as an inline conversation card with the command
|
|
title, command preview, pending status, and approval/deny actions.
|
|
6. Assert the old detached permission strip is absent and the body does not
|
|
show a generic `Permission requested` event.
|
|
7. Approve once, assert the pending card resolves, then continue the existing
|
|
changed-files, review, settings, terminal, and final layout smoke path.
|
|
|
|
## Assertions
|
|
|
|
- The inline approval card is inside the chat timeline and stays above the
|
|
composer without overlap.
|
|
- The card exposes `Approve Once`, `Approve for Thread`, and `Deny` actions.
|
|
- The card includes `Run desktop E2E command`, `printf desktop-e2e`, and a
|
|
pending status.
|
|
- `.permission-strip` is absent.
|
|
- The conversation body does not contain `Permission requested`.
|
|
- The changed-files summary appears after approval and no approval card remains.
|
|
- Console errors: 0.
|
|
- Failed local network requests: 0.
|
|
|
|
## Artifacts
|
|
|
|
- `inline-command-approval.json`
|
|
- `inline-command-approval.png`
|
|
- `conversation-changes-summary.json`
|
|
- `completed-workspace.png`
|
|
- `electron.log`
|
|
- `summary.json`
|
|
|
|
## Known Uncovered Risk
|
|
|
|
The harness covers deterministic fake ACP command approval with a string command
|
|
input. It does not yet validate live ACP approvals with structured tool input,
|
|
ask-user free-form answer capture, or long command wrapping at compact widths.
|