mirror of
https://github.com/trezor/trezor-suite.git
synced 2026-03-03 05:55:03 +01:00
172 lines
4.4 KiB
Bash
Executable File
172 lines
4.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# This script runs @trezor/connect tests.
|
|
# It spins up trezor-user-env and sets required environment variables.
|
|
|
|
set -euo pipefail
|
|
|
|
# Running standalone instance of trezor-user-env
|
|
# docker run -it -e SDL_VIDEODRIVER="dummy" -p "9001:9001" -p "21326:21326" -p "21325:21326" ghcr.io/trezor/trezor-user-env:latest
|
|
|
|
# Tweaking trezor-user-env locally
|
|
# docker run -it -e SDL_VIDEODRIVER="dummy" -p "9001:9001" -p "21326:21326" -p "21325:21326" ghcr.io/trezor/trezor-user-env:latest nix-shell
|
|
# do your changes using `vi` and run:
|
|
# [nix-shell:/trezor-user-env]# ./run.sh
|
|
|
|
# Ports
|
|
# 9001 - websocket server, communication test case > user-env (setup etc...)
|
|
# 21326 - trezord proxy. because of trezord CORS check
|
|
# 21325 - original trezord port redirected to trezor-user-env proxy
|
|
|
|
ENVIRONMENT=$1
|
|
|
|
if [[ "$ENVIRONMENT" != "web" && "$ENVIRONMENT" != "node" ]]; then
|
|
echo "either 'web' or 'node' must be specified as the first argument"
|
|
exit 1
|
|
fi
|
|
|
|
show_usage() {
|
|
echo "Usage: run [OPTIONS] [ARGS]"
|
|
echo ""
|
|
echo "Options:"
|
|
echo " -c Disable backend cache. default: enabled"
|
|
echo " -d Disable docker. Useful when running own instance of trezor-user-env. default: enabled"
|
|
echo " -D PATH Set path to docker executable. Can be replaced with \`podman\`. default: docker"
|
|
echo " -e All methods except excluded, example: applySettings,signTransaction"
|
|
echo " -p Test pattern"
|
|
echo " -f Use specific firmware version, example: 2.1.4, 1.8.0 default: -main"
|
|
echo " -b Use specific firmware branch"
|
|
echo " -o Use BTC-only firmware of the specified branch"
|
|
echo " -i Included methods only, example: applySettings,signTransaction"
|
|
echo " -s actual test script. default: 'yarn test:integration'"
|
|
echo " -u Firmware url"
|
|
echo " -m Firmware model, example: R'"
|
|
echo " -r Randomize test order (node only)"
|
|
echo " -t Specify transport / bridge version"
|
|
}
|
|
|
|
# default options
|
|
FIRMWARE=""
|
|
FIRMWARE_URL=""
|
|
FIRMWARE_BRANCH=""
|
|
FIRMWARE_BTC_ONLY=false
|
|
INCLUDED_METHODS=""
|
|
EXCLUDED_METHODS=""
|
|
DOCKER=true
|
|
USE_TX_CACHE=true
|
|
USE_WS_CACHE=true
|
|
PATTERN=""
|
|
FIRMWARE_MODEL=""
|
|
RANDOMIZE=false
|
|
TRANSPORT="node-bridge"
|
|
|
|
# echo $OPTARG
|
|
# user options
|
|
OPTIND=2
|
|
while getopts ":p:i:e:f:b:u:m:t:hdcro" opt; do
|
|
case $opt in
|
|
d)
|
|
DOCKER=false
|
|
;;
|
|
c)
|
|
USE_TX_CACHE=false
|
|
USE_WS_CACHE=false
|
|
;;
|
|
f)
|
|
FIRMWARE=$OPTARG
|
|
;;
|
|
b)
|
|
FIRMWARE_BRANCH=$OPTARG
|
|
;;
|
|
u)
|
|
FIRMWARE_URL=$OPTARG
|
|
;;
|
|
i)
|
|
INCLUDED_METHODS=$OPTARG
|
|
;;
|
|
e)
|
|
EXCLUDED_METHODS=$OPTARG
|
|
;;
|
|
p)
|
|
PATTERN=$OPTARG
|
|
;;
|
|
o)
|
|
FIRMWARE_BTC_ONLY=true
|
|
;;
|
|
m)
|
|
FIRMWARE_MODEL=$OPTARG
|
|
;;
|
|
r)
|
|
RANDOMIZE=true
|
|
;;
|
|
t)
|
|
TRANSPORT=$OPTARG
|
|
;;
|
|
h) # Script usage
|
|
show_usage
|
|
exit 0
|
|
;;
|
|
\?)
|
|
echo "invalid option $OPTARG"
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
shift $((OPTIND - 1))
|
|
|
|
if [[ $ENVIRONMENT == "node" ]]; then
|
|
SCRIPT="yarn workspace @trezor/connect test:e2e:node"
|
|
else
|
|
SCRIPT="yarn workspace @trezor/connect test:e2e:web"
|
|
fi
|
|
|
|
if [[ $FIRMWARE_BTC_ONLY == true && -z $FIRMWARE_BRANCH ]]; then
|
|
echo "BTC-only firmware requires a branch to be specified"
|
|
exit 1
|
|
fi
|
|
|
|
# export essential process.env variables
|
|
export TESTS_FIRMWARE=$FIRMWARE
|
|
export TESTS_INCLUDED_METHODS=$INCLUDED_METHODS
|
|
export TESTS_EXCLUDED_METHODS=$EXCLUDED_METHODS
|
|
export TESTS_USE_TX_CACHE=$USE_TX_CACHE
|
|
export TESTS_USE_WS_CACHE=$USE_WS_CACHE
|
|
export TESTS_PATTERN=$PATTERN
|
|
export TESTS_SCRIPT=$SCRIPT
|
|
export TESTS_FIRMWARE_URL=$FIRMWARE_URL
|
|
export TESTS_FIRMWARE_BRANCH=$FIRMWARE_BRANCH
|
|
export TESTS_FIRMWARE_BTC_ONLY=$FIRMWARE_BTC_ONLY
|
|
export TESTS_FIRMWARE_MODEL=$FIRMWARE_MODEL
|
|
export TESTS_RANDOM=$RANDOMIZE
|
|
export TESTS_TRANSPORT=$TRANSPORT
|
|
|
|
runDocker() {
|
|
docker compose -f ./docker/docker-compose.connect-test.yml up -d
|
|
}
|
|
|
|
run() {
|
|
|
|
echo "Testing env: ${ENVIRONMENT}. Using: ${SCRIPT} ${PATTERN}"
|
|
echo " Firmware: ${TESTS_FIRMWARE}"
|
|
echo " Firmware model: ${TESTS_FIRMWARE_MODEL}"
|
|
echo " Firmware from url: ${FIRMWARE_URL}"
|
|
echo " Firmware from branch: ${FIRMWARE_BRANCH}"
|
|
echo " Firmware BTC-only: ${FIRMWARE_BTC_ONLY}"
|
|
echo " Test pattern: $PATTERN"
|
|
echo " Included methods: ${INCLUDED_METHODS}"
|
|
echo " Excluded methods: ${EXCLUDED_METHODS}"
|
|
echo " TxCache: ${USE_TX_CACHE}"
|
|
echo " WsCache: ${USE_WS_CACHE}"
|
|
echo " Random: ${RANDOMIZE}"
|
|
echo " Transport: ${TRANSPORT}"
|
|
|
|
if [ $DOCKER = true ]; then
|
|
runDocker
|
|
|
|
fi
|
|
|
|
$SCRIPT
|
|
}
|
|
|
|
run
|