diff --git a/.github/workflows/preintegration.yml b/.github/workflows/preintegration.yml index 86c7d65..d46e0b8 100644 --- a/.github/workflows/preintegration.yml +++ b/.github/workflows/preintegration.yml @@ -2,9 +2,16 @@ name: "Preintegration Checks" on: pull_request: workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: tests: - runs-on: ubuntu-latest + runs-on: [ self-hosted-org, linux ] + container: + image: docker://docker.tuenti.io/android/novum_android:13 steps: - name: Checkout repo uses: actions/checkout@v4 @@ -13,4 +20,4 @@ jobs: run: './gradlew clean check assemble' - name: "Check Gradle Plugin Project" - run: './gradlew -p include-build clean check jar' \ No newline at end of file + run: './gradlew -p include-build clean check jar' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 826ffed..a75da12 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -6,7 +6,7 @@ jobs: library: runs-on: [ self-hosted-org, linux ] container: - image: docker://docker.tuenti.io/android/novum_android:12 + image: docker://docker.tuenti.io/android/novum_android:13 steps: - name: Checkout repo uses: actions/checkout@v4 @@ -25,7 +25,7 @@ jobs: plugin: runs-on: [ self-hosted-org, linux ] container: - image: docker://docker.tuenti.io/android/novum_android:12 + image: docker://docker.tuenti.io/android/novum_android:13 steps: - name: Checkout repo uses: actions/checkout@v4 diff --git a/.github/workflows/snapshot.yml b/.github/workflows/snapshot.yml new file mode 100644 index 0000000..9829034 --- /dev/null +++ b/.github/workflows/snapshot.yml @@ -0,0 +1,44 @@ +name: "Create snapshot" +on: + workflow_dispatch: + inputs: + snapshot-version: + description: "Snapshot version" + required: true +jobs: + library: + runs-on: [ self-hosted-org, linux ] + container: + image: docker://docker.tuenti.io/android/novum_android:13 + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Publish library snapshot + env: + MOBILE_MAVENCENTRAL_USER: ${{ secrets.MOBILE_MAVENCENTRAL_USER }} + MOBILE_MAVENCENTRAL_PASSWORD: ${{ secrets.MOBILE_MAVENCENTRAL_PASSWORD }} + ORG_GRADLE_PROJECT_signingKey: ${{ secrets.ORG_GRADLE_PROJECT_SIGNINGKEY }} + ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.ORG_GRADLE_PROJECT_SIGNINGPASSWORD }} + ORG_GRADLE_PROJECT_signingKeyId: ${{ secrets.ORG_GRADLE_PROJECT_SIGNINGKEYID }} + NEXUS_USER: ${{ secrets.NEXUS_RELEASE_USER }} + NEXUS_PASS: ${{ secrets.NEXUS_RELEASE_PASSWORD }} + run: | + ./gradlew publishReleasePublicationToSnapshotsRepository -DLIBRARY_VERSION=${{ github.event.inputs.snapshot-version }}-SNAPSHOT + plugin: + runs-on: [ self-hosted-org, linux ] + container: + image: docker://docker.tuenti.io/android/novum_android:13 + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Publish plugin snapshot + env: + GRADLE_PUBLISH_KEY: ${{ secrets.GRADLE_PUBLISH_KEY }} + GRADLE_PUBLISH_SECRET: ${{ secrets.GRADLE_PUBLISH_SECRET }} + NEXUS_USER: ${{ secrets.NEXUS_RELEASE_USER }} + NEXUS_PASS: ${{ secrets.NEXUS_RELEASE_PASSWORD }} + run: | + cd include-build + ../gradlew publishGradlePluginPublicationToMavenRepository -DLIBRARY_VERSION=${{ github.event.inputs.snapshot-version }}-SNAPSHOT diff --git a/android-snaptesting/src/main/java/com/telefonica/androidsnaptesting/screenshots/ScreenshotsRule.kt b/android-snaptesting/src/main/java/com/telefonica/androidsnaptesting/screenshots/ScreenshotsRule.kt index f7ddc39..6a1168d 100644 --- a/android-snaptesting/src/main/java/com/telefonica/androidsnaptesting/screenshots/ScreenshotsRule.kt +++ b/android-snaptesting/src/main/java/com/telefonica/androidsnaptesting/screenshots/ScreenshotsRule.kt @@ -11,6 +11,7 @@ import android.widget.HorizontalScrollView import android.widget.ScrollView import androidx.annotation.RequiresApi import androidx.compose.ui.graphics.asAndroidBitmap +import androidx.compose.ui.test.SemanticsNodeInteraction import androidx.compose.ui.test.captureToImage import androidx.compose.ui.test.junit4.ComposeTestRule import androidx.compose.ui.test.onRoot @@ -60,11 +61,22 @@ public class ScreenshotsRule( rule: ComposeTestRule, name: String? = null, ) { + disableFlakyComponentsAndWaitForIdle() rule.waitForIdle() val bitmap = rule.onRoot().captureToImage().asAndroidBitmap() compareScreenshot(bitmap, name) } + @RequiresApi(Build.VERSION_CODES.O) + public fun compareScreenshot( + node: SemanticsNodeInteraction, + name: String? = null + ) { + disableFlakyComponentsAndWaitForIdle() + val bitmap = node.captureToImage().asAndroidBitmap() + compareScreenshot(bitmap, name) + } + public fun compareScreenshot( activity: Activity, name: String? = null,