From 174c52958f7d212a07f6d0f52dbad04ba2068ee8 Mon Sep 17 00:00:00 2001 From: bymyself Date: Tue, 17 Sep 2024 01:15:05 -0700 Subject: [PATCH] Add test on mobile canvas panning (#863) * Add test on mobile canvas panning * Update test expectations [skip ci] --------- Co-authored-by: github-actions --- browser_tests/ComfyPage.ts | 18 ++++++++++++++++++ browser_tests/interaction.spec.ts | 6 ++++++ .../panned-touch-mobile-chrome-linux.png | Bin 0 -> 7194 bytes 3 files changed, 24 insertions(+) create mode 100644 browser_tests/interaction.spec.ts-snapshots/panned-touch-mobile-chrome-linux.png diff --git a/browser_tests/ComfyPage.ts b/browser_tests/ComfyPage.ts index bb807c955d..2166fbd1ff 100644 --- a/browser_tests/ComfyPage.ts +++ b/browser_tests/ComfyPage.ts @@ -460,6 +460,24 @@ export class ComfyPage { await this.nextFrame() } + async panWithTouch(offset: Position, safeSpot?: Position) { + safeSpot = safeSpot || { x: 10, y: 10 } + const client = await this.page.context().newCDPSession(this.page) + await client.send('Input.dispatchTouchEvent', { + type: 'touchStart', + touchPoints: [safeSpot] + }) + await client.send('Input.dispatchTouchEvent', { + type: 'touchMove', + touchPoints: [{ x: offset.x + safeSpot.x, y: offset.y + safeSpot.y }] + }) + await client.send('Input.dispatchTouchEvent', { + type: 'touchEnd', + touchPoints: [] + }) + await this.nextFrame() + } + async rightClickCanvas() { await this.page.mouse.click(10, 10, { button: 'right' }) await this.nextFrame() diff --git a/browser_tests/interaction.spec.ts b/browser_tests/interaction.spec.ts index 9c3beb7b01..b2b3974c43 100644 --- a/browser_tests/interaction.spec.ts +++ b/browser_tests/interaction.spec.ts @@ -350,6 +350,12 @@ test.describe('Canvas Interaction', () => { await comfyPage.pan({ x: 800, y: 300 }, { x: 1000, y: 10 }) await expect(comfyPage.canvas).toHaveScreenshot('panned-back-to-one.png') }) + + test('@mobile Can pan with touch', async ({ comfyPage }) => { + await comfyPage.closeMenu() + await comfyPage.panWithTouch({ x: 200, y: 200 }) + await expect(comfyPage.canvas).toHaveScreenshot('panned-touch.png') + }) }) test.describe('Widget Interaction', () => { diff --git a/browser_tests/interaction.spec.ts-snapshots/panned-touch-mobile-chrome-linux.png b/browser_tests/interaction.spec.ts-snapshots/panned-touch-mobile-chrome-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..ce20e7f1cc3ef816ac2cd2d1afd459ab1fe0a69d GIT binary patch literal 7194 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