From 9bba684fb223d5c4cebc4b610411b7c6c9c9df64 Mon Sep 17 00:00:00 2001 From: cat-shark <1716967236@qq.com> Date: Mon, 3 Aug 2026 22:21:13 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=A6=96=E9=A1=B5=E6=BB=9A=E5=8A=A8?= =?UTF-8?q?=E6=9D=A1=E5=B1=95=E7=A4=BA=E5=AD=A6=E4=B9=A0=E6=AE=8B=E7=89=87?= =?UTF-8?q?=E5=B9=B6=E6=94=AF=E6=8C=81=E6=BB=9A=E8=BD=AE=E6=89=8B=E5=8A=A8?= =?UTF-8?q?=E6=BB=9A=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- e2e/welcome.spec.ts | 40 +++++ src/components/Welcome.vue | 297 +++++++++++++++++++++---------------- 2 files changed, 208 insertions(+), 129 deletions(-) diff --git a/e2e/welcome.spec.ts b/e2e/welcome.spec.ts index 00de01a..68154b8 100644 --- a/e2e/welcome.spec.ts +++ b/e2e/welcome.spec.ts @@ -31,4 +31,44 @@ test.describe('Welcome page', () => { await page.locator('.quick-card').nth(1).locator('button').click(); await expect(page).toHaveURL(/\/review/); }); + + test('wheel scrolls review ticker manually while hovering', async ({ page }) => { + const items = Array.from({ length: 10 }, (_, i) => ({ + id: i + 1, + sessionNum: `S${i + 1}`, + taskNum: `T${i + 1}`, + taskName: `任务 ${i + 1}`, + sourceType: 'FRAGMENT', + content: `第 ${i + 1} 条学习残片内容,用来撑起首页滚动区域。`, + createdTime: `2026-08-01 10:00:${String(i).padStart(2, '0')}`, + })); + + await page.route('**/api/review/feed**', (route) => + route.fulfill({ + status: 200, + contentType: 'application/json', + body: JSON.stringify({ code: 200, data: items }), + }), + ); + await page.goto('/welcome'); + + const track = page.locator('.review-scroll-track'); + const content = page.locator('.review-scroll-content'); + await expect(track).toBeVisible(); + await track.hover(); + + const readTime = () => + content.evaluate((el) => { + const anim = el.getAnimations()[0]; + return anim && typeof anim.currentTime === 'number' ? anim.currentTime : -1; + }); + + const before = await readTime(); + await page.mouse.wheel(0, 200); + await expect.poll(readTime).toBeGreaterThan(before); + + await page.mouse.move(10, 10); + const after = await readTime(); + await expect.poll(readTime).toBeGreaterThan(after); + }); }); diff --git a/src/components/Welcome.vue b/src/components/Welcome.vue index 0c252d9..65bf771 100644 --- a/src/components/Welcome.vue +++ b/src/components/Welcome.vue @@ -1,63 +1,39 @@ @@ -139,26 +182,27 @@ onMounted(() => {
- 这次学习共有 {{ recallSessionItems.length }} 条记录。看着下面这个片段,先试着回忆:当时还学了什么? + 看着下面这个残片,先试着回忆:当时还学了什么?
-{{ recallCard.group.content }}+
{{ recallCard.fragment.content }}+
{{ recallCard.loadError }}