Skip to content

QA and Testing

Bolt J Woofson edited this page Sep 27, 2026 · 3 revisions

Brum QA Testing & Verification Manual

Document Version: 3.2.0
Target Release: Brum v1.2.1
Maintainer: Bolt J. Woofson bolt@boop.no
Repository: Woofson/brum


1. Overview & Testing Strategy

Brum combines automated backend test coverage with rigorous multi-viewport manual testing.

┌────────────────────────────────────────────────────────────────────────────────────────┐
│                              Brum Quality Assurance Matrix                             │
├───────────────────────────────────────────┬────────────────────────────────────────────┤
│ Automated Backend Testing                 │ Manual Viewport & Modality Testing         │
│ (Rust Cargo Test Runner, CI/CD)           │ (Phone, Tablet, PC, Browsers, Touch)       │
├───────────────────────────────────────────┼────────────────────────────────────────────┤
│ • Cryptographic engines & Argon2id vaults │ • Phone (< 600px): Touch-first single pane │
│ • VFS drivers (Local, SFTP, SMB, WebDAV)  │ • Tablet (600px–1024px): Adaptive panels   │
│ • Database integrity & SQLite WAL schema  │ • PC (> 1024px): Multi-panel & F-Keys      │
│ • Task scheduling & DeltaSync replication │ • Input modalities: Mouse, Touch, Stylus   │
│ • Token generation, PAM & OIDC parsing    │ • Browser rendering: Chrome, Firefox, WebKit│
│ • Windows SCM, Recycle Bin & PE metadata  │ • Cross-platform: Linux, Windows, macOS    │
└───────────────────────────────────────────┴────────────────────────────────────────────┘

2. Automated Test Suite (cargo test)

Brum includes 71 automated unit and integration test suites in the Rust backend. These are run automatically on every build and pre-release check.

cargo test

Automated Coverage Breakdown

Subsystem Automated Test Functions What is Verified Automatically
VFS & Filesystem test_clean_path_buf_strips_unc_and_verbatim_prefix
test_copy_file_paranoid_prevents_recursive_loop
test_copy_file_paranoid_success
test_delete_and_rename_with_options
test_list_branch_view_hidden_filter
test_list_branch_view_max_entries_truncation
test_list_branch_view_recursive_flatten
test_resolve_local_path_windows_prefix
test_windows_native_helpers_and_lock_detection
test_sftp_parse_uri_variations
test_sanitize_uri
test_windows_recycle_bin_i_file_parsing_v1_and_v2
test_is_archive_file_extensions
test_real_iso_reading
test_squashfs_lifecycle
test_fat_filesystem_read_lifecycle
test_gpt_probing
test_mbr_fat16_probing_and_reading
• Path normalization & traversal prevention
• Recursive copy loop protection
• Branch/Flat view directory flattening
• SFTP URI parsing across IPv4/IPv6/ports
• Windows verbatim prefix (\\?\) handling
• Windows Recycle Bin $I file decoding
• ISO 9660, SquashFS, and FAT16/FAT32 disk probing
Authentication & RBAC test_auth_sqlite_wal_pragmas
test_verify_token_allow_expired_for_session_unlock
test_api_token_lifecycle_and_revocation
test_user_preferences_persistence
test_user_group_cache_ttl
test_is_role_permitted
test_extract_terminal_claims_standalone
test_extract_terminal_claims_with_token_and_query
test_resolve_effective_home_schemes
• SQLite WAL mode and schema initialization
• JWT token issuance, expiry & signature verification
• API token generation, prefix hashing & revocation
• Session unlock with expired token grace period
• Role-Based Access Control (Admin vs User vs Readonly)
• Terminal PTY claim extraction and auth guards
• Home fallback scheme resolution
Vaults & Encryption test_vault_create_unlock_write_read_cycle
test_notedog_encryption_cycle
test_notedog_wrong_password
• .cdvault Argon2id + AES-256-GCM RAM container
• Zero plaintext persistence on vault lock
• AES-256 encrypted database note attachments
• Rejection of invalid encryption passphrases
Sync & Backup Studio test_sync_replication_profiles
test_backup_manager_crud
test_splitter_and_combine_integrity
• Replication modes (Mirror, Synchronize, Backup)
• Checksum calculation & delta block verification
• File splitting (.001, .002) and SHA-256 recombine
Tools & Utilities test_duplicate_scan_and_clean
test_duplicate_scan_with_filters
test_disk_usage_scan_and_report
test_disk_usage_single_file
test_disk_usage_nonexistent
test_get_system_disks_enumeration
test_pdf_merge
test_pdf_info_and_split
test_id3v1_metadata_cycle
test_log_viewer_tail_and_filters
test_tags_and_color_label_persistence_and_clearing
test_git_status_and_actions
test_trash_encode_decode_path
test_trash_move_list_restore_lifecycle
test_trash_collision_handling
test_list_trash_directory_entries_vfs
• Byte-exact duplicate file scanner & filters
• Disk usage recursive analysis
• PDF page splitting, rotation, and merging
• Audio ID3 tag parsing and embedding
• File color tagging and label persistence
• Git staging, diff, and status detection
• XDG Trash cycle, restoration & collision handling
Sharing & Chewtoys test_advanced_sharing_center_lifecycle
test_plugin_pack_and_install_grr
test_handle_install_and_list_plugins
test_tetradog_scoring_and_leaderboard_multiuser
• Public share token generation, ACLs, and expiry
• .grr Chewtoy plugin extraction & manifest parsing
• Sandboxed plugin installation & uninstallation
• Tetrion multiplayer leaderboard scoring
Server & HTTP test_handle_health_endpoint
test_handle_static_asset_etags
test_http_range_parsing
test_normalize_path_resolution
test_path_starts_with_case_insensitive
test_master_config_parsing
test_external_theme_flat_parsing
test_external_theme_multi_parsing
test_terminal_config_parsing
test_storage_config_parsing
test_windows_unescaped_backslashes_auto_repair
• HTTP 206 Partial Content range requests (Media streaming)
• Static asset ETag caching & compression
• Master config.toml & external theme loader
• Automatic repair of unescaped Windows paths

3. Manual Testing Protocol: Viewports & Modalities

Manual testing must be executed whenever UI layout, touch interactions, responsive styling, or frontend event forwarding are updated.


SECTION 1: Phone Viewport (< 600px)

Target devices: Mobile smartphones in portrait orientation (360px–480px) and folded screens of foldable devices. Primary input: Touch & On-Screen Keyboard.

Test ID Test Scenario Step-by-Step Procedure Expected Result Pass / Fail
MOB-01 Single Panel Constraint 1. Resize browser or open on phone (< 600px).
2. Observe the main workspace.
• Single panel displays full width.
• No horizontal page scrolling.
• Breadcrumb path bar truncates cleanly with ellipsis (...).
[ ]
MOB-02 Header Branding Minimization 1. Observe top application header on phone. • Text logo ("Brum") hides gracefully.
• Logo icon and essential tools remain accessible.
• User avatar collapses to compact 32px circular icon.
[ ]
MOB-03 Mobile Bottom Action Bar 1. Check bottom action bar.
2. Tap + Select button.
3. Tap multiple files.
• Checkboxes appear next to table rows.
• Live counter updates (Selected: 3 (1.2 MB)).
• Action buttons (Cut, Copy, Delete, Actions) activate.
[ ]
MOB-04 Slide-Up Context Menu 1. Select files and tap Actions on the bottom bar.
2. Scroll through context options.
• Menu slides up from the bottom as a modal bottom sheet.
• Touch targets are minimum 44px height.
• Submenus expand accordion-style without off-screen clipping.
[ ]
MOB-05 Touch Long-Press Selection 1. Long-press any file row for 500ms.
2. Short-tap a folder.
3. Short-tap a file.
• Long-press selects row with haptic feedback.
• Short-tap navigates into folder.
• Short-tap on file opens previewer.
[ ]
MOB-06 Media Player Interactive Pill 1. Start playing audio or video.
2. Tap minimize button on media player.
3. Tap play/pause or next track on floating pill.
4. Tap pill body to restore.
• Media player collapses into an interactive bottom-right pill.
• Controls operate directly on the pill without full window restoration.
• Clicking pill body restores window.
[ ]
MOB-07 Virtual Keyboard & Form Offset 1. Open Renamer, Notes, or Search modal.
2. Tap inside an input field to raise on-screen keyboard.
• Viewport adjusts dynamically via dvh / interactive-widget.
• Input field remains centered above keyboard (not occluded).
[ ]
MOB-08 High-DPI Touch Gestures 1. Tap an image to open viewer.
2. Swipe left/right.
3. Double-tap and pinch-to-zoom.
• Swipe navigates to adjacent photos in the directory.
• Double-tap zooms 200%; pinch gestures zoom smoothly.
• Swipe down or [✕] dismisses viewer.
[ ]

SECTION 2: Tablet & Foldable Viewport (600px – 1024px)

Target devices: iPad, Android tablets, foldables in unfolded tablet mode (e.g. Galaxy Z Fold, Pixel Fold, Surface Duo). Primary input: Touch, Stylus, Bluetooth Keyboard & Trackpad.

Test ID Test Scenario Step-by-Step Procedure Expected Result Pass / Fail
TAB-01 Adaptive Dual-Panel Transition 1. Start with phone viewport (< 600px).
2. Unfold or expand viewport width to > 600px.
• Workspace dynamically transitions from single-panel to side-by-side dual-panel without page reload or state loss. [ ]
TAB-02 Orientation Shift (Portrait ↔ Landscape) 1. In landscape orientation (> 768px), view dual vertical panels.
2. Rotate device to portrait mode.
• Dual panels adjust column widths proportionally.
• Panel headers, toolbars, and path bars remain legible with 26px standard buttons.
[ ]
TAB-03 Touch & Stylus Drag-and-Drop 1. Select files on Panel 1 with stylus or finger.
2. Drag across the center divider and drop into Panel 2.
• Drag ghost indicator displays selected count.
• Target panel highlights with active drop border.
• Confirmation prompt appears with Copy / Move choices.
[ ]
TAB-04 Notes Sliding Drawer Mode 1. Open Notes Core Function from tools launchpad.
2. Switch between floating window and in-pane docked mode.
• Notes docks cleanly into active panel without iframe overhead.
• Sliding note drawer allows note selection and instant markdown editing.
[ ]
TAB-05 Hinge Seam Avoidance (Dual-Screen Foldables) 1. Open Brum on a dual-screen device with a physical hinge (horizontal-viewport-segments: 2). • Panel 1 maps to Screen 1 (Left); Panel 2 maps to Screen 2 (Right).
• Center splitter aligns with physical hinge gap preventing text splitting.
[ ]
TAB-06 Tablet Directory Tree Sidebar 1. Tap folder tree button on panel header.
2. Expand nested subdirectories.
• Collapsible tree expands with smooth touch response.
• Selecting a tree node updates the panel file table immediately.
[ ]

SECTION 3: PC Desktop Viewport (> 1024px)

Target devices: Desktop PCs, laptops, and ultrawide monitors (1080p, 1440p, 4K, Ultrawide). Primary input: Physical Mouse, Scroll Wheel, and Keyboard.

Test ID Test Scenario Step-by-Step Procedure Expected Result Pass / Fail
PC-01 Header Margins & Alignment 1. View top header on wide PC screen (1920x1080+).
2. Check left logo position and right profile button.
• Header has comfortable 18px horizontal padding on both edges.
• Logo is not pressed against left monitor bezel.
• User profile button has proper right margin and does not clip outside viewport.
[ ]
PC-02 Passive Mouseover Wheel Scrolling 1. Ensure Panel 2 is inactive (Panel 1 has active focus ring).
2. Hover mouse cursor over Panel 2's header, breadcrumbs, column headers, and status bar.
3. Scroll mouse wheel up and down.
• Inactive Panel 2 scrolls smoothly without needing to click or activate it first.
• Scrolling directly over table rows also scrolls smoothly.
[ ]
PC-03 Focus Follows Mouse (Hover Activation) 1. Open Settings > General > Layout & Viewport Defaults.
2. Enable "Activate Panel on Mouse Hover (Focus Follows Mouse)".
3. Move cursor back and forth between Panel 1 and Panel 2.
4. Use arrow keys (↑/↓) immediately after hovering.
• Active panel indicator and keyboard focus shift immediately to the hovered panel without clicking.
• Keyboard navigation operates on the hovered panel instantly.
[ ]
PC-04 Multi-Panel Layout Switcher 1. Use header layout toggle group to switch layouts:
• Single (1)
• Dual Vertical (2V)
• Dual Horizontal (2H)
• Triple Columns (3)
• Triple Split 1+2 (3S)
• Quad 2x2 (4).
• Panes reconfigure instantly with preserved paths and selection state.
• Active layout button displays amber accent glow.
• Keyboard shortcuts (Alt+1 to Alt+4) switch layouts.
[ ]
PC-05 Orthodox Keyboard Navigation (F1–F10) Test standard keyboard shortcuts:
• Tab: Switch active panel.
• ↑/↓: Move cursor selection.
• Space / Insert: Toggle selection and advance cursor.
• Enter: Open directory / execute.
• F2: Quick Rename.
• F3: Quick View / Document Viewer.
• F4: Multi-Tab Editor.
• F5: Copy to opposite panel.
• F6: Move to opposite panel.
• F7: New Directory.
• F8 / Delete: Delete files.
• F9: Compare & Diff.
• F10: Settings Hub.
• Every shortcut performs its dedicated action without lag.
• Bottom F-Key bar reflects active keys and responds to mouse clicks.
[ ]
PC-06 Drag-to-Resize Table Columns 1. Hover cursor over column divider lines (Name, Ext, Size, Modified, Created, Mode, Tags).
2. Click and drag left/right.
3. Double-click column divider.
4. Refresh browser (Ctrl+F5).
• Cursor changes to col-resize and column smoothly resizes live.
• Double-click auto-fits column to longest entry.
• Custom column widths persist after refresh.
[ ]
PC-07 Branch / Flat View (Ctrl+B) 1. Navigate into a deep nested folder hierarchy.
2. Press Ctrl+B.
3. Sort by Size descending.
4. Click [✕ Exit Branch View].
• Nested files flatten into a single unified list.
• Sorting identifies largest storage consumers across all subfolders.
• Exiting restores regular hierarchical view.
[ ]
PC-08 Spotlight Quick-Switcher (Ctrl+K) 1. Press Ctrl+K / Cmd+K.
2. Type fuzzy query (e.g. calc, sync, vault, diff, notes, /var/log).
3. Use ↑/↓ and press Enter.
• Modal opens with instantaneous fuzzy search.
• Enter executes action or navigates to directory.
[ ]
PC-09 Bite! Terminal & Nerd Fonts 1. Press ` (Backtick) or click Terminal.
2. Run eza --icons, ls -la, git status, or interactive CLI (htop, vim).
3. Press Ctrl+D or type exit.
• Terminal opens with full ANSI color support.
• JetBrainsMono Nerd Font glyphs render without tofu boxes.
• Exiting PTY automatically closes terminal drawer.
[ ]
PC-10 3D CAD Studio & Model Viewer 1. Click .stl, .obj, or .gltf / .glb 3D model.
2. Use mouse to rotate, pan, and zoom.
3. Toggle wireframe mode, bounding box, and grid helpers.
• Three.js WebGL viewport renders 3D mesh smoothly.
• Mouse drag orbits camera, scroll zooms, right-drag pans.
• Mesh stats (poly count, vertex count, bounding dimensions) calculate accurately.
[ ]

4. Authentication & Security Verification Matrix

Test ID Test Scenario Step-by-Step Procedure Expected Result Pass / Fail
AUTH-01 OpenID Connect (OIDC) / Authentik SSO Flow 1. Configure [auth.oidc] in config.toml (or env vars).
2. Open login screen.
3. Click "Sign in with Authentik".
4. Authenticate at Authentik portal.
5. Observe return to Brum dashboard.
• Login card displays high-contrast SSO button.
• Redirects to Authentik authorization endpoint with PKCE.
• Returns to / with valid session token and success toast.
• New user profile auto-provisions in database.
[ ]
AUTH-02 SSO Admin Group Role Mapping 1. In Authentik, place user in brum-admins group.
2. Sign in with SSO.
3. In Authentik, remove user from admin group and re-login.
• User in brum-admins is automatically elevated to admin in Brum.
• User without admin group receives default user role.
[ ]
AUTH-03 Direct SSO Bypass (force_sso_only) 1. Set force_sso_only = true in config.toml.
2. Open unauthenticated browser session at /.
3. Open / with ?local=1 parameter.
• Visiting / immediately redirects to Authentik without showing login modal.
• Visiting /?local=1 allows local admin password entry.
[ ]
AUTH-04 Session Lock (Ctrl+Alt+L) & Inactivity Timeout 1. Press Ctrl+Alt+L or click Lock from profile menu.
2. Enter password/PIN to unlock.
3. Leave browser inactive for configured timeout (e.g. 15m).
• Lock screen obscures all workspace panes.
• Valid password restores session without page reload.
• Inactivity timer triggers lock screen automatically.
[ ]
AUTH-05 Zero-Leakage Encrypted Vaults (.cdvault) 1. Click Vaults > Create New Vault.
2. Set master passphrase and container size.
3. Unlock vault, create sensitive files inside, and lock vault.
• Vault mounts to virtual in-memory VFS.
• Locking vault immediately zeroes RAM keys; container on disk remains ciphertext only.
[ ]

5. Acceptance Sign-off Matrix

Platform / Viewport Browser Tested Tests Passed Tester Date Release Decision
Phone (< 600px) Chrome / Kiwi Mobile _____ / 8 [ ] PASS / [ ] FAIL
Phone (< 600px) Firefox Mobile _____ / 8 [ ] PASS / [ ] FAIL
Phone (< 600px) Vivaldi Mobile _____ / 8 [ ] PASS / [ ] FAIL
Tablet (600px–1024px) iPad Safari _____ / 6 [ ] PASS / [ ] FAIL
Tablet (600px–1024px) Android Tablet Chrome _____ / 6 [ ] PASS / [ ] FAIL
PC Desktop (> 1024px) Chrome Desktop _____ / 10 [ ] PASS / [ ] FAIL
PC Desktop (> 1024px) Firefox Desktop _____ / 10 [ ] PASS / [ ] FAIL
PC Desktop (> 1024px) Vivaldi / Edge Desktop _____ / 10 [ ] PASS / [ ] FAIL
Auth & Security Authentik SSO / Local PAM _____ / 5 [ ] PASS / [ ] FAIL

Final Release Decision

  • RELEASE 1.0.0 APPROVED (All 54 automated backend tests passing + manual sign-off complete)

Clone this wiki locally