diff --git a/packages/rum-core/src/domain/configuration/configuration.spec.ts b/packages/rum-core/src/domain/configuration/configuration.spec.ts index aaf057d736..248274c504 100644 --- a/packages/rum-core/src/domain/configuration/configuration.spec.ts +++ b/packages/rum-core/src/domain/configuration/configuration.spec.ts @@ -826,7 +826,6 @@ describe('serializeRumConfiguration', () => { trackLongTasks: true, remoteConfigurationId: '123', remoteConfiguration: { id: '123', sync: false }, - remoteConfigurationProxy: 'config', plugins: [{ name: 'foo', getConfigurationTelemetry: () => ({ bar: true }) }], trackFeatureFlagsForEvents: ['vital'], profilingSampleRate: 42, @@ -840,7 +839,6 @@ describe('serializeRumConfiguration', () => { | 'workerUrl' | 'allowedTracingUrls' | 'excludedActivityUrls' - | 'remoteConfigurationProxy' | 'allowedGraphQlUrls' ? `use_${CamelToSnakeCase}` : Key extends 'trackLongTasks' @@ -884,7 +882,6 @@ describe('serializeRumConfiguration', () => { plugins: [{ name: 'foo', bar: true }], track_feature_flags_for_events: ['vital'], remote_configuration_id: '123', - use_remote_configuration_proxy: true, profiling_sample_rate: 42, track_resource_headers: 'default_headers', }) diff --git a/packages/rum-core/src/domain/configuration/configuration.ts b/packages/rum-core/src/domain/configuration/configuration.ts index 7897f74963..63075fdf96 100644 --- a/packages/rum-core/src/domain/configuration/configuration.ts +++ b/packages/rum-core/src/domain/configuration/configuration.ts @@ -158,13 +158,6 @@ export interface RumInitConfiguration extends InitConfiguration { */ remoteConfiguration?: { id: string; sync?: boolean; required?: boolean } | undefined - /** - * [Internal option] set a proxy URL for the remote configuration - * - * @internal - */ - remoteConfigurationProxy?: string | undefined - // tracing options /** * A list of request URLs used to inject tracing headers. @@ -683,7 +676,6 @@ export function serializeRumConfiguration(configuration: RumInitConfiguration) { track_feature_flags_for_events: configuration.trackFeatureFlagsForEvents, remote_configuration_id: getRemoteConfigurationId(configuration), profiling_sample_rate: configuration.profilingSampleRate, - use_remote_configuration_proxy: !!configuration.remoteConfigurationProxy, track_resource_headers: getTrackResourceHeadersTelemetryValue(configuration.trackResourceHeaders), ...baseSerializedConfiguration, } satisfies RawTelemetryConfiguration diff --git a/packages/rum-core/src/domain/configuration/remoteConfiguration.spec.ts b/packages/rum-core/src/domain/configuration/remoteConfiguration.spec.ts index e70792ce11..5afb4efe1b 100644 --- a/packages/rum-core/src/domain/configuration/remoteConfiguration.spec.ts +++ b/packages/rum-core/src/domain/configuration/remoteConfiguration.spec.ts @@ -747,8 +747,13 @@ describe('remoteConfiguration', () => { ) }) - it('should return the remote configuration proxy', () => { - expect(buildEndpoint({ remoteConfigurationProxy: '/config' } as RumInitConfiguration)).toEqual('/config') + it('should use the proxy when configured', () => { + const remoteConfigurationId = '0e008b1b-8600-4709-9d1d-f4edcfdf5587' + expect( + buildEndpoint({ proxy: 'https://proxy.io/config', remoteConfigurationId } as RumInitConfiguration) + ).toEqual( + `https://proxy.io/config?ddforward=${encodeURIComponent(`/v1/${remoteConfigurationId}.json`)}&ddforwardSubdomain=sdk-configuration` + ) }) }) diff --git a/packages/rum-core/src/domain/configuration/remoteConfiguration.ts b/packages/rum-core/src/domain/configuration/remoteConfiguration.ts index 57cbe3dd25..b01b2592d7 100644 --- a/packages/rum-core/src/domain/configuration/remoteConfiguration.ts +++ b/packages/rum-core/src/domain/configuration/remoteConfiguration.ts @@ -317,11 +317,9 @@ export function getRemoteConfigurationId(configuration: RumInitConfiguration): s } export function buildEndpoint(configuration: RumInitConfiguration) { - if (configuration.remoteConfigurationProxy) { - return configuration.remoteConfigurationProxy - } const id = getRemoteConfigurationId(configuration)! return buildEndpointUrl({ + proxy: configuration.proxy, site: configuration.site, path: `/${REMOTE_CONFIGURATION_VERSION}/${encodeURIComponent(id)}.json`, subdomain: 'sdk-configuration', diff --git a/test/e2e/lib/framework/createTest.ts b/test/e2e/lib/framework/createTest.ts index 69e63a8648..ae11746c94 100644 --- a/test/e2e/lib/framework/createTest.ts +++ b/test/e2e/lib/framework/createTest.ts @@ -417,7 +417,7 @@ function declareTest(title: string, setupOptions: SetupOptions, factory: SetupFa const browserLogs = new BrowserLogsManager() const testContext = createTestContext(servers, page, context, browserLogs, browserName, baseUrl.href) - servers.intake.bindServerApp(createIntakeServerApp(testContext.intakeRegistry)) + servers.intake.bindServerApp(createIntakeServerApp(testContext.intakeRegistry, setupOptions.remoteConfiguration)) const setup = factory(setupOptions, servers) servers.base.bindServerApp(createMockServerApp(servers, setup, setupOptions)) diff --git a/test/e2e/lib/framework/pageSetups.ts b/test/e2e/lib/framework/pageSetups.ts index e64c41e5ff..413f6155af 100644 --- a/test/e2e/lib/framework/pageSetups.ts +++ b/test/e2e/lib/framework/pageSetups.ts @@ -391,7 +391,6 @@ export function formatConfiguration( { ...initConfiguration, proxy: servers.intake.origin, - remoteConfigurationProxy: `${servers.base.origin}/config`, }, (_key, value) => { if (isJsonIncompatibleValue(value)) { diff --git a/test/e2e/lib/framework/serverApps/intake.ts b/test/e2e/lib/framework/serverApps/intake.ts index 53c646491b..cd8d6b92b4 100644 --- a/test/e2e/lib/framework/serverApps/intake.ts +++ b/test/e2e/lib/framework/serverApps/intake.ts @@ -1,9 +1,10 @@ import express from 'express' import cors from 'cors' +import type { RemoteConfiguration } from '@datadog/browser-rum-core' import { createIntakeProxyMiddleware } from '../intakeProxyMiddleware.ts' import type { IntakeRegistry } from '../intakeRegistry' -export function createIntakeServerApp(intakeRegistry: IntakeRegistry) { +export function createIntakeServerApp(intakeRegistry: IntakeRegistry, remoteConfiguration?: RemoteConfiguration) { const app = express() let debuggerProbes: object[] = [] @@ -11,11 +12,14 @@ export function createIntakeServerApp(intakeRegistry: IntakeRegistry) { app.post('/', createIntakeProxyMiddleware({ onRequest: (request) => intakeRegistry.push(request) })) - // Quota admission check — always admit in the test environment. - // Triggered via proxy-as-string with ddforwardSubdomain=quota. app.get('/', (req, res) => { + // Quota admission check — always admit in the test environment. + // Triggered via proxy-as-string with ddforwardSubdomain=quota. if (req.query.ddforwardSubdomain === 'quota') { res.json({ data: { id: 'test', type: 'profiling-quota', attributes: { admitted: true, reason: 'quota_ok' } } }) + } else if (req.query.ddforwardSubdomain === 'sdk-configuration') { + // Remote configuration fetch — proxied via ddforwardSubdomain=sdk-configuration. + res.send(JSON.stringify(remoteConfiguration)) } else { res.status(404).end() } diff --git a/test/e2e/lib/framework/serverApps/mock.ts b/test/e2e/lib/framework/serverApps/mock.ts index d45758749b..4cc26ad511 100644 --- a/test/e2e/lib/framework/serverApps/mock.ts +++ b/test/e2e/lib/framework/serverApps/mock.ts @@ -12,7 +12,7 @@ import { workerSetup } from '../pageSetups' export const LARGE_RESPONSE_MIN_BYTE_SIZE = 100_000 export function createMockServerApp(servers: Servers, setup: string, setupOptions?: SetupOptions): MockServerApp { - const { remoteConfiguration, worker } = setupOptions ?? {} + const { worker } = setupOptions ?? {} const app = express() let largeResponseBytesWritten = 0 @@ -227,10 +227,6 @@ export function createMockServerApp(servers: Servers, setup: string, setupOption res.sendFile(getTestAppBundlePath('microfrontend', filePath)) }) - app.get('/config', (_req, res) => { - res.send(JSON.stringify(remoteConfiguration)) - }) - return Object.assign(app, { getLargeResponseWroteSize() { return largeResponseBytesWritten