add moveing of tabs and groups, multi browser support, auto complite into terminal, extract html and adding testing

This commit is contained in:
2026-04-09 01:41:01 +02:00
parent 0cb2f1cb3f
commit ab4ba97886
19 changed files with 1069 additions and 57 deletions
+83
View File
@@ -0,0 +1,83 @@
"""Tests for navigate.* commands."""
import pytest
from browser_cli.client import send_command
def test_nav_open_and_close(browser):
"""Open a tab, verify it appears in the list, then close it."""
result = browser("navigate.open", {"url": "https://example.com", "background": True})
assert "id" in result
new_id = result["id"]
tabs = browser("tabs.list")
ids = [t["id"] for t in tabs]
assert new_id in ids
# Clean up
browser("tabs.close", {"tabId": new_id})
tabs_after = browser("tabs.list")
assert new_id not in [t["id"] for t in tabs_after]
def test_nav_focus_by_pattern(browser):
# Open a known URL in background first
result = browser("navigate.open", {"url": "https://example.com", "background": True})
tab_id = result["id"]
focus_result = browser("navigate.focus", {"pattern": "example.com"})
assert focus_result is not None
assert "example.com" in (focus_result.get("url") or "")
browser("tabs.close", {"tabId": tab_id})
def test_nav_focus_by_tab_id(browser):
result = browser("navigate.open", {"url": "https://example.com", "background": True})
tab_id = result["id"]
focus_result = browser("navigate.focus", {"pattern": str(tab_id)})
assert focus_result is not None
assert focus_result.get("id") == tab_id
browser("tabs.close", {"tabId": tab_id})
def test_nav_reload(browser):
result = browser("navigate.open", {"url": "https://example.com", "background": True})
tab_id = result["id"]
try:
reload_result = browser("navigate.reload", {"tabId": tab_id})
assert reload_result is None or isinstance(reload_result, dict)
finally:
browser("tabs.close", {"tabId": tab_id})
def test_nav_hard_reload(browser):
result = browser("navigate.open", {"url": "https://example.com", "background": True})
tab_id = result["id"]
try:
result = browser("navigate.hard_reload", {"tabId": tab_id})
assert result is None or isinstance(result, dict)
finally:
try:
browser("tabs.close", {"tabId": tab_id})
except Exception:
pass # tab ID may change after hard reload
def test_nav_open_in_background(browser):
"""Tab opened with background=True should not be the active tab."""
active_before = next(
t for t in browser("tabs.list") if t.get("active")
)
result = browser("navigate.open", {"url": "https://example.com", "background": True})
new_id = result["id"]
try:
tabs = browser("tabs.list")
new_tab = next(t for t in tabs if t["id"] == new_id)
assert not new_tab.get("active"), "background tab should not be active"
finally:
browser("tabs.close", {"tabId": new_id})