#!/bin/bash # Test the example app set -e TEST_FOLDER=/tmp/northstar_test_$(date +%s) DEMO_ARCHIVE=$1 BUILD_FOLDER=$2 BUNDLE_SIZE_THRESHOLD=$3 MAIN_BUNDLE_SIZE_THRESHOLD=$4 echo "TEST_FOLDER=${TEST_FOLDER}" echo "DEMO_ARCHIVE=${DEMO_ARCHIVE}" echo "BUILD_FOLDER=${BUILD_FOLDER}" echo "BUNDLE_SIZE_THRESHOLD=${BUNDLE_SIZE_THRESHOLD}" echo "MAIN_BUNDLE_SIZE_THRESHOLD=${MAIN_BUNDLE_SIZE_THRESHOLD}" if [ -d $TEST_FOLDER ]; then rm -rf $TEST_FOLDER; fi mkdir -p $TEST_FOLDER tar -zxf ${DEMO_ARCHIVE} --directory ${TEST_FOLDER} pushd $TEST_FOLDER echo "Building the project" yarn add file://$BUILD_FOLDER yarn yarn build echo "Creating source map" npx source-map-explorer build/static/js/*.js --json result.json echo "File bundle size:" cat result.json | jq ".results[] | .bundleName,.totalBytes" FAILED_FILE_COUNT=$(cat result.json | jq ".results[] | select(.totalBytes>${BUNDLE_SIZE_THRESHOLD}) | .bundleName" -r | wc -l | awk '{$1=$1;print}') FAILED_MAIN_FILE_COUNT=$(cat result.json | jq ".results | .[] | select(.bundleName | contains(\"main\")) | select(.totalBytes>${MAIN_BUNDLE_SIZE_THRESHOLD}) | .bundleName" -r | wc -l | awk '{$1=$1;print}') popd echo "FAILED_FILE_COUNT=${FAILED_FILE_COUNT}" if [ ${FAILED_FILE_COUNT} -gt 0 ] ; then echo "FAILED: One or more file bundle size exceeds threshold ${BUNDLE_SIZE_THRESHOLD}" exit 1 else echo "PASS: All file bundle size are below threshold ${BUNDLE_SIZE_THRESHOLD}" fi echo "FAILED_MAIN_FILE_COUNT=${FAILED_MAIN_FILE_COUNT}" if [ ${FAILED_MAIN_FILE_COUNT} -gt 0 ] ; then echo "FAILED: The main file bundle size exceeds threshold ${MAIN_BUNDLE_SIZE_THRESHOLD}" exit 1 else echo "PASS: The main file bundle size is below threshold ${MAIN_BUNDLE_SIZE_THRESHOLD}" fi rm -rf $TEST_FOLDER