diff --git a/e2e/README.md b/e2e/README.md index 32d576cd6af..1c016a24402 100644 --- a/e2e/README.md +++ b/e2e/README.md @@ -80,6 +80,8 @@ make e2e-test entrypoint=TestInterchainAccountsTestSuite test=TestMsgSubmitTx_Su If `jq` is installed, you only need to specify the `test`. +If `fzf` is also installed, you only need to run `make e2e-test` and you will be prompted with interactive test selection. + ```sh make e2e-test test=TestMsgSubmitTx_SuccessfulTransfer ``` diff --git a/e2e/scripts/run-e2e.sh b/e2e/scripts/run-e2e.sh index 1d3f51c74ef..1328b1d8f88 100755 --- a/e2e/scripts/run-e2e.sh +++ b/e2e/scripts/run-e2e.sh @@ -5,6 +5,26 @@ set -eo pipefail TEST="${1}" ENTRY_POINT="${2:-}" +# _get_test returns the test that should be used in the e2e test. If an argument is provided, that argument +# is returned. Otherwise, fzf is used to interactively choose from all available tests. +function _get_test(){ + if [ -n "$1" ]; then + echo "$1" + return + # if fzf and jq are installed, we can use them to provide an interactive mechanism to select from all available tests. + elif command -v fzf > /dev/null && command -v jq > /dev/null; then + cd .. + go run -mod=readonly cmd/build_test_matrix/main.go | jq -r '.include[] | .test' | fzf + cd - > /dev/null + else + echo "TEST was not provided and both fzf and jq are not present. Unable to determine which test should be used." + exit 1 + fi +} + +# if test is set, that is used directly, otherwise the test can be interactively provided if fzf is installed. +TEST="$(_get_test ${TEST})" + # if jq is installed, we can automatically determine the test entrypoint. if command -v jq > /dev/null; then cd ..