From bd226a08d2660ef2c48394c5d1373b07d2676e9f Mon Sep 17 00:00:00 2001
From: jigar-f <132374182+jigar-f@users.noreply.github.com>
Date: Tue, 10 Oct 2023 21:35:56 +0530
Subject: [PATCH] Appium Flavor (#928)
* Added Appium flavor.
* Update browserstack CI
* Update browerstack.yml
---
.github/workflows/browerstack.yml | 4 ++--
.run/Appium Test.run.xml | 8 ++++++++
Makefile | 5 ++++-
android/app/build.gradle | 6 ++++--
.../org/getlantern/mobilesdk/model/SessionManager.kt | 2 +-
lib/main.dart | 9 +++++----
6 files changed, 24 insertions(+), 10 deletions(-)
create mode 100644 .run/Appium Test.run.xml
diff --git a/.github/workflows/browerstack.yml b/.github/workflows/browerstack.yml
index a34ddb1f1..06dd5a072 100644
--- a/.github/workflows/browerstack.yml
+++ b/.github/workflows/browerstack.yml
@@ -70,7 +70,7 @@ jobs:
CI: "true"
run: |
flutter pub get
- make do-android-debug ANDROID_ARCH=all
+ make appium-test-build
- name: List files in current directory
run: ls -la
@@ -82,7 +82,7 @@ jobs:
env:
BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }}
BROWSERSTACK_ACCESS_KEY: ${{ secrets.BROWSERSTACK_ACCESS_KEY }}
- BROWSERSTACK_APP_PATH: "build/app/outputs/flutter-apk/app-prod-debug.apk"
+ BROWSERSTACK_APP_PATH: "build/app/outputs/flutter-apk/app-appiumtest-debug.apk"
run: |
response=$(curl -u "$BROWSERSTACK_USERNAME:$BROWSERSTACK_ACCESS_KEY" \
-X POST "https://api-cloud.browserstack.com/app-automate/upload" \
diff --git a/.run/Appium Test.run.xml b/.run/Appium Test.run.xml
new file mode 100644
index 000000000..4933e78fa
--- /dev/null
+++ b/.run/Appium Test.run.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Makefile b/Makefile
index f5d3497a6..408018a10 100644
--- a/Makefile
+++ b/Makefile
@@ -274,9 +274,12 @@ $(MOBILE_ANDROID_LIB): $(ANDROID_LIB)
mkdir -p $(MOBILE_LIBS) && \
cp $(ANDROID_LIB) $(MOBILE_ANDROID_LIB)
-.PHONY: android-lib
+.PHONY: android-lib appium-test-build
android-lib: $(MOBILE_ANDROID_LIB)
+appium-test-build:
+ flutter build apk --flavor=appiumTest --dart-define=app.flavor=appiumTest --debug
+
$(MOBILE_TEST_APK) $(MOBILE_TESTS_APK): $(MOBILE_SOURCES) $(MOBILE_ANDROID_LIB)
@$(GRADLE) -PandroidArch=$(ANDROID_ARCH) \
-PandroidArchJava="$(ANDROID_ARCH_JAVA)" \
diff --git a/android/app/build.gradle b/android/app/build.gradle
index 45a8c0cd6..fe5f86a0f 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -170,8 +170,7 @@ android {
}
buildTypes {
-
- debug {
+ debug {
minifyEnabled false
shrinkResources false
debuggable true
@@ -254,6 +253,9 @@ android {
autoTest {
versionCode 1 // so we can always test auto-update.
}
+ appiumTest {
+ buildConfigField "boolean", "CI", "true"
+ }
}
splits {
diff --git a/android/app/src/main/java/org/getlantern/mobilesdk/model/SessionManager.kt b/android/app/src/main/java/org/getlantern/mobilesdk/model/SessionManager.kt
index 1c9292d3a..4d0e071ba 100644
--- a/android/app/src/main/java/org/getlantern/mobilesdk/model/SessionManager.kt
+++ b/android/app/src/main/java/org/getlantern/mobilesdk/model/SessionManager.kt
@@ -328,7 +328,7 @@ abstract class SessionManager(application: Application) : Session {
val isPaymentTestMode: Boolean
get() {
val paymentTestMode = prefs.getBoolean(PAYMENT_TEST_MODE, false)
- val ciValue = BuildConfig.CI
+ val ciValue = BuildConfig.FLAVOR == "appiumTest"
return ciValue || paymentTestMode
}
diff --git a/lib/main.dart b/lib/main.dart
index f4f137df9..34cd5fb94 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -6,12 +6,13 @@ import 'package:lantern/common/common.dart';
Future main() async {
// CI will be true only when running appium test
- var CI = const String.fromEnvironment('CI', defaultValue: 'false');
- var boolCI = bool.fromEnvironment("CI", defaultValue: false);
- print('Appium CI is running $CI and bool $boolCI');
- if (CI == 'true') {
+ const String flavor = String.fromEnvironment('app.flavor');
+ print("Running Flavor $flavor");
+ if (flavor == 'appiumTest') {
+ print("Flutter extension enabled $flavor");
enableFlutterDriverExtension();
}
+
WidgetsFlutterBinding.ensureInitialized();
await _initGoogleMobileAds();
await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);