Skip to content

Commit 329ef4f

Browse files
Merge pull request #61 from sergio-sastre/release/2.0.0-beta02
Release/2.0.0 beta02
2 parents 46b5a75 + b75f5eb commit 329ef4f

File tree

56 files changed

+2671
-333
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+2671
-333
lines changed

README.md

+390-127
Large diffs are not rendered by default.

dropshots/build.gradle

+4-4
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ android {
1111
defaultConfig {
1212
minSdk 23
1313
targetSdk 33
14-
versionCode 16
15-
versionName "2.0.0-beta01"
14+
versionCode 17
15+
versionName "2.0.0-beta02"
1616

1717
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
1818
}
@@ -44,7 +44,7 @@ android {
4444
dependencies {
4545
implementation project(':utils')
4646
api 'com.dropbox.dropshots:dropshots:0.4.0'
47-
api 'androidx.activity:activity-compose:1.6.1'
47+
api 'androidx.activity:activity-compose:1.7.1'
4848
}
4949

5050
//https://www.talentica.com/blogs/publish-your-android-library-on-jitpack-for-better-reachability/
@@ -53,7 +53,7 @@ publishing {
5353
release(MavenPublication) {
5454
groupId = 'com.github.sergio-sastre'
5555
artifactId = "dropshots"
56-
version = '2.0.0-beta01'
56+
version = '2.0.0-beta02'
5757

5858
afterEvaluate {
5959
from components.release

dropshots/src/main/java/sergio/sastre/uitesting/dropshots/DropshotsConfig.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ package sergio.sastre.uitesting.dropshots
22

33
import com.dropbox.dropshots.ResultValidator
44
import com.dropbox.dropshots.ThresholdValidator
5-
import sergio.sastre.uitesting.utils.BitmapCaptureMethod
6-
import sergio.sastre.uitesting.utils.LibraryConfig
5+
import sergio.sastre.uitesting.utils.crosslibrary.config.BitmapCaptureMethod
6+
import sergio.sastre.uitesting.utils.crosslibrary.config.LibraryConfig
77

88
class DropshotsConfig(
99
val bitmapCaptureMethod: BitmapCaptureMethod? = null,

dropshots/src/main/java/sergio/sastre/uitesting/dropshots/DropshotsScreenshotTestRule.kt

+10-11
Original file line numberDiff line numberDiff line change
@@ -10,27 +10,26 @@ import androidx.compose.ui.platform.ComposeView
1010
import androidx.core.view.drawToBitmap
1111
import androidx.test.core.app.ActivityScenario
1212
import com.dropbox.dropshots.Dropshots
13-
import org.junit.rules.TestWatcher
1413
import org.junit.runner.Description
1514
import org.junit.runners.model.Statement
16-
import sergio.sastre.uitesting.utils.BitmapCaptureMethod
17-
import sergio.sastre.uitesting.utils.LibraryConfig
18-
import sergio.sastre.uitesting.utils.ScreenshotConfig
19-
import sergio.sastre.uitesting.utils.ScreenshotTestRule
15+
import sergio.sastre.uitesting.utils.crosslibrary.config.BitmapCaptureMethod
16+
import sergio.sastre.uitesting.utils.crosslibrary.config.LibraryConfig
17+
import sergio.sastre.uitesting.utils.crosslibrary.config.ScreenshotConfig
2018
import sergio.sastre.uitesting.utils.activityscenario.ActivityScenarioConfigurator
19+
import sergio.sastre.uitesting.utils.crosslibrary.testrules.ScreenshotTestRule
2120
import sergio.sastre.uitesting.utils.utils.drawToBitmapWithElevation
2221
import sergio.sastre.uitesting.utils.utils.waitForActivity
2322

2423
class DropshotsScreenshotTestRule(
25-
private val screenshotConfig: ScreenshotConfig = ScreenshotConfig(),
26-
) : ScreenshotTestRule, TestWatcher() {
24+
override val config: ScreenshotConfig = ScreenshotConfig(),
25+
) : ScreenshotTestRule(config) {
2726

2827
private val activityScenario: ActivityScenario<out ComponentActivity> by lazy {
2928
ActivityScenarioConfigurator.ForComposable()
30-
.setLocale(screenshotConfig.locale)
31-
.setInitialOrientation(screenshotConfig.orientation)
32-
.setUiMode(screenshotConfig.uiMode)
33-
.setFontSize(screenshotConfig.fontScale)
29+
.setLocale(config.locale)
30+
.setInitialOrientation(config.orientation)
31+
.setUiMode(config.uiMode)
32+
.setFontSize(config.fontScale)
3433
.launchConfiguredActivity()
3534
}
3635

paparazzi/build.gradle

+4-4
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ android {
1111
defaultConfig {
1212
minSdk 23
1313
targetSdk 33
14-
versionCode 16
15-
versionName "2.0.0-beta01"
14+
versionCode 17
15+
versionName "2.0.0-beta02"
1616

1717
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
1818
}
@@ -41,7 +41,7 @@ android {
4141
}
4242

4343
dependencies {
44-
api project(':utils')
44+
implementation project(':utils')
4545
api project(':sharedtest-paparazzi')
4646
api('app.cash.paparazzi:paparazzi:1.2.0')
4747
}
@@ -52,7 +52,7 @@ publishing {
5252
release(MavenPublication) {
5353
groupId = 'com.github.sergio-sastre'
5454
artifactId = "paparazzi"
55-
version = '2.0.0-beta01'
55+
version = '2.0.0-beta02'
5656

5757
afterEvaluate {
5858
from components.release

paparazzi/src/main/java/sergio/sastre/uitesting/paparazzi/PaparazziScreenshotTestRule.kt

+6-6
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,21 @@ package sergio.sastre.uitesting.paparazzi
33
import app.cash.paparazzi.Paparazzi
44
import org.junit.runner.Description
55
import org.junit.runners.model.Statement
6-
import sergio.sastre.uitesting.utils.ScreenshotTestRule
7-
import sergio.sastre.uitesting.utils.LibraryConfig
8-
import sergio.sastre.uitesting.utils.ScreenshotConfig
6+
import sergio.sastre.uitesting.utils.crosslibrary.config.LibraryConfig
7+
import sergio.sastre.uitesting.utils.crosslibrary.config.ScreenshotConfig
98
import androidx.compose.runtime.Composable
109
import sergio.sastre.uitesting.paparazzi.config.PaparazziTestRuleGenerator
1110
import sergio.sastre.uitesting.sharedtest.paparazzi.PaparazziConfig
11+
import sergio.sastre.uitesting.utils.crosslibrary.testrules.ScreenshotTestRule
1212

1313
class PaparazziScreenshotTestRule(
14-
private val screenshotConfig: ScreenshotConfig = ScreenshotConfig(),
15-
) : ScreenshotTestRule {
14+
override val config: ScreenshotConfig = ScreenshotConfig(),
15+
) : ScreenshotTestRule(config) {
1616

1717
private var paparazziConfig = PaparazziConfig()
1818

1919
private val paparazziTestRule: Paparazzi by lazy {
20-
PaparazziTestRuleGenerator(screenshotConfig, paparazziConfig).generatePaparazziTestRule()
20+
PaparazziTestRuleGenerator(config, paparazziConfig).generatePaparazziTestRule()
2121
}
2222

2323
override fun apply(base: Statement, description: Description): Statement =

paparazzi/src/main/java/sergio/sastre/uitesting/paparazzi/config/PaparazziScreenshotConfigAdapter.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@ package sergio.sastre.uitesting.paparazzi.config
33
import com.android.resources.NightMode
44
import com.android.resources.ScreenOrientation
55
import sergio.sastre.uitesting.sharedtest.paparazzi.PaparazziConfig
6-
import sergio.sastre.uitesting.utils.ScreenshotConfig
6+
import sergio.sastre.uitesting.utils.crosslibrary.config.ScreenshotConfig
77
import sergio.sastre.uitesting.utils.common.Orientation
88
import sergio.sastre.uitesting.utils.common.UiMode
99

1010
internal class PaparazziScreenshotConfigAdapter(
1111
private val paparazziConfig: PaparazziConfig
1212
) {
1313

14-
fun applyScreenshotConfig(screenshotConfig: ScreenshotConfig): app.cash.paparazzi.DeviceConfig =
14+
fun getDeviceConfigFor(screenshotConfig: ScreenshotConfig): app.cash.paparazzi.DeviceConfig =
1515
PaparazziSharedTestAdapter(paparazziConfig).asPaparazziDeviceConfig().copy(
1616
orientation = screenshotConfig.orientation.toScreenOrientation(),
1717
nightMode = screenshotConfig.uiMode.toNightMode(),

paparazzi/src/main/java/sergio/sastre/uitesting/paparazzi/config/PaparazziTestRuleGenerator.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package sergio.sastre.uitesting.paparazzi.config
22

33
import app.cash.paparazzi.Paparazzi
44
import sergio.sastre.uitesting.sharedtest.paparazzi.PaparazziConfig
5-
import sergio.sastre.uitesting.utils.ScreenshotConfig
5+
import sergio.sastre.uitesting.utils.crosslibrary.config.ScreenshotConfig
66

77
internal class PaparazziTestRuleGenerator(
88
private val screenshotConfig: ScreenshotConfig,
@@ -14,7 +14,7 @@ internal class PaparazziTestRuleGenerator(
1414

1515
fun generatePaparazziTestRule(): Paparazzi =
1616
Paparazzi(
17-
deviceConfig = configAdapter.applyScreenshotConfig(screenshotConfig).copy(
17+
deviceConfig = configAdapter.getDeviceConfigFor(screenshotConfig).copy(
1818
softButtons = paparazziConfig.softButtons,
1919
),
2020
renderingMode = sharedTestAdapter.asRenderingMode(),

robolectric/.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/build

robolectric/build.gradle

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
plugins {
2+
id 'com.android.library'
3+
id 'org.jetbrains.kotlin.android'
4+
id 'maven-publish'
5+
}
6+
7+
android {
8+
namespace 'sergio.sastre.uitesting.robolectric'
9+
compileSdk 33
10+
11+
defaultConfig {
12+
minSdk 23
13+
targetSdk 33
14+
versionCode 17
15+
versionName "2.0.0-beta02"
16+
17+
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
18+
}
19+
20+
buildTypes {
21+
release {
22+
minifyEnabled false
23+
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
24+
}
25+
}
26+
compileOptions {
27+
sourceCompatibility JavaVersion.VERSION_1_8
28+
targetCompatibility JavaVersion.VERSION_1_8
29+
}
30+
kotlinOptions {
31+
jvmTarget = '1.8'
32+
}
33+
}
34+
35+
dependencies {
36+
implementation project(':utils')
37+
api "org.robolectric:robolectric:4.10"
38+
}
39+
40+
//https://www.talentica.com/blogs/publish-your-android-library-on-jitpack-for-better-reachability/
41+
publishing {
42+
publications {
43+
release(MavenPublication) {
44+
groupId = 'com.github.sergio-sastre'
45+
artifactId = "robolectric"
46+
version = '2.0.0-beta02'
47+
48+
afterEvaluate {
49+
from components.release
50+
}
51+
}
52+
}
53+
}

robolectric/proguard-rules.pro

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Add project specific ProGuard rules here.
2+
# You can control the set of applied configuration files using the
3+
# proguardFiles setting in build.gradle.
4+
#
5+
# For more details, see
6+
# http://developer.android.com/guide/developing/tools/proguard.html
7+
8+
# If your project uses WebView with JS, uncomment the following
9+
# and specify the fully qualified class name to the JavaScript interface
10+
# class:
11+
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12+
# public *;
13+
#}
14+
15+
# Uncomment this to preserve the line number information for
16+
# debugging stack traces.
17+
#-keepattributes SourceFile,LineNumberTable
18+
19+
# If you keep the line number information, uncomment this to
20+
# hide the original source file name.
21+
#-renamesourcefileattribute SourceFile
+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:tools="http://schemas.android.com/tools"
4+
package="sergio.sastre.uitesting.robolectric">
5+
6+
<application>
7+
<activity
8+
android:name=".activityscenario.RobolectricActivityScenarioConfigurator$SnapshotConfiguredActivity"
9+
android:exported="true"
10+
tools:node="merge"/>
11+
</application>
12+
</manifest>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package sergio.sastre.uitesting.robolectric.activityscenario
2+
3+
import android.app.Activity
4+
import android.app.Application
5+
import android.os.Bundle
6+
7+
internal interface OnActivityCreatedCallback: Application.ActivityLifecycleCallbacks {
8+
9+
override fun onActivityStarted(activity: Activity) {
10+
// no-op
11+
}
12+
13+
override fun onActivityResumed(activity: Activity) {
14+
// no-op
15+
}
16+
17+
override fun onActivityPaused(activity: Activity) {
18+
// no-op
19+
}
20+
21+
override fun onActivityStopped(activity: Activity) {
22+
// no-op
23+
}
24+
25+
override fun onActivitySaveInstanceState(
26+
activity: Activity,
27+
outState: Bundle
28+
) {
29+
// no-op
30+
}
31+
32+
override fun onActivityDestroyed(activity: Activity) {
33+
// no-op
34+
}
35+
}

0 commit comments

Comments
 (0)