1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'org.jetbrains.kotlin.plugin.compose'
if (project.hasProperty('useKsp')) {
apply plugin: 'com.google.devtools.ksp'
ksp {
arg("skipPrivatePreviews", "true")
}
} else {
apply plugin: 'kotlin-kapt'
kapt {
correctErrorTypes = true
arguments {
arg("skipPrivatePreviews", "true")
}
}
}
android {
namespace "com.airbnb.android.showkase_browser_testing"
// Added to avoid this error -
// Execution failed for task ':showkase-processor-testing:mergeDebugAndroidTestJavaResource'.
// > A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
// > More than one file was found with OS independent path 'META-INF/gradle/incremental.annotation.processors'
packagingOptions {
exclude 'META-INF/gradle/incremental.annotation.processors'
exclude("META-INF/*.kotlin_module")
}
defaultConfig {
minSdkVersion 26
compileSdk 36
targetSdkVersion 33
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
// The following argument makes the Android Test Orchestrator run its
// "pm clear" command after each test invocation. This command ensures
// that the app's state is completely cleared between tests.
testInstrumentationRunnerArguments clearPackageData: 'true'
if (project.hasProperty('useKsp')) {
buildConfigField "boolean", "IS_RUNNING_KSP", "true"
} else {
buildConfigField "boolean", "IS_RUNNING_KSP", "false"
}
}
buildFeatures {
compose true
buildConfig = true
}
// Added to avoid this error -
// Execution failed for task ':app:mergeDebugAndroidTestJavaResource'.
// > A failure occurred while executing com.android.build.gradle.internal.tasks.MergeJavaResWorkAction
// > 2 files found with path 'META-INF/AL2.0' from inputs:
packagingOptions {
exclude 'META-INF/AL2.0'
exclude 'META-INF/LGPL2.1'
}
configurations {
all {
// work around this error:
// Duplicate class org.intellij.lang.annotations.Identifier found in modules annotations-12.0 (com.intellij:annotations:12.0) and annotations-13.0 (org.jetbrains:annotations:13.0)
exclude group: "com.intellij", module: "annotations"
}
}
}
kotlin {
jvmToolchain(17)
}
dependencies {
// Support Libraries
implementation deps.support.appCompat
// Submodule for testing
implementation project(':showkase-browser-testing-submodule')
implementation project(':showkase-browser-testing-submodule-2')
// Showkase
implementation project(':showkase')
if (project.hasProperty('useKsp')) {
ksp project(':showkase-processor')
} else {
kapt project(':showkase-processor')
}
implementation project(':showkase-processor')
implementation project(':showkase-screenshot-testing')
// Compose
implementation deps.compose.activityCompose
implementation deps.compose.composeRuntime
implementation deps.compose.core
implementation deps.compose.foundation
implementation deps.compose.tooling
androidTestImplementation deps.compose.uiTest
// Material
implementation deps.material.material
implementation deps.material.mdcComposeThemeAdapter
// Testing
androidTestImplementation deps.test.junitImplementation
androidTestImplementation deps.test.androidXTestCore
androidTestImplementation deps.test.androidXTestRules
androidTestImplementation deps.test.androidxTestRunner
}