1515import asyncio
1616import os
1717import re
18+ import sys
1819
1920import pytest
2021
@@ -241,7 +242,21 @@ async def test_should_work_for_webkitdirectory(page):
241242 assert file_chooser .is_multiple ()
242243
243244
244- async def test_wheel_should_work (page : Page , server ):
245+ def _assert_wheel_event (expected , received , browser_name ):
246+ # Chromium reports deltaX/deltaY scaled by host device scale factor.
247+ # https://bugs.chromium.org/p/chromium/issues/detail?id=1324819
248+ # https://github.com/microsoft/playwright/issues/7362
249+ # Different bots have different scale factors (usually 1 or 2), so we just ignore the values
250+ # instead of guessing the host scale factor.
251+ if sys .platform == "darwin" and browser_name == "chromium" :
252+ del expected ["deltaX" ]
253+ del expected ["deltaY" ]
254+ del received ["deltaX" ]
255+ del received ["deltaY" ]
256+ assert received == expected
257+
258+
259+ async def test_wheel_should_work (page : Page , server , browser_name : str ):
245260 await page .set_content (
246261 """
247262 <div style="width: 5000px; height: 5000px;"></div>
@@ -250,17 +265,21 @@ async def test_wheel_should_work(page: Page, server):
250265 await page .mouse .move (50 , 60 )
251266 await _listen_for_wheel_events (page , "div" )
252267 await page .mouse .wheel (0 , 100 )
253- assert await page .evaluate ("window.lastEvent" ) == {
254- "deltaX" : 0 ,
255- "deltaY" : 100 ,
256- "clientX" : 50 ,
257- "clientY" : 60 ,
258- "deltaMode" : 0 ,
259- "ctrlKey" : False ,
260- "shiftKey" : False ,
261- "altKey" : False ,
262- "metaKey" : False ,
263- }
268+ _assert_wheel_event (
269+ await page .evaluate ("window.lastEvent" ),
270+ {
271+ "deltaX" : 0 ,
272+ "deltaY" : 100 ,
273+ "clientX" : 50 ,
274+ "clientY" : 60 ,
275+ "deltaMode" : 0 ,
276+ "ctrlKey" : False ,
277+ "shiftKey" : False ,
278+ "altKey" : False ,
279+ "metaKey" : False ,
280+ },
281+ browser_name ,
282+ )
264283 await page .wait_for_function ("window.scrollY === 100" )
265284
266285
0 commit comments