You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
One new file: trios/agent-server/apps/agent/entrypoints/sidepanel/index/ChatInput.test.ts (the path the issue's Success Criteria names). The subject ChatInput.tsx is untouched.
The 1 exported symbol is exercised (1 it( block; 0 blocked). The component is a forwardRef with hooks, so the pins read a static render of it - measured, the render goes through with the tab-picker and voice seams left real (the picker stays closed, the voice state is handed in as a full VoiceInputState fixture). The pins read the placeholder contract for the state handed in: the chat mode asks about this page, the agent mode asks what it should do, and a transcribing voice state wins over both and disables the field.
Not pinned, and why (issue User Story 2): the typing flow - the tab-mention editing, the key handling, the imperative handle, the submit and stop wiring - they live in handlers and effects that need a live document and window. The port env seam is seeded before any import can reach the env module (its one-time snapshot - the trap the agent-outputs suite documented), with the subject imported dynamically for that reason.
How it was verified (FR-004)
Passing run against the unmodified subject: 1 pass / 0 fail / 5 expect() calls, Ran 1 test across 1 file.
Deliberately broken copy (the chat-mode placeholder changed, valid syntax): 0 pass / 1 fail / 1 expect() calls. The subject was restored byte-identical (git checkout; git diff --name-only prints nothing) and the suite passes again.
No network, database or container; no existing test modified or weakened. The file is biome-check clean. The local typecheck reports 19 errors - the pre-existing base of this tree - and 0 mentions of the new file. Verified in-process: the full agent group passes this file next to every suite of this wave (252 pass / 3 fail, the 3 pre-existing local-only env failures, green in CI).
This PR adds a pinning test for the ChatInput component that verifies its placeholder text contracts across chat/agent modes and voice transcribing state. The test uses static server-side rendering with mocked storage and a pre-seeded environment variable to avoid the env module's one-time snapshot.
Worth a look
trios/agent-server/apps/agent/entrypoints/sidepanel/index/ChatInput.test.ts:28 β The module-level values Map is shared across all tests in the file. If more it blocks are added later, they will leak storage state into each other unless the map is cleared in a beforeEach.
trios/agent-server/apps/agent/entrypoints/sidepanel/index/ChatInput.test.ts:31-42 β The defineItem mock extracts fallback via (opts as { fallback?: unknown } | undefined)?.fallback. If opts is ever passed as a non-object (e.g., undefined or a primitive), this returns undefined rather than the intended fallback, which could mask misconfigured storage items.
trios/agent-server/apps/agent/entrypoints/sidepanel/index/ChatInput.test.ts:44 β The dynamic await import('./ChatInput') runs after the mocks are installed, which is correct for the env snapshot issue described. However, if the component's import graph reaches the env module before the mocks are evaluated (e.g., via a side-effect in a transitive dependency), the snapshot could still freeze. The current test passes, so this is a structural risk rather than an observed failure.
Read: 1 files, +101 -0, the whole diff. Head 9522422. Model: openai-compatible/nvidia/nemotron-3-ultra-550b-a55b. Commands: @t27-bees review | summary | help | pause | resume. Free for every repository.
Tests / server-tools failed on the first CI run - the known ACL flake of #1901. Rerunning the failed job once per the wave's flake protocol; outcome recorded here.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #1506
What changed
One new file:
trios/agent-server/apps/agent/entrypoints/sidepanel/index/ChatInput.test.ts(the path the issue's Success Criteria names). The subjectChatInput.tsxis untouched.The 1 exported symbol is exercised (1
it(block; 0 blocked). The component is a forwardRef with hooks, so the pins read a static render of it - measured, the render goes through with the tab-picker and voice seams left real (the picker stays closed, the voice state is handed in as a fullVoiceInputStatefixture). The pins read the placeholder contract for the state handed in: the chat mode asks about this page, the agent mode asks what it should do, and a transcribing voice state wins over both and disables the field.Not pinned, and why (issue User Story 2): the typing flow - the tab-mention editing, the key handling, the imperative handle, the submit and stop wiring - they live in handlers and effects that need a live document and window. The port env seam is seeded before any import can reach the env module (its one-time snapshot - the trap the agent-outputs suite documented), with the subject imported dynamically for that reason.
How it was verified (FR-004)
1 pass / 0 fail / 5 expect() calls, Ran 1 test across 1 file.0 pass / 1 fail / 1 expect() calls. The subject was restored byte-identical (git checkout;git diff --name-onlyprints nothing) and the suite passes again.bun run typecheckrunswxt prepare, whose generated.wxt/tsconfig.jsonmakes bun 1.3.6 stop resolving@/aliases for test runs until that generated directory is removed. CI's Tests jobs never runwxt prepare; every run quoted above is from a checkout without.wxt/.Not verified
Tests / agentjob re-runs the suite on this SHA.Dmitrii Fedorov (@dmitrii-f-t27)