feat: dispatch wheel event (#15593)
This commit is contained in:
parent
00848b1bcf
commit
3436e64b75
|
|
@ -853,6 +853,7 @@ export class InjectedScript {
|
||||||
case 'pointer': event = new PointerEvent(type, eventInit); break;
|
case 'pointer': event = new PointerEvent(type, eventInit); break;
|
||||||
case 'focus': event = new FocusEvent(type, eventInit); break;
|
case 'focus': event = new FocusEvent(type, eventInit); break;
|
||||||
case 'drag': event = new DragEvent(type, eventInit); break;
|
case 'drag': event = new DragEvent(type, eventInit); break;
|
||||||
|
case 'wheel': event = new WheelEvent(type, eventInit); break;
|
||||||
default: event = new Event(type, eventInit); break;
|
default: event = new Event(type, eventInit); break;
|
||||||
}
|
}
|
||||||
node.dispatchEvent(event);
|
node.dispatchEvent(event);
|
||||||
|
|
@ -1155,7 +1156,7 @@ function oneLine(s: string): string {
|
||||||
return s.replace(/\n/g, '↵').replace(/\t/g, '⇆');
|
return s.replace(/\n/g, '↵').replace(/\t/g, '⇆');
|
||||||
}
|
}
|
||||||
|
|
||||||
const eventType = new Map<string, 'mouse' | 'keyboard' | 'touch' | 'pointer' | 'focus' | 'drag'>([
|
const eventType = new Map<string, 'mouse' | 'keyboard' | 'touch' | 'pointer' | 'focus' | 'drag' | 'wheel'>([
|
||||||
['auxclick', 'mouse'],
|
['auxclick', 'mouse'],
|
||||||
['click', 'mouse'],
|
['click', 'mouse'],
|
||||||
['dblclick', 'mouse'],
|
['dblclick', 'mouse'],
|
||||||
|
|
@ -1201,6 +1202,8 @@ const eventType = new Map<string, 'mouse' | 'keyboard' | 'touch' | 'pointer' | '
|
||||||
['dragleave', 'drag'],
|
['dragleave', 'drag'],
|
||||||
['dragexit', 'drag'],
|
['dragexit', 'drag'],
|
||||||
['drop', 'drag'],
|
['drop', 'drag'],
|
||||||
|
|
||||||
|
['wheel', 'wheel'],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const kHoverHitTargetInterceptorEvents = new Set(['mousemove']);
|
const kHoverHitTargetInterceptorEvents = new Set(['mousemove']);
|
||||||
|
|
|
||||||
|
|
@ -154,3 +154,20 @@ it('should dispatch click event via ElementHandles', async ({ page, server }) =>
|
||||||
await button.dispatchEvent('click');
|
await button.dispatchEvent('click');
|
||||||
expect(await page.evaluate(() => window['result'])).toBe('Clicked');
|
expect(await page.evaluate(() => window['result'])).toBe('Clicked');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should dispatch wheel event', async ({ page, server }) => {
|
||||||
|
it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/15562' });
|
||||||
|
await page.goto(server.PREFIX + '/input/scrollable.html');
|
||||||
|
const eventsHandle = await page.locator('body').evaluateHandle(e => {
|
||||||
|
const events = [];
|
||||||
|
e.addEventListener('wheel', event => {
|
||||||
|
events.push(event);
|
||||||
|
console.log(event);
|
||||||
|
});
|
||||||
|
return events;
|
||||||
|
});
|
||||||
|
await page.locator('body').dispatchEvent('wheel', { deltaX: 100, deltaY: 200 });
|
||||||
|
expect(await eventsHandle.evaluate(e => e.length)).toBe(1);
|
||||||
|
expect(await eventsHandle.evaluate(e => e[0] instanceof WheelEvent)).toBeTruthy();
|
||||||
|
expect(await eventsHandle.evaluate(e => ({ deltaX: e[0].deltaX, deltaY: e[0].deltaY }))).toEqual({ deltaX: 100, deltaY: 200 });
|
||||||
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue