Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion playwright/_impl/_api_structures.py
Original file line number Diff line number Diff line change
Expand Up @@ -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]]
Expand All @@ -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):
Expand Down
18 changes: 18 additions & 0 deletions tests/test_storage_state_typing.py
Original file line number Diff line number Diff line change
@@ -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__