From fdcd9e2faeef2c5bb5474b78b04cba45d2702277 Mon Sep 17 00:00:00 2001 From: Alexey Alter-Pesotskiy Date: Thu, 28 Sep 2023 11:56:47 +0100 Subject: [PATCH] Improve CI experience --- .github/actions/bootstrap/action.yml | 20 +-- .github/actions/python-cache/action.yml | 11 ++ .github/actions/ruby-cache/action.yml | 9 ++ .github/actions/xcode-cache/action.yml | 19 +++ .github/workflows/cron-checks.yml | 45 ++++++- .github/workflows/smoke-checks.yml | 71 +++++++---- .gitignore | 2 + .slather.yml | 1 + Brewfile | 2 + Gemfile.lock | 51 ++++---- Githubfile | 4 + Scripts/bootstrap.sh | 36 ++---- StreamChatSwiftUI.xcodeproj/project.pbxproj | 2 + .../StreamChatSwiftUITestsApp.xcscheme | 8 +- .../ChatChannelViewModel_Tests.swift | 7 +- fastlane/Allurefile | 2 +- fastlane/Fastfile | 116 ++++++++++-------- fastlane/Pluginfile | 2 +- 18 files changed, 263 insertions(+), 145 deletions(-) create mode 100644 .github/actions/python-cache/action.yml create mode 100644 .github/actions/ruby-cache/action.yml create mode 100644 .github/actions/xcode-cache/action.yml create mode 100644 Brewfile create mode 100644 Githubfile diff --git a/.github/actions/bootstrap/action.yml b/.github/actions/bootstrap/action.yml index ddc992e2..2abfa5a9 100644 --- a/.github/actions/bootstrap/action.yml +++ b/.github/actions/bootstrap/action.yml @@ -7,13 +7,6 @@ runs: shell: bash - run: echo "$HOME/.mint/bin" >> $GITHUB_PATH shell: bash - - name: Cache RubyGems - uses: actions/cache@v3 - id: rubygem-cache - with: - path: vendor/bundle - key: ${{ env.IMAGE }}-gem-${{ hashFiles('**/Gemfile.lock') }} - restore-keys: ${{ env.IMAGE }}-gem- - name: Cache Mint uses: actions/cache@v3 id: mint-cache @@ -21,5 +14,18 @@ runs: path: ~/.mint key: ${{ env.IMAGE }}-mint-${{ hashFiles('**/Mintfile') }} restore-keys: ${{ env.IMAGE }}-mint- + - name: Cache brew + uses: actions/cache@v3 + id: brew-cache + with: + path: | + ~/Library/Caches/Homebrew/mint* + ~/Library/Caches/Homebrew/vale* + ~/Library/Caches/Homebrew/xcparse* + ~/Library/Caches/Homebrew/sonar-scanner* + key: ${{ env.IMAGE }}-brew-${{ hashFiles('**/Brewfile.lock.json') }} + restore-keys: ${{ env.IMAGE }}-brew- + - uses: ./.github/actions/ruby-cache + - uses: ./.github/actions/xcode-cache - run: ./Scripts/bootstrap.sh shell: bash diff --git a/.github/actions/python-cache/action.yml b/.github/actions/python-cache/action.yml new file mode 100644 index 00000000..48b17a11 --- /dev/null +++ b/.github/actions/python-cache/action.yml @@ -0,0 +1,11 @@ +name: 'Python Cache' +description: 'Run bootstrap.sh' +runs: + using: "composite" + steps: + - uses: actions/setup-python@v4 + with: + python-version: 3.11 + cache: 'pip' + - run: pip install -r requirements.txt + shell: bash diff --git a/.github/actions/ruby-cache/action.yml b/.github/actions/ruby-cache/action.yml new file mode 100644 index 00000000..7b03fa01 --- /dev/null +++ b/.github/actions/ruby-cache/action.yml @@ -0,0 +1,9 @@ +name: 'Ruby Cache' +description: 'Run bootstrap.sh' +runs: + using: "composite" + steps: + - uses: ruby/setup-ruby@v1 + with: + ruby-version: 3.1 + bundler-cache: true diff --git a/.github/actions/xcode-cache/action.yml b/.github/actions/xcode-cache/action.yml new file mode 100644 index 00000000..f5458762 --- /dev/null +++ b/.github/actions/xcode-cache/action.yml @@ -0,0 +1,19 @@ +name: 'Xcode Cache' +description: 'Run bootstrap.sh' +runs: + using: "composite" + steps: + - run: echo "IMAGE=${ImageOS}-${ImageVersion}" >> $GITHUB_ENV + shell: bash + - run: echo "$HOME/.mint/bin" >> $GITHUB_PATH + shell: bash + - name: Cache SPM + uses: actions/cache@v3 + id: spm-cache + with: + path: spm_cache + key: ${{ env.IMAGE }}-spm-${{ hashFiles('**/Package.resolved') }} + restore-keys: ${{ env.IMAGE }}-spm- + - uses: mikehardy/buildcache-action@v2 + with: + cache_key: ${{ env.IMAGE }}-buildcache- diff --git a/.github/workflows/cron-checks.yml b/.github/workflows/cron-checks.yml index 04289fef..115c5972 100644 --- a/.github/workflows/cron-checks.yml +++ b/.github/workflows/cron-checks.yml @@ -20,8 +20,28 @@ env: HOMEBREW_NO_INSTALL_CLEANUP: 1 # Disable cleanup for homebrew, we don't need it on CI jobs: - build-and-test-e2e-debug: + build-test-app-and-frameworks: + name: Build Test App and Frameworks + runs-on: macos-13 + steps: + - uses: actions/checkout@v3.1.0 + - uses: ./.github/actions/ruby-cache + - uses: ./.github/actions/xcode-cache + - name: Build + run: bundle exec fastlane build_test_app_and_frameworks + timeout-minutes: 60 + - uses: actions/upload-artifact@v3 + if: success() + with: + name: cache-derived-data + path: | + derived_data/Build/**/*.app + derived_data/Build/**/*.xctestrun + derived_data/Build/**/*.framework + + test-e2e-debug: name: Test E2E UI (Debug) + needs: build-test-app-and-frameworks strategy: matrix: include: @@ -45,17 +65,27 @@ jobs: XCODE_VERSION: ${{ matrix.xcode }} steps: - uses: actions/checkout@v3.1.0 + - uses: actions/download-artifact@v3 + with: + name: cache-derived-data + path: derived_data/Build/ - uses: ./.github/actions/bootstrap env: INSTALL_ALLURE: true - INSTALL_XCPARSE: true + - name: Cache iOS Simulator Runtime + uses: actions/cache@v3 + id: runtime-cache + with: + path: ~/Library/Caches/XcodeInstall/ + key: runtime-ios-${{ matrix.ios }} + restore-keys: runtime-ios-${{ matrix.ios }} - name: Setup iOS ${{ matrix.ios }} Runtime if: ${{ matrix.setup_runtime }} - run: xcversion simulators --install='iOS ${{ matrix.ios }}' + run: bundle exec fastlane install_sim ios:"${{ matrix.ios }}" - name: Launch Allure TestOps run: bundle exec fastlane allure_launch cron:true - name: Run UI Tests (Debug) - run: bundle exec fastlane test_e2e_mock cron:true device:"${{ matrix.device }} (${{ matrix.ios }})" + run: bundle exec fastlane test_e2e_mock device:"${{ matrix.device }} (${{ matrix.ios }})" cron:true test_without_building:true timeout-minutes: 90 - name: Allure TestOps Upload if: success() || failure() @@ -75,7 +105,9 @@ jobs: if: failure() && github.event_name == 'schedule' - name: Parse xcresult if: failure() - run: xcparse logs fastlane/test_output/StreamChatSwiftUITestsApp.xcresult fastlane/test_output/logs/ + run: | + brew install chargepoint/xcparse/xcparse + xcparse logs fastlane/test_output/StreamChatUITestsApp.xcresult fastlane/test_output/logs/ - uses: actions/upload-artifact@v3 if: failure() with: @@ -100,7 +132,8 @@ jobs: runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3.1.0 - - uses: ./.github/actions/bootstrap + - uses: ./.github/actions/ruby-cache + - uses: ./.github/actions/xcode-cache - name: Build Demo App run: bundle exec fastlane build_demo env: diff --git a/.github/workflows/smoke-checks.yml b/.github/workflows/smoke-checks.yml index 319cfd63..d456c05c 100644 --- a/.github/workflows/smoke-checks.yml +++ b/.github/workflows/smoke-checks.yml @@ -36,21 +36,40 @@ jobs: - name: Run Podspec Linting run: bundle exec fastlane pod_lint - build-and-test-ui-debug: + build-test-app-and-frameworks: + name: Build Test App and Frameworks + runs-on: macos-13 + if: ${{ github.event_name != 'push' }} + steps: + - uses: actions/checkout@v3.1.0 + - uses: ./.github/actions/ruby-cache + - uses: ./.github/actions/xcode-cache + - name: Build + run: bundle exec fastlane build_test_app_and_frameworks + timeout-minutes: 60 + - uses: actions/upload-artifact@v3 + if: success() + with: + name: cache-derived-data + path: | + derived_data/Build/**/*.app + derived_data/Build/**/*.xctestrun + derived_data/Build/**/*.framework + + test-ui-debug: name: Test SwiftUI (Debug) runs-on: macos-13 + needs: build-test-app-and-frameworks steps: - uses: actions/checkout@v3.1.0 - - uses: actions/setup-python@v4 + - uses: actions/download-artifact@v3 with: - python-version: 3.11 - cache: 'pip' + name: cache-derived-data + path: derived_data/Build/ - uses: ./.github/actions/bootstrap - env: - INSTALL_SONAR: true - INSTALL_XCPARSE: true + - uses: ./.github/actions/python-cache - name: Run UI Tests (Debug) - run: bundle exec fastlane test_ui device:"${{ env.IOS_SIMULATOR_DEVICE }}" + run: bundle exec fastlane test_ui device:"${{ env.IOS_SIMULATOR_DEVICE }}" skip_build:true timeout-minutes: 40 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -78,7 +97,9 @@ jobs: if: ${{ github.event_name == 'push' && failure() }} - name: Parse xcresult if: failure() - run: xcparse screenshots fastlane/test_output/StreamChatSwiftUI.xcresult fastlane/test_output/snapshots --test + run: | + brew install chargepoint/xcparse/xcparse + xcparse screenshots fastlane/test_output/StreamChatSwiftUI.xcresult fastlane/test_output/snapshots --test - uses: actions/upload-artifact@v3 if: failure() with: @@ -86,11 +107,13 @@ jobs: path: | fastlane/test_output/snapshots - build-and-test-e2e-debug: + test-e2e-debug: name: Test E2E UI (Debug) runs-on: macos-13 if: ${{ github.event_name != 'push' }} - needs: allure_testops_launch + needs: + - allure_testops_launch + - build-test-app-and-frameworks env: LAUNCH_ID: ${{ needs.allure_testops_launch.outputs.launch_id }} strategy: @@ -99,15 +122,15 @@ jobs: fail-fast: false steps: - uses: actions/checkout@v3.1.0 - if: env.LAUNCH_ID != '' + - uses: actions/download-artifact@v3 + with: + name: cache-derived-data + path: derived_data/Build/ - uses: ./.github/actions/bootstrap - if: env.LAUNCH_ID != '' env: INSTALL_ALLURE: true - INSTALL_XCPARSE: true - name: Run UI Tests (Debug) - if: env.LAUNCH_ID != '' - run: bundle exec fastlane test_e2e_mock device:"${{ env.IOS_SIMULATOR_DEVICE }}" batch:'${{ matrix.batch }}' + run: bundle exec fastlane test_e2e_mock device:"${{ env.IOS_SIMULATOR_DEVICE }}" batch:'${{ matrix.batch }}' test_without_building:true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_PR_NUM: ${{ github.event.number }} @@ -127,7 +150,9 @@ jobs: ALLURE_TOKEN: ${{ secrets.ALLURE_TOKEN }} - name: Parse xcresult if: failure() - run: xcparse logs fastlane/test_output/StreamChatSwiftUITestsApp.xcresult fastlane/test_output/logs/ + run: | + brew install chargepoint/xcparse/xcparse + xcparse logs fastlane/test_output/StreamChatUITestsApp.xcresult fastlane/test_output/logs/ - uses: actions/upload-artifact@v3 if: failure() with: @@ -145,9 +170,7 @@ jobs: launch_id: ${{ steps.get_launch_id.outputs.launch_id }} steps: - uses: actions/checkout@v3.1.0 - - uses: ./.github/actions/bootstrap - env: - XCODE_ACTIONS: false + - uses: ./.github/actions/ruby-cache - name: Launch Allure TestOps run: bundle exec fastlane allure_launch env: @@ -161,9 +184,15 @@ jobs: build-apps: name: Build Demo App runs-on: macos-13 + needs: build-test-app-and-frameworks if: ${{ github.event_name != 'push' }} steps: - uses: actions/checkout@v3.1.0 - - uses: ./.github/actions/bootstrap + - uses: actions/download-artifact@v3 + with: + name: cache-derived-data + path: derived_data/Build/ + - uses: ./.github/actions/ruby-cache + - uses: ./.github/actions/xcode-cache - name: Build Demo App run: bundle exec fastlane build_demo diff --git a/.gitignore b/.gitignore index d403eaf0..4f16ddf6 100644 --- a/.gitignore +++ b/.gitignore @@ -83,3 +83,5 @@ reports/ .scannerwork/ push_payload.json sinatra_log.txt +derived_data/ +spm_cache/ diff --git a/.slather.yml b/.slather.yml index 4966d26b..9bcaa32e 100644 --- a/.slather.yml +++ b/.slather.yml @@ -1,6 +1,7 @@ coverage_service: sonarqube_xml xcodeproj: StreamChatSwiftUI.xcodeproj scheme: StreamChatSwiftUI +build_directory: derived_data/ source_directory: Sources/ output_directory: reports ignore: diff --git a/Brewfile b/Brewfile new file mode 100644 index 00000000..5b81827e --- /dev/null +++ b/Brewfile @@ -0,0 +1,2 @@ +brew 'mint' +brew 'sonar-scanner' diff --git a/Gemfile.lock b/Gemfile.lock index 4b8e4cf7..9fd88a40 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -17,16 +17,16 @@ GEM ast (2.4.2) atomos (0.1.3) aws-eventstream (1.2.0) - aws-partitions (1.823.0) - aws-sdk-core (3.181.1) + aws-partitions (1.829.0) + aws-sdk-core (3.184.0) aws-eventstream (~> 1, >= 1.0.2) aws-partitions (~> 1, >= 1.651.0) aws-sigv4 (~> 1.5) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.71.0) - aws-sdk-core (~> 3, >= 3.177.0) + aws-sdk-kms (1.72.0) + aws-sdk-core (~> 3, >= 3.184.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.134.0) + aws-sdk-s3 (1.136.0) aws-sdk-core (~> 3, >= 3.181.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.6) @@ -39,10 +39,10 @@ GEM nap open4 (~> 1.3) clamp (1.3.2) - cocoapods (1.12.1) + cocoapods (1.13.0) addressable (~> 2.8) claide (>= 1.0.2, < 2.0) - cocoapods-core (= 1.12.1) + cocoapods-core (= 1.13.0) cocoapods-deintegrate (>= 1.0.3, < 2.0) cocoapods-downloader (>= 1.6.0, < 2.0) cocoapods-plugins (>= 1.0.0, < 2.0) @@ -56,8 +56,8 @@ GEM molinillo (~> 0.8.0) nap (~> 1.0) ruby-macho (>= 2.3.0, < 3.0) - xcodeproj (>= 1.21.0, < 2.0) - cocoapods-core (1.12.1) + xcodeproj (>= 1.23.0, < 2.0) + cocoapods-core (1.13.0) activesupport (>= 5.0, < 8) addressable (~> 2.8) algoliasearch (~> 1.0) @@ -84,7 +84,7 @@ GEM concurrent-ruby (1.2.2) cork (0.3.0) colored2 (~> 3.1) - danger (9.3.1) + danger (9.3.2) claide (~> 1.0) claide-plugins (>= 0.9.2) colored2 (~> 3.1) @@ -143,7 +143,7 @@ GEM faraday_middleware (1.2.0) faraday (~> 1.0) fastimage (2.2.7) - fastlane (2.214.0) + fastlane (2.216.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) @@ -164,6 +164,7 @@ GEM google-apis-playcustomapp_v1 (~> 0.1) google-cloud-storage (~> 1.31) highline (~> 2.0) + http-cookie (~> 1.0.5) json (< 3.0.0) jwt (>= 2.1.0, < 3) mini_magick (>= 4.9.4, < 5.0.0) @@ -175,31 +176,31 @@ GEM security (= 0.1.3) simctl (~> 1.6.3) terminal-notifier (>= 2.0.0, < 3.0.0) - terminal-table (>= 1.4.5, < 2.0.0) + terminal-table (~> 3) tty-screen (>= 0.6.3, < 1.0.0) tty-spinner (>= 0.8.0, < 1.0.0) word_wrap (~> 1.0.0) xcodeproj (>= 1.13.0, < 2.0.0) xcpretty (~> 0.3.0) xcpretty-travis-formatter (>= 0.0.3) - fastlane-plugin-emerge (0.5.1) + fastlane-plugin-emerge (0.6.0) faraday (~> 1.1) fastlane-plugin-lizard (1.3.3) bundler fastlane pry fastlane-plugin-sonarcloud_metric_kit (0.2.1) - fastlane-plugin-stream_actions (0.3.19) + fastlane-plugin-stream_actions (0.3.20) xctest_list (= 1.2.1) fastlane-plugin-versioning (0.5.2) - ffi (1.15.5) + ffi (1.16.2) fourflusher (2.3.1) fuzzy_match (2.0.4) gh_inspector (1.1.3) git (1.18.0) addressable (~> 2.8) rchardet (~> 1.8) - google-apis-androidpublisher_v3 (0.49.0) + google-apis-androidpublisher_v3 (0.50.0) google-apis-core (>= 0.11.0, < 2.a) google-apis-core (0.11.1) addressable (~> 2.5, >= 2.5.1) @@ -230,7 +231,7 @@ GEM google-cloud-core (~> 1.6) googleauth (>= 0.16.2, < 2.a) mini_mime (~> 1.0) - googleauth (1.8.0) + googleauth (1.8.1) faraday (>= 0.17.3, < 3.a) jwt (>= 1.4, < 3.0) multi_json (~> 1.11) @@ -242,13 +243,13 @@ GEM httpclient (2.8.3) i18n (1.14.1) concurrent-ruby (~> 1.0) - jazzy (0.14.3) + jazzy (0.14.4) cocoapods (~> 1.5) mustache (~> 1.1) open4 (~> 1.3) redcarpet (~> 3.4) rexml (~> 3.2) - rouge (>= 2.0.6, < 4.0) + rouge (>= 2.0.6, < 5.0) sassc (~> 2.1) sqlite3 (~> 1.3) xcinvoke (~> 0.3.0) @@ -322,7 +323,7 @@ GEM unicode-display_width (>= 1.4.0, < 3.0) rubocop-ast (1.29.0) parser (>= 3.2.1.0) - rubocop-performance (1.19.0) + rubocop-performance (1.19.1) rubocop (>= 1.7.0, < 2.0) rubocop-ast (>= 0.4.0) rubocop-require_tools (0.1.2) @@ -359,8 +360,8 @@ GEM sqlite3 (1.6.6) mini_portile2 (~> 2.8.0) terminal-notifier (2.0.0) - terminal-table (1.8.0) - unicode-display_width (~> 1.1, >= 1.1.1) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) tilt (2.3.0) trailblazer-option (0.1.2) tty-cursor (0.7.1) @@ -375,7 +376,7 @@ GEM unf (0.1.4) unf_ext unf_ext (0.0.8.2) - unicode-display_width (1.8.0) + unicode-display_width (2.4.2) webrick (1.8.1) word_wrap (1.0.0) xcinvoke (0.3.0) @@ -383,7 +384,7 @@ GEM xcode-install (2.8.1) claide (>= 0.9.1) fastlane (>= 2.1.0, < 3.0.0) - xcodeproj (1.22.0) + xcodeproj (1.23.0) CFPropertyList (>= 2.3.3, < 4.0) atomos (~> 0.1.3) claide (>= 1.0.2, < 2.0) @@ -407,7 +408,7 @@ DEPENDENCIES fastlane-plugin-emerge fastlane-plugin-lizard fastlane-plugin-sonarcloud_metric_kit - fastlane-plugin-stream_actions (= 0.3.19) + fastlane-plugin-stream_actions (= 0.3.20) fastlane-plugin-versioning jazzy json diff --git a/Githubfile b/Githubfile new file mode 100644 index 00000000..2c2f13ba --- /dev/null +++ b/Githubfile @@ -0,0 +1,4 @@ +#!/bin/bash + +export ALLURECTL_VERSION='2.14.2' +export XCRESULTS_VERSION='1.16.3' diff --git a/Scripts/bootstrap.sh b/Scripts/bootstrap.sh index f5f47c89..1413df0f 100755 --- a/Scripts/bootstrap.sh +++ b/Scripts/bootstrap.sh @@ -1,11 +1,11 @@ #!/usr/bin/env bash +# shellcheck source=/dev/null # Usage: ./bootstrap.sh # This script will: # - install Mint and bootstrap its dependencies +# - install Vale # - link git hooks -# - install required ruby gems -# - install sonar dependencies if `INSTALL_SONAR` environment variable is provided -# - install xcparse if `INSTALL_XCPARSE` environment variable is provided +# - install allure dependencies if `INSTALL_ALLURE` environment variable is provided # You should have homebrew installed. # If you get `zsh: permission denied: ./bootstrap.sh` error, please run `chmod +x bootstrap.sh` first @@ -20,18 +20,12 @@ if [[ $(command -v brew) == "" ]]; then exit 1 fi +# Set bash to Strict Mode (http://redsymbol.net/articles/unofficial-bash-strict-mode/) set -Eeuo pipefail trap "echo ; echo ❌ The Bootstrap script failed to finish without error. See the log above to debug. ; echo" ERR -puts "Install Mint if needed" -brew install mint - -# Set bash to Strict Mode (http://redsymbol.net/articles/unofficial-bash-strict-mode/) -set -euo pipefail - -puts "Bootstrap Mint dependencies" -mint bootstrap --link +source ./Githubfile puts "Create git/hooks folder if needed" mkdir -p .git/hooks @@ -43,28 +37,20 @@ ln -sf ../../hooks/pre-commit.sh .git/hooks/pre-commit chmod +x .git/hooks/pre-commit chmod +x ./hooks/git-format-staged -# Install gems -puts "Install bundle dependencies" -bundle install +puts "Install brew dependencies" +brew bundle -d -if [[ ${INSTALL_SONAR-default} == true ]]; then - puts "Install sonar dependencies" - pip install lizard - brew install sonar-scanner -fi +puts "Bootstrap Mint dependencies" +mint bootstrap --link if [[ ${INSTALL_ALLURE-default} == true ]]; then puts "Install allurectl" - DOWNLOAD_URL="https://github.com/allure-framework/allurectl/releases/download/2.2.1/allurectl_darwin_amd64" + DOWNLOAD_URL="https://github.com/allure-framework/allurectl/releases/download/${ALLURECTL_VERSION}/allurectl_darwin_amd64" curl -sL "${DOWNLOAD_URL}" -o ./fastlane/allurectl chmod +x ./fastlane/allurectl puts "Install xcresults" - DOWNLOAD_URL="https://github.com/eroshenkoam/xcresults/releases/download/1.12.0/xcresults" + DOWNLOAD_URL="https://github.com/eroshenkoam/xcresults/releases/download/${XCRESULTS_VERSION}/xcresults" curl -sL "${DOWNLOAD_URL}" -o ./fastlane/xcresults chmod +x ./fastlane/xcresults fi - -if [[ ${INSTALL_XCPARSE-default} == true ]]; then - brew install chargepoint/xcparse/xcparse -fi diff --git a/StreamChatSwiftUI.xcodeproj/project.pbxproj b/StreamChatSwiftUI.xcodeproj/project.pbxproj index 501550ac..516f0b18 100644 --- a/StreamChatSwiftUI.xcodeproj/project.pbxproj +++ b/StreamChatSwiftUI.xcodeproj/project.pbxproj @@ -2233,6 +2233,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = EHV7XZLAHA; + GCC_OPTIMIZATION_LEVEL = s; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 14.0; MARKETING_VERSION = 1.0; @@ -2274,6 +2275,7 @@ DEVELOPMENT_ASSET_PATHS = "\"StreamChatSwiftUITestsApp/Preview Content\""; DEVELOPMENT_TEAM = EHV7XZLAHA; ENABLE_PREVIEWS = YES; + GCC_OPTIMIZATION_LEVEL = s; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = StreamChatSwiftUITestsApp/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = "Chat SwiftUI Tests"; diff --git a/StreamChatSwiftUI.xcodeproj/xcshareddata/xcschemes/StreamChatSwiftUITestsApp.xcscheme b/StreamChatSwiftUI.xcodeproj/xcshareddata/xcschemes/StreamChatSwiftUITestsApp.xcscheme index 761239a8..11283903 100644 --- a/StreamChatSwiftUI.xcodeproj/xcshareddata/xcschemes/StreamChatSwiftUITestsApp.xcscheme +++ b/StreamChatSwiftUI.xcodeproj/xcshareddata/xcschemes/StreamChatSwiftUITestsApp.xcscheme @@ -24,8 +24,8 @@