"""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