diff --git a/.config/dictionaries/project.dic b/.config/dictionaries/project.dic
index 35ad3b30be5..a8925d9cff5 100644
--- a/.config/dictionaries/project.dic
+++ b/.config/dictionaries/project.dic
@@ -1,13 +1,19 @@
aarch
addrr
adminer
+androidx
+appspot
asyncio
auditability
+bluefireteam
BROTLI
cardano
CEST
+cfbundle
+chromedriver
chrono
ciphertext
+COCOAPODS
codepoints
coti
cryptoxide
@@ -20,10 +26,14 @@ dotglob
drep
dreps
encryptor
+gcloud
genhtml
gmtime
+gradlew
ideascale
+integ
Intellij
+iphoneos
jetbrains
jorm
jormungandr
@@ -40,11 +50,16 @@ netkey
oneshot
openapi
opentelemetry
+Pdart
permissionless
pg_isready
plpgsql
+podfile
+podhelper
preprod
+projectcatalyst
psql
+Ptarget
pubkey
pubspec
rapidoc
@@ -54,11 +69,19 @@ saibatizoku
seckey
slotno
stevenj
+subosito
tacho
thiserror
timelike
Traceback
+TXNZD
vitss
voteplan
voteplans
+xcconfig
+xcfilelist
+xcodebuild
+xctest
+xctestrun
+xcworkspace
yoroi
\ No newline at end of file
diff --git a/.github/workflows/flitter-mobile-integration-test.yml b/.github/workflows/flitter-mobile-integration-test.yml
new file mode 100644
index 00000000000..f71053b0f51
--- /dev/null
+++ b/.github/workflows/flitter-mobile-integration-test.yml
@@ -0,0 +1,55 @@
+name: 🧪 Flutter iOS and Android Integration Tests
+
+permissions:
+ contents: read
+ id-token: write
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.head_ref }}
+ cancel-in-progress: true
+
+on:
+ schedule:
+ # Schedule to run at midnight UTC
+ - cron: "0 0 * * *"
+
+jobs:
+ integration-tests:
+ name: Mobile - Integration Tests
+ runs-on: macos-latest
+ timeout-minutes: 30
+ steps:
+ - name: ⬇️ Checkout repository
+ uses: actions/checkout@v3
+
+ - name: ⤵️ Authenticate with Google Cloud Platform
+ uses: "google-github-actions/auth@v1"
+ with:
+ credentials_json: "${{ secrets.GOOGLE_CREDENTIALS_INTEGRATION_TESTS }}"
+
+ - name: ⚙️ Setup Google Cloud SDK
+ uses: google-github-actions/setup-gcloud@v1
+
+ - name: ⚙️ Setup Java
+ uses: actions/setup-java@v1
+ with:
+ java-version: "12.x"
+
+ - name: ⚙️ Setup Flutter
+ uses: subosito/flutter-action@v2
+ with:
+ channel: "stable"
+ cache: true
+
+ - name: ⚙️ Setup Melos
+ uses: bluefireteam/melos-action@v2
+
+ - name: ⚙️ Install dependencies for all packages
+ run: melos build:pub_get:all
+
+ - name: 🤖 Run Android Integration Tests
+ run: ./scripts/flutter_android_integration_test.sh
+
+ # TODO: https://github.com/input-output-hk/catalyst-voices/issues/135
+ # - name: 📱 Run iOS Integration Tests
+ # run: ./scripts/flutter_ios_integration_test.sh
diff --git a/.github/workflows/flitter-web-integration-test.yml b/.github/workflows/flitter-web-integration-test.yml
new file mode 100644
index 00000000000..84fe46fe449
--- /dev/null
+++ b/.github/workflows/flitter-web-integration-test.yml
@@ -0,0 +1,46 @@
+name: 🧪 Flutter Web Integration Tests
+
+permissions:
+ contents: read
+ id-token: write
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.head_ref }}
+ cancel-in-progress: true
+
+on:
+ pull_request:
+ types:
+ - opened
+ - reopened
+ - synchronize
+ branches:
+ - "main"
+ paths-ignore:
+ - "**.md"
+ - "doc/**"
+ - ".vscode/"
+
+jobs:
+ integration-tests:
+ name: Web - Integration Tests
+ runs-on: ubuntu-latest
+ timeout-minutes: 30
+ steps:
+ - name: ⬇️ Checkout repository
+ uses: actions/checkout@v3
+
+ - name: ⚙️ Setup Flutter
+ uses: subosito/flutter-action@v2
+ with:
+ channel: "stable"
+ cache: true
+
+ - name: ⚙️ Setup Melos
+ uses: bluefireteam/melos-action@v2
+
+ - name: ⚙️ Install dependencies for all packages
+ run: melos build:pub_get:all
+
+ - name: 🤖 Run Integration Tests
+ run: ./scripts/flutter_web_integration_test.sh
diff --git a/.gitignore b/.gitignore
index cad209d511d..20c0589e266 100644
--- a/.gitignore
+++ b/.gitignore
@@ -79,6 +79,19 @@ $RECYCLE.BIN/
!/.vscode/settings.recommended.json
!/.vscode/tasks.recommended.json
+# Flutter/Dart/Pub
+.dart_tool/
+.packages
+build/
+pubspec.lock
+.pub-cache/
+.pub/
+coverage/
+.idea/
+
+# Secrets
+dev-catalyst-voice-9f78f27c6bc5.json
+
# Local only development artefacts can get installed here.
/local
diff --git a/catalyst_voices/.idea/runConfigurations/melos_run_build.xml b/catalyst_voices/.idea/runConfigurations/melos_run_build_pub_get_all.xml
similarity index 70%
rename from catalyst_voices/.idea/runConfigurations/melos_run_build.xml
rename to catalyst_voices/.idea/runConfigurations/melos_run_build_pub_get_all.xml
index 624cc70a1ba..0657f330f0a 100644
--- a/catalyst_voices/.idea/runConfigurations/melos_run_build.xml
+++ b/catalyst_voices/.idea/runConfigurations/melos_run_build_pub_get_all.xml
@@ -1,9 +1,9 @@
-
+
-
+
diff --git a/catalyst_voices/analysis_options.yaml b/catalyst_voices/analysis_options.yaml
index 44d9a08c7e4..fbd09890857 100644
--- a/catalyst_voices/analysis_options.yaml
+++ b/catalyst_voices/analysis_options.yaml
@@ -3,6 +3,7 @@ include: package:catalyst_analysis/analysis_options.1.0.0.yaml
exclude:
- 'build/**'
- '**/*.g.dart'
+
linter:
rules:
public_member_api_docs: false
diff --git a/catalyst_voices/android/app/build.gradle b/catalyst_voices/android/app/build.gradle
index 04f53d8dca6..979c82423a6 100644
--- a/catalyst_voices/android/app/build.gradle
+++ b/catalyst_voices/android/app/build.gradle
@@ -53,6 +53,7 @@ android {
targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
signingConfigs {
@@ -74,7 +75,7 @@ android {
}
flavorDimensions "default"
- productFlavors {
+ productFlavors {
production {
dimension "default"
applicationIdSuffix ""
@@ -110,4 +111,7 @@ flutter {
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+ testImplementation 'junit:junit:4.12'
+ androidTestImplementation 'androidx.test:runner:1.2.0'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
diff --git a/catalyst_voices/android/app/src/androidTest/java/androidTest/java/io/projectcatalyst/catalyst_voices/MainActivityTest.java b/catalyst_voices/android/app/src/androidTest/java/androidTest/java/io/projectcatalyst/catalyst_voices/MainActivityTest.java
new file mode 100644
index 00000000000..15b7a2b2733
--- /dev/null
+++ b/catalyst_voices/android/app/src/androidTest/java/androidTest/java/io/projectcatalyst/catalyst_voices/MainActivityTest.java
@@ -0,0 +1,12 @@
+package io.projectcatalyst.catalyst_voices;
+
+import androidx.test.rule.ActivityTestRule;
+import dev.flutter.plugins.integration_test.FlutterTestRunner;
+import org.junit.Rule;
+import org.junit.runner.RunWith;
+
+@RunWith(FlutterTestRunner.class)
+public class MainActivityTest {
+ @Rule
+ public ActivityTestRule rule = new ActivityTestRule<>(MainActivity.class, true, false);
+}
\ No newline at end of file
diff --git a/catalyst_voices/integration_test/main.dart b/catalyst_voices/integration_test/main.dart
new file mode 100644
index 00000000000..680a863c6ac
--- /dev/null
+++ b/catalyst_voices/integration_test/main.dart
@@ -0,0 +1,5 @@
+import './scenarios/login_scenario.dart' as login_scenario;
+
+void main() {
+ login_scenario.main();
+}
diff --git a/catalyst_voices/integration_test/scenarios/login_scenario.dart b/catalyst_voices/integration_test/scenarios/login_scenario.dart
new file mode 100644
index 00000000000..2314326320c
--- /dev/null
+++ b/catalyst_voices/integration_test/scenarios/login_scenario.dart
@@ -0,0 +1,36 @@
+import 'package:catalyst_voices/main_development.dart' as app;
+import 'package:flutter_test/flutter_test.dart';
+import 'package:integration_test/integration_test.dart';
+
+import 'robots/login_robot.dart';
+
+void main() {
+ IntegrationTestWidgetsFlutterBinding.ensureInitialized();
+ LoginRobot loginRobot;
+
+ group('Login', () {
+ testWidgets('shows error message when login information is missing',
+ (tester) async {
+ loginRobot = await _configure(tester);
+
+ await loginRobot.enterUsername('Not Valid');
+ await loginRobot.tapLoginButton();
+ await loginRobot.checkInvalidCredentialsMessageIsShown();
+ });
+
+ testWidgets('authenticates a user with an username and password',
+ (tester) async {
+ loginRobot = await _configure(tester);
+
+ await loginRobot.enterUsername('robot');
+ await loginRobot.enterPassword('1234');
+ await loginRobot.tapLoginButton();
+ });
+ });
+}
+
+Future _configure(WidgetTester tester) async {
+ app.main();
+ await tester.pumpAndSettle();
+ return LoginRobot(widgetTester: tester);
+}
diff --git a/catalyst_voices/integration_test/scenarios/robots/login_robot.dart b/catalyst_voices/integration_test/scenarios/robots/login_robot.dart
new file mode 100644
index 00000000000..db6677860a3
--- /dev/null
+++ b/catalyst_voices/integration_test/scenarios/robots/login_robot.dart
@@ -0,0 +1,44 @@
+import 'package:catalyst_voices/dummy/constants.dart';
+import 'package:flutter_test/flutter_test.dart';
+
+final class LoginRobot {
+ final WidgetTester widgetTester;
+
+ const LoginRobot({
+ required this.widgetTester,
+ });
+
+ Future checkInvalidCredentialsMessageIsShown() async {
+ final loginErrorSnackbar = find.byKey(WidgetKeys.loginErrorSnackbar);
+ expect(loginErrorSnackbar, findsOneWidget);
+ await widgetTester.pump();
+ }
+
+ Future enterPassword(String password) async {
+ final passwordTextController =
+ find.byKey(WidgetKeys.passwordTextController);
+ expect(passwordTextController, findsOneWidget);
+ await widgetTester.enterText(passwordTextController, password);
+ await widgetTester.pump();
+ }
+
+ Future enterUsername(String username) async {
+ final usernameTextController =
+ find.byKey(WidgetKeys.usernameTextController);
+ expect(usernameTextController, findsOneWidget);
+ await widgetTester.enterText(usernameTextController, username);
+ await widgetTester.pump();
+ }
+
+ Future tapLoginButton() async {
+ final loginButton = find.byKey(WidgetKeys.loginButton);
+ expect(loginButton, findsOneWidget);
+ await widgetTester.tap(loginButton);
+ await widgetTester.pump();
+ }
+
+ void verifyLoginScreenIsShown() {
+ final loginScreen = find.byKey(WidgetKeys.loginScreen);
+ expect(loginScreen, findsOneWidget);
+ }
+}
diff --git a/catalyst_voices/ios/Flutter/Debug.xcconfig b/catalyst_voices/ios/Flutter/Debug.xcconfig
index 592ceee85b8..ec97fc6f302 100644
--- a/catalyst_voices/ios/Flutter/Debug.xcconfig
+++ b/catalyst_voices/ios/Flutter/Debug.xcconfig
@@ -1 +1,2 @@
+#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
#include "Generated.xcconfig"
diff --git a/catalyst_voices/ios/Flutter/Release.xcconfig b/catalyst_voices/ios/Flutter/Release.xcconfig
index 592ceee85b8..c4855bfe200 100644
--- a/catalyst_voices/ios/Flutter/Release.xcconfig
+++ b/catalyst_voices/ios/Flutter/Release.xcconfig
@@ -1 +1,2 @@
+#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
#include "Generated.xcconfig"
diff --git a/catalyst_voices/ios/Podfile b/catalyst_voices/ios/Podfile
new file mode 100644
index 00000000000..b3b7b7eddfb
--- /dev/null
+++ b/catalyst_voices/ios/Podfile
@@ -0,0 +1,46 @@
+platform :ios, '15.0'
+
+ENV['COCOAPODS_DISABLE_STATS'] = 'true'
+
+project 'Runner', {
+ 'Debug' => :debug,
+ 'Profile' => :release,
+ 'Release' => :release,
+}
+
+def flutter_root
+ generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
+ unless File.exist?(generated_xcode_build_settings_path)
+ raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
+ end
+
+ File.foreach(generated_xcode_build_settings_path) do |line|
+ matches = line.match(/FLUTTER_ROOT\=(.*)/)
+ return matches[1].strip if matches
+ end
+ raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
+end
+
+require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
+
+flutter_ios_podfile_setup
+
+target 'Runner' do
+ use_frameworks!
+ use_modular_headers!
+
+ flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
+
+ target 'RunnerTests' do
+ inherit! :search_paths
+ end
+end
+
+post_install do |installer|
+ installer.pods_project.targets.each do |target|
+ flutter_additional_ios_build_settings(target)
+ target.build_configurations.each do |config|
+ config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '15.0'
+ end
+ end
+end
diff --git a/catalyst_voices/ios/Podfile.lock b/catalyst_voices/ios/Podfile.lock
new file mode 100644
index 00000000000..e41d013debe
--- /dev/null
+++ b/catalyst_voices/ios/Podfile.lock
@@ -0,0 +1,22 @@
+PODS:
+ - Flutter (1.0.0)
+ - integration_test (0.0.1):
+ - Flutter
+
+DEPENDENCIES:
+ - Flutter (from `Flutter`)
+ - integration_test (from `.symlinks/plugins/integration_test/ios`)
+
+EXTERNAL SOURCES:
+ Flutter:
+ :path: Flutter
+ integration_test:
+ :path: ".symlinks/plugins/integration_test/ios"
+
+SPEC CHECKSUMS:
+ Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
+ integration_test: 13825b8a9334a850581300559b8839134b124670
+
+PODFILE CHECKSUM: ff9ae414ffbc80ad6f9d2058e299051a15f6eca7
+
+COCOAPODS: 1.14.2
diff --git a/catalyst_voices/ios/Runner.xcodeproj/project.pbxproj b/catalyst_voices/ios/Runner.xcodeproj/project.pbxproj
index 6a2a97caa91..c71d93f1a60 100644
--- a/catalyst_voices/ios/Runner.xcodeproj/project.pbxproj
+++ b/catalyst_voices/ios/Runner.xcodeproj/project.pbxproj
@@ -13,8 +13,21 @@
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
+ 9D0FA56BCE8AC1C65B14A455 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58AD41A647D3ECFB0AFDB4C4 /* Pods_Runner.framework */; };
+ CE6B64BD2AF0F46900FBC49C /* RunnerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CE6B64BC2AF0F46900FBC49C /* RunnerTests.m */; };
+ D53E7506F151DF64BA6648D1 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A226CD369F80553777A41F2 /* Pods_RunnerTests.framework */; };
/* End PBXBuildFile section */
+/* Begin PBXContainerItemProxy section */
+ CE6B64BE2AF0F46900FBC49C /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 97C146E61CF9000F007C117D /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 97C146ED1CF9000F007C117D;
+ remoteInfo = Runner;
+ };
+/* End PBXContainerItemProxy section */
+
/* Begin PBXCopyFilesBuildPhase section */
9705A1C41CF9048500538489 /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
@@ -31,9 +44,21 @@
/* Begin PBXFileReference section */
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
+ 25F1B71D8B24DA7FDAB9D3DD /* Pods-Runner.debug-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-staging.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-staging.xcconfig"; sourceTree = ""; };
+ 2E0014B094388ADF8FBD708F /* Pods-RunnerTests.release-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-staging.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-staging.xcconfig"; sourceTree = ""; };
+ 31A397FCE8216C1593BE34CF /* Pods-RunnerTests.release-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-production.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-production.xcconfig"; sourceTree = ""; };
+ 337F9E3173CD29E887343C74 /* Pods-Runner.profile-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-staging.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-staging.xcconfig"; sourceTree = ""; };
+ 34CB998BDA3DCF8CA0AE3B67 /* Pods-Runner.release-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-development.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-development.xcconfig"; sourceTree = ""; };
+ 3A226CD369F80553777A41F2 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
+ 47CE06DF243826DB794F81DA /* Pods-RunnerTests.profile-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-staging.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-staging.xcconfig"; sourceTree = ""; };
+ 4FACF8FAA8DB4A9997126640 /* Pods-RunnerTests.profile-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-production.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-production.xcconfig"; sourceTree = ""; };
+ 58AD41A647D3ECFB0AFDB4C4 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 63BCF9D6A6545EE5FAD7EA0F /* Pods-Runner.debug-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-production.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-production.xcconfig"; sourceTree = ""; };
+ 7050E1265BDD656EC4D2A451 /* Pods-Runner.release-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-production.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-production.xcconfig"; sourceTree = ""; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ 773F545FCFD04AF1DB122DBF /* Pods-Runner.profile-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-development.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-development.xcconfig"; sourceTree = ""; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; };
@@ -42,6 +67,16 @@
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 9AAF575D874B9B76D88C0390 /* Pods-RunnerTests.profile-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-development.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-development.xcconfig"; sourceTree = ""; };
+ 9C0275AC840A610349C5E7C4 /* Pods-RunnerTests.debug-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-development.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-development.xcconfig"; sourceTree = ""; };
+ 9C4311ED66475714D0455C45 /* Pods-Runner.release-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-staging.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-staging.xcconfig"; sourceTree = ""; };
+ AB0EDBCC67C0C9925389B800 /* Pods-RunnerTests.release-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-development.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-development.xcconfig"; sourceTree = ""; };
+ AFD5684096F91FC2F28C7D2A /* Pods-RunnerTests.debug-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-production.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-production.xcconfig"; sourceTree = ""; };
+ C6461643F68A308EF81D55A5 /* Pods-RunnerTests.debug-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-staging.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-staging.xcconfig"; sourceTree = ""; };
+ CC54985AB21DFFB05FC233CF /* Pods-Runner.debug-development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-development.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-development.xcconfig"; sourceTree = ""; };
+ CE6B64BA2AF0F46900FBC49C /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ CE6B64BC2AF0F46900FBC49C /* RunnerTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RunnerTests.m; sourceTree = ""; };
+ DD126E88F4D7C9F039A51EF3 /* Pods-Runner.profile-production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-production.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-production.xcconfig"; sourceTree = ""; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -49,12 +84,46 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ 9D0FA56BCE8AC1C65B14A455 /* Pods_Runner.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ CE6B64B72AF0F46900FBC49C /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D53E7506F151DF64BA6648D1 /* Pods_RunnerTests.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
+ 08A2B3987EB250E54DC3A21D /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ 63BCF9D6A6545EE5FAD7EA0F /* Pods-Runner.debug-production.xcconfig */,
+ CC54985AB21DFFB05FC233CF /* Pods-Runner.debug-development.xcconfig */,
+ 25F1B71D8B24DA7FDAB9D3DD /* Pods-Runner.debug-staging.xcconfig */,
+ 7050E1265BDD656EC4D2A451 /* Pods-Runner.release-production.xcconfig */,
+ 34CB998BDA3DCF8CA0AE3B67 /* Pods-Runner.release-development.xcconfig */,
+ 9C4311ED66475714D0455C45 /* Pods-Runner.release-staging.xcconfig */,
+ DD126E88F4D7C9F039A51EF3 /* Pods-Runner.profile-production.xcconfig */,
+ 773F545FCFD04AF1DB122DBF /* Pods-Runner.profile-development.xcconfig */,
+ 337F9E3173CD29E887343C74 /* Pods-Runner.profile-staging.xcconfig */,
+ AFD5684096F91FC2F28C7D2A /* Pods-RunnerTests.debug-production.xcconfig */,
+ 9C0275AC840A610349C5E7C4 /* Pods-RunnerTests.debug-development.xcconfig */,
+ C6461643F68A308EF81D55A5 /* Pods-RunnerTests.debug-staging.xcconfig */,
+ 31A397FCE8216C1593BE34CF /* Pods-RunnerTests.release-production.xcconfig */,
+ AB0EDBCC67C0C9925389B800 /* Pods-RunnerTests.release-development.xcconfig */,
+ 2E0014B094388ADF8FBD708F /* Pods-RunnerTests.release-staging.xcconfig */,
+ 4FACF8FAA8DB4A9997126640 /* Pods-RunnerTests.profile-production.xcconfig */,
+ 9AAF575D874B9B76D88C0390 /* Pods-RunnerTests.profile-development.xcconfig */,
+ 47CE06DF243826DB794F81DA /* Pods-RunnerTests.profile-staging.xcconfig */,
+ );
+ path = Pods;
+ sourceTree = "";
+ };
9740EEB11CF90186004384FC /* Flutter */ = {
isa = PBXGroup;
children = (
@@ -71,7 +140,10 @@
children = (
9740EEB11CF90186004384FC /* Flutter */,
97C146F01CF9000F007C117D /* Runner */,
+ CE6B64BB2AF0F46900FBC49C /* RunnerTests */,
97C146EF1CF9000F007C117D /* Products */,
+ 08A2B3987EB250E54DC3A21D /* Pods */,
+ D03E20C6287DCD86205EC91C /* Frameworks */,
);
sourceTree = "";
};
@@ -79,6 +151,7 @@
isa = PBXGroup;
children = (
97C146EE1CF9000F007C117D /* Runner.app */,
+ CE6B64BA2AF0F46900FBC49C /* RunnerTests.xctest */,
);
name = Products;
sourceTree = "";
@@ -98,6 +171,23 @@
path = Runner;
sourceTree = "";
};
+ CE6B64BB2AF0F46900FBC49C /* RunnerTests */ = {
+ isa = PBXGroup;
+ children = (
+ CE6B64BC2AF0F46900FBC49C /* RunnerTests.m */,
+ );
+ path = RunnerTests;
+ sourceTree = "";
+ };
+ D03E20C6287DCD86205EC91C /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 58AD41A647D3ECFB0AFDB4C4 /* Pods_Runner.framework */,
+ 3A226CD369F80553777A41F2 /* Pods_RunnerTests.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@@ -105,12 +195,14 @@
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
+ 05D808F923123BFB68869738 /* [CP] Check Pods Manifest.lock */,
9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
+ FE2827EE334808ED9FD3D9AF /* [CP] Embed Pods Frameworks */,
);
buildRules = (
);
@@ -121,12 +213,32 @@
productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
productType = "com.apple.product-type.application";
};
+ CE6B64B92AF0F46900FBC49C /* RunnerTests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = CE6B64C92AF0F46900FBC49C /* Build configuration list for PBXNativeTarget "RunnerTests" */;
+ buildPhases = (
+ D70CAF3F46F17C7A7FE7082B /* [CP] Check Pods Manifest.lock */,
+ CE6B64B62AF0F46900FBC49C /* Sources */,
+ CE6B64B72AF0F46900FBC49C /* Frameworks */,
+ CE6B64B82AF0F46900FBC49C /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ CE6B64BF2AF0F46900FBC49C /* PBXTargetDependency */,
+ );
+ name = RunnerTests;
+ productName = RunnerTests;
+ productReference = CE6B64BA2AF0F46900FBC49C /* RunnerTests.xctest */;
+ productType = "com.apple.product-type.bundle.unit-test";
+ };
/* End PBXNativeTarget section */
/* Begin PBXProject section */
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
+ BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1430;
ORGANIZATIONNAME = "";
TargetAttributes = {
@@ -134,10 +246,14 @@
CreatedOnToolsVersion = 7.3.1;
LastSwiftMigration = 1100;
};
+ CE6B64B92AF0F46900FBC49C = {
+ CreatedOnToolsVersion = 15.0.1;
+ TestTargetID = 97C146ED1CF9000F007C117D;
+ };
};
};
buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
- compatibilityVersion = "Xcode 9.3";
+ compatibilityVersion = "Xcode 13.0";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
@@ -150,6 +266,7 @@
projectRoot = "";
targets = (
97C146ED1CF9000F007C117D /* Runner */,
+ CE6B64B92AF0F46900FBC49C /* RunnerTests */,
);
};
/* End PBXProject section */
@@ -166,9 +283,38 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ CE6B64B82AF0F46900FBC49C /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
+ 05D808F923123BFB68869738 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
@@ -200,6 +346,45 @@
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build\n";
};
+ D70CAF3F46F17C7A7FE7082B /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+ FE2827EE334808ED9FD3D9AF /* [CP] Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ name = "[CP] Embed Pods Frameworks";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@@ -212,8 +397,24 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ CE6B64B62AF0F46900FBC49C /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ CE6B64BD2AF0F46900FBC49C /* RunnerTests.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
/* End PBXSourcesBuildPhase section */
+/* Begin PBXTargetDependency section */
+ CE6B64BF2AF0F46900FBC49C /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 97C146ED1CF9000F007C117D /* Runner */;
+ targetProxy = CE6B64BE2AF0F46900FBC49C /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
/* Begin PBXVariantGroup section */
97C146FA1CF9000F007C117D /* Main.storyboard */ = {
isa = PBXVariantGroup;
@@ -276,7 +477,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@@ -292,8 +493,9 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = 362TXNZD27;
ENABLE_BITCODE = NO;
- FLAVOR_APP_NAME = CUP;
+ FLAVOR_APP_NAME = Voices;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
@@ -301,8 +503,12 @@
);
PRODUCT_BUNDLE_IDENTIFIER = "io.projectcatalyst.catalyst-voice";
PRODUCT_NAME = "$(TARGET_NAME)";
+ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
+ SUPPORTS_MACCATALYST = NO;
+ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = 1;
VERSIONING_SYSTEM = "apple-generic";
};
name = "Profile-production";
@@ -355,7 +561,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
@@ -405,7 +611,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@@ -423,8 +629,9 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = 362TXNZD27;
ENABLE_BITCODE = NO;
- FLAVOR_APP_NAME = CUP;
+ FLAVOR_APP_NAME = Voices;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
@@ -432,9 +639,13 @@
);
PRODUCT_BUNDLE_IDENTIFIER = "io.projectcatalyst.catalyst-voices";
PRODUCT_NAME = "$(TARGET_NAME)";
+ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
+ SUPPORTS_MACCATALYST = NO;
+ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = 1;
VERSIONING_SYSTEM = "apple-generic";
};
name = "Debug-production";
@@ -446,8 +657,9 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = 362TXNZD27;
ENABLE_BITCODE = NO;
- FLAVOR_APP_NAME = CUP;
+ FLAVOR_APP_NAME = Voices;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
@@ -455,12 +667,691 @@
);
PRODUCT_BUNDLE_IDENTIFIER = "io.projectcatalyst.catalyst-voices";
PRODUCT_NAME = "$(TARGET_NAME)";
+ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
+ SUPPORTS_MACCATALYST = NO;
+ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = 1;
VERSIONING_SYSTEM = "apple-generic";
};
name = "Release-production";
};
+ CE6B64C02AF0F46900FBC49C /* Debug-production */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = AFD5684096F91FC2F28C7D2A /* Pods-RunnerTests.debug-production.xcconfig */;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 1;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ DEVELOPMENT_TEAM = 362TXNZD27;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu17;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ GENERATE_INFOPLIST_FILE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 16.6;
+ LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
+ MARKETING_VERSION = 1.0;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = "io.projectcatalyst.catalyst-voices.RunnerTests";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SDKROOT = iphoneos;
+ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
+ SUPPORTS_MACCATALYST = NO;
+ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
+ SWIFT_EMIT_LOC_STRINGS = NO;
+ TARGETED_DEVICE_FAMILY = 1;
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
+ };
+ name = "Debug-production";
+ };
+ CE6B64C12AF0F46900FBC49C /* Debug-development */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 9C0275AC840A610349C5E7C4 /* Pods-RunnerTests.debug-development.xcconfig */;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 1;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ DEVELOPMENT_TEAM = 362TXNZD27;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu17;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ GENERATE_INFOPLIST_FILE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 16.6;
+ LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
+ MARKETING_VERSION = 1.0;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = "io.projectcatalyst.catalyst-voices.RunnerTests";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SDKROOT = iphoneos;
+ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
+ SUPPORTS_MACCATALYST = NO;
+ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
+ SWIFT_EMIT_LOC_STRINGS = NO;
+ TARGETED_DEVICE_FAMILY = 1;
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
+ };
+ name = "Debug-development";
+ };
+ CE6B64C22AF0F46900FBC49C /* Debug-staging */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = C6461643F68A308EF81D55A5 /* Pods-RunnerTests.debug-staging.xcconfig */;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 1;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ DEVELOPMENT_TEAM = 362TXNZD27;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu17;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ GENERATE_INFOPLIST_FILE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 16.6;
+ LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
+ MARKETING_VERSION = 1.0;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = "io.projectcatalyst.catalyst-voices.RunnerTests";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SDKROOT = iphoneos;
+ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
+ SUPPORTS_MACCATALYST = NO;
+ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
+ SWIFT_EMIT_LOC_STRINGS = NO;
+ TARGETED_DEVICE_FAMILY = 1;
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
+ };
+ name = "Debug-staging";
+ };
+ CE6B64C32AF0F46900FBC49C /* Release-production */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 31A397FCE8216C1593BE34CF /* Pods-RunnerTests.release-production.xcconfig */;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 1;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ DEVELOPMENT_TEAM = 362TXNZD27;
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu17;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ GENERATE_INFOPLIST_FILE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 16.6;
+ LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
+ MARKETING_VERSION = 1.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = "io.projectcatalyst.catalyst-voices.RunnerTests";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SDKROOT = iphoneos;
+ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
+ SUPPORTS_MACCATALYST = NO;
+ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
+ SWIFT_EMIT_LOC_STRINGS = NO;
+ TARGETED_DEVICE_FAMILY = 1;
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = "Release-production";
+ };
+ CE6B64C42AF0F46900FBC49C /* Release-development */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = AB0EDBCC67C0C9925389B800 /* Pods-RunnerTests.release-development.xcconfig */;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 1;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ DEVELOPMENT_TEAM = 362TXNZD27;
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu17;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ GENERATE_INFOPLIST_FILE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 16.6;
+ LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
+ MARKETING_VERSION = 1.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = "io.projectcatalyst.catalyst-voices.RunnerTests";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SDKROOT = iphoneos;
+ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
+ SUPPORTS_MACCATALYST = NO;
+ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
+ SWIFT_EMIT_LOC_STRINGS = NO;
+ TARGETED_DEVICE_FAMILY = 1;
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = "Release-development";
+ };
+ CE6B64C52AF0F46900FBC49C /* Release-staging */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 2E0014B094388ADF8FBD708F /* Pods-RunnerTests.release-staging.xcconfig */;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 1;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ DEVELOPMENT_TEAM = 362TXNZD27;
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu17;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ GENERATE_INFOPLIST_FILE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 16.6;
+ LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
+ MARKETING_VERSION = 1.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = "io.projectcatalyst.catalyst-voices.RunnerTests";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SDKROOT = iphoneos;
+ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
+ SUPPORTS_MACCATALYST = NO;
+ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
+ SWIFT_EMIT_LOC_STRINGS = NO;
+ TARGETED_DEVICE_FAMILY = 1;
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = "Release-staging";
+ };
+ CE6B64C62AF0F46900FBC49C /* Profile-production */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 4FACF8FAA8DB4A9997126640 /* Pods-RunnerTests.profile-production.xcconfig */;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 1;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ DEVELOPMENT_TEAM = 362TXNZD27;
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu17;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ GENERATE_INFOPLIST_FILE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 16.6;
+ LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
+ MARKETING_VERSION = 1.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = "io.projectcatalyst.catalyst-voices.RunnerTests";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SDKROOT = iphoneos;
+ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
+ SUPPORTS_MACCATALYST = NO;
+ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
+ SWIFT_EMIT_LOC_STRINGS = NO;
+ TARGETED_DEVICE_FAMILY = 1;
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = "Profile-production";
+ };
+ CE6B64C72AF0F46900FBC49C /* Profile-development */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 9AAF575D874B9B76D88C0390 /* Pods-RunnerTests.profile-development.xcconfig */;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 1;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ DEVELOPMENT_TEAM = 362TXNZD27;
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu17;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ GENERATE_INFOPLIST_FILE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 16.6;
+ LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
+ MARKETING_VERSION = 1.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = "io.projectcatalyst.catalyst-voices.RunnerTests";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SDKROOT = iphoneos;
+ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
+ SUPPORTS_MACCATALYST = NO;
+ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
+ SWIFT_EMIT_LOC_STRINGS = NO;
+ TARGETED_DEVICE_FAMILY = 1;
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = "Profile-development";
+ };
+ CE6B64C82AF0F46900FBC49C /* Profile-staging */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 47CE06DF243826DB794F81DA /* Pods-RunnerTests.profile-staging.xcconfig */;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 1;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ DEVELOPMENT_TEAM = 362TXNZD27;
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu17;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ GENERATE_INFOPLIST_FILE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 16.6;
+ LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
+ MARKETING_VERSION = 1.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = "io.projectcatalyst.catalyst-voices.RunnerTests";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SDKROOT = iphoneos;
+ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
+ SUPPORTS_MACCATALYST = NO;
+ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
+ SWIFT_EMIT_LOC_STRINGS = NO;
+ TARGETED_DEVICE_FAMILY = 1;
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = "Profile-staging";
+ };
DC2A913225CA15840048C013 /* Debug-development */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -509,7 +1400,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
@@ -524,8 +1415,9 @@
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-dev";
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = 362TXNZD27;
ENABLE_BITCODE = NO;
- FLAVOR_APP_NAME = "[DEV] CUP";
+ FLAVOR_APP_NAME = "[DEV] Voices";
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
@@ -533,9 +1425,13 @@
);
PRODUCT_BUNDLE_IDENTIFIER = "io.projectcatalyst.catalyst-voices.dev";
PRODUCT_NAME = "$(TARGET_NAME)";
+ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
+ SUPPORTS_MACCATALYST = NO;
+ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = 1;
VERSIONING_SYSTEM = "apple-generic";
};
name = "Debug-development";
@@ -582,7 +1478,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@@ -600,8 +1496,9 @@
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-dev";
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = 362TXNZD27;
ENABLE_BITCODE = NO;
- FLAVOR_APP_NAME = "[DEV] CUP";
+ FLAVOR_APP_NAME = "[DEV] Voices";
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
@@ -609,8 +1506,12 @@
);
PRODUCT_BUNDLE_IDENTIFIER = "io.projectcatalyst.catalyst-voices.dev";
PRODUCT_NAME = "$(TARGET_NAME)";
+ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
+ SUPPORTS_MACCATALYST = NO;
+ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = 1;
VERSIONING_SYSTEM = "apple-generic";
};
name = "Release-development";
@@ -657,7 +1558,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@@ -673,8 +1574,9 @@
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-dev";
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = 362TXNZD27;
ENABLE_BITCODE = NO;
- FLAVOR_APP_NAME = "[DEV] CUP";
+ FLAVOR_APP_NAME = "[DEV] Voices";
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
@@ -682,8 +1584,12 @@
);
PRODUCT_BUNDLE_IDENTIFIER = "io.projectcatalyst.catalyst-voices.dev";
PRODUCT_NAME = "$(TARGET_NAME)";
+ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
+ SUPPORTS_MACCATALYST = NO;
+ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = 1;
VERSIONING_SYSTEM = "apple-generic";
};
name = "Profile-development";
@@ -736,7 +1642,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
@@ -751,8 +1657,9 @@
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-stg";
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = 362TXNZD27;
ENABLE_BITCODE = NO;
- FLAVOR_APP_NAME = "[STG] CUP";
+ FLAVOR_APP_NAME = "[STG] Voices";
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
@@ -760,9 +1667,13 @@
);
PRODUCT_BUNDLE_IDENTIFIER = "io.projectcatalyst.catalyst-voices.stg";
PRODUCT_NAME = "$(TARGET_NAME)";
+ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
+ SUPPORTS_MACCATALYST = NO;
+ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = 1;
VERSIONING_SYSTEM = "apple-generic";
};
name = "Debug-staging";
@@ -809,7 +1720,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@@ -827,8 +1738,9 @@
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-stg";
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = 362TXNZD27;
ENABLE_BITCODE = NO;
- FLAVOR_APP_NAME = "[STG] CUP";
+ FLAVOR_APP_NAME = "[STG] Voices";
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
@@ -836,8 +1748,12 @@
);
PRODUCT_BUNDLE_IDENTIFIER = "io.projectcatalyst.catalyst-voices.stg";
PRODUCT_NAME = "$(TARGET_NAME)";
+ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
+ SUPPORTS_MACCATALYST = NO;
+ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = 1;
VERSIONING_SYSTEM = "apple-generic";
};
name = "Release-staging";
@@ -884,7 +1800,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@@ -900,8 +1816,9 @@
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-stg";
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+ DEVELOPMENT_TEAM = 362TXNZD27;
ENABLE_BITCODE = NO;
- FLAVOR_APP_NAME = "[STG] CUP";
+ FLAVOR_APP_NAME = "[STG] Voices";
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
@@ -909,8 +1826,12 @@
);
PRODUCT_BUNDLE_IDENTIFIER = "io.projectcatalyst.catalyst-voices.stg";
PRODUCT_NAME = "$(TARGET_NAME)";
+ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
+ SUPPORTS_MACCATALYST = NO;
+ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = 1;
VERSIONING_SYSTEM = "apple-generic";
};
name = "Profile-staging";
@@ -950,6 +1871,22 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = "Release-production";
};
+ CE6B64C92AF0F46900FBC49C /* Build configuration list for PBXNativeTarget "RunnerTests" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ CE6B64C02AF0F46900FBC49C /* Debug-production */,
+ CE6B64C12AF0F46900FBC49C /* Debug-development */,
+ CE6B64C22AF0F46900FBC49C /* Debug-staging */,
+ CE6B64C32AF0F46900FBC49C /* Release-production */,
+ CE6B64C42AF0F46900FBC49C /* Release-development */,
+ CE6B64C52AF0F46900FBC49C /* Release-staging */,
+ CE6B64C62AF0F46900FBC49C /* Profile-production */,
+ CE6B64C72AF0F46900FBC49C /* Profile-development */,
+ CE6B64C82AF0F46900FBC49C /* Profile-staging */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = "Release-production";
+ };
/* End XCConfigurationList section */
};
rootObject = 97C146E61CF9000F007C117D /* Project object */;
diff --git a/catalyst_voices/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/catalyst_voices/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
index a6b826db27d..2ff054957ff 100644
--- a/catalyst_voices/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
+++ b/catalyst_voices/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
@@ -37,6 +37,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/catalyst_voices/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/catalyst_voices/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
deleted file mode 100644
index b23a03e03be..00000000000
--- a/catalyst_voices/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "images" : [
- {
- "filename" : "LaunchImage@1x.png",
- "idiom" : "universal",
- "scale" : "1x"
- },
- {
- "filename" : "LaunchImage@2x.png",
- "idiom" : "universal",
- "scale" : "2x"
- },
- {
- "filename" : "LaunchImage@3x.png",
- "idiom" : "universal",
- "scale" : "3x"
- }
- ],
- "info" : {
- "author" : "xcode",
- "version" : 1
- }
-}
diff --git a/catalyst_voices/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/catalyst_voices/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
deleted file mode 100644
index 9da19eacad3..00000000000
Binary files a/catalyst_voices/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png and /dev/null differ
diff --git a/catalyst_voices/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@1x.png b/catalyst_voices/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@1x.png
deleted file mode 100644
index c01a816c036..00000000000
Binary files a/catalyst_voices/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@1x.png and /dev/null differ
diff --git a/catalyst_voices/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/catalyst_voices/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
deleted file mode 100644
index 43470804d40..00000000000
Binary files a/catalyst_voices/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png and /dev/null differ
diff --git a/catalyst_voices/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/catalyst_voices/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
deleted file mode 100644
index a7e4f84818c..00000000000
Binary files a/catalyst_voices/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png and /dev/null differ
diff --git a/catalyst_voices/ios/Runner/Info.plist b/catalyst_voices/ios/Runner/Info.plist
index 25236cf5537..773cb77160f 100644
--- a/catalyst_voices/ios/Runner/Info.plist
+++ b/catalyst_voices/ios/Runner/Info.plist
@@ -2,11 +2,8 @@
- CFBundleLocalizations
-
- en
- es
-
+ CADisableMinimumFrameDurationOnPhone
+
CFBundleDevelopmentRegion
$(DEVELOPMENT_LANGUAGE)
CFBundleDisplayName
@@ -17,6 +14,11 @@
$(PRODUCT_BUNDLE_IDENTIFIER)
CFBundleInfoDictionaryVersion
6.0
+ CFBundleLocalizations
+
+ en
+ es
+
CFBundleName
$(FLAVOR_APP_NAME)
CFBundlePackageType
@@ -29,6 +31,8 @@
$(FLUTTER_BUILD_NUMBER)
LSRequiresIPhoneOS
+ UIApplicationSupportsIndirectInputEvents
+
UILaunchStoryboardName
LaunchScreen
UIMainStoryboardFile
@@ -36,21 +40,15 @@
UISupportedInterfaceOrientations
UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
UISupportedInterfaceOrientations~ipad
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationPortraitUpsideDown
UIInterfaceOrientationLandscapeLeft
UIInterfaceOrientationLandscapeRight
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
UIViewControllerBasedStatusBarAppearance
- CADisableMinimumFrameDurationOnPhone
-
- UIApplicationSupportsIndirectInputEvents
-
diff --git a/catalyst_voices/ios/RunnerTests/RunnerTests.m b/catalyst_voices/ios/RunnerTests/RunnerTests.m
new file mode 100644
index 00000000000..2dd7ced267d
--- /dev/null
+++ b/catalyst_voices/ios/RunnerTests/RunnerTests.m
@@ -0,0 +1,11 @@
+//
+// RunnerTests.m
+// RunnerTests
+//
+// Created by minikin on 2023-10-31.
+//
+
+@import XCTest;
+@import integration_test;
+
+INTEGRATION_TEST_IOS_RUNNER(RunnerTests)
diff --git a/catalyst_voices/lib/app/view/app.dart b/catalyst_voices/lib/app/view/app.dart
index 65df904be6c..1c74787030b 100644
--- a/catalyst_voices/lib/app/view/app.dart
+++ b/catalyst_voices/lib/app/view/app.dart
@@ -1,3 +1,4 @@
+import 'package:catalyst_voices/dummy/dummy.dart';
import 'package:catalyst_voices/l10n/l10n.dart';
import 'package:flutter/material.dart';
@@ -9,16 +10,7 @@ final class App extends StatelessWidget {
return const MaterialApp(
localizationsDelegates: AppLocalizations.localizationsDelegates,
supportedLocales: AppLocalizations.supportedLocales,
- home: Scaffold(
- body: Center(
- child: Text(
- 'Catalyst Voices',
- style: TextStyle(
- fontSize: 48,
- ),
- ),
- ),
- ),
+ home: LoginPage(),
);
}
}
diff --git a/catalyst_voices/lib/dummy/constants.dart b/catalyst_voices/lib/dummy/constants.dart
new file mode 100644
index 00000000000..af2935d3325
--- /dev/null
+++ b/catalyst_voices/lib/dummy/constants.dart
@@ -0,0 +1,10 @@
+import 'package:flutter/foundation.dart';
+
+abstract class WidgetKeys {
+ static const loginScreen = Key('loginScreen');
+ static const usernameTextController = Key('usernameTextController');
+ static const passwordTextController = Key('passwordTextController');
+ static const loginButton = Key('loginButton');
+ static const loginErrorSnackbar = Key('loginErrorSnackbar');
+ static const homeScreen = Key('homeScreen');
+}
diff --git a/catalyst_voices/lib/dummy/dummy.dart b/catalyst_voices/lib/dummy/dummy.dart
new file mode 100644
index 00000000000..19e88d2e485
--- /dev/null
+++ b/catalyst_voices/lib/dummy/dummy.dart
@@ -0,0 +1,8 @@
+// These files used as dummy implementations
+// for integration tests. As soon as we have
+// a real implementation, we can remove them.
+// TODO(minikin): remove dummy files, https://github.com/input-output-hk/catalyst-voices/issues/103.
+
+export 'constants.dart';
+export 'home_screen.dart';
+export 'login_page.dart';
diff --git a/catalyst_voices/lib/dummy/home_screen.dart b/catalyst_voices/lib/dummy/home_screen.dart
new file mode 100644
index 00000000000..2d27352a90f
--- /dev/null
+++ b/catalyst_voices/lib/dummy/home_screen.dart
@@ -0,0 +1,16 @@
+import 'package:catalyst_voices/dummy/dummy.dart';
+import 'package:flutter/material.dart';
+
+final class HomeScreen extends StatelessWidget {
+ const HomeScreen({super.key});
+
+ @override
+ Widget build(BuildContext context) {
+ return const Scaffold(
+ key: WidgetKeys.homeScreen,
+ body: Center(
+ child: Text('Catalyst Voices'),
+ ),
+ );
+ }
+}
diff --git a/catalyst_voices/lib/dummy/login_page.dart b/catalyst_voices/lib/dummy/login_page.dart
new file mode 100644
index 00000000000..cc37b8691e1
--- /dev/null
+++ b/catalyst_voices/lib/dummy/login_page.dart
@@ -0,0 +1,121 @@
+import 'package:catalyst_voices/dummy/dummy.dart';
+import 'package:flutter/material.dart';
+
+final class LoginPage extends StatefulWidget {
+ const LoginPage({super.key});
+
+ @override
+ State createState() => _LoginPageState();
+}
+
+abstract class _Constants {
+ static const usernameLabelText = 'Username';
+ static const passwordLabelText = 'Password';
+ static const username = 'robot';
+ static const password = '1234';
+ static const errorMessage = 'Wrong credentials';
+ static const loginButtonText = 'Login';
+}
+
+final class _LoginPageState extends State {
+ late TextEditingController usernameTextController;
+ late TextEditingController passwordTextController;
+
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ key: WidgetKeys.loginScreen,
+ body: Center(
+ child: SizedBox(
+ width: 400,
+ height: 400,
+ child: Card(
+ margin: const EdgeInsets.all(20),
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ Padding(
+ padding: const EdgeInsets.all(16),
+ child: TextFormField(
+ key: WidgetKeys.usernameTextController,
+ controller: usernameTextController,
+ decoration: const InputDecoration(
+ border: OutlineInputBorder(),
+ labelText: _Constants.usernameLabelText,
+ ),
+ ),
+ ),
+ Padding(
+ padding: const EdgeInsets.all(16),
+ child: TextFormField(
+ key: WidgetKeys.passwordTextController,
+ controller: passwordTextController,
+ obscureText: true,
+ decoration: const InputDecoration(
+ border: OutlineInputBorder(),
+ labelText: _Constants.passwordLabelText,
+ ),
+ ),
+ ),
+ Padding(
+ padding: const EdgeInsets.all(16),
+ child: ElevatedButton(
+ key: WidgetKeys.loginButton,
+ onPressed: () => _loginButtonPressed(context),
+ child: const Text(_Constants.loginButtonText),
+ ),
+ ),
+ ],
+ ),
+ ),
+ ),
+ ),
+ );
+ }
+
+ @override
+ void dispose() {
+ usernameTextController.dispose();
+ passwordTextController.dispose();
+ super.dispose();
+ }
+
+ @override
+ void initState() {
+ super.initState();
+ usernameTextController = TextEditingController();
+ passwordTextController = TextEditingController();
+ }
+
+ void _loginButtonPressed(BuildContext context) {
+ if (_validateCredentials()) {
+ _navigateToHomeScreen(context);
+ } else {
+ _showError(context);
+ }
+ }
+
+ void _navigateToHomeScreen(BuildContext context) {
+ Navigator.push(
+ context,
+ MaterialPageRoute(
+ builder: (context) => const HomeScreen(),
+ ),
+ );
+ }
+
+ void _showError(BuildContext context) {
+ ScaffoldMessenger.of(context).showSnackBar(
+ const SnackBar(
+ key: WidgetKeys.loginErrorSnackbar,
+ content: Text(_Constants.errorMessage),
+ ),
+ );
+ }
+
+ bool _validateCredentials() {
+ final username = usernameTextController.text;
+ final password = passwordTextController.text;
+ return username == _Constants.username && password == _Constants.password;
+ }
+}
diff --git a/catalyst_voices/melos_catalyst_voices.iml b/catalyst_voices/melos_catalyst_voices.iml
index 4c6eb80ac40..9fc8ce79a0d 100644
--- a/catalyst_voices/melos_catalyst_voices.iml
+++ b/catalyst_voices/melos_catalyst_voices.iml
@@ -4,12 +4,26 @@
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
\ No newline at end of file
+
diff --git a/catalyst_voices/pubspec.yaml b/catalyst_voices/pubspec.yaml
index dc7e4faeded..859443fa2fd 100644
--- a/catalyst_voices/pubspec.yaml
+++ b/catalyst_voices/pubspec.yaml
@@ -22,7 +22,8 @@ dev_dependencies:
path: ../catalyst_voices_packages/packages/catalyst_analysis
flutter_test:
sdk: flutter
- melos: ^3.1.1
+ integration_test:
+ sdk: flutter
mocktail: ^1.0.1
flutter:
diff --git a/catalyst_voices/test_driver/integration_test.dart b/catalyst_voices/test_driver/integration_test.dart
new file mode 100644
index 00000000000..b38629cca97
--- /dev/null
+++ b/catalyst_voices/test_driver/integration_test.dart
@@ -0,0 +1,3 @@
+import 'package:integration_test/integration_test_driver.dart';
+
+Future main() => integrationDriver();
diff --git a/catalyst_voices_packages/melos.yaml b/catalyst_voices_packages/melos.yaml
deleted file mode 100644
index 232884c3796..00000000000
--- a/catalyst_voices_packages/melos.yaml
+++ /dev/null
@@ -1,46 +0,0 @@
-name: CatalystFlutter
-repository: https://github.com/input-output-hk/catalyst-flutter
-
-packages:
- - packages/*
- - packages/*/*
- - packages/*/*/*
-
-command:
- version:
- # Generate commit links in package changelogs.
- linkToCommits: true
- # Only allow versioning to happen on main branch.
- # branch: main
- # Additionally build a changelog at the root of the workspace.
- workspaceChangelog: true
-
- bootstrap:
- # It seems so that running "pub get" in parallel has some issues (like
- # https://github.com/dart-lang/pub/issues/3404). Disabling this feature
- # makes the CI much more stable.
- runPubGetInParallel: false
-
-scripts:
- lint:all:
- run: melos run analyze && melos run format
- description: Run all static analysis checks.
-
- analyze:
- # We are setting the concurrency to 1 because a higher concurrency can crash
- # the analysis server on low performance machines (like GitHub Actions).
- run: |
- melos exec -c 1 -- \
- dart analyze . --fatal-infos
- description: |
- Run `dart analyze` in all packages.
- - Note: you can also rely on your IDEs Dart Analysis / Issues window.
- qualitycheck:
- run: |
- melos run clean:deep && \
- melos clean && \
- melos bootstrap && \
- melos run lint:all && \
- melos run build:all && \
- melos run test:all
- description: Run all targets generally expected in CI for a full local quality check.
\ No newline at end of file
diff --git a/docs/FLUTTER_INTEGRATION_TEST.md b/docs/FLUTTER_INTEGRATION_TEST.md
new file mode 100644
index 00000000000..d8437aef977
--- /dev/null
+++ b/docs/FLUTTER_INTEGRATION_TEST.md
@@ -0,0 +1,137 @@
+# Flutter Integration Tests
+
+* [Flutter Integration Tests](#flutter-integration-tests)
+ * [Requirements](#requirements)
+ * [Run Integration Tests](#run-integration-tests)
+ * [CI](#ci)
+ * [View Integration Test Results](#view-integration-test-results)
+ * [Local](#local)
+ * [Web](#web)
+ * [iOS](#ios)
+ * [Run integration test in Xcode](#run-integration-test-in-xcode)
+ * [Run integration test from command line](#run-integration-test-from-command-line)
+ * [Android](#android)
+ * [Run integration test in Android Studio](#run-integration-test-in-android-studio)
+ * [Run integration test from command line](#run-integration-test-from-command-line-1)
+ * [Run integration test in Firebase Test Lab](#run-integration-test-in-firebase-test-lab)
+ * [Gcloud CLI](#gcloud-cli)
+ * [Links](#links)
+
+## Requirements
+
+* macOS 14.0 + (if you want to run iOS tests locally)
+* Xcode: 14.2+ (required for iOS tests)
+* Android Studio: Android Studio Electric Eel | 2022.1.1 +
+* [gcloud CLI](https://cloud.google.com/sdk/gcloud)
+
+## Run Integration Tests
+
+### CI
+
+* We run integration test for Web on every PR using chromedriver.
+* We use [FireBase Test Lab](https://firebase.google.com/docs/test-lab) to run integration tests on iOS and Android,
+nightly.(It's expensive to run integration tests on iOS and Android on every PR)
+
+#### View Integration Test Results
+
+To view integration tests results for Web, iOS and Android,
+navigate to [Firebase Test Lab](https://console.firebase.google.com/u/0/project/dev-catalyst-voice/testlab/histories)
+and select the appropriate history.
+
+### Local
+
+#### Web
+
+Navigate to `catalyst_voices` and run:
+
+```sh
+flutter drive --driver=test_driver/integration_test.dart \
+--target=integration_test/main.dart \
+--flavor development \
+-d chrome
+```
+
+#### iOS
+
+##### Run integration test in Xcode
+
+Navigate to `catalyst_voices`
+
+Build the integration test for iOS
+
+```sh
+flutter build ios --config-only integration_test/main.dart --flavor development
+```
+
+Open iOS app in Xcode, select appropriate schema and run the integration test target `Product > Test` or `Cmd + U`.
+
+##### Run integration test from command line
+
+Navigate to `catalyst_voices`
+
+Start iOS Simulator or connect iOS device and run:
+
+```sh
+flutter test integration_test/main.dart --flavor development
+```
+
+#### Android
+
+##### Run integration test in Android Studio
+
+Navigate to `catalyst_voices/android` start Android Emulator or connect Android device and run:
+
+```sh
+./gradlew app:connectedAndroidTest -Ptarget=`pwd`/../integration_test/main.dart
+```
+
+>Note: To use --dart-define with gradlew you must base64 encode all parameters,
+>and pass them to gradle in a comma separated list:
+
+```sh
+./gradlew project:task -Pdart-defines="{base64(key=value)},[...]"
+```
+
+##### Run integration test from command line
+
+Navigate to `catalyst_voices` start Android Emulator or connect Android device and run:
+
+```sh
+flutter test integration_test/main.dart --flavor development
+```
+
+### Run integration test in Firebase Test Lab
+
+Android:
+
+```sh
+./scripts/flutter_android_integration_test.sh
+```
+
+iOS:
+
+```sh
+./scripts/flutter_ios_integration_test.sh
+```
+
+## Gcloud CLI
+
+List available android devices:
+
+```sh
+gcloud firebase test android models list
+```
+
+List available iOS devices:
+
+```sh
+gcloud firebase test ios models list
+```
+
+## Links
+
+* [Flutter Integration Tests](https://flutter.dev/docs/testing/integration-tests)
+* [Flutter Integration Tests GitHub](https://github.com/flutter/flutter/tree/main/packages/integration_test)
+* [Running Flutter Driver tests with Web](https://github.com/flutter/flutter/wiki/Running-Flutter-Driver-tests-with-Web)
+* [Web install scripts for CI for Flutter Web](https://github.com/flutter/web_installers/tree/master)
+* [Integration Test Example](https://github.com/flutter/flutter/tree/main/packages/integration_test/example)
diff --git a/catalyst_voices/melos.yaml b/melos.yaml
similarity index 71%
rename from catalyst_voices/melos.yaml
rename to melos.yaml
index 8bef8715688..fb25d866d40 100644
--- a/catalyst_voices/melos.yaml
+++ b/melos.yaml
@@ -1,26 +1,17 @@
name: catalyst_voices
-repository: https://github.com/minikin/didactic-parakeet/
+repository: https://github.com/input-output-hk/catalyst-voices
packages:
- - lib/**
- - packages/**
- - 'tests/*'
+ - catalyst_voices/*
+ - catalyst_voices_packages/packages/*
+ - catalyst_voices_packages/packages/*/*
+ - catalyst_voices_packages/packages/*/*/*
command:
version:
- # Generate commit links in package changelogs.
linkToCommits: true
- # Only allow versioning to happen on main branch.
- # branch: main
- # Additionally build a changelog at the root of the workspace.
workspaceChangelog: true
- bootstrap:
- # It seems so that running "pub get" in parallel has some issues (like
- # https://github.com/dart-lang/pub/issues/3404). Disabling this feature
- # makes the CI much more stable.
- runPubGetInParallel: false
-
scripts:
lint:
run: melos run analyze
@@ -66,6 +57,8 @@ scripts:
melos exec -- genhtml coverage/lcov.info --output-directory=coverage/
description: Generate coverage for the selected package.
- build:
- run: melos exec fvm flutter build
- description: Build app.
\ No newline at end of file
+ build:pub_get:all:
+ run: flutter pub get
+ exec:
+ concurrency: 6
+ description: Install all dependencies
\ No newline at end of file
diff --git a/catalyst_voices_packages/melos_catalystflutter.iml b/melos_catalyst_voices.iml
similarity index 100%
rename from catalyst_voices_packages/melos_catalystflutter.iml
rename to melos_catalyst_voices.iml
diff --git a/pubspec.yaml b/pubspec.yaml
new file mode 100644
index 00000000000..3b3107207cc
--- /dev/null
+++ b/pubspec.yaml
@@ -0,0 +1,7 @@
+name: catalyst_voices_workspace
+
+environment:
+ sdk: '>=3.1.5 <4.0.0'
+
+dev_dependencies:
+ melos: ^3.2.0
diff --git a/scripts/flutter_android_integration_test.sh b/scripts/flutter_android_integration_test.sh
new file mode 100755
index 00000000000..072d5586539
--- /dev/null
+++ b/scripts/flutter_android_integration_test.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+set -e
+
+pushd catalyst_voices
+flutter build apk integration_test/main.dart --profile --flavor development
+
+pushd android
+./gradlew app:assembleAndroidTest
+./gradlew app:assembleDebug -Ptarget=integration_test/main.dart
+popd
+
+gcloud firebase test android run --type instrumentation \
+ --app ../catalyst_voices/build/app/outputs/apk/development/debug/app-development-debug.apk \
+ --test ../catalyst_voices/build/app/outputs/apk/androidTest/development/debug/app-development-debug-androidTest.apk \
+ --device-ids=redfin \
+ --os-version-ids=30 \
+ --locales=en_GB \
+ --orientations=portrait \
+ --use-orchestrator \
+ --timeout 15m \
+ --results-bucket=gs://dev-catalyst-voice.appspot.com \
+ --results-dir=integration_test_results/android/
diff --git a/scripts/flutter_ios_integration_test.sh b/scripts/flutter_ios_integration_test.sh
new file mode 100755
index 00000000000..f3898c5f862
--- /dev/null
+++ b/scripts/flutter_ios_integration_test.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+set -e
+
+output="../build/ios_integ"
+product="build/ios_integ/Build/Products"
+
+pushd catalyst_voices
+flutter build ios integration_test/main.dart --release --flavor development
+
+pushd ios
+xcodebuild -workspace Runner.xcworkspace \
+ -allowProvisioningUpdates \
+ -scheme development \
+ -xcconfig Flutter/Release.xcconfig \
+ -configuration Release-development \
+ -sdk iphoneos build-for-testing \
+ -derivedDataPath $output
+popd
+
+## Verify test build locally before pushing to google cloud.
+# xcodebuild test-without-building \
+# -xctestrun "../catalyst_voices/build/ios_integ/Build/Products/development_iphoneos17.0-arm64.xctestrun" \
+# -destination id=00008120-001934493663C01E
+
+pushd $product
+ls
+zip -r "ios_tests.zip" "Release-development-iphoneos" "development_iphoneos17.0-arm64.xctestrun"
+popd
+
+gcloud firebase test ios run \
+ --test "../catalyst_voices/build/ios_integ/Build/Products/ios_tests.zip" \
+ --device model=iphone14pro \
+ --device version=16.6 \
+ --device locale=en_GB \
+ --device orientation=portrait \
+ --timeout 15m \
+ --results-bucket=gs://dev-catalyst-voice.appspot.com \
+ --results-dir=integration_test_results/ios/
+
+
diff --git a/scripts/flutter_web_integration_test.sh b/scripts/flutter_web_integration_test.sh
new file mode 100755
index 00000000000..c11abf0b70b
--- /dev/null
+++ b/scripts/flutter_web_integration_test.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+set -e
+
+# Path to ChromeDriver in Ubuntu image in GitHub Workspace
+/usr/local/share/chromedriver-linux64/chromedriver --port=4444 &
+# Wait for 5 seconds to allow ChromeDriver to start
+sleep 5
+
+cd ./catalyst_voices
+
+flutter drive --driver=test_driver/integration_test.dart \
+--target=integration_test/main.dart \
+--flavor development \
+-d web-server \
+--profile --browser-name=chrome
\ No newline at end of file