mirror of
https://github.com/microsoft/playwright.git
synced 2025-06-26 21:40:17 +00:00
test: add tests for input with open context menu (#21081)
These might be failing on certain platforms and browsers. References #20823
This commit is contained in:
parent
1432c406ad
commit
07bb483156
@ -663,3 +663,40 @@ async function captureLastKeydown(page) {
|
|||||||
});
|
});
|
||||||
return lastEvent;
|
return lastEvent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
it('should dispatch insertText after context menu was opened', async ({ server, page, browserName }) => {
|
||||||
|
await page.goto(server.PREFIX + '/input/textarea.html');
|
||||||
|
await page.evaluate(() => {
|
||||||
|
window['contextMenuPromise'] = new Promise(x => {
|
||||||
|
window.addEventListener('contextmenu', x, false);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
const box = await page.locator('textarea').boundingBox();
|
||||||
|
const cx = box.x + box.width / 2;
|
||||||
|
const cy = box.y + box.height / 2;
|
||||||
|
await page.mouse.click(cx, cy, { button: 'right' });
|
||||||
|
await page.evaluate(() => window['contextMenuPromise']);
|
||||||
|
|
||||||
|
await page.keyboard.insertText('嗨');
|
||||||
|
await expect.poll(() => page.locator('textarea').inputValue()).toBe('嗨');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should type after context menu was opened', async ({ server, page, browserName }) => {
|
||||||
|
await page.evaluate(() => {
|
||||||
|
window['keys'] = [];
|
||||||
|
window.addEventListener('keydown', event => window['keys'].push(event.key));
|
||||||
|
window['contextMenuPromise'] = new Promise(x => {
|
||||||
|
window.addEventListener('contextmenu', x, false);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
await page.mouse.move(100, 100);
|
||||||
|
await page.mouse.down({ button: 'right' });
|
||||||
|
await page.evaluate(() => window['contextMenuPromise']);
|
||||||
|
|
||||||
|
await page.keyboard.down('ArrowDown');
|
||||||
|
|
||||||
|
await expect.poll(() => page.evaluate('window.keys')).toEqual(['ArrowDown']);
|
||||||
|
});
|
||||||
|
@ -259,3 +259,28 @@ it('should not crash on mouse drag with any button', async ({ page }) => {
|
|||||||
await page.mouse.move(100, 100);
|
await page.mouse.move(100, 100);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should dispatch mouse move after context menu was opened', async ({ page, browserName }) => {
|
||||||
|
it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/20823' });
|
||||||
|
it.fixme(browserName === 'firefox');
|
||||||
|
await page.evaluate(() => {
|
||||||
|
window['contextMenuPromise'] = new Promise(x => {
|
||||||
|
window.addEventListener('contextmenu', x, false);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
const CX = 100, CY = 100;
|
||||||
|
await page.mouse.move(CX, CY);
|
||||||
|
await page.mouse.down({ button: 'right' });
|
||||||
|
await page.evaluate(() => window['contextMenuPromise']);
|
||||||
|
const N = 20;
|
||||||
|
for (const radius of [10, 30, 60, 90]) {
|
||||||
|
for (let i = 0; i < N; ++i) {
|
||||||
|
const angle = 2 * Math.PI * i / N;
|
||||||
|
const x = CX + Math.round(radius * Math.cos(angle));
|
||||||
|
const y = CY + Math.round(radius * Math.sin(angle));
|
||||||
|
console.log(x, y);
|
||||||
|
await page.mouse.move(x, y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
@ -67,6 +67,36 @@ it('should dispatch wheel events @smoke', async ({ page, server }) => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should dispatch wheel events after context menu was opened', async ({ page, browserName }) => {
|
||||||
|
it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/20823' });
|
||||||
|
it.fixme(browserName === 'firefox');
|
||||||
|
|
||||||
|
await page.setContent(`<div style="width: 5000px; height: 5000px;"></div>`);
|
||||||
|
await page.mouse.move(50, 60);
|
||||||
|
await page.evaluate(() => {
|
||||||
|
window['contextMenuPromise'] = new Promise(x => {
|
||||||
|
window.addEventListener('contextmenu', x, false);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
await page.mouse.down({ button: 'right' });
|
||||||
|
await page.evaluate(() => window['contextMenuPromise']);
|
||||||
|
|
||||||
|
await listenForWheelEvents(page, 'div');
|
||||||
|
await page.mouse.wheel(0, 100);
|
||||||
|
await page.waitForFunction('window.scrollY === 100');
|
||||||
|
await expectEvent(page, {
|
||||||
|
deltaX: 0,
|
||||||
|
deltaY: 100,
|
||||||
|
clientX: 50,
|
||||||
|
clientY: 60,
|
||||||
|
deltaMode: 0,
|
||||||
|
ctrlKey: false,
|
||||||
|
shiftKey: false,
|
||||||
|
altKey: false,
|
||||||
|
metaKey: false,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
it('should dispatch wheel events after popup was opened @smoke', async ({ page, server }) => {
|
it('should dispatch wheel events after popup was opened @smoke', async ({ page, server }) => {
|
||||||
await page.setContent(`
|
await page.setContent(`
|
||||||
<div style="width: 5000px; height: 5000px;"></div>
|
<div style="width: 5000px; height: 5000px;"></div>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user