diff --git a/learn.html b/learn.html index d72f0bb..759572a 100644 --- a/learn.html +++ b/learn.html @@ -115,6 +115,7 @@

How to use

+ diff --git a/learn.js b/learn.js index c7ba641..8cb185e 100644 --- a/learn.js +++ b/learn.js @@ -59,6 +59,7 @@ function showNewVerb() { ); currentVerb = filteredVerbs[randomIndex]; + window.FlashcardProgress?.recordView(currentVerb); verbPrompt.textContent = currentVerb.base; restartProgressAnimation((countdown + 1) * 1000); diff --git a/tests/smoke.spec.js b/tests/smoke.spec.js index 29e294a..7bc54ee 100644 --- a/tests/smoke.spec.js +++ b/tests/smoke.spec.js @@ -55,7 +55,7 @@ test('Legal pages load and allow mobile zoom', async ({ page }) => { } }); -test('Learn loads verbs and Next stays usable', async ({ page }) => { +test('Learn loads verbs, saves views, and keeps Next usable', async ({ page }) => { const errors = trackPageErrors(page); await page.goto(pageUrl('learn.html')); @@ -63,6 +63,15 @@ test('Learn loads verbs and Next stays usable', async ({ page }) => { await expect(page.locator('#verbPrompt')).not.toHaveText(''); await expect(page.locator('#nextButton')).toBeEnabled(); + const progressRaw = await page.evaluate(() => window.localStorage.casualEnglishFlashcardProgress || null); + expect(progressRaw).not.toBeNull(); + + const progress = JSON.parse(progressRaw); + const firstEntry = Object.values(progress)[0]; + expect(firstEntry.views).toBe(1); + expect(firstEntry.correct).toBe(0); + expect(firstEntry.wrong).toBe(0); + await page.locator('#nextButton').click(); await expect(page.locator('#verbPrompt')).not.toHaveText('');