diff --git a/packages/bruno-electron/src/ipc/network/index.js b/packages/bruno-electron/src/ipc/network/index.js index 3adb5ea88..506fbfa3c 100644 --- a/packages/bruno-electron/src/ipc/network/index.js +++ b/packages/bruno-electron/src/ipc/network/index.js @@ -331,15 +331,17 @@ const fetchGqlSchemaHandler = async (event, endpoint, environment, _request, col const folderVars = resolvedRequest.folderVariables; const requestVariables = resolvedRequest.requestVariables; const collectionVariables = resolvedRequest.collectionVariables; + const runtimeVars = collection.runtimeVariables; - // Precedence: globalEnvironmentVars < collectionVariables < envVars < folderVars < requestVariables + // Precedence: runtimeVars > requestVariables > folderVars > envVars > collectionVariables > globalEnvironmentVars const resolvedVars = merge( {}, globalEnvironmentVars, collectionVariables, envVars, folderVars, - requestVariables + requestVariables, + runtimeVars ); const collectionRoot = get(collection, 'root', {}); diff --git a/packages/bruno-electron/tests/network/fetch-gql-schema-handler.spec.js b/packages/bruno-electron/tests/network/fetch-gql-schema-handler.spec.js index fdfff7b89..8831ba48b 100644 --- a/packages/bruno-electron/tests/network/fetch-gql-schema-handler.spec.js +++ b/packages/bruno-electron/tests/network/fetch-gql-schema-handler.spec.js @@ -15,7 +15,7 @@ jest.mock('../../src/ipc/network/prepare-gql-introspection-request', () => { }); }); -describe('fetchGqlSchemaHandler', () => { +describe('fetchGqlSchemaHandler - variable precedence', () => { beforeEach(() => { jest.clearAllMocks(); }); @@ -311,6 +311,61 @@ describe('fetchGqlSchemaHandler', () => { collection.root ); }); + + it('should override request variables with runtime variables', async () => { + const endpoint = 'https://example.com/'; + const environment = { + variables: [] + }; + + const request = { + uid: 'test-request', + vars: { + req: [ + { name: 'SHARED_VAR', value: 'request-value', enabled: true } + ] + } + }; + + const collection = { + uid: 'test-collection', + pathname: '/test', + runtimeVariables: { + SHARED_VAR: 'runtime-value' + }, + items: [ + { + uid: 'test-request', + request: { + vars: { + req: [ + { name: 'SHARED_VAR', value: 'request-value', enabled: true } + ] + } + } + } + ], + root: { + request: { + headers: [], + vars: { + req: [] // No collection variables + } + } + } + }; + + await fetchGqlSchemaHandler(null, endpoint, environment, request, collection); + + expect(prepareGqlIntrospectionRequest).toHaveBeenCalledWith( + endpoint, + expect.objectContaining({ + SHARED_VAR: 'runtime-value' + }), + request, + collection.root + ); + }) });