feat(dashboard): render real document thumbnail in resume strip
Replaces the generic parchment SVG placeholder with an <img> pointing at the backend's thumbnail endpoint when the document has one. The 180×252 container matches DocumentThumbnail's 5:7 A4 convention so the dashboard tile sits visually next to the list/person-sublist tiles instead of looking squatter than they do. dark:mix-blend-multiply keeps paper scans from glaring on a dark page background (#309). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -21,6 +21,11 @@ const mockResume: DashboardResumeDTO = {
|
||||
collaborators: []
|
||||
};
|
||||
|
||||
const mockResumeWithThumbnail: DashboardResumeDTO = {
|
||||
...mockResume,
|
||||
thumbnailUrl: '/api/documents/doc-123/thumbnail?v=2026-04-23T09%3A00'
|
||||
};
|
||||
|
||||
describe('DashboardResumeStrip', () => {
|
||||
it('renders empty state heading when resumeDoc is null', async () => {
|
||||
render(DashboardResumeStrip, { resumeDoc: null });
|
||||
@@ -52,4 +57,16 @@ describe('DashboardResumeStrip', () => {
|
||||
const label = page.getByText(/4 Abschnitte/i);
|
||||
await expect.element(label).toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('renders thumbnail img with expected attrs when thumbnailUrl is set', async () => {
|
||||
render(DashboardResumeStrip, { resumeDoc: mockResumeWithThumbnail });
|
||||
const img = page.getByTestId('resume-thumbnail-img');
|
||||
await expect.element(img).toBeInTheDocument();
|
||||
await expect
|
||||
.element(img)
|
||||
.toHaveAttribute('src', '/api/documents/doc-123/thumbnail?v=2026-04-23T09%3A00');
|
||||
await expect.element(img).toHaveAttribute('alt', '');
|
||||
await expect.element(img).toHaveAttribute('loading', 'lazy');
|
||||
await expect.element(img).toHaveAttribute('decoding', 'async');
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user