(r *SessionRunner, step *TStep)
| 247 | } |
| 248 | |
| 249 | func runStepWebSocket(r *SessionRunner, step *TStep) (stepResult *StepResult, err error) { |
| 250 | stepResult = &StepResult{ |
| 251 | Name: step.Name, |
| 252 | StepType: stepTypeWebSocket, |
| 253 | Success: false, |
| 254 | ContentSize: 0, |
| 255 | } |
| 256 | |
| 257 | // merge step variables with session variables |
| 258 | stepVariables, err := r.ParseStepVariables(step.Variables) |
| 259 | if err != nil { |
| 260 | err = errors.Wrap(err, "parse step variables failed") |
| 261 | return |
| 262 | } |
| 263 | |
| 264 | defer func() { |
| 265 | // update testcase summary |
| 266 | if err != nil { |
| 267 | stepResult.Attachments = err.Error() |
| 268 | } |
| 269 | }() |
| 270 | |
| 271 | sessionData := newSessionData() |
| 272 | parser := r.caseRunner.parser |
| 273 | config := r.caseRunner.parsedConfig |
| 274 | |
| 275 | dummyReq := &Request{ |
| 276 | URL: step.WebSocket.URL, |
| 277 | Params: step.WebSocket.Params, |
| 278 | Headers: step.WebSocket.Headers, |
| 279 | } |
| 280 | rb := newRequestBuilder(parser, config, dummyReq) |
| 281 | |
| 282 | err = rb.prepareUrlParams(stepVariables) |
| 283 | if err != nil { |
| 284 | return |
| 285 | } |
| 286 | |
| 287 | err = rb.prepareHeaders(stepVariables) |
| 288 | if err != nil { |
| 289 | return |
| 290 | } |
| 291 | parsedURL := rb.req.URL.String() |
| 292 | parsedHeader := rb.req.Header |
| 293 | |
| 294 | // add request object to step variables, could be used in setup hooks |
| 295 | stepVariables["hrp_step_name"] = step.Name |
| 296 | stepVariables["hrp_step_request"] = rb.requestMap |
| 297 | |
| 298 | // deal with setup hooks |
| 299 | for _, setupHook := range step.SetupHooks { |
| 300 | _, err = parser.Parse(setupHook, stepVariables) |
| 301 | if err != nil { |
| 302 | return stepResult, errors.Wrap(err, "run setup hooks failed") |
| 303 | } |
| 304 | } |
| 305 | |
| 306 | var resp interface{} |
no test coverage detected