mirror of
https://github.com/feder-cr/invisible_playwright.git
synced 2026-06-07 08:35:12 +02:00
56 lines
1.6 KiB
Python
56 lines
1.6 KiB
Python
"""Public API surface — what users actually import."""
|
|
import importlib
|
|
|
|
import pytest
|
|
|
|
|
|
def test_top_level_import():
|
|
import invisible_playwright as ip
|
|
assert hasattr(ip, "InvisiblePlaywright")
|
|
assert hasattr(ip, "BINARY_VERSION")
|
|
assert hasattr(ip, "FIREFOX_UPSTREAM_VERSION")
|
|
assert hasattr(ip, "__version__")
|
|
|
|
|
|
def test_version_string():
|
|
from invisible_playwright import __version__
|
|
parts = __version__.split(".")
|
|
assert len(parts) >= 2
|
|
assert all(p.isdigit() or p.replace("-", "").replace("rc", "").isdigit()
|
|
or any(c.isdigit() for c in p) for p in parts)
|
|
|
|
|
|
def test_sync_api_module():
|
|
from invisible_playwright.sync_api import InvisiblePlaywright as SyncCls
|
|
from invisible_playwright import InvisiblePlaywright as TopCls
|
|
assert SyncCls is TopCls
|
|
|
|
|
|
def test_async_api_module_importable():
|
|
mod = importlib.import_module("invisible_playwright.async_api")
|
|
assert hasattr(mod, "InvisiblePlaywright")
|
|
|
|
|
|
def test_async_class_is_distinct_from_sync():
|
|
from invisible_playwright import InvisiblePlaywright as Sync
|
|
from invisible_playwright.async_api import InvisiblePlaywright as Async
|
|
assert Sync is not Async
|
|
|
|
|
|
@pytest.mark.parametrize("name", [
|
|
"constants",
|
|
"download",
|
|
"prefs",
|
|
"launcher",
|
|
"cli",
|
|
"_proxy",
|
|
"_fpforge",
|
|
])
|
|
def test_submodule_importable(name):
|
|
importlib.import_module(f"invisible_playwright.{name}")
|
|
|
|
|
|
def test_dunder_all_is_complete():
|
|
import invisible_playwright as ip
|
|
for name in ip.__all__:
|
|
assert hasattr(ip, name), f"{name} declared in __all__ but missing"
|