Nativefier/.github/manual-test

128 lines
3.3 KiB
Bash
Executable File

#!/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