Skip to content

Commit 6cd6976

Browse files
committed
test: add coverage for settings persistence
1 parent b7223c2 commit 6cd6976

2 files changed

Lines changed: 30 additions & 0 deletions

File tree

app/pages/settings.vue

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ defineOgImageComponent('Default', {
103103
type="button"
104104
class="w-full flex items-center justify-between gap-4 group"
105105
role="switch"
106+
data-testid="settings-toggle"
106107
:aria-checked="settings.relativeDates"
107108
@click="settings.relativeDates = !settings.relativeDates"
108109
>
@@ -134,6 +135,7 @@ defineOgImageComponent('Default', {
134135
type="button"
135136
class="w-full flex items-center justify-between gap-4 group"
136137
role="switch"
138+
data-testid="settings-toggle"
137139
:aria-checked="settings.includeTypesInInstall"
138140
@click="settings.includeTypesInInstall = !settings.includeTypesInInstall"
139141
>
@@ -167,6 +169,7 @@ defineOgImageComponent('Default', {
167169
type="button"
168170
class="w-full flex items-center justify-between gap-4 group"
169171
role="switch"
172+
data-testid="settings-toggle"
170173
:aria-checked="settings.hidePlatformPackages"
171174
@click="settings.hidePlatformPackages = !settings.hidePlatformPackages"
172175
>

tests/settings.spec.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import { expect, test } from '@nuxt/test-utils/playwright'
2+
3+
test.describe('Settings', () => {
4+
test('settings persist across new tabs and reloads', async ({ page, goto }) => {
5+
await goto('/settings', { waitUntil: 'domcontentloaded' })
6+
7+
const toggles = page.getByTestId('settings-toggle')
8+
const toggleCount = await toggles.count()
9+
expect(toggleCount).toBeGreaterThan(0)
10+
for (let i = 0; i < toggleCount; i += 1) {
11+
await toggles.nth(i).click()
12+
}
13+
14+
const page2 = await page.context().newPage()
15+
await page2.goto('/nuxt', { waitUntil: 'domcontentloaded' })
16+
17+
const storedBefore = await page.evaluate(() => localStorage.getItem('npmx-settings'))
18+
19+
await page.reload()
20+
const storedAfter = await page.evaluate(() => localStorage.getItem('npmx-settings'))
21+
expect(storedAfter).toBe(storedBefore)
22+
23+
await page2.reload()
24+
const storedFromOtherTab = await page2.evaluate(() => localStorage.getItem('npmx-settings'))
25+
expect(storedFromOtherTab).toBe(storedBefore)
26+
})
27+
})

0 commit comments

Comments
 (0)