Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions packages/engine/src/config.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,36 @@ describe("resolveConfig", () => {
expect(config.disableGpu).toBe(false);
});

describe("forceScreenshot / BeginFrame env compatibility", () => {
it("disables BeginFrame when PRODUCER_ENABLE_BEGIN_FRAME is falsey", () => {
setEnv("PRODUCER_ENABLE_BEGIN_FRAME", "false");
for (const v of ["false", "off", "0", "FALSE"]) {
process.env.PRODUCER_ENABLE_BEGIN_FRAME = v;
expect(resolveConfig().forceScreenshot).toBe(true);
}
});

it("keeps BeginFrame eligible when PRODUCER_ENABLE_BEGIN_FRAME is truthy or invalid", () => {
setEnv("PRODUCER_ENABLE_BEGIN_FRAME", "true");
for (const v of ["true", "on", "1", "maybe"]) {
process.env.PRODUCER_ENABLE_BEGIN_FRAME = v;
expect(resolveConfig().forceScreenshot).toBe(false);
}
});

it("preserves PRODUCER_FORCE_SCREENSHOT as the direct force-screenshot knob", () => {
setEnv("PRODUCER_FORCE_SCREENSHOT", "true");
setEnv("PRODUCER_ENABLE_BEGIN_FRAME", "true");

expect(resolveConfig().forceScreenshot).toBe(true);
});

it("lets explicit overrides beat both env knobs", () => {
setEnv("PRODUCER_ENABLE_BEGIN_FRAME", "false");
expect(resolveConfig({ forceScreenshot: false }).forceScreenshot).toBe(false);
});
});

it("reads browser GPU mode from env", () => {
setEnv("PRODUCER_BROWSER_GPU_MODE", "hardware");

Expand Down
9 changes: 8 additions & 1 deletion packages/engine/src/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,10 @@ export function resolveConfig(overrides?: Partial<EngineConfig>): EngineConfig {
if (raw === undefined) return fallback;
return raw === "true";
};
const envFalse = (key: string): boolean => {
const raw = env(key)?.trim().toLowerCase();
return raw === "false" || raw === "off" || raw === "0";
};
const envVp9CpuUsed = (): number => {
const raw = env("PRODUCER_VP9_CPU_USED");
if (raw === undefined || raw === "") return DEFAULT_CONFIG.vp9CpuUsed;
Expand All @@ -306,6 +310,9 @@ export function resolveConfig(overrides?: Partial<EngineConfig>): EngineConfig {
const raw = env("HF_STATIC_DEDUP")?.trim().toLowerCase();
return !(raw === "false" || raw === "off" || raw === "0");
};
const resolveForceScreenshot = (): boolean =>
envBool("PRODUCER_FORCE_SCREENSHOT", DEFAULT_CONFIG.forceScreenshot) ||
envFalse("PRODUCER_ENABLE_BEGIN_FRAME");

// Env-var layer (backward compat)
const fromEnv: Partial<EngineConfig> = {
Expand All @@ -330,7 +337,7 @@ export function resolveConfig(overrides?: Partial<EngineConfig>): EngineConfig {
? Number(env("PRODUCER_EXPECTED_CHROMIUM_MAJOR"))
: undefined,

forceScreenshot: envBool("PRODUCER_FORCE_SCREENSHOT", DEFAULT_CONFIG.forceScreenshot),
forceScreenshot: resolveForceScreenshot(),
staticFrameDedup: resolveStaticFrameDedup(),
lowMemoryMode: resolveLowMemoryMode(),
enablePageSideCompositing: envBool(
Expand Down
Loading