diff --git a/.github/workflows/benchmarking.yml b/.github/workflows/benchmarking.yml
index 4b30f8975b1..a53bb9e35ee 100644
--- a/.github/workflows/benchmarking.yml
+++ b/.github/workflows/benchmarking.yml
@@ -93,7 +93,7 @@ jobs:
- uses: actions/download-artifact@v4
with:
name: DerivedData-Xcode
- - run: npm install -g saucectl@0.171.0
+ - run: npm install -g saucectl@0.173.2
- name: Run Benchmarks in SauceLab
env:
SAUCE_USERNAME: ${{ secrets.SAUCE_USERNAME }}
diff --git a/.github/workflows/saucelabs-UI-tests.yml b/.github/workflows/saucelabs-UI-tests.yml
deleted file mode 100644
index 927ccfbe8f8..00000000000
--- a/.github/workflows/saucelabs-UI-tests.yml
+++ /dev/null
@@ -1,132 +0,0 @@
-name: Sauce Labs UI Tests
-on:
- push:
- branches:
- - main
-
- pull_request:
- paths:
- - 'Sources/**'
- - 'Tests/**'
- - '.github/workflows/saucelabs-UI-tests.yml'
- - 'fastlane/**'
- - '.sauce/config.yml'
- - 'scripts/ci-select-xcode.sh'
-
- # run the workflow any time an Xcode scheme changes for one of the sample apps with a UI test suite we run in saucelabs
- - 'Samples/iOS-Swift/iOS-Swift.xcodeproj/xcshareddata/xcschemes/iOS-SwiftUITests.xcscheme'
- - 'Samples/iOS-Swift/iOS-Swift.xcodeproj/xcshareddata/xcschemes/iOS-Swift.xcscheme'
-
-# https://docs.github.com/en/actions/using-jobs/using-concurrency#example-using-a-fallback-value
-concurrency:
- group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- build-ui-tests:
- name: Build UITests
- runs-on: ${{ matrix.runs-on }}
-
- strategy:
- matrix:
- include:
- - runs-on: macos-12
- xcode: '13.4.1'
-
- - runs-on: macos-13
- xcode: '14.3'
-
- steps:
- - uses: actions/checkout@v4
- - run: ./scripts/ci-select-xcode.sh ${{matrix.xcode}}
- - uses: ruby/setup-ruby@v1
- with:
- bundler-cache: true
- - name: Install SentryCli
- run: brew install getsentry/tools/sentry-cli
- - name: Cache iOS-Swift App and dSYM build products
- id: ios-swift-cache
- uses: actions/cache@v4
- with:
- path: |
- DerivedData/Build/Products/Test-iphoneos/iOS-Swift.app.dSYM
- DerivedData/Build/Products/Test-iphoneos/iOS-Swift.app
- key: ios-swift-for-ui-testing-cache-key-${{ hashFiles('Samples/iOS-Swift/iOS-Swift/**') }}-Xcode-${{ matrix.xcode }}-${{ hashFiles('Sources/Sentry/**') }}
- - name: Cache iOS-Swift UI Test Runner App build product
- id: ios-swift-uitest-runner-cache
- uses: actions/cache@v4
- with:
- path: |
- DerivedData/Build/Products/Test-iphoneos/iOS-SwiftUITests-Runner.app
- key: ios-swift-for-ui-testing-cache-key-${{ hashFiles('Samples/iOS-Swift/iOS-SwiftUITests/**') }}-Xcode-${{ matrix.xcode }}
- - run: bundle exec fastlane build_ios_swift_for_tests
- env:
- APP_STORE_CONNECT_KEY_ID: ${{ secrets.APP_STORE_CONNECT_KEY_ID }}
- APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }}
- APP_STORE_CONNECT_KEY: ${{ secrets.APP_STORE_CONNECT_KEY }}
- FASTLANE_KEYCHAIN_PASSWORD: ${{ secrets.FASTLANE_KEYCHAIN_PASSWORD }}
- MATCH_GIT_PRIVATE_KEY: ${{ secrets.MATCH_GIT_PRIVATE_KEY }}
- MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
- MATCH_USERNAME: ${{ secrets.MATCH_USERNAME }}
- - run: bundle exec fastlane build_ios_swift_ui_test
- env:
- APP_STORE_CONNECT_KEY_ID: ${{ secrets.APP_STORE_CONNECT_KEY_ID }}
- APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }}
- APP_STORE_CONNECT_KEY: ${{ secrets.APP_STORE_CONNECT_KEY }}
- FASTLANE_KEYCHAIN_PASSWORD: ${{ secrets.FASTLANE_KEYCHAIN_PASSWORD }}
- MATCH_GIT_PRIVATE_KEY: ${{ secrets.MATCH_GIT_PRIVATE_KEY }}
- MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
- MATCH_USERNAME: ${{ secrets.MATCH_USERNAME }}
- - name: Upload dSYMs
- run: |
- sentry-cli --auth-token ${{ secrets.SENTRY_AUTH_TOKEN }} upload-dif --org sentry-sdks --project sentry-cocoa DerivedData/Build/Products/Test-iphoneos/iOS-Swift.app.dSYM
- - name: Archiving DerivedData
- uses: actions/upload-artifact@v4
- with:
- name: DerivedData-Xcode-${{matrix.xcode}}
- path: |
- **/Test-iphoneos/iOS-Swift.app
- **/Test-iphoneos/iOS-SwiftUITests-Runner.app
-
- run-ui-tests-with-sauce:
- name: Run UI Tests for ${{ matrix.suite }} on Sauce Labs
- runs-on: ubuntu-latest
- needs: build-ui-tests
- strategy:
- fail-fast: false
- matrix:
- include:
- - xcode: '14.3'
- suite: 'iOS-16'
-
- - xcode: '14.3'
- suite: 'iOS-15'
-
- # We want to test the frame tracker at 120 fps
- - xcode: '14.3'
- suite: 'iPhone-Pro'
-
- - xcode: '14.3'
- suite: 'iOS-14'
-
- - xcode: '13.4.1'
- suite: 'iOS-13'
-
- - xcode: '13.4.1'
- suite: 'iOS-12'
-
- steps:
- - uses: actions/checkout@v4
-
- - uses: actions/download-artifact@v4
- with:
- name: DerivedData-Xcode-${{ matrix.xcode }}
-
- - run: npm install -g saucectl@0.171.0
-
- # As Sauce Labs is a bit flaky we retry 5 times
- - name: Run Tests in SauceLab
- env:
- SAUCE_USERNAME: ${{ secrets.SAUCE_USERNAME }}
- SAUCE_ACCESS_KEY: ${{ secrets.SAUCE_ACCESS_KEY }}
- run: for i in {1..5}; do saucectl run --select-suite ${{ matrix.suite }} && break ; done
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 2e2cce41de5..9ddd0652dfa 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -310,84 +310,3 @@ jobs:
with:
name: thread-sanitizer
path: thread-sanitizer.log
-
- ui-tests:
- name: UI Tests for ${{matrix.target}} on Simulators
- runs-on: macos-13
- strategy:
- matrix:
- target: ["ios_objc", "tvos_swift"]
-
- steps:
- - uses: actions/checkout@v4
- - run: ./scripts/ci-select-xcode.sh
-
- # GitHub Actions sometimes fail to launch the UI tests. Therefore we retry
- - name: Run Fastlane
- run: for i in {1..2}; do fastlane ui_tests_${{matrix.target}} && break ; done
- shell: sh
-
- - name: Archiving Raw Test Logs
- uses: actions/upload-artifact@v4
- if: ${{ failure() || cancelled() }}
- with:
- name: raw-uitest-output-${{matrix.target}}
- path: |
- ~/Library/Logs/scan/*.log
- ./fastlane/test_output/**
-
- # SwiftUI only supports iOS 14+ so we run it in a separate matrix here
- ui-tests-swift-ui:
- name: UI Tests for SwiftUI on ${{matrix.device}} Simulator
- runs-on: ${{matrix.runs-on}}
- strategy:
- fail-fast: false
- matrix:
- include:
- - runs-on: macos-12
- xcode: "13.4.1"
- device: "iPhone 8 (15.2)"
-
- - runs-on: macos-13
- xcode: "14.3"
- device: "iPhone 8 (16.1)"
-
- steps:
- - uses: actions/checkout@v4
- - run: ./scripts/ci-select-xcode.sh ${{matrix.xcode}}
-
- # GitHub Actions sometimes fail to launch the UI tests. Therefore we retry
- - name: Run Fastlane
- run: for i in {1..2}; do fastlane ui_tests_ios_swiftui device:"${{matrix.device}}" && break ; done
- shell: sh
-
- - name: Archiving Raw Test Logs
- uses: actions/upload-artifact@v4
- if: ${{ failure() || cancelled() }}
- with:
- name: raw-swiftui-test-output-${{matrix.platform}}-xcode-${{matrix.xcode}}-os-${{matrix.test-destination-os}}
- path: |
- ~/Library/Logs/scan/*.log
- ./fastlane/test_output/**
-
- ui-tests-address-sanitizer:
- name: UI Tests with Address Sanitizer
- runs-on: macos-13-xlarge
-
- steps:
- - uses: actions/checkout@v4
- - run: ./scripts/ci-select-xcode.sh 15.2
-
- # GitHub Actions sometimes fail to launch the UI tests. Therefore we retry
- - name: Run Fastlane
- run: for i in {1..2}; do fastlane ui_tests_ios_swift device:"iPhone 14 (17.2)" address_sanitizer:true && break ; done
- shell: sh
-
- - name: Archiving Raw Test Logs
- uses: actions/upload-artifact@v4
- if: ${{ failure() || cancelled() }}
- with:
- name: raw-uitest-output-asan
- path: |
- ~/Library/Logs/scan/*.log
- ./fastlane/test_output/**
diff --git a/.github/workflows/testflight.yml b/.github/workflows/testflight.yml
index 372d8d486de..fbc46498492 100644
--- a/.github/workflows/testflight.yml
+++ b/.github/workflows/testflight.yml
@@ -21,7 +21,7 @@ jobs:
runs-on: macos-13
steps:
- uses: actions/checkout@v4
- - run: ./scripts/ci-select-xcode.sh
+ - run: ./scripts/ci-select-xcode.sh 15.2
- uses: ruby/setup-ruby@v1
with:
bundler-cache: true
diff --git a/.github/workflows/ui-tests.yml b/.github/workflows/ui-tests.yml
new file mode 100644
index 00000000000..21f169443a9
--- /dev/null
+++ b/.github/workflows/ui-tests.yml
@@ -0,0 +1,154 @@
+name: UI Tests
+on:
+ push:
+ branches:
+ - main
+
+ pull_request:
+ paths:
+ - 'Sources/**'
+ - 'Tests/**'
+ - '.github/workflows/ui-tests.yml'
+ - 'fastlane/**'
+ - '.sauce/config.yml'
+ - 'scripts/ci-select-xcode.sh'
+
+ # run the workflow any time an Xcode scheme changes for one of the sample apps with a UI test suite we run in saucelabs
+ - 'Samples/iOS-Swift/iOS-Swift.xcodeproj/xcshareddata/xcschemes/iOS-SwiftUITests.xcscheme'
+ - 'Samples/iOS-Swift/iOS-Swift.xcodeproj/xcshareddata/xcschemes/iOS-Swift.xcscheme'
+
+
+# https://docs.github.com/en/actions/using-jobs/using-concurrency#example-using-a-fallback-value
+concurrency:
+ group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
+ cancel-in-progress: true
+
+jobs:
+ ui-tests:
+ name: UI Tests for ${{matrix.target}} on Simulators
+ runs-on: macos-13
+ strategy:
+ matrix:
+ target: ["ios_objc", "tvos_swift"]
+
+ steps:
+ - uses: actions/checkout@v4
+ - run: ./scripts/ci-select-xcode.sh
+
+ # GitHub Actions sometimes fail to launch the UI tests. Therefore we retry
+ - name: Run Fastlane
+ run: for i in {1..2}; do fastlane ui_tests_${{matrix.target}} && break ; done
+ shell: sh
+
+ - name: Archiving Raw Test Logs
+ uses: actions/upload-artifact@v4
+ if: ${{ failure() || cancelled() }}
+ with:
+ name: raw-uitest-output-${{matrix.target}}
+ path: |
+ ~/Library/Logs/scan/*.log
+ ./fastlane/test_output/**
+
+ # SwiftUI only supports iOS 14+ so we run it in a separate matrix here
+ ui-tests-swift-ui:
+ name: UI Tests for SwiftUI on ${{matrix.device}} Simulator
+ runs-on: ${{matrix.runs-on}}
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - runs-on: macos-12
+ xcode: "13.4.1"
+ device: "iPhone 8 (15.2)"
+
+ - runs-on: macos-13
+ xcode: "14.3"
+ device: "iPhone 8 (16.1)"
+
+ steps:
+ - uses: actions/checkout@v4
+ - run: ./scripts/ci-select-xcode.sh ${{matrix.xcode}}
+
+ # GitHub Actions sometimes fail to launch the UI tests. Therefore we retry
+ - name: Run Fastlane
+ run: for i in {1..2}; do fastlane ui_tests_ios_swiftui device:"${{matrix.device}}" && break ; done
+ shell: sh
+
+ - name: Archiving Raw Test Logs
+ uses: actions/upload-artifact@v4
+ if: ${{ failure() || cancelled() }}
+ with:
+ name: raw-swiftui-test-output-${{matrix.platform}}-xcode-${{matrix.xcode}}-os-${{matrix.test-destination-os}}
+ path: |
+ ~/Library/Logs/scan/*.log
+ ./fastlane/test_output/**
+
+ ui-tests-address-sanitizer:
+ name: UI Tests with Address Sanitizer
+ runs-on: macos-13
+
+ steps:
+ - uses: actions/checkout@v4
+ - run: ./scripts/ci-select-xcode.sh 15.2
+
+ # GitHub Actions sometimes fail to launch the UI tests. Therefore we retry
+ - name: Run Fastlane
+ run: for i in {1..2}; do fastlane ui_tests_ios_swift device:"iPhone 14 (17.2)" address_sanitizer:true && break ; done
+ shell: sh
+
+ - name: Archiving Raw Test Logs
+ uses: actions/upload-artifact@v4
+ if: ${{ failure() || cancelled() }}
+ with:
+ name: raw-uitest-output-asan
+ path: |
+ ~/Library/Logs/scan/*.log
+ ./fastlane/test_output/**
+
+
+ ios-swift-ui-tests:
+ name: iOS SwiftUI Tests ${{matrix.device}}
+ runs-on: ${{matrix.runs-on}}
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - runs-on: macos-11
+ xcode: "13.2.1"
+ device: "iPhone 8 (13.7)"
+
+ - runs-on: macos-12
+ xcode: "13.4.1"
+ device: "iPhone 8 (15.5)"
+
+ - runs-on: macos-13
+ xcode: "15.2"
+ device: "iPhone 14 (16.4)"
+
+ - runs-on: macos-14
+ xcode: "15.2"
+ device: "iPhone 15 (17.2)"
+
+ steps:
+ - uses: actions/checkout@v4
+ - run: ./scripts/ci-select-xcode.sh ${{matrix.xcode}}
+
+ - name: Create iOS 13.7 simulator
+ if: ${{ matrix.device == 'iPhone 8 (13.7)' }}
+ run: ./scripts/create-simulator.sh 11.7 13.7 13-7
+
+ - name: Create iOS 16.4 simulator
+ if: ${{ matrix.device == 'iPhone 14 (16.4)' }}
+ run: ./scripts/create-simulator.sh 14.3.1 16.4 16-4
+
+ - name: Run Fastlane
+ run: fastlane ui_tests_ios_swift device:"${{matrix.device}}"
+
+ - name: Archiving Raw Test Logs
+ uses: actions/upload-artifact@v4
+ if: ${{ failure() || cancelled() }}
+ with:
+ name: raw-uitest-output-asan
+ path: |
+ ~/Library/Logs/scan/*.log
+ ./fastlane/test_output/**
diff --git a/.sauce/benchmarking-config.yml b/.sauce/benchmarking-config.yml
index deb4049363e..affe3e7083d 100644
--- a/.sauce/benchmarking-config.yml
+++ b/.sauce/benchmarking-config.yml
@@ -2,10 +2,10 @@ apiVersion: v1alpha
kind: xcuitest
sauce:
region: us-west-1
- concurrency: 2
+ concurrency: 4
defaults:
- timeout: 20m
+ timeout: 60m
xcuitest:
app: ./DerivedData/Build/Products/Debug-iphoneos/iOS-Swift.app
diff --git a/.sauce/config.yml b/.sauce/config.yml
deleted file mode 100644
index 27dd6f6a6bc..00000000000
--- a/.sauce/config.yml
+++ /dev/null
@@ -1,56 +0,0 @@
-apiVersion: v1alpha
-kind: xcuitest
-sauce:
- region: us-west-1
- concurrency: 2
-
-defaults:
- timeout: 20m
-
-xcuitest:
- app: ./DerivedData/Build/Products/Test-iphoneos/iOS-Swift.app
- testApp: ./DerivedData/Build/Products/Test-iphoneos/iOS-SwiftUITests-Runner.app
-
-suites:
-
- - name: "iOS-16"
- devices:
- - name: "iPhone.*"
- platformVersion: "16"
-
- - name: "iOS-15"
- devices:
- - name: "iPhone.*"
- platformVersion: "15"
-
- - name: "iPhone-Pro"
- devices:
- - name: "iPhone 13 Pro.*"
- platformVersion: "15"
-
- - name: "iOS-14"
- devices:
- - name: "iPhone.*"
- platformVersion: "14"
-
- - name: "iOS-13"
- devices:
- - name: "iPhone.*"
- platformVersion: "13"
-
- - name: "iOS-12"
- devices:
- - name: "iPhone.*"
- platformVersion: "12"
-
- - name: "iOS-11"
- devices:
- - name: "iPhone.*"
- platformVersion: "11"
-
-artifacts:
- download:
- when: always
- match:
- - "*.junit.xml"
- directory: ./artifacts/
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c87c2536df5..348fb30f0eb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,12 @@
### Features
- Add Session Replay (#3625)
+- Add support for Sentry [Spotlight](https://spotlightjs.com/) (#3642), which is basically Sentry
+for development. Read our [blog post](https://blog.sentry.io/sentry-for-development/) to find out more.
+- Add field `SentrySDK.detectedStartUpCrash` (#3644)
+- Automatically profile app launches (#3529)
+- Use CocoaPods resource_bundles for PrivacyInfo (#3651)
+- Make tags of SentryScope public (#3650)
### Improvements
@@ -14,7 +20,11 @@
### Fixes
- Finish TTID span when transaction finishes (#3610)
+- Don't take screenshot and view hierarchy for app hanging (#3620)
- Dont take screenshot and view hierarchy for app hanging (#3620)
+- Remove `free_storage` and `storage_size` from the device context (#3627), because Apple forbids sending
+information retrieved via `NSFileSystemFreeSize` and `NSFileSystemSize` off a device; see
+[Apple docs](https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api?language=objc).
## 8.20.0
diff --git a/Gemfile.lock b/Gemfile.lock
index 4ed725fcd8a..ef1bcddb331 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -41,10 +41,10 @@ GEM
bigdecimal (3.1.6)
claide (1.1.0)
clamp (1.3.2)
- cocoapods (1.15.0)
+ cocoapods (1.15.2)
addressable (~> 2.8)
claide (>= 1.0.2, < 2.0)
- cocoapods-core (= 1.15.0)
+ cocoapods-core (= 1.15.2)
cocoapods-deintegrate (>= 1.0.3, < 2.0)
cocoapods-downloader (>= 2.1, < 3.0)
cocoapods-plugins (>= 1.0.0, < 2.0)
@@ -59,7 +59,7 @@ GEM
nap (~> 1.0)
ruby-macho (>= 2.3.0, < 3.0)
xcodeproj (>= 1.23.0, < 2.0)
- cocoapods-core (1.15.0)
+ cocoapods-core (1.15.2)
activesupport (>= 5.0, < 8)
addressable (~> 2.8)
algoliasearch (~> 1.0)
@@ -225,7 +225,7 @@ GEM
mini_magick (4.12.0)
mini_mime (1.1.5)
mini_portile2 (2.8.5)
- minitest (5.21.2)
+ minitest (5.22.2)
molinillo (0.8.0)
multi_json (1.15.0)
multipart-post (2.3.0)
diff --git a/Samples/iOS-Swift/PerformanceBenchmarks/SentrySDKPerformanceBenchmarkTests.m b/Samples/iOS-Swift/PerformanceBenchmarks/SentrySDKPerformanceBenchmarkTests.m
index bb14d6b2349..59edcc1a259 100644
--- a/Samples/iOS-Swift/PerformanceBenchmarks/SentrySDKPerformanceBenchmarkTests.m
+++ b/Samples/iOS-Swift/PerformanceBenchmarks/SentrySDKPerformanceBenchmarkTests.m
@@ -8,6 +8,13 @@ @interface SentrySDKPerformanceBenchmarkTests : XCTestCase
@implementation SentrySDKPerformanceBenchmarkTests
+- (void)setUp
+{
+ [super setUp];
+
+ [[XCUIDevice sharedDevice] setOrientation:UIDeviceOrientationPortrait];
+}
+
- (void)testCPUBenchmark
{
XCTSkipIf(isSimulator() && !isDebugging());
diff --git a/Samples/iOS-Swift/iOS-Swift.xcodeproj/project.pbxproj b/Samples/iOS-Swift/iOS-Swift.xcodeproj/project.pbxproj
index b722db68955..0b2fc7e7a32 100644
--- a/Samples/iOS-Swift/iOS-Swift.xcodeproj/project.pbxproj
+++ b/Samples/iOS-Swift/iOS-Swift.xcodeproj/project.pbxproj
@@ -1219,6 +1219,7 @@
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
+ GCC_PREPROCESSOR_DEFINITIONS = "RELEASE=1";
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
diff --git a/Samples/iOS-Swift/iOS-Swift.xcodeproj/xcshareddata/xcschemes/iOS-Swift.xcscheme b/Samples/iOS-Swift/iOS-Swift.xcodeproj/xcshareddata/xcschemes/iOS-Swift.xcscheme
index fa07f21b626..574c2dfb969 100644
--- a/Samples/iOS-Swift/iOS-Swift.xcodeproj/xcshareddata/xcschemes/iOS-Swift.xcscheme
+++ b/Samples/iOS-Swift/iOS-Swift.xcodeproj/xcshareddata/xcschemes/iOS-Swift.xcscheme
@@ -23,7 +23,7 @@
@@ -38,6 +38,12 @@
ReferencedContainer = "container:iOS-Swift.xcodeproj">
+
+
+
+
@@ -73,6 +79,26 @@
argument = "--disable-file-io-tracing"
isEnabled = "NO">
+
+
+
+
+
+
+
+
+
+
diff --git a/Samples/iOS-Swift/iOS-Swift.xcodeproj/xcshareddata/xcschemes/iOS-SwiftUITests.xcscheme b/Samples/iOS-Swift/iOS-Swift.xcodeproj/xcshareddata/xcschemes/iOS-SwiftUITests.xcscheme
index 55e1974867d..37a4ca1e81a 100644
--- a/Samples/iOS-Swift/iOS-Swift.xcodeproj/xcshareddata/xcschemes/iOS-SwiftUITests.xcscheme
+++ b/Samples/iOS-Swift/iOS-Swift.xcodeproj/xcshareddata/xcschemes/iOS-SwiftUITests.xcscheme
@@ -25,7 +25,7 @@
Bool {
- print("[iOS-Swift] launch arguments: \(ProcessInfo.processInfo.arguments)")
- print("[iOS-Swift] environment: \(ProcessInfo.processInfo.environment)")
+ print("[iOS-Swift] [debug] launch arguments: \(ProcessInfo.processInfo.arguments)")
+ print("[iOS-Swift] [debug] environment: \(ProcessInfo.processInfo.environment)")
maybeWipeData()
AppDelegate.startSentry()
@@ -161,9 +167,10 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
}
private extension AppDelegate {
+ // previously tried putting this in an AppDelegate.load override in ObjC, but it wouldn't run until after a launch profiler would have an opportunity to run, since SentryProfiler.load would always run first due to being dynamically linked in a framework module. it is sufficient to do it before calling SentrySDK.startWithOptions to clear state for testProfiledAppLaunches because we don't make any assertions on a launch profile the first launch of the app in that test
func maybeWipeData() {
if ProcessInfo.processInfo.arguments.contains("--io.sentry.wipe-data") {
- print("[iOS-Swift] removing app data")
+ print("[iOS-Swift] [debug] removing app data")
let appSupport = NSSearchPathForDirectoriesInDomains(.applicationSupportDirectory, .userDomainMask, true).first!
let cache = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true).first!
for path in [appSupport, cache] {
diff --git a/Samples/iOS-Swift/iOS-Swift/Base.lproj/Main.storyboard b/Samples/iOS-Swift/iOS-Swift/Base.lproj/Main.storyboard
index 094218d85bd..6820618844c 100644
--- a/Samples/iOS-Swift/iOS-Swift/Base.lproj/Main.storyboard
+++ b/Samples/iOS-Swift/iOS-Swift/Base.lproj/Main.storyboard
@@ -1,9 +1,9 @@
-
+
-
+
@@ -172,7 +172,7 @@
-
+
@@ -223,8 +223,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
@@ -232,7 +281,7 @@
-
+