Repository navigation
ci: Run the Flagsmith SDK behavioural spec - #109
Conversation
|
@themis-blindfold review |
|
@themis-blindfold review |
⚖️ Themis review: ✅ Ship itThe adapter correctly maps the supported environment and identity-with-traits flows onto the SDK singleton, and the completed behavioural-spec, macOS, and lint checks all passed. This adds useful cross-SDK compatibility coverage without changing the released SDK surface.
📝 Walkthrough
🧪 How to verify
Product take: A solid confidence improvement: future SDK changes are checked against shared behavioural scenarios, with no user-facing SDK change in this PR. 🧭 Assumptions & unverified claimsNo unverified assumptions or claims. A small adapter, now keeping the SDK honest on every trip through CI · reviewed at 32e58eb |
32e58eb to
df5b8ac
Compare
df5b8ac to
f551b42
Compare
|
@themis-blindfold review |
⚖️ Themis review: ✅ Ship itThe Swift behavioural-spec harness, Docker build, and reusable workflow are coherently wired to the SDK's existing environment and identity flag APIs. The captured CI run passed the spec job alongside macOS and lint checks.
📝 Walkthrough
🧪 How to verify
Product take: A solid compatibility safeguard: it exercises real SDK-to-server flag evaluation paths before changes merge. Its scope is currently narrow, but it establishes a useful path for broader cross-SDK coverage. 🧭 Assumptions & unverified claimsA fresh local Swift/Docker harness build was not run because those tools are unavailable in this checkout; the captured CI run completed the spec job successfully. The new harness has its sea legs, even if the local toolbox did not · reviewed at f551b42 |
f551b42 to
d623443
Compare
|
@themis-blindfold review |
⚖️ Themis review: ✅ Ship itThe behavioural-spec workflow, lint, and macOS checks all completed successfully. The harness configures the existing singleton before each serially executed step and covers the currently supported environment-flag and identity-with-traits flows.
📝 Walkthrough
🧪 How to verify
Product take: A solid developer-confidence improvement: it continuously checks two core SDK behaviours against a real Flagsmith instance. It is not user-facing, but it reduces regression risk on a compatibility boundary. 🧭 Assumptions & unverified claimsNo unverified assumptions or claims. A small harness with a rather healthy appetite for regressions · reviewed at d623443 |
24db8e2 to
03b064b
Compare
03b064b to
3d0c6cd
Compare
Runs the Flagsmith SDK behavioural spec against this SDK on every pull request and push to
main.sdk-spec/steps.swift: the steps the spec drives:Create the SDK clientand one function perWhenstep in the spec'sfeatures/.sdk-spec/Package.swiftmakes it a library depending on the SDK by path, andsdk-spec/Dockerfilebuilds the SDK from source with it under the spec's Swift harness, on Linux (swift:6.1-noble). No SDK changes were needed: it already builds on Linux..github/workflows/sdk-spec.yml: calls the spec's reusable workflow, pinned tov0.4.0(the first release with the Swift harness, feat: Add a Swift harness sdk-spec#5), withlanguage: swift. The workflow starts a real Flagsmith instance, seeds it through the Admin API and runs the scenarios through the steps file.renovate.json: lets Renovate bump theuses:ref andspec-reftogether. Its regex manager updatesspec-ref, Renovate's built-in GitHub Actions manager updates the reusable workflow ref inuses:, and theSDK specgroup puts both in one PR.The spec currently covers getting environment flags and getting identity flags with traits.
Notes for review:
Flagsmith.sharedsingleton, so a spec client is the environment key and API URL applied to it before each call. The harness runs one step at a time, so calls never interleave. Analytics, realtime updates and caching are left at their defaults (off, except analytics, which only recordshasFeatureFlag/getValueForFeaturecalls).