diff --git a/src/collections/voiceover/VoiceSubmissions.ts b/src/collections/voiceover/VoiceSubmissions.ts index 35d69ca..45a8803 100644 --- a/src/collections/voiceover/VoiceSubmissions.ts +++ b/src/collections/voiceover/VoiceSubmissions.ts @@ -71,16 +71,11 @@ export const VoiceSubmissions: CollectionConfig = { }, }, ], - upload: { - mimeTypes: [ - "audio/webm", - "audio/mpeg", - "audio/wav", - "audio/ogg", - "audio/mp4", - "audio/x-m4a", - "audio/m4a", - ], - }, + // No `upload.mimeTypes` allowlist on purpose: Payload content-sniffs uploads + // (file-type) and reports WebM recordings as `video/webm`, so an audio/* MIME + // allowlist rejects browser-recorded takes. The submit action is the gate + // instead (audio/* base type + size cap); restricted file types (executables, + // scripts, …) stay blocked by Payload's built-in checks. + upload: true, timestamps: true, }; diff --git a/tests/int/voiceover-config.int.spec.ts b/tests/int/voiceover-config.int.spec.ts new file mode 100644 index 0000000..0566b00 --- /dev/null +++ b/tests/int/voiceover-config.int.spec.ts @@ -0,0 +1,13 @@ +import { describe, expect, it } from "vitest"; + +import { VoiceSubmissions } from "@/collections/voiceover/VoiceSubmissions"; + +describe("VoiceSubmissions upload config", () => { + // Regression guard: Payload content-sniffs uploads (file-type) and reports + // browser-recorded WebM takes as `video/webm`, so a MIME allowlist rejects + // every in-browser recording. The collection must accept any audio format; + // the submit server action is the audio/* gate instead. + it("accepts any standard audio format (no MIME allowlist)", () => { + expect(VoiceSubmissions.upload).toBe(true); + }); +});