mirror of
https://github.com/tinyhumansai/openhuman.git
synced 2026-07-28 13:32:23 +00:00
Co-authored-by: Steven Enamakel <31011319+senamakel@users.noreply.github.com> Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
274 lines
13 KiB
Markdown
274 lines
13 KiB
Markdown
# E2E Test Suite Status
|
|
|
|
Living tracking document for the OpenHuman E2E test suite. Updated whenever
|
|
specs are added, fixed, or start failing.
|
|
|
|
**Last updated:** 2026-05-20
|
|
**Total specs:** 66 (11 categories)
|
|
**Runner:** WDIO + Appium Chromium on the CEF desktop binary
|
|
|
|
---
|
|
|
|
## Suite health overview
|
|
|
|
| Category | Specs | Known issues |
|
|
|---------------|-------|--------------|
|
|
| auth | 6 | Hardcoded pauses replaced with condition waits (2026-05-20) |
|
|
| navigation | 6 | channels-smoke and insights-dashboard are shallow/smoke only |
|
|
| chat | 10 | chat-harness-wallet-flow has 6 sequential 30s waits |
|
|
| skills | 6 | skill-execution-flow is RC-7 (ghost RPCs); 4 specs are shallow stubs |
|
|
| notifications | 4 | memory-roundtrip has async indexing race |
|
|
| webhooks | 5 | webhooks-ingress-flow missing payload delivery assertion |
|
|
| providers | 8 | telegram-flow is describe.skip; gmail/slack/whatsapp miss multi-account |
|
|
| payments | 4 | rewards-progression-persistence has hardcoded pauses |
|
|
| settings | 7 | settings-ai-skills uses OR-chain assertions |
|
|
| system | 4+1L | local-model-runtime is describe.skip; voice-mode has hardcoded pauses |
|
|
| journeys | 3 | All moderate depth |
|
|
|
|
L = Linux-only spec
|
|
|
|
---
|
|
|
|
## How to update this document
|
|
|
|
- **Adding a spec**: add it to the coverage matrix below and to `e2e-run-all-flows.sh`
|
|
- **Fixing an issue**: strike through the entry or remove it from Known Issues
|
|
- **A spec starts failing**: add it to the Known Issues section with severity + status tag
|
|
- **Pre-flight check**: `bash app/scripts/e2e-preflight.sh`
|
|
|
|
---
|
|
|
|
## Coverage matrix
|
|
|
|
### Auth (6 specs)
|
|
|
|
| Spec | Feature covered | Coverage depth | Known issues |
|
|
|------|----------------|----------------|--------------|
|
|
| smoke.spec.ts | Harness bootstrap, app loads | deep | |
|
|
| login-flow.spec.ts | Deep-link auth → onboarding → home | deep | |
|
|
| auth-access-control.spec.ts | Billing dashboard handoff | moderate | Previously had hardcoded 5s/8s pauses — replaced 2026-05-20 |
|
|
| logout-relogin-onboarding.spec.ts | Logout + re-login round-trip | moderate | |
|
|
| onboarding-modes.spec.ts | Onboarding step sequence | moderate | config.toml write race on slow CI |
|
|
| runtime-picker-login.spec.ts | Core mode selection + login | moderate | Deep-link bootstrap race |
|
|
|
|
### Navigation (6 specs)
|
|
|
|
| Spec | Feature covered | Coverage depth | Known issues |
|
|
|------|----------------|----------------|--------------|
|
|
| navigation.spec.ts | Tab bar + route rendering | deep | |
|
|
| navigation-smoothness.spec.ts | Transition timing | moderate | |
|
|
| navigation-settings-panels.spec.ts | Settings panel routing | moderate | |
|
|
| command-palette.spec.ts | Command search | moderate | |
|
|
| channels-smoke.spec.ts | Channels surface mount | shallow | No channel feature validation |
|
|
| insights-dashboard.spec.ts | Insights panel | shallow | No data validation |
|
|
|
|
### Chat (10 specs)
|
|
|
|
| Spec | Feature covered | Coverage depth | Known issues |
|
|
|------|----------------|----------------|--------------|
|
|
| chat-harness-send-stream.spec.ts | Send → SSE stream → UI render | deep | |
|
|
| chat-harness-cancel.spec.ts | Cancel mid-stream | deep | |
|
|
| chat-harness-scroll-render.spec.ts | Scroll + render correctness | moderate | |
|
|
| chat-harness-subagent.spec.ts | Subagent invocation | moderate | |
|
|
| chat-harness-wallet-flow.spec.ts | Chat + wallet state | moderate | 6 sequential 30s waits; should use condition waits |
|
|
| chat-tool-call-flow.spec.ts | Function calling roundtrip | deep | |
|
|
| chat-multi-tool-round.spec.ts | Multi-turn tool loop | deep | |
|
|
| chat-tool-error-recovery.spec.ts | Tool error handling | deep | |
|
|
| agent-review.spec.ts | Agent review + feedback | moderate | |
|
|
| mega-flow.spec.ts | Full journey (auth/oauth/chat/logout) | deep | |
|
|
|
|
### Skills (6 specs)
|
|
|
|
| Spec | Feature covered | Coverage depth | Known issues |
|
|
|------|----------------|----------------|--------------|
|
|
| skills-registry.spec.ts | Install from URL | moderate | Post-install state not verified |
|
|
| skill-execution-flow.spec.ts | Ghost RPCs (RC-7) | skipped | **[RC-7 OPEN]** Runtime removed; spec calls non-existent RPC methods |
|
|
| skill-lifecycle.spec.ts | /skills page loads | shallow | No feature validation beyond page mount |
|
|
| skill-multi-round.spec.ts | /chat page loads | shallow | No multi-round skill behavior tested |
|
|
| skill-oauth.spec.ts | /skills page loads | shallow | No OAuth flow tested |
|
|
| skill-socket-reconnect.spec.ts | Home page loads | shallow | No socket reconnect behavior tested |
|
|
|
|
### Notifications (4 specs)
|
|
|
|
| Spec | Feature covered | Coverage depth | Known issues |
|
|
|------|----------------|----------------|--------------|
|
|
| notifications.spec.ts | Ingest + list + mark-read + UI | deep | |
|
|
| memory-roundtrip.spec.ts | Doc store + cross-namespace recall | moderate | Async indexing race on slow CI |
|
|
| cron-jobs-flow.spec.ts | Job creation UI | moderate | |
|
|
| autocomplete-flow.spec.ts | Chat autocomplete | shallow | |
|
|
|
|
### Webhooks & Tools (5 specs)
|
|
|
|
| Spec | Feature covered | Coverage depth | Known issues |
|
|
|------|----------------|----------------|--------------|
|
|
| webhooks-ingress-flow.spec.ts | RPC endpoints + debug panel | moderate | No actual payload delivery assertion |
|
|
| webhooks-tunnel-flow.spec.ts | Tunneling | moderate | |
|
|
| tool-browser-flow.spec.ts | Browser tool | moderate | |
|
|
| tool-filesystem-flow.spec.ts | Filesystem security | deep | |
|
|
| tool-shell-git-flow.spec.ts | Shell + git | moderate | |
|
|
|
|
### Providers (8 specs)
|
|
|
|
| Spec | Feature covered | Coverage depth | Known issues |
|
|
|------|----------------|----------------|--------------|
|
|
| telegram-flow.spec.ts | Telegram integration | skipped | **[SKIPPED OPEN]** describe.skip — no replacement spec |
|
|
| gmail-flow.spec.ts | Gmail OAuth | moderate | Token refresh path untested |
|
|
| accounts-provider-modal.spec.ts | Account connection modal | moderate | |
|
|
| slack-flow.spec.ts | Slack OAuth + Redux state | moderate | Multi-account scenario untested |
|
|
| whatsapp-flow.spec.ts | WhatsApp OAuth + state | moderate | Multi-account scenario untested |
|
|
| notion-flow.spec.ts | Notion OAuth | moderate | Scope upgrade path untested |
|
|
| conversations-web-channel-flow.spec.ts | Web channel messaging | moderate | Linux skip reason is stale |
|
|
| composio-triggers-flow.spec.ts | Trigger enable/disable + UI | moderate | No trigger event delivery tested |
|
|
|
|
### Payments (4 specs)
|
|
|
|
| Spec | Feature covered | Coverage depth | Known issues |
|
|
|------|----------------|----------------|--------------|
|
|
| card-payment-flow.spec.ts | Card payment + error handling | moderate | |
|
|
| crypto-payment-flow.spec.ts | Crypto payment | moderate | |
|
|
| rewards-unlock-flow.spec.ts | Rewards unlock | moderate | |
|
|
| rewards-progression-persistence.spec.ts | Rewards persistence | moderate | Hardcoded pauses; should use condition waits |
|
|
|
|
### Settings (7 specs)
|
|
|
|
| Spec | Feature covered | Coverage depth | Known issues |
|
|
|------|----------------|----------------|--------------|
|
|
| settings-channels-permissions.spec.ts | Channels + privacy settings | moderate | |
|
|
| settings-data-management.spec.ts | Data management | moderate | |
|
|
| settings-dev-options.spec.ts | Developer options | moderate | |
|
|
| settings-ai-skills.spec.ts | LLM config | shallow | OR-chain assertions (passes if any one LLM panel is present) |
|
|
| settings-account-preferences.spec.ts | Account preferences | moderate | |
|
|
| settings-advanced-config.spec.ts | Advanced config | moderate | |
|
|
| settings-feature-preferences.spec.ts | Feature toggles | moderate | |
|
|
|
|
### System (6 specs + 1 Linux-only)
|
|
|
|
| Spec | Feature covered | Coverage depth | Known issues |
|
|
|------|----------------|----------------|--------------|
|
|
| local-model-runtime.spec.ts | Ollama integration | skipped | **[SKIPPED OPEN]** describe.skip |
|
|
| voice-mode.spec.ts | Voice I/O | shallow | Hardcoded pauses |
|
|
| screen-intelligence.spec.ts | Screen awareness | shallow | |
|
|
| audio-toolkit-flow.spec.ts | Audio toolkit | shallow | |
|
|
| tauri-commands.spec.ts | Tauri IPC surface | moderate | |
|
|
| service-connectivity-flow.spec.ts | Service discovery | moderate | Requires OPENHUMAN_SERVICE_MOCK=1 |
|
|
| linux-cef-deb-runtime.spec.ts | Linux /usr/bin path | moderate | Linux only |
|
|
|
|
### User Journeys (3 specs)
|
|
|
|
| Spec | Feature covered | Coverage depth | Known issues |
|
|
|------|----------------|----------------|--------------|
|
|
| user-journey-full-task.spec.ts | Task completion end-to-end | moderate | |
|
|
| user-journey-settings-round-trip.spec.ts | Settings persistence round-trip | moderate | |
|
|
| chat-conversation-history.spec.ts | Conversation history | moderate | |
|
|
|
|
---
|
|
|
|
## Known Issues
|
|
|
|
| ID | Spec | Severity | Status | Description |
|
|
|----|------|----------|--------|-------------|
|
|
| RC-7 | skill-execution-flow.spec.ts | HIGH | **[RC-7 OPEN]** | Calls RPC methods that were removed when the QuickJS runtime was stripped. Spec will ghost-fail silently until updated or deleted. |
|
|
| SKIP-1 | telegram-flow.spec.ts | MEDIUM | **[SKIPPED OPEN]** | Entire suite is `describe.skip`. No replacement coverage. |
|
|
| SKIP-2 | local-model-runtime.spec.ts | LOW | **[SKIPPED OPEN]** | Entire suite is `describe.skip`. Ollama is optional — acceptable. |
|
|
| RACE-1 | memory-roundtrip.spec.ts | LOW | **[RACE]** | Async indexing race on slow CI machines. Intermittent. |
|
|
| RACE-2 | onboarding-modes.spec.ts | LOW | **[RACE]** | config.toml write race during core restart. Intermittent. |
|
|
| SHALLOW-1 | skill-lifecycle.spec.ts | MEDIUM | **[SHALLOW]** | Only asserts page mount, not any skill lifecycle behavior. |
|
|
| SHALLOW-2 | skill-multi-round.spec.ts | MEDIUM | **[SHALLOW]** | Only asserts /chat page loads. |
|
|
| SHALLOW-3 | skill-oauth.spec.ts | MEDIUM | **[SHALLOW]** | Only asserts /skills page loads. No OAuth. |
|
|
| SHALLOW-4 | skill-socket-reconnect.spec.ts | MEDIUM | **[SHALLOW]** | Only asserts home page loads. No socket reconnect. |
|
|
| PAUSE-1 | chat-harness-wallet-flow.spec.ts | LOW | **[PAUSE]** | Six sequential `browser.pause(30_000)` calls. Should be replaced with condition waits. |
|
|
| PAUSE-2 | rewards-progression-persistence.spec.ts | LOW | **[PAUSE]** | Hardcoded pauses. Should be replaced with condition waits. |
|
|
| PAUSE-3 | voice-mode.spec.ts | LOW | **[PAUSE]** | Hardcoded pauses in voice I/O flow. |
|
|
| STALE-1 | conversations-web-channel-flow.spec.ts | LOW | **[STALE]** | Linux skip condition uses a reason that no longer applies. |
|
|
| ASSERT-1 | settings-ai-skills.spec.ts | LOW | **[SHALLOW]** | OR-chain assertions: passes if any one LLM provider panel is present. |
|
|
|
|
---
|
|
|
|
## Mock API behavior flags
|
|
|
|
These flags are set via `setMockBehavior(key, value)` from `mock-server.ts` and
|
|
control the shared mock backend at `http://127.0.0.1:18473`.
|
|
|
|
| Flag | Type | Description |
|
|
|------|------|-------------|
|
|
| `seed` | string | Fuzzy randomization seed for mock data generation |
|
|
| `forceError503` | `'true'` / `'false'` | Force HTTP 503 on all non-admin endpoints |
|
|
| `llmStreamScript` | JSON string | Custom LLM response delta sequence. Array of `{delta: string}` objects |
|
|
| `composioConnections` | JSON string | Override Composio connections list (e.g. `'[]'` for empty) |
|
|
| `composioAvailableTriggers` | JSON string | Override available triggers returned by the API |
|
|
| `composioActiveTriggers` | JSON string | Override active triggers state |
|
|
| `purchaseError` | string | Trigger payment failure (value becomes the error message) |
|
|
| `plan` | `'FREE'` / `'BASIC'` / `'PRO'` | Override the billing plan returned by `/settings` |
|
|
| `planActive` | `'true'` / `'false'` | Override whether the plan is active |
|
|
| `planExpiry` | ISO date string | Override the plan expiry date |
|
|
| `session` | `'revoked'` / `'active'` | Force 401 on auth endpoints when set to `'revoked'` |
|
|
|
|
Reset all flags to defaults: `resetMockBehavior()`.
|
|
|
|
---
|
|
|
|
## How to run
|
|
|
|
```bash
|
|
# Full suite (all 66 specs)
|
|
bash app/scripts/e2e-run-all-flows.sh
|
|
|
|
# Single suite category
|
|
bash app/scripts/e2e-run-all-flows.sh --suite chat
|
|
|
|
# Stop after first failure
|
|
bash app/scripts/e2e-run-all-flows.sh --bail
|
|
|
|
# Single spec (fastest iteration)
|
|
bash app/scripts/e2e-run-session.sh test/e2e/specs/smoke.spec.ts smoke
|
|
|
|
# Pre-flight check only
|
|
bash app/scripts/e2e-preflight.sh
|
|
|
|
# With Appium/WDIO debug output
|
|
WDIO_LOG_LEVEL=debug bash app/scripts/e2e-run-all-flows.sh --suite auth
|
|
|
|
# Skip preflight (e.g. in CI where it ran as a separate step)
|
|
bash app/scripts/e2e-run-all-flows.sh --skip-preflight
|
|
|
|
# Use the debug runner (summary output + log tee)
|
|
pnpm debug e2e test/e2e/specs/smoke.spec.ts
|
|
pnpm debug e2e test/e2e/specs/notifications.spec.ts notifications --verbose
|
|
```
|
|
|
|
---
|
|
|
|
## How to add a new spec
|
|
|
|
1. **Create the spec file** in `app/test/e2e/specs/YOUR-SPEC.spec.ts`.
|
|
|
|
2. **Scaffold the harness:**
|
|
```typescript
|
|
import { resetApp } from '../helpers/reset-app';
|
|
import { startMockServer, stopMockServer } from '../mock-server';
|
|
|
|
describe('Your feature', () => {
|
|
before(async () => {
|
|
await startMockServer();
|
|
await resetApp('e2e-your-spec');
|
|
});
|
|
after(async () => {
|
|
await stopMockServer();
|
|
});
|
|
|
|
it('does the thing', async () => { /* ... */ });
|
|
});
|
|
```
|
|
|
|
3. **Register in the orchestrator** — add a `run(...)` call in the correct
|
|
suite section of `app/scripts/e2e-run-all-flows.sh`.
|
|
|
|
4. **Add to this tracking doc** — add a row to the coverage matrix table
|
|
for the appropriate category with an honest coverage depth.
|
|
|
|
5. **Add any new RPC methods** to `REQUIRED_RPC_METHODS` in
|
|
`app/test/e2e/helpers/rpc-preflight.ts` if the spec calls RPC methods
|
|
not already listed there.
|
|
|
|
6. **Run pre-flight** before executing: `bash app/scripts/e2e-preflight.sh`.
|