Skip to content

Commit 844719d

Browse files
committed
Isolate reversews CI tests
1 parent cc29459 commit 844719d

6 files changed

Lines changed: 34 additions & 60 deletions

File tree

.github/workflows/test.yml

Lines changed: 33 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ jobs:
4242
run: |
4343
case "${{ matrix.client }}" in
4444
js)
45-
xvfb-run -a pnpm exec vitest run \
45+
pnpm exec vitest run \
4646
$(find js/test -name 'test.*.ts' \
4747
! -name 'test.ModCDPClient.ts' \
4848
! -name 'test.NatsUpstreamTransport.ts' \
@@ -52,7 +52,7 @@ jobs:
5252
;;
5353
python)
5454
cd python
55-
xvfb-run -a uv run python -m unittest \
55+
uv run python -m unittest \
5656
$(find tests -name 'test_*.py' \
5757
! -name 'test_ModCDPClient.py' \
5858
! -name 'test_NatsUpstreamTransport.py' \
@@ -61,7 +61,7 @@ jobs:
6161
;;
6262
go)
6363
cd go
64-
xvfb-run -a go test -count=1 -p 1 \
64+
go test -count=1 -p 1 \
6565
./modcdp \
6666
./modcdp/injector \
6767
./modcdp/launcher \
@@ -122,15 +122,15 @@ jobs:
122122
run: |
123123
case "${{ matrix.client }}" in
124124
js)
125-
xvfb-run -a node dist/js/examples/demo.js --${{ matrix.mode }} --upstream=${{ matrix.upstream }}
125+
node dist/js/examples/demo.js --${{ matrix.mode }} --upstream=${{ matrix.upstream }}
126126
;;
127127
python)
128128
cd python
129-
xvfb-run -a uv run python examples/demo.py --${{ matrix.mode }} --upstream=${{ matrix.upstream }}
129+
uv run python examples/demo.py --${{ matrix.mode }} --upstream=${{ matrix.upstream }}
130130
;;
131131
go)
132132
cd go
133-
xvfb-run -a go run ./examples/demo --${{ matrix.mode }} --upstream=${{ matrix.upstream }}
133+
go run ./examples/demo --${{ matrix.mode }} --upstream=${{ matrix.upstream }}
134134
;;
135135
*)
136136
echo "unknown client: ${{ matrix.client }}" >&2
@@ -164,25 +164,41 @@ jobs:
164164
cache-dependency-path: go/go.sum
165165
- run: pnpm install --frozen-lockfile
166166
- run: pnpm run build
167-
- name: Run JS serialized connector tests
167+
- name: Run JS serialized non-reverse connector tests
168168
run: |
169-
xvfb-run -a pnpm exec vitest run \
169+
pnpm exec vitest run \
170170
js/test/test.ModCDPClient.ts \
171171
js/test/test.NatsUpstreamTransport.ts \
172+
js/test/test.proxy.ts \
173+
--testNamePattern "^(?!.*reversews).*" \
174+
--fileParallelism=false --maxWorkers=1
175+
- name: Run JS serialized reversews tests
176+
run: |
177+
pnpm exec vitest run \
172178
js/test/test.ReverseWebSocketUpstreamTransport.ts \
173179
js/test/test.proxy.ts \
180+
--testNamePattern "reversews" \
174181
--fileParallelism=false --maxWorkers=1
175-
- name: Run Python serialized connector tests
182+
- name: Run Python serialized non-reverse connector tests
176183
run: |
177184
cd python
178-
xvfb-run -a uv run python -m unittest \
185+
uv run python -m unittest \
179186
tests.test_ModCDPClient \
180-
tests.test_NatsUpstreamTransport \
187+
tests.test_NatsUpstreamTransport
188+
- name: Run Python serialized reversews tests
189+
run: |
190+
cd python
191+
uv run python -m unittest \
181192
tests.test_ReverseWebSocketUpstreamTransport
182-
- name: Run Go serialized connector tests
193+
- name: Run Go serialized non-reverse connector tests
194+
run: |
195+
cd go
196+
go test -count=1 -p 1 ./modcdp/client
197+
go test -count=1 -p 1 ./modcdp/transport -run 'Test(UpstreamTransport|WebSocketUpstreamTransport|PipeUpstreamTransport|NativeMessagingUpstreamTransport|NatsUpstreamTransport)'
198+
- name: Run Go serialized reversews tests
183199
run: |
184200
cd go
185-
xvfb-run -a go test -count=1 -p 1 ./modcdp/client ./modcdp/transport
201+
go test -count=1 -p 1 ./modcdp/transport -run 'TestReverseWebSocketUpstreamTransport'
186202
187203
serialized-reversews-demo:
188204
name: serialized reversews demos
@@ -213,12 +229,12 @@ jobs:
213229
- name: Run reversews demos serially
214230
run: |
215231
for mode in loopback debugger; do
216-
xvfb-run -a node dist/js/examples/demo.js --"$mode" --upstream=reversews
232+
node dist/js/examples/demo.js --"$mode" --upstream=reversews
217233
cd python
218-
xvfb-run -a uv run python examples/demo.py --"$mode" --upstream=reversews
234+
uv run python examples/demo.py --"$mode" --upstream=reversews
219235
cd ..
220236
cd go
221-
xvfb-run -a go run ./examples/demo --"$mode" --upstream=reversews
237+
go run ./examples/demo --"$mode" --upstream=reversews
222238
cd ..
223239
done
224240
@@ -247,4 +263,4 @@ jobs:
247263
cache: pnpm
248264
- run: pnpm install --frozen-lockfile
249265
- run: pnpm run build
250-
- run: xvfb-run -a ${{ matrix.command }}
266+
- run: ${{ matrix.command }}

extension/src/service_worker.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,7 @@ const configuredClient = (params: unknown, session_id?: string | null) => {
7777
client: configure?.client ?? {},
7878
server: configure?.server ?? {},
7979
};
80-
if (client.downstream_transport === "reversews") {
81-
bridge.stopNativeBridge?.("reverse downstream connected");
82-
} else if (bridge.reverseBridgeActive?.() !== true) {
80+
if (client.downstream_transport !== "reversews") {
8381
bridge.stopReverseBridge?.("non-reverse downstream connected");
8482
}
8583
return client;
@@ -180,7 +178,6 @@ if (bridge) {
180178
["startReverseBridge", "reverse"],
181179
["stopReverseBridge", "reverse"],
182180
["startNativeBridge", "native"],
183-
["stopNativeBridge", "native"],
184181
["startNatsBridge", "nats"],
185182
]) {
186183
const start = bridge[method]?.bind(bridge);

go/modcdp/injector/extension.zip

-572 Bytes
Binary file not shown.

js/src/server/ModCDPServer.ts

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -466,28 +466,6 @@ export function installModCDPServer(
466466
return { upstream_reversews_url, stopped: true, reason };
467467
}
468468

469-
function reverseBridgeActive() {
470-
return (
471-
reverseBridgeSocket?.readyState === WebSocket.OPEN ||
472-
reverseBridgeSocket?.readyState === WebSocket.CONNECTING
473-
);
474-
}
475-
476-
function stopNativeBridge(reason = "stopped") {
477-
const upstream_nativemessaging_host_name = nativeBridgeHostName;
478-
nativeBridgeHostName = null;
479-
if (nativeBridgeReconnectTimer) {
480-
clearTimeout(nativeBridgeReconnectTimer);
481-
nativeBridgeReconnectTimer = null;
482-
}
483-
const port = nativeBridgePort;
484-
nativeBridgePort = null;
485-
ModCDPServer.native_bridge_connected = false;
486-
ModCDPServer.native_bridge_last_error = reason;
487-
port?.disconnect?.();
488-
return { upstream_nativemessaging_host_name, stopped: true, reason };
489-
}
490-
491469
function scheduleNativeBridgeReconnect(delayMs: number) {
492470
if (!nativeBridgeHostName) return;
493471
if (nativeBridgeReconnectTimer) return;
@@ -639,7 +617,6 @@ export function installModCDPServer(
639617
const ws = new WebSocket(endpoint);
640618
reverseBridgeSocket = ws;
641619
ws.addEventListener("open", () => {
642-
stopNativeBridge("reverse bridge connected");
643620
startOffscreenKeepAlive();
644621
ws.send(
645622
JSON.stringify({
@@ -656,12 +633,10 @@ export function installModCDPServer(
656633
ws.addEventListener("error", () => {
657634
if (reverseBridgeSocket === ws) reverseBridgeSocket = null;
658635
scheduleReverseBridgeReconnect(reverseBridgeReconnectIntervalMs);
659-
if (nativeBridgeHostName) connectNativeBridge(nativeBridgeHostName);
660636
});
661637
ws.addEventListener("close", () => {
662638
if (reverseBridgeSocket === ws) reverseBridgeSocket = null;
663639
scheduleReverseBridgeReconnect(reverseBridgeReconnectIntervalMs);
664-
if (nativeBridgeHostName) connectNativeBridge(nativeBridgeHostName);
665640
});
666641
return { upstream_reversews_url: endpoint, connected: false };
667642
}
@@ -676,17 +651,6 @@ export function installModCDPServer(
676651
reason: "native_messaging_unavailable",
677652
};
678653
}
679-
if (
680-
reverseBridgeUrl &&
681-
(reverseBridgeSocket?.readyState === WebSocket.OPEN ||
682-
reverseBridgeSocket?.readyState === WebSocket.CONNECTING)
683-
) {
684-
return {
685-
upstream_nativemessaging_host_name: hostName,
686-
connected: false,
687-
reason: "reverse_bridge_active",
688-
};
689-
}
690654
if (nativeBridgePort)
691655
return { upstream_nativemessaging_host_name: hostName, connected: true };
692656
try {
@@ -1246,8 +1210,6 @@ export function installModCDPServer(
12461210
};
12471211
},
12481212
stopReverseBridge,
1249-
reverseBridgeActive,
1250-
stopNativeBridge,
12511213
startNativeBridge(
12521214
hostName = DEFAULT_NATIVE_BRIDGE_HOST_NAME,
12531215
{

python/modcdp/extension.zip

-572 Bytes
Binary file not shown.

python/tests/test_ReverseWebSocketUpstreamTransport.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,6 @@ def test_accepts_real_extension_reverse_connection_and_routes_cdp_through_chrome
147147
"launcher_mode": "local",
148148
"launcher_options": {
149149
"headless": sys.platform.startswith("linux") and not os.environ.get("DISPLAY"),
150-
"sandbox": not sys.platform.startswith("linux"),
151150
# Reversews is browser -> client only. After explicit CHROME_PATH and
152151
# CI /usr/bin/chromium, these tests use Chrome for Testing because
153152
# Canary rejects --load-extension in this local test path.

0 commit comments

Comments
 (0)