test(trip-cover): cover-strip + retina-cap regression; bump user pin

- trip-header/trips-list specs now assert the cropZoom wide-strip aspect
  and the all-or-nothing retina rule (1x-only for sub-2w sources), and a
  new regression on us-canada-mex-2024 covers the reported portrait-blur
- remove the orphaned AE4 test (no-photos-demo fixture was deleted)
- backlog: full-res pixelfed reimport (luxury quality item)
- plan: record the cover-quality follow-up + AE4 fixture removal
- bump user pin -> 536ca20 (trip-description-hero cover fix)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RDS6t8wcpbwKvvrxykVQ5K
This commit is contained in:
2026-07-07 23:39:32 +02:00
co-authored by Claude Opus 4.8
parent b752178eb4
commit 5276768e12
5 changed files with 68 additions and 21 deletions
+12 -3
View File
@@ -33,13 +33,22 @@ test('U3/R5/AE1: card without a tagline renders no one-liner element', async ({
await expect(card.locator('.trip-card-tagline')).toHaveCount(0);
});
// ── R6/AE5: card cover exposes a retina srcset (720w + 1440w candidates) ───────
test('U3/R6/AE5: card cover img carries a 720w/1440w srcset', async ({ page }) => {
// ── R6/AE5: card cover exposes a 1x srcset; 2x only when the source is ≥2×w ────
test('U3/R6/AE5: card cover img carries a 720w srcset, 2x omitted for a narrow source', async ({ page }) => {
await page.goto('/trips');
const img = demoCard(page).locator('.trip-card-cover img');
const srcset = await img.getAttribute('srcset');
expect(srcset).toContain('720w');
expect(srcset).toContain('1440w');
// The 1200px source can't supply a non-upscaled 2x (needs ≥1440), so the
// retina descriptor is omitted — 1x only, no upscale, no intermediate width.
expect(srcset).not.toContain('1440w');
expect(srcset).not.toContain('1200w');
// cropZoom cover strip (~3:1), not a cropResize fit-inside sliver.
const ratio = await img.evaluate((el) => new Promise((res) => {
const done = () => res(el.naturalWidth / el.naturalHeight);
el.complete && el.naturalWidth ? done() : el.addEventListener('load', done, { once: true });
}));
expect(ratio).toBeGreaterThan(2.5);
});
// ── R7/AE3: with no cover_image set, the card falls back to a journal image ────