refactor(api): namespaced SDK + dedicated transport layer
Testing / remote-protocol-compat (0.9.3) (push) Successful in 42s
Testing / remote-protocol-compat (0.9.5) (push) Successful in 44s
Package Extension / package-extension (push) Successful in 43s
Build & Publish Package / publish (push) Successful in 43s
Testing / test (push) Successful in 45s
Testing / remote-protocol-compat (0.9.3) (push) Successful in 42s
Testing / remote-protocol-compat (0.9.5) (push) Successful in 44s
Package Extension / package-extension (push) Successful in 43s
Build & Publish Package / publish (push) Successful in 43s
Testing / test (push) Successful in 45s
Restructure the Python API and internals around composable namespaces and a standalone transport/endpoint layer. Bump to 0.12.0. Python API: - Replace flat methods (b.tabs_list(), b.group_list()) with namespaces: b.nav, b.tabs, b.groups, b.windows, b.dom, b.extract, b.page, b.storage, b.cookies, b.session, b.perf, b.extension. - Shrink browser_cli/__init__.py to a thin composition root; move all behaviour into browser_cli/sdk/ (one module per namespace + factories, base, routing). Internals: - Add browser_cli/transport.py and remote_transport.py to isolate IPC from command logic; client.py now delegates instead of owning transport. - Add browser_cli/endpoints.py for endpoint resolution and browser_cli/errors.py for shared error types. - Extract markdown rendering into browser_cli/markdown.py (out of extract). - Add USER_AGENT to version_manager. Tooling & tests: - Add justfile with common dev tasks. - Update CLI commands and demo to the namespaced API. - Rework tests for the new layout; add test_transport.py and test_refactor_boundaries.py to lock in module boundaries. BREAKING CHANGE: flat API methods are removed in favour of namespaces (e.g. b.tabs_list() -> b.tabs.list(), b.group_list() -> b.groups.list()).
This commit is contained in:
@@ -111,7 +111,6 @@ def test_large_extension_operations_yield_between_batches():
|
||||
assert "perf.set_profile" in perf
|
||||
assert "__background" in connection
|
||||
|
||||
|
||||
def test_session_autosave_is_debounced_and_non_overlapping():
|
||||
# The autosave lifecycle moved out of session.ts into a dedicated
|
||||
# AutoSaveManager (autosave.ts) during the structure refactor; the shared
|
||||
@@ -137,31 +136,34 @@ def test_session_autosave_is_debounced_and_non_overlapping():
|
||||
assert "setTimeout(() => this.runAutoSave(), delayMs)" in autosave
|
||||
assert "clearTimeout(this.autoSaveTimer)" in autosave
|
||||
|
||||
|
||||
def test_cli_and_sdk_expose_gentle_restore_controls():
|
||||
session_cli = (ROOT / "browser_cli" / "commands" / "session.py").read_text()
|
||||
tabs_cli = (ROOT / "browser_cli" / "commands" / "tabs.py").read_text()
|
||||
groups_cli = (ROOT / "browser_cli" / "commands" / "groups.py").read_text()
|
||||
sdk = (ROOT / "browser_cli" / "__init__.py").read_text()
|
||||
commands_init = (ROOT / "browser_cli" / "commands" / "__init__.py").read_text()
|
||||
sdk_session = (ROOT / "browser_cli" / "sdk" / "session.py").read_text()
|
||||
sdk_perf = (ROOT / "browser_cli" / "sdk" / "perf.py").read_text()
|
||||
|
||||
assert "--gentle-mode" in session_cli
|
||||
# The --gentle-mode flag is defined once via the shared gentle_mode_option helper.
|
||||
assert '"--gentle-mode"' in commands_init
|
||||
assert "gentle_mode_option" in session_cli
|
||||
assert "--discard-background-tabs" in session_cli
|
||||
assert "--background" in session_cli
|
||||
assert "--lazy" in session_cli
|
||||
assert "--eager-tabs" in session_cli
|
||||
assert "job-status" in session_cli
|
||||
assert "job-cancel" in session_cli
|
||||
assert "discardBackgroundTabs" in session_cli
|
||||
assert "--gentle-mode" in tabs_cli
|
||||
assert "gentleMode" in tabs_cli
|
||||
assert "--gentle-mode" in groups_cli
|
||||
assert "discard_background_tabs" in sdk
|
||||
assert "discardBackgroundTabs" in sdk
|
||||
assert "session_load_background" in sdk
|
||||
assert "job_status" in sdk
|
||||
assert "job_cancel" in sdk
|
||||
assert "perf_status" in sdk
|
||||
assert "set_performance_profile" in sdk
|
||||
assert "discard_background_tabs" in session_cli
|
||||
assert "gentle_mode_option" in tabs_cli
|
||||
assert "gentle_mode" in tabs_cli
|
||||
assert "gentle_mode_option" in groups_cli
|
||||
assert "discard_background_tabs" in sdk_session
|
||||
assert "discardBackgroundTabs" in sdk_session
|
||||
assert "def load_background" in sdk_session
|
||||
assert "def job_status" in sdk_perf
|
||||
assert "def job_cancel" in sdk_perf
|
||||
assert "def status" in sdk_perf
|
||||
assert "def set_profile" in sdk_perf
|
||||
|
||||
perf_cli = (ROOT / "browser_cli" / "commands" / "perf.py").read_text()
|
||||
root_cli = (ROOT / "browser_cli" / "cli.py").read_text()
|
||||
|
||||
Reference in New Issue
Block a user