fix: account open fire-and-forget; open-browser direct+sync
All checks were successful
技能自动化发布 / release (push) Successful in 8s
All checks were successful
技能自动化发布 / release (push) Successful in 8s
This commit is contained in:
@@ -14,8 +14,7 @@ class TestPlaywrightLaunchHelpers:
|
||||
args, _ignore = persistent_context_launch_parts()
|
||||
assert "--start-maximized" in args
|
||||
|
||||
def test_open_child_runner_launch_keywords_documented(self):
|
||||
"""launch_persistent_context kwargs contract (static read of source)."""
|
||||
def test_open_child_runner_cleans_config_after_read(self):
|
||||
import os
|
||||
|
||||
path = os.path.join(
|
||||
@@ -28,10 +27,63 @@ class TestPlaywrightLaunchHelpers:
|
||||
path = os.path.abspath(path)
|
||||
with open(path, encoding="utf-8") as f:
|
||||
src = f.read()
|
||||
assert "os.unlink(cfg_path)" in src
|
||||
assert "wait_for_event" in src
|
||||
assert "launch_persistent_context" in src
|
||||
assert "headless=False" in src
|
||||
assert "no_viewport=True" in src
|
||||
assert '"channel"' in src or "'channel'" in src
|
||||
|
||||
|
||||
class TestCmdOpenDetached:
|
||||
def test_cmd_open_spawns_and_returns(self, clean_db, tmp_path, capsys, monkeypatch):
|
||||
from db.accounts_repo import insert_account
|
||||
from service import browser_service
|
||||
from util.platforms import seed_platforms
|
||||
|
||||
seed_platforms(clean_db)
|
||||
profile = tmp_path / "prof"
|
||||
aid = insert_account(
|
||||
clean_db,
|
||||
platform_key="sohu",
|
||||
account_label="open-test",
|
||||
login_id="1",
|
||||
login_id_type="phone",
|
||||
tenant_id=None,
|
||||
environment="production",
|
||||
role="default",
|
||||
provider_code="sohu",
|
||||
profile_dir=str(profile),
|
||||
url="https://example.com",
|
||||
extra_json=None,
|
||||
now=1_700_000_000,
|
||||
auth_strategy="password_auto",
|
||||
)
|
||||
clean_db.commit()
|
||||
|
||||
monkeypatch.setattr(browser_service, "resolve_chromium_channel", lambda: "chrome")
|
||||
|
||||
class FakeProc:
|
||||
pid = 4242
|
||||
|
||||
spawned = {}
|
||||
|
||||
def fake_spawn(cmd, *, cwd, env):
|
||||
spawned["cmd"] = cmd
|
||||
spawned["cwd"] = cwd
|
||||
return FakeProc()
|
||||
|
||||
monkeypatch.setattr(browser_service, "_spawn_browser_child", fake_spawn)
|
||||
|
||||
browser_service.cmd_open(str(aid))
|
||||
out = capsys.readouterr().out.strip()
|
||||
import json
|
||||
|
||||
payload = json.loads(out.splitlines()[-1])
|
||||
assert payload["success"] is True
|
||||
assert payload["data"]["detached"] is True
|
||||
assert payload["data"]["pid"] == 4242
|
||||
assert "-m" in spawned["cmd"]
|
||||
assert "service.open_child_runner" in spawned["cmd"]
|
||||
|
||||
|
||||
class TestResolveChromiumChannel:
|
||||
|
||||
Reference in New Issue
Block a user