تايب سكريبت - التمرير مع سهم الأسفل في بوبتير


لذلك أنا أعمل على ميزة في تطبيقي تقوم بتعطيل التمرير باستخدام مفاتيح الأسهم على الجسم عندما يكون القائمة مفتوحة، وتترك السلوك كما هو خلاف ذلك.

أحاول اختبار ذلك السلوك في 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