Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
57b197c
Add inital integration testas implementation
tustanivsky Oct 24, 2025
295c089
Fix event id log format in sample app
tustanivsky Oct 24, 2025
3330fa5
Temp fix for empty even json props
tustanivsky Oct 24, 2025
4d6f4ed
Clean up
tustanivsky Oct 24, 2025
6df0210
Fix function
tustanivsky Oct 24, 2025
c1c6d31
Add readme instructions for integration tests
tustanivsky Oct 27, 2025
a21da84
Remove platform input
tustanivsky Oct 27, 2025
80eb26b
Clean up
tustanivsky Oct 27, 2025
c22a644
Rename
tustanivsky Oct 27, 2025
f50262b
Clean up
tustanivsky Oct 27, 2025
5c72f0e
Add integration tests run to CI
tustanivsky Oct 27, 2025
cf9867e
Install Pester on Linux
tustanivsky Oct 27, 2025
33e8c09
Add CI flag
tustanivsky Oct 27, 2025
1d9c63b
Try fix auth
tustanivsky Oct 27, 2025
277f321
Serialize
tustanivsky Oct 27, 2025
3df874c
Test
tustanivsky Oct 28, 2025
331a27e
Test
tustanivsky Oct 28, 2025
f276785
stdout
tustanivsky Oct 28, 2025
25d93ce
Force flush logs
tustanivsky Oct 28, 2025
0e2f5e1
Clean up
tustanivsky Oct 28, 2025
c02798f
Add integration tests output upload
tustanivsky Oct 28, 2025
bf6a121
Extract integration tests to separate jobs
tustanivsky Oct 28, 2025
8ce5cc8
Fix eof
tustanivsky Oct 28, 2025
57d93eb
Fix permission
tustanivsky Oct 28, 2025
e5a42af
Fix test app exit for non-fatal events
tustanivsky Oct 28, 2025
56f7afe
Fix exec permission for crashpad
tustanivsky Oct 28, 2025
a816078
Upload game log
tustanivsky Oct 28, 2025
665f300
Update exit
tustanivsky Oct 28, 2025
1b63a65
Fix
tustanivsky Oct 28, 2025
44a3cda
Try fix duplicated logs
tustanivsky Oct 28, 2025
227e502
Fix
tustanivsky Oct 28, 2025
a272363
Test
tustanivsky Oct 28, 2025
2ebe494
Test
tustanivsky Oct 28, 2025
340db0d
Log duplication
tustanivsky Oct 28, 2025
70782e7
Clean up
tustanivsky Oct 28, 2025
8ef9cf1
Try wait
tustanivsky Oct 28, 2025
e114047
Close
tustanivsky Oct 28, 2025
4b36e2d
Revert crashpad wait
tustanivsky Oct 29, 2025
aeba36a
nosplash
tustanivsky Oct 29, 2025
e4ba6b2
Comment
tustanivsky Oct 29, 2025
abe5c2f
Install DirectX
tustanivsky Oct 29, 2025
b64dc16
Update readme
tustanivsky Oct 29, 2025
0d0f291
Update app-runner module
tustanivsky Oct 29, 2025
cc1d7f5
Fix message test check
tustanivsky Oct 30, 2025
5af044b
Clean up cmake
tustanivsky Oct 30, 2025
fec5677
Refactor
tustanivsky Oct 30, 2025
e56d528
Comments
tustanivsky Oct 30, 2025
09c8cc6
Include sources for symbol upload in sample
tustanivsky Oct 30, 2025
7af930c
Update app-runner `GIT_TAG` to latest version
tustanivsky Oct 30, 2025
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
25 changes: 25 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -161,3 +161,28 @@ jobs:
uses: ./.github/workflows/test-windows.yml
with:
unreal-version: ${{ matrix.unreal }}

integration-test-linux:
needs: [test-linux]
name: Linux UE ${{ matrix.unreal }}
secrets: inherit
strategy:
fail-fast: false
matrix:
unreal: ['4.27', '5.1', '5.2', '5.3', '5.4', '5.5', '5.6']
uses: ./.github/workflows/integration-test-linux.yml
with:
unreal-version: ${{ matrix.unreal }}

integration-test-windows:
needs: [test-windows]
name: Windows UE ${{ matrix.unreal }}
secrets: inherit
strategy:
fail-fast: false
matrix:
# Integration tests only for UE 5.2 and newer where CRC can be disabled
unreal: ['5.2', '5.3', '5.4', '5.5', '5.6']
uses: ./.github/workflows/integration-test-windows.yml
with:
unreal-version: ${{ matrix.unreal }}
54 changes: 54 additions & 0 deletions .github/workflows/integration-test-linux.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
on:
workflow_call:
inputs:
unreal-version:
required: true
type: string

jobs:
integration-test:
name: Integration Test
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
with:
submodules: recursive

- name: Download sample build
uses: actions/download-artifact@v4
with:
name: UE ${{ inputs.unreal-version }} sample build (Linux)
path: sample-build

- name: Set execute permissions
run: |
chmod +x ${{ github.workspace }}/sample-build/SentryPlayground.sh
chmod +x ${{ github.workspace }}/sample-build/SentryPlayground/Plugins/sentry/Binaries/Linux/crashpad_handler

- name: Install Pester
shell: pwsh
run: |
Install-Module -Name Pester -Force -SkipPublisherCheck

- name: Run integration tests
id: run-integration-tests
shell: pwsh
env:
SENTRY_UNREAL_TEST_DSN: ${{ secrets.SENTRY_UNREAL_TEST_DSN }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_API_TOKEN }}
SENTRY_UNREAL_TEST_APP_PATH: ${{ github.workspace }}/sample-build/SentryPlayground.sh
run: |
cd integration-test
mkdir build
cmake -B build -S .
Invoke-Pester Integration.Tests.ps1 -CI

- name: Upload integration test output
if: ${{ always() && steps.run-integration-tests.outcome == 'failure' }}
uses: actions/upload-artifact@v4
with:
name: UE ${{ inputs.unreal-version }} integration test output (Linux)
path: |
integration-test/output/
sample-build/SentryPlayground/Saved/Logs/
50 changes: 50 additions & 0 deletions .github/workflows/integration-test-windows.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
on:
workflow_call:
inputs:
unreal-version:
required: true
type: string

jobs:
integration-test:
name: Integration Test
runs-on: windows-2022

steps:
- uses: actions/checkout@v4
with:
submodules: recursive

# UE 5.2-5.3 require older DirectX runtime to run pre-built test app
- name: Install DirectX June 2010 Runtime
run: |
Invoke-WebRequest -Uri "https://download.microsoft.com/download/8/4/A/84A35BF1-DAFE-4AE8-82AF-AD2AE20B6B14/directx_Jun2010_redist.exe" -OutFile "$env:TEMP\directx_redist.exe"
Start-Process -FilePath "$env:TEMP\directx_redist.exe" -ArgumentList "/Q","/T:$env:TEMP\DirectX" -Wait
Start-Process -FilePath "$env:TEMP\DirectX\DXSETUP.exe" -ArgumentList "/silent" -Wait

- name: Download sample build
uses: actions/download-artifact@v4
with:
name: UE ${{ inputs.unreal-version }} sample build (Windows)
path: sample-build

- name: Run integration tests
id: run-integration-tests
env:
SENTRY_UNREAL_TEST_DSN: ${{ secrets.SENTRY_UNREAL_TEST_DSN }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_API_TOKEN }}
SENTRY_UNREAL_TEST_APP_PATH: ${{ github.workspace }}/sample-build/SentryPlayground.exe
run: |
cd integration-test
mkdir build
cmake -B build -S .
Invoke-Pester Integration.Tests.ps1 -CI

- name: Upload integration test output
if: ${{ always() && steps.run-integration-tests.outcome == 'failure' }}
uses: actions/upload-artifact@v4
with:
name: UE ${{ inputs.unreal-version }} integration test output (Windows)
path: |
integration-test/output/
sample-build/SentryPlayground/Saved/Logs/
1 change: 0 additions & 1 deletion .github/workflows/test-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -106,4 +106,3 @@ jobs:
name: UE ${{ inputs.unreal-version }} sample build (Windows)
path: checkout/sample/Builds/${{ inputs.unreal-version == '4.27' && 'WindowsNoEditor' || 'Windows' }}/
retention-days: 1

6 changes: 6 additions & 0 deletions integration-test/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# CMake build artifacts
build/
TestConfig.local.ps1

# Test outputs
output/
25 changes: 25 additions & 0 deletions integration-test/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
cmake_minimum_required(VERSION 3.20)
project(SentryUnrealIntegrationTests NONE)

include(FetchContent)

# Fetch PowerShell modules for Sentry API integration
FetchContent_Declare(
app-runner
GIT_REPOSITORY https://github.com/getsentry/app-runner.git
GIT_TAG 503795f0ef0f8340fcc0f0bc5fb5437df8cff9ef
)

FetchContent_MakeAvailable(app-runner)

# Generate test configuration with app-runner path
set(configFile "${CMAKE_CURRENT_SOURCE_DIR}/TestConfig.local.ps1")
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/TestConfig.ps1.in"
"${configFile}"
@ONLY
)

message(STATUS "Integration test environment configured")
message(STATUS " app-runner path: ${app-runner_SOURCE_DIR}")
message(STATUS " Config file: ${configFile}")
Loading