fix moving of browser groups and allow to store groups into session
This commit is contained in:
@@ -131,3 +131,61 @@ def test_group_tabs_returns_list(browser):
|
||||
browser("tabs.close", {"tabId": t["id"]})
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
def test_group_move_forward_swaps_adjacent_group_blocks(browser):
|
||||
group_a = browser("group.open", {"name": "__move_group_a__"})
|
||||
group_b = browser("group.open", {"name": "__move_group_b__"})
|
||||
gid_a = group_a["id"]
|
||||
gid_b = group_b["id"]
|
||||
|
||||
created_tab_ids = set()
|
||||
|
||||
try:
|
||||
extra_a = browser("group.add_tab", {"group": str(gid_a), "url": "https://example.com/?group=a"})
|
||||
extra_b = browser("group.add_tab", {"group": str(gid_b), "url": "https://example.com/?group=b"})
|
||||
created_tab_ids.update([extra_a["tabId"], extra_b["tabId"]])
|
||||
|
||||
tabs_before = browser("tabs.list")
|
||||
block_order_before = [
|
||||
t["groupId"] for t in tabs_before
|
||||
if t.get("groupId") in {gid_a, gid_b}
|
||||
]
|
||||
assert block_order_before
|
||||
assert block_order_before[0] == gid_a
|
||||
|
||||
browser("group.move", {"group": str(gid_a), "forward": True})
|
||||
|
||||
tabs_after = browser("tabs.list")
|
||||
grouped_after = [
|
||||
t for t in tabs_after
|
||||
if t.get("groupId") in {gid_a, gid_b}
|
||||
]
|
||||
|
||||
assert grouped_after
|
||||
assert grouped_after[0]["groupId"] == gid_b
|
||||
assert grouped_after[-1]["groupId"] == gid_a
|
||||
|
||||
group_ids_after = {t["id"]: t["groupId"] for t in grouped_after}
|
||||
for t in browser("group.tabs", {"groupId": gid_a}):
|
||||
assert group_ids_after[t["id"]] == gid_a
|
||||
for t in browser("group.tabs", {"groupId": gid_b}):
|
||||
assert group_ids_after[t["id"]] == gid_b
|
||||
finally:
|
||||
for gid in (gid_a, gid_b):
|
||||
try:
|
||||
group_tabs = browser("group.tabs", {"groupId": gid})
|
||||
except Exception:
|
||||
group_tabs = []
|
||||
try:
|
||||
browser("group.close", {"groupId": gid})
|
||||
except Exception:
|
||||
pass
|
||||
for t in group_tabs:
|
||||
created_tab_ids.add(t["id"])
|
||||
|
||||
for tab_id in created_tab_ids:
|
||||
try:
|
||||
browser("tabs.close", {"tabId": tab_id})
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
+54
-1
@@ -38,9 +38,62 @@ def test_session_remove(browser):
|
||||
assert SESSION_NAME + "_remove" not in names
|
||||
|
||||
|
||||
def test_session_load_restores_group_metadata(browser):
|
||||
session_name = SESSION_NAME + "_groups"
|
||||
group_name = "__session_group_restore__"
|
||||
group_url = "https://example.com/?session-group=1"
|
||||
|
||||
group = browser("group.open", {"name": group_name})
|
||||
gid = group["id"]
|
||||
created_ids = set()
|
||||
|
||||
try:
|
||||
added = browser("group.add_tab", {"group": str(gid), "url": group_url})
|
||||
created_ids.add(added["tabId"])
|
||||
|
||||
browser("session.save", {"name": session_name})
|
||||
|
||||
original_tabs = browser("group.tabs", {"groupId": gid})
|
||||
created_ids.update(t["id"] for t in original_tabs)
|
||||
browser("group.close", {"groupId": gid})
|
||||
for tab_id in list(created_ids):
|
||||
try:
|
||||
browser("tabs.close", {"tabId": tab_id})
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
baseline_ids = {t["id"] for t in browser("tabs.list")}
|
||||
browser("session.load", {"name": session_name})
|
||||
|
||||
tabs_after = browser("tabs.list")
|
||||
loaded_ids = {t["id"] for t in tabs_after} - baseline_ids
|
||||
|
||||
restored_groups = browser("group.query", {"search": group_name})
|
||||
assert restored_groups, "Expected saved group to be restored"
|
||||
|
||||
restored = next((g for g in restored_groups if g.get("title") == group_name), None)
|
||||
assert restored is not None
|
||||
|
||||
restored_tabs = browser("group.tabs", {"groupId": restored["id"]})
|
||||
restored_urls = {t["url"] for t in restored_tabs}
|
||||
assert group_url in restored_urls
|
||||
|
||||
browser("group.close", {"groupId": restored["id"]})
|
||||
for tab_id in loaded_ids:
|
||||
try:
|
||||
browser("tabs.close", {"tabId": tab_id})
|
||||
except Exception:
|
||||
pass
|
||||
finally:
|
||||
try:
|
||||
browser("session.remove", {"name": session_name})
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
def teardown_module(module):
|
||||
"""Clean up test sessions after all tests run."""
|
||||
for name in [SESSION_NAME, SESSION_NAME + "_a", SESSION_NAME + "_b"]:
|
||||
for name in [SESSION_NAME, SESSION_NAME + "_a", SESSION_NAME + "_b", SESSION_NAME + "_groups"]:
|
||||
try:
|
||||
send_command("session.remove", {"name": name})
|
||||
except Exception:
|
||||
|
||||
Reference in New Issue
Block a user