mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
test: testing overhaul -- CI e2e gates, parallel suites, generated matrices, mutation testing (#215)
Closes the "e2e never runs in CI" hole. Adds per-PR e2e smoke gate, nightly full-suite workflows, parallel vitest forks (per-fork DBs), Playwright parallel/serial/visual projects against production builds, metadata-generated test suites (drift guards, hostile inputs, format matrix, pairwise settings, property-based fuzz), Stryker mutation testing, Schemathesis API fuzz, coverage ratchet, and fixes for three session-poisoning bugs that caused 200+ serial-bucket failures. Bug fix included: favicon/split/bulk-rename could hang clients forever when ZIP streaming failed after reply.hijack().
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
/**
|
||||
* Pure display-mode map: toolId -> DisplayMode.
|
||||
*
|
||||
* This module intentionally has no React imports so that Playwright specs and
|
||||
* Node-side test generators can import it directly. It is the single source of
|
||||
* truth for display modes; tool-registry.tsx merges it into registry entries.
|
||||
*/
|
||||
|
||||
export type DisplayMode =
|
||||
| "side-by-side"
|
||||
| "before-after"
|
||||
| "live-preview"
|
||||
| "no-comparison"
|
||||
| "interactive-crop"
|
||||
| "interactive-eraser"
|
||||
| "interactive-split"
|
||||
| "no-dropzone"
|
||||
| "custom-results";
|
||||
|
||||
export const TOOL_DISPLAY_MODES: Record<string, DisplayMode> = {
|
||||
// Essentials
|
||||
resize: "side-by-side",
|
||||
crop: "interactive-crop",
|
||||
rotate: "side-by-side",
|
||||
convert: "no-comparison",
|
||||
compress: "before-after",
|
||||
"strip-metadata": "no-comparison",
|
||||
"edit-metadata": "no-comparison",
|
||||
|
||||
// Color adjustments
|
||||
"adjust-colors": "live-preview",
|
||||
sharpening: "before-after",
|
||||
|
||||
// Watermark & overlay
|
||||
"watermark-text": "before-after",
|
||||
"watermark-image": "before-after",
|
||||
"text-overlay": "before-after",
|
||||
compose: "before-after",
|
||||
"meme-generator": "no-dropzone",
|
||||
|
||||
// Utilities
|
||||
info: "no-comparison",
|
||||
compare: "before-after",
|
||||
"find-duplicates": "custom-results",
|
||||
"color-palette": "no-comparison",
|
||||
"qr-generate": "no-dropzone",
|
||||
"html-to-image": "no-dropzone",
|
||||
"barcode-read": "before-after",
|
||||
"image-to-base64": "custom-results",
|
||||
|
||||
// Layout & composition
|
||||
collage: "no-dropzone",
|
||||
stitch: "no-comparison",
|
||||
split: "interactive-split",
|
||||
border: "live-preview",
|
||||
beautify: "live-preview",
|
||||
|
||||
// Format & conversion
|
||||
"svg-to-raster": "before-after",
|
||||
vectorize: "before-after",
|
||||
"gif-tools": "before-after",
|
||||
|
||||
// Optimization extras
|
||||
"bulk-rename": "before-after",
|
||||
favicon: "before-after",
|
||||
"image-to-pdf": "before-after",
|
||||
"optimize-for-web": "before-after",
|
||||
"pdf-to-image": "no-dropzone",
|
||||
|
||||
// Adjustments extra
|
||||
"replace-color": "before-after",
|
||||
"color-blindness": "before-after",
|
||||
|
||||
// AI tools
|
||||
"remove-background": "before-after",
|
||||
upscale: "before-after",
|
||||
ocr: "before-after",
|
||||
"blur-faces": "before-after",
|
||||
"enhance-faces": "before-after",
|
||||
"erase-object": "interactive-eraser",
|
||||
"smart-crop": "before-after",
|
||||
"image-enhancement": "before-after",
|
||||
colorize: "before-after",
|
||||
"noise-removal": "before-after",
|
||||
"passport-photo": "custom-results",
|
||||
"red-eye-removal": "before-after",
|
||||
"restore-photo": "before-after",
|
||||
"transparency-fixer": "before-after",
|
||||
"content-aware-resize": "side-by-side",
|
||||
"ai-canvas-expand": "before-after",
|
||||
};
|
||||
Reference in New Issue
Block a user