#!/bin/sh # script/frontend-test: run the frontend test suite: the unit tests in # test/unit/, through the test script in package.json, then the # production build, which fails on broken code. The tests print a dot # each; if any fails, they run again with every test listed, and the # script fails even if that run passes. NODE_OPTIONS chooses the # reporter because yarn adds its arguments after the test files, where # node would take a reporter option for one more file. set -eu ROOT="$(cd "$(dirname "$0")/.." && pwd -P)" main() { cd "$ROOT" NODE_OPTIONS=--test-reporter=dot timeout 30 yarn --silent run test || { echo "--- Rerunning with every test listed for details ---" NODE_OPTIONS=--test-reporter=spec timeout 30 yarn --silent run test exit 1 } timeout 30 yarn build } main "$@"