Skip to content

Commit 51840cb

Browse files
authored
fix(common): preserve team environment name during collection runs (hoppscotch#5578)
1 parent b269dd8 commit 51840cb

File tree

2 files changed

+19
-12
lines changed

2 files changed

+19
-12
lines changed

packages/hoppscotch-common/src/helpers/RequestRunner.ts

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ export type InitialEnvironmentState = {
8787
initialEnvID: string
8888
initialSelectedEnvs: Environment["variables"]
8989
initialEnvironmentIndex: SelectedEnvironmentIndex
90+
initialEnvName: string
9091
initialEnvs: TestResult["envs"] & {
9192
temp: Environment["variables"]
9293
}
@@ -115,6 +116,9 @@ export const captureInitialEnvironmentState = (): InitialEnvironmentState => {
115116
environmentsStore.value.selectedEnvironmentIndex
116117
)
117118

119+
// Capture the initial environment name
120+
const initialEnvName = getCurrentEnvironment().name
121+
118122
// Capture the initial script environment state (the environment passed to scripts)
119123
const initialEnvs = getCombinedEnvVariables()
120124
const initialEnvsForComparison: TestResult["envs"] = {
@@ -127,6 +131,7 @@ export const captureInitialEnvironmentState = (): InitialEnvironmentState => {
127131
initialEnvID,
128132
initialSelectedEnvs,
129133
initialEnvironmentIndex,
134+
initialEnvName,
130135
initialEnvs,
131136
initialEnvsForComparison,
132137
}
@@ -489,6 +494,7 @@ export function runRESTRequest$(
489494
initialEnvID,
490495
initialSelectedEnvs,
491496
initialEnvironmentIndex,
497+
initialEnvName,
492498
initialEnvs,
493499
initialEnvsForComparison,
494500
} = captureInitialEnvironmentState()
@@ -610,6 +616,7 @@ export function runRESTRequest$(
610616
updateEnvsAfterTestScript(
611617
combinedResult,
612618
initialEnvironmentIndex,
619+
initialEnvName,
613620
initialEnvID
614621
)
615622
}
@@ -666,6 +673,7 @@ export function runRESTRequest$(
666673
function updateEnvsAfterTestScript(
667674
runResult: E.Right<SandboxTestResult>,
668675
initialEnvironmentIndex: SelectedEnvironmentIndex,
676+
initialEnvName: string,
669677
initialEnvID?: string
670678
) {
671679
const globalEnvVariables = updateEnvironments(
@@ -696,14 +704,14 @@ function updateEnvsAfterTestScript(
696704
variables: selectedEnvVariables,
697705
})
698706
} else if (initialEnvironmentIndex.type === "TEAM_ENV") {
699-
const env = getEnvironment({
700-
type: "TEAM_ENV",
701-
})
707+
// Use the initial environment name to avoid issues when environment changes during request execution
708+
// adding a fallback to current environment name just in case so it's not null
709+
const envName = initialEnvName ?? getCurrentEnvironment().name
702710
pipe(
703711
updateTeamEnvironment(
704712
JSON.stringify(selectedEnvVariables),
705713
initialEnvironmentIndex.teamEnvID,
706-
env.name
714+
envName
707715
)
708716
)()
709717
}
@@ -801,6 +809,7 @@ export function runTestRunnerRequest(
801809
initialEnvID,
802810
initialSelectedEnvs,
803811
initialEnvironmentIndex,
812+
initialEnvName,
804813
initialEnvs,
805814
initialEnvsForComparison,
806815
} = initialEnvironmentState
@@ -897,6 +906,7 @@ export function runTestRunnerRequest(
897906
updateEnvsAfterTestScript(
898907
postRequestScriptResult,
899908
initialEnvironmentIndex,
909+
initialEnvName,
900910
initialEnvID
901911
)
902912
}

packages/hoppscotch-common/src/services/test-runner/test-runner.service.ts

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import { cloneDeep } from "lodash-es"
1010
import { Ref } from "vue"
1111
import {
1212
captureInitialEnvironmentState,
13-
InitialEnvironmentState,
1413
runTestRunnerRequest,
1514
} from "~/helpers/RequestRunner"
1615
import {
@@ -182,17 +181,13 @@ export class TestRunnerService extends Service {
182181
headers: [...inheritedHeaders, ...request.headers],
183182
}
184183

185-
// Capture the initial environment state for a test run so that it remains consistent and unchanged when current environment changes
186-
const initialEnvironmentState = captureInitialEnvironmentState()
187-
188184
await this.runTestRequest(
189185
tab,
190186
finalRequest,
191187
collection,
192188
options,
193189
currentPath,
194-
inheritedVariables,
195-
initialEnvironmentState
190+
inheritedVariables
196191
)
197192

198193
if (options.delay && options.delay > 0) {
@@ -283,8 +278,7 @@ export class TestRunnerService extends Service {
283278
collection: HoppCollection,
284279
options: TestRunnerOptions,
285280
path: number[],
286-
inheritedVariables: HoppCollectionVariable[] = [],
287-
initialEnvironmentState: InitialEnvironmentState
281+
inheritedVariables: HoppCollectionVariable[] = []
288282
) {
289283
if (options.stopRef?.value) {
290284
throw new Error("Test execution stopped")
@@ -297,6 +291,9 @@ export class TestRunnerService extends Service {
297291
error: undefined,
298292
})
299293

294+
// Capture the initial environment state for a test run so that it remains consistent and unchanged when current environment changes
295+
const initialEnvironmentState = captureInitialEnvironmentState()
296+
300297
const results = await runTestRunnerRequest(
301298
request,
302299
options.keepVariableValues,

0 commit comments

Comments
 (0)