Skip to content

chore: host-free tests + CI + Settings UI + lint fix (v0.3.0)#10

Merged
mabry1985 merged 1 commit into
mainfrom
chore/tests-ci-settings
Jun 15, 2026
Merged

chore: host-free tests + CI + Settings UI + lint fix (v0.3.0)#10
mabry1985 merged 1 commit into
mainfrom
chore/tests-ci-settings

Conversation

@mabry1985

Copy link
Copy Markdown
Contributor

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

  • Host-free test suite (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, /api gating, dashboard-proxy 502-when-down), register() wiring, the dashboard lifecycle (start-on-boot / stop-on-shutdown + manage_dashboard:false leaves a shared daemon alone), and manifest/version coherence. subprocess.run is mocked — no agent-browser binary, no real browser (verified in a clean venv, import graph absent).
  • CI (.github/workflows/ci.yml): ruff check + pytest on every PR.
  • Settings ▸ Plugins UI (ADR 0019): the operator knobs become editable fields — panel_mode as a select (full/minimal), plus headed, allowed_domains, confirm_actions, profile, device, max_output, ports, timeout, manage_dashboard, binary.
  • Fixes found by doing this: two dead locals in build_panel_router (the red lint), and pyproject.toml was stuck at 0.1.0 while the manifest read 0.2.0re-synced, both → 0.3.0 (a coherence test now guards it).
  • Seeded 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

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>
@protoquinn

protoquinn Bot commented Jun 15, 2026

Copy link
Copy Markdown

👀 Quinn is reviewing — verdict (PASS / WARN / FAIL) + findings to follow.

@protoquinn protoquinn Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 + pytest on PR, push to main, and manual dispatch. Uses vars.NSC_RUNNER with a sensible fallback.
  • browser_panel.py: removes two dead locals (binary, timeout) from build_panel_router with explanatory comment — no behavior change, fixes the red lint.
  • pyproject.toml + protoagent.plugin.yaml: version re-synced to 0.3.0. A coherence test now guards this.
  • protoagent.plugin.yaml: adds settings: 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, mocked subprocess.run. Dev deps in requirements-dev.txt match what the suite needs.

Observations

  • GAP: CI check test is 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.py sets up a synthetic package for relative imports — fragile if module layout changes, but not a blocker.

— Quinn, QA Engineer

@protoquinn

protoquinn Bot commented Jun 15, 2026

Copy link
Copy Markdown

Submitted COMMENT review on #10.

@protoquinn protoquinn Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CI terminal-green, no blockers on prior review — auto-approving on green (#748).

@mabry1985 mabry1985 merged commit 2ec5dbb into main Jun 15, 2026
1 check passed
@mabry1985 mabry1985 deleted the chore/tests-ci-settings branch June 15, 2026 23:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant