2
2
mirror of https://github.com/Llewellynvdm/nativefier.git synced 2024-11-05 04:47:54 +00:00
nativefier/.github/manual-test
Adam Weeden 113d8448c1
Fix CSS injection (#1227)
This fixes https://github.com/nativefier/nativefier/pull/1222#issuecomment-860913698 , where:

1. When it works (e.g. initial page load), CSS is slower to inject (you can see pages without injected CSS)
2. CSS isn't injected when navigating to a page

On both Windows & Linux, a `git revert 9a6c6f870d && npm run build` fixes the issue.

--

I'm still not 100% sure what went wrong, but I suspect that the new version of Electron may not be firing onHeadersReceived for the actual navigation events, and only its child requests. To counteract it, I'm now injecting at the navigation event as well. I was able to reproduce the issue and this does seem to fix it. Please let me know if it does for you as well..

Also I noticed some funkiness in your logs where we're trying to inject on font files. So I realized the method is probably not nearly as important as the content-type, so I've switched blacklist methods to blacklist content-types.
2021-06-15 09:02:57 -04:00

107 lines
3.4 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"
elif [ "$(uname -o)" = "Msys" ]; then
"$1/$2-win32-x64/$2.exe" --verbose
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
fi
echo "Yayyyyyyyyyyy"
}
printf "\n***** SMOKE TEST 1: Setting up test and building app... *****\n"
script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
nativefier_dir="$script_dir/.."
pushd "$nativefier_dir"
tmp_dir=$(mktemp -d -t nativefier-manual-test-XXXXX)
name="nativefier-smoke-test-1"
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"
node ./lib/cli.js 'https://npmjs.com/' \
--inject "$injected_css" \
--inject "$injected_js" \
--name "$name" \
"$tmp_dir"
printf '\n***** SMOKE TEST 1: 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***** SMOKE TEST 2: Setting up test and building app... *****\n"
tmp_dir=$(mktemp -d -t nativefier-manual-test-auth-XXXXX)
name="nativefier-smoke-test-2"
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***** SMOKE TEST 2: 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***** SMOKE TEST 3: Setting up test and building app... *****\n'
tmp_dir=$(mktemp -d -t nativefier-manual-test-auth-prompt-XXXXX)
name='nativefier-smoke-test-3'
node ./lib/cli.js 'http://httpbin.org/basic-auth/foo/bar' \
--name "$name" \
"$tmp_dir"
printf '\n***** SMOKE TEST 3: Test checklist *****
- Should get a login window. Log in with username="foo" and password="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"