Put every preference in Settings; same header on every page
Build and Push Docker Image / build-and-push (push) Successful in 5m7s
Build and Push Docker Image / build-and-push (push) Successful in 5m7s
- Settings > Preferences: typeface, line spacing, verse numbers, highlight colour names, My Studies grid/list and sort, verse-of-the-day Bible and picture, commentary sources, study templates - Header uses one fixed width and reserves scrollbar space so the nav sits in the same place on every page Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
a2185ba1dd
commit
512c6b6889
7 files changed
+204
-1
No files matched your search
@@ -83,6 +83,31 @@ describe('Authentication', () => {
|
||||
expect(await screen.findByDisplayValue('My Show')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
test('every reading and display preference can be set from Settings', async () => {
|
||||
stubApi({ session: user });
|
||||
const u = userEvent.setup();
|
||||
render(<App />);
|
||||
await openAccountMenu(u);
|
||||
await u.click(await screen.findByRole('menuitem', { name: /settings/i }));
|
||||
await u.click(await screen.findByRole('tab', { name: 'Preferences' }));
|
||||
for (const name of ['Text size', 'Typeface', 'Line spacing', 'Verse numbers', 'Reading width', 'Verse layout', 'Theme', 'Home page']) {
|
||||
expect(screen.getByRole('group', { name })).toBeInTheDocument();
|
||||
}
|
||||
await u.click(within(screen.getByRole('group', { name: 'Typeface' })).getByRole('button', { name: 'Sans' }));
|
||||
expect(localStorage.getItem('reader-font')).toBe('sans');
|
||||
await u.click(within(screen.getByRole('group', { name: 'Verse numbers' })).getByRole('button', { name: 'Hide' }));
|
||||
expect(localStorage.getItem('reader-verse-numbers')).toBe('off');
|
||||
// highlight colour names
|
||||
await u.type(screen.getByLabelText('Name for yellow highlights'), 'Promise');
|
||||
expect(JSON.parse(localStorage.getItem('reader-color-labels'))['#fef08a']).toBe('Promise');
|
||||
// the My Studies page
|
||||
await u.click(within(screen.getByRole('group', { name: 'Show studies as' })).getByRole('button', { name: 'List' }));
|
||||
expect(localStorage.getItem('homeView')).toBe('list');
|
||||
await u.selectOptions(screen.getByLabelText('Sort studies by'), 'title');
|
||||
expect(localStorage.getItem('homeSort')).toBe('title');
|
||||
expect(screen.getByRole('heading', { name: 'Study templates' })).toBeInTheDocument();
|
||||
});
|
||||
|
||||
test('Settings is split into tabs, one group at a time', async () => {
|
||||
stubApi({ session: user });
|
||||
const u = userEvent.setup();
|
||||
|
||||
Reference in new issue
Block a user