From 26a6be039a0824e16ef6dee6f9813c4c27412d18 Mon Sep 17 00:00:00 2001 From: Shounak Mulay Date: Fri, 18 Aug 2023 11:03:50 +0530 Subject: [PATCH 1/6] Setup patrol --- android/app/build.gradle | 8 + .../androidTest/java/MainActivityTest.java | 32 + integration_test/example_test.dart | 25 + integration_test/test_bundle.dart | 79 ++ ios/Podfile | 4 + ios/Runner.xcodeproj/project.pbxproj | 1034 +++++++++++++++-- .../xcshareddata/xcschemes/dev.xcscheme | 10 + .../xcshareddata/xcschemes/prod.xcscheme | 11 + .../xcshareddata/xcschemes/qa.xcscheme | 11 + ios/RunnerUITests/RunnerUITests.m | 5 + pubspec.lock | 91 +- pubspec.yaml | 8 + 12 files changed, 1193 insertions(+), 125 deletions(-) create mode 100644 android/app/src/androidTest/java/MainActivityTest.java create mode 100644 integration_test/example_test.dart create mode 100644 integration_test/test_bundle.dart create mode 100644 ios/RunnerUITests/RunnerUITests.m diff --git a/android/app/build.gradle b/android/app/build.gradle index 4da9221e..4d7a7d4b 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -48,6 +48,12 @@ android { targetSdkVersion project.properties['flutter.targetSdkVersion'].toInteger() versionCode flutterVersionCode.toInteger() versionName flutterVersionName + + testInstrumentationRunner "pl.leancode.patrol.PatrolJUnitRunner" + } + + testOptions { + execution "ANDROIDX_TEST_ORCHESTRATOR" } flavorDimensions "flavors" @@ -108,4 +114,6 @@ dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'androidx.core:core-splashscreen:1.0.0-beta01' + + androidTestUtil "androidx.test:orchestrator:1.4.2" } diff --git a/android/app/src/androidTest/java/MainActivityTest.java b/android/app/src/androidTest/java/MainActivityTest.java new file mode 100644 index 00000000..1350d4ad --- /dev/null +++ b/android/app/src/androidTest/java/MainActivityTest.java @@ -0,0 +1,32 @@ +import androidx.test.platform.app.InstrumentationRegistry; + +import com.example.flutter_template.MainActivity; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.junit.runners.Parameterized.Parameters; +import pl.leancode.patrol.PatrolJUnitRunner; + +@RunWith(Parameterized.class) +public class MainActivityTest { + @Parameters(name = "{0}") + public static Object[] testCases() { + PatrolJUnitRunner instrumentation = (PatrolJUnitRunner) InstrumentationRegistry.getInstrumentation(); + instrumentation.setUp(MainActivity.class); + instrumentation.waitForPatrolAppService(); + return instrumentation.listDartTests(); + } + + public MainActivityTest(String dartTestName) { + this.dartTestName = dartTestName; + } + + private final String dartTestName; + + @Test + public void runDartTest() { + PatrolJUnitRunner instrumentation = (PatrolJUnitRunner) InstrumentationRegistry.getInstrumentation(); + instrumentation.runDartTest(dartTestName); + } +} diff --git a/integration_test/example_test.dart b/integration_test/example_test.dart new file mode 100644 index 00000000..64a121ea --- /dev/null +++ b/integration_test/example_test.dart @@ -0,0 +1,25 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:patrol/patrol.dart'; + +void main() { + patrolTest( + 'counter state is the same after going to home and switching apps', + nativeAutomation: true, + (patrol) async { + // Replace later with your app's main widget + await patrol.pumpWidgetAndSettle( + MaterialApp( + home: Scaffold( + appBar: AppBar(title: const Text('app')), + backgroundColor: Colors.blue, + ), + ), + ); + + expect(patrol('app'), findsOneWidget); + await patrol.native.openQuickSettings(); + await patrol.native.pressHome(); + }, + ); +} diff --git a/integration_test/test_bundle.dart b/integration_test/test_bundle.dart new file mode 100644 index 00000000..21c3911e --- /dev/null +++ b/integration_test/test_bundle.dart @@ -0,0 +1,79 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND AND DO NOT COMMIT TO VERSION CONTROL +// ignore_for_file: type=lint, invalid_use_of_internal_member + +import 'dart:async'; + +import 'package:flutter_test/flutter_test.dart'; +import 'package:patrol/patrol.dart'; +import 'package:patrol/src/native/contracts/contracts.pbgrpc.dart'; +import 'package:test_api/src/backend/invoker.dart'; + +// START: GENERATED TEST IMPORTS +import 'example_test.dart' as example_test; +// END: GENERATED TEST IMPORTS + +Future main() async { + // This is the entrypoint of the bundled Dart test. + // + // Its responsibilies are: + // * Running a special Dart test that runs before all the other tests and + // explores the hierarchy of groups and tests. + // * Hosting a PatrolAppService, which the native side of Patrol uses to get + // the Dart tests, and to request execution of a specific Dart test. + // + // When running on Android, the Android Test Orchestrator, before running the + // tests, makes an initial run to gather the tests that it will later run. The + // native side of Patrol (specifically: PatrolJUnitRunner class) is hooked + // into the Android Test Orchestrator lifecycle and knows when that initial + // run happens. When it does, PatrolJUnitRunner makes an RPC call to + // PatrolAppService and asks it for Dart tests. + // + // When running on iOS, the native side of Patrol (specifically: the + // PATROL_INTEGRATION_TEST_IOS_RUNNER macro) makes an initial run to gather + // the tests that it will later run (same as the Android). During that initial + // run, it makes an RPC call to PatrolAppSevice and asks it for Dart tests. + // + // Once the native runner has the list of Dart tests, it dynamically creates + // native test cases from them. On Android, this is done using the + // Parametrized JUnit runner. On iOS, new test case methods are swizzled into + // the RunnerUITests class, taking advantage of the very dynamic nature of + // Objective-C runtime. + // + // Execution of these dynamically created native test cases is then fully + // managed by the underlying native test framework (JUnit on Android, XCTest + // on iOS). The native test cases do only one thing - request execution of the + // Dart test (out of which they had been created) and wait for it to complete. + // The result of running the Dart test is the result of the native test case. + + final nativeAutomator = NativeAutomator(config: NativeAutomatorConfig()); + await nativeAutomator.initialize(); + final binding = PatrolBinding.ensureInitialized(); + final testExplorationCompleter = Completer(); + + // A special test to expore the hierarchy of groups and tests. This is a hack + // around https://github.com/dart-lang/test/issues/1998. + // + // This test must be the first to run. If not, the native side likely won't + // receive any tests, and everything will fall apart. + test('patrol_test_explorer', () { + final topLevelGroup = Invoker.current!.liveTest.groups.first; + final dartTestGroup = createDartTestGroup(topLevelGroup); + testExplorationCompleter.complete(dartTestGroup); + }); + + // START: GENERATED TEST GROUPS + group('example_test', example_test.main); + // END: GENERATED TEST GROUPS + + final dartTestGroup = await testExplorationCompleter.future; + final appService = PatrolAppService(topLevelDartTestGroup: dartTestGroup); + binding.patrolAppService = appService; + await runAppService(appService); + + // Until now, the native test runner was waiting for us, the Dart side, to + // come alive. Now that we did, let's tell it that we're ready to be asked + // about Dart tests. + await nativeAutomator.markPatrolAppServiceReady(); + + await appService.testExecutionCompleted; +} diff --git a/ios/Podfile b/ios/Podfile index 88359b22..7fec35a0 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -32,6 +32,10 @@ target 'Runner' do use_modular_headers! flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) + + target 'RunnerUITests' do + inherit! :complete + end end post_install do |installer| diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index eafe22cd..0dcdf39a 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -11,11 +11,23 @@ 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 8A1F1DA2553D6ECCA3EBF106 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0C052412C035B70D8E6AA3AE /* Pods_Runner.framework */; }; + 8B53BCCA2A8F2FA9005EF812 /* RunnerUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B53BCC92A8F2FA9005EF812 /* RunnerUITests.m */; }; 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 */; }; + E9C2A829C782444D68D15F3C /* Pods_Runner_RunnerUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6859A6E1607A4516B7B43777 /* Pods_Runner_RunnerUITests.framework */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + 8B53BCCD2A8F2FA9005EF812 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 97C146ED1CF9000F007C117D; + remoteInfo = Runner; + }; +/* End PBXContainerItemProxy section */ + /* Begin PBXCopyFilesBuildPhase section */ 9705A1C41CF9048500538489 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; @@ -39,18 +51,27 @@ 191363F9F8D4C1A8C42AB179 /* Pods-Runner.release-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-prod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-prod.xcconfig"; sourceTree = ""; }; 1C5B5ECB3EFFB0A46BD3084E /* Pods-Runner.release-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-dev.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-dev.xcconfig"; sourceTree = ""; }; 1EE877CB3235620FE96536D3 /* Pods-Runner.debug-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-dev.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-dev.xcconfig"; sourceTree = ""; }; + 2BD73AD388B112FA9F5C0266 /* Pods-Runner-RunnerUITests.debug-qa.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner-RunnerUITests.debug-qa.xcconfig"; path = "Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests.debug-qa.xcconfig"; sourceTree = ""; }; 2FB84EAA3019EEEDC2B441DF /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 38E2CF0427CDCCD9930CEB4B /* Pods-Runner.profile-qa.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-qa.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-qa.xcconfig"; sourceTree = ""; }; + 39A1AB7CF905860AD0F33543 /* Pods-Runner-RunnerUITests.debug-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner-RunnerUITests.debug-prod.xcconfig"; path = "Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests.debug-prod.xcconfig"; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 4A957B3C59BBB9BF434F2AED /* Pods-Runner-RunnerUITests.profile-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner-RunnerUITests.profile-dev.xcconfig"; path = "Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests.profile-dev.xcconfig"; sourceTree = ""; }; + 64FC62AFEF0CA5D8F808BC65 /* Pods-Runner-RunnerUITests.release-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner-RunnerUITests.release-prod.xcconfig"; path = "Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests.release-prod.xcconfig"; sourceTree = ""; }; + 6859A6E1607A4516B7B43777 /* Pods_Runner_RunnerUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner_RunnerUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 6DB98ACF0BEEDB3FE85BF588 /* Pods-Runner.profile-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-prod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-prod.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 = ""; }; + 7854FEFA082F005D17D857D9 /* Pods-Runner-RunnerUITests.debug-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner-RunnerUITests.debug-dev.xcconfig"; path = "Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests.debug-dev.xcconfig"; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release-prod.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Release-prod.xcconfig"; path = "Flutter/Release-prod.xcconfig"; sourceTree = ""; }; 817EE37030C421769A7F7806 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 8B004E0A27A3AF4700D25C3F /* Debug-dev.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Debug-dev.xcconfig"; path = "Flutter/Debug-dev.xcconfig"; sourceTree = ""; }; + 8B53BCC72A8F2FA9005EF812 /* RunnerUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 8B53BCC92A8F2FA9005EF812 /* RunnerUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RunnerUITests.m; sourceTree = ""; }; 8B65341627B0F779001868BE /* Debug-qa.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Debug-qa.xcconfig"; path = "Flutter/Debug-qa.xcconfig"; sourceTree = ""; }; 8BA3C5F927B2840200B19BBC /* Release-dev.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Release-dev.xcconfig"; path = "Flutter/Release-dev.xcconfig"; sourceTree = ""; }; 8BA3C5FB27B284D000B19BBC /* Release-qa.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Release-qa.xcconfig"; path = "Flutter/Release-qa.xcconfig"; sourceTree = ""; }; + 9290AC77854655CC5E575732 /* Pods-Runner-RunnerUITests.profile-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner-RunnerUITests.profile-prod.xcconfig"; path = "Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests.profile-prod.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug-prod.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = "Debug-prod.xcconfig"; path = "Flutter/Debug-prod.xcconfig"; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -59,10 +80,21 @@ 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 = ""; }; A823846B657344FBC2B3D6BF /* Pods-Runner.profile-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-dev.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-dev.xcconfig"; sourceTree = ""; }; + CD6BD446FBCA219730E0C4C0 /* Pods-Runner-RunnerUITests.release-qa.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner-RunnerUITests.release-qa.xcconfig"; path = "Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests.release-qa.xcconfig"; sourceTree = ""; }; + DA028D4DFB1AC342B291B051 /* Pods-Runner-RunnerUITests.profile-qa.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner-RunnerUITests.profile-qa.xcconfig"; path = "Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests.profile-qa.xcconfig"; sourceTree = ""; }; E2B802EF958B248DF3CB2A5A /* Pods-Runner.debug-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-prod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-prod.xcconfig"; sourceTree = ""; }; + FD869E43832251CEC9103960 /* Pods-Runner-RunnerUITests.release-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner-RunnerUITests.release-dev.xcconfig"; path = "Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests.release-dev.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 8B53BCC42A8F2FA9005EF812 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + E9C2A829C782444D68D15F3C /* Pods_Runner_RunnerUITests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -89,10 +121,27 @@ E2B802EF958B248DF3CB2A5A /* Pods-Runner.debug-prod.xcconfig */, 191363F9F8D4C1A8C42AB179 /* Pods-Runner.release-prod.xcconfig */, 6DB98ACF0BEEDB3FE85BF588 /* Pods-Runner.profile-prod.xcconfig */, + 39A1AB7CF905860AD0F33543 /* Pods-Runner-RunnerUITests.debug-prod.xcconfig */, + 2BD73AD388B112FA9F5C0266 /* Pods-Runner-RunnerUITests.debug-qa.xcconfig */, + 7854FEFA082F005D17D857D9 /* Pods-Runner-RunnerUITests.debug-dev.xcconfig */, + 64FC62AFEF0CA5D8F808BC65 /* Pods-Runner-RunnerUITests.release-prod.xcconfig */, + CD6BD446FBCA219730E0C4C0 /* Pods-Runner-RunnerUITests.release-qa.xcconfig */, + FD869E43832251CEC9103960 /* Pods-Runner-RunnerUITests.release-dev.xcconfig */, + 9290AC77854655CC5E575732 /* Pods-Runner-RunnerUITests.profile-prod.xcconfig */, + DA028D4DFB1AC342B291B051 /* Pods-Runner-RunnerUITests.profile-qa.xcconfig */, + 4A957B3C59BBB9BF434F2AED /* Pods-Runner-RunnerUITests.profile-dev.xcconfig */, ); path = Pods; sourceTree = ""; }; + 8B53BCC82A8F2FA9005EF812 /* RunnerUITests */ = { + isa = PBXGroup; + children = ( + 8B53BCC92A8F2FA9005EF812 /* RunnerUITests.m */, + ); + path = RunnerUITests; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -113,6 +162,7 @@ children = ( 9740EEB11CF90186004384FC /* Flutter */, 97C146F01CF9000F007C117D /* Runner */, + 8B53BCC82A8F2FA9005EF812 /* RunnerUITests */, 97C146EF1CF9000F007C117D /* Products */, 71FB1F5AE398C4ADE3094FE8 /* Pods */, FB091F04386F2C0CBC79F379 /* Frameworks */, @@ -123,6 +173,7 @@ isa = PBXGroup; children = ( 97C146EE1CF9000F007C117D /* Runner.app */, + 8B53BCC72A8F2FA9005EF812 /* RunnerUITests.xctest */, ); name = Products; sourceTree = ""; @@ -146,6 +197,7 @@ isa = PBXGroup; children = ( 0C052412C035B70D8E6AA3AE /* Pods_Runner.framework */, + 6859A6E1607A4516B7B43777 /* Pods_Runner_RunnerUITests.framework */, ); name = Frameworks; sourceTree = ""; @@ -153,6 +205,28 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ + 8B53BCC62A8F2FA9005EF812 /* RunnerUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8B53BCD82A8F2FA9005EF812 /* Build configuration list for PBXNativeTarget "RunnerUITests" */; + buildPhases = ( + 562DC69A5458893AFD1B7500 /* [CP] Check Pods Manifest.lock */, + 8B53BCDA2A8F3684005EF812 /* xcode_backend build */, + 8B53BCC32A8F2FA9005EF812 /* Sources */, + 8B53BCC42A8F2FA9005EF812 /* Frameworks */, + 8B53BCC52A8F2FA9005EF812 /* Resources */, + AB8C816471D29F307C7A42CC /* [CP] Embed Pods Frameworks */, + 8B53BCDB2A8F36AA005EF812 /* xcode_backend embed_and_thin */, + ); + buildRules = ( + ); + dependencies = ( + 8B53BCCE2A8F2FA9005EF812 /* PBXTargetDependency */, + ); + name = RunnerUITests; + productName = RunnerUITests; + productReference = 8B53BCC72A8F2FA9005EF812 /* RunnerUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; 97C146ED1CF9000F007C117D /* Runner */ = { isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; @@ -184,6 +258,10 @@ LastUpgradeCheck = 1300; ORGANIZATIONNAME = ""; TargetAttributes = { + 8B53BCC62A8F2FA9005EF812 = { + CreatedOnToolsVersion = 14.3; + TestTargetID = 97C146ED1CF9000F007C117D; + }; 97C146ED1CF9000F007C117D = { CreatedOnToolsVersion = 7.3.1; LastSwiftMigration = 1100; @@ -204,11 +282,19 @@ projectRoot = ""; targets = ( 97C146ED1CF9000F007C117D /* Runner */, + 8B53BCC62A8F2FA9005EF812 /* RunnerUITests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + 8B53BCC52A8F2FA9005EF812 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 97C146EC1CF9000F007C117D /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -230,6 +316,7 @@ files = ( ); inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); name = "Thin Binary"; outputPaths = ( @@ -238,6 +325,28 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; + 562DC69A5458893AFD1B7500 /* [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-RunnerUITests-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; + }; 603EB2020283218C92F51261 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -277,6 +386,42 @@ 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; }; + 8B53BCDA2A8F3684005EF812 /* xcode_backend build */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "xcode_backend build"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Type a script or drag a script file from your workspace to insert its path.\n/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build\n"; + }; + 8B53BCDB2A8F36AA005EF812 /* xcode_backend embed_and_thin */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "xcode_backend embed_and_thin"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Type a script or drag a script file from your workspace to insert its path.\n/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin\n"; + }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -292,9 +437,34 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; + AB8C816471D29F307C7A42CC /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner-RunnerUITests/Pods-Runner-RunnerUITests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + 8B53BCC32A8F2FA9005EF812 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8B53BCCA2A8F2FA9005EF812 /* RunnerUITests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 97C146EA1CF9000F007C117D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -306,6 +476,14 @@ }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + 8B53BCCE2A8F2FA9005EF812 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 97C146ED1CF9000F007C117D /* Runner */; + targetProxy = 8B53BCCD2A8F2FA9005EF812 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin PBXVariantGroup section */ 97C146FA1CF9000F007C117D /* Main.storyboard */ = { isa = PBXVariantGroup; @@ -379,7 +557,7 @@ }; 249021D4217E4FDB00AE95B9 /* Profile-prod */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release-prod.xcconfig */; + baseConfigurationReference = 6DB98ACF0BEEDB3FE85BF588 /* Pods-Runner.profile-prod.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -538,7 +716,7 @@ }; 8B004E0F27A3B04100D25C3F /* Release-dev */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1C5B5ECB3EFFB0A46BD3084E /* Pods-Runner.release-dev.xcconfig */; + baseConfigurationReference = 8BA3C5F927B2840200B19BBC /* Release-dev.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -633,21 +811,25 @@ }; name = "Profile-dev"; }; - 8B65341827B0F87E001868BE /* Debug-qa */ = { + 8B53BCCF2A8F2FA9005EF812 /* Debug-prod */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug-prod.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; + 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; @@ -660,14 +842,17 @@ 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[sdk=iphoneos*]" = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = N9QBPKTP36; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_C_LANGUAGE_STANDARD = gnu11; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; @@ -681,56 +866,40 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MTL_ENABLE_DEBUG_INFO = YES; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.4; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.wednesday.flutterTemplate.RunnerUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; + SWIFT_EMIT_LOC_STRINGS = NO; TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Runner; }; - name = "Debug-qa"; + name = "Debug-prod"; }; - 8B65341927B0F87E001868BE /* Debug-qa */ = { + 8B53BCD02A8F2FA9005EF812 /* Debug-qa */ = { isa = XCBuildConfiguration; baseConfigurationReference = 8B65341627B0F779001868BE /* Debug-qa.xcconfig */; buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = "iPhone Distribution"; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 9; - DEVELOPMENT_TEAM = P7GL36U2SS; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 15.4; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "com.wednesday.flutterTemplate$(bundle_suffix)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = Fastlane; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = "Debug-qa"; - }; - 8B65341A27B0F89F001868BE /* Release-qa */ = { - isa = XCBuildConfiguration; - buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; + 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; @@ -743,70 +912,64 @@ 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[sdk=iphoneos*]" = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = N9QBPKTP36; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + 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; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = "Release-qa"; - }; - 8B65341B27B0F89F001868BE /* Release-qa */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 01287E6EB7C9D878EB60063C /* Pods-Runner.release-qa.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = 9; - DEVELOPMENT_TEAM = P7GL36U2SS; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; + GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 15.4; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "com.wednesday.flutterTemplate$(bundle_suffix)"; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.wednesday.flutterTemplate.RunnerUITests; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; + SDKROOT = iphoneos; + SWIFT_EMIT_LOC_STRINGS = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Runner; }; - name = "Release-qa"; + name = "Debug-qa"; }; - 8B65341C27B0F8AA001868BE /* Profile-qa */ = { + 8B53BCD12A8F2FA9005EF812 /* Debug-dev */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 8B004E0A27A3AF4700D25C3F /* Debug-dev.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; + 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; @@ -819,68 +982,64 @@ 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[sdk=iphoneos*]" = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = N9QBPKTP36; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + 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; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = "Profile-qa"; - }; - 8B65341D27B0F8AA001868BE /* Profile-qa */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 38E2CF0427CDCCD9930CEB4B /* Pods-Runner.profile-qa.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = 9; - DEVELOPMENT_TEAM = P7GL36U2SS; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; + GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 15.4; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "com.wednesday.flutterTemplate$(bundle_suffix)"; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.wednesday.flutterTemplate.RunnerUITests; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; + SDKROOT = iphoneos; + SWIFT_EMIT_LOC_STRINGS = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Runner; }; - name = "Profile-qa"; + name = "Debug-dev"; }; - 97C147031CF9000F007C117D /* Debug-prod */ = { + 8B53BCD22A8F2FA9005EF812 /* Release-prod */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release-prod.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; + 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; @@ -893,29 +1052,642 @@ 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[sdk=iphoneos*]" = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = N9QBPKTP36; + ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; + GCC_C_LANGUAGE_STANDARD = gnu11; 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; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MTL_ENABLE_DEBUG_INFO = YES; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.4; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.wednesday.flutterTemplate.RunnerUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_EMIT_LOC_STRINGS = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Runner; + VALIDATE_PRODUCT = YES; + }; + name = "Release-prod"; + }; + 8B53BCD32A8F2FA9005EF812 /* Release-qa */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 8BA3C5FB27B284D000B19BBC /* Release-qa.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ALWAYS_SEARCH_USER_PATHS = NO; + 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_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = N9QBPKTP36; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + 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 = 15.4; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.wednesday.flutterTemplate.RunnerUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_EMIT_LOC_STRINGS = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Runner; + VALIDATE_PRODUCT = YES; + }; + name = "Release-qa"; + }; + 8B53BCD42A8F2FA9005EF812 /* Release-dev */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 8BA3C5F927B2840200B19BBC /* Release-dev.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ALWAYS_SEARCH_USER_PATHS = NO; + 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_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = N9QBPKTP36; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + 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 = 15.4; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.wednesday.flutterTemplate.RunnerUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_EMIT_LOC_STRINGS = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Runner; + VALIDATE_PRODUCT = YES; + }; + name = "Release-dev"; + }; + 8B53BCD52A8F2FA9005EF812 /* Profile-prod */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9290AC77854655CC5E575732 /* Pods-Runner-RunnerUITests.profile-prod.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ALWAYS_SEARCH_USER_PATHS = NO; + 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_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = N9QBPKTP36; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + 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 = 15.4; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.wednesday.flutterTemplate.RunnerUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_EMIT_LOC_STRINGS = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Runner; + VALIDATE_PRODUCT = YES; + }; + name = "Profile-prod"; + }; + 8B53BCD62A8F2FA9005EF812 /* Profile-qa */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = DA028D4DFB1AC342B291B051 /* Pods-Runner-RunnerUITests.profile-qa.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ALWAYS_SEARCH_USER_PATHS = NO; + 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_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = N9QBPKTP36; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + 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 = 15.4; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.wednesday.flutterTemplate.RunnerUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_EMIT_LOC_STRINGS = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Runner; + VALIDATE_PRODUCT = YES; + }; + name = "Profile-qa"; + }; + 8B53BCD72A8F2FA9005EF812 /* Profile-dev */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 4A957B3C59BBB9BF434F2AED /* Pods-Runner-RunnerUITests.profile-dev.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ALWAYS_SEARCH_USER_PATHS = NO; + 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_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = N9QBPKTP36; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + 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 = 15.4; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.wednesday.flutterTemplate.RunnerUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_EMIT_LOC_STRINGS = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Runner; + VALIDATE_PRODUCT = YES; + }; + name = "Profile-dev"; + }; + 8B65341827B0F87E001868BE /* Debug-qa */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = 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_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_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + 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; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = "Debug-qa"; + }; + 8B65341927B0F87E001868BE /* Debug-qa */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 8B65341627B0F779001868BE /* Debug-qa.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = "iPhone Distribution"; + CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = 9; + DEVELOPMENT_TEAM = P7GL36U2SS; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.4; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.wednesday.flutterTemplate$(bundle_suffix)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = Fastlane; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Debug-qa"; + }; + 8B65341A27B0F89F001868BE /* Release-qa */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = 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_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_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + 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; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = "Release-qa"; + }; + 8B65341B27B0F89F001868BE /* Release-qa */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 8BA3C5FB27B284D000B19BBC /* Release-qa.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = 9; + DEVELOPMENT_TEAM = P7GL36U2SS; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.4; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.wednesday.flutterTemplate$(bundle_suffix)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Release-qa"; + }; + 8B65341C27B0F8AA001868BE /* Profile-qa */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = 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_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_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + 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; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = "Profile-qa"; + }; + 8B65341D27B0F8AA001868BE /* Profile-qa */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 38E2CF0427CDCCD9930CEB4B /* Pods-Runner.profile-qa.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = 9; + DEVELOPMENT_TEAM = P7GL36U2SS; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.4; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.wednesday.flutterTemplate$(bundle_suffix)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Profile-qa"; + }; + 97C147031CF9000F007C117D /* Debug-prod */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = 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_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_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + 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; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; @@ -1031,6 +1803,22 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 8B53BCD82A8F2FA9005EF812 /* Build configuration list for PBXNativeTarget "RunnerUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8B53BCCF2A8F2FA9005EF812 /* Debug-prod */, + 8B53BCD02A8F2FA9005EF812 /* Debug-qa */, + 8B53BCD12A8F2FA9005EF812 /* Debug-dev */, + 8B53BCD22A8F2FA9005EF812 /* Release-prod */, + 8B53BCD32A8F2FA9005EF812 /* Release-qa */, + 8B53BCD42A8F2FA9005EF812 /* Release-dev */, + 8B53BCD52A8F2FA9005EF812 /* Profile-prod */, + 8B53BCD62A8F2FA9005EF812 /* Profile-qa */, + 8B53BCD72A8F2FA9005EF812 /* Profile-dev */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Release-prod"; + }; 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/dev.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/dev.xcscheme index 519efc4b..60b2ec6b 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/dev.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/dev.xcscheme @@ -37,6 +37,16 @@ + + + + + + + + + + + + Date: Thu, 24 Aug 2023 12:43:16 +0530 Subject: [PATCH 2/6] Add parol tests --- .env | 2 +- .env.dev | 2 +- integration_test/app_setup.dart | 28 ++++++++++++++++ integration_test/example_test.dart | 25 --------------- integration_test/favorites_test.dart | 46 +++++++++++++++++++++++++++ integration_test/language_test.dart | 35 ++++++++++++++++++++ integration_test/test_actions.dart | 7 ++++ integration_test/test_bundle.dart | 6 ++-- ios/Runner.xcodeproj/project.pbxproj | 2 +- ios/Runner/Base.lproj/Main.storyboard | 13 +++++--- lib/app.dart | 5 +-- pubspec.lock | 46 ++++++++++++++++----------- pubspec.yaml | 2 +- 13 files changed, 162 insertions(+), 57 deletions(-) create mode 100644 integration_test/app_setup.dart delete mode 100644 integration_test/example_test.dart create mode 100644 integration_test/favorites_test.dart create mode 100644 integration_test/language_test.dart create mode 100644 integration_test/test_actions.dart diff --git a/.env b/.env index 3aa5a596..9e6594d6 100644 --- a/.env +++ b/.env @@ -1,2 +1,2 @@ -OPEN_WEATHER_API_KEY=YOUR_API_KEY +OPEN_WEATHER_API_KEY=77719ac9d5b2698cc2386cf0670a96ff OPEN_WEATHER_BASE_URL=https://api.openweathermap.org/ \ No newline at end of file diff --git a/.env.dev b/.env.dev index 3aa5a596..9e6594d6 100644 --- a/.env.dev +++ b/.env.dev @@ -1,2 +1,2 @@ -OPEN_WEATHER_API_KEY=YOUR_API_KEY +OPEN_WEATHER_API_KEY=77719ac9d5b2698cc2386cf0670a96ff OPEN_WEATHER_BASE_URL=https://api.openweathermap.org/ \ No newline at end of file diff --git a/integration_test/app_setup.dart b/integration_test/app_setup.dart new file mode 100644 index 00000000..ac04331b --- /dev/null +++ b/integration_test/app_setup.dart @@ -0,0 +1,28 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_dotenv/flutter_dotenv.dart'; +import 'package:flutter_template/app.dart'; +import 'package:flutter_template/flavors/flavor_config.dart'; +import 'package:flutter_template/presentation/intl/translations/translation_loader.dart'; +import 'package:flutter_template/presentation/template_app.dart'; +import 'package:patrol/patrol.dart'; + +Future setupApp(PatrolIntegrationTester patrol) async { + await dotenv.load( + fileName: ".env.dev", + ); + + FlavorConfig.initialize(flavorString: "dev"); + + await initialiseApp(); + + await patrol.pumpWidgetAndSettle( + EasyLocalization( + supportedLocales: const [Locale("en", "US"), Locale("hi", "IN")], + path: "assets/translations", + fallbackLocale: const Locale("en", "US"), + assetLoader: const CodegenLoader(), + child: TemplateApp(), + ), + ); +} \ No newline at end of file diff --git a/integration_test/example_test.dart b/integration_test/example_test.dart deleted file mode 100644 index 64a121ea..00000000 --- a/integration_test/example_test.dart +++ /dev/null @@ -1,25 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:patrol/patrol.dart'; - -void main() { - patrolTest( - 'counter state is the same after going to home and switching apps', - nativeAutomation: true, - (patrol) async { - // Replace later with your app's main widget - await patrol.pumpWidgetAndSettle( - MaterialApp( - home: Scaffold( - appBar: AppBar(title: const Text('app')), - backgroundColor: Colors.blue, - ), - ), - ); - - expect(patrol('app'), findsOneWidget); - await patrol.native.openQuickSettings(); - await patrol.native.pressHome(); - }, - ); -} diff --git a/integration_test/favorites_test.dart b/integration_test/favorites_test.dart new file mode 100644 index 00000000..c8743aa3 --- /dev/null +++ b/integration_test/favorites_test.dart @@ -0,0 +1,46 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:patrol/patrol.dart'; + +import 'app_setup.dart'; +import 'test_actions.dart'; + +void main() { + patrolTest( + 'user can search cities and add or remove them from favorites', + nativeAutomation: true, + (patrol) async { + await setupApp(patrol); + + await _navigateSearchForBengaluruAndMarkFavorite(patrol); + await patrol.tap(find.byIcon(Icons.arrow_back)); + expect(find.text("Bengaluru, IN"), findsOneWidget); + await _navigateSearchForBengaluruAndMarkFavorite( + patrol, + alreadySelected: true, + ); + await patrol.tap(find.byIcon(Icons.arrow_back)); + expect(find.text("Bengaluru, IN"), findsNothing); + }, + ); +} + +Future _navigateSearchForBengaluruAndMarkFavorite( + PatrolIntegrationTester patrol, { + bool alreadySelected = false, +}) async { + await navigateToSearch(patrol); + await patrol.enterText(find.byType(TextField), "Bengaluru", + settlePolicy: SettlePolicy.settle); + if (alreadySelected) { + await patrol.tap( + find.byIcon(Icons.favorite), + settlePolicy: SettlePolicy.settle, + ); + } else { + await patrol.tap( + find.byIcon(Icons.favorite_outline), + settlePolicy: SettlePolicy.settle, + ); + } +} \ No newline at end of file diff --git a/integration_test/language_test.dart b/integration_test/language_test.dart new file mode 100644 index 00000000..0bfb4a9a --- /dev/null +++ b/integration_test/language_test.dart @@ -0,0 +1,35 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_template/presentation/intl/translations/translation_keys.dart'; +import 'package:flutter_template/presentation/intl/translations/translation_loader.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:patrol/patrol.dart'; + +import 'app_setup.dart'; +import 'test_actions.dart'; + + +void main() { + patrolTest( + "users are able to change the language of the app", + nativeAutomation: true, + (patrol) async { + await setupApp(patrol); + + expect(find.text(CodegenLoader.en_US[LocaleKeys.homePageTitle]), findsOneWidget); + + await navigateToSearch(patrol); + expect(find.text(CodegenLoader.en_US[LocaleKeys.searchPageTitle]), findsOneWidget); + expect(find.text(CodegenLoader.en_US[LocaleKeys.searchResultsAppearHere]), findsOneWidget); + + await patrol.tap(find.byIcon(Icons.arrow_back)); + + await patrol.tap(find.byIcon(Icons.language)); + + expect(find.text(CodegenLoader.hi_IN[LocaleKeys.homePageTitle]), findsOneWidget); + + await navigateToSearch(patrol); + expect(find.text(CodegenLoader.hi_IN[LocaleKeys.searchPageTitle]), findsOneWidget); + expect(find.text(CodegenLoader.hi_IN[LocaleKeys.searchResultsAppearHere]), findsOneWidget); + }, + ); +} \ No newline at end of file diff --git a/integration_test/test_actions.dart b/integration_test/test_actions.dart new file mode 100644 index 00000000..7fe0eabb --- /dev/null +++ b/integration_test/test_actions.dart @@ -0,0 +1,7 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:patrol/patrol.dart'; + +Future navigateToSearch(PatrolIntegrationTester patrol) async { + await patrol.tap(find.byIcon(Icons.search)); +} \ No newline at end of file diff --git a/integration_test/test_bundle.dart b/integration_test/test_bundle.dart index 21c3911e..ee7a6e3c 100644 --- a/integration_test/test_bundle.dart +++ b/integration_test/test_bundle.dart @@ -9,7 +9,8 @@ import 'package:patrol/src/native/contracts/contracts.pbgrpc.dart'; import 'package:test_api/src/backend/invoker.dart'; // START: GENERATED TEST IMPORTS -import 'example_test.dart' as example_test; +import 'favorites_test.dart' as favorites_test; +import 'language_test.dart' as language_test; // END: GENERATED TEST IMPORTS Future main() async { @@ -62,7 +63,8 @@ Future main() async { }); // START: GENERATED TEST GROUPS - group('example_test', example_test.main); + group('favorites_test', favorites_test.main); + group('language_test', language_test.main); // END: GENERATED TEST GROUPS final dartTestGroup = await testExplorationCompleter.future; diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 0dcdf39a..2e047870 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -255,7 +255,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1300; + LastUpgradeCheck = 1430; ORGANIZATIONNAME = ""; TargetAttributes = { 8B53BCC62A8F2FA9005EF812 = { diff --git a/ios/Runner/Base.lproj/Main.storyboard b/ios/Runner/Base.lproj/Main.storyboard index f3c28516..56c8eebd 100644 --- a/ios/Runner/Base.lproj/Main.storyboard +++ b/ios/Runner/Base.lproj/Main.storyboard @@ -1,8 +1,10 @@ - - + + + - + + @@ -14,13 +16,14 @@ - + - + + diff --git a/lib/app.dart b/lib/app.dart index 075f2add..ed2b98e6 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -18,7 +18,7 @@ import 'package:get_it/get_it.dart'; import 'package:shared_preferences/shared_preferences.dart'; void startApp() async { - await _initialiseApp(); + await initialiseApp(); // Add fonts license LicenseRegistry.addLicense(() async* { @@ -37,7 +37,8 @@ void startApp() async { ); } -Future _initialiseApp() async { +@visibleForTesting +Future initialiseApp({bool test = false}) async { final bindings = WidgetsFlutterBinding.ensureInitialized(); bindings.deferFirstFrame(); diff --git a/pubspec.lock b/pubspec.lock index 20c7b795..93401800 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -213,10 +213,10 @@ packages: dependency: "direct main" description: name: collection - sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" + sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 url: "https://pub.dev" source: hosted - version: "1.17.1" + version: "1.17.2" convert: dependency: transitive description: @@ -576,10 +576,10 @@ packages: dependency: transitive description: name: intl - sha256: a3715e3bc90294e971cb7dc063fbf3cd9ee0ebf8604ffeafabd9e6f16abbdbe6 + sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d" url: "https://pub.dev" source: hosted - version: "0.18.0" + version: "0.18.1" io: dependency: transitive description: @@ -656,18 +656,18 @@ packages: dependency: transitive description: name: matcher - sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" url: "https://pub.dev" source: hosted - version: "0.12.15" + version: "0.12.16" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.5.0" meta: dependency: "direct dev" description: @@ -1045,10 +1045,10 @@ packages: dependency: transitive description: name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" sqflite: dependency: transitive description: @@ -1157,26 +1157,26 @@ packages: dependency: transitive description: name: test - sha256: "3dac9aecf2c3991d09b9cdde4f98ded7b30804a88a0d7e4e7e1678e78d6b97f4" + sha256: "13b41f318e2a5751c3169137103b60c584297353d4b1761b66029bae6411fe46" url: "https://pub.dev" source: hosted - version: "1.24.1" + version: "1.24.3" test_api: dependency: transitive description: name: test_api - sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb + sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" url: "https://pub.dev" source: hosted - version: "0.5.1" + version: "0.6.0" test_core: dependency: transitive description: name: test_core - sha256: "5138dbffb77b2289ecb12b81c11ba46036590b72a64a7a90d6ffb880f1a29e93" + sha256: "99806e9e6d95c7b059b7a0fc08f07fc53fabe54a829497f0d9676299f1e8637e" url: "https://pub.dev" source: hosted - version: "0.5.1" + version: "0.5.3" timing: dependency: transitive description: @@ -1221,10 +1221,10 @@ packages: dependency: transitive description: name: vm_service - sha256: f6deed8ed625c52864792459709183da231ebf66ff0cf09e69b573227c377efe + sha256: c620a6f783fa22436da68e42db7ebbf18b8c44b9a46ab911f666ff09ffd9153f url: "https://pub.dev" source: hosted - version: "11.3.0" + version: "11.7.1" watcher: dependency: transitive description: @@ -1233,6 +1233,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.0" + web: + dependency: transitive + description: + name: web + sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + url: "https://pub.dev" + source: hosted + version: "0.1.4-beta" web_socket_channel: dependency: transitive description: @@ -1290,5 +1298,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.0.6 <4.0.0" + dart: ">=3.1.0-185.0.dev <4.0.0" flutter: ">=3.4.0-17.0.pre" diff --git a/pubspec.yaml b/pubspec.yaml index 7f7bdb7c..e6f38181 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -123,4 +123,4 @@ patrol: android: package_name: com.wednesday.flutter_template.dev ios: - bundle_id: com.wednesday.flutter_template.dev \ No newline at end of file + bundle_id: com.wednesday.flutterTemplate.dev \ No newline at end of file From e80b52ec2d5cff99db9219dfd61a0cd58b265fa4 Mon Sep 17 00:00:00 2001 From: Shounak Mulay Date: Fri, 25 Aug 2023 12:03:44 +0530 Subject: [PATCH 3/6] Add PR template --- .env | 2 +- .env.dev | 2 +- .github/pull_request_template.md | 5 +++++ 3 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 .github/pull_request_template.md diff --git a/.env b/.env index 9e6594d6..3aa5a596 100644 --- a/.env +++ b/.env @@ -1,2 +1,2 @@ -OPEN_WEATHER_API_KEY=77719ac9d5b2698cc2386cf0670a96ff +OPEN_WEATHER_API_KEY=YOUR_API_KEY OPEN_WEATHER_BASE_URL=https://api.openweathermap.org/ \ No newline at end of file diff --git a/.env.dev b/.env.dev index 9e6594d6..3aa5a596 100644 --- a/.env.dev +++ b/.env.dev @@ -1,2 +1,2 @@ -OPEN_WEATHER_API_KEY=77719ac9d5b2698cc2386cf0670a96ff +OPEN_WEATHER_API_KEY=YOUR_API_KEY OPEN_WEATHER_BASE_URL=https://api.openweathermap.org/ \ No newline at end of file diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 00000000..539df5cc --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,5 @@ +## Description + +## Ticket Link - + +## Screenshot / GIF \ No newline at end of file From d1ad1d89dc92932fcc648f6379e1395a8239458d Mon Sep 17 00:00:00 2001 From: Shounak Mulay Date: Fri, 25 Aug 2023 12:43:34 +0530 Subject: [PATCH 4/6] Move e2e tests to QA --- .env.qa | 2 +- integration_test/app_setup.dart | 4 ++-- integration_test/favorites_test.dart | 1 + integration_test/language_test.dart | 24 ++++++++++++------- .../xcshareddata/xcschemes/qa.xcscheme | 5 ++-- pubspec.yaml | 4 ++-- 6 files changed, 23 insertions(+), 17 deletions(-) diff --git a/.env.qa b/.env.qa index 3aa5a596..9e6594d6 100644 --- a/.env.qa +++ b/.env.qa @@ -1,2 +1,2 @@ -OPEN_WEATHER_API_KEY=YOUR_API_KEY +OPEN_WEATHER_API_KEY=77719ac9d5b2698cc2386cf0670a96ff OPEN_WEATHER_BASE_URL=https://api.openweathermap.org/ \ No newline at end of file diff --git a/integration_test/app_setup.dart b/integration_test/app_setup.dart index ac04331b..287cf85f 100644 --- a/integration_test/app_setup.dart +++ b/integration_test/app_setup.dart @@ -9,10 +9,10 @@ import 'package:patrol/patrol.dart'; Future setupApp(PatrolIntegrationTester patrol) async { await dotenv.load( - fileName: ".env.dev", + fileName: ".env.qa", ); - FlavorConfig.initialize(flavorString: "dev"); + FlavorConfig.initialize(flavorString: "qa"); await initialiseApp(); diff --git a/integration_test/favorites_test.dart b/integration_test/favorites_test.dart index c8743aa3..5589a81c 100644 --- a/integration_test/favorites_test.dart +++ b/integration_test/favorites_test.dart @@ -8,6 +8,7 @@ import 'test_actions.dart'; void main() { patrolTest( 'user can search cities and add or remove them from favorites', + // ignore: deprecated_member_use nativeAutomation: true, (patrol) async { await setupApp(patrol); diff --git a/integration_test/language_test.dart b/integration_test/language_test.dart index 0bfb4a9a..518a105c 100644 --- a/integration_test/language_test.dart +++ b/integration_test/language_test.dart @@ -7,29 +7,35 @@ import 'package:patrol/patrol.dart'; import 'app_setup.dart'; import 'test_actions.dart'; - void main() { patrolTest( "users are able to change the language of the app", + // ignore: deprecated_member_use nativeAutomation: true, - (patrol) async { + (patrol) async { await setupApp(patrol); - expect(find.text(CodegenLoader.en_US[LocaleKeys.homePageTitle]), findsOneWidget); + expect(find.text(CodegenLoader.en_US[LocaleKeys.homePageTitle]), + findsOneWidget); await navigateToSearch(patrol); - expect(find.text(CodegenLoader.en_US[LocaleKeys.searchPageTitle]), findsOneWidget); - expect(find.text(CodegenLoader.en_US[LocaleKeys.searchResultsAppearHere]), findsOneWidget); + expect(find.text(CodegenLoader.en_US[LocaleKeys.searchPageTitle]), + findsOneWidget); + expect(find.text(CodegenLoader.en_US[LocaleKeys.searchResultsAppearHere]), + findsOneWidget); await patrol.tap(find.byIcon(Icons.arrow_back)); await patrol.tap(find.byIcon(Icons.language)); - expect(find.text(CodegenLoader.hi_IN[LocaleKeys.homePageTitle]), findsOneWidget); + expect(find.text(CodegenLoader.hi_IN[LocaleKeys.homePageTitle]), + findsOneWidget); await navigateToSearch(patrol); - expect(find.text(CodegenLoader.hi_IN[LocaleKeys.searchPageTitle]), findsOneWidget); - expect(find.text(CodegenLoader.hi_IN[LocaleKeys.searchResultsAppearHere]), findsOneWidget); + expect(find.text(CodegenLoader.hi_IN[LocaleKeys.searchPageTitle]), + findsOneWidget); + expect(find.text(CodegenLoader.hi_IN[LocaleKeys.searchResultsAppearHere]), + findsOneWidget); }, ); -} \ No newline at end of file +} diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/qa.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/qa.xcscheme index 9822aac8..e5cdf816 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/qa.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/qa.xcscheme @@ -23,14 +23,13 @@ + skipped = "NO"> Date: Fri, 25 Aug 2023 14:13:16 +0530 Subject: [PATCH 5/6] Update goldens --- .github/workflows/ci.yml | 6 ++++++ .../goldens/search_page_loading.iphone11.png | Bin 5323 -> 5428 bytes .../search_page_loading.smallPhone.png | Bin 4091 -> 4230 bytes 3 files changed, 6 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8e983554..a28adac3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -114,6 +114,12 @@ jobs: - name: Golden tests run: derry test goldens -- --merge-coverage --coverage + - uses: actions/upload-artifact@v3 + if: failure() + with: + name: my-artifact + path: test/presentation/goldens/**/failures/*.png + - uses: actions/upload-artifact@v3 with: name: coverage-${{ github.event.number }} diff --git a/test/presentation/goldens/destinations/weather/search/goldens/search_page_loading.iphone11.png b/test/presentation/goldens/destinations/weather/search/goldens/search_page_loading.iphone11.png index f5215e28d3aafab924866a008e1dcc04a04965fe..d6541054b359371be6c3224e0187dc71c886a78b 100644 GIT binary patch literal 5428 zcmeHLc~p~E7Jo5TPzqE#A_WX~BdvhSL3S`MP-I#VlttFC2{i0QAZ#IH6W{q!5-sBq1zezTliQf6Qr%oik_V55IrD^WMAfp8M|o z{qDW*eeUk&thq~X7XU!h<+S5j0AOVR!13xkpqX8$y`9hxmUPznB%pQ~OhJR~Nhe)A z)uAs_J^V8O{xa&~c)}A~GRyC#1&9JU3-dP8alJOenDL$WZtStr;NW*T?Y-o9V!HhF z?mbRkcu*4QPEz-LQ+eeU^` zleFxq_96#0Q1+I$J#gHq4LlygkAE!zuf4maq0}2*T2j&%O>622r&tNraQv3+mbUX? zrYJ&~rc{Wg^OcflS9X1pNFe5?W{-rM0NEGSmY}@28k_exw6^MSrqHVRx)q_5M8Y)i z_2RYJWYWry+R6w0;$->)o^PbljaG8eC|SzThljHm&Fhibwp`CcGeyUwF`!_2pJCuSY>a5cZC5*fZSQZ!#v;2!EwCxQ4mX=bq!q=FP) z&voy_!#_!pQ$`k&BO{Mt)1+0hcL+dwOQ~FFd$>;j)nDN{pK0Tt~l`%H`gd&R8Gn1ljr(q$> zz7UvSW~})d^I-M2G>t{3gW>#X+{CnpD5wRIETvCk3=w6zsZ z+u5ao-0#UGMW#mCwqj)i3wQ6aKG3g&`c!8ifR+GGr$QAu~!XD(g2$q{1j>Ve48-wnjT);RR;m-$lT)}3mjby5s)yB{rAl!qLm9)Wn1rkHvD+s<;}VL zXoO1K{;Dc(S7_w#eH9Rc%O%zyXtI#edWeBkF!;yeX~EyxeK*y# zd+P&_TFGDp{MNz6LYwiqTu{TzVaJcSwwk}nyV(k>QDcWh*#`AWV)V~w;oF%5!l4*T zLxokI2i)LpEqgeIHy2@{*=?Oy7eqrW;BTTd@jt}&6ZAL^&Fphtb$&EV&BTrbNls$b zQUpJ9WKuX)Po1O9ZJ;w_=rDt_5M4~2pVvTgC#URblKr@K-$u!XTC7wF|)@JZxMpWBA8DgeP2- z+1e9k8SKX?`m9>rXi8@a?_vkEi6eV```BVkKVeei>SX0`zql~k0XPTi=K96=cXDD8 zWsq;)JqFZbb#wfxy}8MO(psd#0D_~0`ya}T@DQ)4>m=EQ2g&d(LyZhL5+7iOx{UfeA@ z3$NjV9$CT${NI6n1h!LBYSJKZ~}&(}bcB1CFilRV~(=;?-ui zo5p@iZdwrOa!fXB;; z)b-O+VybW89f>L~&Ua`Nsdy}171a$<_SfvNJ`m;= zYbmyE$v!q@v8s6IyZ%oLyVL1E%%=E5<)?X`EMA>PRw2PYt7~D`q4IX5F9n-$I_7F& z*QtUlqT5g=8jK^A*nnG^7qmdgmQVb`SA&8qE%+Co$Nl7lbyI`NWLFKP8( vqLrtQ*Z74q+whgSzx^)r$G6n~l+YU*$__7Wj#I4aH59lwxj9l#24DIIE50H1 literal 5323 zcmeI0X;f2Z8pq!lA#M<>Vlgb~X=`nZhzemd5J#|TEg+V#BOnSIKtUu4YhvpJTej)g zLS?mj6u5zaLO_BcQ7Y5|#x{g4Y%xMK7$6M^OC*_#opU;K#yN+!bI$m|`{mx}-sfHJ z`~05&yL@rTbDz;F%qjqY(SiN$hXFv80Dz>gFofT%BA9f-H$=kWeR}}wf%#L|Se~%w zfX@o}N?md60stEl54iuuhgzf<^vXTf6VfIb<~Hb^3bHTdnIAi-`94z#RxRJVB4*PE znQsN`U%vN?WryG0c>hbB+0EURVJ+=%xo>=b&uxRNm2VgM^QjvjnC>ULP;C!$pr(oA zJEUvHwnFJd0xyKPfd9L75agVg%t<9U%Pjp8i8vE*emdU;0azO)h_^nbf(z>`!IkqU z`unez*`FkB4{dzr1mgbcuLNs1G?jbbpE9ZQbtADX0xCRc0<FvfK2<4mL9LRzxL z-|2CUy7eUI*$4b@gk0rl^{fq=Zff->LN7l;)$I*kj@q4N@?Yb^R@tFBWJTb@n2dL* zdf+xOqX#W3Sr5z}KN<4orpU+(v&9YLx&>{NtFA+TZn~cxt!|@Di<0#VP3nnaapKv@ z^1fq;-c-2U_&0?O@@x60x(NFA89|odk|aqX>R~b=+QOY6YuQSEUQ+*&qNH5eqTk@I zhM>;Xbn8Uf0|h5Z)qN>ySGUiiqu+`LFT zH=~<55~BZRT$Zj=D&vWwR)J&-WtfR}ogEnvR0rk`-=jU3@k+IGM54e|8A7%5e?uqfoHInf}4r{$HAUEr(N7O=_+KFQrd-Yy0E@Xp!Rg zes5;KLOxJ&LEHX4EP$D1mD5N1Z_uK z@um_iPetZV|D2r+Q&g1-X3w{bXQ=y`)jioTW4S{~uouM!uYYv5`*T)ElP^y_XVcYL z*zi4yp6ke=_)sPWSXi!#JjkQzJK6|DD!6P?*1r@rC6A?_Yo3fYC6i3&<=SS518qs) zFPJ_^qs@A`cA>)Tg+92Ph-@L$D)N`wJ(y3fWkk{Rm&pv2jq709uhvZ*-!eMF1GX=R~JA4|UYwCi6ogj0gfNi4fYeWR{ zj(As(ed0}wycR@_;e2>@i!FW!KFT7qzSFQKXP%|Faz*JY-jY!Zn|+pvvAl;=kA2Lf zoFPP9QeY|cAnjO=$r@m?Iya&V;I~Ip2Zj+N(o|<0@IE)?_>mD`Uucc5?*r5gL9xKS z6KiQ@3exX)NaC|F^xT5Y_=!m{VcbFr-n-A(R#+>a5#~J4n@NG)$`$5-5bJ?H?AG9)C6_=^GZWx1d`;gqc-L;IIuR zsjhf;z$cqBP^gwbl5_vVUByNI%}q4S!nk|L`iQfDu&?m}AIyK9ROaLcDp9F^Z2_G|Wm)iq1HK?%m_jDdMThN-C)L zfFGqM0)OUD5GpLFh~T(bC7}d9R4`I;?=@H%0oqGaeE{B`S!}OOqm+H$SR|<4P zx|sEbVd?N^_;G8516nXNQ3AW2V~vweQ>y1~d9(;ATm_D9y>pG5Iz){7SUk1HGYT0~ z*xjRPwX$Sd&|`)3{X_P6t_hl7e-a*P=K@;;ATCq02iF<=wm4b}>wh@x|GBU(zb?6S zJ?|=_#yBukT*!zrZ+oGrupwqd1+vYJ>9~h4x@~1;`RgB0@7Z>f>g0&tjb%(?wh)t1 z29X+ryB~jz;J5ypOf;^=(v9prK82G%ptWT4qFN{)_12s54V^=(Y`)BOM8^zpi?B^;r=ddUtkp{F;uAo!y2drLjRddWU_ h$){g0FWaR@NHyrIXAG=H-~&l;V6Ue;Yfso`{{TC{Lhb+n diff --git a/test/presentation/goldens/destinations/weather/search/goldens/search_page_loading.smallPhone.png b/test/presentation/goldens/destinations/weather/search/goldens/search_page_loading.smallPhone.png index 27b1a90b57d267f37053c119d944b83cb668d837..3751cc026364dba952c46c6f027f3be017f1dd7d 100644 GIT binary patch delta 2252 zcmZWpYgCe38vf84TWMZ8lbM%8b(&+%Zh;yNsQd zi8ZXzF*UMQnjkVpC`yQC!ZB0pC=dcdQCbq0Qb7F#2It55GyB)xYwhP<&t*Rwf|qZ) zy$|#ZJsh+DWMREdDX2>MoFe*aKv+aRgAK70_fxX6|5mtWtLGm#y%leM6nCfm{?<26 z=$o5c9%sdQo!H+`yW`3HW%CQcf3~7t{3tI>SrKwOUo$c=Z;SN!$BzBgYKmx7)@6I8 z6<@q;kXA_(4MlVHJEz@KtuLi$m}kbbnU%n67>&APRS1~D+8-DgXwvg?iM6J8H=^4D zr2k(dVy5GA{8Kb@=1A%yKWEmv z;vfp8vyf&fXE7*oJoy`oqs-wAUrXO{MqxJ_Y_{jIe{sNb$BDK@))e~XBkSTchLHW#G#RNoUUqEUeK_& zB?Mfkn(|%K3!`KJP7bEKj`9x?8kSijtBdB1V~dhb`x9v-fVrB!p={rKch5Kl%;_d% zPd7ZzdDg;VV4Pl^o1aPSnHpQ;DIB4CtwOk#|AYa@Y6!sf_RG}$D}2D9kZ%v_e#(^? zO5RnNBuWyYSevg8hZ*bHu~^gKHOR!Sil&RI;P4V_U+TH;qS;LAAROfHwa%rLep8bh z_C#qrl7Qf;IY}0uV8JMRN}Fw;X<&Y+(M4k$ksBn(QTA^d4^rEAWkJg^ySb@E!z6OP`x-u)Png;I2X$Qio+#dHPCRi4puTZCka%83QoE?2H0CMB z5rN$nXwgodxgl6G*`FwL7<9}+_>wW!o@6)nS%R%Lx@Nw!&|u9?UbLc6pluQ|RkFa@ zN0Q?N6Ya)zyT>-#AU)AOo99(P-Q@HGc-$iL=(U^A2o~f7jj+-&U&uC2Pv%!yu?ng`TASQkI~5GAa5e~ZN$5*+M)-pPy^f|9A4?MRUxOnK{CCWao{fnk*#;ik{92QUX zIVay4JJYIva8LPB-cfx6RPXh99wy^E^WQa`ijq?`vnF*chBpMq!6C$Eee0%gJIFZ>jCNmEoV0%Nvt-R6+|?838z7k_>5u{z{PD4-M{Zz*$L<6|9-tUXvWk!? z<#tNIE5PRhd5WbHZ{cNh$Sc{zGS|BkC*{fxNTJ8W%Nrw{Jn~-eI?9n<#QBu#+1Rd8 zKIhbQ{K$n)c{gIM8o{I&@Uk1CV-Pf5)W=KJEv9@Ifl`MPsH6_#{6)UPcHsu{0hm9p zg@bdXu}e%YE}k9qN1Cyj70}Lv3*kB zA$iuH#dIBQ?>FLIbNKL5=@@&!!GIy|t{!?+?=1blARBbGdiIM_pYkXKq6MEf<7|A^ zNUt73RcanY$cMM9gyZ}kCMW8&E3$W!CQ>rE_(A*&gyY;ZF&+Z{bnA~h&M*@UczB~68PZh*g=G60@lV6WFP3Sw6(*;#fs2j(tu7JWD~ zp+7XAwr8kR@6ZHZ!tj)m;XA-+7K$U!)-J^iE?ksut6~4lY(~!OauOkHj}U*tp*oZj zK4ScCwfgN*CaSLKZc~eSY^*MR>TP@U&NB*HEt-)fU|ecgr{1ag>P-FW5(J(%Hy@z% z8yT^-V4?5O58xFomVPSRK6gjpC|K5%q3&Lgg8`Z;;Uout^yiv|zI5*j^mcDC4h1PY zBILS@qxrNy>H9;+2L}&VUQ2+NO|L<5lG||p>p8NV%!P<1y(yb19z?%|xo;4)ACm;K z4k;2DrqqHnWr4IbU180s)fH&I1gNhz zMTiSJb$dHWiW_N5!5k;1VF49PC`@ocFKydamb>=e?i%`n?6tI;We# z(5lBj?%Q)bt3oDtUK%?U+dnSyPnZ<$xgfdan~07sUwaC^a?|y%rhh-M<>)`0H~-W` zihOurYqI^(jaw7v5;pDo;i1K>r`u09&tLnh*7jI#63{cYt63Epo2Nq)zmt^oD_$2d z=L7$hsa|ABl^-9W75+hNqO2A}wIppefS!OENkx8u^n_&1_DyjO(w=;L*<0;QFLn5A zW0IHU*!Rh{>Q-TPefd|cu^-Y3uargx88xD(iba9QqxtU#b+W;(BO;9o zV}nt8MZIgt)zoSgM$H812`|fVgOhI|U6R~Y+B}p-jH>Ctix}?`Q0hL1gYNLL{n2i6 zjOKT$hmSpJz2h6e+%#!YS#)vouBE9n-R2i&U6nG0{!lFz=rrs10`mU3e&bC#+OlQ4TejadiZSVSQ^n|%W%DqNh}aneXb zj~ydQT_Wd>%X%Mk&ASsS0{x$c^{(aTAdU~J&VrNvGPCFd=f!(@o#Wu=U3RJ&9QcRhMW#aBfU{Up@3kQDrI4))cAN&ldr&Nbs$%)__IsRBupvLpn;R4;QBFV z>(S969F8$?lO8&txmTBMfHru%V3EH@ehVcpYGDh;Tm>FtT3cIt7!3KMc0GRl`!#r5 zrCMYtMCXdpWJ)o!fw&tFG0P6<->Hr^Rb}b-yBNkynrXYQx`xGpS zaN(%w_0XCW*vZ0PULkJo!)b{mv(I4S)Q-Q%eEkr}@(D9>TUZ!p4a$migQ&%7IlnDN z!IUXC^y5cHH~d5%+0_+y zN&hTYH5;bS(aXusa2IGaMr%eCp^WFM8H(B%?PY-bE)ac)eViRQ z;vMcYz<$V$@s`(eY6^0r=2im@S7^2N1&o4EwW^vvY@O_V=5wk01vj=jcD7y_)l!) zI)*lWHm3UB^1 z0B*3<)y3{=$BuQR+L0jnsP*}Y|E{iBEdP1=*seqed>VpoYpRm>SYV*)B)+6=!kbk7 z2!|@~BbGh6BL>ooMhvMAYC@{N^;ln`V6X-2B;&(8OdSpiewDpz2cC2n8&u*mz}+ba zL7uGTEItzEak^5nD}d)q?RfR*X1Q$t7%cNwNt-Wkz@^ddnl5k<*Y1zo2cI#Mh@+~? z*)M%xk~1c@`O3U!@XqdSNZhla>huTVqR>AXarJgF+k&stq{&^;o?aaUK3exfJc54T zRA^=<2el^gbu|21_{=X$Ye?zfraP#6$hU#JL+#XJC%imU_T`!;7V_HQC-zHoeJPVc zTe~Nk)cX|7T2fQIpU2G)6rmBE3ZuOmu2*ugi7gjD({lqrF3t4i$fmbkN8T-XsX|h zw{e@~^MTx{$>Fc9x-Bb8Pf^mt?RXXncQ0j|pDZ(m$VH<*bMPTbA||%=gAI&UMaWgr z#onbp#mDA%s0O3G<=|lYZ{d<-AjOlo1*n|Y!pPf~yF*P2G0t6cb{nT}Giwc?RqwM8 z-vM!!v1lJ8(TanXnZAK2-m=^-VU?}_ovC)3^$6mH^^95Xw&5P_{q`#*OS)$_$EEfF zTTJwo$z89eC$Sh=!{64AUH*^iCeyKs4&f1G_d)xD2PT)}I@0)vh)A<9D4m3Dyyh=d zTZ(heNvzMWtJl51Sf;B6?y}pdEu*Gv%!JDNh?OznaJs(%sO>Dq) OehdxYN85Yy^1lIbbbK5D From eb28a82606328444865ff8fa91e5b0fcf61d0b51 Mon Sep 17 00:00:00 2001 From: Shounak Mulay Date: Fri, 25 Aug 2023 14:34:38 +0530 Subject: [PATCH 6/6] Update goldens --- .env.qa | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env.qa b/.env.qa index 9e6594d6..3aa5a596 100644 --- a/.env.qa +++ b/.env.qa @@ -1,2 +1,2 @@ -OPEN_WEATHER_API_KEY=77719ac9d5b2698cc2386cf0670a96ff +OPEN_WEATHER_API_KEY=YOUR_API_KEY OPEN_WEATHER_BASE_URL=https://api.openweathermap.org/ \ No newline at end of file