TypeScript - גלילה עם חץ למטה ב-Puppeteer
אז אני עובד על תכונה באפליקציה שלי שמבטלת גלילה על ידי מקש החץ בגוף כשהתפריט פתוח, ומשאירה את ההתנהגות כפי שהיא אחרת.
אני מנסה לבדוק את ההתנהגות הזו ב-Puppeteer, אבל אני לא מצליח לגרום לחלון לגלול כאשר אני לוחץ על החץ למטה. הנה כמה דוגמאות למה שאני עושה הן במימוש והן בבדיקות שלי:
const disableArrowScroll = (event: KeyboardEvent) => {
if (
isOpen &&
(event.key === 'ArrowDown' ||
event.key === 'ArrowUp' ||
event.key === 'ArrowLeft' ||
event.key === 'ArrowRight')
) {
event.preventDefault();
}
};
it('does not effect scroll when menu is closed', async () => {
await menuClosed(); // Times out if menu is not closed
await page.focus('body');
await keyboard.press('ArrowDown');
expect(await page.evaluate(() => window.scrollY > 0)).toBeTruthy();
});
ווידאתי שהדף צריך להיות ניתן לגלילה על ידי הגבלת חלון התצוגה, ואני באמת תוהה למה window.scrollY נשאר 0. האם אני מפספס משהו? בהדגמה שרצה בפועל, הקוד נראה פועל כצפוי.
תשובה #1
הבעיה היא ש, לאחר הפעלת לחיצת מקש החץ למטה, עליך לתת לדף זמן לגלול למטה. אתה יכול לעשות זאת על ידי שינוי...
await keyboard.press('ArrowDown');
...ל...
await keyboard.press('ArrowDown');
await new Promise((resolve) => setTimeout(resolve, 1000)); // Wait 1s
