androidScreenshotTest 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. #!/bin/bash
  2. #
  3. # SPDX-FileCopyrightText: 2020-2024 Nextcloud GmbH and Nextcloud contributors
  4. # SPDX-FileCopyrightText: 2020-2024 Tobias Kaminsky <tobias@kaminsky.me>
  5. # SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
  6. #
  7. set -e
  8. if [ $# -lt 2 ]; then
  9. echo "1: record: true/false
  10. 2: class name
  11. 3: method name
  12. 4: darkMode: dark/light / \"all\" to run all screenshot combinations
  13. 5: color"
  14. exit
  15. fi
  16. pushd app/src/androidTest/java
  17. class=$(find | grep $2 | grep -E "java$|kt$" | head -n1|sed s'/\//\./'g | sed s'#^\.\.##' | sed s'#\.java##'| sed s'#\.kt##')
  18. if [[ -z $class ]]; then
  19. echo "Class not found!"
  20. exit 1
  21. fi
  22. cd ../../../
  23. if [ $1 == "true" ] ; then
  24. record="-Precord"
  25. else
  26. record=""
  27. fi
  28. if [ -e $3 ] ; then
  29. method=""
  30. else
  31. method="#$3"
  32. # check if method exists
  33. if [[ $(grep -c $3 $(find | grep $2 | grep -E "java$|kt$" | head -n1)) -eq 0 ]]; then
  34. echo "Method not found!"
  35. exit 1
  36. fi
  37. fi
  38. if [ -e $4 ] ; then
  39. darkMode=""
  40. else
  41. darkMode="-Pandroid.testInstrumentationRunnerArguments.DARKMODE=$4"
  42. fi
  43. popd
  44. sed -i s'#<bool name="is_beta">false</bool>#<bool name="is_beta">true</bool>#'g app/src/main/res/values/setup.xml
  45. # check if emulator is running
  46. emulatorIsRunning=false
  47. while read line ; do
  48. if [[ $(adb -s $line emu avd name 2>/dev/null | head -n1) =~ uiComparison.* ]]; then
  49. emulatorIsRunning=true
  50. export ANDROID_SERIAL=$line
  51. break
  52. fi
  53. done < <(adb devices | cut -f1)
  54. if [ "$emulatorIsRunning" == false ] ; then
  55. "$(command -v emulator)" -writable-system -avd uiComparison -no-snapshot -gpu swiftshader_indirect -no-audio -skin 500x833 &
  56. sleep 20
  57. fi
  58. if [ -e $5 ] ; then
  59. color=""
  60. else
  61. color="-Pandroid.testInstrumentationRunnerArguments.COLOR=$5"
  62. fi
  63. if [[ $4 = "all" ]]; then
  64. scripts/runAllScreenshotCombinations "noCI" "$1" "-Pandroid.testInstrumentationRunnerArguments.class=$class$method"
  65. else
  66. SHOT_TEST=true ./gradlew --offline gplayDebugExecuteScreenshotTests $record \
  67. -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" \
  68. -Pscreenshot=true \
  69. -Pandroid.testInstrumentationRunnerArguments.annotation=com.owncloud.android.utils.ScreenshotTest \
  70. -Pandroid.testInstrumentationRunnerArguments.class=$class$method \
  71. $darkMode \
  72. $color
  73. fi
  74. sed -i s'#<bool name="is_beta">true</bool>#<bool name="is_beta">false</bool>#'g app/src/main/res/values/setup.xml
  75. unset ANDROID_SERIAL