Skip to content

test(ffe): enable Node.js agentless configuration#7355

Draft
leoromanovsky wants to merge 4 commits into
mainfrom
leo.romanovsky/ffl-2697-enable-nodejs-agentless-configuration
Draft

test(ffe): enable Node.js agentless configuration#7355
leoromanovsky wants to merge 4 commits into
mainfrom
leo.romanovsky/ffl-2697-enable-nodejs-agentless-configuration

Conversation

@leoromanovsky

@leoromanovsky leoromanovsky commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Motivation

DataDog/dd-trace-js#9397 adds the Node.js agentless Feature Flagging configuration source and is targeted for v6.5.0 through DataDog/dd-trace-js#9414. The shared configuration-source contract is already on main; Node.js now needs its manifest activation and updated default Remote Configuration capability expectation.

The contract also provides the cross-repository motivation for DataDog/dd-trace-js#9468: local and controlled custom agentless endpoints must be reachable, missing authentication must be observable, and unsupported source values must fail without contacting either delivery surface.

Changes

  • Enable tests/parametric/test_ffe/test_configuration_sources.py for Node.js starting with v6.5.0.
  • Stop expecting the FFE Remote Configuration capability in the default Node.js capability set from v6.5.0 onward.
  • Keep provider startup errors inside the Node.js parametric controller /ffe/start response so negative source tests can assert startup failure and zero CDN or Remote Configuration traffic.

Decisions

  • Use an explicit v6.5.0 manifest gate rather than enabling the suite for older Node.js tracer versions.
  • Preserve the default capability expectation for >=5.72.0 <6.5.0; from v6.5.0, capability 46 and the FFE_FLAGS product are registered only when Feature Flags explicitly selects remote_config, which the existing configuration-source contract validates.
  • Treat unsupported provider-source exceptions as a failed start response rather than allowing the parametric process to terminate before the shared assertions run.

@github-actions

github-actions Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

CODEOWNERS have been resolved as:

manifests/nodejs.yml                                                    @DataDog/dd-trace-js
tests/parametric/capabilities.yml                                       @DataDog/system-tests-core @DataDog/apm-sdk-capabilities
utils/build/docker/nodejs/parametric/server.js                          @DataDog/dd-trace-js @DataDog/system-tests-core

@datadog-datadog-us1-prod

datadog-datadog-us1-prod Bot commented Jul 21, 2026

Copy link
Copy Markdown

Pipelines  Tests

⚠️ Warnings

🚦 3 Pipeline jobs failed

Testing the test | System Tests (nodejs, dev) / parametric / parametric (2)   View in Datadog   GitHub Actions

🧪 2 Tests failed

tests.parametric.test_ffe.test_configuration_sources.Test_Feature_Flag_Configuration_Source_Selection.test_invalid_configuration_source_fails_closed[library_env0, parametric-nodejs] from system_tests_suite   View in Datadog
AssertionError: unexpected mock FFE agentless backend request: status={&#39;requests_total&#39;: 1, &#39;in_flight&#39;: 0, &#39;max_in_flight&#39;: 1, &#39;last_path&#39;: &#39;/api/v2/feature-flagging/config/rules-based/server&#39;, &#39;last_if_none_match&#39;: None, &#39;last_auth_present&#39;: False, &#39;last_status_code&#39;: 200, &#39;status_codes&#39;: [200]}
assert 1 == 0

self = &lt;tests.parametric.test_ffe.test_configuration_sources.Test_Feature_Flag_Configuration_Source_Selection object at 0x7f16527e8c80&gt;
test_agent = &lt;utils.docker_fixtures._test_agent.TestAgentAPI object at 0x7f1651b323f0&gt;
test_library = &lt;utils.docker_fixtures._test_clients._test_client_parametric.ParametricTestClientApi object at 0x7f1651d15010&gt;
mock_ffe_agentless_backend = &lt;utils.docker_fixtures._mock_ffe_agentless_backend.MockFFEAgentlessBackendServer object at 0x7f1651b55a90&gt;

    @parametrize(&#34;library_env&#34;, [{&#34;configuration_source&#34;: &#34;invalid&#34;, &#34;response&#34;: &#34;valid&#34;}], indirect=True)
    def test_invalid_configuration_source_fails_closed(
...
tests.parametric.test_ffe.test_configuration_sources.Test_Feature_Flag_Configuration_Source_Selection.test_reserved_offline_configuration_source_fails_closed[library_env0, parametric-nodejs] from system_tests_suite   View in Datadog
AssertionError: unexpected mock FFE agentless backend request: status={&#39;requests_total&#39;: 1, &#39;in_flight&#39;: 0, &#39;max_in_flight&#39;: 1, &#39;last_path&#39;: &#39;/api/v2/feature-flagging/config/rules-based/server&#39;, &#39;last_if_none_match&#39;: None, &#39;last_auth_present&#39;: False, &#39;last_status_code&#39;: 200, &#39;status_codes&#39;: [200]}
assert 1 == 0

self = &lt;tests.parametric.test_ffe.test_configuration_sources.Test_Feature_Flag_Configuration_Source_Selection object at 0x7f16527e8f80&gt;
test_agent = &lt;utils.docker_fixtures._test_agent.TestAgentAPI object at 0x7f1651b323f0&gt;
test_library = &lt;utils.docker_fixtures._test_clients._test_client_parametric.ParametricTestClientApi object at 0x7f1651736000&gt;
mock_ffe_agentless_backend = &lt;utils.docker_fixtures._mock_ffe_agentless_backend.MockFFEAgentlessBackendServer object at 0x7f1651b54890&gt;

    @parametrize(&#34;library_env&#34;, [{&#34;configuration_source&#34;: &#34;offline&#34;, &#34;response&#34;: &#34;valid&#34;}], indirect=True)
    def test_reserved_offline_configuration_source_fails_closed(
...

Testing the test | System Tests (nodejs, prod) / parametric / parametric (1)   View in Datadog   GitHub Actions

🧪 16 Tests failed

tests.parametric.test_dynamic_configuration.TestDynamicConfigTracingEnabled.test_default_capability_completeness[library_env0, parametric-nodejs] from system_tests_suite   View in Datadog
AssertionError: seen_but_not_expected_capabilities={&lt;Capabilities.FFE_FLAG_CONFIGURATION_RULES: 46&gt;}; Update capabilities.yml to fix this.

self = &lt;tests.parametric.test_dynamic_configuration.TestDynamicConfigTracingEnabled object at 0x7f20686e98b0&gt;
test_agent = &lt;utils.docker_fixtures._test_agent.TestAgentAPI object at 0x7f203542a270&gt;
test_library = &lt;utils.docker_fixtures._test_clients._test_client_parametric.ParametricTestClientApi object at 0x7f203557c6b0&gt;

    @parametrize(&#34;library_env&#34;, [{**DEFAULT_ENVVARS}])
    def test_default_capability_completeness(self, test_agent: TestAgentAPI, test_library: APMLibrary) -&gt; None:
        &#34;&#34;&#34;Ensure the RC request contains the expected default capabilities per language.
    
...
tests.parametric.test_ffe.test_configuration_sources.Test_Feature_Flag_Configuration_Source_Cold_Failure_And_Recovery.test_bad_to_good_cold_recovery[server-error-to-valid, parametric-nodejs] from system_tests_suite   View in Datadog
AssertionError: failed to start FFE provider for bad_to_good
assert False
 &#43;  where False = &lt;bound method ParametricTestClientApi.ffe_start of &lt;utils.docker_fixtures._test_clients._test_client_parametric.ParametricTestClientApi object at 0x7fc54967ef30&gt;&gt;()
 &#43;    where &lt;bound method ParametricTestClientApi.ffe_start of &lt;utils.docker_fixtures._test_clients._test_client_parametric.ParametricTestClientApi object at 0x7fc54967ef30&gt;&gt; = &lt;utils.docker_fixtures._test_clients._test_client_parametric.ParametricTestClientApi object at 0x7fc54967ef30&gt;.ffe_start

self = &lt;tests.parametric.test_ffe.test_configuration_sources.Test_Feature_Flag_Configuration_Source_Cold_Failure_And_Recovery object at 0x7fc5791b89b0&gt;
test_library = &lt;utils.docker_fixtures._test_clients._test_client_parametric.ParametricTestClientApi object at 0x7fc54967ef30&gt;
mock_ffe_agentless_backend = &lt;utils.docker_fixtures._mock_ffe_agentless_backend.MockFFEAgentlessBackendServer object at 0x7fc549079880&gt;
expected_status_codes = [500, 200]

...
View all failed tests

Testing the test | all-jobs-are-green   View in Datadog   GitHub Actions

ℹ️ Info

No other issues found (see more)

❄️ No new flaky tests detected

Useful? React with 👍 / 👎

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: e7d60b1 | Docs | Datadog PR Page | Give us feedback!

@leoromanovsky
leoromanovsky force-pushed the leo.romanovsky/ffl-2697-enable-nodejs-agentless-configuration branch from 42fb2f7 to 81f8aaf Compare July 21, 2026 22:30
@leoromanovsky
leoromanovsky changed the base branch from leo.romanovsky/ffe-frame-agentless-mock-responses to main July 21, 2026 22:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant