## Route `/print-prep` ## Scenarios to test ### Upload - [ ] Dropzone is visible on load with correct label text - [ ] Uploading a single JPEG displays it in the 3-column thumbnail grid - [ ] Uploading 6 images fills two rows of the grid (3 per row) - [ ] The "Add" button in the sidebar header adds more images to the grid - [ ] Uploaded image filenames are accessible (via `title` or `alt`) ### Thumbnail grid - [ ] Each thumbnail shows the image scaled to fill the grid cell - [ ] The max print size label is displayed below each thumbnail (e.g. `Up to 12.0×8.0"`) - [ ] Clicking a thumbnail selects it (border highlight appears) - [ ] The selected image appears in the right-panel editor - [ ] Done checkmark is NOT visible before marking an image done ### Print size selection - [ ] Print size pills are visible: Original, 4×6, 5×7, 4×4, 8×10, 5×5, 3.5×5, 11×14, 12×12 - [ ] Clicking "4×6" highlights that pill and updates the preview aspect ratio - [ ] Preview image switches to `object-fit: cover` with the selected ratio - [ ] The export info note shows the correct pixel dimensions (e.g. 1800×1200 for 4×6 landscape) - [ ] A quality warning appears if the image is too small for the selected size - [ ] Clicking "Original" removes the size constraint ### Color filters - [ ] 8 filter swatch buttons are visible: Original, B&W, Sepia, Warm, Cool, Retro, Cinematic, Bright - [ ] Each swatch shows the current image with that filter applied - [ ] Clicking "B&W" applies a grayscale CSS filter to the main preview - [ ] Clicking "Original" removes the filter ### Adjustments - [ ] Brightness slider is present; moving it changes the preview brightness - [ ] Contrast slider is present; moving it changes the preview contrast - [ ] Slider values display the percentage delta (e.g. `+30%`, `-20%`) ### Mark Done flow - [ ] "Mark Done" button is present and enabled for the selected image - [ ] Clicking it adds a checkmark to the thumbnail in the grid - [ ] The editor auto-advances to the next image in the grid - [ ] The done count in the sidebar header updates (e.g. `1 done`) - [ ] After all images are marked done, the button is disabled for each ### Reset - [ ] "Reset" button clears all edits (filter, size, brightness, contrast) for the current image ### Download ZIP - [ ] "Download ZIP" button is visible in the sidebar footer - [ ] Clicking it triggers a `.zip` file download - [ ] The ZIP contains one JPEG per uploaded image - [ ] Filenames in the ZIP include the print size suffix (e.g. `photo_4x6.jpg`) ### Google Drive section (logged-out) - [ ] The Google Drive import section is NOT visible for unauthenticated users ### AI Upscale section - [ ] For a non-Pro user, an upgrade prompt is shown instead of the upscale button ## Acceptance criteria - Grid renders all uploaded images with print size labels - Filter swatches apply visible CSS filters to the preview - Mark Done auto-advances; ZIP download contains correctly named JPEGs
Route
/print-prepScenarios to test
Upload
titleoralt)Thumbnail grid
Up to 12.0×8.0")Print size selection
object-fit: coverwith the selected ratioColor filters
Adjustments
+30%,-20%)Mark Done flow
1 done)Reset
Download ZIP
.zipfile downloadphoto_4x6.jpg)Google Drive section (logged-out)
AI Upscale section
Acceptance criteria