diff --git a/packages/bruno-electron/src/ipc/network/index.js b/packages/bruno-electron/src/ipc/network/index.js index cf6abc36f..82e0f3b7c 100644 --- a/packages/bruno-electron/src/ipc/network/index.js +++ b/packages/bruno-electron/src/ipc/network/index.js @@ -275,6 +275,12 @@ const registerNetworkIpc = (mainWindow) => { // interpolate variables inside request interpolateVars(request, envVars, collectionVariables, processEnvVars); + // if this is a graphql request, parse the variables, only after interpolation + // https://github.com/usebruno/bruno/issues/884 + if (request.mode === 'graphql') { + request.data.variables = JSON.parse(request.data.variables); + } + // stringify the request url encoded params if (request.headers['content-type'] === 'application/x-www-form-urlencoded') { request.data = qs.stringify(request.data); diff --git a/packages/bruno-electron/src/ipc/network/prepare-request.js b/packages/bruno-electron/src/ipc/network/prepare-request.js index c5ec95640..d481e8509 100644 --- a/packages/bruno-electron/src/ipc/network/prepare-request.js +++ b/packages/bruno-electron/src/ipc/network/prepare-request.js @@ -101,6 +101,7 @@ const prepareRequest = (request, collectionRoot) => { }); let axiosRequest = { + mode: request.body.mode, method: request.method, url, headers, @@ -170,7 +171,8 @@ const prepareRequest = (request, collectionRoot) => { if (request.body.mode === 'graphql') { const graphqlQuery = { query: get(request, 'body.graphql.query'), - variables: JSON.parse(decomment(get(request, 'body.graphql.variables') || '{}')) + // https://github.com/usebruno/bruno/issues/884 - we must only parse the variables after the variable interpolation + variables: decomment(get(request, 'body.graphql.variables') || '{}') }; if (!contentTypeDefined) { axiosRequest.headers['content-type'] = 'application/json';