Skip to content

Commit d9d3dcc

Browse files
committed
fix: headed
1 parent 5c3fa87 commit d9d3dcc

File tree

4 files changed

+16
-4
lines changed

4 files changed

+16
-4
lines changed

packages/browser/src/mcp-server.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { z } from "zod/v4";
55
import { Config, Effect, Layer, Option, Schema, ServiceMap } from "effect";
66
import { BrowserJson } from "@expect/cookies";
77
import type { ConsoleLog, NetworkRequest } from "@expect/shared/models";
8-
import { EXPECT_BROWSER_PROFILE_ENV_NAME } from "./mcp/constants";
8+
import { EXPECT_BROWSER_PROFILE_ENV_NAME, EXPECT_HEADED_ENV_NAME } from "./mcp/constants";
99

1010
import { Playwright, PlaywrightSession } from "./playwright";
1111
import { Artifacts } from "./artifacts";
@@ -90,6 +90,10 @@ export const layerMcpServer = Layer.effectDiscard(
9090
onSome: (json) => decodeBrowserProfile(json).pipe(Effect.map(Option.some), Effect.orDie),
9191
});
9292

93+
const forceHeaded = yield* Config.boolean(EXPECT_HEADED_ENV_NAME).pipe(
94+
Config.withDefault(false),
95+
);
96+
9397
const server = new McpServer({ name: "expect", version: "0.0.1" });
9498

9599
let lastSnapshot: SnapshotResult | undefined;
@@ -132,7 +136,7 @@ export const layerMcpServer = Layer.effectDiscard(
132136
}
133137

134138
yield* pw.open({
135-
headless: !headed,
139+
headless: forceHeaded ? false : !headed,
136140
browserOverride,
137141
browserProfile,
138142
initialNavigation: Option.some({
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
export const EXPECT_REPLAY_OUTPUT_ENV_NAME = "EXPECT_REPLAY_OUTPUT_PATH";
22
export const EXPECT_BROWSER_PROFILE_ENV_NAME = "EXPECT_BROWSER_PROFILE";
33
export const EXPECT_CDP_URL_ENV_NAME = "EXPECT_CDP_URL";
4+
export const EXPECT_HEADED_ENV_NAME = "EXPECT_HEADED";
45
export const LIVE_VIEW_PAGE_POLL_INTERVAL_MS = 500;
56
export const DUPLICATE_REQUEST_WINDOW_MS = 500;

packages/browser/src/mcp/index.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
11
export { layerMcpServer, McpTransport } from "../mcp-server";
2-
export { EXPECT_BROWSER_PROFILE_ENV_NAME, EXPECT_REPLAY_OUTPUT_ENV_NAME } from "./constants";
2+
export {
3+
EXPECT_BROWSER_PROFILE_ENV_NAME,
4+
EXPECT_HEADED_ENV_NAME,
5+
EXPECT_REPLAY_OUTPUT_ENV_NAME,
6+
} from "./constants";
37
export type { ViewerRunState, ViewerStepEvent } from "./viewer-events";

packages/supervisor/src/executor.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import {
3131
import * as NodeServices from "@effect/platform-node/NodeServices";
3232
import { Git } from "./git/git";
3333
import { BrowserJson, type Browser } from "@expect/cookies";
34-
import { EXPECT_BROWSER_PROFILE_ENV_NAME } from "@expect/browser/mcp";
34+
import { EXPECT_BROWSER_PROFILE_ENV_NAME, EXPECT_HEADED_ENV_NAME } from "@expect/browser/mcp";
3535
import {
3636
ALL_STEPS_TERMINAL_GRACE_MS,
3737
EXECUTION_CONTEXT_FILE_LIMIT,
@@ -187,6 +187,9 @@ export class Executor extends ServiceMap.Service<Executor>()("@supervisor/Execut
187187
});
188188

189189
const mcpEnv: Array<{ name: string; value: string }> = [];
190+
if (!options.isHeadless) {
191+
mcpEnv.push({ name: EXPECT_HEADED_ENV_NAME, value: "true" });
192+
}
190193
if (options.cookieImportProfiles.length > 0) {
191194
const profileJson = yield* encodeBrowserProfile(options.cookieImportProfiles[0]).pipe(
192195
Effect.orDie,

0 commit comments

Comments
 (0)