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