Skip to content

feat: Add a shared WebSocket base to the contract test utils and use it in the browser contract tests - #2136

Merged
joker23 merged 2 commits into
mainfrom
skz/SDK-2010/contract-test-ws-base
Nov 2, 2026
Merged

joker23 merged 2 commits into
mainfrom
skz/SDK-2010/contract-test-ws-base

Conversation

@joker23

@joker23 joker23 commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Adds an abstract TestHarnessWebSocket base 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.
  • Moves the browser contract-test entity onto the base.
  • The browser entity now returns 400 and 500 for command errors, and 200 or 404 from deleteClient. Before, deleteClient set no status on success.

Devin Review


Note

Overview
Introduces an abstract TestHarnessWebSocket in @launchdarkly/js-contract-test-utils/client that centralizes the harness WebSocket lifecycle (connect, auto-reconnect, message dispatch) and exports it alongside CommandHandler.

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: runCommand now maps unsupported command to 400 and other handler failures to 500; deleteClient returns 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.

@joker23
joker23 added this pull request to stack #2138 October 29, 2026 19:18
@github-actions

Copy link
Copy Markdown
Contributor

@launchdarkly/js-sdk-common size report
This is the brotli compressed size of the ESM build.
Compressed size: 32220 bytes
Compressed size limit: 32500
Uncompressed size: 152548 bytes

@github-actions

github-actions Bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

@launchdarkly/js-client-sdk size report
This is the brotli compressed size of the ESM build.
Compressed size: 34404 bytes
Compressed size limit: 35000
Uncompressed size: 122974 bytes

@github-actions

github-actions Bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

@launchdarkly/js-client-sdk-common size report
This is the brotli compressed size of the ESM build.
Compressed size: 26066 bytes
Compressed size limit: 44000
Uncompressed size: 168326 bytes

@joker23
joker23 marked this pull request as ready for review October 29, 2026 21:14
@joker23
joker23 requested a review from a team as a code owner October 29, 2026 21:14

@devin-ai-integration devin-ai-integration 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.

🔍 Devin Review: 1 flag

Not posted on this PR by your GitHub settings — view it in Devin Review. (Configure)

Devin Review

@joker23
joker23 force-pushed the skz/SDK-2010/contract-test-ws-base branch 6 times, most recently from e92a8eb to 0f3f4f2 Compare October 30, 2026 22:45
@joker23
joker23 force-pushed the skz/SDK-2010/contract-test-ws-base branch from 0f3f4f2 to 37025ee Compare November 2, 2026 14:40
@joker23
joker23 merged commit af2f096 into main Nov 2, 2026
66 checks passed
@joker23
joker23 deleted the skz/SDK-2010/contract-test-ws-base branch November 2, 2026 15:10
@github-actions github-actions Bot mentioned this pull request Nov 2, 2026
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants