BRU-3177
I have checked the following:
This bug is:
Bruno version
latest (reproduced on main @ c4dc0bc1)
Operating System
macOS (case-insensitive APFS)
Describe the bug
Importing a Postman collection into Bruno corrupts the result when it contains sibling folders that share the same name — either as exact duplicates or as case-only variants (e.g. OAuth2 vs oAuth2). Two distinct failure modes exist:
- UI import path (
renderer:import-collection, uses mkdirSync(..., { recursive: true })): no error is raised, but both folders write into the same on-disk directory. The second folder's requests silently overwrite the first's. Partial, broken import with no indication to the user.
- Onboarding-service path (
utils/collection-import.js, uses plain mkdirSync): crashes with EEXIST: file already exists, mkdir '…/oAuth2'. No recovery, no guidance.
Steps to reproduce
- Download the Sendcloud Postman collection (or any collection with duplicate-/case-variant sibling folder names — Sendcloud has both
Returns+Returns and OAuth2+oAuth2 at /V3).
- In Bruno: Import Collection → Postman, pick the JSON.
- Observe either the
EEXIST crash or a silently merged /V3/OAuth2 folder containing requests from both source folders.
Expected behavior
Bruno should deduplicate sibling folder names case-insensitively before writing, appending a suffix (e.g. oAuth2 - 2) so distinct source folders map to distinct on-disk directories. Same applies to request filenames.
Root cause
- Converter-level dedup in
postman-to-bruno.js uses a JS object keyed by exact name → catches Returns+Returns but not OAuth2+oAuth2.
- Filesystem-writer layer has no sibling-level dedup; only the top-level collection name is checked.
mkdirSync in collection-import.js doesn't pass recursive: true, so the onboarding path crashes instead of silently merging.
Same pattern affects the Insomnia, OpenAPI, and WSDL importers — all converge on the same writer code path.
Screenshots/Live demo link
Import a collection with sibling folders OAuth2 and oAuth2 on macOS to reproduce deterministically.
BRU-3177
I have checked the following:
This bug is:
Bruno version
latest (reproduced on
main@c4dc0bc1)Operating System
macOS (case-insensitive APFS)
Describe the bug
Importing a Postman collection into Bruno corrupts the result when it contains sibling folders that share the same name — either as exact duplicates or as case-only variants (e.g.
OAuth2vsoAuth2). Two distinct failure modes exist:renderer:import-collection, usesmkdirSync(..., { recursive: true })): no error is raised, but both folders write into the same on-disk directory. The second folder's requests silently overwrite the first's. Partial, broken import with no indication to the user.utils/collection-import.js, uses plainmkdirSync): crashes withEEXIST: file already exists, mkdir '…/oAuth2'. No recovery, no guidance.Steps to reproduce
Returns+ReturnsandOAuth2+oAuth2at/V3).EEXISTcrash or a silently merged/V3/OAuth2folder containing requests from both source folders.Expected behavior
Bruno should deduplicate sibling folder names case-insensitively before writing, appending a suffix (e.g.
oAuth2 - 2) so distinct source folders map to distinct on-disk directories. Same applies to request filenames.Root cause
postman-to-bruno.jsuses a JS object keyed by exact name → catchesReturns+Returnsbut notOAuth2+oAuth2.mkdirSyncincollection-import.jsdoesn't passrecursive: true, so the onboarding path crashes instead of silently merging.Same pattern affects the Insomnia, OpenAPI, and WSDL importers — all converge on the same writer code path.
Screenshots/Live demo link
Import a collection with sibling folders
OAuth2andoAuth2on macOS to reproduce deterministically.