Skip to content

[Enhancement] Add unit tests for GatewayDispatcher error handling logic #227

@samzong

Description

@samzong

What problem are you trying to solve?

GatewayDispatcher contains critical error deduplication and lifecycle buffering logic (shouldDisplayError, isSameFailure, lifecycleErrorBuffer) that currently has zero test coverage. These are some of the most bug-prone code paths in the app — they handle error display, deduplication, and a 2-second buffering window — but any regression would go unnoticed.

Where

  • Source: packages/core/src/services/gateway-dispatcher.ts
  • Test directory: packages/core/ currently has no test/ directory — you will need to create one

What needs to be done

  1. Create packages/core/test/gateway-dispatcher.test.ts
  2. Extract shouldDisplayError and isSameFailure as pure testable functions (or test them through the dispatcher)
  3. Write tests covering:
    • isSameFailure: returns true for identical error codes/messages, false for different ones
    • shouldDisplayError: respects the lifecycle error buffer (errors within the 2s window after a lifecycle event are suppressed)
    • shouldDisplayError: does not suppress errors when chat.state is already error
    • The buffer timer: after 2s, buffered errors are released
  4. Use vi.useFakeTimers() for the buffer window tests
  5. Run pnpm check to verify

Why does this matter?

Error display logic is invisible when it works and catastrophic when it breaks — users either get spammed with duplicate errors or see no errors at all. Tests here prevent both failure modes.

Primary area

Task execution

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/dxObservability & DX WGarea/gatewayGateway Integration WGenhancementNew feature or requesthelp wantedExtra attention is needed

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions