-
Notifications
You must be signed in to change notification settings - Fork 0
QA and Testing
Document Version:
3.2.0
Target Release:Brum v1.2.1
Maintainer: Bolt J. Woofson bolt@boop.no
Repository: Woofson/brum
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 │
└───────────────────────────────────────────┴────────────────────────────────────────────┘
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| Subsystem | Automated Test Functions | What is Verified Automatically |
|---|---|---|
| VFS & Filesystem |
test_clean_path_buf_strips_unc_and_verbatim_prefixtest_copy_file_paranoid_prevents_recursive_looptest_copy_file_paranoid_successtest_delete_and_rename_with_optionstest_list_branch_view_hidden_filtertest_list_branch_view_max_entries_truncationtest_list_branch_view_recursive_flattentest_resolve_local_path_windows_prefixtest_windows_native_helpers_and_lock_detectiontest_sftp_parse_uri_variationstest_sanitize_uritest_windows_recycle_bin_i_file_parsing_v1_and_v2test_is_archive_file_extensionstest_real_iso_readingtest_squashfs_lifecycletest_fat_filesystem_read_lifecycletest_gpt_probingtest_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_pragmastest_verify_token_allow_expired_for_session_unlocktest_api_token_lifecycle_and_revocationtest_user_preferences_persistencetest_user_group_cache_ttltest_is_role_permittedtest_extract_terminal_claims_standalonetest_extract_terminal_claims_with_token_and_querytest_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_cycletest_notedog_encryption_cycletest_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_profilestest_backup_manager_crudtest_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_cleantest_duplicate_scan_with_filterstest_disk_usage_scan_and_reporttest_disk_usage_single_filetest_disk_usage_nonexistenttest_get_system_disks_enumerationtest_pdf_mergetest_pdf_info_and_splittest_id3v1_metadata_cycletest_log_viewer_tail_and_filterstest_tags_and_color_label_persistence_and_clearingtest_git_status_and_actionstest_trash_encode_decode_pathtest_trash_move_list_restore_lifecycletest_trash_collision_handlingtest_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_lifecycletest_plugin_pack_and_install_grrtest_handle_install_and_list_pluginstest_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_endpointtest_handle_static_asset_etagstest_http_range_parsingtest_normalize_path_resolutiontest_path_starts_with_case_insensitivetest_master_config_parsingtest_external_theme_flat_parsingtest_external_theme_multi_parsingtest_terminal_config_parsingtest_storage_config_parsingtest_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 |
Manual testing must be executed whenever UI layout, touch interactions, responsive styling, or frontend event forwarding are updated.
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. |
[ ] |
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. |
[ ] |
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. |
[ ] |
| 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. |
[ ] |
| 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
|
- RELEASE 1.0.0 APPROVED (All 54 automated backend tests passing + manual sign-off complete)
Brum — Multi-Pane Web Environment (File Commander/Manager)
Creator & Lab: Bolt J Woofson @ Woofsons Lab (www.arf.ac) • MIT License