Skip to content

Smoke Checks

Smoke Checks #8934

Workflow file for this run

name: Smoke Checks
on:
pull_request:
branches:
- '**'
- '!main'
workflow_dispatch:
inputs:
snapshots:
description: 'Should Snapshots be recorded on CI?'
type: boolean
required: false
default: false
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
HOMEBREW_NO_INSTALL_CLEANUP: 1 # Disable cleanup for homebrew, we don't need it on CI
IOS_SIMULATOR_DEVICE: "iPhone 14 Pro (16.4)"
jobs:
build-test-app-and-frameworks:
name: Build Test App and Frameworks
runs-on: macos-13
if: ${{ github.event_name != 'push' }}
steps:
- uses: actions/[email protected]
- 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-llc-debug:
# name: Test LLC (Debug)
# runs-on: macos-13
# if: ${{ github.event.inputs.snapshots != 'true' }}
# needs: build-test-app-and-frameworks
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# GITHUB_PR_NUM: ${{ github.event.number }}
# steps:
# - uses: actions/[email protected]
# with:
# fetch-depth: 100
# - uses: actions/download-artifact@v3
# with:
# name: cache-derived-data
# path: derived_data/Build/
# - uses: ./.github/actions/bootstrap
# - uses: ./.github/actions/python-cache
# - name: Run LLC Tests (Debug)
# run: bundle exec fastlane test device:"${{ env.IOS_SIMULATOR_DEVICE }}" skip_build:true
# timeout-minutes: 30
# - name: Get branch name
# id: get_branch_name
# run: echo "branch=${GITHUB_REF#refs/heads/}" >> $GITHUB_OUTPUT
# - name: Run Sonar analysis
# run: bundle exec fastlane sonar_upload
# env:
# BRANCH_NAME: ${{ steps.get_branch_name.outputs.branch }}
# SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
# SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
# PR_NUMBER: ${{ github.event.number }}
# - uses: 8398a7/action-slack@v3
# with:
# status: ${{ job.status }}
# text: "You shall not pass!"
# job_name: "Test LLC (Debug)"
# fields: message,commit,author,action,workflow,job,took
# env:
# SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
# MATRIX_CONTEXT: ${{ toJson(matrix) }}
# if: ${{ github.event_name == 'push' && failure() }}
# test-ui-debug:
# name: Test UI (Debug)
# runs-on: macos-13
# needs: build-test-app-and-frameworks
# if: ${{ github.event_name != 'push' }}
# steps:
# - uses: actions/[email protected]
# - uses: actions/download-artifact@v3
# with:
# name: cache-derived-data
# path: derived_data/Build/
# - uses: ./.github/actions/bootstrap
# - name: Run UI Tests (Debug)
# run: bundle exec fastlane test_ui device:"${{ env.IOS_SIMULATOR_DEVICE }}" skip_build:true record:${{ github.event.inputs.snapshots }}
# timeout-minutes: 25
# env:
# GITHUB_TOKEN: ${{ secrets.CI_BOT_GITHUB_TOKEN }} # to open a PR
# GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} # to use github cli
# GITHUB_PR_NUM: ${{ github.event.number }}
# - name: Parse xcresult
# if: failure()
# run: |
# brew install chargepoint/xcparse/xcparse
# xcparse screenshots fastlane/test_output/StreamChatUI.xcresult fastlane/test_output/snapshots --test
# - uses: actions/upload-artifact@v3
# if: failure()
# with:
# name: Test Data
# path: |
# fastlane/test_output/snapshots
performance-metrics:
name: Performance Metrics
runs-on: macos-13
if: ${{ github.event_name != 'push' && github.event.inputs.snapshots != 'true' }}
needs:
- build-test-app-and-frameworks
steps:
- uses: actions/[email protected]
- uses: actions/download-artifact@v3
with:
name: cache-derived-data
path: derived_data/Build/
- uses: ./.github/actions/bootstrap
env:
INSTALL_ALLURE: true
- run: brew install chargepoint/xcparse/xcparse
- name: Run Performance Metrics
run: bundle exec fastlane xcmetrics device:"${{ env.IOS_SIMULATOR_DEVICE }}" test_without_building:true
timeout-minutes: 60
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_PR_NUM: ${{ github.event.number }}
# test-e2e-debug:
# name: Test E2E UI (Debug)
# runs-on: macos-12 # TODO: bump macos version to 13 when Xcode 15.0 is released
# if: ${{ github.event_name != 'push' && github.event.inputs.snapshots != 'true' }}
# needs:
# - allure_testops_launch
# - build-test-app-and-frameworks
# env:
# LAUNCH_ID: ${{ needs.allure_testops_launch.outputs.launch_id }}
# XCODE_VERSION: "14.2.0" # TODO: delete these two lines
# IOS_SIMULATOR_DEVICE: "iPhone 14 Pro (16.2)" # when Xcode 15.0 is released
# strategy:
# matrix:
# batch: [0, 1, 2]
# fail-fast: false
# steps:
# - uses: actions/[email protected]
# - uses: actions/download-artifact@v3
# with:
# name: cache-derived-data
# path: derived_data/Build/
# - uses: ./.github/actions/bootstrap
# env:
# INSTALL_ALLURE: true
# - name: Run UI Tests (Debug)
# run: bundle exec fastlane test_e2e_mock device:"${{ env.IOS_SIMULATOR_DEVICE }}" batch:'${{ matrix.batch }}' test_without_building:true
# timeout-minutes: 60
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# GITHUB_PR_NUM: ${{ github.event.number }}
# MATRIX_SIZE: ${{ strategy.job-total }}
# STREAM_DEMO_APP_SECRET: ${{ secrets.STREAM_DEMO_APP_SECRET }}
# - name: Allure TestOps Upload
# if: env.LAUNCH_ID != '' && (success() || failure())
# run: bundle exec fastlane allure_upload launch_id:$LAUNCH_ID
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# ALLURE_TOKEN: ${{ secrets.ALLURE_TOKEN }}
# - name: Allure TestOps Launch Removal
# if: env.LAUNCH_ID != '' && cancelled()
# run: bundle exec fastlane allure_launch_removal launch_id:$LAUNCH_ID
# env:
# ALLURE_TOKEN: ${{ secrets.ALLURE_TOKEN }}
# - name: Parse xcresult
# if: failure()
# 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:
# name: Test Data
# path: |
# fastlane/recordings
# fastlane/sinatra_log.txt
# fastlane/test_output/logs/*/Diagnostics/StreamChatUITestsAppUITests-*/*/*.txt
# allure_testops_launch:
# name: Launch Allure TestOps
# runs-on: macos-13
# if: ${{ github.event_name != 'push' && github.event.inputs.snapshots != 'true' }}
# outputs:
# launch_id: ${{ steps.get_launch_id.outputs.launch_id }}
# steps:
# - uses: actions/[email protected]
# - uses: ./.github/actions/ruby-cache
# - name: Launch Allure TestOps
# run: bundle exec fastlane allure_launch
# env:
# ALLURE_TOKEN: ${{ secrets.ALLURE_TOKEN }}
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# GITHUB_EVENT: ${{ toJson(github.event) }}
# - id: get_launch_id
# run: echo "launch_id=${{env.LAUNCH_ID}}" >> $GITHUB_OUTPUT
# if: env.LAUNCH_ID != ''
# build-xcode14:
# name: Build LLC + UI (Xcode 14)
# runs-on: macos-12
# if: ${{ github.event_name != 'push' && github.event.inputs.snapshots != 'true' }}
# env:
# XCODE_VERSION: "14.0.1"
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# GITHUB_PR_NUM: ${{ github.event.number }}
# steps:
# - uses: actions/[email protected]
# - uses: ./.github/actions/ruby-cache
# - name: List Xcode versions xcversion sees
# run: mdfind "kMDItemCFBundleIdentifier = 'com.apple.dt.Xcode'"
# - name: Build LLC
# run: bundle exec fastlane test device:"iPhone 13" build_for_testing:true
# timeout-minutes: 25
# - name: Build UI
# run: bundle exec fastlane test_ui device:"iPhone 13" build_for_testing:true
# timeout-minutes: 25
# build-apps:
# name: Build Demo App + Example Apps
# runs-on: macos-13
# needs: build-test-app-and-frameworks
# if: ${{ github.event_name != 'push' && github.event.inputs.snapshots != 'true' }}
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# GITHUB_PR_NUM: ${{ github.event.number }}
# steps:
# - uses: actions/[email protected]
# - 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
# timeout-minutes: 10
# - name: Build iMessageClone App
# run: bundle exec fastlane build_imessage_clone
# timeout-minutes: 10
# - name: Build SlackClone App
# run: bundle exec fastlane build_slack_clone
# timeout-minutes: 10
# - name: Build MessengerClone App
# run: bundle exec fastlane build_messenger_clone
# timeout-minutes: 10
# - name: Build YouTubeClone App
# run: bundle exec fastlane build_youtube_clone
# timeout-minutes: 10
# test-integration:
# name: Test Integration
# runs-on: macos-13
# needs: build-test-app-and-frameworks
# if: ${{ github.event_name != 'push' && github.event.inputs.snapshots != 'true' }}
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# GITHUB_PR_NUM: ${{ github.event.number }}
# steps:
# - uses: actions/[email protected]
# - 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: Test SPM Integration
# run: bundle exec fastlane spm_integration
# timeout-minutes: 25
# - name: Test CocoaPods Integration
# if: always()
# run: bundle exec fastlane cocoapods_integration
# timeout-minutes: 25
# automated-code-review:
# name: Automated Code Review
# runs-on: macos-13
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# GITHUB_PR_NUM: ${{ github.event.number }}
# if: ${{ github.event_name != 'push' && github.event.inputs.snapshots != 'true' }}
# steps:
# - uses: actions/[email protected]
# with:
# fetch-depth: 100
# - uses: ./.github/actions/bootstrap
# - name: Run Danger
# run: bundle exec danger
# - name: Run Fastlane Linting
# run: bundle exec fastlane rubocop
# - name: Run SwiftFormat Linting
# run: ./Scripts/run-linter.sh
# - name: Run Podspec Linting
# run: bundle exec fastlane pod_lint