Fixes from the UI-polish review of the main window (2026-10-19). Reduced motion took every animation away, and a turning icon was the only sign a check was running. The refresh buttons now carry aria-busy and a "Checking for new items" label while checking, and under reduced motion spinners pulse and toasts and sheets fade. Every :hover rule is behind @media (hover:hover), since Safari keeps :hover on the last thing tapped; the two phone resets that undid it for .btn and .ep had nothing left to do and are gone. An item row's actions still show on hover without the query, so a tablet with no pointer can reach them by tapping the row. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1906,6 +1906,22 @@ test('a refresh button turns from the press to the end of the scan it asked for'
|
||||
expect(await spin('#scanAll .i')).toBe('none');
|
||||
});
|
||||
|
||||
test.describe('with motion reduced', () => {
|
||||
test.use({ reducedMotion: 'reduce' });
|
||||
|
||||
test('a check running still shows, as a pulse and in its label', async ({ page }) => {
|
||||
// Turning was all that showed it, and with motion reduced nothing turned (#310).
|
||||
const all = page.locator('#scanAll');
|
||||
await page.evaluate(() => spinStart(null));
|
||||
await expect(all).toHaveAttribute('aria-busy', 'true');
|
||||
await expect(all).toHaveAttribute('aria-label', 'Checking for new items…');
|
||||
expect(await all.locator('.i').evaluate(el => getComputedStyle(el).animationName)).toBe('ipxpulse');
|
||||
await page.evaluate(() => spinEnd({ only: null, forced: true }));
|
||||
await expect(all).not.toHaveAttribute('aria-busy');
|
||||
await expect(all).toHaveAttribute('aria-label', 'Check every feed for new items');
|
||||
});
|
||||
});
|
||||
|
||||
test.describe('on a narrow phone', () => {
|
||||
test.use({ viewport: { width: 360, height: 760 } });
|
||||
|
||||
|
||||
Reference in New Issue
Block a user