test: reorganize fixture files into modality-first layout (phase 6b)

Move all fixture files from flat/mixed dirs (content/, media/, documents/,
formats/, hostile/, root loose) into the modality-first hierarchy:
image/{valid,formats,edge,hostile}, video/{valid,formats,hostile},
audio/{valid,formats,hostile}, document/{valid,formats,edge,hostile},
data/valid/, security/. Update index.ts paths, fixtureDir aliases,
all literal refs in 17 e2e/qa/script files, manifest.json, and the
three generator scripts. 163 files moved, 0 dropped, 100 new tests
from expanded document scan.
This commit is contained in:
SnapOtter
2026-06-20 05:51:17 +08:00
parent 1727a7a73e
commit 941ed27912
199 changed files with 560 additions and 429 deletions
+235 -235
View File
@@ -1,23 +1,7 @@
{
"assets": [
{
"path": "content/alt-2page.pdf",
"sourceUrl": "gen-synthetic-content.mjs",
"license": "CC0",
"toolsServed": [],
"sha256": "be8a827f8c4afee32b2c5d4339f039e3c24887284f220c3bf849210095899e75",
"bytes": 854
},
{
"path": "content/animated-simpsons.gif",
"sourceUrl": "gen-synthetic-content.mjs (ffmpeg testsrc, replaces copyrighted Simpsons clip)",
"license": "CC0",
"toolsServed": [],
"sha256": "738a6c04c1744c32bd9889372a4754dcb2d7af84586a33c9aa67e09ada8bdeb8",
"bytes": 193823
},
{
"path": "content/audio-with-tags.mp3",
"path": "audio/valid/audio-with-tags.mp3",
"sourceUrl": "gen-synthetic-content.mjs (ffmpeg 440Hz sine + ID3 tags)",
"license": "CC0",
"toolsServed": [],
@@ -25,71 +9,7 @@
"bytes": 11684
},
{
"path": "content/barcode.avif",
"sourceUrl": "gen-synthetic-content.mjs (Code 128B via Sharp)",
"license": "CC0",
"toolsServed": [],
"sha256": "aa850fa40da9180bf493702d999e674f75942b1dbcf78f1d8c453ee6a096f375",
"bytes": 2631
},
{
"path": "content/barcode.png",
"sourceUrl": "gen-synthetic-content.mjs (Code 128B via Sharp)",
"license": "CC0",
"toolsServed": [],
"sha256": "84fafbaba2c80c347ef774530fe7def02e5555691e613a633867a7ef94fbdc6d",
"bytes": 5980
},
{
"path": "content/cross-format-chat.webp",
"sourceUrl": "generated (mock chat UI, Sharp SVG render)",
"license": "CC0",
"toolsServed": [],
"sha256": "f45457826da776b4a7986eddd98dc0993295134e4f960a00d78c627f11c26dad",
"bytes": 11538
},
{
"path": "content/hero.avi",
"sourceUrl": "Big Buck Bunny (Blender Foundation, www.bigbuckbunny.org) via archive.org, transcoded to AVI",
"license": "CC-BY",
"toolsServed": [],
"sha256": "c56b0e01e4408846c3d040034b85aeeade17a25534771c7f5712e0e0dc5e45cc",
"bytes": 681052
},
{
"path": "content/hero.mkv",
"sourceUrl": "Big Buck Bunny (Blender Foundation, www.bigbuckbunny.org) via archive.org, transcoded to MKV",
"license": "CC-BY",
"toolsServed": [],
"sha256": "41b5d042000446882a3ae562ab262b62ffab8702ba9097424e344d603ae034fe",
"bytes": 241665
},
{
"path": "content/hero.mov",
"sourceUrl": "Big Buck Bunny (Blender Foundation, www.bigbuckbunny.org) via archive.org, transcoded to MOV",
"license": "CC-BY",
"toolsServed": [],
"sha256": "24e2107d9c642bd8c06f1c8ccbb52c9bf8aa177405c1eb274216289d5ed32d75",
"bytes": 244646
},
{
"path": "content/hero.webm",
"sourceUrl": "Big Buck Bunny (Blender Foundation, www.bigbuckbunny.org) via archive.org, transcoded to WebM",
"license": "CC-BY",
"toolsServed": [],
"sha256": "14435ede8e4e2cb7eca91a788647771ca051b04cf1c6ca58b1ad50dec6b5be1f",
"bytes": 226183
},
{
"path": "content/media-30s.mp4",
"sourceUrl": "Big Buck Bunny (Blender Foundation, www.bigbuckbunny.org) via archive.org, 8s segment at 30s, 480x270",
"license": "CC-BY",
"toolsServed": [],
"sha256": "6ad37435eeb01cc694b918f8588255fead60eb01f2a06ca0dc904070064e9136",
"bytes": 247284
},
{
"path": "content/media-30s.wav",
"path": "audio/valid/media-30s.wav",
"sourceUrl": "gen-synthetic-content.mjs (ffmpeg 440Hz sine PCM, 30s)",
"license": "CC0",
"toolsServed": [],
@@ -97,143 +17,7 @@
"bytes": 2646078
},
{
"path": "content/motorcycle.heif",
"sourceUrl": "Unknown; added in babca4cf (test coverage expansion). HEIF photo, content unverifiable.",
"license": "UNVERIFIED-REVIEW",
"toolsServed": [],
"sha256": "90f3ae39a6ea1355f148712cd013f71111b2d74451ca07bcf8442489b0d1995e",
"bytes": 224154
},
{
"path": "content/multi-face.webp",
"sourceUrl": "gen-synthetic-content.mjs (Sharp oval grid, replaces Shutterstock #199321457)",
"license": "CC0",
"toolsServed": [],
"sha256": "58a3e4acf5d9d12612a05e19098f5ed7d122789721828a30dc01d1eecf2754c8",
"bytes": 5194
},
{
"path": "content/multipage-6.pdf",
"sourceUrl": "gen-synthetic-content.mjs",
"license": "CC0",
"toolsServed": [],
"sha256": "ef047cf125592eaa857f0f1f1d1001d7575dfcf03af5f7c20038050178fa4160",
"bytes": 1913
},
{
"path": "content/ocr-chat.jpeg",
"sourceUrl": "generated (mock chat UI, Sharp SVG render)",
"license": "CC0",
"toolsServed": [],
"sha256": "41602713616187b97ba64fb0ce97f2ac06bfbef193690f757d622e6d624e87a7",
"bytes": 20462
},
{
"path": "content/ocr-clean.png",
"sourceUrl": "gen-synthetic-content.mjs (Sharp SVG text render)",
"license": "CC0",
"toolsServed": [],
"sha256": "b75f19fae28ac01cf9126299a68917a3d60668b831156d9600a8b4a403f9e43d",
"bytes": 8187
},
{
"path": "content/ocr-japanese.png",
"sourceUrl": "gen-synthetic-content.mjs (Sharp SVG Japanese text render)",
"license": "CC0",
"toolsServed": [],
"sha256": "0203ea5fabc9a6965103d64136b17fb8abe33f6def99b8da97cf47c2091ec639",
"bytes": 25932
},
{
"path": "content/ocr-scanned.pdf",
"sourceUrl": "Unknown; added in babca4cf/d8cf979d. Scanned PDF, content unverifiable.",
"license": "UNVERIFIED-REVIEW",
"toolsServed": [],
"sha256": "28d33f9f30a450943d59489345bf475b42ca0f73deffeb883df1d117d97e5d90",
"bytes": 1049673
},
{
"path": "content/portrait-bw.jpeg",
"sourceUrl": "Unknown; added in babca4cf (test coverage expansion). B&W portrait, unverifiable origin.",
"license": "UNVERIFIED-REVIEW",
"toolsServed": [],
"sha256": "0ca77a23c1af40d107f4f34eef048adef98f8b36c475723c6fe921ed3dec81bc",
"bytes": 2731390
},
{
"path": "content/portrait-color-dup.jpg",
"sourceUrl": "Identical to portrait-color.jpg (deliberate duplicate for dedup tests).",
"license": "UNVERIFIED-REVIEW",
"toolsServed": [],
"sha256": "908893cc7c816e977f84af59237a1af29bab6e3ed801879cbe992f698161397e",
"bytes": 89084
},
{
"path": "content/portrait-color.jpg",
"sourceUrl": "Unknown; added in babca4cf (test coverage expansion). Portrait photo, likely AI-generated, unverifiable.",
"license": "UNVERIFIED-REVIEW",
"toolsServed": [],
"sha256": "908893cc7c816e977f84af59237a1af29bab6e3ed801879cbe992f698161397e",
"bytes": 89084
},
{
"path": "content/portrait-headshot.heic",
"sourceUrl": "Unknown; added in babca4cf (test coverage expansion). HEIC portrait, unverifiable origin.",
"license": "UNVERIFIED-REVIEW",
"toolsServed": [],
"sha256": "1f59692ec10d5372e69ebc789c53ebe752f665ff87ede4d15817ce512e769732",
"bytes": 1489644
},
{
"path": "content/portrait-isolated.png",
"sourceUrl": "Unknown; added in babca4cf (test coverage expansion). Portrait with bg removed, same subject as portrait-color.jpg.",
"license": "UNVERIFIED-REVIEW",
"toolsServed": [],
"sha256": "8d53453a5adaecfc3b6db83e85f732cbe67adc42e7c719d4c3ae8eb7777e0a8f",
"bytes": 80745
},
{
"path": "content/qr-code.avif",
"sourceUrl": "gen-synthetic-content.mjs (qrcode lib + Sharp AVIF)",
"license": "CC0",
"toolsServed": [],
"sha256": "93c8268e6fe3e8a16f3c1cc028885e6b4a90887f27a2fe4525e4a928703fcdb3",
"bytes": 1924
},
{
"path": "content/qr-code.png",
"sourceUrl": "gen-synthetic-content.mjs (qrcode lib, encodes https://snapotter.com)",
"license": "CC0",
"toolsServed": [],
"sha256": "97506d778ea20d9a42b303071f280b4f31109fcff7af00bd9e284436a0e51155",
"bytes": 2191
},
{
"path": "content/qr-code.svg",
"sourceUrl": "gen-synthetic-content.mjs (qrcode lib SVG output)",
"license": "CC0",
"toolsServed": [],
"sha256": "bd3128ae46d994fa5dda1345a93f17782b1d906e871b9f318e6fd0d032cc9f50",
"bytes": 1255
},
{
"path": "content/red-eye.jpg",
"sourceUrl": "Unknown; added in babca4cf (test coverage expansion). Canon EOS 400D DIGITAL EXIF from 2007, red-eye portrait.",
"license": "UNVERIFIED-REVIEW",
"toolsServed": [],
"sha256": "04a993def90ffb471cbb0b4bbe46bd2aa9a2d344a9ab7ad187dc22f5feca23ed",
"bytes": 368937
},
{
"path": "content/speech-10s.mp4",
"sourceUrl": "macOS say TTS (locally generated, Samantha voice), converted to AAC MP4",
"license": "CC0",
"toolsServed": [],
"sha256": "2f8d3a93f01645af5b14859366d8d0aa59c10e79fca23bf56ab94cc8634bfe50",
"bytes": 92269
},
{
"path": "content/speech-10s.wav",
"path": "audio/valid/speech-10s.wav",
"sourceUrl": "macOS say TTS (locally generated, Samantha voice), 16kHz mono PCM",
"license": "CC0",
"toolsServed": [],
@@ -241,7 +25,7 @@
"bytes": 213346
},
{
"path": "content/speech.aac",
"path": "audio/valid/speech.aac",
"sourceUrl": "macOS say TTS (locally generated, Samantha voice), converted to AAC ADTS",
"license": "CC0",
"toolsServed": [],
@@ -249,7 +33,7 @@
"bytes": 68336
},
{
"path": "content/speech.flac",
"path": "audio/valid/speech.flac",
"sourceUrl": "macOS say TTS (locally generated, Samantha voice), converted to FLAC",
"license": "CC0",
"toolsServed": [],
@@ -257,7 +41,7 @@
"bytes": 142669
},
{
"path": "content/speech.m4a",
"path": "audio/valid/speech.m4a",
"sourceUrl": "macOS say TTS (locally generated, Samantha voice), converted to M4A",
"license": "CC0",
"toolsServed": [],
@@ -265,7 +49,7 @@
"bytes": 68824
},
{
"path": "content/speech.ogg",
"path": "audio/valid/speech.ogg",
"sourceUrl": "macOS say TTS (locally generated, Samantha voice), converted to Ogg Vorbis",
"license": "CC0",
"toolsServed": [],
@@ -273,7 +57,7 @@
"bytes": 39607
},
{
"path": "content/speech.opus",
"path": "audio/valid/speech.opus",
"sourceUrl": "macOS say TTS (locally generated, Samantha voice), converted to Opus",
"license": "CC0",
"toolsServed": [],
@@ -281,7 +65,175 @@
"bytes": 63103
},
{
"path": "content/stress-large.jpg",
"path": "document/valid/alt-2page.pdf",
"sourceUrl": "gen-synthetic-content.mjs",
"license": "CC0",
"toolsServed": [],
"sha256": "be8a827f8c4afee32b2c5d4339f039e3c24887284f220c3bf849210095899e75",
"bytes": 854
},
{
"path": "document/valid/multipage-6.pdf",
"sourceUrl": "gen-synthetic-content.mjs",
"license": "CC0",
"toolsServed": [],
"sha256": "ef047cf125592eaa857f0f1f1d1001d7575dfcf03af5f7c20038050178fa4160",
"bytes": 1913
},
{
"path": "document/valid/ocr-scanned.pdf",
"sourceUrl": "Unknown; added in babca4cf/d8cf979d. Scanned PDF, content unverifiable.",
"license": "UNVERIFIED-REVIEW",
"toolsServed": [],
"sha256": "28d33f9f30a450943d59489345bf475b42ca0f73deffeb883df1d117d97e5d90",
"bytes": 1049673
},
{
"path": "image/valid/animated-simpsons.gif",
"sourceUrl": "gen-synthetic-content.mjs (ffmpeg testsrc, replaces copyrighted Simpsons clip)",
"license": "CC0",
"toolsServed": [],
"sha256": "738a6c04c1744c32bd9889372a4754dcb2d7af84586a33c9aa67e09ada8bdeb8",
"bytes": 193823
},
{
"path": "image/valid/barcode.avif",
"sourceUrl": "gen-synthetic-content.mjs (Code 128B via Sharp)",
"license": "CC0",
"toolsServed": [],
"sha256": "aa850fa40da9180bf493702d999e674f75942b1dbcf78f1d8c453ee6a096f375",
"bytes": 2631
},
{
"path": "image/valid/barcode.png",
"sourceUrl": "gen-synthetic-content.mjs (Code 128B via Sharp)",
"license": "CC0",
"toolsServed": [],
"sha256": "84fafbaba2c80c347ef774530fe7def02e5555691e613a633867a7ef94fbdc6d",
"bytes": 5980
},
{
"path": "image/valid/cross-format-chat.webp",
"sourceUrl": "generated (mock chat UI, Sharp SVG render)",
"license": "CC0",
"toolsServed": [],
"sha256": "f45457826da776b4a7986eddd98dc0993295134e4f960a00d78c627f11c26dad",
"bytes": 11538
},
{
"path": "image/valid/motorcycle.heif",
"sourceUrl": "Unknown; added in babca4cf (test coverage expansion). HEIF photo, content unverifiable.",
"license": "UNVERIFIED-REVIEW",
"toolsServed": [],
"sha256": "90f3ae39a6ea1355f148712cd013f71111b2d74451ca07bcf8442489b0d1995e",
"bytes": 224154
},
{
"path": "image/valid/multi-face.webp",
"sourceUrl": "gen-synthetic-content.mjs (Sharp oval grid, replaces Shutterstock #199321457)",
"license": "CC0",
"toolsServed": [],
"sha256": "58a3e4acf5d9d12612a05e19098f5ed7d122789721828a30dc01d1eecf2754c8",
"bytes": 5194
},
{
"path": "image/valid/ocr-chat.jpeg",
"sourceUrl": "generated (mock chat UI, Sharp SVG render)",
"license": "CC0",
"toolsServed": [],
"sha256": "41602713616187b97ba64fb0ce97f2ac06bfbef193690f757d622e6d624e87a7",
"bytes": 20462
},
{
"path": "image/valid/ocr-clean.png",
"sourceUrl": "gen-synthetic-content.mjs (Sharp SVG text render)",
"license": "CC0",
"toolsServed": [],
"sha256": "b75f19fae28ac01cf9126299a68917a3d60668b831156d9600a8b4a403f9e43d",
"bytes": 8187
},
{
"path": "image/valid/ocr-japanese.png",
"sourceUrl": "gen-synthetic-content.mjs (Sharp SVG Japanese text render)",
"license": "CC0",
"toolsServed": [],
"sha256": "0203ea5fabc9a6965103d64136b17fb8abe33f6def99b8da97cf47c2091ec639",
"bytes": 25932
},
{
"path": "image/valid/portrait-bw.jpeg",
"sourceUrl": "Unknown; added in babca4cf (test coverage expansion). B&W portrait, unverifiable origin.",
"license": "UNVERIFIED-REVIEW",
"toolsServed": [],
"sha256": "0ca77a23c1af40d107f4f34eef048adef98f8b36c475723c6fe921ed3dec81bc",
"bytes": 2731390
},
{
"path": "image/valid/portrait-color-dup.jpg",
"sourceUrl": "Identical to portrait-color.jpg (deliberate duplicate for dedup tests).",
"license": "UNVERIFIED-REVIEW",
"toolsServed": [],
"sha256": "908893cc7c816e977f84af59237a1af29bab6e3ed801879cbe992f698161397e",
"bytes": 89084
},
{
"path": "image/valid/portrait-color.jpg",
"sourceUrl": "Unknown; added in babca4cf (test coverage expansion). Portrait photo, likely AI-generated, unverifiable.",
"license": "UNVERIFIED-REVIEW",
"toolsServed": [],
"sha256": "908893cc7c816e977f84af59237a1af29bab6e3ed801879cbe992f698161397e",
"bytes": 89084
},
{
"path": "image/valid/portrait-headshot.heic",
"sourceUrl": "Unknown; added in babca4cf (test coverage expansion). HEIC portrait, unverifiable origin.",
"license": "UNVERIFIED-REVIEW",
"toolsServed": [],
"sha256": "1f59692ec10d5372e69ebc789c53ebe752f665ff87ede4d15817ce512e769732",
"bytes": 1489644
},
{
"path": "image/valid/portrait-isolated.png",
"sourceUrl": "Unknown; added in babca4cf (test coverage expansion). Portrait with bg removed, same subject as portrait-color.jpg.",
"license": "UNVERIFIED-REVIEW",
"toolsServed": [],
"sha256": "8d53453a5adaecfc3b6db83e85f732cbe67adc42e7c719d4c3ae8eb7777e0a8f",
"bytes": 80745
},
{
"path": "image/valid/qr-code.avif",
"sourceUrl": "gen-synthetic-content.mjs (qrcode lib + Sharp AVIF)",
"license": "CC0",
"toolsServed": [],
"sha256": "93c8268e6fe3e8a16f3c1cc028885e6b4a90887f27a2fe4525e4a928703fcdb3",
"bytes": 1924
},
{
"path": "image/valid/qr-code.png",
"sourceUrl": "gen-synthetic-content.mjs (qrcode lib, encodes https://snapotter.com)",
"license": "CC0",
"toolsServed": [],
"sha256": "97506d778ea20d9a42b303071f280b4f31109fcff7af00bd9e284436a0e51155",
"bytes": 2191
},
{
"path": "image/valid/qr-code.svg",
"sourceUrl": "gen-synthetic-content.mjs (qrcode lib SVG output)",
"license": "CC0",
"toolsServed": [],
"sha256": "bd3128ae46d994fa5dda1345a93f17782b1d906e871b9f318e6fd0d032cc9f50",
"bytes": 1255
},
{
"path": "image/valid/red-eye.jpg",
"sourceUrl": "Unknown; added in babca4cf (test coverage expansion). Canon EOS 400D DIGITAL EXIF from 2007, red-eye portrait.",
"license": "UNVERIFIED-REVIEW",
"toolsServed": [],
"sha256": "04a993def90ffb471cbb0b4bbe46bd2aa9a2d344a9ab7ad187dc22f5feca23ed",
"bytes": 368937
},
{
"path": "image/valid/stress-large.jpg",
"sourceUrl": "Unknown; added in babca4cf (test coverage expansion). Samsung Galaxy S24 Ultra photo (EXIF 2026-04-11), Muay Thai event.",
"license": "UNVERIFIED-REVIEW",
"toolsServed": [],
@@ -289,7 +241,7 @@
"bytes": 6678906
},
{
"path": "content/svg-logo.svg",
"path": "image/valid/svg-logo.svg",
"sourceUrl": "gen-synthetic-content.mjs (geometric test SVG, replaces ConvertICO brand logo)",
"license": "CC0",
"toolsServed": [],
@@ -297,20 +249,68 @@
"bytes": 1426
},
{
"path": "content/video-with-meta.mp4",
"sourceUrl": "gen-synthetic-content.mjs (ffmpeg color frame, 64x64, 1s)",
"license": "CC0",
"toolsServed": [],
"sha256": "f8ad87da046cd641995e86067130976a65ae99c26a8277d41ac5aadd66b08fe4",
"bytes": 2001
},
{
"path": "content/watermark.jpg",
"path": "image/valid/watermark.jpg",
"sourceUrl": "Unknown; added in babca4cf (test coverage expansion). Landscape photo with text watermark overlay.",
"license": "UNVERIFIED-REVIEW",
"toolsServed": [],
"sha256": "b8ddbceea01513f4a9ac6b0903b8071d8466ae88a8d5ef6fd84c33644ce22a4d",
"bytes": 87064
},
{
"path": "video/valid/hero.avi",
"sourceUrl": "Big Buck Bunny (Blender Foundation, www.bigbuckbunny.org) via archive.org, transcoded to AVI",
"license": "CC-BY",
"toolsServed": [],
"sha256": "c56b0e01e4408846c3d040034b85aeeade17a25534771c7f5712e0e0dc5e45cc",
"bytes": 681052
},
{
"path": "video/valid/hero.mkv",
"sourceUrl": "Big Buck Bunny (Blender Foundation, www.bigbuckbunny.org) via archive.org, transcoded to MKV",
"license": "CC-BY",
"toolsServed": [],
"sha256": "41b5d042000446882a3ae562ab262b62ffab8702ba9097424e344d603ae034fe",
"bytes": 241665
},
{
"path": "video/valid/hero.mov",
"sourceUrl": "Big Buck Bunny (Blender Foundation, www.bigbuckbunny.org) via archive.org, transcoded to MOV",
"license": "CC-BY",
"toolsServed": [],
"sha256": "24e2107d9c642bd8c06f1c8ccbb52c9bf8aa177405c1eb274216289d5ed32d75",
"bytes": 244646
},
{
"path": "video/valid/hero.webm",
"sourceUrl": "Big Buck Bunny (Blender Foundation, www.bigbuckbunny.org) via archive.org, transcoded to WebM",
"license": "CC-BY",
"toolsServed": [],
"sha256": "14435ede8e4e2cb7eca91a788647771ca051b04cf1c6ca58b1ad50dec6b5be1f",
"bytes": 226183
},
{
"path": "video/valid/media-30s.mp4",
"sourceUrl": "Big Buck Bunny (Blender Foundation, www.bigbuckbunny.org) via archive.org, 8s segment at 30s, 480x270",
"license": "CC-BY",
"toolsServed": [],
"sha256": "6ad37435eeb01cc694b918f8588255fead60eb01f2a06ca0dc904070064e9136",
"bytes": 247284
},
{
"path": "video/valid/speech-10s.mp4",
"sourceUrl": "macOS say TTS (locally generated, Samantha voice), converted to AAC MP4",
"license": "CC0",
"toolsServed": [],
"sha256": "2f8d3a93f01645af5b14859366d8d0aa59c10e79fca23bf56ab94cc8634bfe50",
"bytes": 92269
},
{
"path": "video/valid/video-with-meta.mp4",
"sourceUrl": "gen-synthetic-content.mjs (ffmpeg color frame, 64x64, 1s)",
"license": "CC0",
"toolsServed": [],
"sha256": "f8ad87da046cd641995e86067130976a65ae99c26a8277d41ac5aadd66b08fe4",
"bytes": 2001
}
]
}