diff --git a/hrp/session.go b/hrp/session.go index e11a2958..b752ccea 100644 --- a/hrp/session.go +++ b/hrp/session.go @@ -57,6 +57,7 @@ func (r *SessionRunner) Start(givenVars map[string]interface{}) error { // run step in sequential order for _, step := range r.testCase.TestSteps { + // TODO: parse step // parse step name parsedName, err := r.parser.ParseString(step.Name(), r.sessionVariables) if err != nil { @@ -66,6 +67,12 @@ func (r *SessionRunner) Start(givenVars map[string]interface{}) error { log.Info().Str("step", stepName). Str("type", string(step.Type())).Msg("run step start") + // merge step variables with session variables + step.Struct().Variables, err = r.mergeStepVariables(step.Struct().Variables) + if err != nil { + return errors.Wrap(err, "merge step variables with session variables failed") + } + // run step stepResult, err := step.Run(r) stepResult.Name = stepName @@ -120,8 +127,8 @@ func (r *SessionRunner) Start(givenVars map[string]interface{}) error { return nil } -// MergeStepVariables merges step variables with config variables and session variables -func (r *SessionRunner) MergeStepVariables(vars map[string]interface{}) (map[string]interface{}, error) { +// mergeStepVariables merges step variables with config variables and session variables +func (r *SessionRunner) mergeStepVariables(vars map[string]interface{}) (map[string]interface{}, error) { // override variables // step variables > session variables (extracted variables from previous steps) overrideVars := mergeVariables(vars, r.sessionVariables) diff --git a/hrp/step_mobile_ui.go b/hrp/step_mobile_ui.go index 585d5fa2..cb44af82 100644 --- a/hrp/step_mobile_ui.go +++ b/hrp/step_mobile_ui.go @@ -554,12 +554,7 @@ func runStepMobileUI(s *SessionRunner, step *TStep) (stepResult *StepResult, err ContentSize: 0, } screenshots := make([]string, 0) - - // override step variables - stepVariables, err := s.MergeStepVariables(step.Variables) - if err != nil { - return - } + stepVariables := step.Variables var osType string var mobileStep *MobileStep diff --git a/hrp/step_request.go b/hrp/step_request.go index 7aed3f13..b86ddabd 100644 --- a/hrp/step_request.go +++ b/hrp/step_request.go @@ -291,6 +291,7 @@ func runStepRequest(r *SessionRunner, step *TStep) (stepResult *StepResult, err Success: false, ContentSize: 0, } + stepVariables := step.Variables defer func() { // update testcase summary @@ -299,12 +300,6 @@ func runStepRequest(r *SessionRunner, step *TStep) (stepResult *StepResult, err } }() - // override step variables - stepVariables, err := r.MergeStepVariables(step.Variables) - if err != nil { - return - } - err = prepareUpload(r.parser, step, stepVariables) if err != nil { return diff --git a/hrp/step_testcase.go b/hrp/step_testcase.go index e0c7a346..a581a289 100644 --- a/hrp/step_testcase.go +++ b/hrp/step_testcase.go @@ -51,6 +51,7 @@ func (s *StepTestCaseWithOptionalArgs) Run(r *SessionRunner) (stepResult *StepRe StepType: stepTypeTestCase, Success: false, } + stepVariables := s.step.Variables defer func() { // update testcase summary @@ -59,11 +60,6 @@ func (s *StepTestCaseWithOptionalArgs) Run(r *SessionRunner) (stepResult *StepRe } }() - stepVariables, err := r.MergeStepVariables(s.step.Variables) - if err != nil { - return stepResult, err - } - stepTestCase := s.step.TestCase.(*TestCase) // copy testcase to avoid data racing diff --git a/hrp/step_websocket.go b/hrp/step_websocket.go index c953a1ce..0beb2147 100644 --- a/hrp/step_websocket.go +++ b/hrp/step_websocket.go @@ -254,6 +254,7 @@ func runStepWebSocket(r *SessionRunner, step *TStep) (stepResult *StepResult, er Success: false, ContentSize: 0, } + stepVariables := step.Variables defer func() { // update testcase summary @@ -262,12 +263,6 @@ func runStepWebSocket(r *SessionRunner, step *TStep) (stepResult *StepResult, er } }() - // override step variables - stepVariables, err := r.MergeStepVariables(step.Variables) - if err != nil { - return - } - sessionData := newSessionData() parser := r.parser config := r.parsedConfig