Last active
August 13, 2021 07:17
-
-
Save corbindavenport/e1de7f9cacceeedc5f608b93a013c396 to your computer and use it in GitHub Desktop.
Test local WebExtension in Firefox for Android
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
: ' | |
This is a script for easier testing of a WebExtension on Firefox for Android. It is a wrapper around Mozilla web-ext tool, without the need to check the list of ADB devices manually. It also automates using a Firefox-specific manifest, because Firefox for Android requires "browser_specific_settings" to be included in the manifest with the extension ID, but that string sometimes causes issues in Chromium-based browsers. | |
Assumed folder structure: | |
./test-android.sh (this script!) | |
./manifest.json | |
./manifest-firefox.json | |
More info about web-ext: https://extensionworkshop.com/documentation/develop/getting-started-with-web-ext/ | |
' | |
echo "Note: Your Android device should already be connected over ADB with Firefox installed." | |
# Check for required tools | |
if ! [ -x "$(command -v web-ext)" ]; then | |
echo "Install web-ext first: sudo npm install --global web-ext" | |
exit | |
fi | |
if ! [ -x "$(command -v adb)" ]; then | |
echo "Install ADB first: https://git.io/JBuTh" | |
exit | |
fi | |
# Get ADB device ID | |
DEVICE=$(adb devices -l | grep "model" | awk '{print $1}') | |
if [ "$DEVICE" = "" ]; then | |
echo "Device not connected with ADB!" | |
exit | |
fi | |
# Check that Firefox is installed | |
FIREFOX=$(adb shell pm list packages | grep "org.mozilla.firefox") | |
PLAYSTORE=$(adb shell pm list packages | grep "com.android.vending") | |
if [ "$FIREFOX" = "" ]; then | |
echo "Firefox not installed! Check your device." | |
if [ "$PLAYSTORE" = "" ]; then | |
adb shell am start -a android.intent.action.VIEW -d "https://github.com/mozilla-mobile/fenix/releases/latest" | |
else | |
adb shell am start -a android.intent.action.VIEW -d "https://play.google.com/store/apps/details?id=org.mozilla.firefox" | |
fi | |
exit | |
fi | |
# Grant permissions | |
adb shell pm grant org.mozilla.firefox android.permission.READ_EXTERNAL_STORAGE | |
adb shell pm grant org.mozilla.firefox android.permission.WRITE_EXTERNAL_STORAGE | |
# Switch to Firefox manifest | |
mv ./manifest.json ./manifest-temp.json | |
mv ./manifest-firefox.json ./manifest.json | |
# Run the command | |
web-ext run -t firefox-android --adb-device $DEVICE --firefox-apk org.mozilla.firefox | |
# Switch manifests back | |
mv ./manifest.json ./manifest-firefox.json | |
mv ./manifest-temp.json ./manifest.json |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment