diff --git a/playwright/_impl/_js_handle.py b/playwright/_impl/_js_handle.py index 84ef40d18..d1e8d4fd9 100644 --- a/playwright/_impl/_js_handle.py +++ b/playwright/_impl/_js_handle.py @@ -145,7 +145,7 @@ def serialize_value( return dict(v="Infinity") if value == float("-inf"): return dict(v="-Infinity") - if value == float("-0"): + if value == 0 and math.copysign(1.0, value) == -1.0: return dict(v="-0") if math.isnan(value): return dict(v="NaN") diff --git a/tests/async/test_page_evaluate.py b/tests/async/test_page_evaluate.py index 058263b18..146be6ff7 100644 --- a/tests/async/test_page_evaluate.py +++ b/tests/async/test_page_evaluate.py @@ -40,6 +40,11 @@ async def test_evaluate_transfer_neg_zero(page: Page) -> None: assert result == float("-0") +async def test_evaluate_transfer_positive_zero_stays_positive(page: Page) -> None: + result = await page.evaluate("a => Object.is(a, -0)", 0.0) + assert result is False + + async def test_evaluate_transfer_infinity(page: Page) -> None: result = await page.evaluate("a => a", float("Infinity")) assert result == float("Infinity")