test(apps): add Socket Mode e2e matrix - #743
Open
Kavin (singhk97) wants to merge 4 commits into
Open
Conversation
Kavin (singhk97)
force-pushed
the
kavinsingh-microsoft-socket-mode-e2e-matrix
branch
from
August 20, 2026 20:05
3060acd to
f32aff3
Compare
Kavin (singhk97)
force-pushed
the
kavinsingh-microsoft-socket-mode-e2e-matrix
branch
from
August 20, 2026 21:08
f32aff3 to
cb3c499
Compare
Contributor
There was a problem hiding this comment.
Pull request overview
Adds a new end-to-end Jest test matrix to exercise App behavior in Socket Mode (socket-only and composite socket+HTTP fallback) and closes a remaining CompositeServer lifecycle gap with a targeted unit test.
Changes:
- Added a new Socket Mode App e2e test suite covering lifecycle events, envelope casing/version mismatch handling, handler error behavior, and connection option forwarding.
- Expanded CompositeServer unit coverage to ensure an HTTP start failure propagates and prevents the socket server from being started.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| packages/apps/src/ws-connect/composite-server.spec.ts | Adds a unit test asserting HTTP-start failure propagation without starting the socket server. |
| packages/apps/src/ws-connect/app.e2e.spec.ts | Introduces a comprehensive Socket Mode App e2e matrix for socket-only and composite transport scenarios. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Kavin (singhk97)
force-pushed
the
kavinsingh-microsoft-socket-mode-e2e-matrix
branch
2 times, most recently
from
August 21, 2026 21:00
19e19d0 to
0052ae7
Compare
Corina (corinagum)
left a comment
Collaborator
There was a problem hiding this comment.
Are you planning on adding integration tests? maybe scoped to .net? Please verify if TS and PY need any language-specific additions.
Kavin (singhk97)
force-pushed
the
kavinsingh-microsoft-socket-mode-e2e-matrix
branch
10 times, most recently
from
August 26, 2026 16:24
365b749 to
a6a3cf2
Compare
Kavin (singhk97)
force-pushed
the
kavinsingh-microsoft-socket-mode-e2e-matrix
branch
6 times, most recently
from
August 26, 2026 21:08
34eafc9 to
d8c9f95
Compare
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The matrix only exercised the options-object form; add a case that constructs an App with the boolean `socketMode: true` shorthand and asserts it runs the composite transport (HTTP fallback defaults on), exposes app.socketMode, and forwards the default connection options to the underlying connection. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: fa8eeb9a-6b45-4a3a-b742-785a1f4607b8
…lifecycle Update the e2e fake to the new single-generation connection contract: start() now blocks until readiness (modeling the SocketReady gate), a drop is reported via onClosed, and the supervisor renegotiates a fresh connection. Rework the lifecycle test to assert supervisor-driven reconnect (a brand-new connection is built on drop) and update the connection-option assertions to the new context fields (keepAlive/serverTimeout instead of the removed per-connection reconnect schedule). Add a case asserting readiness is not wedged when a 'ready' listener throws. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: fa8eeb9a-6b45-4a3a-b742-785a1f4607b8
Pin the single-connection lifecycle/options cases to geos:[''] and update the
lifecycle event assertions to the geo-tagged payloads (ready {geo,frame},
disconnected {geo,error}, reconnected {geo}). Add cases asserting the default
opens one geo-scoped connection per geo (amer/emea/apac), including via the
socketMode:true shorthand.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: fa8eeb9a-6b45-4a3a-b742-785a1f4607b8
Kavin (singhk97)
force-pushed
the
kavinsingh-microsoft-socket-mode-e2e-matrix
branch
2 times, most recently
from
August 26, 2026 21:47
d8c9f95 to
58c3cf7
Compare
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
An App-level end-to-end matrix for inbound Socket Mode, plus the manual E2E plan for live connectivity.
Automated coverage
Exercises the real
App/SocketServer/CompositeServer/HttpServerpipeline through contract-faithful fake connection + HTTP adapter seams:SocketReadyreadiness gate; multi-geo default (one connection per geo);HttpPluginrejected; adapter only with fallback) and browser-feature gates.Manual E2E
Live Teams backend service / Azure SignalR connectivity is outside deterministic Jest scope. See the manual test plan: Socket Mode manual E2E testing matrix.
Validation
apps build ✅ · jest ✅ · eslint ✅
📚 Top of the stack — depends on the Socket Mode transport PR (#716).