Show a failing feed on its artwork, in words, and grey (#93)
The mark was a 12px "!" in the sidebar's margin, told apart by --bad alone; a dark theme's --bad is a pale pink, and at that size it vanished. It is now a solid disc on the artwork's corner, the subtitle says what is wrong in place of the counts, and a feed failing for a day or more has its artwork greyed out. Lightness and words carry it, so no theme's palette changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1211,22 +1211,26 @@ test('the favicon is the logo, square, from both pages', async ({ page }) => {
|
||||
}
|
||||
});
|
||||
|
||||
test('a feed error is marked in the same column as the folder triangles', async ({ page }) => {
|
||||
test('a failing feed is marked on its artwork and says why', async ({ page }) => {
|
||||
await expect(page.locator('.feed.group .chev').first()).toBeVisible();
|
||||
if ((await page.locator('.feed.group .chev').first().getAttribute('aria-expanded')) !== 'true')
|
||||
await page.locator('.feed.group .chev').first().click();
|
||||
// Faked in the page: no fixture feed fails. A feed on its own, and one inside a folder.
|
||||
await page.evaluate(() => {
|
||||
// Faked in the page: no fixture feed fails. A feed on its own failing for a day, and one
|
||||
// inside a folder that failed its last check.
|
||||
const solo = await page.evaluate(() => {
|
||||
S.feeds.find(f => f.group).last_error = 'HTTP 404';
|
||||
S.feeds.find(f => !f.group && !S.feeds.some(c => c.group === f.id)).last_error = 'timed out';
|
||||
const f = S.feeds.find(f => !f.group && !S.feeds.some(c => c.group === f.id));
|
||||
f.last_error = 'HTTP 404 Not Found';
|
||||
f.failing = { reason: 'The publisher took this feed down, or moved it.' };
|
||||
renderFeeds();
|
||||
return f.id;
|
||||
});
|
||||
await expect(page.locator('.ferr')).toHaveCount(2);
|
||||
await expect(page.locator('.ferr svg')).toHaveCount(2); // the icon, not a "!"
|
||||
await expect(page.locator('.fart .ferr svg')).toHaveCount(3); // both feeds and the folder
|
||||
await expect(page.locator('.chev.bad')).toHaveCount(1); // the folder holding one
|
||||
const xs = await page.$$eval('.chev, .ferr', els =>
|
||||
els.map(e => { const r = e.getBoundingClientRect(); return Math.round(r.left + r.width / 2); }));
|
||||
expect(new Set(xs).size, JSON.stringify(xs)).toBe(1);
|
||||
const row = page.locator(`.feed[data-id="${solo}"]`);
|
||||
await expect(row).toHaveClass(/failing/);
|
||||
await expect(row.locator('small')).toHaveText('The publisher took this feed down, or moved it.');
|
||||
await expect(page.locator('.feed.group.err small').first()).toHaveText('1 feed not updating');
|
||||
await page.reload(); // put the real list back
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user