grafana/k6 · error

scenario '%s' doesn't have a specified executor type

Error message

scenario '%s' doesn't have a specified executor type

What it means

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.

Source

Thrown at lib/executors.go:184

	if len(data) == 0 {
		return nil
	}

	if len(data) == 4 && string(data) == "null" {
		return nil
	}

	// TODO: use a more sophisticated combination of dec.Token() and dec.More(),
	// which would allow us to support both arrays and maps for this config?
	var protoConfigs map[string]protoExecutorConfig
	if err := StrictJSONUnmarshal(data, &protoConfigs); err != nil {
		return err
	}

	result := make(ScenarioConfigs, len(protoConfigs))
	for k, v := range protoConfigs {
		if v.executorType == "" {
			return fmt.Errorf("scenario '%s' doesn't have a specified executor type", k)
		}
		config, err := GetParsedExecutorConfig(k, v.executorType, v.rawJSON)
		if err != nil {
			return err
		}
		result[k] = config
	}

	*scs = result

	return nil
}

// Validate checks if all of the specified executor options make sense
func (scs ScenarioConfigs) Validate() (errors []error) {
	for name, exec := range scs {
		if execErr := exec.Validate(); len(execErr) != 0 {
			errors = append(errors,

View on GitHub (pinned to 01ffac6f24)

Solutions

  1. Add an executor property (e.g. "constant-vus", "shared-iterations") to the named scenario
  2. Remove the incomplete scenario entry if it is not needed
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at lib/executors.go:184 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of grafana/k6@01ffac6f24 (2026-08-18). Data as JSON: /api/errors/f6db1c41ac134c23. Report an issue: GitHub.