Skip to content

Commit a4ca386

Browse files
authored
Add new compareScreenshot function that receives a SemanticsNodeInteraction (#11)
1 parent c4be180 commit a4ca386

4 files changed

Lines changed: 67 additions & 4 deletions

File tree

.github/workflows/preintegration.yml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,16 @@ name: "Preintegration Checks"
22
on:
33
pull_request:
44
workflow_dispatch:
5+
6+
concurrency:
7+
group: ${{ github.workflow }}-${{ github.ref }}
8+
cancel-in-progress: true
9+
510
jobs:
611
tests:
7-
runs-on: ubuntu-latest
12+
runs-on: [ self-hosted-org, linux ]
13+
container:
14+
image: docker://docker.tuenti.io/android/novum_android:13
815
steps:
916
- name: Checkout repo
1017
uses: actions/checkout@v4
@@ -13,4 +20,4 @@ jobs:
1320
run: './gradlew clean check assemble'
1421

1522
- name: "Check Gradle Plugin Project"
16-
run: './gradlew -p include-build clean check jar'
23+
run: './gradlew -p include-build clean check jar'

.github/workflows/release.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ jobs:
66
library:
77
runs-on: [ self-hosted-org, linux ]
88
container:
9-
image: docker://docker.tuenti.io/android/novum_android:12
9+
image: docker://docker.tuenti.io/android/novum_android:13
1010
steps:
1111
- name: Checkout repo
1212
uses: actions/checkout@v4
@@ -25,7 +25,7 @@ jobs:
2525
plugin:
2626
runs-on: [ self-hosted-org, linux ]
2727
container:
28-
image: docker://docker.tuenti.io/android/novum_android:12
28+
image: docker://docker.tuenti.io/android/novum_android:13
2929
steps:
3030
- name: Checkout repo
3131
uses: actions/checkout@v4

.github/workflows/snapshot.yml

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
name: "Create snapshot"
2+
on:
3+
workflow_dispatch:
4+
inputs:
5+
snapshot-version:
6+
description: "Snapshot version"
7+
required: true
8+
jobs:
9+
library:
10+
runs-on: [ self-hosted-org, linux ]
11+
container:
12+
image: docker://docker.tuenti.io/android/novum_android:13
13+
steps:
14+
- name: Checkout repo
15+
uses: actions/checkout@v4
16+
17+
- name: Publish library snapshot
18+
env:
19+
MOBILE_MAVENCENTRAL_USER: ${{ secrets.MOBILE_MAVENCENTRAL_USER }}
20+
MOBILE_MAVENCENTRAL_PASSWORD: ${{ secrets.MOBILE_MAVENCENTRAL_PASSWORD }}
21+
ORG_GRADLE_PROJECT_signingKey: ${{ secrets.ORG_GRADLE_PROJECT_SIGNINGKEY }}
22+
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.ORG_GRADLE_PROJECT_SIGNINGPASSWORD }}
23+
ORG_GRADLE_PROJECT_signingKeyId: ${{ secrets.ORG_GRADLE_PROJECT_SIGNINGKEYID }}
24+
NEXUS_USER: ${{ secrets.NEXUS_RELEASE_USER }}
25+
NEXUS_PASS: ${{ secrets.NEXUS_RELEASE_PASSWORD }}
26+
run: |
27+
./gradlew publishReleasePublicationToSnapshotsRepository -DLIBRARY_VERSION=${{ github.event.inputs.snapshot-version }}-SNAPSHOT
28+
plugin:
29+
runs-on: [ self-hosted-org, linux ]
30+
container:
31+
image: docker://docker.tuenti.io/android/novum_android:13
32+
steps:
33+
- name: Checkout repo
34+
uses: actions/checkout@v4
35+
36+
- name: Publish plugin snapshot
37+
env:
38+
GRADLE_PUBLISH_KEY: ${{ secrets.GRADLE_PUBLISH_KEY }}
39+
GRADLE_PUBLISH_SECRET: ${{ secrets.GRADLE_PUBLISH_SECRET }}
40+
NEXUS_USER: ${{ secrets.NEXUS_RELEASE_USER }}
41+
NEXUS_PASS: ${{ secrets.NEXUS_RELEASE_PASSWORD }}
42+
run: |
43+
cd include-build
44+
../gradlew publishGradlePluginPublicationToMavenRepository -DLIBRARY_VERSION=${{ github.event.inputs.snapshot-version }}-SNAPSHOT

android-snaptesting/src/main/java/com/telefonica/androidsnaptesting/screenshots/ScreenshotsRule.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import android.widget.HorizontalScrollView
1111
import android.widget.ScrollView
1212
import androidx.annotation.RequiresApi
1313
import androidx.compose.ui.graphics.asAndroidBitmap
14+
import androidx.compose.ui.test.SemanticsNodeInteraction
1415
import androidx.compose.ui.test.captureToImage
1516
import androidx.compose.ui.test.junit4.ComposeTestRule
1617
import androidx.compose.ui.test.onRoot
@@ -60,11 +61,22 @@ public class ScreenshotsRule(
6061
rule: ComposeTestRule,
6162
name: String? = null,
6263
) {
64+
disableFlakyComponentsAndWaitForIdle()
6365
rule.waitForIdle()
6466
val bitmap = rule.onRoot().captureToImage().asAndroidBitmap()
6567
compareScreenshot(bitmap, name)
6668
}
6769

70+
@RequiresApi(Build.VERSION_CODES.O)
71+
public fun compareScreenshot(
72+
node: SemanticsNodeInteraction,
73+
name: String? = null
74+
) {
75+
disableFlakyComponentsAndWaitForIdle()
76+
val bitmap = node.captureToImage().asAndroidBitmap()
77+
compareScreenshot(bitmap, name)
78+
}
79+
6880
public fun compareScreenshot(
6981
activity: Activity,
7082
name: String? = null,

0 commit comments

Comments
 (0)