feat(library): add bulk rename tool and e2e coverage (#124)

* feat(library): add bulk rename based on file naming settings

Provides a way to rename all books in a library according to the user's
configured file naming template without requiring manual metadata edits.
Includes a streaming endpoint to report progress back to the frontend.

Closes #121

* test(library): add e2e tests for bulk file rename

Introduce a comprehensive E2E test suite for the bulk rename functionality to verify behavior across different library modes (book per file, book per folder) and handle edge cases like naming collisions or special characters.

Additionally fix a TypeScript compilation error in BulkRenameView.vue by replacing `replaceAll` with a regex-based `replace` for broader target compatibility.

---------

Co-authored-by: neon <18559658+neonsolstice@users.noreply.github.com>
This commit is contained in:
Chris Mansell
2026-05-28 09:27:03 -06:00
committed by GitHub
parent 8ee6929f55
commit e659111e4e
33 changed files with 4595 additions and 70 deletions
+21
View File
@@ -427,6 +427,27 @@ export const E2E_SUITES = Object.freeze({
...SHARED_DB_AND_HELPER_PATHS,
],
},
"file-rename": {
id: "file-rename",
name: "File Rename",
timeout: 120,
lane: "full",
description: "Bulk file rename end-to-end suite covering all library/file structure permutations",
vitestTarget: "test/file-rename.e2e-spec.ts",
junitOutput: `${TEST_RESULTS_DIR}/file-rename-e2e-junit.xml`,
prepareDedicatedDatabase: true,
useDedicatedDatabase: true,
changedPaths: [
"server/src/modules/library/**",
"server/src/modules/file-write/**",
"server/src/modules/scanner/**",
"server/src/modules/app-settings/**",
"server/test/file-rename.e2e-spec.ts",
"server/test/e2e/file-rename/**",
"packages/types/src/file-write.ts",
...SHARED_DB_AND_HELPER_PATHS,
],
},
});
export function listE2ESuites() {