浏览代码

Exclude shot for normal builds

Signed-off-by: tobiasKaminsky <tobias@kaminsky.me>
tobiasKaminsky 1 年之前
父节点
当前提交
002f61a2de
共有 20 个文件被更改,包括 44 次插入19 次删除
  1. 3 1
      .github/workflows/screenShotTest.yml
  2. 19 8
      app/build.gradle
  3. 二进制
      app/screenshots/gplay/debug/com.owncloud.android.ui.dialog.SyncFileNotEnoughSpaceDialogFragmentTest_showNotEnoughSpaceDialogForFile.png
  4. 二进制
      app/screenshots/gplay/debug/com.owncloud.android.ui.dialog.SyncFileNotEnoughSpaceDialogFragmentTest_showNotEnoughSpaceDialogForFolder.png
  5. 二进制
      app/screenshots/gplay/debug/com.owncloud.android.ui.preview.PreviewTextFileFragmentTest_displayJavaSnippetFile.png
  6. 二进制
      app/screenshots/gplay/debug/com.owncloud.android.ui.preview.PreviewTextFileFragmentTest_displaySimpleTextFile.png
  7. 二进制
      app/screenshots/gplay/debug/com.owncloud.android.ui.trashbin.TrashbinActivityIT_differentUser.png
  8. 二进制
      app/screenshots/gplay/debug/com.owncloud.android.ui.trashbin.TrashbinActivityIT_empty.png
  9. 二进制
      app/screenshots/gplay/debug/com.owncloud.android.ui.trashbin.TrashbinActivityIT_error.png
  10. 二进制
      app/screenshots/gplay/debug/com.owncloud.android.ui.trashbin.TrashbinActivityIT_files.png
  11. 二进制
      app/screenshots/gplay/debug/com.owncloud.android.ui.trashbin.TrashbinActivityIT_loading.png
  12. 二进制
      app/screenshots/gplay/debug/com.owncloud.android.ui.trashbin.TrashbinActivityIT_normalUser.png
  13. 1 1
      app/src/androidTest/java/com/nextcloud/client/FileDisplayActivityIT.kt
  14. 2 2
      app/src/androidTest/java/com/nextcloud/client/TestRunner.kt
  15. 3 0
      app/src/androidTest/java/com/owncloud/android/ui/dialog/SyncFileNotEnoughSpaceDialogFragmentTest.java
  16. 3 2
      app/src/androidTest/java/com/owncloud/android/ui/preview/PreviewTextFileFragmentTest.java
  17. 2 0
      app/src/androidTest/java/com/owncloud/android/ui/trashbin/TrashbinActivityIT.kt
  18. 9 4
      app/src/main/java/com/owncloud/android/ui/adapter/TrashbinListAdapter.java
  19. 1 0
      build.gradle
  20. 1 1
      scripts/androidScreenshotTest

+ 3 - 1
.github/workflows/screenShotTest.yml

@@ -8,7 +8,7 @@ permissions:
     contents: read
     pull-requests: write
 
-concurrency: 
+concurrency:
     group: screenshot-test-${{ github.head_ref || github.run_id }}
     cancel-in-progress: true
 
@@ -73,6 +73,8 @@ jobs:
                 run: scripts/deleteOldComments.sh "${{ matrix.color }}-${{ matrix.scheme }}" "Screenshot" ${{github.event.number}}
 
             -   name: Run screenshot tests
+                env:
+                    SHOT_TEST: "true"
                 uses: reactivecircus/android-emulator-runner@6b0df4b0efb23bb0ec63d881db79aefbc976e4b2 # v2.30.1
                 with:
                     api-level: ${{ matrix.api-level }}

+ 19 - 8
app/build.gradle

@@ -1,6 +1,6 @@
-import com.github.spotbugs.snom.SpotBugsTask
 import com.github.spotbugs.snom.Confidence
 import com.github.spotbugs.snom.Effort
+import com.github.spotbugs.snom.SpotBugsTask
 import org.gradle.internal.jvm.Jvm
 
 buildscript {
@@ -32,7 +32,12 @@ apply plugin: 'pmd'
 apply from: "$rootProject.projectDir/jacoco.gradle"
 apply plugin: 'com.github.spotbugs'
 apply plugin: 'io.gitlab.arturbosch.detekt'
-apply plugin: 'shot'
+
+// needed to make renovate run without shot, as shot requires Android SDK
+// https://github.com/pedrovgs/Shot/issues/300
+if (shotTest) {
+    apply plugin: 'shot'
+}
 apply plugin: 'com.google.devtools.ksp'
 
 
@@ -99,7 +104,11 @@ android {
         }
 
         // arguments to be passed to functional tests
-        testInstrumentationRunner "com.nextcloud.client.ScreenshotTestRunner"
+        if (shotTest) {
+            testInstrumentationRunner "com.karumi.shot.ShotTestRunner"
+        } else {
+            testInstrumentationRunner "com.nextcloud.client.TestRunner"
+        }
         testInstrumentationRunnerArgument "TEST_SERVER_URL", "${NC_TEST_SERVER_BASEURL}"
         testInstrumentationRunnerArgument "TEST_SERVER_USERNAME", "${NC_TEST_SERVER_USERNAME}"
         testInstrumentationRunnerArgument "TEST_SERVER_PASSWORD", "${NC_TEST_SERVER_PASSWORD}"
@@ -431,11 +440,13 @@ detekt {
     config.setFrom("detekt.yml")
 }
 
-shot {
-    showOnlyFailingTestsInReports = ciBuild
-    // CI environment renders some shadows slightly different from local VMs
-    // Add a 0.5% tolerance to account for that
-    tolerance = ciBuild ? 0.5 : 0
+if (shotTest) {
+    shot {
+        showOnlyFailingTestsInReports = ciBuild
+        // CI environment renders some shadows slightly different from local VMs
+        // Add a 0.5% tolerance to account for that
+        tolerance = ciBuild ? 0.5 : 0
+    }
 }
 
 jacoco {

二进制
app/screenshots/gplay/debug/com.owncloud.android.ui.dialog.SyncFileNotEnoughSpaceDialogFragmentTest_showNotEnoughSpaceDialogForFile.png


二进制
app/screenshots/gplay/debug/com.owncloud.android.ui.dialog.SyncFileNotEnoughSpaceDialogFragmentTest_showNotEnoughSpaceDialogForFolder.png


二进制
app/screenshots/gplay/debug/com.owncloud.android.ui.preview.PreviewTextFileFragmentTest_displayJavaSnippetFile.png


二进制
app/screenshots/gplay/debug/com.owncloud.android.ui.preview.PreviewTextFileFragmentTest_displaySimpleTextFile.png


二进制
app/screenshots/gplay/debug/com.owncloud.android.ui.trashbin.TrashbinActivityIT_differentUser.png


二进制
app/screenshots/gplay/debug/com.owncloud.android.ui.trashbin.TrashbinActivityIT_empty.png


二进制
app/screenshots/gplay/debug/com.owncloud.android.ui.trashbin.TrashbinActivityIT_error.png


二进制
app/screenshots/gplay/debug/com.owncloud.android.ui.trashbin.TrashbinActivityIT_files.png


二进制
app/screenshots/gplay/debug/com.owncloud.android.ui.trashbin.TrashbinActivityIT_loading.png


二进制
app/screenshots/gplay/debug/com.owncloud.android.ui.trashbin.TrashbinActivityIT_normalUser.png


+ 1 - 1
app/src/androidTest/java/com/nextcloud/client/FileDisplayActivityIT.kt

@@ -137,7 +137,7 @@ class FileDisplayActivityIT : AbstractOnServerIT() {
             .perform(NavigationViewActions.navigateTo(R.id.nav_shared))
         shortSleep()
         shortSleep()
-        screenshot(sut)
+        // screenshot(sut) // todo run without real server
     }
 
     @Test

+ 2 - 2
app/src/androidTest/java/com/nextcloud/client/ScreenshotTestRunner.kt → app/src/androidTest/java/com/nextcloud/client/TestRunner.kt

@@ -27,11 +27,11 @@ import android.app.Application
 import android.app.Instrumentation
 import android.content.Context
 import android.os.Build
+import androidx.test.runner.AndroidJUnitRunner
 import com.github.tmurakami.dexopener.DexOpener
-import com.karumi.shot.ShotTestRunner
 import com.nextcloud.test.TestMainApp
 
-class ScreenshotTestRunner : ShotTestRunner() {
+class TestRunner : AndroidJUnitRunner() {
     @Throws(ClassNotFoundException::class, IllegalAccessException::class, InstantiationException::class)
     override fun newApplication(cl: ClassLoader, className: String, context: Context): Application {
         /*

+ 3 - 0
app/src/androidTest/java/com/owncloud/android/ui/dialog/SyncFileNotEnoughSpaceDialogFragmentTest.java

@@ -25,6 +25,7 @@ package com.owncloud.android.ui.dialog;
 import com.owncloud.android.AbstractIT;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.ui.activity.FileDisplayActivity;
+import com.owncloud.android.utils.ScreenshotTest;
 
 import org.junit.Rule;
 import org.junit.Test;
@@ -41,6 +42,7 @@ public class SyncFileNotEnoughSpaceDialogFragmentTest extends AbstractIT {
                                                                                            false);
 
     @Test
+    @ScreenshotTest
     public void showNotEnoughSpaceDialogForFolder() {
         FileDisplayActivity test = activityRule.launchActivity(null);
         OCFile ocFile = new OCFile("/Document/");
@@ -56,6 +58,7 @@ public class SyncFileNotEnoughSpaceDialogFragmentTest extends AbstractIT {
     }
 
     @Test
+    @ScreenshotTest
     public void showNotEnoughSpaceDialogForFile() {
         FileDisplayActivity test = activityRule.launchActivity(null);
         OCFile ocFile = new OCFile("/Video.mp4");

+ 3 - 2
app/src/androidTest/java/com/owncloud/android/ui/preview/PreviewTextFileFragmentTest.java

@@ -26,6 +26,7 @@ import com.owncloud.android.AbstractIT;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.ui.activity.FileDisplayActivity;
 import com.owncloud.android.utils.MimeTypeUtil;
+import com.owncloud.android.utils.ScreenshotTest;
 
 import org.junit.Rule;
 import org.junit.Test;
@@ -41,7 +42,7 @@ public class PreviewTextFileFragmentTest extends AbstractIT {
                                                                                            false);
 
     @Test
-    // @ScreenshotTest // todo run without real server
+    @ScreenshotTest
     public void displaySimpleTextFile() throws IOException {
         FileDisplayActivity sut = activityRule.launchActivity(null);
 
@@ -59,7 +60,7 @@ public class PreviewTextFileFragmentTest extends AbstractIT {
     }
 
     @Test
-    // @ScreenshotTest // todo run without real server
+    @ScreenshotTest
     public void displayJavaSnippetFile() throws IOException {
         FileDisplayActivity sut = activityRule.launchActivity(null);
 

+ 2 - 0
app/src/androidTest/java/com/owncloud/android/ui/trashbin/TrashbinActivityIT.kt

@@ -109,6 +109,7 @@ class TrashbinActivityIT : AbstractIT() {
     }
 
     @Test
+    @ScreenshotTest
     fun normalUser() {
         val sut: TrashbinActivity = activityRule.launchActivity(null)
 
@@ -124,6 +125,7 @@ class TrashbinActivityIT : AbstractIT() {
     }
 
     @Test
+    @ScreenshotTest
     fun differentUser() {
         val temp = Account("differentUser@https://nextcloud.localhost", MainApp.getAccountType(targetContext))
 

+ 9 - 4
app/src/main/java/com/owncloud/android/ui/adapter/TrashbinListAdapter.java

@@ -235,14 +235,19 @@ public class TrashbinListAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
                         thumbnailView.setImageBitmap(thumbnail);
                     }
                 } else {
+                    thumbnailView.setImageDrawable(MimeTypeUtil.getFileTypeIcon(file.getMimeType(),
+                                                                                file.getFileName(),
+                                                                                context,
+                                                                                viewThemeUtils));
+
                     // generate new thumbnail
                     if (ThumbnailsCacheManager.cancelPotentialThumbnailWork(file, thumbnailView)) {
                         try {
                             final ThumbnailsCacheManager.ThumbnailGenerationTask task =
-                                    new ThumbnailsCacheManager.ThumbnailGenerationTask(thumbnailView,
-                                                                                       storageManager,
-                                                                                       user,
-                                                                                       asyncTasks);
+                                new ThumbnailsCacheManager.ThumbnailGenerationTask(thumbnailView,
+                                                                                   storageManager,
+                                                                                   user,
+                                                                                   asyncTasks);
 
                             final ThumbnailsCacheManager.AsyncThumbnailDrawable asyncDrawable =
                                     new ThumbnailsCacheManager.AsyncThumbnailDrawable(context.getResources(),

+ 1 - 0
build.gradle

@@ -21,6 +21,7 @@ buildscript {
         roomVersion = "2.6.1"
 
         ciBuild = System.getenv("CI") == "true"
+        shotTest = System.getenv("SHOT_TEST") == "true"
     }
 }
 

+ 1 - 1
scripts/androidScreenshotTest

@@ -73,7 +73,7 @@ fi
 if [[ $4 = "all" ]]; then
     scripts/runAllScreenshotCombinations "noCI" "$1" "-Pandroid.testInstrumentationRunnerArguments.class=$class$method"
 else
-    ./gradlew --offline gplayDebugExecuteScreenshotTests $record \
+    SHOT_TEST=true ./gradlew --offline gplayDebugExecuteScreenshotTests $record \
     -Dorg.gradle.jvmargs="--add-opens java.base/java.nio=ALL-UNNAMED --add-opens java.base/java.nio.channels=ALL-UNNAMED --add-exports java.base/sun.nio.ch=ALL-UNNAMED" \
     -Pscreenshot=true \
     -Pandroid.testInstrumentationRunnerArguments.annotation=com.owncloud.android.utils.ScreenshotTest \