Skip to content

test(playwright): add functional UI flow coverage#3257

Merged
senamakel merged 2 commits into
tinyhumansai:mainfrom
senamakel:codex/QA-0-playwright-functional
Jun 3, 2026
Merged

test(playwright): add functional UI flow coverage#3257
senamakel merged 2 commits into
tinyhumansai:mainfrom
senamakel:codex/QA-0-playwright-functional

Conversation

@senamakel

@senamakel senamakel commented Jun 3, 2026

Copy link
Copy Markdown
Member

Summary

  • Added functional Playwright coverage for high-risk UI flows across chat management, settings leaf pages, connector guard rails, memory workspace, onboarding configuration, invites, workflows, and top-level navigation.
  • Enabled chat attachment UI in the Playwright web build so attachment preview/remove/send paths are exercised in CI-like web E2E runs.
  • Added stable accessibility targeting for the agent tool picker and mock invite-code seeding for deterministic invite tests.

Problem

The existing Playwright suite covered broad smoke and harness paths, but several UX-critical flows could regress without an end-to-end signal: settings persistence, agent tool permissions, connector session preservation, chat attachment recovery, memory-source controls, invite redemption, workflow create/delete, and onboarding configuration navigation.

Solution

This PR adds focused functional Playwright specs that drive those flows through the UI and assert persisted state, mock-backend effects, or RPC-visible outcomes where relevant. The only product-code adjustment is an accessible label on the agent editor tool-picker button so the test and users of assistive tech can target it by name.

Submission Checklist

If a section does not apply to this change, mark the item as N/A with a one-line reason. Do not delete items.

  • Tests added or updated (happy path + at least one failure / edge case) per Testing Strategy
  • Diff coverage ≥ 80% — N/A: this is an E2E coverage expansion; CI diff coverage remains the merge gate for changed source lines.
  • Coverage matrix updated — N/A: no feature rows added/removed/renamed; this adds coverage for existing app surfaces.
  • All affected feature IDs from the matrix are listed in the PR description under ## Related — N/A: no matrix feature IDs changed.
  • No new external network dependencies introduced (mock backend used per Testing Strategy)
  • Manual smoke checklist updated if this touches release-cut surfaces (docs/RELEASE-MANUAL-SMOKE.md) — N/A: test-only coverage expansion with no release manual workflow change.
  • Linked issue closed via Closes #NNN in the ## Related section — N/A: user-requested test audit follow-up without a GitHub/Linear issue.

Impact

Runtime behavior is unchanged except for a more descriptive accessible name on the agent tool-picker button. The mock API can now seed invite codes for deterministic Playwright coverage, and the Playwright web build explicitly enables chat attachments to cover attachment UI behavior.

Related

  • Closes: N/A — no linked issue for this user-requested testing work.
  • Follow-up PR(s)/TODOs: Continue adding Tauri-only WDIO coverage for file-picker task-source flows that cannot run in the web Playwright harness.

AI Authored PR Metadata (required for Codex/Linear PRs)

Keep this section for AI-authored PRs. For human-only PRs, mark each field N/A.

Linear Issue

  • Key: N/A — no Linear issue was provided.
  • URL: N/A — no Linear issue was provided.

Commit & Branch

  • Branch: codex/QA-0-playwright-functional
  • Commit SHA: 5716934

Validation Run

  • pnpm --filter openhuman-app format:check — passed in pre-push hook on second run.
  • pnpm typecheck — passed via pre-push pnpm compile / tsc --noEmit.
  • Focused tests:
    • pnpm --filter openhuman-app test:e2e:web:build — passed.
    • bash app/scripts/e2e-web-session.sh test/playwright/specs/settings-leaf-workflows.spec.ts test/playwright/specs/top-level-functional-flows.spec.ts test/playwright/specs/connector-session-guard-matrix.spec.ts test/playwright/specs/chat-management-functional.spec.ts test/playwright/specs/intelligence-memory-ui-functional.spec.ts test/playwright/specs/onboarding-config-functional.spec.ts — 17 passed.
    • pnpm debug unit src/components/settings/panels/AgentEditorPage.test.tsx src/components/settings/panels/TaskSourcesPanel.test.tsx — passed, 16 tests.
    • pnpm debug unit src/components/intelligence/__tests__/MemoryTextAndDetail.test.tsx src/components/intelligence/MemoryGraph.test.tsx — passed, 18 tests.
    • pnpm --filter openhuman-app exec prettier --check src/components/settings/panels/AgentEditorPage.tsx test/playwright/specs/settings-leaf-workflows.spec.ts test/playwright/specs/top-level-functional-flows.spec.ts test/playwright/specs/connector-session-guard-matrix.spec.ts test/playwright/specs/chat-management-functional.spec.ts test/playwright/specs/intelligence-memory-ui-functional.spec.ts test/playwright/specs/onboarding-config-functional.spec.ts ../scripts/mock-api/routes/invites.mjs — passed.
  • Rust fmt/check (if changed): N/A — no root Rust source changed.
  • Tauri fmt/check (if changed): pnpm rust:check passed via pre-push hook with existing warnings only; no Tauri source changed.

Validation Blocked

  • command: node scripts/codex-pr-preflight.mjs --strict-path --lightweight
  • error: [FAIL] expected repo path :: expected /workspace/openhuman, got /Users/enamakel/work/tinyhumansai/openhuman-5
  • impact: Local checkout path differs from the Codex web path expected by the remote-agent preflight; repository files, branch naming, remotes, and changed-file readability passed after renaming the branch.

Behavior Changes

  • Intended behavior change: No intended user-facing behavior change beyond a more descriptive accessible label on the agent tool picker.
  • User-visible effect: New Playwright coverage catches regressions in settings, chat management, connectors, memory workspace, invites, workflows, onboarding, and top-level page rendering.

Parity Contract

  • Legacy behavior preserved: Existing UI flows and mock API defaults are preserved; invite-code seeding falls back to the previous empty list.
  • Guard/fallback/dispatch parity checks: Tests assert session guard behavior for connector errors, web-harness task-source fallback copy, and existing mock-backend/RPC outcomes for workflows, invites, agents, embeddings, and memory sources.

Duplicate / Superseded PR Handling

  • Duplicate PR(s): None found for senamakel:codex/QA-0-playwright-functional.
  • Canonical PR: This PR.
  • Resolution (closed/superseded/updated): N/A.

Summary by CodeRabbit

Release Notes

  • Accessibility

    • Improved accessibility labeling for the Agent editor tools selection button.
  • Tests

    • Added comprehensive test coverage for chat management workflows, connector session handling, intelligence memory UI, onboarding configuration, settings persistence, and top-level navigation flows.
    • Enhanced mock API to support invite code testing.
  • Chores

    • Enabled chat attachments in end-to-end build configuration.

@senamakel senamakel requested a review from a team June 3, 2026 01:31
@coderabbitai

coderabbitai Bot commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

@senamakel, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 35 minutes and 9 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 213b8e02-bebf-4eaf-abe6-3bd4c8de885f

📥 Commits

Reviewing files that changed from the base of the PR and between 5716934 and d57745d.

📒 Files selected for processing (3)
  • app/test/playwright/specs/chat-management-functional.spec.ts
  • app/test/playwright/specs/intelligence-memory-ui-functional.spec.ts
  • app/test/playwright/specs/onboarding-config-functional.spec.ts
📝 Walkthrough

Walkthrough

This PR expands Playwright functional coverage across chat, connectors, memory, onboarding, settings, workflows, invites, and top-level routes, while adding one E2E build flag for chat attachments, one mock invite-code response path, and one accessibility label in the agent editor.

Changes

Functional E2E coverage and support updates

Layer / File(s) Summary
Chat E2E enablement and management flows
app/scripts/e2e-web-build.sh, app/test/playwright/specs/chat-management-functional.spec.ts
Enables chat attachments in the E2E web build and adds chat tests for image attachment handling, thread creation, rename, and deletion.
Connector session guard matrix
app/test/playwright/specs/connector-session-guard-matrix.spec.ts
Adds connector coverage for authorize calls across toolkits, Jira connect UI, failed/expired connector states, and rejected execute/disconnect RPCs while asserting the session stays valid.
Memory and onboarding UI journeys
app/test/playwright/specs/intelligence-memory-ui-functional.spec.ts, app/test/playwright/specs/onboarding-config-functional.spec.ts
Adds one memory-source management flow and one onboarding custom-configuration flow with navigation, confirmation, and final-step assertions.
Settings workflows and agent editor accessibility
app/test/playwright/specs/settings-leaf-workflows.spec.ts, app/src/components/settings/panels/AgentEditorPage.tsx
Adds settings tests for appearance persistence, embeddings setup, agent creation, and task-source rendering, and labels the agent tools selector button with an aria-label.
Top-level workflows, invites, and route checks
app/test/playwright/specs/top-level-functional-flows.spec.ts, scripts/mock-api/routes/invites.mjs
Adds workflow create/delete coverage, invite-code copy and redemption coverage using mock invite data, and route-rendering checks for several main pages.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~50 minutes

Possibly related PRs

Suggested labels

feature, working, agent

Suggested reviewers

  • graycyrus

Poem

🐇 I hopped through routes both wide and tall,
And tested chats and settings all.
With invite codes and memory trees,
I nibbled mocks with practiced ease.
One aria-label joined the song,
And fluffy checks now bound along.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title clearly summarizes the main change: adding functional UI flow coverage with Playwright end-to-end tests across multiple features.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Comment @coderabbitai help to get the list of available commands and usage tips.

@senamakel

Copy link
Copy Markdown
Member Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jun 3, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai coderabbitai Bot added feature Net-new user-facing capability or product behavior. agent Built-in agents, prompts, orchestration, and agent runtime in src/openhuman/agent/. working A PR that is being worked on by the team. labels Jun 3, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (6)
app/test/playwright/specs/top-level-functional-flows.spec.ts (1)

12-24: ⚡ Quick win

Extract mockFetch/setMockBehavior into a shared E2E helper.

These two helpers are duplicated verbatim in app/test/playwright/specs/connector-session-guard-matrix.spec.ts (see context snippets 1 and 2), with only the mockFetch return type differing (unknown here vs { data?: unknown } there). Consider hoisting them next to callCoreRpc in app/test/playwright/helpers/core-rpc.ts (or a new mock-admin.ts helper) to keep the mock-admin contract in one place.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/test/playwright/specs/top-level-functional-flows.spec.ts` around lines 12
- 24, The two duplicated helpers mockFetch and setMockBehavior should be
extracted into a shared E2E helper so the mock-admin contract is centralized;
create a new helper (or add next to the existing callCoreRpc helper) named e.g.
mock-admin.ts and move the implementations there, standardizing the mockFetch
return type (pick a single return shape such as unknown or { data?: unknown }
and update both specs), then import and use mockFetch and setMockBehavior from
that helper in top-level-functional-flows.spec.ts and
connector-session-guard-matrix.spec.ts to remove the duplication.
scripts/mock-api/routes/invites.mjs (1)

15-25: ⚡ Quick win

Reuse the existing parseBehaviorJson helper.

scripts/mock-api/state.mjs already exports parseBehaviorJson(key, fallback) (context snippet 1), which performs the same missing/invalid-JSON fallback. Reusing it keeps behavior-key parsing consistent across routes; just retain the array guard for safety.

♻️ Proposed refactor
-import { behavior } from "../state.mjs";
+import { parseBehaviorJson } from "../state.mjs";
@@
-    const rawCodes = behavior().inviteCodes;
-    let codes = [];
-    if (typeof rawCodes === "string" && rawCodes.length > 0) {
-      try {
-        const parsed = JSON.parse(rawCodes);
-        if (Array.isArray(parsed)) codes = parsed;
-      } catch {
-        codes = [];
-      }
-    }
-    json(res, 200, { success: true, data: codes });
+    const parsed = parseBehaviorJson("inviteCodes", []);
+    const codes = Array.isArray(parsed) ? parsed : [];
+    json(res, 200, { success: true, data: codes });
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/mock-api/routes/invites.mjs` around lines 15 - 25, Replace the manual
JSON.parse logic for invite codes with the existing helper parseBehaviorJson:
import and call parseBehaviorJson('inviteCodes', []) instead of using behavior()
+ JSON.parse; assign its result to rawCodes (or directly to codes), then keep
the Array.isArray guard (if not an array, fallback to []). Remove the try/catch
block and ensure the route still returns json(res, 200, { success: true, data:
codes }).
app/test/playwright/specs/onboarding-config-functional.spec.ts (1)

62-70: 💤 Low value

Reuse chooseConfigure instead of re-inlining it.

This block duplicates the chooseConfigure(page) helper defined at Line 20-25.

♻️ Call the existing helper
       await expect(page.getByTestId(id)).toBeVisible({ timeout: 20_000 });
-      const configure = page.getByRole('button', { name: /Configure/ });
-      if (
-        await configure
-          .first()
-          .isVisible()
-          .catch(() => false)
-      ) {
-        await configure.first().click();
-      }
+      await chooseConfigure(page);
       await page.getByTestId('onboarding-next-button').click();
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/test/playwright/specs/onboarding-config-functional.spec.ts` around lines
62 - 70, The duplicated inline logic that queries the Configure button and
conditionally clicks it should be replaced with the existing helper
chooseConfigure(page); locate the block using the configure constant and
getByRole call (the if-await-isVisible-catch pattern) and remove it, then invoke
chooseConfigure(page) so the shared helper from lines ~20-25 is reused instead
of reimplementing the visibility-check-and-click behavior.
app/test/playwright/specs/intelligence-memory-ui-functional.spec.ts (3)

13-13: 💤 Low value

MemorySource is unused; prefer interface if retained.

This type alias does not appear to be referenced anywhere in the file. Remove it as dead code, or, if it's intended for use, declare it as an interface for object shapes.

♻️ Remove unused type
-type MemorySource = { id: string; kind: string; label: string; enabled: boolean };
-

As per coding guidelines: "Prefer interface for defining object shapes in TypeScript".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/test/playwright/specs/intelligence-memory-ui-functional.spec.ts` at line
13, The type alias MemorySource is unused; either remove the declaration
entirely to eliminate dead code, or if it’s intended to be used elsewhere
convert it to an interface (declare interface MemorySource { id: string; kind:
string; label: string; enabled: boolean }) and export it if needed so other
modules can reference it. Locate the MemorySource declaration in the spec and
apply one of these two fixes, then run TypeScript/linters to confirm no unused
symbol or missing import errors remain.

15-24: 💤 Low value

Redundant waitForAppReady call.

bootAuthenticatedPage already navigates to the hash and awaits waitForAppReady internally (see helpers/core-rpc.ts:135-146), so the explicit call on Line 17 is redundant.

♻️ Drop the duplicate readiness wait
   await bootAuthenticatedPage(page, 'pw-intelligence-memory-ui', '/intelligence');
-  await waitForAppReady(page);
   await dismissWalkthroughIfPresent(page);
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/test/playwright/specs/intelligence-memory-ui-functional.spec.ts` around
lines 15 - 24, The openMemory function contains a redundant call to
waitForAppReady because bootAuthenticatedPage already navigates and awaits
readiness; remove the explicit await waitForAppReady(page) line inside
openMemory so the sequence relies on bootAuthenticatedPage's internal readiness
check (refer to openMemory and bootAuthenticatedPage and the waitForAppReady
helper).

76-77: ⚡ Quick win

Consider asserting the backend effect of removal.

The removal flow asserts only the UI row disappears. Per the E2E guidance to assert backend/mock effects when relevant, consider confirming the source is gone via openhuman.memory_sources_list (and adding dumpAccessibilityTree() on failure) to harden the test against UI-only regressions.

Based on learnings: "Assert both UI outcomes and backend/mock effects when relevant in E2E tests. Add failure diagnostics (request logs, dumpAccessibilityTree()) for faster debugging by agents."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/test/playwright/specs/intelligence-memory-ui-functional.spec.ts` around
lines 76 - 77, After clicking the remove button
(row.getByTitle('Remove').click()) add an assertion that the memory source is
actually removed from the backend/mock by calling openhuman.memory_sources_list
and asserting the removed source id/name is not present; wrap this check so on
failure you dump diagnostics (call page.dumpAccessibilityTree() and capture
request logs) before failing the test to aid debugging. Ensure you keep the
existing UI assertion (await expect(row).toHaveCount(0)) but augment it with the
backend check against openhuman.memory_sources_list and include the diagnostic
calls in the failure path.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@app/test/playwright/specs/chat-management-functional.spec.ts`:
- Around line 97-98: The rename/delete test ("thread rename and delete remain
usable from the conversation UI") is inheriting mock server state from prior
tests; call resetMock() at the start of that test (before openChat(page,
'pw-chat-rename-delete')) to clear the /__admin/behavior state so the test runs
in isolation — do not rely on bootAuthenticatedPage() since it only resets core
mocks.

In `@app/test/playwright/specs/intelligence-memory-ui-functional.spec.ts`:
- Around line 45-46: The call to addFolderSource(label) is happening before
openMemory/bootAuthenticatedPage which triggers resetCoreForWebUser →
openhuman.auth_clear_session and can change the config directory used for
Config.memory_sources; move the addFolderSource(label) invocation to after
openMemory (or after bootAuthenticatedPage) so memory_sources_add runs in the
authenticated user context, or alternatively ensure openhuman.auth_store_session
for the same userId is called before memory_sources_add; update test to call
addFolderSource only after openMemory (or add an auth_store_session step) and
reference addFolderSource, openMemory, bootAuthenticatedPage,
resetCoreForWebUser, auth_clear_session, auth_store_session, memory_sources_add,
and Config.memory_sources when making the change.

In `@app/test/playwright/specs/onboarding-config-functional.spec.ts`:
- Around line 53-75: The loop iterates over the list including
'onboarding-custom-vault-step' but always clicks
page.getByTestId('onboarding-next-button'), which conflicts with subsequent
assertions that the vault step remains visible and the Next button is enabled;
update the loop in onboarding-config-functional.spec.ts to exclude
'onboarding-custom-vault-step' (or add a conditional guard around the
page.getByTestId('onboarding-next-button').click() so it skips clicking when id
=== 'onboarding-custom-vault-step'), then keep the final assertions that await
expect(page.getByTestId('onboarding-custom-vault-step')).toBeVisible() and
expect(page.getByTestId('onboarding-next-button')).toBeEnabled(); confirm the
actual Next behavior in the vault step component before applying the change.

---

Nitpick comments:
In `@app/test/playwright/specs/intelligence-memory-ui-functional.spec.ts`:
- Line 13: The type alias MemorySource is unused; either remove the declaration
entirely to eliminate dead code, or if it’s intended to be used elsewhere
convert it to an interface (declare interface MemorySource { id: string; kind:
string; label: string; enabled: boolean }) and export it if needed so other
modules can reference it. Locate the MemorySource declaration in the spec and
apply one of these two fixes, then run TypeScript/linters to confirm no unused
symbol or missing import errors remain.
- Around line 15-24: The openMemory function contains a redundant call to
waitForAppReady because bootAuthenticatedPage already navigates and awaits
readiness; remove the explicit await waitForAppReady(page) line inside
openMemory so the sequence relies on bootAuthenticatedPage's internal readiness
check (refer to openMemory and bootAuthenticatedPage and the waitForAppReady
helper).
- Around line 76-77: After clicking the remove button
(row.getByTitle('Remove').click()) add an assertion that the memory source is
actually removed from the backend/mock by calling openhuman.memory_sources_list
and asserting the removed source id/name is not present; wrap this check so on
failure you dump diagnostics (call page.dumpAccessibilityTree() and capture
request logs) before failing the test to aid debugging. Ensure you keep the
existing UI assertion (await expect(row).toHaveCount(0)) but augment it with the
backend check against openhuman.memory_sources_list and include the diagnostic
calls in the failure path.

In `@app/test/playwright/specs/onboarding-config-functional.spec.ts`:
- Around line 62-70: The duplicated inline logic that queries the Configure
button and conditionally clicks it should be replaced with the existing helper
chooseConfigure(page); locate the block using the configure constant and
getByRole call (the if-await-isVisible-catch pattern) and remove it, then invoke
chooseConfigure(page) so the shared helper from lines ~20-25 is reused instead
of reimplementing the visibility-check-and-click behavior.

In `@app/test/playwright/specs/top-level-functional-flows.spec.ts`:
- Around line 12-24: The two duplicated helpers mockFetch and setMockBehavior
should be extracted into a shared E2E helper so the mock-admin contract is
centralized; create a new helper (or add next to the existing callCoreRpc
helper) named e.g. mock-admin.ts and move the implementations there,
standardizing the mockFetch return type (pick a single return shape such as
unknown or { data?: unknown } and update both specs), then import and use
mockFetch and setMockBehavior from that helper in
top-level-functional-flows.spec.ts and connector-session-guard-matrix.spec.ts to
remove the duplication.

In `@scripts/mock-api/routes/invites.mjs`:
- Around line 15-25: Replace the manual JSON.parse logic for invite codes with
the existing helper parseBehaviorJson: import and call
parseBehaviorJson('inviteCodes', []) instead of using behavior() + JSON.parse;
assign its result to rawCodes (or directly to codes), then keep the
Array.isArray guard (if not an array, fallback to []). Remove the try/catch
block and ensure the route still returns json(res, 200, { success: true, data:
codes }).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 790dbdce-d851-4fd5-89d6-56345f982331

📥 Commits

Reviewing files that changed from the base of the PR and between 71e04ea and 5716934.

📒 Files selected for processing (9)
  • app/scripts/e2e-web-build.sh
  • app/src/components/settings/panels/AgentEditorPage.tsx
  • app/test/playwright/specs/chat-management-functional.spec.ts
  • app/test/playwright/specs/connector-session-guard-matrix.spec.ts
  • app/test/playwright/specs/intelligence-memory-ui-functional.spec.ts
  • app/test/playwright/specs/onboarding-config-functional.spec.ts
  • app/test/playwright/specs/settings-leaf-workflows.spec.ts
  • app/test/playwright/specs/top-level-functional-flows.spec.ts
  • scripts/mock-api/routes/invites.mjs

Comment thread app/test/playwright/specs/chat-management-functional.spec.ts
Comment thread app/test/playwright/specs/intelligence-memory-ui-functional.spec.ts Outdated
Comment thread app/test/playwright/specs/onboarding-config-functional.spec.ts
@senamakel senamakel merged commit 65feeb2 into tinyhumansai:main Jun 3, 2026
19 checks passed
senamakel added a commit to senamakel/openhuman that referenced this pull request Jun 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agent Built-in agents, prompts, orchestration, and agent runtime in src/openhuman/agent/. feature Net-new user-facing capability or product behavior. working A PR that is being worked on by the team.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant