Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
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
Next Next commit
Add New UI Tests App for critical tests
  • Loading branch information
krystofwoldrich committed Oct 17, 2024
commit a7b38d464ec664f3ed61852c96c9e36602cb753d
3 changes: 2 additions & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,8 @@ apiValidation {
"sentry-uitest-android-benchmark",
"test-app-plain",
"test-app-sentry",
"sentry-samples-netflix-dgs"
"sentry-samples-netflix-dgs",
"sentry-uitest-android-critical"
)
)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/build
/maestro-logs
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import io.gitlab.arturbosch.detekt.Detekt

plugins {
id("com.android.application")
kotlin("android")
}

android {
compileSdk = Config.Android.compileSdkVersion
namespace = "io.sentry.uitest.android.critical"

defaultConfig {
applicationId = "io.sentry.uitest.android.critical"
minSdk = 21
targetSdk = Config.Android.targetSdkVersion
versionCode = 1
versionName = "1.0"
}

buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8.toString()
}
buildFeatures {
compose = true
}
composeOptions {
kotlinCompilerExtensionVersion = Config.androidComposeCompilerVersion
}
}

dependencies {
implementation(kotlin(Config.kotlinStdLib, org.jetbrains.kotlin.config.KotlinCompilerVersion.VERSION))
implementation(Config.Libs.androidxCore)
implementation(Config.Libs.composeActivity)
implementation(Config.Libs.composeFoundation)
implementation(Config.Libs.composeMaterial)
implementation(Config.Libs.constraintLayout)
implementation(projects.sentryAndroidCore)
}

tasks.withType<Detekt> {
// Target version of the generated JVM bytecode. It is used for type resolution.
jvmTarget = JavaVersion.VERSION_1_8.toString()
}

kotlin {
explicitApi()
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
appId: io.sentry.uitest.android.critical
---
- launchApp
- tapOn: "Write Corrupted Envelope"
# The close here ensures the next corrupted envelope
# will be present on the next app launch
- tapOn: "Close SDK"
- tapOn: "Write Corrupted Envelope"
- stopApp
- launchApp
- assertVisible: "Welcome!"
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
appId: io.sentry.uitest.android.critical
---
- launchApp
- tapOn: "Crash"
- launchApp
- assertVisible: "Welcome!"
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">

<application
android:label="Sentry UI Tests Critical"
android:supportsRtl="true"
tools:targetApi="31">
<meta-data android:name="io.sentry.dsn" android:value="https://[email protected]/5428559" />
<meta-data android:name="io.sentry.debug" android:value="true" />
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package io.sentry.uitest.android.critical

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Column
import androidx.compose.material3.Button
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import io.sentry.Sentry
import java.io.File

class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val outboxPath = Sentry.getCurrentHub().options.outboxPath
?: throw RuntimeException("Outbox path is not set.")

setContent {
MaterialTheme {
Surface() {
Column() {
Text(text = "Welcome!")
Button(onClick = {
throw RuntimeException("Crash the test app.")
}) {
Text("Crash")
}
Button(onClick = {
Sentry.close()
}) {
Text("Close SDK")
}
Button(onClick = {
val file = File(outboxPath, "corrupted.envelope")
val corruptedEnvelopeContent = """
{"event_id":"1990b5bc31904b7395fd07feb72daf1c","sdk":{"name":"sentry.java.android","version":"7.21.0"}}
{"type":"test","length":50}
""".trimIndent()
file.writeText(corruptedEnvelopeContent)
println("Wrote corrupted envelope to: ${file.absolutePath}")
}) {
Text("Write Corrupted Envelope")
}
}
}
}
}
}
}
1 change: 1 addition & 0 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ include(
"sentry-samples:sentry-samples-spring-boot-webflux",
"sentry-samples:sentry-samples-spring-boot-webflux-jakarta",
"sentry-samples:sentry-samples-netflix-dgs",
"sentry-android-integration-tests:sentry-uitest-android-critical",
"sentry-android-integration-tests:sentry-uitest-android-benchmark",
"sentry-android-integration-tests:sentry-uitest-android",
"sentry-android-integration-tests:test-app-plain",
Expand Down