Skip to content

Commit

Permalink
Add unified tests scheme
Browse files Browse the repository at this point in the history
  • Loading branch information
ipavlidakis committed Nov 20, 2024
1 parent d9a3c8f commit 58db5be
Show file tree
Hide file tree
Showing 7 changed files with 617 additions and 160 deletions.
335 changes: 199 additions & 136 deletions .github/workflows/smoke-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ jobs:
INSTALL_YEETD: true
SKIP_MINT_BOOTSTRAP: true
- name: Run LLC Tests (Debug)
run: bundle exec fastlane test device:"${{ env.IOS_SIMULATOR_DEVICE }}"
run: bundle exec fastlane test_unified device:"${{ env.IOS_SIMULATOR_DEVICE }}"
timeout-minutes: 40
env:
XCODE_VERSION: "15.2" # the most stable pair of Xcode
Expand Down Expand Up @@ -85,71 +85,71 @@ jobs:
fastlane/test_output/logs/*/Diagnostics/**/*.txt
fastlane/test_output/logs/*/Diagnostics/simctl_diagnostics/DiagnosticReports/*
test-swiftui-debug:
name: Test SwiftUI (Debug)
runs-on: macos-14
needs: test-llc-debug
if: ${{ github.event_name != 'push' && github.event.inputs.swiftui_snapshots != 'false' }}
env:
GITHUB_TOKEN: ${{ secrets.CI_BOT_GITHUB_TOKEN }} # to open a PR
steps:
- uses: actions/[email protected]
- uses: ./.github/actions/bootstrap
env:
INSTALL_YEETD: true
SKIP_MINT_BOOTSTRAP: true
SKIP_BREW_BOOTSTRAP: true
- name: Run UI Tests (Debug)
run: bundle exec fastlane test_swiftui device:"${{ env.IOS_SIMULATOR_DEVICE }}" record:${{ github.event.inputs.swiftui_snapshots }}
timeout-minutes: 40
env:
XCODE_VERSION: "15.2" # the most stable pair of Xcode
IOS_SIMULATOR_DEVICE: "iPhone 15 Pro (17.2)" # and iOS
- name: Parse xcresult
if: failure()
run: |
brew install chargepoint/xcparse/xcparse
xcparse screenshots fastlane/test_output/StreamVideoSwiftUI.xcresult fastlane/test_output/snapshots --test
- uses: actions/upload-artifact@v4
if: failure()
with:
name: SwiftUI Test Data
path: |
~/Library/Logs/scan
fastlane/test_output/snapshots
# test-swiftui-debug:
# name: Test SwiftUI (Debug)
# runs-on: macos-14
# needs: test-llc-debug
# if: ${{ github.event_name != 'push' && github.event.inputs.swiftui_snapshots != 'false' }}
# env:
# GITHUB_TOKEN: ${{ secrets.CI_BOT_GITHUB_TOKEN }} # to open a PR
# steps:
# - uses: actions/[email protected]
# - uses: ./.github/actions/bootstrap
# env:
# INSTALL_YEETD: true
# SKIP_MINT_BOOTSTRAP: true
# SKIP_BREW_BOOTSTRAP: true
# - name: Run UI Tests (Debug)
# run: bundle exec fastlane test_swiftui device:"${{ env.IOS_SIMULATOR_DEVICE }}" record:${{ github.event.inputs.swiftui_snapshots }}
# timeout-minutes: 40
# env:
# XCODE_VERSION: "15.2" # the most stable pair of Xcode
# IOS_SIMULATOR_DEVICE: "iPhone 15 Pro (17.2)" # and iOS
# - name: Parse xcresult
# if: failure()
# run: |
# brew install chargepoint/xcparse/xcparse
# xcparse screenshots fastlane/test_output/StreamVideoSwiftUI.xcresult fastlane/test_output/snapshots --test
# - uses: actions/upload-artifact@v4
# if: failure()
# with:
# name: SwiftUI Test Data
# path: |
# ~/Library/Logs/scan
# fastlane/test_output/snapshots

test-uikit-debug:
name: Test UIKit (Debug)
runs-on: macos-14
needs: test-swiftui-debug
if: ${{ github.event_name != 'push' && github.event.inputs.uikit_snapshots != 'false' }}
env:
GITHUB_TOKEN: ${{ secrets.CI_BOT_GITHUB_TOKEN }} # to open a PR
steps:
- uses: actions/[email protected]
- uses: ./.github/actions/bootstrap
env:
INSTALL_YEETD: true
SKIP_MINT_BOOTSTRAP: true
SKIP_BREW_BOOTSTRAP: true
- name: Run UI Tests (Debug)
run: bundle exec fastlane test_uikit device:"${{ env.IOS_SIMULATOR_DEVICE }}" record:${{ github.event.inputs.uikit_snapshots }}
timeout-minutes: 40
env:
XCODE_VERSION: "15.2" # the most stable pair of Xcode
IOS_SIMULATOR_DEVICE: "iPhone 15 Pro (17.2)" # and iOS
- name: Parse xcresult
if: failure()
run: |
brew install chargepoint/xcparse/xcparse
xcparse screenshots fastlane/test_output/StreamVideoUIKit.xcresult fastlane/test_output/snapshots --test
- uses: actions/upload-artifact@v4
if: failure()
with:
name: UIKit Test Data
path: |
~/Library/Logs/scan
fastlane/test_output/snapshots
# test-uikit-debug:
# name: Test UIKit (Debug)
# runs-on: macos-14
# needs: test-swiftui-debug
# if: ${{ github.event_name != 'push' && github.event.inputs.uikit_snapshots != 'false' }}
# env:
# GITHUB_TOKEN: ${{ secrets.CI_BOT_GITHUB_TOKEN }} # to open a PR
# steps:
# - uses: actions/[email protected]
# - uses: ./.github/actions/bootstrap
# env:
# INSTALL_YEETD: true
# SKIP_MINT_BOOTSTRAP: true
# SKIP_BREW_BOOTSTRAP: true
# - name: Run UI Tests (Debug)
# run: bundle exec fastlane test_uikit device:"${{ env.IOS_SIMULATOR_DEVICE }}" record:${{ github.event.inputs.uikit_snapshots }}
# timeout-minutes: 40
# env:
# XCODE_VERSION: "15.2" # the most stable pair of Xcode
# IOS_SIMULATOR_DEVICE: "iPhone 15 Pro (17.2)" # and iOS
# - name: Parse xcresult
# if: failure()
# run: |
# brew install chargepoint/xcparse/xcparse
# xcparse screenshots fastlane/test_output/StreamVideoUIKit.xcresult fastlane/test_output/snapshots --test
# - uses: actions/upload-artifact@v4
# if: failure()
# with:
# name: UIKit Test Data
# path: |
# ~/Library/Logs/scan
# fastlane/test_output/snapshots

automated-code-review:
name: Automated Code Review
Expand All @@ -175,7 +175,6 @@ jobs:
build-xcode15:
name: Build SDKs (Xcode 15.0)
runs-on: macos-13
needs: test-llc-debug
if: ${{ github.event_name != 'push' && github.event.inputs.snapshots != 'true' }}
env:
XCODE_VERSION: "15.0.1"
Expand All @@ -194,25 +193,91 @@ jobs:
- uses: ./.github/actions/ruby-cache
- name: List Xcode versions
run: mdfind "kMDItemCFBundleIdentifier = 'com.apple.dt.Xcode'"
- name: Build LLC
run: bundle exec fastlane test device:"iPhone 15" build_for_testing:true
timeout-minutes: 40
- name: Build SwiftUI
run: bundle exec fastlane test_swiftui device:"iPhone 15" build_for_testing:true
- name: Build UIKit
run: bundle exec fastlane test_uikit device:"iPhone 15" build_for_testing:true
timeout-minutes: 40
- name: Build XCFrameworks
run: bundle exec fastlane build_xcframeworks
timeout-minutes: 40
- name: Build SDKs
run: bundle exec fastlane test_unified device:"iPhone 15" build_for_testing:true

build-xcode15-xcframework-stream-video:
name: Build StreamVideo XCframework (Xcode 15.0)
needs: build-xcode15
runs-on: macos-13
if: ${{ github.event_name != 'push' && github.event.inputs.snapshots != 'true' }}
env:
XCODE_VERSION: "15.0.1"
steps:
- name: Connect Bot
uses: webfactory/[email protected]
with:
ssh-private-key: ${{ secrets.BOT_SSH_PRIVATE_KEY }}
- uses: actions/[email protected]
- name: Cache Xcode Derived Data
uses: irgaly/xcode-cache@v1
with:
key: xcode-15-cache-deriveddata-${{ github.workflow }}-${{ github.sha }}
deriveddata-directory: derived_data
sourcepackages-directory: spm_cache
- uses: ./.github/actions/ruby-cache
- name: Build StreamVideo XCFramework
run: bundle exec fastlane build_xcframeworks_concurrent scheme:"StreamVideo"
env:
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
APPSTORE_API_KEY: ${{ secrets.APPSTORE_API_KEY }}

build-xcode15-xcframework-stream-video-swiftui:
name: Build StreamVideoSwiftUI XCframework (Xcode 15.0)
needs: build-xcode15
runs-on: macos-13
if: ${{ github.event_name != 'push' && github.event.inputs.snapshots != 'true' }}
env:
XCODE_VERSION: "15.0.1"
steps:
- name: Connect Bot
uses: webfactory/[email protected]
with:
ssh-private-key: ${{ secrets.BOT_SSH_PRIVATE_KEY }}
- uses: actions/[email protected]
- name: Cache Xcode Derived Data
uses: irgaly/xcode-cache@v1
with:
key: xcode-15-cache-deriveddata-${{ github.workflow }}-${{ github.sha }}
deriveddata-directory: derived_data
sourcepackages-directory: spm_cache
- uses: ./.github/actions/ruby-cache
- name: Build StreamVideo XCFramework
run: bundle exec fastlane build_xcframeworks_concurrent scheme:"StreamVideoSwiftUI"
env:
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
APPSTORE_API_KEY: ${{ secrets.APPSTORE_API_KEY }}

build-xcode15-xcframework-stream-video-uikit:
name: Build StreamVideoUIKit XCframework (Xcode 15.0)
needs: build-xcode15
runs-on: macos-13
if: ${{ github.event_name != 'push' && github.event.inputs.snapshots != 'true' }}
env:
XCODE_VERSION: "15.0.1"
steps:
- name: Connect Bot
uses: webfactory/[email protected]
with:
ssh-private-key: ${{ secrets.BOT_SSH_PRIVATE_KEY }}
- uses: actions/[email protected]
- name: Cache Xcode Derived Data
uses: irgaly/xcode-cache@v1
with:
key: xcode-15-cache-deriveddata-${{ github.workflow }}-${{ github.sha }}
deriveddata-directory: derived_data
sourcepackages-directory: spm_cache
- uses: ./.github/actions/ruby-cache
- name: Build StreamVideo XCFramework
run: bundle exec fastlane build_xcframeworks_concurrent scheme:"StreamVideoUIKit"
env:
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
APPSTORE_API_KEY: ${{ secrets.APPSTORE_API_KEY }}

build-test-app-and-frameworks:
name: Build Test App and Frameworks
runs-on: macos-14
needs: test-uikit-debug
needs: test-llc-debug
if: ${{ github.event_name != 'push' && github.event.inputs.swiftui_snapshots != 'true' && github.event.inputs.uikit_snapshots != 'true' }}
steps:
- uses: actions/[email protected]
Expand All @@ -237,8 +302,6 @@ jobs:
INSTALL_YEETD: true
SKIP_MINT_BOOTSTRAP: true
SKIP_BREW_BOOTSTRAP: true
- name: Build SwiftUI Demo App
run: bundle exec fastlane build_swiftui_demo
- name: Build UIKit Demo App
run: bundle exec fastlane build_uikit_demo
- name: Build Docs Test Project
Expand All @@ -247,7 +310,7 @@ jobs:
cache-update:
name: Update cache
runs-on: macos-14
needs: build-apps
needs: build-test-app-and-frameworks
steps:
- uses: irgaly/xcode-cache@v1
with:
Expand Down Expand Up @@ -277,58 +340,58 @@ jobs:
run: echo "launch_id=${{env.LAUNCH_ID}}" >> $GITHUB_OUTPUT
if: env.LAUNCH_ID != ''

# test-e2e-debug:
# name: Test E2E UI (Debug)
# runs-on: macos-14
# if: ${{ github.event_name != 'push' && github.event.inputs.swiftui_snapshots != 'true' && github.event.inputs.uikit_snapshots != 'true' }}
# needs: allure_testops_launch
# env:
# LAUNCH_ID: ${{ needs.allure_testops_launch.outputs.launch_id }}
# ALLURE_TOKEN: ${{ secrets.ALLURE_TOKEN }}
# strategy:
# matrix:
# batch: [0, 1]
# fail-fast: false
# steps:
# - uses: actions/[email protected]
# - uses: ./.github/actions/bootstrap
# env:
# INSTALL_ALLURE: true
# INSTALL_VIDEO_BUDDY: true
# INSTALL_YEETD: true
# SKIP_MINT_BOOTSTRAP: true
# SKIP_BREW_BOOTSTRAP: true
# - name: Run UI Tests (Debug)
# run: bundle exec fastlane test_e2e device:"${{ env.IOS_SIMULATOR_DEVICE }}" batch:'${{ matrix.batch }}' test_without_building:true
# timeout-minutes: 60
# env:
# XCODE_VERSION: "15.2" # the most stable pair of Xcode
# IOS_SIMULATOR_DEVICE: "iPhone 15 Pro (17.2)" # and iOS
# MATRIX_SIZE: ${{ strategy.job-total }}
# STREAM_SDK_TEST_APP: ${{ secrets.STREAM_SDK_TEST_APP }}
# STREAM_SDK_TEST_ACCOUNT_EMAIL: ${{ secrets.STREAM_SDK_TEST_ACCOUNT_EMAIL }}
# STREAM_SDK_TEST_ACCOUNT_PASSWORD: ${{ secrets.STREAM_SDK_TEST_ACCOUNT_PASSWORD }}
# STREAM_SDK_TEST_ACCOUNT_OTP_SECRET: ${{ secrets.STREAM_SDK_TEST_ACCOUNT_OTP_SECRET }}
# STREAM_VIDEO_SECRET: ${{ secrets.STREAM_VIDEO_SECRET }}
# - name: Allure TestOps Upload
# if: env.LAUNCH_ID != '' && (success() || failure())
# run: bundle exec fastlane allure_upload launch_id:$LAUNCH_ID
# - name: Allure TestOps Launch Removal
# if: env.LAUNCH_ID != '' && cancelled()
# run: bundle exec fastlane allure_launch_removal launch_id:$LAUNCH_ID
# - name: Parse xcresult
# if: failure()
# run: |
# brew install chargepoint/xcparse/xcparse
# xcparse logs fastlane/test_output/DemoApp.xcresult fastlane/test_output/logs/
# - uses: actions/upload-artifact@v4
# if: failure()
# with:
# name: E2E Test Data ${{ matrix.batch }}
# path: |
# ~/Library/Logs/scan
# fastlane/recordings
# fastlane/*.log
# fastlane/test_output/report.junit
# fastlane/test_output/logs/*/Diagnostics/**/*.txt
# fastlane/test_output/logs/*/Diagnostics/simctl_diagnostics/DiagnosticReports/*
test-e2e-debug:
name: Test E2E UI (Debug)
needs: allure_testops_launch
runs-on: macos-14
if: ${{ github.event_name != 'push' && github.event.inputs.swiftui_snapshots != 'true' && github.event.inputs.uikit_snapshots != 'true' }}
env:
LAUNCH_ID: ${{ needs.allure_testops_launch.outputs.launch_id }}
ALLURE_TOKEN: ${{ secrets.ALLURE_TOKEN }}
# strategy:
# matrix:
# batch: [0, 1]
# fail-fast: false
steps:
- uses: actions/[email protected]
- uses: ./.github/actions/bootstrap
env:
INSTALL_ALLURE: true
INSTALL_VIDEO_BUDDY: true
INSTALL_YEETD: true
SKIP_MINT_BOOTSTRAP: true
SKIP_BREW_BOOTSTRAP: true
- name: Run UI Tests (Debug)
run: bundle exec fastlane test_e2e device:"${{ env.IOS_SIMULATOR_DEVICE }}" batch:'${{ matrix.batch }}' test_without_building:false
timeout-minutes: 60
env:
XCODE_VERSION: "15.2" # the most stable pair of Xcode
IOS_SIMULATOR_DEVICE: "iPhone 15 Pro (17.2)" # and iOS
MATRIX_SIZE: ${{ strategy.job-total }}
STREAM_SDK_TEST_APP: ${{ secrets.STREAM_SDK_TEST_APP }}
STREAM_SDK_TEST_ACCOUNT_EMAIL: ${{ secrets.STREAM_SDK_TEST_ACCOUNT_EMAIL }}
STREAM_SDK_TEST_ACCOUNT_PASSWORD: ${{ secrets.STREAM_SDK_TEST_ACCOUNT_PASSWORD }}
STREAM_SDK_TEST_ACCOUNT_OTP_SECRET: ${{ secrets.STREAM_SDK_TEST_ACCOUNT_OTP_SECRET }}
STREAM_VIDEO_SECRET: ${{ secrets.STREAM_VIDEO_SECRET }}
- name: Allure TestOps Upload
if: env.LAUNCH_ID != '' && (success() || failure())
run: bundle exec fastlane allure_upload launch_id:$LAUNCH_ID
- name: Allure TestOps Launch Removal
if: env.LAUNCH_ID != '' && cancelled()
run: bundle exec fastlane allure_launch_removal launch_id:$LAUNCH_ID
- name: Parse xcresult
if: failure()
run: |
brew install chargepoint/xcparse/xcparse
xcparse logs fastlane/test_output/DemoApp.xcresult fastlane/test_output/logs/
- uses: actions/upload-artifact@v4
if: failure()
with:
name: E2E Test Data ${{ matrix.batch }}
path: |
~/Library/Logs/scan
fastlane/recordings
fastlane/*.log
fastlane/test_output/report.junit
fastlane/test_output/logs/*/Diagnostics/**/*.txt
fastlane/test_output/logs/*/Diagnostics/simctl_diagnostics/DiagnosticReports/*
Loading

0 comments on commit 58db5be

Please sign in to comment.