Skip to content

Commit c8a78fc

Browse files
mihar-22claude
andcommitted
test(test): add gesture isolation e2e tests for slider and React renderer
Add e2e tests verifying that clicking a slider does not trigger the parent container gesture (togglePaused). Also adds a React-specific gesture test suite to catch synthetic event propagation issues. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent c4fd87a commit c8a78fc

1 file changed

Lines changed: 46 additions & 1 deletion

File tree

apps/e2e/tests/gestures.spec.ts

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { expect, test } from '@playwright/test';
2-
import { DATA_ATTRS, SELECTORS } from '../fixtures/selectors';
2+
import { DATA_ATTRS } from '../fixtures/selectors';
33
import { PlayerPage } from '../page-objects/player';
44

55
/**
@@ -52,6 +52,51 @@ test.describe('Mouse Gestures', () => {
5252
await player.playButton.click();
5353
await expect(player.playButton).not.toHaveAttribute(DATA_ATTRS.paused, { timeout: 5_000 });
5454
});
55+
56+
test('click on slider does not trigger container gesture', async ({ page }) => {
57+
// Start playback so the slider has a seekable range
58+
await player.play();
59+
await page.waitForTimeout(500);
60+
61+
// Click the time slider — should seek, not toggle play/pause
62+
await player.seekTo(50);
63+
await expect(player.playButton).not.toHaveAttribute(DATA_ATTRS.paused, { timeout: 5_000 });
64+
});
65+
});
66+
67+
// --- React gestures (verify slider interaction isolation) ---
68+
69+
test.describe('React Mouse Gestures', () => {
70+
let player: PlayerPage;
71+
72+
test.beforeEach(async ({ page }) => {
73+
player = new PlayerPage(page);
74+
await page.goto('/pages/react-video-mp4.html');
75+
await player.waitForMediaReady();
76+
});
77+
78+
test('click center of container toggles play/pause', async ({ page }) => {
79+
await expect(player.playButton).toHaveAttribute(DATA_ATTRS.paused, '');
80+
81+
const { x, y } = await getCenter(player);
82+
await page.mouse.click(x, y);
83+
await expect(player.playButton).not.toHaveAttribute(DATA_ATTRS.paused, { timeout: 5_000 });
84+
});
85+
86+
test('click on button does not trigger container gesture', async () => {
87+
await expect(player.playButton).toHaveAttribute(DATA_ATTRS.paused, '');
88+
await player.playButton.click();
89+
await expect(player.playButton).not.toHaveAttribute(DATA_ATTRS.paused, { timeout: 5_000 });
90+
});
91+
92+
test('click on slider does not trigger container gesture', async ({ page }) => {
93+
await player.play();
94+
await page.waitForTimeout(500);
95+
96+
// Click the time slider — should seek, not toggle play/pause
97+
await player.seekTo(50);
98+
await expect(player.playButton).not.toHaveAttribute(DATA_ATTRS.paused, { timeout: 5_000 });
99+
});
55100
});
56101

57102
// --- Touch gestures (pointer="touch") ---

0 commit comments

Comments
 (0)