Skip to content

Commit 23c0f0c

Browse files
committed
Complete E13-T4 browser verification and epic closure
1 parent 933ddf3 commit 23c0f0c

File tree

4 files changed

+44
-9
lines changed

4 files changed

+44
-9
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ All notable changes to this project are documented in this file.
8383
- Marked Epic 13 as in progress in the roadmap and completed Task 13.1 definition notes.
8484
- Expanded install and selftest coverage for browser provider profile switching and missing dependency guidance.
8585
- Expanded README wizard/browser guidance with provider trade-offs, stable-first defaults, and `/browser` usage examples.
86+
- Expanded browser verification coverage to assert provider reset readiness and added install smoke checks that run browser status/doctor after switching across providers.
8687

8788
## v0.2.0 - 2026-02-12
8889

IMPLEMENTATION_ROADMAP.md

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ Use this map to avoid overlapping implementations.
4949
| E10 | Auto Slash Command Detector | paused | Medium | E1, E8 | TBD | Resume only if intent precision stays high in prototypes |
5050
| E11 | Context-Window Resilience Toolkit | done | High | E4 | bd-2tj, bd-n9y, bd-2t0, bd-18e | Improve long-session stability and recovery |
5151
| E12 | Provider/Model Fallback Visibility | done | Medium | E5 | bd-1jq, bd-298, bd-194, bd-2gq | Explain why model routing decisions happen |
52-
| E13 | Browser Automation Profile Switching | in_progress | Medium | E1 | bd-3rs, bd-2qy, bd-f6g | Toggle Playwright/agent-browser with checks |
52+
| E13 | Browser Automation Profile Switching | done | Medium | E1 | bd-3rs, bd-2qy, bd-f6g, bd-393 | Toggle Playwright/agent-browser with checks |
5353
| E14 | Plan-to-Execution Bridge Command | planned | Medium | E2, E3 | TBD | Execute validated plans with progress tracking |
5454
| E15 | Todo Enforcer and Plan Compliance | planned | High | E14 | TBD | Keep execution aligned with approved checklists |
5555
| E16 | Comment and Output Quality Checker Loop | merged | Medium | E23 | TBD | Merged into E23 (PR Review Copilot) |
@@ -531,7 +531,7 @@ Every command-oriented epic must ship all of the following:
531531

532532
## Epic 13 - Browser Automation Profile Switching
533533

534-
**Status:** `in_progress`
534+
**Status:** `done`
535535
**Priority:** Medium
536536
**Goal:** Add first-class profile switching between browser automation engines with install/runtime checks.
537537
**Depends on:** Epic 1
@@ -551,12 +551,13 @@ Every command-oriented epic must ship all of the following:
551551
- [x] Subtask 13.3.2: Document provider trade-offs and examples
552552
- [x] Subtask 13.3.3: Add recommended defaults for stable-first users
553553
- [x] Notes: Extended `scripts/install_wizard.py` with browser profile selection (`--browser-profile`) and updated README install/browser guidance with provider trade-offs plus stable-first recommendations.
554-
- [ ] Task 13.4: Verification
555-
- [ ] Subtask 13.4.1: Add tests for profile switching and persistence
556-
- [ ] Subtask 13.4.2: Add smoke tests for status/doctor across providers
557-
- [ ] Subtask 13.4.3: Add install-test checks
558-
- [ ] Exit criteria: provider switching is one-command and reversible
559-
- [ ] Exit criteria: missing dependency states are diagnosed with exact fixes
554+
- [x] Task 13.4: Verification
555+
- [x] Subtask 13.4.1: Add tests for profile switching and persistence
556+
- [x] Subtask 13.4.2: Add smoke tests for status/doctor across providers
557+
- [x] Subtask 13.4.3: Add install-test checks
558+
- [x] Notes: Expanded `scripts/selftest.py` to validate provider reset readiness and updated install smoke checks to run `status` and `doctor` across both providers.
559+
- [x] Exit criteria: provider switching is one-command and reversible
560+
- [x] Exit criteria: missing dependency states are diagnosed with exact fixes
560561

561562
---
562563

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ install-test: ## Run installer smoke test in temp HOME
4747
HOME="$$TMP_HOME" python3 "$$TMP_HOME/.config/opencode/my_opencode/scripts/config_command.py" list; \
4848
HOME="$$TMP_HOME" python3 "$$TMP_HOME/.config/opencode/my_opencode/scripts/stack_profile_command.py" apply focus; \
4949
HOME="$$TMP_HOME" python3 "$$TMP_HOME/.config/opencode/my_opencode/scripts/stack_profile_command.py" status; \
50-
if [ -f "$$TMP_HOME/.config/opencode/my_opencode/scripts/browser_command.py" ]; then HOME="$$TMP_HOME" python3 "$$TMP_HOME/.config/opencode/my_opencode/scripts/browser_command.py" status --json; HOME="$$TMP_HOME" python3 "$$TMP_HOME/.config/opencode/my_opencode/scripts/browser_command.py" profile agent-browser; HOME="$$TMP_HOME" python3 "$$TMP_HOME/.config/opencode/my_opencode/scripts/browser_command.py" doctor --json; HOME="$$TMP_HOME" python3 "$$TMP_HOME/.config/opencode/my_opencode/scripts/browser_command.py" profile playwright; fi; \
50+
if [ -f "$$TMP_HOME/.config/opencode/my_opencode/scripts/browser_command.py" ]; then HOME="$$TMP_HOME" python3 "$$TMP_HOME/.config/opencode/my_opencode/scripts/browser_command.py" status --json; HOME="$$TMP_HOME" python3 "$$TMP_HOME/.config/opencode/my_opencode/scripts/browser_command.py" profile agent-browser; HOME="$$TMP_HOME" python3 "$$TMP_HOME/.config/opencode/my_opencode/scripts/browser_command.py" doctor --json; HOME="$$TMP_HOME" python3 "$$TMP_HOME/.config/opencode/my_opencode/scripts/browser_command.py" profile playwright; HOME="$$TMP_HOME" python3 "$$TMP_HOME/.config/opencode/my_opencode/scripts/browser_command.py" status --json; HOME="$$TMP_HOME" python3 "$$TMP_HOME/.config/opencode/my_opencode/scripts/browser_command.py" doctor --json; fi; \
5151
HOME="$$TMP_HOME" python3 "$$TMP_HOME/.config/opencode/my_opencode/scripts/nvim_integration_command.py" install minimal --link-init; \
5252
HOME="$$TMP_HOME" python3 "$$TMP_HOME/.config/opencode/my_opencode/scripts/nvim_integration_command.py" status; \
5353
HOME="$$TMP_HOME" python3 "$$TMP_HOME/.config/opencode/my_opencode/scripts/devtools_command.py" status; \

scripts/selftest.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1616,6 +1616,39 @@ def run_bg(*args: str) -> subprocess.CompletedProcess[str]:
16161616
"browser doctor should report missing selected-provider dependencies",
16171617
)
16181618

1619+
browser_profile_reset = subprocess.run(
1620+
[sys.executable, str(BROWSER_SCRIPT), "profile", "playwright"],
1621+
capture_output=True,
1622+
text=True,
1623+
env=refactor_env,
1624+
check=False,
1625+
cwd=REPO_ROOT,
1626+
)
1627+
expect(
1628+
browser_profile_reset.returncode == 0,
1629+
"browser profile should switch back to playwright",
1630+
)
1631+
browser_doctor_playwright = subprocess.run(
1632+
[sys.executable, str(BROWSER_SCRIPT), "doctor", "--json"],
1633+
capture_output=True,
1634+
text=True,
1635+
env=refactor_env,
1636+
check=False,
1637+
cwd=REPO_ROOT,
1638+
)
1639+
expect(
1640+
browser_doctor_playwright.returncode == 0,
1641+
"browser doctor should succeed after switching back to playwright",
1642+
)
1643+
browser_doctor_playwright_report = parse_json_output(
1644+
browser_doctor_playwright.stdout
1645+
)
1646+
expect(
1647+
browser_doctor_playwright_report.get("provider") == "playwright"
1648+
and browser_doctor_playwright_report.get("selected_ready") is True,
1649+
"browser doctor should report ready selected provider after reset",
1650+
)
1651+
16191652
keyword_report = resolve_prompt_modes(
16201653
"Please safe-apply and deep-analyze this migration; ulw can wait.",
16211654
enabled=True,

0 commit comments

Comments
 (0)