[package] name = "jacquard-e2e" description = "Opt-in full-stack e2e harness for Jacquard against private local PDS fixtures" edition.workspace = true version = "0.0.0" publish = false license.workspace = true [dependencies] jacquard-common = { path = "../jacquard-common" } jacquard-identity = { path = "../jacquard-identity" } jacquard-lexicon = { path = "../jacquard-lexicon" } jacquard-oauth = { path = "../jacquard-oauth" } jacquard-repo = { path = "../jacquard-repo" } http = "1" thiserror = { workspace = true } tokio-rustls = { version = "0.26", default-features = false, features = ["aws-lc-rs", "logging"], optional = true } base64 = { workspace = true, optional = true } sha2 = { version = "0.10", optional = true } k256 = { workspace = true, default-features = false, features = ["ecdsa"], optional = true } bs58 = { version = "0.5", features = ["std"], optional = true } p256 = { workspace = true, default-features = false, features = ["ecdsa"], optional = true } jose-jwk = { workspace = true, features = ["p256"], optional = true } [features] # No default features: e2e scenario targets are strictly opt-in and must never # appear in ordinary `cargo nextest run` (AC.1). default = [] e2e = [ "dep:jacquard", "dep:jacquard-api", "dep:jacquard-axum", "dep:jacquard-codegen-tests", "dep:tokio-rustls", "dep:base64", "dep:sha2", "dep:k256", "dep:bs58", "dep:p256", "dep:jose-jwk", "dep:axum", "dep:axum-extra", "dep:tower", "dep:tokio", "dep:reqwest", "dep:n0-future", "dep:serde", "dep:serde_json", "dep:serde_html_form", "dep:tracing", "jacquard/api_bluesky", ] # Provider features select provider-specific scenario targets; the lifecycle # controller passes exactly the selected provider's feature so those targets # never run against the other provider. tranquil = [] reference = [] jetstream = [ "e2e", "jacquard/streaming", "jacquard/zstd", "jacquard-common/websocket", ] [dependencies.jacquard] path = "../jacquard" optional = true [dependencies.jacquard-api] path = "../jacquard-api" optional = true [dependencies.jacquard-axum] path = "../jacquard-axum" optional = true [dependencies.jacquard-codegen-tests] path = "../jacquard-codegen-tests" optional = true [dependencies.axum] version = "0.8.6" optional = true [dependencies.axum-extra] version = "0.12.6" features = ["cookie", "cookie-private"] optional = true [dependencies.tower] version = "0.5" features = ["util"] optional = true [dependencies.tokio] workspace = true default-features = false features = ["rt-multi-thread", "macros", "net", "time", "sync"] optional = true [dependencies.reqwest] workspace = true default-features = false features = ["rustls", "json", "cookies", "stream"] optional = true [dependencies.n0-future] workspace = true optional = true [dependencies.serde] workspace = true optional = true [dependencies.serde_json] workspace = true optional = true [dependencies.serde_html_form] workspace = true optional = true [dependencies.tracing] workspace = true optional = true [[test]] name = "scenarios" path = "tests/scenarios/main.rs" required-features = ["e2e"] [[test]] name = "spaces_reference" path = "tests/scenarios/spaces_reference.rs" required-features = ["e2e", "reference"] [[test]] name = "tranquil_oauth" path = "tests/scenarios/tranquil_oauth.rs" required-features = ["e2e", "tranquil"] [[test]] name = "resolver_probe" path = "tests/scenarios/resolver_probe.rs" required-features = ["e2e"] [[test]] name = "jetstream_replay" path = "tests/scenarios/jetstream_replay.rs" required-features = ["jetstream"] [[test]] name = "axum_generated" path = "tests/scenarios/axum_generated.rs" required-features = ["e2e"] [[bin]] name = "ingress" path = "src/bin/ingress.rs" required-features = ["e2e"] [lints.rust] dead_code = "allow"