chore: host-free tests + CI + Settings UI + lint fix (v0.3.0)#10
Merged
Conversation
Brings agent-browser-plugin to fleet parity. The plugin was solid (tools, same-origin dashboard proxy, lifecycle) but had no tests, no CI, and lint was quietly red. - Host-free test suite (tests/, 18 tests) — tool arg-building + graceful error degradation (missing binary / timeout / nonzero exit), the panel routers (page, four-rules compliance, /api gating, dashboard-proxy 502-when-down), register() wiring, the dashboard lifecycle, and manifest/version coherence. subprocess.run is mocked, so no agent-browser binary and no real browser are needed (verified in a clean venv). - CI (.github/workflows/ci.yml) — ruff check + pytest on every PR. - Settings ▸ Plugins UI — the operator knobs (panel_mode select, headed, allowed_domains, confirm_actions, profile, device, max_output, ports, timeout, manage_dashboard, binary) as editable fields (settings: block, ADR 0019). - Fixed two dead locals in build_panel_router (the red lint, unseen without CI) and re-synced pyproject.toml (0.1.0) with the manifest version → both 0.3.0. - Seeded CHANGELOG; README layout + Development section. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
👀 Quinn is reviewing — verdict (PASS / WARN / FAIL) + findings to follow. |
There was a problem hiding this comment.
QA Audit — PR #10 | chore: host-free tests + CI + Settings UI + lint fix (v0.3.0)
VERDICT: WARN (CI queued — non-terminal; re-review on completion)
CI Status
- test: queued
Diff Review
.github/workflows/ci.yml: clean CI workflow —ruff check+pyteston PR, push to main, and manual dispatch. Usesvars.NSC_RUNNERwith a sensible fallback.browser_panel.py: removes two dead locals (binary,timeout) frombuild_panel_routerwith explanatory comment — no behavior change, fixes the red lint.pyproject.toml+protoagent.plugin.yaml: version re-synced to0.3.0. A coherence test now guards this.protoagent.plugin.yaml: addssettings:block (11 fields) per ADR 0019 — types are appropriate (select,bool,string,number), labels/descriptions are clear.tests/conftest.py+ suite: host-free bootstrap looks sound — lazy host imports, mockedsubprocess.run. Dev deps inrequirements-dev.txtmatch what the suite needs.
Observations
- GAP: CI check
testis still queued — can't verify the suite passes. Re-review once terminal. - LOW: clawpatch structural review unavailable (repo not in project registry). Diff-only review — cross-file issues in the test suite may not be caught.
- LOW:
tests/conftest.pysets up a synthetic package for relative imports — fragile if module layout changes, but not a blocker.
— Quinn, QA Engineer
|
Submitted COMMENT review on #10. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Brings the plugin to fleet parity with artifact/pm/content/projectBoard. The code was solid (browser tools, same-origin dashboard proxy, lifecycle) — but it had no tests, no CI, and lint was quietly red (which is why it stayed red).
What's in it
tests/, 18 tests): tool arg-building + graceful error degradation (missing binary → install hint, timeout, nonzero exit → stderr), the panel routers (page served, four-rules compliance,/apigating, dashboard-proxy 502-when-down),register()wiring, the dashboard lifecycle (start-on-boot / stop-on-shutdown +manage_dashboard:falseleaves a shared daemon alone), and manifest/version coherence.subprocess.runis mocked — no agent-browser binary, no real browser (verified in a clean venv,import graphabsent)..github/workflows/ci.yml):ruff check+pyteston every PR.panel_modeas a select (full/minimal), plus headed, allowed_domains, confirm_actions, profile, device, max_output, ports, timeout, manage_dashboard, binary.build_panel_router(the red lint), andpyproject.tomlwas stuck at0.1.0while the manifest read0.2.0— re-synced, both → 0.3.0 (a coherence test now guards it).CHANGELOG.md; README layout + a Development section.No behavior change to the shipped tools/panel — this is the test/CI/config-surface layer.
🤖 Generated with Claude Code