test: exercise FDv2 and FDv1 fallback via the v3 contract tests#315
Merged
Conversation
5d0e2f1 to
55ea665
Compare
0a9b5dd to
dd322f6
Compare
55ea665 to
89be93f
Compare
89be93f to
8b829bb
Compare
Wire the Flutter contract test service for the v3 (FDv2) harness and run it in CI: - Advertise the fdv1-fallback capability. - Map the data system configuration onto LDConfig.dataSystem, including the fdv1Fallback polling config. - Regenerate the service API model for the dataSystem schema. - Add an FDv2 contract-tests run to the shared CI action (the v3 harness, branch v3) alongside the existing FDv1 run; it restarts the test service since the FDv1 run stops it at the end. The v3 harness passes end-to-end against this (816 total, 792 ran).
8b829bb to
c2aaa43
Compare
joker23
approved these changes
Jun 29, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #314 (the Flutter FDv2 exposure). Wires the Flutter contract test service for the v3 (FDv2) harness and runs it in CI, so the data system — including FDv1 fallback — is exercised end-to-end.
Changes
fdv1-fallbackcapability; map the harnessdataSystemconfiguration ontoLDConfig.dataSystem(including thefdv1Fallbackpolling config); regenerate the service API model (service_api.openapi.*) for thedataSystemschema..github/actions/ci/action.yml): add an FDv2 contract-tests run (thelaunchdarkly/gh-actions/actions/contract-testsaction withversion: v3,branch: v3) alongside the existing FDv1 run. Because the FDv1 run stops the test service at the end, the FDv2 step restarts it. Modeled on cpp-sdks'contract-tests-fdv2job.Validation
The v3 harness passes end-to-end against this service: 816 total / 792 ran / 24 skipped, exit 0 (run locally against this branch on merged main), including the full FDv1 fallback suite. Contract service analyzes clean.
Notes for review
The CI YAML can't be run locally, so a couple of assumptions to sanity-check:
contract-tests@contract-tests-v1.3.0action supportsversion: v3/branch: v3(cpp uses the same action with v3).testharness-suppressions.txt(the v3 run passes with it; cpp keeps a separate*-fdv2.txt— we can split if preferred).Note
Low Risk
Changes are limited to CI and the contract-test adapter; production SDK behavior is exercised indirectly via harness mapping, with no auth or customer-facing API changes in this diff.
Overview
Adds FDv2 contract test coverage in shared CI alongside the existing FDv1 run: the FDv1 step is labeled explicitly, then a second pass restarts the Flutter contract test service and invokes
contract-testswithversion/branchv3 (same suppressions file).The Flutter contract test service is extended for the v3 harness: it advertises
fdv1-fallback(and related) capabilities, accepts adataSystemblock on client creation (OpenAPI + codegen), and_mapDataSystemtranslates harness shapes (connection mode overrides, initializers/synchronizers,fdv1Fallback) intoLDConfig.dataSystemand initial connection mode. Smaller harness fixes include omitting null evaluationvaluekeys, stricter context casts, andTimeout.noneon the long-running test server.pubspec.lockbumps pinned local SDK packages used by the contract app.Reviewed by Cursor Bugbot for commit db18961. Bugbot is set up for automated code reviews on this repo. Configure here.