Skip to content

Commit 86110d7

Browse files
authored
ci: consolidate test harness adapter server (#1217)
This PR will implement the SDK testharness adapter server to the shared utils. This should also stabilize some of the flaky ci tests since we not longer depend on a full repo build to ensure all contract test dependencies are built <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Medium risk because it changes how contract-test infrastructure is built and launched in CI/local scripts, which can break contract test pipelines despite not affecting production runtime. > > **Overview** > Consolidates the browser and React Native contract-test adapter servers into `@launchdarkly/js-contract-test-utils`, adding an exported `startAdapter()` API plus a new `sdk-testharness-server`/`sts` CLI with configurable ports. > > Removes the standalone `browser-contract-test-adapter` and `react-native-contract-test-adapter` workspaces, updates contract-test entity packages to start the adapter via `start:adapter`, and simplifies GitHub Actions workflows to focus/build only the needed workspaces (including updated cleanup process matching the new CLI). > > Adjusts TypeScript build config in `contract-test-utils` to compile the new adapter/CLI entrypoints, and fixes contract-test ESLint configs by setting `tsconfigRootDir` for React and server-node. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit ebef965. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> <!-- devin-review-badge-begin --> --- <a href="https://app.devin.ai/review/launchdarkly/js-core/pull/1217" target="_blank"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1"> <img src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1" alt="Open with Devin"> </picture> </a> <!-- devin-review-badge-end -->
1 parent f92a8f9 commit 86110d7

29 files changed

Lines changed: 125 additions & 324 deletions

.github/workflows/browser.yml

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,23 +45,20 @@ jobs:
4545

4646
# Contract Tests
4747
- name: Install contract test dependencies
48-
run: yarn workspaces focus browser-contract-test-adapter browser-contract-test-service
48+
run: yarn workspaces focus browser-contract-test-service
4949

5050
- name: Install Playwright browsers
5151
run: yarn workspace browser-contract-test-service install-playwright-browsers
5252

5353
- name: Build shared contract test utils
54-
run: yarn workspace @launchdarkly/js-contract-test-utils build:client
55-
56-
- name: Build contract test adapter
57-
run: yarn workspace browser-contract-test-adapter run build
54+
run: yarn workspaces foreach -pR --topological-dev --from '@launchdarkly/js-contract-test-utils' run build
5855

5956
- name: Build contract test entity (browser app)
6057
run: yarn workspace browser-contract-test-service run build
6158

6259
- name: Start contract test adapter in background
6360
run: |
64-
yarn workspace browser-contract-test-adapter run start > /tmp/adapter.log 2>&1 &
61+
yarn workspace browser-contract-test-service run start:adapter > /tmp/adapter.log 2>&1 &
6562
echo $! > /tmp/adapter.pid
6663
6764
- name: Serve browser app with http-server
@@ -130,7 +127,7 @@ jobs:
130127
[ -f /tmp/adapter.pid ] && kill $(cat /tmp/adapter.pid) || true
131128
pkill -f "playwright" || true
132129
pkill -f "http-server" || true
133-
pkill -f "browser-contract-test-adapter" || true
130+
pkill -f "sdk-testharness-server" || true
134131
135132
run-example:
136133
runs-on: ubuntu-latest

.github/workflows/react-native-contract-tests.yml

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,13 @@ jobs:
2828
node-version: 24
2929

3030
- name: Install dependencies
31-
run: yarn workspaces focus react-native-contract-test-adapter react-native-contract-test-entity
31+
run: yarn workspaces focus react-native-contract-test-entity
3232

3333
- name: Build SDK and dependencies
3434
run: yarn workspaces foreach -pR --topological-dev --from '@launchdarkly/react-native-client-sdk' run build
3535

3636
- name: Build shared contract test utils
37-
run: yarn workspace @launchdarkly/js-contract-test-utils build:client
38-
39-
- name: Build contract test adapter
40-
run: yarn workspace react-native-contract-test-adapter run build
37+
run: yarn workspaces foreach -pR --topological-dev --from '@launchdarkly/js-contract-test-utils' run build
4138

4239
- name: Enable KVM group perms (for emulator performance)
4340
run: |
@@ -71,7 +68,7 @@ jobs:
7168

7269
- name: Start adapter in background
7370
run: |
74-
yarn workspace react-native-contract-test-adapter run start > /tmp/adapter.log 2>&1 &
71+
yarn workspace react-native-contract-test-entity run start:adapter > /tmp/adapter.log 2>&1 &
7572
echo $! > /tmp/adapter.pid
7673
7774
- name: Wait for adapter to be ready

.github/workflows/react.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,15 @@ jobs:
3131
workspace_path: packages/sdk/react
3232

3333
# Contract Tests
34-
- name: Install contract test dependencies
34+
- name: Install and build contract test dependencies
3535
env:
3636
YARN_ENABLE_IMMUTABLE_INSTALLS: 'false'
3737
run: |
38-
yarn workspaces foreach -pR --topological-dev --from 'browser-contract-test-adapter' install
39-
yarn workspaces foreach -pR --topological-dev --from "@launchdarkly/react-sdk-contract-tests" install
40-
yarn workspaces foreach -pR --topological-dev --from 'browser-contract-test-adapter' run build
41-
yarn workspaces foreach -pR --topological-dev --from "@launchdarkly/react-sdk-contract-tests" run build
42-
yarn workspace @launchdarkly/react-sdk-contract-tests install-playwright-browsers
38+
yarn workspaces foreach -pR --topological-dev --from '@launchdarkly/react-sdk-contract-tests' install
39+
yarn workspaces foreach -pR --topological-dev --from '@launchdarkly/react-sdk-contract-tests' run build
40+
41+
- name: Install Playwright browsers
42+
run: yarn workspace @launchdarkly/react-sdk-contract-tests install-playwright-browsers
4343
- name: Run test adapter
4444
run: |
4545
yarn workspace @launchdarkly/react-sdk-contract-tests run start:adapter > /tmp/adapter.log 2>&1 &

package.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
"packages/sdk/react/examples/server-only",
2525
"packages/sdk/react-native",
2626
"packages/sdk/react-native/example",
27-
"packages/sdk/react-native/contract-tests/adapter",
2827
"packages/sdk/react-native/contract-tests/entity",
2928
"packages/sdk/vercel",
3029
"packages/sdk/svelte",
@@ -41,7 +40,6 @@
4140
"packages/tooling/jest/example/react-native-example",
4241
"packages/sdk/browser",
4342
"packages/sdk/browser/contract-tests/entity",
44-
"packages/sdk/browser/contract-tests/adapter",
4543
"packages/sdk/server-ai",
4644
"packages/sdk/server-ai/examples/bedrock",
4745
"packages/sdk/server-ai/examples/chat-judge",

packages/sdk/browser/contract-tests/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ This directory contains the contract test implementation for the LaunchDarkly Br
66

77
The browser contract tests consist of three components:
88

9-
1. **Adapter** (`adapter/`): A Node.js server that:
9+
1. **Adapter**: The `npx sdk-testharness-server adapter` CLI from `@launchdarkly/js-contract-test-utils`. The adapter:
1010
- Exposes a REST API on port 8000 for the test harness
1111
- Runs a WebSocket server on port 8001 for browser communication
1212
- Translates REST commands to WebSocket messages

packages/sdk/browser/contract-tests/adapter/package.json

Lines changed: 0 additions & 40 deletions
This file was deleted.

packages/sdk/browser/contract-tests/adapter/src/index.ts

Lines changed: 0 additions & 112 deletions
This file was deleted.

packages/sdk/browser/contract-tests/adapter/tsconfig.eslint.json

Lines changed: 0 additions & 5 deletions
This file was deleted.

packages/sdk/browser/contract-tests/adapter/tsconfig.json

Lines changed: 0 additions & 15 deletions
This file was deleted.

packages/sdk/browser/contract-tests/adapter/tsconfig.ref.json

Lines changed: 0 additions & 7 deletions
This file was deleted.

0 commit comments

Comments
 (0)