Skip to content
Open
Show file tree
Hide file tree
Changes from 29 commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
33773c8
Adds an easy way to run NRTestApp with SPM
cdillard-NewRelic Jul 25, 2025
18b54ae
Demonstrates NSAttributedString
cdillard-NewRelic Jul 28, 2025
4bace67
bump 7.5.7
cdillard-NewRelic Jul 28, 2025
5f19f43
Merge branch 'develop' of github.com:newrelic/newrelic-ios-agent into…
cdillard-NewRelic Jul 30, 2025
75592bf
bump NRTestAppAsFramework to 7.5.8-rc.1523
cdillard-NewRelic Jul 30, 2025
ff46634
Merge branch 'develop' of github.com:newrelic/newrelic-ios-agent into…
cdillard-NewRelic Aug 7, 2025
51a8705
wip perf tests
cdillard-NewRelic Aug 11, 2025
1bb2c73
refactor NRMASessionReplay.swift -> SessionReplayTouchCapture.swift t…
cdillard-NewRelic Aug 11, 2025
7b1ef2a
Merge branch 'fix-NR-450261' of github.com:newrelic/newrelic-ios-agen…
cdillard-NewRelic Aug 11, 2025
afc7a3f
proj u
cdillard-NewRelic Aug 11, 2025
dcf2649
refactor to sort touch and frame
cdillard-NewRelic Aug 11, 2025
185baf1
fix build error
cdillard-NewRelic Aug 11, 2025
dcffda4
fix
cdillard-NewRelic Aug 11, 2025
5e95bac
Merge branch 'fix-NR-450261' of github.com:newrelic/newrelic-ios-agen…
cdillard-NewRelic Aug 11, 2025
bb4cddd
Merge branch 'develop' of github.com:newrelic/newrelic-ios-agent into…
cdillard-NewRelic Aug 15, 2025
ffdb1a1
Adds customer provided SwiftUI Code to cause isue with UIViewControll…
cdillard-NewRelic Aug 25, 2025
947d816
Merge branch 'develop' of github.com:newrelic/newrelic-ios-agent into…
cdillard-NewRelic Aug 28, 2025
c7d090c
Merge branch 'add-swiftuiviewrepresentable-nrtestapp' of github.com:n…
cdillard-NewRelic Aug 28, 2025
c194902
Merge branch 'fix-nil-optional-config-msr' into NRTestAppAsFramework
cdillard-NewRelic Aug 28, 2025
346a358
cond comp perf
cdillard-NewRelic Aug 29, 2025
d6a76bb
Merge branch 'develop' into add-swiftuiviewrepresentable-nrtestapp
cdillard-NewRelic Sep 2, 2025
4151f3a
Merge branch 'develop' into add-swiftuiviewrepresentable-nrtestapp
mbruin-NR Sep 3, 2025
fad1fa2
Merge branch 'add-swiftuiviewrepresentable-nrtestapp' of github.com:n…
cdillard-NewRelic Sep 3, 2025
e270b8a
push 7.5.11-dev.49 as bespokeBuild
cdillard-NewRelic Oct 14, 2025
ef86d7f
Merge branch 'msr-swiftui' of github.com:newrelic/newrelic-ios-agent …
cdillard-NewRelic Oct 14, 2025
3914a52
fix: p
cdillard-NewRelic Oct 14, 2025
893756b
initial lambdatest gha support
cdillard-NewRelic Oct 14, 2025
16724a1
align iOS 16.0 deployment target
cdillard-NewRelic Oct 15, 2025
8ee9ddc
add upload action, add package.json
cdillard-NewRelic Oct 15, 2025
cab65c5
update: uploadApp.yml
cdillard-NewRelic Oct 15, 2025
e7866b4
Merge branch 'develop' of github.com:newrelic/newrelic-ios-agent into…
cdillard-NewRelic Nov 11, 2025
c22cc85
rm wrng test file
cdillard-NewRelic Nov 13, 2025
899704c
Merge branch 'develop' of github.com:newrelic/newrelic-ios-agent into…
cdillard-NewRelic Nov 13, 2025
0463c68
Merge branch 'develop' of github.com:newrelic/newrelic-ios-agent into…
cdillard-NewRelic Nov 17, 2025
5533162
Merge branch 'develop' of github.com:newrelic/newrelic-ios-agent into…
cdillard-NewRelic Nov 20, 2025
1d02f42
Merge branch 'develop' of github.com:newrelic/newrelic-ios-agent into…
cdillard-NewRelic Dec 2, 2025
2abce55
Merge branch 'develop' of github.com:newrelic/newrelic-ios-agent into…
cdillard-NewRelic Jan 13, 2026
c61aaed
Merge branch 'develop' of github.com:newrelic/newrelic-ios-agent into…
cdillard-NewRelic Jan 26, 2026
504c38b
Merge branch 'develop' of github.com:newrelic/newrelic-ios-agent into…
cdillard-NewRelic Feb 1, 2026
6598f39
fix
cdillard-NewRelic Feb 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions .github/actions/env-setup/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Jobs run on separate runners, so each needs to configure their environment
name: Environment setup
description: Reusable action to setup environment

runs:
using: "composite"
steps:
- name: Set up Node.js
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # pin@v4
with:
node-version: 20.5.1
- name: Install dependencies
run: npm ci
shell: bash
- name: Log success
if: ${{ success() }}
run: echo "[ RUNNER ] - successfully installed packages"
shell: bash
- name: Log failure
if: ${{ failure() || cancelled() }}
run: echo "[ RUNNER ] - failed to install packages"
shell: bash
189 changes: 189 additions & 0 deletions .github/workflows/uploadApp.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
# This purpose of this GitHub action is to automate uploading the main agent test app to LamdbaTest. LambdaTest has a retention policy of 60 days. This automation ensures that the app is always available for testing without manual intervention and will always be providing data to the following entities without interruption:

# main-agent-test-app-ios: https://staging.onenr.io/07jbMl8KnRy

# This action triggers a node.js function that uploads the app to LambdaTest.
# The function uses a `custom_id` to identify that app with a specific name rather than the default names provided upon upload, which will change per upload.

name: Upload iOS and Android apps to LambdaTest

on:
# enables option for workflow to be manually executed in Github UI
workflow_dispatch:

# push:
# branches:
# - main

# # Runs on the 1st of every month
# schedule:
# - cron: "0 0 1 * *"

jobs:

build-ios:
name: Build iOS app
runs-on: macos-15

steps:
- name: Check out repository
uses: actions/checkout@1e31de5234b9f8995739874a8ce0492dc87873e2

- name: Setup environment
uses: ./.github/actions/env-setup

- name: Select Xcode 16.4
run: |
sudo xcode-select -switch /Applications/Xcode_16.4.app

- name: Install dependencies
run: |
npm install
cd ios && pod install

- name: Clean iOS app
run: |
cd ios
xcodebuild clean -workspace Agent.xcworkspace -scheme NRTestApp
pod update

- name: Build iOS app
run: |
cd ios
xcodebuild build \
-workspace Agent.xcworkspace -scheme NRTestApp \
-configuration Release \
-sdk iphonesimulator \
build

- name: Compress iOS app
run: |
cd ~
cd ../..
ls -al
# cd /Users/runner/Library/Developer/Xcode/DerivedData/mainagenttestapp-aiutyigxigajkbcjspvvdvuiqmit/Build/Products/Release-iphonesimulator/
# ls
# zip -r mainagenttestapp-ios.zip mainagenttestapp.app

- name: Upload iOS app
uses: actions/upload-artifact@v4
with:
name: mainagenttestapp-ios
path: /Users/runner/Library/Developer/Xcode/DerivedData/mainagenttestapp-aiutyigxigajkbcjspvvdvuiqmit/Build/Products/Release-iphonesimulator/mainagenttestapp-ios.zip
compression-level: 0
retention-days: 1

build-android:
name: Build Android app
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set Up JDK
uses: actions/setup-java@v4
with:
distribution: "zulu" # See 'Supported distributions' for available options
java-version: "17"
cache: "gradle"

- name: Install dependencies, clean & build
run: |
npm install
cd android
./gradlew clean
./gradlew assembleRelease

- name: Upload android app
uses: actions/upload-artifact@v4
with:
name: mainagenttestapp-android
path: ${{ github.workspace }}/android/app/build/outputs/apk/release/app-release.apk
retention-days: 1

upload-apps:
name: Upload main agent test apps to LT
needs: [build-ios, build-android]
runs-on: ubuntu-latest
env:
LT_USERNAME: ${{ secrets.APP_EXP_LAMBDA_USERNAME }}
LT_ACCESSKEY: ${{ secrets.APP_EXP_LAMBDA_ACCESS_KEY }}
steps:
- uses: actions/checkout@1e31de5234b9f8995739874a8ce0492dc87873e2 # pin@v4

- name: Setup environment
uses: ./.github/actions/env-setup

- name: Download iOS artifact
uses: actions/download-artifact@v4
with:
name: mainagenttestapp-ios
path: ${{ github.workspace }}/builds

- name: Download android artifact
uses: actions/download-artifact@v4
with:
name: mainagenttestapp-android
path: ${{ github.workspace }}/builds

- name: Run upload script
run: node lambdaTest/uploadAppToLambdaTest.mjs

- name: Log success
if: ${{ success() }}
run: echo "[ RUNNER ] - successfully uploaded apps to LambdaTest"

- name: Notify success
if: ${{ success() }}
uses: slackapi/slack-github-action@485a9d42d3a73031f12ec201c457e2162c45d02d # pin@v
with:
webhook-type: incoming-webhook
webhook: ${{ secrets.SLACK_WEBHOOK_URL }}
payload: |
blocks:
- type: "header"
text:
type: "plain_text"
text: ":frog-wow-scroll: LambdaTest Upload Successful"
- type: "divider"
- type: "section"
text:
type: "mrkdwn"
text: Congrats! We survived another month to claim victory over LambdaTest's retention policy. The main-agent-test-apps have been successfully uploaded and are ready for testing.
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

- name: Log failure
if: ${{ failure() || cancelled() }}
run: echo "[ RUNNER ] - failed to upload apps to LambdaTest"

- name: Notify failure
if: ${{ failure() || cancelled() }}
uses: slackapi/slack-github-action@485a9d42d3a73031f12ec201c457e2162c45d02d # pin@v2
with:
webhook-type: incoming-webhook
webhook: ${{ secrets.SLACK_WEBHOOK_URL }}
payload: |
blocks:
- type: "header"
text:
type: "plain_text"
text: ":crying-sunglasses-cowboy: LambdaTest Upload Failed"
- type: "divider"
- type: "section"
text:
type: "mrkdwn"
text: "Something went wrong while uploading the main-agent-test-apps to LambdaTest. Please check the logs for more details."
accessory:
type: "button"
text:
type: "plain_text"
text: "View logs"
emoji: true
value: "view_logs"
url: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
action_id: "button-action"
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

68 changes: 68 additions & 0 deletions .github/workflows/wdio.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# The purpose of this GitHub action is to have a constant stream of data reporting to the following entities:
# NRTestApp-Auto: TBAdded

# This is accomplished by triggering npm scripts that execute a suite of tests in parallel
# The tests spin up simulated iOS and Android devices on LambdaTest that are instrumented with the Mobile agent

name: "WDIO: automate iOS tests"

on:
# enables option for workflow to be manually executed in Github UI
workflow_dispatch:

# enables scheduled execution every 30 minutes
schedule:
- cron: "*/30 * * * *"

jobs:
ios-data:
name: Generate iOS data
runs-on: ubuntu-latest
env:
LT_USERNAME: ${{ secrets.APP_EXP_LAMBDA_USERNAME }}
LT_ACCESSKEY: ${{ secrets.APP_EXP_LAMBDA_ACCESS_KEY }}
steps:
- uses: actions/checkout@1e31de5234b9f8995739874a8ce0492dc87873e2 # pin@v4
- name: Setup environment
uses: ./.github/actions/env-setup

- name: Execute iOS tests
run: for i in {1..1}; do echo "test run $i"; npm run test:wdio-ios; done

- name: Log success
if: ${{ success() }}
run: echo "[ RUNNER ] - successfully executed iOS tests"

- name: Log failure
if: ${{ failure() || cancelled() }}
run: echo "[ RUNNER ] - failed to execute iOS tests"

# - name: Notify failure
# if: ${{ failure() || cancelled() }}
# uses: slackapi/slack-github-action@485a9d42d3a73031f12ec201c457e2162c45d02d # pin@v2
# with:
# webhook-type: incoming-webhook
# webhook: ${{ secrets.SLACK_WEBHOOK_URL }}
# payload: |
# blocks:
# - type: "header"
# text:
# type: "plain_text"
# text: ":rotating_light: GitHub Workflow Failure"
# - type: "divider"
# - type: "section"
# text:
# type: "mrkdwn"
# text: ":apple: Failed to generate *main-agent-test-app-iOS* data"
# accessory:
# type: "button"
# text:
# type: "plain_text"
# text: "View logs"
# emoji: true
# value: "view_logs"
# url: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
# action_id: "button-action"
# env:
# SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

20 changes: 10 additions & 10 deletions Agent.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -6490,7 +6490,7 @@
"$(SRCROOT)/modular-crash-reporter-ios/Source/Tests/**",
);
INFOPLIST_FILE = "Tests/Unit-Tests/Shared/tests-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
Expand Down Expand Up @@ -6539,7 +6539,7 @@
"$(SRCROOT)/modular-crash-reporter-ios/Source/Tests/**",
);
INFOPLIST_FILE = "Tests/Unit-Tests/Shared/tests-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
Expand Down Expand Up @@ -6625,7 +6625,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
MACH_O_TYPE = mh_dylib;
MODULEMAP_FILE = module.modulemap;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
Expand Down Expand Up @@ -6698,7 +6698,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
MACH_O_TYPE = mh_dylib;
MODULEMAP_FILE = module.modulemap;
MTL_ENABLE_DEBUG_INFO = NO;
Expand Down Expand Up @@ -6753,7 +6753,7 @@
);
INFOPLIST_FILE = Agent/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
Expand Down Expand Up @@ -6810,7 +6810,7 @@
);
INFOPLIST_FILE = Agent/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
Expand Down Expand Up @@ -6862,7 +6862,7 @@
"$(SRCROOT)/modular-crash-reporter-ios/Source/Tests/**",
);
INFOPLIST_FILE = "Tests/Unit-Tests/Shared/tests-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
Expand Down Expand Up @@ -6915,7 +6915,7 @@
"$(SRCROOT)/modular-crash-reporter-ios/Source/Tests/**",
);
INFOPLIST_FILE = "Tests/Unit-Tests/Shared/tests-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
Expand Down Expand Up @@ -6961,7 +6961,7 @@
"${SRCROOT}/**",
);
INFOPLIST_FILE = "Tests/Stress-Tests/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
Expand Down Expand Up @@ -7003,7 +7003,7 @@
"${SRCROOT}/**",
);
INFOPLIST_FILE = "Tests/Stress-Tests/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
Expand Down
Loading
Loading