59 lines
4.2 KiB
Markdown
59 lines
4.2 KiB
Markdown
# LazyBoy acceptance
|
|
|
|
Run from repository root. Core/mock tests do not call a paid API. Browser tests need the optional Playwright installation and use only local fixture pages.
|
|
|
|
## Core and CLI regression
|
|
|
|
```bash
|
|
cargo test --workspace
|
|
cargo clippy --workspace --all-targets -- -D warnings
|
|
cargo build -p lazyboy
|
|
python3 tests/cli_flow.py
|
|
cargo run -p lazyboy -- smoke
|
|
```
|
|
|
|
Coverage: answer/done/blocked/budget/failed; invalid and truncated model responses; complete call/result pairing; progress before tools; commentary-only loop protection; plan updates and unfinished-step validation; changed observations; context preservation; segmented reading, literal search and unique edits; workspace symlink checks; old session compatibility and interrupted-history recovery; incremental process output and stdin; helper deadline, mismatched ID, cancellation and restart; parent cannot call `computer`; `spawn_subagent kind=computerUse` is one-at-a-time and the child is the only agent offered `computer`; invalid click coordinates fail closed. Docker click+screenshot is `#[ignore]` (`computer_use_click_and_screenshot_on_box`).
|
|
|
|
## Interactive runtime integration
|
|
|
|
```bash
|
|
python3 tests/runtime_flow.py
|
|
```
|
|
|
|
Expected:
|
|
|
|
- Commentary precedes action; checklist persists and completes.
|
|
- User steering during an actual command preserves the original task and skips unstarted actions.
|
|
- A question consumes its answer, and clears the pending-question checkpoint.
|
|
- Ctrl-C cancels model HTTP wait, command process group, human question, approval wait and browser wait; a one-shot exits 130 with valid saved history.
|
|
- A cancelled question is presented again on resume; a browser restarts with its profile and saved URL.
|
|
- A real 31-second command survives the legacy 30-second boundary through exec/write_stdin; repeated controlled polling does not trigger the loop guard.
|
|
|
|
## Real browser fixtures
|
|
|
|
```bash
|
|
python3 tests/browser_flow.py
|
|
```
|
|
|
|
Expected: page body/links/segments, password-value omission in snapshots, keyboard entry, option selection, delayed DOM wait, iframe, popup registration, tab switching/closing, scrolling, workspace file upload, completed download, and cookie/local-storage persistence after helper restart.
|
|
|
|
## Opt-in live model
|
|
|
|
```bash
|
|
python3 tests/live_cli.py
|
|
```
|
|
|
|
Uses existing model credentials, at most 12 requests and a disposable workspace. Input has four entries with one duplicate. Expected artifacts: `clean.txt` contains apple / banana / pear in order, `report.txt` records counts 4 and 3, and the model reads back its outputs and delivers a final answer. Progress or a plan must be visible before delivery. This verifies one real model workflow; it does not establish correctness for all arbitrary tasks or websites.
|
|
|
|
## Persistent multi-agent service
|
|
|
|
`python3 tests/team_flow.py` uses a local mock provider, two CLI clients and Chromium to test automatic expertise, private memory, routing to an existing agent, nested workers, simultaneous chat, verified output, persistent questions, reconnect reports, cancellation, task-specific steering, cross-task login persistence, owner profile isolation, natural chat answer forwarding and crash recovery.
|
|
|
|
`python3 tests/live_team.py` is opt-in with the existing paid model configuration. It delegates a four-line deduplication task to an existing agent, chats while the task runs, checks the artifact and a read-back tool call, and waits for the returned main-agent report. The root tree is capped at 16 model requests; foreground replies and memory extraction use their separately bounded requests.
|
|
|
|
## Blocker recovery and visible login handoff
|
|
|
|
`python3 tests/recovery_flow.py` verifies alternative-route selection (including a/b/c input), continued work in the same session and explicit stop. `python3 tests/recovery_flow.py --browser` additionally opens a local Chromium window, interrupts a handoff and verifies that resumption reopens the original browser before asking.
|
|
|
|
`python3 tests/browser_flow.py --handoff` checks headless-to-visible transition with active tab, multiple tabs, cookies, localStorage and sessionStorage preserved, then checks that later state changes are not overwritten. These tests use local fixture pages, not an external account login.
|