Get puppeteer to produce a touch event - this also uncovered an error where a subsequent click would be picked up as a touch (see thisEventKey change)
This commit is contained in:
@@ -238,6 +238,7 @@ function initMouseInteractionObserver({
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let pointerType: PointerTypes | null = null;
|
let pointerType: PointerTypes | null = null;
|
||||||
|
let thisEventKey = eventKey;
|
||||||
if ('pointerType' in event) {
|
if ('pointerType' in event) {
|
||||||
Object.keys(PointerTypes).forEach(
|
Object.keys(PointerTypes).forEach(
|
||||||
(pointerKey: keyof typeof PointerTypes) => {
|
(pointerKey: keyof typeof PointerTypes) => {
|
||||||
@@ -252,12 +253,12 @@ function initMouseInteractionObserver({
|
|||||||
if (pointerType === PointerTypes.Touch) {
|
if (pointerType === PointerTypes.Touch) {
|
||||||
if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {
|
if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {
|
||||||
// we are actually listening on 'pointerdown'
|
// we are actually listening on 'pointerdown'
|
||||||
eventKey = 'TouchStart';
|
thisEventKey = 'TouchStart';
|
||||||
} else if (
|
} else if (
|
||||||
MouseInteractions[eventKey] === MouseInteractions.MouseUp
|
MouseInteractions[eventKey] === MouseInteractions.MouseUp
|
||||||
) {
|
) {
|
||||||
// we are actually listening on 'pointerup'
|
// we are actually listening on 'pointerup'
|
||||||
eventKey = 'TouchEnd';
|
thisEventKey = 'TouchEnd';
|
||||||
}
|
}
|
||||||
} else if (pointerType == PointerTypes.Pen) {
|
} else if (pointerType == PointerTypes.Pen) {
|
||||||
// TODO: these will get incorrectly emitted as MouseDown/MouseUp
|
// TODO: these will get incorrectly emitted as MouseDown/MouseUp
|
||||||
@@ -278,7 +279,7 @@ function initMouseInteractionObserver({
|
|||||||
const id = mirror.getId(target);
|
const id = mirror.getId(target);
|
||||||
const { clientX, clientY } = e;
|
const { clientX, clientY } = e;
|
||||||
callbackWrapper(mouseInteractionCb)({
|
callbackWrapper(mouseInteractionCb)({
|
||||||
type: MouseInteractions[eventKey],
|
type: MouseInteractions[thisEventKey],
|
||||||
id,
|
id,
|
||||||
x: clientX,
|
x: clientX,
|
||||||
y: clientY,
|
y: clientY,
|
||||||
|
|||||||
@@ -1551,6 +1551,33 @@ exports[`record integration tests can record clicks 1`] = `
|
|||||||
\\"pointerType\\": 0
|
\\"pointerType\\": 0
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
\\"type\\": 3,
|
||||||
|
\\"data\\": {
|
||||||
|
\\"source\\": 2,
|
||||||
|
\\"type\\": 7,
|
||||||
|
\\"id\\": 18,
|
||||||
|
\\"pointerType\\": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
\\"type\\": 3,
|
||||||
|
\\"data\\": {
|
||||||
|
\\"source\\": 2,
|
||||||
|
\\"type\\": 9,
|
||||||
|
\\"id\\": 18,
|
||||||
|
\\"pointerType\\": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
\\"type\\": 3,
|
||||||
|
\\"data\\": {
|
||||||
|
\\"source\\": 2,
|
||||||
|
\\"type\\": 2,
|
||||||
|
\\"id\\": 18,
|
||||||
|
\\"pointerType\\": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
\\"type\\": 3,
|
\\"type\\": 3,
|
||||||
\\"data\\": {
|
\\"data\\": {
|
||||||
|
|||||||
@@ -67,6 +67,18 @@ describe('record integration tests', function (this: ISuite) {
|
|||||||
await page.goto('about:blank');
|
await page.goto('about:blank');
|
||||||
await page.setContent(getHtml.call(this, 'link.html'));
|
await page.setContent(getHtml.call(this, 'link.html'));
|
||||||
await page.click('span');
|
await page.click('span');
|
||||||
|
|
||||||
|
// also tap on the span
|
||||||
|
const span = await page.waitForSelector('span');
|
||||||
|
const center = await page.evaluate((el) => {
|
||||||
|
const { x, y, width, height } = el.getBoundingClientRect();
|
||||||
|
return {
|
||||||
|
x: Math.round(x + width / 2),
|
||||||
|
y: Math.round(y + height / 2),
|
||||||
|
};
|
||||||
|
}, span);
|
||||||
|
await page.touchscreen.tap(center.x, center.y);
|
||||||
|
|
||||||
await page.click('a');
|
await page.click('a');
|
||||||
|
|
||||||
const snapshots = await page.evaluate('window.snapshots');
|
const snapshots = await page.evaluate('window.snapshots');
|
||||||
|
|||||||
Reference in New Issue
Block a user