#!/usr/bin/env bash # Manual test to validate some hard-to-programmatically-test features work. set -eo pipefail missingDeps=false if ! command -v mktemp > /dev/null; then echo "Missing mktemp"; missingDeps=true; fi if ! command -v uname > /dev/null; then echo "Missing uname"; missingDeps=true; fi if ! command -v node > /dev/null; then echo "Missing node"; missingDeps=true; fi if [ "$missingDeps" = true ]; then exit 1; fi function launch_app() { printf "\n***** Running app *****\n" if [ "$(uname -s)" = "Darwin" ]; then open -a "$1/$2-darwin-x64/$2.app" else "$1/$2-linux-x64/$2" fi } function do_cleanup() { if [ -n "1" ]; then printf "\n***** Deleting test dir %s *****\n" "$1" rm -rf "$1" printf "\n" fi } function request_feedback() { printf "\nDid everything work as expected? [yN] " read -r response do_cleanup $1 if [ "$response" != 'y' ]; then echo "Back to fixing" exit 1 else echo "Yayyyyyyyyyyy" fi } printf "\n***** Setting up and building *****\n" script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" nativefier_dir="$script_dir/.." pushd "$nativefier_dir" npm run build printf "\n***** Creating test dirs & resources *****\n" tmp_dir=$(mktemp -d -t nativefier-manual-test-XXXXX) name="app" resources_dir="$tmp_dir/resources" mkdir "$resources_dir" injected_css="$resources_dir/inject.css" injected_js="$resources_dir/inject.js" echo '* { background-color: blue; }' > "$injected_css" echo 'alert("hello world from inject");' > "$injected_js" printf "\n***** Building test app *****\n" node ./lib/cli.js 'https://npmjs.com/' \ --inject "$injected_css" \ --inject "$injected_js" \ --name "$name" \ "$tmp_dir" printf "\n***** Test checklist ***** - Injected js: should show an alert saying hello - Injected css: should make npmjs all blue - Internal links open internally - External links open in browser - Keyboard shortcuts: {back, forward, zoom in/out/zero} work - Console: no Electron runtime deprecation warnings/error logged " launch_app $tmp_dir $name request_feedback $tmp_dir printf "\n***** Creating test dirs & resources *****\n" tmp_dir=$(mktemp -d -t nativefier-manual-test-auth-XXXXX) name="app" printf "\n***** Building test app *****\n" node ./lib/cli.js 'http://httpbin.org/basic-auth/foo/bar' \ --basic-auth-username foo \ --basic-auth-password bar \ --name "$name" \ "$tmp_dir" printf "\n***** Test checklist ***** - Was successfully logged in via HTTP Basic Auth. Should see: { \"authenticated\": true, \"user\": \"foo\" } - Console: no Electron runtime deprecation warnings/error logged " launch_app $tmp_dir $name request_feedback $tmp_dir printf "\n***** Creating test dirs & resources *****\n" tmp_dir=$(mktemp -d -t nativefier-manual-test-auth-prompt-XXXXX) name="app" printf "\n***** Building test app *****\n" node ./lib/cli.js 'http://httpbin.org/basic-auth/foo/bar' \ --name "$name" \ "$tmp_dir" printf "\n***** Test checklist ***** - Should get a login window to access page. - Username is \"foo\" - Password is \"bar\". - Post login, you should see: { \"authenticated\": true, \"user\": \"foo\" } - Console: no Electron runtime deprecation warnings/error logged " launch_app $tmp_dir $name request_feedback $tmp_dir