Test Coverage Matrix
Canonical mapping of every product feature to its test source(s). Drives gap-fill PRs (#967, #968, #969, #970, #971) under epic #773.
Status legend
| Symbol |
Meaning |
| ✅ |
Covered — at least one test asserts the behaviour |
| 🟡 |
Partial — touched by a broader spec, no dedicated assertion |
| ❌ |
Missing — no test today |
| 🚫 |
Not driver-automatable — manual smoke (release-cut checklist, see #971) |
Layer abbreviations
| Code |
Layer |
RU |
Rust unit (#[cfg(test)] inside src/) |
RI |
Rust integration (tests/*.rs) |
VU |
Vitest unit (app/src/**/*.test.ts(x)) |
WD |
WDIO E2E (app/test/e2e/specs/*.spec.ts) — Linux tauri-driver + macOS Appium Mac2 |
MS |
Manual smoke (release-cut checklist) |
Update contract — when a PR adds, removes, or changes a feature leaf, the matrix row must be updated in the same PR. Tracking guard: see #965.
0. Application Lifecycle
0.1 Application Download
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 0.1.1 |
Direct Download Access |
MS |
release-manual-smoke (see #971) |
🚫 |
DMG hosting + version landing page |
| 0.1.2 |
Version Compatibility Check |
MS |
release-manual-smoke |
🚫 |
Driver cannot assert OS-version gates |
| 0.1.3 |
Corrupted Installer Handling |
MS |
release-manual-smoke |
🚫 |
Mutated DMG validation; manual repro |
0.2 Installation & Launch
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 0.2.1 |
DMG Installation Flow |
MS |
release-manual-smoke |
🚫 |
OS-level Finder drag |
| 0.2.2 |
Gatekeeper Validation |
MS |
release-manual-smoke |
🚫 |
OS-level signature check |
| 0.2.3 |
Code Signing Verification |
MS |
release-manual-smoke |
🚫 |
codesign --verify capture in checklist |
| 0.2.4 |
First Launch Permissions Prompt |
MS |
release-manual-smoke |
🚫 |
TCC prompts non-driver-automatable |
0.3 Updates & Reinstallation
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 0.3.1 |
Auto Update Check |
RU+RI+MS |
src/openhuman/update/ (Rust unit), tests/json_rpc_e2e.rs, release smoke |
🟡 |
Core check/update policy covered; desktop prompt + release upgrade still manual |
| 0.3.2 |
Forced Update Handling |
MS |
release-manual-smoke |
🚫 |
End-to-end gating verified at release |
| 0.3.3 |
Reinstall with Existing State |
MS |
release-manual-smoke |
🚫 |
Workspace persistence on reinstall |
| 0.3.4 |
Clean Uninstall |
MS |
release-manual-smoke |
🚫 |
OS removal paths |
1. Authentication & Identity
1.1 Multi-Provider Authentication
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 1.1.1 |
Google Login |
WD |
app/test/e2e/specs/login-flow.spec.ts |
✅ |
Deep-link branch covered |
| 1.1.2 |
GitHub Login |
WD |
login-flow.spec.ts |
✅ |
Deep-link branch covered |
| 1.1.3 |
Twitter (X) Login |
WD |
login-flow.spec.ts |
🟡 |
Generic OAuth path; assert provider tag in #968 |
| 1.1.4 |
Discord Login |
WD |
login-flow.spec.ts |
🟡 |
Same — discord branch unasserted |
1.2 Account Management
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 1.2.1 |
Account Creation & Mapping |
WD+RI |
login-flow.spec.ts, tests/json_rpc_e2e.rs |
✅ |
|
| 1.2.2 |
Multi-Provider Linking |
WD |
missing — tracked #968 |
❌ |
Need spec linking 4 providers to one account |
| 1.2.3 |
Duplicate Account Handling |
WD |
missing — tracked #968 |
❌ |
Collision UX path |
1.3 Session Management
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 1.3.1 |
Token Issuance |
WD+RI |
login-flow.spec.ts, json_rpc_e2e.rs |
✅ |
|
| 1.3.2 |
Session Persistence |
WD |
logout-relogin-onboarding.spec.ts |
✅ |
|
| 1.3.3 |
Refresh Token Rotation |
VU |
missing — tracked #968 |
❌ |
Slice-level refresh logic |
1.4 Logout & Revocation
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 1.4.1 |
Session Logout |
WD |
logout-relogin-onboarding.spec.ts |
✅ |
|
| 1.4.2 |
Global Logout |
WD |
missing — tracked #968 |
❌ |
Multi-session invalidation |
| 1.4.3 |
Token Invalidation |
WD |
missing — tracked #968 |
❌ |
Server-side revocation propagation |
2. Permissions & System Access
2.1 macOS Permissions
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 2.1.1 |
Accessibility Permission |
MS |
release-manual-smoke |
🚫 |
TCC OS-level prompt |
| 2.1.2 |
Input Monitoring Permission |
MS |
release-manual-smoke |
🚫 |
TCC OS-level prompt |
| 2.1.3 |
Screen Recording Permission |
MS |
release-manual-smoke |
🚫 |
TCC OS-level prompt |
| 2.1.4 |
Microphone Permission |
MS |
release-manual-smoke |
🚫 |
TCC OS-level prompt |
2.2 Permission Lifecycle
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 2.2.1 |
Permission Grant Flow |
RU |
src/openhuman/accessibility/ |
🟡 |
Core branch covered; UX manual |
| 2.2.2 |
Permission Denial Handling |
RU |
src/openhuman/accessibility/ |
🟡 |
Same |
| 2.2.3 |
Permission Re-Sync / Refresh |
WD |
missing — tracked #968 |
❌ |
App-restart re-sync |
| 2.2.4 |
Partial Permission State Handling |
WD |
missing — tracked #968 |
❌ |
macOS-only spec |
3. Local AI Runtime (Ollama)
3.1 Model Management
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 3.1.1 |
Model Detection |
RU+WD |
src/openhuman/local_ai/, local-model-runtime.spec.ts |
✅ |
|
| 3.1.2 |
Model Download & Installation |
WD |
local-model-runtime.spec.ts |
✅ |
|
| 3.1.3 |
Model Version Handling |
RU |
src/openhuman/local_ai/model_ids.rs |
✅ |
|
3.2 Runtime Execution
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 3.2.1 |
Local Inference Execution |
WD |
local-model-runtime.spec.ts |
✅ |
|
| 3.2.2 |
Resource Handling (CPU/GPU/Memory) |
RU |
src/openhuman/local_ai/device.rs |
🟡 |
Detection unit; runtime constraint manual |
| 3.2.3 |
Runtime Failure Handling |
RU+WD |
local-model-runtime.spec.ts |
✅ |
|
3.3 Runtime Configuration
3.3.1 RAM Allocation Control
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 3.3.1.1 |
RAM Limit Selection |
VU |
app/src/components/settings/ (panel-level) |
🟡 |
UI present; assertion shallow |
| 3.3.1.2 |
RAM Availability Detection |
RU |
src/openhuman/local_ai/device.rs |
✅ |
|
| 3.3.1.3 |
Over-Allocation Prevention |
RU |
src/openhuman/local_ai/ops.rs |
🟡 |
Guard exists; explicit test pending |
| 3.3.1.4 |
Under-Allocation Handling |
RU |
src/openhuman/local_ai/ops.rs |
🟡 |
Same |
3.3.2 Dynamic Resource Adjustment
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 3.3.2.1 |
Runtime Scaling Based on Load |
RU |
missing |
❌ |
Track in follow-up |
| 3.3.2.2 |
Model Switching Based on Memory |
RU |
missing |
❌ |
Track in follow-up |
3.3.3 Configuration Persistence
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 3.3.3.1 |
Save RAM Settings |
VU |
missing |
❌ |
Settings slice |
| 3.3.3.2 |
Apply on Restart |
WD |
local-model-runtime.spec.ts |
🟡 |
Restart not exercised |
| 3.3.3.3 |
Reset to Default |
VU |
missing |
❌ |
|
4. Chat Interface (Core Interaction)
4.1 Chat Sessions
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 4.1.1 |
Session Creation |
WD |
conversations-web-channel-flow.spec.ts |
✅ |
|
| 4.1.2 |
Session Persistence |
WD |
conversations-web-channel-flow.spec.ts |
✅ |
|
| 4.1.3 |
Multi-Session Handling |
WD |
agent-review.spec.ts, conversations-web-channel-flow.spec.ts |
🟡 |
No dedicated multi-thread switch test |
4.2 Messaging
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 4.2.1 |
User Message Handling |
WD+RI |
conversations-web-channel-flow.spec.ts, tests/json_rpc_e2e.rs |
✅ |
|
| 4.2.2 |
AI Response Generation |
WD |
agent-review.spec.ts |
✅ |
Mock LLM |
| 4.2.3 |
Streaming Responses |
RI |
tests/json_rpc_e2e.rs |
🟡 |
UI streaming assertion thin |
4.3 Tool Invocation
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 4.3.1 |
Tool Trigger via Chat |
WD |
skill-execution-flow.spec.ts, skill-multi-round.spec.ts |
✅ |
|
| 4.3.2 |
Permission-Based Execution |
RU+WD |
src/openhuman/tools/, skill-execution-flow.spec.ts |
✅ |
|
| 4.3.3 |
Tool Failure Handling |
WD |
skill-execution-flow.spec.ts |
✅ |
|
5. Built-in Intelligence Skills
5.1 Screen Intelligence
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 5.1.1 |
Screen Capture |
WD+RI |
screen-intelligence.spec.ts, tests/screen_intelligence_vision_e2e.rs |
✅ |
|
| 5.1.2 |
Context Extraction |
RI |
tests/screen_intelligence_vision_e2e.rs |
✅ |
|
| 5.1.3 |
Memory Injection |
RI |
tests/memory_graph_sync_e2e.rs |
✅ |
|
5.2 Text Autocomplete
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 5.2.1 |
Inline Suggestion Generation |
MS+WD |
app/test/e2e/specs/autocomplete-flow.spec.ts (settings surface only); release-manual-smoke for real inline-gen |
🟡 |
Settings panel mounts (this PR); inline-gen requires macOS TCC grants — manual only |
| 5.2.2 |
Debounce Handling |
VU |
app/src/features/autocomplete/__tests__/useAutocompleteSkillStatus.test.tsx (this PR — status surface); core debounce timing is Rust-side |
✅ |
Was ❌ — status branches now covered |
| 5.2.3 |
Acceptance Trigger |
MS |
release-manual-smoke (#971) |
🟡 |
Real keypress acceptance into a third-party text field — not driver-automatable |
5.3 Voice Intelligence
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 5.3.1 |
Voice Input Capture |
WD |
voice-mode.spec.ts |
✅ |
|
| 5.3.2 |
Speech-to-Text Processing |
WD |
voice-mode.spec.ts |
✅ |
|
| 5.3.3 |
Voice Command Execution |
WD |
voice-mode.spec.ts |
✅ |
|
6. System Tools & Agent Capabilities
6.1 File System
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 6.1.1 |
File Read Access |
RU+WD |
src/openhuman/tools/impl/filesystem/file_read.rs, app/test/e2e/specs/tool-filesystem-flow.spec.ts (this PR) |
✅ |
Was 🟡 — WDIO drives memory_read_file + asserts via Node fs |
| 6.1.2 |
File Write Access |
RU+WD |
src/openhuman/tools/impl/filesystem/file_write.rs, app/test/e2e/specs/tool-filesystem-flow.spec.ts (this PR) |
✅ |
Was 🟡 — WDIO drives memory_write_file + asserts bytes match on disk |
| 6.1.3 |
Path Restriction Enforcement |
RU+WD |
src/openhuman/tools/impl/filesystem/file_read.rs, app/test/e2e/specs/tool-filesystem-flow.spec.ts (this PR) |
✅ |
Was 🟡 — WDIO asserts traversal + absolute-path denial envelope |
6.2 Shell & Git
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 6.2.1 |
Shell Command Execution |
RU+WD |
src/openhuman/tools/impl/system/shell.rs, app/test/e2e/specs/tool-shell-git-flow.spec.ts (this PR) |
✅ |
Was 🟡 — WDIO asserts agent runtime + tools_agent registry contract; full LLM path tracked #68 |
| 6.2.2 |
Command Restriction Handling |
RU+WD |
src/openhuman/security/policy_tests.rs, app/test/e2e/specs/tool-shell-git-flow.spec.ts (this PR) |
✅ |
Was 🟡 — WDIO locks denial envelope shape { ok:false, error } consumed by the React UI |
| 6.2.3 |
Git Read Operations |
RU+WD |
src/openhuman/tools/impl/filesystem/git_operations_tests.rs, app/test/e2e/specs/tool-shell-git-flow.spec.ts (this PR) |
✅ |
Was 🟡 — WDIO seeds a fixture repo in OPENHUMAN_WORKSPACE and asserts read ops succeed |
| 6.2.4 |
Git Write Operations |
RU+WD |
src/openhuman/tools/impl/filesystem/git_operations_tests.rs, app/test/e2e/specs/tool-shell-git-flow.spec.ts (this PR) |
✅ |
Was 🟡 — WDIO commits into the same fixture and asserts log advances |
7. Web & Network Capabilities
7.1 Browser
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 7.1.1 |
Open URL |
RU+WD |
src/openhuman/tools/impl/browser/browser_open_tests.rs, app/test/e2e/specs/tool-browser-flow.spec.ts (this PR) |
✅ |
Was ❌ — WDIO asserts agent runtime + browser-bearing registry; mock backend captures HTTP shape |
| 7.1.2 |
Browser Automation |
RU+WD |
src/openhuman/tools/impl/browser/browser_tests.rs, app/test/e2e/specs/tool-browser-flow.spec.ts (this PR) |
✅ |
Was ❌ — WDIO locks tools_agent wildcard scope (exposes the 22-action automation schema to the LLM) |
7.2 Network
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 7.2.1 |
HTTP / API Requests |
RU+WD |
service-connectivity-flow.spec.ts |
✅ |
|
| 7.2.2 |
Web Search Execution |
WD |
skill-execution-flow.spec.ts |
🟡 |
Generic skill path |
8. Memory System (Persistent AI Memory)
8.1 Memory Operations
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 8.1.1 |
Store Memory |
RI+WD |
tests/memory_roundtrip_e2e.rs (this PR), app/test/e2e/specs/memory-roundtrip.spec.ts (this PR) |
✅ |
Was ❌ |
| 8.1.2 |
Recall Memory |
RI+WD |
same |
✅ |
Was ❌ |
| 8.1.3 |
Forget Memory |
RI+WD |
same |
✅ |
Was ❌ |
8.2 Memory Handling
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 8.2.1 |
Context Injection |
RI |
tests/autocomplete_memory_e2e.rs |
✅ |
|
| 8.2.2 |
Memory Consistency |
RI |
tests/memory_graph_sync_e2e.rs |
✅ |
|
| 8.2.3 |
Memory Scaling |
RU |
src/openhuman/memory/ingestion_tests.rs |
🟡 |
Soak/scale benchmark not asserted |
9. Automation Engine
9.1 Task Scheduling
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 9.1.1 |
Task Creation |
WD |
cron-jobs-flow.spec.ts |
✅ |
|
| 9.1.2 |
Task Update |
WD |
cron-jobs-flow.spec.ts |
✅ |
|
| 9.1.3 |
Task Deletion |
WD |
cron-jobs-flow.spec.ts |
✅ |
|
9.2 Cron Jobs
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 9.2.1 |
Cron Expression Validation |
RU |
src/openhuman/cron/ |
✅ |
|
| 9.2.2 |
Recurring Execution |
WD+RI |
cron-jobs-flow.spec.ts |
✅ |
|
9.3 Remote Execution
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 9.3.1 |
Remote Agent Scheduling |
RI |
tests/json_rpc_e2e.rs |
🟡 |
Coverage thin |
| 9.3.2 |
Execution Trigger |
WD |
cron-jobs-flow.spec.ts |
✅ |
|
| 9.3.3 |
Retry Handling |
RU |
src/openhuman/cron/ |
🟡 |
Backoff branches partial |
10. Unified Messaging Hub
10.1 Integration Setup
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 10.1.1 |
Telegram Connection |
WD |
telegram-flow.spec.ts |
✅ |
|
| 10.1.2 |
WhatsApp Connection |
WD |
app/test/e2e/specs/whatsapp-flow.spec.ts (this PR) |
✅ |
Was ❌ |
| 10.1.3 |
Gmail Connection |
WD |
gmail-flow.spec.ts |
✅ |
|
| 10.1.4 |
Slack Connection |
WD |
app/test/e2e/specs/slack-flow.spec.ts (this PR) |
✅ |
Was ❌ |
10.2 Authentication & Authorization
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 10.2.1 |
OAuth / API Token Handling |
WD |
skill-oauth.spec.ts |
✅ |
|
| 10.2.2 |
Scope Selection (Read/Write/Initiate) |
WD |
gmail-flow.spec.ts, skill-oauth.spec.ts |
🟡 |
Multi-scope matrix not exhaustive |
| 10.2.3 |
Token Storage & Encryption |
RU |
src/openhuman/encryption/, src/openhuman/credentials/ |
✅ |
|
10.3 Message Sync & Ingestion
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 10.3.1 |
Incoming Message Sync |
RU+WD |
src/openhuman/channels/tests/, gmail-flow.spec.ts |
✅ |
|
| 10.3.2 |
Message Deduplication |
RU |
src/openhuman/channels/tests/ |
✅ |
|
| 10.3.3 |
WhatsApp Agent Retrieval |
RU |
src/openhuman/tools/impl/whatsapp_data/ (this PR), tests/json_rpc_e2e.rs::whatsapp_data_agent_tools_e2e_1341 (this PR) |
✅ |
Three read-only agent tools wrap the local SQLite store; ingest stays internal-only. See docs/whatsapp-data-flow.md. |
| 10.3.4 |
Real-Time vs Delayed Sync |
RU |
src/openhuman/channels/tests/runtime_dispatch.rs |
✅ |
|
10.4 Messaging Operations
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 10.4.1 |
Send Message |
WD+RI |
gmail-flow.spec.ts, telegram-flow.spec.ts |
✅ |
|
| 10.4.2 |
Reply to Thread |
WD |
gmail-flow.spec.ts |
✅ |
|
| 10.4.3 |
Initiate Conversation |
WD |
gmail-flow.spec.ts |
🟡 |
Telegram/WhatsApp/Slack not exercised |
| 10.4.4 |
Attachment Handling |
WD |
gmail-flow.spec.ts |
🟡 |
Attachment branch shallow |
10.5 Cross-Channel Behavior
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 10.5.1 |
Channel Isolation |
RU |
src/openhuman/channels/tests/identity.rs |
✅ |
|
| 10.5.2 |
Unified Inbox Handling |
WD |
channels-smoke.spec.ts |
🟡 |
UI assertion shallow |
| 10.5.3 |
Context Preservation |
RU |
src/openhuman/channels/tests/context.rs |
✅ |
|
10.6 Permission Enforcement
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 10.6.1 |
Read Access Enforcement |
RU+WD |
auth-access-control.spec.ts |
✅ |
|
| 10.6.2 |
Write Access Enforcement |
RU+WD |
auth-access-control.spec.ts |
✅ |
|
| 10.6.3 |
Initiate Action Enforcement |
RU |
src/openhuman/channels/ |
🟡 |
E2E thin |
10.7 Disconnect & Re-Setup
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 10.7.1 |
Integration Disconnect |
WD |
gmail-flow.spec.ts, notion-flow.spec.ts |
✅ |
|
| 10.7.2 |
Token Revocation |
RU |
src/openhuman/credentials/ |
✅ |
|
| 10.7.3 |
Re-Authorization Flow |
WD |
skill-oauth.spec.ts |
🟡 |
Re-auth post-revoke not asserted |
| 10.7.4 |
Permission Re-Sync |
WD |
missing — tracked #968 |
❌ |
|
11. Intelligence & Insights
11.1 Analysis Engine
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 11.1.1 |
Multi-Source Analysis |
RI |
tests/memory_graph_sync_e2e.rs |
🟡 |
Frontend trigger untested |
| 11.1.2 |
Actionable Item Extraction |
VU |
app/src/components/intelligence/__tests__/utils.test.ts (this PR) |
✅ |
Was ❌ |
| 11.1.3 |
Analyze Trigger |
WD |
app/test/e2e/specs/insights-dashboard.spec.ts mounts the route (this PR); explicit analyze-handler invocation TBD |
🟡 |
Route mounts and search/filter UI assert — full analyze trigger flow tracked as follow-up |
11.2 Insights Dashboard
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 11.2.1 |
Memory View |
WD |
insights-dashboard.spec.ts (this PR) |
✅ |
Was ❌ |
| 11.2.2 |
Source Filtering |
WD |
insights-dashboard.spec.ts (this PR) |
✅ |
Was ❌ |
| 11.2.3 |
Search & Retrieval |
WD |
insights-dashboard.spec.ts (this PR) |
✅ |
Was ❌ |
12. Rewards & Progression
Frontend-only domain — no Rust core counterpart. Confirmed during #970
investigation: there is no src/openhuman/rewards/ module and no Redux
rewardsSlice; snapshot is fetched per-mount via
app/src/services/api/rewardsApi.ts and held in Rewards.tsx component
state. Backend ownership lives in tinyhumansai/backend (/rewards/me).
12.1 Role Unlocking
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 12.1.1 |
Activity-Based Unlock |
VU+WD |
app/src/store/__tests__/rewardsSlice.test.ts (this PR), app/test/e2e/specs/rewards-unlock-flow.spec.ts (this PR) |
✅ |
Was ❌ — streak/feature-driven unlock branch |
| 12.1.2 |
Integration-Based Unlock |
VU+WD |
same |
✅ |
Was ❌ — Discord membership → role assignment branch |
| 12.1.3 |
Plan-Based Unlock |
VU+WD |
same |
✅ |
Was ❌ — plan tier + active subscription branch |
12.2 Progress Tracking
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 12.2.1 |
Message Count Tracking |
VU+WD |
rewardsSlice.test.ts (this PR), rewards-progression-persistence.spec.ts (this PR) |
✅ |
Was ❌ — message-driven progress proxied by metrics.featuresUsedCount (no literal field) |
| 12.2.2 |
Usage Metrics |
VU+WD |
same |
✅ |
Was ❌ — current streak + cumulative tokens |
| 12.2.3 |
State Persistence |
VU+WD |
same |
✅ |
Was ❌ — restart-equivalent (page unmount + remount + re-fetch); admin request log asserts re-fetch |
13. Settings & Developer Tools
13.1 Account & Security
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 13.1.1 |
Profile Management |
VU |
app/src/components/settings/panels/__tests__/PrivacyPanel.test.tsx |
🟡 |
|
| 13.1.2 |
Linked Accounts |
WD |
auth-access-control.spec.ts |
🟡 |
UI surface unasserted |
13.2 Automation & Channels
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 13.2.1 |
Channel Configuration |
WD |
app/test/e2e/specs/settings-channels-permissions.spec.ts |
✅ |
|
| 13.2.2 |
Permission Settings |
WD |
app/test/e2e/specs/settings-channels-permissions.spec.ts |
✅ |
|
13.3 AI & Skills
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 13.3.1 |
Model Configuration |
VU+WD |
app/src/components/settings/panels/__tests__/AutocompletePanel.test.tsx, app/test/e2e/specs/settings-ai-skills.spec.ts |
✅ |
AI-model-switch covered |
| 13.3.2 |
Skill Toggle |
WD |
skill-lifecycle.spec.ts, app/test/e2e/specs/settings-ai-skills.spec.ts |
✅ |
|
13.4 Developer Options
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 13.4.1 |
Webhook Inspection |
WD |
app/test/e2e/specs/settings-dev-options.spec.ts |
✅ |
|
| 13.4.2 |
Runtime Logs |
WD |
app/test/e2e/specs/settings-dev-options.spec.ts |
✅ |
|
| 13.4.3 |
Memory Debug |
WD |
app/test/e2e/specs/settings-dev-options.spec.ts |
✅ |
|
13.5 Data Management
| ID |
Feature |
Layer |
Test path(s) |
Status |
Notes |
| 13.5.1 |
Clear App Data |
WD |
app/test/e2e/specs/settings-data-management.spec.ts |
✅ |
Destructive — confirm-then-reset |
| 13.5.2 |
Cache Reset |
WD |
app/test/e2e/specs/settings-data-management.spec.ts |
✅ |
|
| 13.5.3 |
Full State Reset |
WD |
app/test/e2e/specs/settings-data-management.spec.ts |
✅ |
Restart-and-verify fresh-install state |
Summary
| Status |
Count |
| ✅ Covered |
64 |
| 🟡 Partial |
27 |
| ❌ Missing |
27 |
| 🚫 Manual smoke |
11 |
| Total leaves |
129 explicit + nested = 200 product features |
PR-A delta: 13 leaves moved from ❌ → ✅ via 5 WDIO specs + 2 Vitest + 1 Rust integration test.
Remaining gaps tracked under sub-issues #965 (process), #966 (docs), #967 (tools), #968 (auth/perm), #969 (settings), #970 (rewards), #971 (manual smoke).