9aad012bdc
- Add mocked Click CLI tests across DOM, cookies, page, storage, perf, navigation, tabs, groups, sessions, and windows commands. - Cover integration paths for cookies, page info, performance profiles, and web storage commands. - Extend DOM integration coverage for eval, scrolling, waiting, focus, hover, typing, selection, keyboard, and checkbox interactions. - Add native host unit coverage for message framing, socket helpers, paging guards, timeouts, and profile alias resolution.
104 lines
3.9 KiB
Python
104 lines
3.9 KiB
Python
"""Integration tests for cookies.* commands — require a live browser."""
|
|
import time
|
|
|
|
def test_cookies_list_returns_list(browser, http_tab):
|
|
"""cookies.list returns a list (may be empty on a plain https://example.com)."""
|
|
browser("tabs.active", {"tabId": http_tab["id"]})
|
|
cookies = browser("cookies.list", {})
|
|
assert isinstance(cookies, list)
|
|
|
|
def test_cookies_list_has_required_fields(browser, http_tab):
|
|
"""Every cookie returned has at least name, domain and path fields."""
|
|
browser("tabs.active", {"tabId": http_tab["id"]})
|
|
# Set a known cookie so the list is non-empty
|
|
browser("cookies.set", {
|
|
"url": "https://example.com",
|
|
"name": "__pytest_field_check",
|
|
"value": "1",
|
|
})
|
|
cookies = browser("cookies.list", {"url": "https://example.com"})
|
|
assert isinstance(cookies, list)
|
|
assert len(cookies) > 0
|
|
for c in cookies:
|
|
assert "name" in c
|
|
assert "domain" in c
|
|
assert "path" in c
|
|
|
|
def test_cookies_set_and_list(browser, http_tab):
|
|
"""Set a cookie and verify it appears in the list."""
|
|
browser("tabs.active", {"tabId": http_tab["id"]})
|
|
cookie_name = "__pytest_set_test"
|
|
cookie_value = "hello-pytest"
|
|
|
|
browser("cookies.set", {
|
|
"url": "https://example.com",
|
|
"name": cookie_name,
|
|
"value": cookie_value,
|
|
})
|
|
|
|
cookies = browser("cookies.list", {"url": "https://example.com"})
|
|
found = next((c for c in cookies if c.get("name") == cookie_name), None)
|
|
assert found is not None, f"Cookie '{cookie_name}' not found after set"
|
|
assert found["value"] == cookie_value
|
|
|
|
def test_cookies_get(browser, http_tab):
|
|
"""Get a single cookie by URL + name."""
|
|
browser("tabs.active", {"tabId": http_tab["id"]})
|
|
name = "__pytest_get_test"
|
|
value = "get-value-42"
|
|
|
|
browser("cookies.set", {"url": "https://example.com", "name": name, "value": value})
|
|
|
|
cookie = browser("cookies.get", {"url": "https://example.com", "name": name})
|
|
assert cookie is not None
|
|
assert cookie.get("value") == value
|
|
|
|
def test_cookies_get_missing_returns_none(browser, http_tab):
|
|
"""Getting a non-existent cookie returns None."""
|
|
browser("tabs.active", {"tabId": http_tab["id"]})
|
|
cookie = browser("cookies.get", {
|
|
"url": "https://example.com",
|
|
"name": "__pytest_no_such_cookie_zzz",
|
|
})
|
|
assert cookie is None
|
|
|
|
def test_cookies_list_filter_by_domain(browser, http_tab):
|
|
"""Filtering by domain only returns matching cookies."""
|
|
browser("tabs.active", {"tabId": http_tab["id"]})
|
|
browser("cookies.set", {
|
|
"url": "https://example.com",
|
|
"name": "__pytest_domain_filter",
|
|
"value": "yes",
|
|
})
|
|
cookies = browser("cookies.list", {"domain": "example.com"})
|
|
assert isinstance(cookies, list)
|
|
for c in cookies:
|
|
assert "example.com" in c.get("domain", "")
|
|
|
|
def test_cookies_list_filter_by_name(browser, http_tab):
|
|
"""Filtering by name only returns cookies with that name."""
|
|
browser("tabs.active", {"tabId": http_tab["id"]})
|
|
name = "__pytest_name_filter_unique"
|
|
browser("cookies.set", {"url": "https://example.com", "name": name, "value": "y"})
|
|
|
|
cookies = browser("cookies.list", {"name": name})
|
|
assert isinstance(cookies, list)
|
|
assert len(cookies) > 0
|
|
for c in cookies:
|
|
assert c["name"] == name
|
|
|
|
def test_cookies_set_with_secure_flag(browser, http_tab):
|
|
"""Setting a cookie with secure=True persists the secure attribute."""
|
|
browser("tabs.active", {"tabId": http_tab["id"]})
|
|
name = "__pytest_secure_cookie"
|
|
browser("cookies.set", {
|
|
"url": "https://example.com",
|
|
"name": name,
|
|
"value": "secured",
|
|
"secure": True,
|
|
})
|
|
cookies = browser("cookies.list", {"url": "https://example.com", "name": name})
|
|
found = next((c for c in cookies if c["name"] == name), None)
|
|
assert found is not None
|
|
assert found.get("secure") is True
|