microsoft / microsoft/playwright-python
[Bug]: 0.0 is serialized as -0 when passed to evaluate()
オープン
初心者向け
まだ誰も着手していません。
- 主要言語
- Python
- スター
- 15k
- フォーク
- 1.2k
- 平均マージ
- 55分
- マージ済み PR(30日)
- 4
説明
Version
1.62.1
Steps to reproduce
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page()
result = page.evaluate("(value) => Object.is(value, -0)", 0.0)
print(result)
browser.close()
Expected behavior
Passing Python 0.0 to JavaScript should preserve positive zero.
Object.is(value, -0) should return false.
Actual behavior
Python 0.0 is serialized as JavaScript -0.
Object.is(value, -0) returns true.
Additional context
No response
Environment
- Operating System: macOS Tahoe 26.4.1
- CPU: Apple M1 (arm64)
- Browser: Chromium
- Python Version: Python 3.14.5
- Other info:
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
sync_playwright の page.evaluate エントリーポイントから始め、提供された Python の例を使って問題を再現します。引数 0.0 が JavaScript に到達する前にどのようにシリアライズされるかを追跡し、その後、修正後の動作で Object.is(value, -0) が false を返すことを確認します。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- python
- 領域
- api, testing-qa
- issue の種類
- バグ
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 活発さ
- 活発
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 68/100