From fbaf0bb26397aa498eb9156f06d5a6fe34dd7dd8 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 03:14:29 +0200 Subject: Merging upstream version 125.0.1. Signed-off-by: Daniel Baumann --- remote/test/puppeteer/test/src/touchscreen.spec.ts | 252 +++++++++++++++++---- 1 file changed, 211 insertions(+), 41 deletions(-) (limited to 'remote/test/puppeteer/test/src/touchscreen.spec.ts') diff --git a/remote/test/puppeteer/test/src/touchscreen.spec.ts b/remote/test/puppeteer/test/src/touchscreen.spec.ts index 28a18ec449..94d8e6fecb 100644 --- a/remote/test/puppeteer/test/src/touchscreen.spec.ts +++ b/remote/test/puppeteer/test/src/touchscreen.spec.ts @@ -15,65 +15,235 @@ describe('Touchscreen', () => { describe('Touchscreen.prototype.tap', () => { it('should work', async () => { - const {page, server, isHeadless} = await getTestState(); + const {page, server} = await getTestState(); await page.goto(server.PREFIX + '/input/touchscreen.html'); await page.tap('button'); expect( - ( - await page.evaluate(() => { - return allEvents; - }) - ).filter(({type}) => { - return type !== 'pointermove' || isHeadless; + await page.evaluate(() => { + return allEvents; }) ).toMatchObject([ - {height: 1, type: 'pointerdown', width: 1, x: 5, y: 5}, - {touches: [[5, 5, 0.5, 0.5]], type: 'touchstart'}, - {height: 1, type: 'pointerup', width: 1, x: 5, y: 5}, - {touches: [[5, 5, 0.5, 0.5]], type: 'touchend'}, - {height: 1, type: 'click', width: 1, x: 5, y: 5}, + { + type: 'pointerdown', + x: 5, + y: 5, + width: 1, + height: 1, + altitudeAngle: Math.PI / 2, + azimuthAngle: 0, + pressure: 0.5, + pointerType: 'touch', + twist: 0, + tiltX: 0, + tiltY: 0, + }, + { + type: 'touchstart', + changedTouches: [ + {clientX: 5, clientY: 5, radiusX: 0.5, radiusY: 0.5, force: 0.5}, + ], + activeTouches: [ + {clientX: 5, clientY: 5, radiusX: 0.5, radiusY: 0.5, force: 0.5}, + ], + }, + { + type: 'pointerup', + x: 5, + y: 5, + width: 1, + height: 1, + altitudeAngle: Math.PI / 2, + azimuthAngle: 0, + pressure: 0, + pointerType: 'touch', + twist: 0, + tiltX: 0, + tiltY: 0, + }, + { + type: 'touchend', + changedTouches: [ + {clientX: 5, clientY: 5, radiusX: 0.5, radiusY: 0.5, force: 0.5}, + ], + activeTouches: [], + }, + { + type: 'click', + x: 5, + y: 5, + width: 1, + height: 1, + altitudeAngle: Math.PI / 2, + azimuthAngle: 0, + pressure: 0, + pointerType: 'touch', + twist: 0, + tiltX: 0, + tiltY: 0, + }, ]); }); }); describe('Touchscreen.prototype.touchMove', () => { it('should work', async () => { - const {page, server, isHeadless} = await getTestState(); + const {page, server} = await getTestState(); await page.goto(server.PREFIX + '/input/touchscreen.html'); + // Note that touchmoves are sometimes not triggered if consecutive + // touchmoves are less than 15 pixels. + // + // See https://github.com/puppeteer/puppeteer/issues/10836 await page.touchscreen.touchStart(0, 0); - await page.touchscreen.touchMove(10, 10); - await page.touchscreen.touchMove(15.5, 15); - await page.touchscreen.touchMove(20, 20.4); - await page.touchscreen.touchMove(40, 30); + await page.touchscreen.touchMove(15, 15); + await page.touchscreen.touchMove(30.5, 30); + await page.touchscreen.touchMove(50, 45.4); + await page.touchscreen.touchMove(80, 50); await page.touchscreen.touchEnd(); + expect( - ( - await page.evaluate(() => { - return allEvents; - }) - ).filter(({type}) => { - return type !== 'pointermove' || isHeadless; - }) - ).toMatchObject( - [ - {type: 'pointerdown', x: 0, y: 0, width: 1, height: 1}, - {type: 'touchstart', touches: [[0, 0, 0.5, 0.5]]}, - {type: 'pointermove', x: 10, y: 10, width: 1, height: 1}, - {type: 'touchmove', touches: [[10, 10, 0.5, 0.5]]}, - {type: 'pointermove', x: 16, y: 15, width: 1, height: 1}, - {type: 'touchmove', touches: [[16, 15, 0.5, 0.5]]}, - {type: 'pointermove', x: 20, y: 20, width: 1, height: 1}, - {type: 'touchmove', touches: [[20, 20, 0.5, 0.5]]}, - {type: 'pointermove', x: 40, y: 30, width: 1, height: 1}, - {type: 'touchmove', touches: [[40, 30, 0.5, 0.5]]}, - {type: 'pointerup', x: 40, y: 30, width: 1, height: 1}, - {type: 'touchend', touches: [[40, 30, 0.5, 0.5]]}, - ].filter(({type}) => { - return type !== 'pointermove' || isHeadless; + await page.evaluate(() => { + return allEvents; }) - ); + ).toMatchObject([ + { + type: 'pointerdown', + x: 0, + y: 0, + width: 1, + height: 1, + altitudeAngle: 1.5707963267948966, + azimuthAngle: 0, + pressure: 0.5, + pointerType: 'touch', + twist: 0, + tiltX: 0, + tiltY: 0, + }, + { + type: 'touchstart', + changedTouches: [ + {clientX: 0, clientY: 0, radiusX: 0.5, radiusY: 0.5, force: 0.5}, + ], + activeTouches: [ + {clientX: 0, clientY: 0, radiusX: 0.5, radiusY: 0.5, force: 0.5}, + ], + }, + { + type: 'pointermove', + x: 15, + y: 15, + width: 1, + height: 1, + altitudeAngle: 1.5707963267948966, + azimuthAngle: 0, + pressure: 0.5, + pointerType: 'touch', + twist: 0, + tiltX: 0, + tiltY: 0, + }, + { + type: 'touchmove', + changedTouches: [ + {clientX: 15, clientY: 15, radiusX: 0.5, radiusY: 0.5, force: 0.5}, + ], + activeTouches: [ + {clientX: 15, clientY: 15, radiusX: 0.5, radiusY: 0.5, force: 0.5}, + ], + }, + { + type: 'pointermove', + x: 31, + y: 30, + width: 1, + height: 1, + altitudeAngle: 1.5707963267948966, + azimuthAngle: 0, + pressure: 0.5, + pointerType: 'touch', + twist: 0, + tiltX: 0, + tiltY: 0, + }, + { + type: 'touchmove', + changedTouches: [ + {clientX: 31, clientY: 30, radiusX: 0.5, radiusY: 0.5, force: 0.5}, + ], + activeTouches: [ + {clientX: 31, clientY: 30, radiusX: 0.5, radiusY: 0.5, force: 0.5}, + ], + }, + { + type: 'pointermove', + x: 50, + y: 45, + width: 1, + height: 1, + altitudeAngle: 1.5707963267948966, + azimuthAngle: 0, + pressure: 0.5, + pointerType: 'touch', + twist: 0, + tiltX: 0, + tiltY: 0, + }, + { + type: 'touchmove', + changedTouches: [ + {clientX: 50, clientY: 45, radiusX: 0.5, radiusY: 0.5, force: 0.5}, + ], + activeTouches: [ + {clientX: 50, clientY: 45, radiusX: 0.5, radiusY: 0.5, force: 0.5}, + ], + }, + { + type: 'pointermove', + x: 80, + y: 50, + width: 1, + height: 1, + altitudeAngle: 1.5707963267948966, + azimuthAngle: 0, + pressure: 0.5, + pointerType: 'touch', + twist: 0, + tiltX: 0, + tiltY: 0, + }, + { + type: 'touchmove', + changedTouches: [ + {clientX: 80, clientY: 50, radiusX: 0.5, radiusY: 0.5, force: 0.5}, + ], + activeTouches: [ + {clientX: 80, clientY: 50, radiusX: 0.5, radiusY: 0.5, force: 0.5}, + ], + }, + { + type: 'pointerup', + x: 80, + y: 50, + width: 1, + height: 1, + altitudeAngle: 1.5707963267948966, + azimuthAngle: 0, + pressure: 0, + pointerType: 'touch', + twist: 0, + tiltX: 0, + tiltY: 0, + }, + { + type: 'touchend', + changedTouches: [ + {clientX: 80, clientY: 50, radiusX: 0.5, radiusY: 0.5, force: 0.5}, + ], + activeTouches: [], + }, + ]); }); }); }); -- cgit v1.2.3