Skip to content

Commit 268f8c2

Browse files
committed
add more firefox caps/prefs
Signed-off-by: Andrei Gherghescu <[email protected]>
1 parent 2eb41ff commit 268f8c2

File tree

1 file changed

+27
-2
lines changed

1 file changed

+27
-2
lines changed

plotly_static/src/lib.rs

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -338,8 +338,11 @@ fn chrome_default_caps() -> Vec<&'static str> {
338338
#[cfg(feature = "geckodriver")]
339339
fn firefox_default_caps() -> Vec<&'static str> {
340340
vec![
341-
"-headless", // Essential for headless operation (single dash for Firefox)
342-
"--no-remote", // Prevents connecting to existing Firefox instances
341+
"-headless", // Essential for headless operation (single dash for Firefox)
342+
"--no-remote", // Prevents connecting to existing Firefox instances
343+
"--disable-gpu", // Disable GPU hardware acceleration
344+
"--disable-software-rasterizer", // Disable software rasterizer
345+
"--disable-dev-shm-usage", // Disable /dev/shm usage (common in CI)
343346
]
344347
}
345348

@@ -1101,6 +1104,28 @@ impl StaticExporter {
11011104
debug!("Added Firefox binary capability: {firefox_path}");
11021105
}
11031106

1107+
// Add Firefox-specific preferences for CI environments (when prefs are needed)
1108+
#[cfg(feature = "geckodriver")]
1109+
{
1110+
let mut prefs = JsonMap::new();
1111+
// Force software rendering and enable WebGL in headless mode
1112+
prefs.insert(
1113+
"layers.acceleration.disabled".to_string(),
1114+
serde_json::json!(true),
1115+
);
1116+
prefs.insert("gfx.webrender.all".to_string(), serde_json::json!(false));
1117+
prefs.insert(
1118+
"gfx.webrender.software".to_string(),
1119+
serde_json::json!(true),
1120+
);
1121+
prefs.insert("webgl.disabled".to_string(), serde_json::json!(false));
1122+
prefs.insert("webgl.force-enabled".to_string(), serde_json::json!(true));
1123+
prefs.insert("webgl.enable-webgl2".to_string(), serde_json::json!(true));
1124+
1125+
browser_opts.insert("prefs".to_string(), serde_json::json!(prefs));
1126+
debug!("Added Firefox preferences for CI compatibility");
1127+
}
1128+
11041129
caps.insert(
11051130
"browserName".to_string(),
11061131
serde_json::json!(get_browser_name()),

0 commit comments

Comments
 (0)