Repository navigation
feat: Add a shared WebSocket base to the contract test utils and use it in the browser contract tests - #2136
Merged
Merged
Conversation
Contributor
|
@launchdarkly/js-sdk-common size report |
Contributor
|
@launchdarkly/js-client-sdk size report |
Contributor
|
@launchdarkly/js-client-sdk-common size report |
joker23
marked this pull request as ready for review
October 29, 2026 21:14
Contributor
There was a problem hiding this comment.
🔍 Devin Review: 1 flag
Not posted on this PR by your GitHub settings — view it in Devin Review. (Configure)
kinyoklion
approved these changes
Oct 30, 2026
joker23
force-pushed
the
skz/SDK-2010/contract-test-ws-base
branch
6 times, most recently
from
October 30, 2026 22:45
e92a8eb to
0f3f4f2
Compare
…it in the browser contract tests
joker23
force-pushed
the
skz/SDK-2010/contract-test-ws-base
branch
from
November 2, 2026 14:40
0f3f4f2 to
37025ee
Compare
Merged
joker23
pushed a commit
that referenced
this pull request
Nov 2, 2026
🤖 I have created a release *beep* *boop* --- <details><summary>akamai-edgeworker-sdk-common: 2.0.46</summary> ## [2.0.46](akamai-edgeworker-sdk-common-v2.0.45...akamai-edgeworker-sdk-common-v2.0.46) (2026-11-02) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/js-server-sdk-common bumped from ^2.26.0 to ^2.26.1 </details> <details><summary>akamai-server-base-sdk: 3.0.47</summary> ## [3.0.47](akamai-server-base-sdk-v3.0.46...akamai-server-base-sdk-v3.0.47) (2026-11-02) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/akamai-edgeworker-sdk-common bumped from ^2.0.45 to ^2.0.46 </details> <details><summary>akamai-server-edgekv-sdk: 1.4.49</summary> ## [1.4.49](akamai-server-edgekv-sdk-v1.4.48...akamai-server-edgekv-sdk-v1.4.49) (2026-11-02) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/akamai-edgeworker-sdk-common bumped from ^2.0.45 to ^2.0.46 * @launchdarkly/js-server-sdk-common bumped from ^2.26.0 to ^2.26.1 </details> <details><summary>client-testing-plugin: 1.0.28</summary> ## [1.0.28](client-testing-plugin-v1.0.27...client-testing-plugin-v1.0.28) (2026-11-02) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/js-client-sdk-common bumped from 1.34.1 to 1.35.0 * devDependencies * @launchdarkly/js-client-sdk bumped from 4.13.1 to 4.14.0 * @launchdarkly/react-sdk bumped from 4.1.29 to 4.1.30 * peerDependencies * @launchdarkly/js-client-sdk bumped from ^4.9.1 to ^4.14.0 * @launchdarkly/react-sdk bumped from ^4.1.4 to ^4.1.30 </details> <details><summary>cloudflare-server-sdk: 2.7.48</summary> ## [2.7.48](cloudflare-server-sdk-v2.7.47...cloudflare-server-sdk-v2.7.48) (2026-11-02) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/js-server-sdk-common-edge bumped from 2.6.43 to 2.6.44 </details> <details><summary>fastly-server-sdk: 0.2.38</summary> ## [0.2.38](fastly-server-sdk-v0.2.37...fastly-server-sdk-v0.2.38) (2026-11-02) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/js-server-sdk-common bumped from 2.26.0 to 2.26.1 </details> <details><summary>jest: 1.0.39</summary> ## [1.0.39](jest-v1.0.38...jest-v1.0.39) (2026-11-02) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/react-native-client-sdk bumped from ~10.23.1 to ~10.23.2 </details> <details><summary>js-client-sdk: 4.14.0</summary> ## [4.14.0](js-client-sdk-v4.13.1...js-client-sdk-v4.14.0) (2026-11-02) ### Features * Add a shared WebSocket base to the contract test utils and use it in the browser contract tests ([#2136](#2136)) ([af2f096](af2f096)) * Add an opt-in fetch-based EventSource entry to the browser SDK ([#2033](#2033)) ([7a21f6f](7a21f6f)) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/js-client-sdk-common bumped from 1.34.1 to 1.35.0 </details> <details><summary>js-client-sdk-common: 1.35.0</summary> ## [1.35.0](js-client-sdk-common-v1.34.1...js-client-sdk-common-v1.35.0) (2026-11-02) ### Features * Add an opt-in fetch-based EventSource entry to the browser SDK ([#2033](#2033)) ([7a21f6f](7a21f6f)) </details> <details><summary>js-server-sdk-common: 2.26.1</summary> ## [2.26.1](js-server-sdk-common-v2.26.0...js-server-sdk-common-v2.26.1) (2026-11-02) ### Bug Fixes * Treat a repeated override file path in a different case as a repeat on Windows ([#2134](#2134)) ([d331546](d331546)) * Warn when offline mode skips the override source, and ignore snapshots after close ([#2133](#2133)) ([612918c](612918c)) </details> <details><summary>js-server-sdk-common-edge: 2.6.44</summary> ## [2.6.44](js-server-sdk-common-edge-v2.6.43...js-server-sdk-common-edge-v2.6.44) (2026-11-02) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/js-server-sdk-common bumped from 2.26.0 to 2.26.1 </details> <details><summary>node-client-sdk: 4.4.1</summary> ## [4.4.1](node-client-sdk-v4.4.0...node-client-sdk-v4.4.1) (2026-11-02) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/js-client-sdk-common bumped from 1.34.1 to 1.35.0 </details> <details><summary>node-server-sdk: 9.16.1</summary> ## [9.16.1](node-server-sdk-v9.16.0...node-server-sdk-v9.16.1) (2026-11-02) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/js-server-sdk-common bumped from 2.26.0 to 2.26.1 </details> <details><summary>node-server-sdk-dynamodb: 6.4.4</summary> ## [6.4.4](node-server-sdk-dynamodb-v6.4.3...node-server-sdk-dynamodb-v6.4.4) (2026-11-02) ### Dependencies * The following workspace dependencies were updated * devDependencies * @launchdarkly/node-server-sdk bumped from 9.16.0 to 9.16.1 * peerDependencies * @launchdarkly/node-server-sdk bumped from >=9.14.1 to >=9.16.1 </details> <details><summary>node-server-sdk-otel: 1.3.40</summary> ## [1.3.40](node-server-sdk-otel-v1.3.39...node-server-sdk-otel-v1.3.40) (2026-11-02) ### Dependencies * The following workspace dependencies were updated * devDependencies * @launchdarkly/node-server-sdk bumped from 9.16.0 to 9.16.1 * peerDependencies * @launchdarkly/node-server-sdk bumped from >=9.11.3 to >=9.16.1 </details> <details><summary>node-server-sdk-redis: 4.4.4</summary> ## [4.4.4](node-server-sdk-redis-v4.4.3...node-server-sdk-redis-v4.4.4) (2026-11-02) ### Dependencies * The following workspace dependencies were updated * devDependencies * @launchdarkly/node-server-sdk bumped from 9.16.0 to 9.16.1 * peerDependencies * @launchdarkly/node-server-sdk bumped from >=9.14.1 to >=9.16.1 </details> <details><summary>openfeature-cloudflare-server: 1.1.1</summary> ## [1.1.1](openfeature-cloudflare-server-v1.1.0...openfeature-cloudflare-server-v1.1.1) (2026-11-02) ### Dependencies * The following workspace dependencies were updated * devDependencies * @launchdarkly/cloudflare-server-sdk bumped from 2.7.47 to 2.7.48 * peerDependencies * @launchdarkly/cloudflare-server-sdk bumped from ^2.7.0 to ^2.7.48 </details> <details><summary>openfeature-node-server: 2.1.4</summary> ## [2.1.4](openfeature-node-server-v2.1.3...openfeature-node-server-v2.1.4) (2026-11-02) ### Dependencies * The following workspace dependencies were updated * devDependencies * @launchdarkly/node-server-sdk bumped from 9.16.0 to 9.16.1 * peerDependencies * @launchdarkly/node-server-sdk bumped from ^9.0.0 to ^9.16.1 </details> <details><summary>react-native-client-sdk: 10.23.2</summary> ## [10.23.2](react-native-client-sdk-v10.23.1...react-native-client-sdk-v10.23.2) (2026-11-02) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/js-client-sdk-common bumped from 1.34.1 to 1.35.0 </details> <details><summary>react-sdk: 4.1.30</summary> ## [4.1.30](react-sdk-v4.1.29...react-sdk-v4.1.30) (2026-11-02) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/js-client-sdk bumped from ^4.13.1 to ^4.14.0 * @launchdarkly/js-server-sdk-common bumped from ^2.26.0 to ^2.26.1 </details> <details><summary>server-sdk-ai: 2.0.17</summary> ## [2.0.17](server-sdk-ai-v2.0.16...server-sdk-ai-v2.0.17) (2026-11-02) ### Dependencies * The following workspace dependencies were updated * devDependencies * @launchdarkly/js-server-sdk-common bumped from 2.26.0 to 2.26.1 * peerDependencies * @launchdarkly/js-server-sdk-common bumped from ^2.0.0 to ^2.26.1 </details> <details><summary>server-sdk-ai-langchain: 0.8.28</summary> ## [0.8.28](server-sdk-ai-langchain-v0.8.27...server-sdk-ai-langchain-v0.8.28) (2026-11-02) ### Dependencies * The following workspace dependencies were updated * devDependencies * @launchdarkly/server-sdk-ai bumped from ^2.0.16 to ^2.0.17 * peerDependencies * @launchdarkly/server-sdk-ai bumped from ^1.1.1 || ^2.0.0 to ^2.0.17 </details> <details><summary>server-sdk-ai-openai: 0.7.28</summary> ## [0.7.28](server-sdk-ai-openai-v0.7.27...server-sdk-ai-openai-v0.7.28) (2026-11-02) ### Dependencies * The following workspace dependencies were updated * devDependencies * @launchdarkly/js-server-sdk-common bumped from 2.26.0 to 2.26.1 * @launchdarkly/server-sdk-ai bumped from ^2.0.16 to ^2.0.17 * peerDependencies * @launchdarkly/server-sdk-ai bumped from ^1.1.1 || ^2.0.0 to ^2.0.17 </details> <details><summary>server-sdk-ai-vercel: 0.7.28</summary> ## [0.7.28](server-sdk-ai-vercel-v0.7.27...server-sdk-ai-vercel-v0.7.28) (2026-11-02) ### Dependencies * The following workspace dependencies were updated * devDependencies * @launchdarkly/server-sdk-ai bumped from ^2.0.16 to ^2.0.17 * peerDependencies * @launchdarkly/server-sdk-ai bumped from ^1.1.1 || ^2.0.0 to ^2.0.17 </details> <details><summary>shopify-oxygen-sdk: 0.2.3</summary> ## [0.2.3](shopify-oxygen-sdk-v0.2.2...shopify-oxygen-sdk-v0.2.3) (2026-11-02) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/js-server-sdk-common bumped from 2.26.0 to 2.26.1 </details> <details><summary>vercel-server-sdk: 1.3.71</summary> ## [1.3.71](vercel-server-sdk-v1.3.70...vercel-server-sdk-v1.3.71) (2026-11-02) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/js-server-sdk-common-edge bumped from 2.6.43 to 2.6.44 </details> <details><summary>vue-client-sdk: 3.0.9</summary> ## [3.0.9](vue-client-sdk-v3.0.8...vue-client-sdk-v3.0.9) (2026-11-02) ### Dependencies * The following workspace dependencies were updated * dependencies * @launchdarkly/js-client-sdk bumped from 4.13.1 to 4.14.0 </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Overview** > Release Please **version bump** across the monorepo (manifest, changelogs, `package.json`, and `x-release-please-version` strings). No new application logic in this diff—the release carries work already merged on `main`. > > **Client (1.35.0 / 4.14.0):** `@launchdarkly/js-client-sdk-common` adds an **opt-in fetch-based EventSource** path; the browser SDK **4.14.0** picks that up and also notes shared WebSocket contract-test infrastructure. > > **Server common (2.26.1):** `@launchdarkly/js-server-sdk-common` fixes **override file deduplication on Windows** (same path, different casing) and improves **offline + override** behavior (warn when overrides are skipped; ignore snapshots after close). > > **Cascade:** Node server/client, React/Vue/React Native, edge SDKs (Cloudflare, Vercel, Akamai, Fastly, Shopify Oxygen), AI SDK + providers, OpenFeature wrappers, stores, OTEL, and tooling get **patch/minor bumps** that realign workspace dependencies on those commons releases. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit d620eaf. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY --> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
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
TestHarnessWebSocketbase to@launchdarkly/js-contract-test-utils/client. It owns the connect, reconnect, and dispatch loop. Subclasses supply how clients are created, looked up, and deleted.deleteClient. Before,deleteClientset no status on success.Note
Overview
Introduces an abstract
TestHarnessWebSocketin@launchdarkly/js-contract-test-utils/clientthat centralizes the harness WebSocket lifecycle (connect, auto-reconnect, message dispatch) and exports it alongsideCommandHandler.The browser contract-test entity extends that base and only implements client create/lookup/delete plus browser-specific capability reporting (including fetch-EventSource extras and
retry-conformance-fdv1-streaming).Harness HTTP semantics are tightened in the shared dispatcher:
runCommandnow mapsunsupported commandto 400 and other handler failures to 500;deleteClientreturns 200 on success (previously success had no status).disconnect()sets an intentional-close flag so pending reconnect timers do not reopen the socket.Reviewed by Cursor Bugbot for commit 37025ee. Bugbot is set up for automated code reviews on this repo. Configure here.