Skip to content

Extension

Extends chutney actions by adding yours:

Template🔗

package my.custom.package

import com.chutneytesting.action.spi.Action;
import com.chutneytesting.action.spi.injectable.Input;
import com.chutneytesting.action.spi.injectable.Logger;

public class CustomAction implements Action {

    private final Logger logger;
    private final String parameter;

    public CustomAction(Logger logger,
                        @Input("parameter") String parameter) {
        this.logger = logger;
        this.parameter = parameter;
    }

    @Override
    public ActionExecutionResult execute() {
        logger.info("My custom action");
        return ActionExecutionResult.ok();
    }

    @Override
    public List<String> validateInputs() {
        return Action.super.validateInputs();
    }
}
package my.custom.package

import com.chutneytesting.action.spi.Action;
import com.chutneytesting.action.spi.injectable.Input;
import com.chutneytesting.action.spi.injectable.Logger;
import com.chutneytesting.action.spi.injectable.Target

public class CustomAction2 implements Action {

    private final Target target;
    private final Logger logger;
    private final String parameter;

    public CustomAction(Target target,
                        Logger logger,
                        @Input("parameter") String parameter) {
        this.target = target;
        this.logger = logger;
        this.parameter = parameter;
    }

    @Override
    public ActionExecutionResult execute() {
        logger.info("My custom action");
        if (parameter.equals("parameter_value")) {
            String outputObject = "output value";
            return ActionExecutionResult.ok(Map.of("outputKey", outputObject));
        } else {
            logger.error("parameter is not valid !");
            return ActionExecutionResult.ko();
        }
    }

    @Override
    public List<String> validateInputs() {
        return Action.super.validateInputs();
    }
}

Packaging configuration🔗

create file chutney.actions in resources/META-INF/extension with custom actions full class name

my.custom.package.CustomAction1
my.custom.package.CustomAction2

Examples🔗

1
2
3
CustomAction(
    parameter = "parameter_value"
)
1
2
3
4
CustomAction2(
    target = "CUSTOM_TARGET",
    parameter = "some value",
)