{"record":{"id":"f6db1c41ac134c23","repo":"grafana/k6","slug":"scenario-s-doesn-t-have-a-specified-executor-ty","errorCode":null,"errorMessage":"scenario '%s' doesn't have a specified executor type","messagePattern":"scenario '(.+?)' doesn't have a specified executor type","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"lib/executors.go","lineNumber":184,"sourceCode":"\tif len(data) == 0 {\n\t\treturn nil\n\t}\n\n\tif len(data) == 4 && string(data) == \"null\" {\n\t\treturn nil\n\t}\n\n\t// TODO: use a more sophisticated combination of dec.Token() and dec.More(),\n\t// which would allow us to support both arrays and maps for this config?\n\tvar protoConfigs map[string]protoExecutorConfig\n\tif err := StrictJSONUnmarshal(data, &protoConfigs); err != nil {\n\t\treturn err\n\t}\n\n\tresult := make(ScenarioConfigs, len(protoConfigs))\n\tfor k, v := range protoConfigs {\n\t\tif v.executorType == \"\" {\n\t\t\treturn fmt.Errorf(\"scenario '%s' doesn't have a specified executor type\", k)\n\t\t}\n\t\tconfig, err := GetParsedExecutorConfig(k, v.executorType, v.rawJSON)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tresult[k] = config\n\t}\n\n\t*scs = result\n\n\treturn nil\n}\n\n// Validate checks if all of the specified executor options make sense\nfunc (scs ScenarioConfigs) Validate() (errors []error) {\n\tfor name, exec := range scs {\n\t\tif execErr := exec.Validate(); len(execErr) != 0 {\n\t\t\terrors = append(errors,","sourceCodeStart":166,"sourceCodeEnd":202,"githubUrl":"https://github.com/grafana/k6/blob/01ffac6f245854c1b8adc6a69857c76a15f90022/lib/executors.go#L166-L202","documentation":"Raised while unmarshalling the scenarios/options JSON: a scenario entry exists but has no executor field, so k6 cannot determine which executor (load profile) to instantiate for it.","triggerScenarios":"Thrown at lib/executors.go:184 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Add an executor property (e.g. \"constant-vus\", \"shared-iterations\") to the named scenario","Remove the incomplete scenario entry if it is not needed"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"01ffac6f245854c1b8adc6a69857c76a15f90022","analyzedAt":"2026-08-18T03:05:52.393Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}