fix(rust): take fantoccini without default features to drop OpenSSL from consumers - #78
Conversation
Adding .gitkeep for PR creation (default mode). This file will be removed when the task is complete. Issue: #77
fantoccini's default feature set is native-tls, which pulls openssl-sys into the dependency tree of every consumer and breaks the build on images that have a Rust toolchain but no pkg-config or OpenSSL headers. - depend on fantoccini with default-features = false, features = [rustls-tls] - re-expose the system TLS stack as an opt-in native-tls feature - add a manifest regression test and an OpenSSL-free CI job that builds inside a stock rust:slim-bookworm container with no apt-get step Fixes #77
fantoccini is taken with default features, which forces OpenSSL on every consumer
Working session summaryDone. PR #78 is ready for review, all CI green: #78 Root cause. Fix.
Verified.
Regression coverage.
Two things worth flagging: the WebDriver integration tests ( This summary was automatically extracted from the AI working session output. |
🤖 Solution Draft LogThis log file contains the complete execution trace of the AI solution draft process. 💰 Cost: $2.133385📊 Context and tokens usage:
Total: (95 new + 51.9K cache writes + 2.4M cache reads) input tokens, 16.5K output tokens, $2.133385 cost 🤖 Models used:
📎 Log file uploaded as Gist (1328KB)Now working session is ended, feel free to review and add any feedback on the solution draft. |
🎉 Auto-mergedThis pull request has been automatically merged by hive-mind.
Auto-merged by hive-mind with --auto-merge flag |
Summary
browser-commandertookfantocciniwith default features, andfantoccini's default isnative-tls = ["hyper-tls", "openssl"]. Every consumer therefore inheritedopenssl-sys, and the crate stopped building on any image that has a Rust toolchain but nopkg-configand no OpenSSL headers.Fixes #77.
Change
plus an opt-in escape hatch for consumers that want the system TLS stack:
chromiumoxidewas already taken without a TLS stack, so nothing else needed to change.Reproduction (before the fix)
Verification (after the fix)
cargo tree -i openssl-sys→error: package ID specification 'openssl-sys' did not match any packages(empty for a default-feature build).apt-getstep:cargo test --all-features→ 166 + 16 tests pass, 0 failures.cargo fmt --checkandcargo clippy --all-targets --all-featuresclean.Automated tests
rust/tests/dependency_features.rs— 4 manifest regression tests assertingdefault-features = false,rustls-tlsselected,native-tlsnot enabled by default, and thenative-tlsopt-in feature still present. These fail on the pre-fix manifest.no-opensslCI job in.github/workflows/rust.yml: builds insiderust:slim-bookwormwith noapt-get installstep and fails ifcargo tree -i openssl-sysmatches anything.Notes
The WebDriver integration tests (
connect_smoke,real_browser_*) are#[ignore]d without a live WebDriver/browser endpoint, so the "HTTPS endpoint under rustls" acceptance item is covered by the compile-and-link check plus the existing suite rather than by a live HTTPS run in this environment.A
minorchangelog fragment is included (rust/changelog.d/77.fantoccini-rustls.md) to trigger the release, since the new feature flag and the TLS backend switch are consumer-visible.