Skip to content

test(ffe): import canonical feature suites - #8260

Merged
typotter merged 4 commits into
mainfrom
ffe-import-feature-suites
Nov 2, 2026
Merged

typotter merged 4 commits into
mainfrom
ffe-import-feature-suites

Conversation

@typotter

@typotter typotter commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

Motivation

Leo's canonical fixture snapshot import in #8139 established ffe-system-test-data as the source of truth, while the dependent-flags harness from #8190 still carries a copied suite under tests/parametric/test_ffe/dependent-flags. Feature-specific rules-based fixtures should use the same canonical import path without being mixed into the always-on core corpus.

Changes

  • Import evaluation-suites/ alongside the canonical root UFC and evaluation cases, while continuing to exclude precomputed assignments and repository documentation.
  • Validate every imported feature suite and count its cases in the updater output.
  • Refresh the snapshot from DataDog/ffe-system-test-data@c8cc8da239341748dc8c30c2145c0f0b5432c958.
  • Point the separately activated dependent-flags test at ffe-system-test-data/evaluation-suites/dependent-flags and apply the corpus _skip/_include filtering there.
  • Share one result assertion loop between core and feature-suite cases, preserving the existing dependent-flags manifest node.
  • Remove the copied dependent-flags UFC and cases.

This supersedes the fixture/import architecture in #8049. Per-SDK activation and telemetry PRs can now be restacked as small consumers of this harness.

Validation:

  • python3 utils/scripts/update_ffe_fixtures.py --ref c8cc8da239341748dc8c30c2145c0f0b5432c958 — 381 cases loaded; deterministic rerun reported changed: false
  • ./format.sh — passed, including mypy, import policy, Ruff, YAML, shell, parser, and Node checks
  • Python source compilation and direct imported-suite validation — passed
  • No test-the-test coverage was added for the importer.

Workflow

  1. ⚠️ Create your PR as draft ⚠️
  2. Work on you PR until the CI passes
  3. Mark it as ready for review
    • Tests, manifest, weblog are modified -> you'll need a review from system-tests-reviewers: ask to one of youre co-worker familiar with the tested feature.
    • Framework is modified, or non obvious usage of it -> get a review from system-tests-core (slack)

🚀 Once your PR is reviewed and the CI green, you can merge it!

🛟 #apm-shared-testing 🛟

Extend the unified fixture snapshot to include rules-based feature suites and run dependent flags through the shared evaluator harness without maintaining copied fixtures.

Environment: Datadog workspace

Co-Authored-By: Codex GPT-5 <noreply@localhost>
@github-actions

github-actions Bot commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

CODEOWNERS have been resolved as:

tests/parametric/test_ffe/ffe-system-test-data/evaluation-suites/dependent-flags/cases/dependent-flags.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/ffe-system-test-data/SOURCE.md                @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/test_dynamic_evaluation.py                    @DataDog/feature-flagging-and-experimentation-sdk
utils/scripts/update_ffe_fixtures.py                                    @DataDog/feature-flagging-and-experimentation-sdk @DataDog/system-tests-core
tests/parametric/test_ffe/ffe-system-test-data/evaluation-suites/dependent-flags/ufc-config.json  @DataDog/feature-flagging-and-experimentation-sdk
tests/parametric/test_ffe/dependent-flags/cases/dependent-flags.json    @DataDog/feature-flagging-and-experimentation-sdk

@datadog-prod-us1-3

datadog-prod-us1-3 Bot commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

Pipelines  Tests

🎉 All green!

🧪 All tests passed
❄️ No new flaky tests detected

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 3780629 | Docs | View more details | Give us feedback!

Import the latest dependent-flags corpus, preserve required result assertions, and keep importer unit tests out of this harness change.

Environment: Datadog workspace

Co-Authored-By: Codex GPT-5 <noreply@localhost>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Requiring evaluation-suites breaks four existing updater tests whose temporary snapshots lack feature suites, so their fixtures and expected counts and output must be updated to reach the intended assertions.

1 open issue
What changed in this PR

Extends the canonical FFE fixture snapshot to include feature suites while keeping dependent-flags coverage separate from the always-on core tests.

Changes:

  • Import, validate, and count feature-suite cases alongside the core corpus.
  • Refresh the snapshot to c8cc8da with expanded dependent-flags fixtures.
  • Share result assertions and platform filtering while preserving the existing dependent-flags test node.
File Description
utils/​scripts/​update_ffe_fixtures.py Imports and validates feature suites and includes their case counts.
tests/​parametric/​test_ffe/​test_dynamic_evaluation.py Uses canonical dependent-flags fixtures and a shared assertion helper.
tests/​parametric/​test_ffe/​ffe-system-test-data/​SOURCE.md Records the refreshed upstream commit.
tests/​parametric/​test_ffe/​ffe-system-test-data/​evaluation-suites/​dependent-flags/​ufc-config.json Adds configurations for additional dependency scenarios.
tests/​parametric/​test_ffe/​ffe-system-test-data/​evaluation-suites/​dependent-flags/​cases/​dependent-flags.json Imports expanded canonical dependent-flags cases.
tests/​parametric/​test_ffe/​dependent-flags/​cases/​dependent-flags.json Removes the separately maintained case copy.

Review effort: Balanced

Comment thread utils/scripts/update_ffe_fixtures.py Resolved
Keep fixture imports compatible with rules-based corpora that do not yet define optional feature suites.

Environment: Datadog workspace

Co-Authored-By: Codex GPT-5 <noreply@localhost>
@typotter
typotter marked this pull request as ready for review November 2, 2026 17:12
@typotter
typotter requested review from a team as code owners November 2, 2026 17:12
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-02T17:16:39.620430Z 48baa6d Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 48baa6d15a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread utils/scripts/update_ffe_fixtures.py Resolved

@leoromanovsky leoromanovsky left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Review submitted by Codex at @leoromanovsky’s explicit request:

Approved. Please address the fixture-update issue in this thread, so an accepted snapshot cannot remove the dependent-flags suite and break test collection. The thread includes the reproduction and a tested guard that preserves generic root-only validation.

Keep core dynamic evaluation tests collectable when the optional dependent-flags corpus is unavailable.

Environment: Datadog workspace

Co-Authored-By: Codex GPT-5 <noreply@localhost>
@typotter
typotter enabled auto-merge (squash) November 2, 2026 18:11
@typotter
typotter merged commit 10e6bd7 into main Nov 2, 2026
2227 checks passed
@typotter
typotter deleted the ffe-import-feature-suites branch November 2, 2026 19:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants