import {chromium} from 'playwright'; const b = await chromium.launch({channel: 'chrome'}); const page = await b.newPage({viewport: {width: 1280, height: 900}}); await page.goto('http://localhost/s/stay', {waitUntil: 'domcontentloaded'}); await page.waitForTimeout(5000); await page.evaluate(() => document.querySelector('#itinerary').scrollIntoView({block: 'center'})); await page.waitForTimeout(9000); await page.evaluate(() => { const rail = document.querySelector('#itinerary .slider-viewport'); window.__rail = rail; window.__pos = () => { const c = rail.firstElementChild; let m = 0; try { m = new DOMMatrix(getComputedStyle(c).transform).m41; } catch {} return Math.round(rail.scrollLeft + m); }; }); await page.mouse.move(640, 450); await page.mouse.wheel(0, 200); await page.waitForTimeout(10000); // 쿨타임 7초 + 여유 const p0 = await page.evaluate(() => window.__pos()); // 해제 pointerup 을 하나씩 더 쏘면서 몇 번째에 다시 도는지 본다 for (let i = 1; i <= 6; i++) { await page.evaluate(() => window.dispatchEvent(new PointerEvent('pointerup', {bubbles: true, button: 2}))); await page.waitForTimeout(5200); const d = await page.evaluate((p) => window.__pos() - p, p0); console.log(`추가 pointerup ${i}회 후 → ${d}px`); if (d !== 0) break; } await b.close();