From 9a3dcd22c02ddfe56e3810712fd978977e0823ff Mon Sep 17 00:00:00 2001 From: Shubham Bhardwaj <32607282+shubhambhar007@users.noreply.github.com> Date: Tue, 15 Sep 2026 23:27:00 +0530 Subject: [PATCH 1/2] fix: type optional storage state entries --- playwright/_impl/_api_structures.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/playwright/_impl/_api_structures.py b/playwright/_impl/_api_structures.py index 17d1f0346..136177f81 100644 --- a/playwright/_impl/_api_structures.py +++ b/playwright/_impl/_api_structures.py @@ -85,11 +85,24 @@ class LocalStorageEntry(TypedDict): value: str -class OriginState(TypedDict): +class _RequiredOriginState(TypedDict): origin: str localStorage: List[LocalStorageEntry] +class _RequiredOPFSEntry(TypedDict): + path: str + type: Literal["directory", "file"] + + +class OPFSEntry(_RequiredOPFSEntry, total=False): + base64: str + + +class OriginState(_RequiredOriginState, total=False): + opfs: List[OPFSEntry] + + class PdfMargins(TypedDict, total=False): top: Optional[Union[str, float]] right: Optional[Union[str, float]] @@ -112,6 +125,7 @@ class ProxySettings(TypedDict, total=False): class StorageState(TypedDict, total=False): cookies: List[StorageStateCookie] origins: List[OriginState] + credentials: List["VirtualCredential"] class ClientCertificate(TypedDict, total=False): From d7196b8ddcf27e9f00e9dda88fa7adaec0069ffb Mon Sep 17 00:00:00 2001 From: Shubham Bhardwaj <32607282+shubhambhar007@users.noreply.github.com> Date: Tue, 15 Sep 2026 23:27:48 +0530 Subject: [PATCH 2/2] test: cover optional storage state fields --- tests/test_storage_state_typing.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 tests/test_storage_state_typing.py diff --git a/tests/test_storage_state_typing.py b/tests/test_storage_state_typing.py new file mode 100644 index 000000000..2e8201b5a --- /dev/null +++ b/tests/test_storage_state_typing.py @@ -0,0 +1,18 @@ +from typing import List, get_type_hints + +from playwright._impl._api_structures import ( + OPFSEntry, + OriginState, + StorageState, + VirtualCredential, +) + + +def test_storage_state_optional_snapshot_fields_are_typed() -> None: + assert get_type_hints(StorageState)["credentials"] == List[VirtualCredential] + assert get_type_hints(OriginState)["opfs"] == List[OPFSEntry] + assert "credentials" in StorageState.__optional_keys__ + assert "opfs" in OriginState.__optional_keys__ + assert {"origin", "localStorage"} <= OriginState.__required_keys__ + assert {"path", "type"} <= OPFSEntry.__required_keys__ + assert "base64" in OPFSEntry.__optional_keys__