# OzCrypt Apps Manual Testing Checklist Run from a local static server such as `http://127.0.0.1:4179/`. Also spot-check direct `file://` opening for relative navigation. ## General - Open apps homepage. - Open OzPurge. - Open OzVault. - Open OzStegano. - Open OzChat. - Confirm homepage quick task cards never show raw i18n keys such as `home.taskEncryptText` or `home.taskGeneratePassword`. - Confirm homepage quick actions include Apex log analysis, Flow metadata analysis, JSON formatting, and SOQL building, and that each link opens the expected SFKit tool. - Confirm the mobile homepage header does not overflow horizontally at 360 px, 390 px, and 430 px widths. - Open OzCrypt landing. - Open Encrypt wizard. - Open Decrypt wizard. - Open OzHashKit. - Open OzGen. - Open OzSFKit. - Open Format docs. - Switch English and Simplified Chinese. - Confirm Chinese homepage hero text does not overlap. - Confirm Chinese section headings wrap cleanly. - Test mobile width layout around 360 px and 768 px. - Test offline/PWA behavior after first load if the browser allows Service Worker on the current origin. ## OzVault manual tests - Open `/vault/`. - Confirm EN/ZH switching updates the locked screen, item labels, import/export warnings, dashboard text, and errors. - Confirm theme switching works and the page has no horizontal overflow at 360 px, 390 px, and 430 px. - Create a new vault with a strong master password and confirm the local-only and unrecoverable-password warnings are visible. - Try creating with mismatched passwords and confirm a friendly inline error appears. - Add a Login item with title, username, password, URL, notes, tags, and favorite. - Save the Login item, copy username/password, reveal/hide password, and open the URL. - Use the local generator to fill a password, then save the item. - Add a Secure Note, save it, and confirm the note preview updates. - Add an API Key item, save it, copy the access key and secret key, and reveal/hide the secret key. - Search by title, username, provider, URL, and tag. Confirm sensitive fields such as passwords are not needed for search. - Filter by Logins, Notes, API Keys, Favorites, and a tag. - Review the local security dashboard for weak, duplicate, old, and missing-URL findings. - Change auto-lock to 1 minute and confirm the vault locks after inactivity. - Export the encrypted `.ozv` file and confirm the filename ends in `.ozv`. - Lock the vault manually and confirm items disappear from the UI. - Open the exported `.ozv`, unlock with the correct master password, and confirm items restore. - Try a wrong master password and confirm the vault remains locked. - Export plaintext JSON/CSV only after checking the warning checkbox; confirm the warning blocks export if unchecked. - Import a simple CSV with login fields and confirm imported items must be reviewed before exporting. - Inspect the `.ozv` public header if practical and confirm it does not contain item titles, usernames, URLs, tags, passwords, notes, API keys, or attachment names. - Confirm no master password, derived key, or plaintext vault data is stored in `localStorage`. - Confirm TOTP and attachments are clearly marked as planned/free local features, not working features. ## OzPurge manual tests - Open `/purge/`. - Confirm EN/ZH switching updates headings, strategy labels, warnings, statuses, and report text. - Confirm the OzPurge page works with the shared theme system and does not overflow at 360 px, 390 px, and 430 px widths. - Confirm the page uses tabs for Metadata Cleaner, Content Redaction, Safe Destroy, Report, and Guide without a full page reload. - Add a JPEG with EXIF metadata and confirm OzPurge detects common metadata categories before cleaning. - Clean the JPEG and confirm the download uses a `_clean` suffix. - Add a JPEG without obvious metadata and confirm OzPurge reports that no removable metadata was found. - Add a PNG containing ancillary metadata chunks such as `tEXt`, `iTXt`, `tIME`, or `eXIf` if available, then confirm the preview lists removable chunk categories. - Clean the PNG and confirm the output downloads with a `_clean` suffix. - Switch from Standard clean to Aggressive clean and confirm the preview plan changes for ICC / physical pixel density where relevant. - Switch to Custom clean and confirm the custom checkbox area appears. - Add an unsupported format such as GIF, HEIC, WebP, or MP3 and confirm OzPurge shows a friendly unsupported message instead of pretending to clean it. - Add DOCX or PDF and confirm OzPurge shows planned / best-effort placeholder guidance honestly. - Add multiple files and confirm batch cleaning processes files one by one without blocking the whole queue on one failure. - Confirm the queue supports Preview, Clean, Download, and Remove actions per file. - In Content Redaction, paste text with email addresses, phone numbers, URLs, bearer tokens, and long secrets; confirm the match preview highlights them locally. - In Content Redaction, test custom regex, `****`, `[REDACTED]`, and keep-first/last replacement styles. - Download a `_redacted` file and confirm the original text is not overwritten. - In Safe Destroy, load a file, generate a random replacement file, download the destruction report, and confirm the browser limitation warning is visible. - Confirm OzPurge does not claim to securely delete the original disk file. - Download the CSV report and confirm per-file status, byte counts, and removed categories are present. - Download the JSON report and copy the Markdown summary. - Confirm OzPurge does not store file names, report history, or cleaned files after leaving the page. ## OzStegano manual tests - Open `/stegano/`. - Confirm EN/ZH switching updates headings, labels, warnings, buttons, and guide text. - Confirm the top tabs switch between Hide, Extract, and Guide without a full page reload. - Load a PNG carrier and confirm width, height, preview, and capacity estimate appear. - Paste short text, hide it into PNG, and download the stego PNG. - Reload the stego PNG in Extract and confirm text restores locally. - Load a small file payload, hide it into PNG, download the stego PNG, then extract and download the restored file. - Enable payload encryption, set a password, hide the payload, and confirm extract requires the password. - Try a wrong password and confirm a friendly failure appears. - Try a payload larger than carrier capacity and confirm the hide action is blocked with a clear error. - Try extracting from a normal PNG with no hidden payload and confirm a friendly no-payload error appears. - Try selecting JPEG and confirm OzStegano rejects the lossy format. - Confirm checksum verification reports success after a normal extract. - Confirm mobile layout has no horizontal overflow at 360 px, 390 px, and 430 px widths. - Confirm theme switching keeps warnings, forms, preview cards, and output panels readable. - Confirm WAV, ZIP preprocessing, pseudo-random embedding, and random padding are shown honestly as planned local features, not Pro features. ## OzChat manual tests - Open `/chat/`. - Confirm EN/ZH switching updates connection, security, chat, file, guide, warning, and error text. - Confirm the Offline, Connect, Chat, Files, Diagnostics, Group, and Guide tabs switch without a full page reload. - Confirm theme switching keeps setup cards, signaling textareas, message bubbles, file progress, and warning cards readable. - Confirm mobile layout has no horizontal overflow at 360 px, 390 px, and 430 px. - In Offline, confirm Service Worker, cache, install, no-trace, protected signaling, and fingerprint status cards render. - Open `/chat/` online once, wait for the service worker/cache, then simulate offline and reload `/chat/` if the browser test tools allow it. - Confirm the offline panel warns that OzChat must be opened/cached/installed before travel. - Toggle Keep screen awake if the browser supports Wake Lock; if not supported, confirm fallback guidance appears. - In Tab A, set a nickname and click Create offer. - With protected signaling enabled, enter a pairing code, click Create offer, and confirm the output begins with `OZCHAT-SIGNAL-1:`. - Copy or download the protected Offer from Tab A. - In Tab B, open `/chat/`, enter the same pairing code, paste the protected Offer, and click Create answer. - Confirm a wrong pairing code shows a friendly protected-signal error and does not create an answer. - Copy or download the protected Answer from Tab B. - In Tab A, enter the same pairing code, paste the protected Answer, and click Connect with answer. - Confirm both tabs reach Connected and the app-layer encryption status changes to ready. - Confirm a session fingerprint appears in both tabs. - Compare the fingerprint values manually, then mark the fingerprint verified and reset verification. - Send a text message from Tab A to Tab B and confirm it decrypts and appears correctly. - Send a text message from Tab B to Tab A and confirm it decrypts and appears correctly. - Send a small file under 25 MB and confirm progress updates, checksum verification, and download on the receiving tab. - Try selecting a file larger than 25 MB and confirm the friendly local-preview size warning appears. - Paste malformed Offer JSON and confirm a friendly invalid-offer error appears. - Paste malformed Answer JSON and confirm a friendly invalid-answer error appears. - Disable protected signaling under the Advanced / plain mode checkbox and confirm plain JSON Offer/Answer still works with a visible metadata warning. - Confirm QR status shows exact signal size, ready / near-limit / too-large states, and that oversized signals recommend copy/download instead. - For a small enough signal, download the QR image and confirm it is generated locally. - If the browser supports `BarcodeDetector`, upload a generated QR image and confirm the Offer/Answer textarea is filled locally. - If camera scanning is supported on localhost/HTTPS, scan a generated signal QR and confirm the camera stops after detection or cancel. - If `BarcodeDetector` or camera is unsupported, confirm OzChat shows paste/upload fallback guidance instead of pretending scan works. - In Diagnostics, confirm WebRTC, DataChannel, Web Crypto, secure context, Service Worker, cache, connection, ICE, role, signaling, fingerprint, and no-trace rows render. - Toggle Show technical details and confirm ICE candidate counts appear without listing IP addresses. - Copy concise diagnostics, Markdown diagnostics, and Session Safety Summary; confirm they do not include messages, keys, pairing codes, raw signaling, or file content. - Use Reset signaling and confirm Offer/Answer outputs and QR displays are cleared without clearing chat messages. - In Group, confirm the mesh scaffold says 2 people = 1 connection, 3 people = 3 connections, and 4 people = 6 connections. - Enter a room name, create a room card, copy it, download it, and confirm QR is shown only if small enough. - Confirm the room card clearly says it is setup data only and does not create a cloud room. - Start a file transfer and confirm cancel/clear controls update the row and release completed received files from the UI. - Disconnect and confirm chat messages, transfer rows, fingerprints, and key-ready state are cleared from the session UI. - Refresh the page and confirm plaintext chat history is not restored. - Confirm no messages, files, signaling data, pairing codes, session keys, or fingerprints are stored in `localStorage`. ## Theme / Appearance - Open the Appearance control from the top navigation. - Confirm the Theme / Appearance button shows a readable label instead of `theme.button`. - Confirm the Appearance button, language selector, and mobile menu fit without horizontal scrolling on small screens. - Switch between System, Dark, Light, Ocean, Salesforce Blue, Cyber, and Minimal. - Switch between Sakura, Candy, Bubblegum, Lavender, Unicorn, Space Kids, Forest Kids, and Sunshine. - Refresh the page and confirm the selected theme persists. - Confirm the theme picker shows Professional and Playful sections with preview swatches. - Switch Density between Comfortable and Compact. - Switch Font size between Normal and Large. - Switch Motion between Follow system, Normal, and Reduced. - Switch Card style between Rounded and Sharp. - Confirm Reset appearance restores the default settings. - Confirm clicking outside the panel or pressing `Esc` closes the Appearance panel. - Confirm warnings, buttons, tables, and textareas remain readable in both EN/ZH. - Confirm appearance settings do not contain user data, generated secrets, or decrypted content in local storage. - Confirm code blocks, SFKit tables, and OzCrypt warning cards stay readable in playful themes. - Confirm language switching keeps the theme button translated and the Appearance panel readable. ## Encrypt / Decrypt - Walk through the Encrypt wizard and confirm the step order is Notice, Browser, Input, Scenario, Protection, Strategy, Optional, Review, Output. - Click Re-run checks in the browser-compatibility step and confirm the capability list refreshes. - In Encrypt, confirm Clear selected files and Clear text work without forcing a full Start over. - After a successful text or file encryption, confirm Encrypt another with same settings returns to the input flow while keeping only non-secret settings. - Walk through the Decrypt wizard and confirm the step order is Notice, Browser, Load, Preview, Unlock, Result. - In Decrypt preview, confirm Copy safe metadata summary works before unlock and does not expose protected metadata or secrets. - After a successful decrypt, confirm Decrypt another clears the current package, previews, restored files, and unlock fields. - Encrypt short text to `.ozc`. - Encrypt short text to encrypted text block. - Encrypt short text to both `.ozc` and encrypted text block. - Decrypt `.ozc`. - Decrypt pasted encrypted text block. - Encrypt/decrypt a single file. - Encrypt/decrypt multiple files. - Decrypt an `OZP1` multi-file package and download individual files. ## Factors - Password only. - Q&A lock. - Gesture lock 3x3. - Gesture lock 4x4. - Gesture lock 5x5. - File Key lock. - Local Time Lock. - Environment Lock. ## QR - Generate QR for a short encrypted text block. - Confirm QR status shows payload size and readiness clearly. - Download the QR image. - Confirm long encrypted text block shows the QR reliability warning. - Confirm compact `OZC1B64:` QR payloads still decrypt through the normal OzCrypt flow. - Upload a QR image containing an OzCrypt encrypted text block. - Test camera QR scan where HTTPS or localhost camera access is available. - Test invalid QR payload and confirm a friendly error appears. - Upload an invalid/non-image QR file and confirm OzCrypt shows a friendly image-read error. - Test a browser without `BarcodeDetector` and confirm OzCrypt suggests upload/paste fallbacks honestly. ## Config Template - Export `.ozcfg`. - Import `.ozcfg`. - Confirm the template pre-fills only non-secret settings. - Confirm passwords, answers, gesture sequences, key-file hashes, derived keys, and unlock secrets are not included. ## Recovery Reminder - Encrypt a file or note and confirm a recovery reminder appears after encryption. - Copy the reminder and confirm it contains only non-secret guidance. - Download the reminder as text/markdown. - Confirm the reminder does not contain passwords, answers, gestures, key-file hashes, or unlock secrets. ## Protection Strategies - Single Lock still works. - Multi-Password AND succeeds with all configured passwords. - Multi-Password AND fails when one configured password is wrong. - Partner Lock OR succeeds with any one valid partner password. - Partner Lock OR fails with an invalid password. - Concentric Lock remains disabled/future. - Multi-algorithm cascade remains disabled/future. - No password, password hash, derived key, or unlock secret appears in metadata. - Existing encrypted text block flow still works. - Existing `.ozc` flow still works. - AAD tamper detection still works by modifying a public header field and confirming unlock fails. ## Failure Cases - Wrong password. - Wrong gesture. - Wrong key file. - Modified/tampered package. - Malformed encrypted text block. - QR image with no valid OzCrypt content. ## OzHashKit manual tests - Open `/hashkit/`. - Confirm EN/ZH switching updates headings, labels, and action buttons. - Confirm the top tabs switch between Hash and Compare without reloading the page. - Load one file and calculate a SHA-256 hash. - Switch to text mode and hash a pasted string or JSON payload. - Load multiple files and confirm all rows finish without layout overflow. - Switch algorithms between SHA-1, SHA-256, SHA-384, and SHA-512. - Paste an expected checksum and confirm comparison shows match or mismatch clearly. - Paste a SHA-384 or SHA-512 checksum and confirm the algorithm can auto-switch based on checksum length. - Confirm the checksum detection panel explains the likely algorithm before comparison. - Copy CSV and confirm the clipboard contains the current result table. - Copy TXT and confirm the clipboard contains the current result list. - Copy manifest and confirm the selected manifest style is used. - Download manifests in CSV, SHA256SUMS-style, and Markdown formats. - In Compare > Text, compare two short texts and confirm similarity percentage, interpretation, and diff view appear. - In Compare > Text, test larger text and confirm a friendly fallback note appears instead of freezing the page. - In Compare > Files, compare two identical files and confirm SHA-256 shows a 100% exact match. - In Compare > Files, compare two different text files and confirm a heuristic local text comparison is reported. - In Compare > Batch, load multiple files and confirm exact duplicate groups, same-name or same-size candidates, and CSV / JSON export work. - Test mobile width and confirm long hash values wrap without expanding the page. ## OzGen manual tests - Open `/gen/`. - Confirm EN/ZH switching updates headings, labels, and action buttons. - Confirm the top tabs switch between Password, Passphrase, and Identity without reloading the page. - Test Password mode with Website login and Admin password presets. - Test Passphrase mode and confirm word count, separator, capitalization, appended number, and optional symbol all change the output. - Test PIN mode and confirm the output contains digits only. - Test API secret mode and confirm the output is long, random, and URL-safe. - Confirm each preset shows a short description. - Confirm the mode guidance note updates when switching Password / Passphrase / PIN / Secret. - Increase batch count above 1 and confirm multiple results are generated. - Use Copy all and confirm all generated lines are copied. - Use Regenerate on a single result and confirm only that item changes. - In Identity mode, generate 1-100 synthetic identities and confirm the preview card and table update locally. - Confirm generated emails use reserved/test domains such as `example.com`, `example.net`, or `example.org`. - Confirm phone, address, and card outputs are clearly fake/test-friendly rather than live personal data. - Copy and download identity JSON / CSV and confirm the exported data matches the visible table. - Test mobile width and confirm long generated passwords do not break layout. - Confirm no public `/passgen/` route or link remains in the visible app shell, homepage, docs, or service worker list. - Confirm no public `/clean/` route or link remains in the visible app shell, homepage, docs, or service worker list. ## Service worker cache refresh - Load the site from `http://127.0.0.1:4179/` or another local server, not `file://`. - Open DevTools Application > Service Workers and confirm the current worker is active. - After file changes, refresh once, then do a hard reload if cached assets appear stale. - Confirm the active cache name matches the current build, such as `ozcrypt-apps-v3.9-chat-diagnostics1`. - Confirm removed legacy paths are not present in cached requests. ## OzSFKit manual tests - Open `sfkit/index.html`. - Switch EN/ZH and confirm categories/tools update. - Salesforce ID Tool: convert a 15-character ID to 18 characters. - SOQL Assistant: paste a simple SOQL query and format it, then use Builder mode and Examples/Notes tabs to generate and review queries locally. - Apex Log Viewer: paste a debug log with USER_DEBUG, SOQL, DML, LIMIT_USAGE, and an exception. - Flow Formula Helper: copy snippets. - Deployment Checklist Generator: generate and copy Markdown for Apex, Flow, LWC, Report, Permission, Experience Cloud, Marketing Cloud, and Data Fix. - Instance / Trust Status Helper: paste `https://www.rentalbonds.vic.gov.au/s/`, confirm hostname/domain extraction, and open official Salesforce pages in a new tab. - Confirm OzSFKit does not request Salesforce login and does not upload data. ## OzSFKit Instance / Trust Status Helper - Open `/sfkit/` and select Instance / Trust Status Helper. - Input `https://rentalbondsvic.lightning.force.com/` and confirm search term `rentalbondsvic`. - Confirm alias links are generated: current status, history, maintenances, status search. - Confirm copy buttons work for hostname, base My Domain, sandbox alias, instance/pod, current status URL, and maintenance URL when available. - Input `aus72` and confirm instance links are generated: current instance, history, maintenances. - Input `https://www.rentalbonds.vic.gov.au/s/` and confirm custom-domain guidance appears and the search term can be edited. - Confirm all official Salesforce links open in a new tab and no iframe preview is present. ## OzSFKit v0.3 manual checks - Open `/sfkit/` and switch EN/ZH. - Confirm category filters still work. - Salesforce Cron Helper: generate daily, weekly, monthly cron expressions; calculate next local preview runs; copy expression. - Apex / LWC Regex Builder: generate Salesforce ID and API Name regex snippets for Apex and LWC; test matching and non-matching values. - Record URL Builder: enter `https://rentalbondsvic.lightning.force.com` and a Salesforce ID; verify Lightning and Classic URLs. - JSON Formatter: format valid JSON, minify it, and verify invalid JSON shows an error. - Timestamp Converter: use now, convert epoch milliseconds and seconds, and copy output. - Error Message Parser: paste common Salesforce errors such as FIELD_CUSTOM_VALIDATION_EXCEPTION, UNABLE_TO_LOCK_ROW, MIXED_DML_OPERATION, CPU limit, MALFORMED_ID, INVALID_FIELD, and NullPointerException. - Error Message Parser: also test System.CalloutException, Read timed out, Record is read-only, You have uncommitted work pending, and Maximum trigger depth exceeded. - Error Message Parser: confirm each result shows error type, likely category, likely cause, next checks, evidence to collect, and suggested owner. - Error Message Parser: confirm Copy concise summary, Copy Markdown summary, and Copy support-style summary all work. - Confirm all tools work without Salesforce login or backend calls. - Confirm mobile layout does not overflow with long outputs. ## OzSFKit JSON Assistant tests - Open `/sfkit/` and choose JSON Assistant. - Paste valid JSON and run Format / Beautify. - Run Minify / Compact and confirm whitespace is removed. - Run Sort keys and confirm nested object keys are ordered alphabetically. - Run Flatten JSON and confirm nested paths become flat key/value entries. - Run Unflatten JSON on flat dotted keys and confirm nested structure is restored. - Paste JSONC-style content with `//` comments and trailing commas, keep Fix JSON enabled, and confirm it parses. - Disable Fix JSON and confirm invalid JSONC shows a useful error. - Convert an array of objects from JSON to CSV. - Paste CSV and convert it to JSON. - Convert nested JSON to YAML. - Generate JSON paths and confirm nested keys are shown. - Paste two similar JSON documents and run JSON Diff; confirm changed, added, and removed paths are shown without uploading anything. - Use JSON path finder text such as `Owner` or `records[0]` and confirm the result list filters accordingly. - Run Escape JSON string and Unescape JSON string on short text samples. - Upload a `.json` file and confirm it loads locally. - Download output and confirm the file is generated. - Use the sample selector to load Salesforce REST response, array of records, and nested payload samples. - Switch EN/ZH and confirm JSON Assistant labels update. - Test mobile width to confirm long JSON does not expand the page. ## OzSFKit v0.5 manual tests - Open `/sfkit/` and confirm the category filters still work. - Confirm EN/ZH switching updates the new tool names and labels. - Salesforce Naming Helper: generate names from `Bond Receipt Status` and validate `Status__c`. - CSV Field Mapper: paste `Name,Email,Status` and generate Markdown, Apex, and LWC JavaScript outputs. - Text / Metadata Diff: compare two short XML/profile snippets and confirm added/removed lines appear. - Release Workbench: select Flow/Apex/LWC/Report and generate concise Markdown, detailed Markdown, and checklist-only output. - Apex / LWC Snippet Studio: switch between Apex and LWC groups, load several snippet types, and copy both code and Markdown explanation. - Support Notes Helper: generate a case note and copy Markdown. - Confirm long output wraps without expanding the page width. - Confirm no new tool requires Salesforce login, OAuth, backend, or network upload. ## OzSFKit v0.6 command studio tests - Open `/sfkit/`. - Open **SF CLI & Git Command Studio**. - Generate a Flow retrieve command: - input Flow API name such as `My_Flow` - verify output uses `sf project retrieve start --metadata Flow:My_Flow` - Generate LWC and Apex retrieve commands. - Generate deploy and validate-only commands with target org and tests. - Switch shell mode between Bash/Zsh, PowerShell, and CMD and verify line continuation changes. - Use Copy multi-line and Copy one line and confirm both clipboard formats are sensible. - Generate Git commit command with message and file list. - Enable skip local hooks and confirm `--no-verify` appears with a warning. - Generate cherry-pick, cherry-pick continue, cherry-pick abort, revert, push, and force-with-lease commands. - Confirm the tool only generates text and never executes commands. - Switch EN/ZH and confirm labels remain readable. - Test mobile layout. ## OzSFKit high-value tool spot checks - SOQL Assistant: - In Formatter mode, paste SOQL, format it, copy formatted output, copy one-line output, and confirm empty input shows a friendly warning. - In Builder mode, build queries for Account, Contact, Case, Task, and PermissionSetAssignment. - Confirm empty fields default to `Id, Name`. - Use Include common fields and confirm `Id`, `Name`, `CreatedDate`, and `LastModifiedDate` are added without duplication. - Use Examples for Account, Contact, Case, Recent Accounts, User, ContentDocumentLink, Task by WhatId, Task by WhoId, and Permission Set Assignment by AssigneeId. - Copy builder/example output as plain SOQL, one-line SOQL, Apex string, and JS string. - Confirm lightweight hints appear for `SELECT *`, missing `LIMIT`, no `WHERE`, and very large field lists. - Switch EN/ZH and confirm tabs, notes, warnings, and buttons stay translated. - Test mobile layout. - Release Workbench: - Select multiple change types such as Apex + Flow + Permission Set. - Confirm implementation, validation, rollback, CAB, risk, smoke, and communication sections appear. - Load the sample plan and copy all output. - Deployment Checklist: - Generate checklist output for Data fix, Certificate / Domain, and Integration / MuleSoft. - Confirm concise, detailed, and checklist-only modes all work. - Snippet Studio: - Test Apex snippets such as Queueable, Batch, JSON, and Platform Event. - Test LWC snippets such as imperative Apex, custom event, debounce, and refreshApex. - Error Parser: - Confirm matched categories and ownership labels look reasonable for validation, automation, data, query/schema, permission, and integration cases. - Confirm support-style summary text is suitable for a case handoff. ## OzSFKit v0.7 UX tests - Open `/sfkit/` and confirm the full tool list is hidden by default. - Confirm the Suggested tools section appears before browsing the full list. - Confirm the Popular workflows section includes debugging, deployment prep, Flow analysis, Trust checks, API data, command building, snippet generation, SOQL building, and metadata review. - Confirm each workflow opens the first recommended tool and secondary chips open the related tools. - Search for `json`, `git`, `trust`, `cron`, and `flow`; confirm matching tools appear. - Search for `deployment`, `debug`, `sandbox`, `payload`, `record id`, and `branch`; confirm useful tools still appear. - Click **All tools** and confirm the full list appears. - Click **Categories** and confirm category filters are shown/hidden. - Select a tool and click **Share tool link**; confirm a URL with `#tool-id` is copied. - Reload `/sfkit/#json-formatter` and confirm JSON Assistant opens directly. - Select a tool and click **Maximize**; confirm the workspace expands and can exit maximize. - In JSON Assistant, switch editor layout between stacked and side-by-side. - Confirm long JSON no longer feels cramped in stacked layout. - Test mobile width layout for search, categories, tool cards, and maximized view. ## OzSFKit v0.7.1 regression tests - Open `/sfkit/` and confirm no raw i18n keys such as `sfkit.findToolTitle` are visible. - Search for `json`, open JSON Assistant, and confirm the page remains responsive. - Open several tools in sequence and confirm no browser "Page Unresponsive" dialog appears. - Switch language and confirm the selected tool remains usable. ## OzSFKit v0.7.2 regression tests - Open `/sfkit/`, search `cron`, open Salesforce Cron Helper, maximize it. - Confirm the toolbar does not cover the tool title. - Confirm the maximized workspace has a solid background and internal scrolling. - Open JSON Assistant, Command Studio, Apex Log Viewer, and Cron Helper in sequence. - Confirm a loading state appears quickly and no Page Unresponsive dialog appears. ## OzSFKit v0.8 Apex Log and Flow Metadata tests ### Apex Log Analyzer - Open `/sfkit/#apex-log`. - Load sample log and analyze. - Confirm summary cards show line count, errors, SOQL, DML, USER_DEBUG, and limits. - Confirm the summary also shows likely root cause, first fatal error, and extracted class / line, Trigger, Flow, or record Id context when present. - Confirm Exceptions, SOQL, DML, USER_DEBUG, and Governor Limits tabs show extracted data. - Confirm filtered lines work for Error, SOQL, DML, USER_DEBUG, and LIMITS. - Confirm filtered lines also work for Flow and Trigger lines. - Confirm filtered lines also work for Exceptions, Stack traces, and Methods / CODE_UNIT lines. - Confirm Copy summary and Copy support-style summary produce readable incident text. - Confirm Copy SOQL queries, Copy USER_DEBUG messages, and Copy first fatal error work. - Confirm very large filtered views show a truncation note instead of trying to render everything. - Export JSON and CSV. ### Flow Metadata Analyzer - Open `/sfkit/#flow-metadata`. - Load sample Flow XML and analyze. - Confirm element table, resource table, findings, and Mermaid graph code appear. - Copy/download Mermaid. - Copy Markdown summary and dependency list. - Upload or paste a real `.flow-meta.xml` file if available. - Confirm referenced objects, actions, subflows, and field-reference hints appear when present. - Confirm findings can include missing fault connectors, subflows, Apex actions, input/output variables, and DML-heavy warnings. - Confirm invalid XML shows a friendly parse error. ## OzSFKit v0.8.1 UX and Cron tests - Open several tools and confirm each tool shows a short intro at the top. - Confirm each tool shows a "How to use this tool" section below the tool. - Switch EN/ZH and confirm the intro/usage guidance is translated. - Open Salesforce Cron Helper and switch daily/weekly/monthly/custom several times. - Confirm Cron Helper no longer causes a browser Page Unresponsive warning. - Confirm generated cron expressions and next run previews still appear. ## OzSFKit v0.8.2 performance and spacing tests - Type quickly in the SFKit search box and confirm the UI remains responsive. - Open JSON Assistant, Apex Log Analyzer, Flow Metadata Analyzer, Command Studio, and Cron Helper in sequence. - Confirm each tool shows a loading state quickly where appropriate. - Switch language while a tool is open and confirm the app remains responsive. - Review spacing between headings, paragraphs, labels, help text, buttons, and output panels in EN/ZH. ## Enhanced Salesforce ID Tool - Open `/sfkit/#id-tool`. - Paste multiple 15-char and 18-char IDs in free text and confirm unique IDs are extracted. - Confirm 15-char IDs are converted to 18-char IDs. - Confirm invalid 18-char checksum values are flagged. - Enter an org base URL and confirm Lightning URLs are generated in the table. - Use Copy all 18-char IDs, Copy all 15-char IDs, Copy CSV, Copy Markdown, and Copy Lightning URLs. - Load the sample and confirm the summary cards update. - Clear the tool and confirm textarea, base URL, summary, and table reset. ## Format docs - Open `/docs/format.html`. - Confirm EN/ZH switching updates the page text. - Confirm the page explains `OZC1`, `OZM1`, `OZP1`, encrypted text blocks, and `.ozcfg`. - Confirm the warning about secrets not being stored in metadata is visible and readable across themes. - Test mobile width for the same tools. ## OzSFKit v0.9 tests - Open tools and confirm Recently Used quick access appears. - Add/remove a Favorite and confirm it persists after refresh. - Open Apex Log Analyzer, load sample, and check Timeline / Top Events / Copy Summary. - Open Flow Metadata Analyzer, load sample, and check Object / action references table. - Open Command Studio and generate source tracking preview, deploy report, and package version commands. - Switch EN/ZH and confirm new labels are translated. ## OzSFKit v0.9.1 Trust Helper tests - Input `https://rentalbondsvic--uat.sandbox.my.salesforce.com/`. - Confirm sandbox alias is `rentalbondsvic--uat`. - Confirm base My Domain is `rentalbondsvic`. - Confirm sandbox name is `uat`. - Input `https://rentalbondsvic.lightning.force.com/`. - Confirm alias is `rentalbondsvic`. - Input `aus72`. - Confirm instance links use `/instances/aus72`. - Input `https://www.rentalbonds.vic.gov.au/s/`. - Confirm custom domain guidance appears and search term is editable. ## OzSFKit v0.9.2 Trust Helper guide tests - Open `/sfkit/#trust-status`. - Scroll to the bottom of Instance / Trust Status Helper. - Confirm the Sandbox / Trailhead Playground warning appears in EN and ZH. - Confirm the manual instance lookup tutorial appears. - Confirm instructions mention Setup 鈫?Company Information 鈫?Instance. - Confirm mobile layout remains readable. ## OzSFKit v0.9.3 tests - Press `/` on `/sfkit/` and confirm search box receives focus. - Press `Esc` while a tool is maximized and confirm maximize closes. - Search for `PMD`, `cherry pick`, `AUS72`, `Flow XML`, and `debug log`; confirm expected tools appear. - Confirm matching tool count updates. - Add favorites/recent tools, then click Clear quick access. - Open Salesforce ID Tool, paste multiple IDs and text containing IDs. - Confirm 15-character IDs convert to 18-character IDs. - Confirm invalid 18-character checksum is marked as mismatch. - Copy ID output as newline list and CSV. ## OzSFKit v0.9.4 card alignment tests - Open `/sfkit/`, click All tools, and visually check that all tool names start from the same left alignment. - Confirm Available badges stay in the top-right and do not push titles. - Switch EN/ZH and confirm tool cards remain aligned. - Search for different tools and confirm filtered cards keep the same layout. - Open several tools and confirm form spacing and output panel spacing feel consistent. - Test desktop, tablet, and mobile widths.