diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index a511b10..cb2ab8b 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -54,11 +54,43 @@ jobs: if: always() run: release/signing-cleanup.sh - test: + screenshot-test: needs: build runs-on: ubuntu-latest timeout-minutes: 30 + steps: + - uses: actions/checkout@v4 + + - name: Copy CI gradle.properties + run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties + + - name: Setup java + uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: 17 + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Build tests & Create screenshots + run: ./gradlew verifyRoborazziDebug --stacktrace + + - name: Upload test results + uses: actions/upload-artifact@v4 + if: always() + with: + name: screenshot-test-results + path: | + **/build/reports/* + **/build/outputs/roborazzi + + instrumented-test: + needs: [build, screenshot-test] + runs-on: ubuntu-latest + timeout-minutes: 30 + strategy: matrix: # Disable 21-23 for now as the devices seem to be flakey on CI @@ -128,7 +160,7 @@ jobs: if: always() uses: actions/upload-artifact@v4 with: - name: test-results-${{ matrix.api-level }} + name: instrumented-test-results-${{ matrix.api-level }} path: | **/build/reports/* **/build/outputs/*/connected/* @@ -137,7 +169,7 @@ jobs: if: github.event_name == 'push' # only deploy for pushed commits (not PRs) runs-on: ubuntu-latest - needs: [ build, test ] + needs: [ build, screenshot-test, instrumented-test ] timeout-minutes: 30 env: TERM: dumb diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3ce309f..f22f05b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -30,6 +30,14 @@ ./gradlew lintDebug ``` +- roborazzi +```bash +./gradlew verifyRoborazziDebug +``` +```bash +./gradlew compareRoborazziDebug +``` + ## Update baselines - dependencyGuard @@ -46,3 +54,8 @@ ```bash ./gradlew metalavaGenerateSignatureRelease ``` + +- roborazzi +```bash +./gradlew recordRoborazziDebug +``` diff --git a/build.gradle b/build.gradle index c2931c4..d444376 100644 --- a/build.gradle +++ b/build.gradle @@ -5,6 +5,7 @@ plugins { alias(libs.plugins.android.library) apply false alias(libs.plugins.kotlin.android) apply false alias(libs.plugins.compose.compiler) apply false + alias(libs.plugins.roborazzi) apply false alias(libs.plugins.metalava) apply false alias(libs.plugins.maven.publish) apply false alias(libs.plugins.dependency.guard) apply false diff --git a/gradle.properties b/gradle.properties index a48eb21..4fa28b1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -25,6 +25,10 @@ android.nonTransitiveRClass=true org.gradle.parallel=true org.gradle.caching=true +# roborazzi +roborazzi.record.filePathStrategy=relativePathFromRoborazziContextOutputDirectory + +# publish SONATYPE_HOST=CENTRAL_PORTAL RELEASE_SIGNING_ENABLED=true diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3464914..7cd9f50 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -23,6 +23,10 @@ androidxtest-junit = "1.1.3" espresso = "3.3.0" junit = "4.13" +# Roborazzi for screenshot testing +roborazzi = "1.36.0" +robolectric = "4.14.1" + [libraries] kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" } @@ -52,6 +56,12 @@ androidx-test-espresso-core = { module = "androidx.test.espresso:espresso-core", junit = { module = "junit:junit", version.ref = "junit" } +# Roborazzi dependencies +roborazzi = { module = "io.github.takahirom.roborazzi:roborazzi", version.ref = "roborazzi" } +roborazzi-compose = { module = "io.github.takahirom.roborazzi:roborazzi-compose", version.ref = "roborazzi" } +roborazzi-junit-rule = { module = "io.github.takahirom.roborazzi:roborazzi-junit-rule", version.ref = "roborazzi" } +robolectric = { module = "org.robolectric:robolectric", version.ref = "robolectric" } + # Dependencies of the included build-logic android-pluginGradle = { module = "com.android.tools.build:gradle", version.ref = "agp" } kotlin-pluginGradle = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } @@ -62,6 +72,7 @@ android-application = { id = "com.android.application", version.ref = "agp" } android-library = { id = "com.android.library", version.ref = "agp" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } +roborazzi = { id = "io.github.takahirom.roborazzi", version.ref = "roborazzi" } jetbrains-dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" } metalava = { id = "me.tylerbwong.gradle.metalava", version.ref = "metalava" } maven-publish = { id = "com.vanniktech.maven.publish", version.ref = "mavenPublish" } diff --git a/pre_check.sh b/pre_check.sh index cf82ceb..b559b82 100755 --- a/pre_check.sh +++ b/pre_check.sh @@ -9,27 +9,33 @@ echo "Starting pre-check validations..." echo "" # Verify dependency changes -echo "๐Ÿ” [1/4] Checking dependency guard..." +echo "๐Ÿ” [1/5] Checking dependency guard..." ./gradlew dependencyGuard echo "โœ“ Dependency guard check passed" echo "" # Verify code formatting -echo "๐Ÿ” [2/4] Checking code formatting..." +echo "๐Ÿ” [2/5] Checking code formatting..." ./gradlew spotlessCheck --init-script gradle/init.gradle.kts echo "โœ“ Code formatting check passed" echo "" # Verify API compatibility -echo "๐Ÿ” [3/4] Checking API compatibility..." +echo "๐Ÿ” [3/5] Checking API compatibility..." ./gradlew metalavaCheckCompatibilityRelease echo "โœ“ API compatibility check passed" echo "" # Static analysis and lint checks -echo "๐Ÿ” [4/4] Running lint checks..." +echo "๐Ÿ” [4/5] Running lint checks..." ./gradlew lintDebug echo "โœ“ Lint check passed" echo "" +# Verify screenshots +echo "๐Ÿ” [5/5] Checking screenshots..." +./gradlew verifyRoborazziDebug +echo "โœ“ Screenshots check passed" +echo "" + echo "โœ… All pre-checks passed successfully!" diff --git a/readmore-foundation/build.gradle b/readmore-foundation/build.gradle index d8f0a02..f6eaa2d 100644 --- a/readmore-foundation/build.gradle +++ b/readmore-foundation/build.gradle @@ -1,6 +1,7 @@ plugins { id("readmore.android.library") id("readmore.android.compose") + alias(libs.plugins.roborazzi) alias(libs.plugins.maven.publish) alias(libs.plugins.jetbrains.dokka) alias(libs.plugins.metalava) @@ -16,6 +17,14 @@ android { excludes += '/META-INF/{AL2.0,LGPL2.1}' } } + testOptions { + unitTests { + includeAndroidResources = true + all { + it.systemProperties["robolectric.pixelCopyRenderMode"] = "hardware" + } + } + } } metalava { @@ -24,6 +33,10 @@ metalava { reportLintsAsErrors.set(true) } +roborazzi { + outputDir.set(file("screenshots")) +} + dependencies { implementation libs.compose.foundation.foundation implementation libs.compose.ui.util @@ -32,6 +45,15 @@ dependencies { // Test dependencies // ====================== + // Roborazzi for screenshot testing + testImplementation libs.roborazzi + testImplementation libs.roborazzi.compose + testImplementation libs.roborazzi.junit.rule + testImplementation libs.robolectric + testImplementation libs.junit + testImplementation libs.compose.ui.test.junit4 + testImplementation libs.androidx.test.ext.junit + androidTestImplementation libs.junit androidTestImplementation libs.androidx.test.core androidTestImplementation libs.androidx.test.runner diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_long.all_collapsed.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_long.all_collapsed.png new file mode 100644 index 0000000..bb571b6 Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_long.all_collapsed.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_long.all_expanded.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_long.all_expanded.png new file mode 100644 index 0000000..d6ed0e7 Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_long.all_expanded.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_long.default_none.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_long.default_none.png new file mode 100644 index 0000000..cfd7ead Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_long.default_none.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_long.expanded_none.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_long.expanded_none.png new file mode 100644 index 0000000..a538861 Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_long.expanded_none.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_long.readLessText_collapsed.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_long.readLessText_collapsed.png new file mode 100644 index 0000000..cfd7ead Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_long.readLessText_collapsed.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_long.readLessText_expanded.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_long.readLessText_expanded.png new file mode 100644 index 0000000..d6ed0e7 Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_long.readLessText_expanded.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_long.readMoreText_collapsed.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_long.readMoreText_collapsed.png new file mode 100644 index 0000000..bb571b6 Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_long.readMoreText_collapsed.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_long.readMoreText_expanded.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_long.readMoreText_expanded.png new file mode 100644 index 0000000..a538861 Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_long.readMoreText_expanded.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_short.all_collapsed.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_short.all_collapsed.png new file mode 100644 index 0000000..fae9ec4 Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_short.all_collapsed.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_short.all_expanded.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_short.all_expanded.png new file mode 100644 index 0000000..9353f43 Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_short.all_expanded.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_short.default_none.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_short.default_none.png new file mode 100644 index 0000000..fae9ec4 Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_short.default_none.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_short.expanded_none.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_short.expanded_none.png new file mode 100644 index 0000000..fae9ec4 Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_short.expanded_none.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_short.readLessText_collapsed.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_short.readLessText_collapsed.png new file mode 100644 index 0000000..fae9ec4 Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_short.readLessText_collapsed.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_short.readLessText_expanded.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_short.readLessText_expanded.png new file mode 100644 index 0000000..9353f43 Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_short.readLessText_expanded.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_short.readMoreText_collapsed.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_short.readMoreText_collapsed.png new file mode 100644 index 0000000..fae9ec4 Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_short.readMoreText_collapsed.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_short.readMoreText_expanded.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_short.readMoreText_expanded.png new file mode 100644 index 0000000..fae9ec4 Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.AnnotatedString_short.readMoreText_expanded.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.RTL.all_collapsed.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.RTL.all_collapsed.png new file mode 100644 index 0000000..2a43b38 Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.RTL.all_collapsed.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.RTL.all_expanded.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.RTL.all_expanded.png new file mode 100644 index 0000000..742ff5a Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.RTL.all_expanded.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.RTL.default_none.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.RTL.default_none.png new file mode 100644 index 0000000..fc55903 Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.RTL.default_none.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.RTL.expanded_none.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.RTL.expanded_none.png new file mode 100644 index 0000000..885c2d3 Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.RTL.expanded_none.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.RTL.readLessText_collapsed.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.RTL.readLessText_collapsed.png new file mode 100644 index 0000000..fc55903 Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.RTL.readLessText_collapsed.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.RTL.readLessText_expanded.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.RTL.readLessText_expanded.png new file mode 100644 index 0000000..742ff5a Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.RTL.readLessText_expanded.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.RTL.readMoreText_collapsed.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.RTL.readMoreText_collapsed.png new file mode 100644 index 0000000..2a43b38 Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.RTL.readMoreText_collapsed.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.RTL.readMoreText_expanded.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.RTL.readMoreText_expanded.png new file mode 100644 index 0000000..885c2d3 Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.RTL.readMoreText_expanded.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_long.all_collapsed.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_long.all_collapsed.png new file mode 100644 index 0000000..e7f5339 Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_long.all_collapsed.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_long.all_expanded.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_long.all_expanded.png new file mode 100644 index 0000000..8f5f62d Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_long.all_expanded.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_long.default_none.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_long.default_none.png new file mode 100644 index 0000000..856aeb6 Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_long.default_none.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_long.expanded_none.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_long.expanded_none.png new file mode 100644 index 0000000..4253af8 Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_long.expanded_none.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_long.readLessText_collapsed.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_long.readLessText_collapsed.png new file mode 100644 index 0000000..856aeb6 Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_long.readLessText_collapsed.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_long.readLessText_expanded.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_long.readLessText_expanded.png new file mode 100644 index 0000000..8f5f62d Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_long.readLessText_expanded.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_long.readMoreText_collapsed.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_long.readMoreText_collapsed.png new file mode 100644 index 0000000..e7f5339 Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_long.readMoreText_collapsed.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_long.readMoreText_expanded.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_long.readMoreText_expanded.png new file mode 100644 index 0000000..4253af8 Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_long.readMoreText_expanded.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_short.all_collapsed.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_short.all_collapsed.png new file mode 100644 index 0000000..cfb318f Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_short.all_collapsed.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_short.all_expanded.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_short.all_expanded.png new file mode 100644 index 0000000..72ce436 Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_short.all_expanded.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_short.default_none.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_short.default_none.png new file mode 100644 index 0000000..cfb318f Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_short.default_none.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_short.expanded_none.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_short.expanded_none.png new file mode 100644 index 0000000..cfb318f Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_short.expanded_none.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_short.readLessText_collapsed.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_short.readLessText_collapsed.png new file mode 100644 index 0000000..cfb318f Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_short.readLessText_collapsed.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_short.readLessText_expanded.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_short.readLessText_expanded.png new file mode 100644 index 0000000..72ce436 Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_short.readLessText_expanded.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_short.readMoreText_collapsed.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_short.readMoreText_collapsed.png new file mode 100644 index 0000000..cfb318f Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_short.readMoreText_collapsed.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_short.readMoreText_expanded.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_short.readMoreText_expanded.png new file mode 100644 index 0000000..cfb318f Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.String_short.readMoreText_expanded.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.emoji.all_collapsed.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.emoji.all_collapsed.png new file mode 100644 index 0000000..82db38d Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.emoji.all_collapsed.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.emoji.all_expanded.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.emoji.all_expanded.png new file mode 100644 index 0000000..a049e38 Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.emoji.all_expanded.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.emoji.default_none.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.emoji.default_none.png new file mode 100644 index 0000000..5050631 Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.emoji.default_none.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.emoji.expanded_none.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.emoji.expanded_none.png new file mode 100644 index 0000000..3f73cac Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.emoji.expanded_none.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.emoji.readLessText_collapsed.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.emoji.readLessText_collapsed.png new file mode 100644 index 0000000..5050631 Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.emoji.readLessText_collapsed.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.emoji.readLessText_expanded.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.emoji.readLessText_expanded.png new file mode 100644 index 0000000..a049e38 Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.emoji.readLessText_expanded.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.emoji.readMoreText_collapsed.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.emoji.readMoreText_collapsed.png new file mode 100644 index 0000000..82db38d Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.emoji.readMoreText_collapsed.png differ diff --git a/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.emoji.readMoreText_expanded.png b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.emoji.readMoreText_expanded.png new file mode 100644 index 0000000..3f73cac Binary files /dev/null and b/readmore-foundation/screenshots/BasicReadMoreTextScreenshotTest.emoji.readMoreText_expanded.png differ diff --git a/readmore-foundation/src/test/java/com/webtoonscorp/android/readmore/foundation/BasicReadMoreTextScreenshotTest.kt b/readmore-foundation/src/test/java/com/webtoonscorp/android/readmore/foundation/BasicReadMoreTextScreenshotTest.kt new file mode 100644 index 0000000..99e0552 --- /dev/null +++ b/readmore-foundation/src/test/java/com/webtoonscorp/android/readmore/foundation/BasicReadMoreTextScreenshotTest.kt @@ -0,0 +1,348 @@ +/* + * Copyright 2022 NAVER Webtoon + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.webtoonscorp.android.readmore.foundation + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.Stable +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalLayoutDirection +import androidx.compose.ui.test.junit4.createComposeRule +import androidx.compose.ui.test.onRoot +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.SpanStyle +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.buildAnnotatedString +import androidx.compose.ui.text.font.FontStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextDecoration +import androidx.compose.ui.text.withStyle +import androidx.compose.ui.unit.LayoutDirection +import androidx.compose.ui.unit.sp +import com.github.takahirom.roborazzi.RoborazziRule +import com.github.takahirom.roborazzi.captureRoboImage +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.ParameterizedRobolectricTestRunner +import org.robolectric.annotation.GraphicsMode +import java.io.File + +@RunWith(ParameterizedRobolectricTestRunner::class) +@GraphicsMode(GraphicsMode.Mode.NATIVE) +internal class BasicReadMoreTextScreenshotTest( + private val testCase: ScreenshotTestCase, +) { + companion object { + + @JvmStatic + @ParameterizedRobolectricTestRunner.Parameters(name = "{0}") + fun data(): List { + return listOf( + StringScreenshotTestCase( + name = "String_short", + text = "Lorem ipsum dolor sit amet.", + readMoreText = "Read more", + readLessText = "Read less", + ), + StringScreenshotTestCase( + name = "String_long", + text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", + readMoreText = "Read more", + readLessText = "Read less", + ), + StringScreenshotTestCase( + name = "RTL", + text = "ู„ูŠุงู„ุŒ ูุชุงุฉ ุชุณู„ูƒ ุฏุฑุจุงู‹ ู…ูˆุญุดุงู‹ ุจุญุซุงู‹ ุนู† ุญู„ู ู„ุฌู†ูˆู†ู‡ุง. ููƒูŠู ุณุชู†ุชู‡ูŠ ู…ุบุงู…ุฑุชู‡ุง ุนู†ุฏู…ุง ู„ุง ุชุณุชุทูŠุน ุงู„ุชูุฑูŠู‚ ุจูŠู† ุงู„ูˆู‡ู… ูˆ ุงู„ุญู‚ูŠู‚ุฉ ูˆ ุจูŠู† ุงู„ุนุฏูˆ ูˆ ุงู„ุตุฏูŠู‚. ู‡ุฐู‡ ุงู„ุฑุญู„ุฉ ุณุชุถุนู‡ุง ููŠ ู…ูˆุงุฌู‡ุฉ ุฃุณูˆุฃ ู…ุฎุงูˆูู‡ุงุŒ ูู…ุงุฐุง ุณุชูƒูˆู† ุชู„ูƒ ุงู„ูƒูˆุงุจูŠุณุŸ ู…ู† ุณูŠู‚ุงุจู„ู‡ุง ููŠ ุงู„ุทุฑูŠู‚ ุฃู… ู…ู† ูŠุณูƒู† ุนู‚ู„ู‡ุง ุงู„ูุงุฑุบุŸ", + readMoreText = "ุงู‚ุฑุฃ ุงู„ู…ุฒูŠุฏ", + readLessText = "ุงู‚ุฑุฃ ุฃู‚ู„", + isRtl = true, + ), + StringScreenshotTestCase( + name = "emoji", + text = "๐Ÿ˜€๐Ÿ˜ƒ๐Ÿ˜„๐Ÿ˜๐Ÿ˜†๐Ÿ˜…๐Ÿ˜‚๐Ÿคฃ๐Ÿฅฒโ˜บ๏ธ.๐Ÿ˜Š๐Ÿ˜‡๐Ÿ™‚๐Ÿ™ƒ๐Ÿ˜‰๐Ÿ˜Œ๐Ÿ˜๐Ÿฅฐ๐Ÿ‘ช๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ.๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ง๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ.๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ง๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง๐Ÿ‘จโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘ง๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง๐Ÿ‘ฉโ€๐Ÿ‘ฆ.๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ๐Ÿ‘ฉโ€๐Ÿ‘ง๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง๐Ÿ˜˜๐Ÿ˜—๐Ÿ˜™๐Ÿ˜š๐Ÿ˜‹๐Ÿ˜›.๐Ÿ˜๐Ÿ˜œ๐Ÿคช๐Ÿคจ๐Ÿง๐Ÿค“๐Ÿ˜Ž๐Ÿฅธ๐Ÿคฉ๐Ÿฅณ.๐Ÿ˜๐Ÿ˜’๐Ÿ˜ž๐Ÿ˜”๐Ÿ˜Ÿ๐Ÿ˜•๐Ÿ™โ˜น๏ธ๐Ÿ˜ฃ๐Ÿ˜–.๐Ÿ˜ซ๐Ÿ˜ฉ๐Ÿฅบ๐Ÿ˜ข๐Ÿ˜ญ๐Ÿ˜ค๐Ÿ˜ ๐Ÿ˜ก๐Ÿคฌ๐Ÿคฏ๐Ÿ˜ณ๐Ÿฅต๐Ÿฅถ๐Ÿ˜ฑ๐Ÿ˜จ๐Ÿ˜ฐ๐Ÿ˜ฅ๐Ÿ˜“๐Ÿค—๐Ÿค”๐Ÿคญ๐Ÿคซ๐Ÿคฅ๐Ÿ˜ถ๐Ÿ˜๐Ÿ˜‘๐Ÿ˜ฌ๐Ÿ™„๐Ÿ˜ฏ๐Ÿ˜ฆ๐Ÿ˜ง๐Ÿ˜ฎ๐Ÿ˜ฒ๐Ÿฅฑ๐Ÿ˜ด๐Ÿคค๐Ÿ˜ช๐Ÿ˜ต๐Ÿค๐Ÿฅด๐Ÿคข๐Ÿคฎ๐Ÿคง๐Ÿ˜ท๐Ÿค’๐Ÿค•๐Ÿค‘๐Ÿค ๐Ÿ˜ˆ๐Ÿ‘ฟ๐Ÿ‘น๐Ÿ‘บ๐Ÿคก๐Ÿ’ฉ๐Ÿ‘ป๐Ÿ’€โ˜ ๏ธ๐Ÿ‘ฝ๐Ÿ‘พ๐Ÿค–๐ŸŽƒ๐Ÿ˜บ๐Ÿ˜ธ๐Ÿ˜น๐Ÿ˜ป๐Ÿ˜ผ๐Ÿ˜ฝ๐Ÿ™€๐Ÿ˜ฟ๐Ÿ˜พ", + readMoreText = "Read more", + readLessText = "Read less", + ), + AnnotatedStringScreenshotTestCase( + name = "AnnotatedString_short", + text = buildAnnotatedString { + withStyle( + SpanStyle( + color = Color.White, + background = Color.Black, + ), + ) { + append("abcdefghijklmnopqrstuvwxyz,") + } + }, + readMoreText = "Read more", + readLessText = "Read less", + ), + AnnotatedStringScreenshotTestCase( + name = "AnnotatedString_long", + text = buildAnnotatedString { + withStyle( + SpanStyle( + color = Color.White, + background = Color.Black, + ), + ) { + append("abcdefghijklmnopqrstuvwxyz,") + } + withStyle(SpanStyle(fontSize = 12.sp)) { + append("abcdefghijklmnopqrstuvwxyz,") + } + withStyle(SpanStyle(textDecoration = TextDecoration.LineThrough)) { + append("abcdefghijklmnopqrstuvwxyz,") + } + withStyle(SpanStyle(color = Color.Magenta)) { + append("abcdefghijklmnopqrstuvwxyz,") + } + append("abcdefghijklmnopqrstuvwxyz.") + }, + readMoreText = "Read more", + readLessText = "Read less", + ), + ) + } + } + + @get:Rule + val roborazziRule = RoborazziRule( + options = RoborazziRule.Options( + outputFileProvider = { description, outputDirectory, fileExtension -> + // Remove parameters from method name + // e.g. "method_name[parameter]" -> "method_name" + val methodName = description.methodName.replace("""\[.*]$""".toRegex(), "") + File( + outputDirectory, + "${description.testClass.simpleName}.${testCase.name}.$methodName.$fileExtension", + ) + }, + ), + ) + + @get:Rule + val composeTestRule = createComposeRule() + + @Test + fun default_none() { + composeTestRule.setContent { + Screenshot( + testCase = testCase, + expanded = false, + ) + } + + composeTestRule.onRoot() + .captureRoboImage() + } + + @Test + fun expanded_none() { + composeTestRule.setContent { + Screenshot( + testCase = testCase, + expanded = true, + ) + } + + composeTestRule.onRoot() + .captureRoboImage() + } + + @Test + fun readMoreText_collapsed() { + composeTestRule.setContent { + Screenshot( + testCase = testCase, + expanded = false, + readMoreText = testCase.readMoreText, + ) + } + + composeTestRule.onRoot() + .captureRoboImage() + } + + @Test + fun readMoreText_expanded() { + composeTestRule.setContent { + Screenshot( + testCase = testCase, + expanded = true, + readMoreText = testCase.readMoreText, + ) + } + + composeTestRule.onRoot() + .captureRoboImage() + } + + @Test + fun readLessText_collapsed() { + composeTestRule.setContent { + Screenshot( + testCase = testCase, + expanded = false, + readLessText = testCase.readLessText, + ) + } + + composeTestRule.onRoot() + .captureRoboImage() + } + + @Test + fun readLessText_expanded() { + composeTestRule.setContent { + Screenshot( + testCase = testCase, + expanded = true, + readLessText = testCase.readLessText, + ) + } + + composeTestRule.onRoot() + .captureRoboImage() + } + + @Test + fun all_collapsed() { + composeTestRule.setContent { + Screenshot( + testCase = testCase, + expanded = false, + readMoreText = testCase.readMoreText, + readLessText = testCase.readLessText, + ) + } + + composeTestRule.onRoot() + .captureRoboImage() + } + + @Test + fun all_expanded() { + composeTestRule.setContent { + Screenshot( + testCase = testCase, + expanded = true, + readMoreText = testCase.readMoreText, + readLessText = testCase.readLessText, + ) + } + + composeTestRule.onRoot() + .captureRoboImage() + } + + @Composable + private fun Screenshot( + testCase: ScreenshotTestCase, + expanded: Boolean, + readMoreText: String = "", + readLessText: String = "", + ) { + val layoutDirection = if (testCase.isRtl) LayoutDirection.Rtl else LayoutDirection.Ltr + CompositionLocalProvider( + LocalLayoutDirection provides layoutDirection, + ) { + when (testCase) { + is StringScreenshotTestCase -> { + BasicReadMoreText( + text = testCase.text, + expanded = expanded, + style = TextStyle.Default.copy( + fontSize = 15.sp, + fontStyle = FontStyle.Normal, + lineHeight = 22.sp, + ), + readMoreText = readMoreText, + readMoreStyle = SpanStyle( + color = Color.Blue, + fontSize = 14.sp, + fontWeight = FontWeight.Bold, + textDecoration = TextDecoration.Underline, + ), + readLessText = readLessText, + readLessStyle = SpanStyle( + color = Color.Red, + fontSize = 12.sp, + fontWeight = FontWeight.Bold, + fontStyle = FontStyle.Italic, + ), + ) + } + + is AnnotatedStringScreenshotTestCase -> { + BasicReadMoreText( + text = testCase.text, + expanded = expanded, + style = TextStyle.Default.copy( + fontSize = 15.sp, + fontStyle = FontStyle.Normal, + lineHeight = 22.sp, + ), + readMoreText = readMoreText, + readMoreStyle = SpanStyle( + color = Color.Blue, + fontSize = 14.sp, + fontWeight = FontWeight.Bold, + textDecoration = TextDecoration.Underline, + ), + readLessText = readLessText, + readLessStyle = SpanStyle( + color = Color.Red, + fontSize = 12.sp, + fontWeight = FontWeight.Bold, + fontStyle = FontStyle.Italic, + ), + ) + } + } + } + } +} + +@Stable +internal sealed interface ScreenshotTestCase { + val name: String + val readMoreText: String + val readLessText: String + val isRtl: Boolean +} + +internal data class StringScreenshotTestCase( + override val name: String, + val text: String, + override val readMoreText: String, + override val readLessText: String, + override val isRtl: Boolean = false, +) : ScreenshotTestCase { + override fun toString(): String = name +} + +internal data class AnnotatedStringScreenshotTestCase( + override val name: String, + val text: AnnotatedString, + override val readMoreText: String, + override val readLessText: String, + override val isRtl: Boolean = false, +) : ScreenshotTestCase { + override fun toString(): String = name +} diff --git a/readmore-foundation/src/test/resources/robolectric.properties b/readmore-foundation/src/test/resources/robolectric.properties new file mode 100644 index 0000000..daf8002 --- /dev/null +++ b/readmore-foundation/src/test/resources/robolectric.properties @@ -0,0 +1,3 @@ +# Robolectric configuration +# Use SDK 33 for better compatibility with Robolectric Native Graphics +sdk=33 diff --git a/readmore-material/build.gradle b/readmore-material/build.gradle index b23638b..c50a8c4 100644 --- a/readmore-material/build.gradle +++ b/readmore-material/build.gradle @@ -1,6 +1,7 @@ plugins { id("readmore.android.library") id("readmore.android.compose") + alias(libs.plugins.roborazzi) alias(libs.plugins.maven.publish) alias(libs.plugins.jetbrains.dokka) alias(libs.plugins.metalava) @@ -16,6 +17,14 @@ android { excludes += '/META-INF/{AL2.0,LGPL2.1}' } } + testOptions { + unitTests { + includeAndroidResources = true + all { + it.systemProperties["robolectric.pixelCopyRenderMode"] = "hardware" + } + } + } } metalava { @@ -24,6 +33,10 @@ metalava { reportLintsAsErrors.set(true) } +roborazzi { + outputDir.set(file("screenshots")) +} + dependencies { implementation libs.compose.material api projects.readmoreFoundation @@ -32,6 +45,15 @@ dependencies { // Test dependencies // ====================== + // Roborazzi for screenshot testing + testImplementation libs.roborazzi + testImplementation libs.roborazzi.compose + testImplementation libs.roborazzi.junit.rule + testImplementation libs.robolectric + testImplementation libs.junit + testImplementation libs.compose.ui.test.junit4 + testImplementation libs.androidx.test.ext.junit + androidTestImplementation libs.junit androidTestImplementation libs.androidx.test.core androidTestImplementation libs.androidx.test.runner diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.all_collapsed.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.all_collapsed.png new file mode 100644 index 0000000..5667e59 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.all_collapsed.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.all_expanded.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.all_expanded.png new file mode 100644 index 0000000..920079d Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.all_expanded.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.default_none.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.default_none.png new file mode 100644 index 0000000..1b4fcab Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.default_none.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.expanded_none.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.expanded_none.png new file mode 100644 index 0000000..d03f0a9 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.expanded_none.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.readLessText_collapsed.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.readLessText_collapsed.png new file mode 100644 index 0000000..1b4fcab Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.readLessText_collapsed.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.readLessText_expanded.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.readLessText_expanded.png new file mode 100644 index 0000000..920079d Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.readLessText_expanded.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.readMoreText_collapsed.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.readMoreText_collapsed.png new file mode 100644 index 0000000..5667e59 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.readMoreText_collapsed.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.readMoreText_expanded.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.readMoreText_expanded.png new file mode 100644 index 0000000..d03f0a9 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.readMoreText_expanded.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.all_collapsed.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.all_collapsed.png new file mode 100644 index 0000000..5f5c2c2 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.all_collapsed.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.all_expanded.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.all_expanded.png new file mode 100644 index 0000000..27d3d0d Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.all_expanded.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.default_none.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.default_none.png new file mode 100644 index 0000000..5f5c2c2 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.default_none.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.expanded_none.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.expanded_none.png new file mode 100644 index 0000000..5f5c2c2 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.expanded_none.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.readLessText_collapsed.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.readLessText_collapsed.png new file mode 100644 index 0000000..5f5c2c2 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.readLessText_collapsed.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.readLessText_expanded.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.readLessText_expanded.png new file mode 100644 index 0000000..27d3d0d Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.readLessText_expanded.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.readMoreText_collapsed.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.readMoreText_collapsed.png new file mode 100644 index 0000000..5f5c2c2 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.readMoreText_collapsed.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.readMoreText_expanded.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.readMoreText_expanded.png new file mode 100644 index 0000000..5f5c2c2 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.readMoreText_expanded.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.RTL.all_collapsed.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.RTL.all_collapsed.png new file mode 100644 index 0000000..ce20b9f Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.RTL.all_collapsed.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.RTL.all_expanded.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.RTL.all_expanded.png new file mode 100644 index 0000000..88d1445 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.RTL.all_expanded.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.RTL.default_none.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.RTL.default_none.png new file mode 100644 index 0000000..c43efd8 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.RTL.default_none.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.RTL.expanded_none.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.RTL.expanded_none.png new file mode 100644 index 0000000..6978d58 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.RTL.expanded_none.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.RTL.readLessText_collapsed.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.RTL.readLessText_collapsed.png new file mode 100644 index 0000000..c43efd8 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.RTL.readLessText_collapsed.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.RTL.readLessText_expanded.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.RTL.readLessText_expanded.png new file mode 100644 index 0000000..88d1445 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.RTL.readLessText_expanded.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.RTL.readMoreText_collapsed.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.RTL.readMoreText_collapsed.png new file mode 100644 index 0000000..ce20b9f Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.RTL.readMoreText_collapsed.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.RTL.readMoreText_expanded.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.RTL.readMoreText_expanded.png new file mode 100644 index 0000000..6978d58 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.RTL.readMoreText_expanded.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_long.all_collapsed.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_long.all_collapsed.png new file mode 100644 index 0000000..7033624 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_long.all_collapsed.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_long.all_expanded.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_long.all_expanded.png new file mode 100644 index 0000000..7110851 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_long.all_expanded.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_long.default_none.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_long.default_none.png new file mode 100644 index 0000000..a390d55 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_long.default_none.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_long.expanded_none.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_long.expanded_none.png new file mode 100644 index 0000000..1a30b2c Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_long.expanded_none.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_long.readLessText_collapsed.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_long.readLessText_collapsed.png new file mode 100644 index 0000000..a390d55 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_long.readLessText_collapsed.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_long.readLessText_expanded.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_long.readLessText_expanded.png new file mode 100644 index 0000000..7110851 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_long.readLessText_expanded.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_long.readMoreText_collapsed.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_long.readMoreText_collapsed.png new file mode 100644 index 0000000..7033624 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_long.readMoreText_collapsed.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_long.readMoreText_expanded.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_long.readMoreText_expanded.png new file mode 100644 index 0000000..1a30b2c Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_long.readMoreText_expanded.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_short.all_collapsed.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_short.all_collapsed.png new file mode 100644 index 0000000..32668e3 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_short.all_collapsed.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_short.all_expanded.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_short.all_expanded.png new file mode 100644 index 0000000..afbd1c4 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_short.all_expanded.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_short.default_none.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_short.default_none.png new file mode 100644 index 0000000..32668e3 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_short.default_none.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_short.expanded_none.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_short.expanded_none.png new file mode 100644 index 0000000..32668e3 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_short.expanded_none.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_short.readLessText_collapsed.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_short.readLessText_collapsed.png new file mode 100644 index 0000000..32668e3 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_short.readLessText_collapsed.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_short.readLessText_expanded.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_short.readLessText_expanded.png new file mode 100644 index 0000000..afbd1c4 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_short.readLessText_expanded.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_short.readMoreText_collapsed.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_short.readMoreText_collapsed.png new file mode 100644 index 0000000..32668e3 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_short.readMoreText_collapsed.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_short.readMoreText_expanded.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_short.readMoreText_expanded.png new file mode 100644 index 0000000..32668e3 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.String_short.readMoreText_expanded.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.emoji.all_collapsed.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.emoji.all_collapsed.png new file mode 100644 index 0000000..cda813f Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.emoji.all_collapsed.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.emoji.all_expanded.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.emoji.all_expanded.png new file mode 100644 index 0000000..57d7233 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.emoji.all_expanded.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.emoji.default_none.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.emoji.default_none.png new file mode 100644 index 0000000..1863977 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.emoji.default_none.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.emoji.expanded_none.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.emoji.expanded_none.png new file mode 100644 index 0000000..4766588 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.emoji.expanded_none.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.emoji.readLessText_collapsed.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.emoji.readLessText_collapsed.png new file mode 100644 index 0000000..1863977 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.emoji.readLessText_collapsed.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.emoji.readLessText_expanded.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.emoji.readLessText_expanded.png new file mode 100644 index 0000000..57d7233 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.emoji.readLessText_expanded.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.emoji.readMoreText_collapsed.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.emoji.readMoreText_collapsed.png new file mode 100644 index 0000000..cda813f Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.emoji.readMoreText_collapsed.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.emoji.readMoreText_expanded.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.emoji.readMoreText_expanded.png new file mode 100644 index 0000000..4766588 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.emoji.readMoreText_expanded.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.all_collapsed.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.all_collapsed.png new file mode 100644 index 0000000..5667e59 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.all_collapsed.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.all_expanded.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.all_expanded.png new file mode 100644 index 0000000..920079d Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.all_expanded.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.default_none.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.default_none.png new file mode 100644 index 0000000..1b4fcab Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.default_none.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.expanded_none.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.expanded_none.png new file mode 100644 index 0000000..d03f0a9 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.expanded_none.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.readLessText_collapsed.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.readLessText_collapsed.png new file mode 100644 index 0000000..1b4fcab Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.readLessText_collapsed.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.readLessText_expanded.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.readLessText_expanded.png new file mode 100644 index 0000000..920079d Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.readLessText_expanded.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.readMoreText_collapsed.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.readMoreText_collapsed.png new file mode 100644 index 0000000..5667e59 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.readMoreText_collapsed.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.readMoreText_expanded.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.readMoreText_expanded.png new file mode 100644 index 0000000..d03f0a9 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.readMoreText_expanded.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.longString.all_collapsed.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.longString.all_collapsed.png new file mode 100644 index 0000000..7033624 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.longString.all_collapsed.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.longString.all_expanded.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.longString.all_expanded.png new file mode 100644 index 0000000..7110851 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.longString.all_expanded.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.longString.default_none.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.longString.default_none.png new file mode 100644 index 0000000..a390d55 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.longString.default_none.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.longString.expanded_none.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.longString.expanded_none.png new file mode 100644 index 0000000..1a30b2c Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.longString.expanded_none.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.longString.readLessText_collapsed.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.longString.readLessText_collapsed.png new file mode 100644 index 0000000..a390d55 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.longString.readLessText_collapsed.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.longString.readLessText_expanded.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.longString.readLessText_expanded.png new file mode 100644 index 0000000..7110851 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.longString.readLessText_expanded.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.longString.readMoreText_collapsed.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.longString.readMoreText_collapsed.png new file mode 100644 index 0000000..7033624 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.longString.readMoreText_collapsed.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.longString.readMoreText_expanded.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.longString.readMoreText_expanded.png new file mode 100644 index 0000000..1a30b2c Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.longString.readMoreText_expanded.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.all_collapsed.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.all_collapsed.png new file mode 100644 index 0000000..5f5c2c2 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.all_collapsed.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.all_expanded.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.all_expanded.png new file mode 100644 index 0000000..27d3d0d Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.all_expanded.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.default_none.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.default_none.png new file mode 100644 index 0000000..5f5c2c2 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.default_none.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.expanded_none.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.expanded_none.png new file mode 100644 index 0000000..5f5c2c2 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.expanded_none.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.readLessText_collapsed.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.readLessText_collapsed.png new file mode 100644 index 0000000..5f5c2c2 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.readLessText_collapsed.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.readLessText_expanded.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.readLessText_expanded.png new file mode 100644 index 0000000..27d3d0d Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.readLessText_expanded.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.readMoreText_collapsed.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.readMoreText_collapsed.png new file mode 100644 index 0000000..5f5c2c2 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.readMoreText_collapsed.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.readMoreText_expanded.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.readMoreText_expanded.png new file mode 100644 index 0000000..5f5c2c2 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.readMoreText_expanded.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortString.all_collapsed.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortString.all_collapsed.png new file mode 100644 index 0000000..32668e3 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortString.all_collapsed.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortString.all_expanded.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortString.all_expanded.png new file mode 100644 index 0000000..afbd1c4 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortString.all_expanded.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortString.default_none.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortString.default_none.png new file mode 100644 index 0000000..32668e3 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortString.default_none.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortString.expanded_none.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortString.expanded_none.png new file mode 100644 index 0000000..32668e3 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortString.expanded_none.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortString.readLessText_collapsed.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortString.readLessText_collapsed.png new file mode 100644 index 0000000..32668e3 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortString.readLessText_collapsed.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortString.readLessText_expanded.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortString.readLessText_expanded.png new file mode 100644 index 0000000..afbd1c4 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortString.readLessText_expanded.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortString.readMoreText_collapsed.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortString.readMoreText_collapsed.png new file mode 100644 index 0000000..32668e3 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortString.readMoreText_collapsed.png differ diff --git a/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortString.readMoreText_expanded.png b/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortString.readMoreText_expanded.png new file mode 100644 index 0000000..32668e3 Binary files /dev/null and b/readmore-material/screenshots/ReadMoreTextScreenshotTest.shortString.readMoreText_expanded.png differ diff --git a/readmore-material/src/test/java/com/webtoonscorp/android/readmore/material/ReadMoreTextScreenshotTest.kt b/readmore-material/src/test/java/com/webtoonscorp/android/readmore/material/ReadMoreTextScreenshotTest.kt new file mode 100644 index 0000000..1629139 --- /dev/null +++ b/readmore-material/src/test/java/com/webtoonscorp/android/readmore/material/ReadMoreTextScreenshotTest.kt @@ -0,0 +1,335 @@ +/* + * Copyright 2022 NAVER Webtoon + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.webtoonscorp.android.readmore.material + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.Stable +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalLayoutDirection +import androidx.compose.ui.test.junit4.createComposeRule +import androidx.compose.ui.test.onRoot +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.SpanStyle +import androidx.compose.ui.text.buildAnnotatedString +import androidx.compose.ui.text.font.FontStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextDecoration +import androidx.compose.ui.text.withStyle +import androidx.compose.ui.unit.LayoutDirection +import androidx.compose.ui.unit.sp +import com.github.takahirom.roborazzi.RoborazziRule +import com.github.takahirom.roborazzi.captureRoboImage +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.ParameterizedRobolectricTestRunner +import org.robolectric.annotation.GraphicsMode +import java.io.File + +@RunWith(ParameterizedRobolectricTestRunner::class) +@GraphicsMode(GraphicsMode.Mode.NATIVE) +internal class ReadMoreTextScreenshotTest( + private val testCase: ScreenshotTestCase, +) { + companion object { + + @JvmStatic + @ParameterizedRobolectricTestRunner.Parameters(name = "{0}") + fun data(): List { + return listOf( + StringScreenshotTestCase( + name = "String_short", + text = "Lorem ipsum dolor sit amet.", + readMoreText = "Read more", + readLessText = "Read less", + ), + StringScreenshotTestCase( + name = "String_long", + text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", + readMoreText = "Read more", + readLessText = "Read less", + ), + StringScreenshotTestCase( + name = "RTL", + text = "ู„ูŠุงู„ุŒ ูุชุงุฉ ุชุณู„ูƒ ุฏุฑุจุงู‹ ู…ูˆุญุดุงู‹ ุจุญุซุงู‹ ุนู† ุญู„ู ู„ุฌู†ูˆู†ู‡ุง. ููƒูŠู ุณุชู†ุชู‡ูŠ ู…ุบุงู…ุฑุชู‡ุง ุนู†ุฏู…ุง ู„ุง ุชุณุชุทูŠุน ุงู„ุชูุฑูŠู‚ ุจูŠู† ุงู„ูˆู‡ู… ูˆ ุงู„ุญู‚ูŠู‚ุฉ ูˆ ุจูŠู† ุงู„ุนุฏูˆ ูˆ ุงู„ุตุฏูŠู‚. ู‡ุฐู‡ ุงู„ุฑุญู„ุฉ ุณุชุถุนู‡ุง ููŠ ู…ูˆุงุฌู‡ุฉ ุฃุณูˆุฃ ู…ุฎุงูˆูู‡ุงุŒ ูู…ุงุฐุง ุณุชูƒูˆู† ุชู„ูƒ ุงู„ูƒูˆุงุจูŠุณุŸ ู…ู† ุณูŠู‚ุงุจู„ู‡ุง ููŠ ุงู„ุทุฑูŠู‚ ุฃู… ู…ู† ูŠุณูƒู† ุนู‚ู„ู‡ุง ุงู„ูุงุฑุบุŸ", + readMoreText = "ุงู‚ุฑุฃ ุงู„ู…ุฒูŠุฏ", + readLessText = "ุงู‚ุฑุฃ ุฃู‚ู„", + isRtl = true, + ), + StringScreenshotTestCase( + name = "emoji", + text = "๐Ÿ˜€๐Ÿ˜ƒ๐Ÿ˜„๐Ÿ˜๐Ÿ˜†๐Ÿ˜…๐Ÿ˜‚๐Ÿคฃ๐Ÿฅฒโ˜บ๏ธ.๐Ÿ˜Š๐Ÿ˜‡๐Ÿ™‚๐Ÿ™ƒ๐Ÿ˜‰๐Ÿ˜Œ๐Ÿ˜๐Ÿฅฐ๐Ÿ‘ช๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ.๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ง๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ.๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ง๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง๐Ÿ‘จโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘ง๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง๐Ÿ‘ฉโ€๐Ÿ‘ฆ.๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ๐Ÿ‘ฉโ€๐Ÿ‘ง๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง๐Ÿ˜˜๐Ÿ˜—๐Ÿ˜™๐Ÿ˜š๐Ÿ˜‹๐Ÿ˜›.๐Ÿ˜๐Ÿ˜œ๐Ÿคช๐Ÿคจ๐Ÿง๐Ÿค“๐Ÿ˜Ž๐Ÿฅธ๐Ÿคฉ๐Ÿฅณ.๐Ÿ˜๐Ÿ˜’๐Ÿ˜ž๐Ÿ˜”๐Ÿ˜Ÿ๐Ÿ˜•๐Ÿ™โ˜น๏ธ๐Ÿ˜ฃ๐Ÿ˜–.๐Ÿ˜ซ๐Ÿ˜ฉ๐Ÿฅบ๐Ÿ˜ข๐Ÿ˜ญ๐Ÿ˜ค๐Ÿ˜ ๐Ÿ˜ก๐Ÿคฌ๐Ÿคฏ๐Ÿ˜ณ๐Ÿฅต๐Ÿฅถ๐Ÿ˜ฑ๐Ÿ˜จ๐Ÿ˜ฐ๐Ÿ˜ฅ๐Ÿ˜“๐Ÿค—๐Ÿค”๐Ÿคญ๐Ÿคซ๐Ÿคฅ๐Ÿ˜ถ๐Ÿ˜๐Ÿ˜‘๐Ÿ˜ฌ๐Ÿ™„๐Ÿ˜ฏ๐Ÿ˜ฆ๐Ÿ˜ง๐Ÿ˜ฎ๐Ÿ˜ฒ๐Ÿฅฑ๐Ÿ˜ด๐Ÿคค๐Ÿ˜ช๐Ÿ˜ต๐Ÿค๐Ÿฅด๐Ÿคข๐Ÿคฎ๐Ÿคง๐Ÿ˜ท๐Ÿค’๐Ÿค•๐Ÿค‘๐Ÿค ๐Ÿ˜ˆ๐Ÿ‘ฟ๐Ÿ‘น๐Ÿ‘บ๐Ÿคก๐Ÿ’ฉ๐Ÿ‘ป๐Ÿ’€โ˜ ๏ธ๐Ÿ‘ฝ๐Ÿ‘พ๐Ÿค–๐ŸŽƒ๐Ÿ˜บ๐Ÿ˜ธ๐Ÿ˜น๐Ÿ˜ป๐Ÿ˜ผ๐Ÿ˜ฝ๐Ÿ™€๐Ÿ˜ฟ๐Ÿ˜พ", + readMoreText = "Read more", + readLessText = "Read less", + ), + AnnotatedStringScreenshotTestCase( + name = "AnnotatedString_short", + text = buildAnnotatedString { + withStyle( + SpanStyle( + color = Color.White, + background = Color.Black, + ), + ) { + append("abcdefghijklmnopqrstuvwxyz,") + } + }, + readMoreText = "Read more", + readLessText = "Read less", + ), + AnnotatedStringScreenshotTestCase( + name = "AnnotatedString_long", + text = buildAnnotatedString { + withStyle( + SpanStyle( + color = Color.White, + background = Color.Black, + ), + ) { + append("abcdefghijklmnopqrstuvwxyz,") + } + withStyle(SpanStyle(fontSize = 12.sp)) { + append("abcdefghijklmnopqrstuvwxyz,") + } + withStyle(SpanStyle(textDecoration = TextDecoration.LineThrough)) { + append("abcdefghijklmnopqrstuvwxyz,") + } + withStyle(SpanStyle(color = Color.Magenta)) { + append("abcdefghijklmnopqrstuvwxyz,") + } + append("abcdefghijklmnopqrstuvwxyz.") + }, + readMoreText = "Read more", + readLessText = "Read less", + ), + ) + } + } + + @get:Rule + val roborazziRule = RoborazziRule( + options = RoborazziRule.Options( + outputFileProvider = { description, outputDirectory, fileExtension -> + // Remove parameters from method name + // e.g. "method_name[parameter]" -> "method_name" + val methodName = description.methodName.replace("""\[.*]$""".toRegex(), "") + File( + outputDirectory, + "${description.testClass.simpleName}.${testCase.name}.$methodName.$fileExtension", + ) + }, + ), + ) + + @get:Rule + val composeTestRule = createComposeRule() + + @Test + fun default_none() { + composeTestRule.setContent { + Screenshot( + testCase = testCase, + expanded = false, + ) + } + + composeTestRule.onRoot() + .captureRoboImage() + } + + @Test + fun expanded_none() { + composeTestRule.setContent { + Screenshot( + testCase = testCase, + expanded = true, + ) + } + + composeTestRule.onRoot() + .captureRoboImage() + } + + @Test + fun readMoreText_collapsed() { + composeTestRule.setContent { + Screenshot( + testCase = testCase, + expanded = false, + readMoreText = testCase.readMoreText, + ) + } + + composeTestRule.onRoot() + .captureRoboImage() + } + + @Test + fun readMoreText_expanded() { + composeTestRule.setContent { + Screenshot( + testCase = testCase, + expanded = true, + readMoreText = testCase.readMoreText, + ) + } + + composeTestRule.onRoot() + .captureRoboImage() + } + + @Test + fun readLessText_collapsed() { + composeTestRule.setContent { + Screenshot( + testCase = testCase, + expanded = false, + readLessText = testCase.readLessText, + ) + } + + composeTestRule.onRoot() + .captureRoboImage() + } + + @Test + fun readLessText_expanded() { + composeTestRule.setContent { + Screenshot( + testCase = testCase, + expanded = true, + readLessText = testCase.readLessText, + ) + } + + composeTestRule.onRoot() + .captureRoboImage() + } + + @Test + fun all_collapsed() { + composeTestRule.setContent { + Screenshot( + testCase = testCase, + expanded = false, + readMoreText = testCase.readMoreText, + readLessText = testCase.readLessText, + ) + } + + composeTestRule.onRoot() + .captureRoboImage() + } + + @Test + fun all_expanded() { + composeTestRule.setContent { + Screenshot( + testCase = testCase, + expanded = true, + readMoreText = testCase.readMoreText, + readLessText = testCase.readLessText, + ) + } + + composeTestRule.onRoot() + .captureRoboImage() + } + + @Composable + private fun Screenshot( + testCase: ScreenshotTestCase, + expanded: Boolean, + readMoreText: String = "", + readLessText: String = "", + ) { + val layoutDirection = if (testCase.isRtl) LayoutDirection.Rtl else LayoutDirection.Ltr + CompositionLocalProvider( + LocalLayoutDirection provides layoutDirection, + ) { + when (testCase) { + is StringScreenshotTestCase -> { + ReadMoreText( + text = testCase.text, + expanded = expanded, + fontSize = 15.sp, + fontStyle = FontStyle.Normal, + lineHeight = 22.sp, + readMoreText = readMoreText, + readMoreColor = Color.Blue, + readMoreFontSize = 14.sp, + readMoreFontWeight = FontWeight.Bold, + readMoreTextDecoration = TextDecoration.Underline, + readLessText = readLessText, + readLessColor = Color.Red, + readLessFontSize = 12.sp, + readLessFontWeight = FontWeight.Bold, + readLessFontStyle = FontStyle.Italic, + ) + } + + is AnnotatedStringScreenshotTestCase -> { + ReadMoreText( + text = testCase.text, + expanded = expanded, + fontSize = 15.sp, + fontStyle = FontStyle.Normal, + lineHeight = 22.sp, + readMoreText = readMoreText, + readMoreColor = Color.Blue, + readMoreFontSize = 14.sp, + readMoreFontWeight = FontWeight.Bold, + readMoreTextDecoration = TextDecoration.Underline, + readLessText = readLessText, + readLessColor = Color.Red, + readLessFontSize = 12.sp, + readLessFontWeight = FontWeight.Bold, + readLessFontStyle = FontStyle.Italic, + ) + } + } + } + } +} + +@Stable +internal sealed interface ScreenshotTestCase { + val name: String + val readMoreText: String + val readLessText: String + val isRtl: Boolean +} + +internal data class StringScreenshotTestCase( + override val name: String, + val text: String, + override val readMoreText: String, + override val readLessText: String, + override val isRtl: Boolean = false, +) : ScreenshotTestCase { + override fun toString(): String = name +} + +internal data class AnnotatedStringScreenshotTestCase( + override val name: String, + val text: AnnotatedString, + override val readMoreText: String, + override val readLessText: String, + override val isRtl: Boolean = false, +) : ScreenshotTestCase { + override fun toString(): String = name +} diff --git a/readmore-material/src/test/resources/robolectric.properties b/readmore-material/src/test/resources/robolectric.properties new file mode 100644 index 0000000..daf8002 --- /dev/null +++ b/readmore-material/src/test/resources/robolectric.properties @@ -0,0 +1,3 @@ +# Robolectric configuration +# Use SDK 33 for better compatibility with Robolectric Native Graphics +sdk=33 diff --git a/readmore-material3/build.gradle b/readmore-material3/build.gradle index 61de0c8..5e1e3e1 100644 --- a/readmore-material3/build.gradle +++ b/readmore-material3/build.gradle @@ -1,6 +1,7 @@ plugins { id("readmore.android.library") id("readmore.android.compose") + alias(libs.plugins.roborazzi) alias(libs.plugins.maven.publish) alias(libs.plugins.jetbrains.dokka) alias(libs.plugins.metalava) @@ -16,6 +17,18 @@ android { excludes += '/META-INF/{AL2.0,LGPL2.1}' } } + testOptions { + unitTests { + includeAndroidResources = true + all { + it.systemProperties["robolectric.pixelCopyRenderMode"] = "hardware" + } + } + } +} + +roborazzi { + outputDir.set(file("screenshots")) } metalava { @@ -32,6 +45,15 @@ dependencies { // Test dependencies // ====================== + // Roborazzi for screenshot testing + testImplementation libs.roborazzi + testImplementation libs.roborazzi.compose + testImplementation libs.roborazzi.junit.rule + testImplementation libs.robolectric + testImplementation libs.junit + testImplementation libs.compose.ui.test.junit4 + testImplementation libs.androidx.test.ext.junit + androidTestImplementation libs.junit androidTestImplementation libs.androidx.test.core androidTestImplementation libs.androidx.test.runner diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.all_collapsed.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.all_collapsed.png new file mode 100644 index 0000000..d7d5fe3 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.all_collapsed.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.all_expanded.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.all_expanded.png new file mode 100644 index 0000000..fe2b8bb Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.all_expanded.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.default_none.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.default_none.png new file mode 100644 index 0000000..b8ead8e Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.default_none.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.expanded_none.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.expanded_none.png new file mode 100644 index 0000000..fbfd381 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.expanded_none.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.readLessText_collapsed.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.readLessText_collapsed.png new file mode 100644 index 0000000..b8ead8e Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.readLessText_collapsed.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.readLessText_expanded.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.readLessText_expanded.png new file mode 100644 index 0000000..fe2b8bb Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.readLessText_expanded.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.readMoreText_collapsed.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.readMoreText_collapsed.png new file mode 100644 index 0000000..d7d5fe3 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.readMoreText_collapsed.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.readMoreText_expanded.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.readMoreText_expanded.png new file mode 100644 index 0000000..fbfd381 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_long.readMoreText_expanded.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.all_collapsed.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.all_collapsed.png new file mode 100644 index 0000000..b4c31be Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.all_collapsed.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.all_expanded.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.all_expanded.png new file mode 100644 index 0000000..a952cf6 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.all_expanded.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.default_none.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.default_none.png new file mode 100644 index 0000000..b4c31be Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.default_none.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.expanded_none.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.expanded_none.png new file mode 100644 index 0000000..b4c31be Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.expanded_none.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.readLessText_collapsed.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.readLessText_collapsed.png new file mode 100644 index 0000000..b4c31be Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.readLessText_collapsed.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.readLessText_expanded.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.readLessText_expanded.png new file mode 100644 index 0000000..a952cf6 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.readLessText_expanded.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.readMoreText_collapsed.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.readMoreText_collapsed.png new file mode 100644 index 0000000..b4c31be Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.readMoreText_collapsed.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.readMoreText_expanded.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.readMoreText_expanded.png new file mode 100644 index 0000000..b4c31be Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.AnnotatedString_short.readMoreText_expanded.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.RTL.all_collapsed.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.RTL.all_collapsed.png new file mode 100644 index 0000000..4077c47 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.RTL.all_collapsed.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.RTL.all_expanded.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.RTL.all_expanded.png new file mode 100644 index 0000000..b01c529 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.RTL.all_expanded.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.RTL.default_none.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.RTL.default_none.png new file mode 100644 index 0000000..f58ddd6 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.RTL.default_none.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.RTL.expanded_none.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.RTL.expanded_none.png new file mode 100644 index 0000000..95d61d8 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.RTL.expanded_none.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.RTL.readLessText_collapsed.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.RTL.readLessText_collapsed.png new file mode 100644 index 0000000..f58ddd6 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.RTL.readLessText_collapsed.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.RTL.readLessText_expanded.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.RTL.readLessText_expanded.png new file mode 100644 index 0000000..b01c529 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.RTL.readLessText_expanded.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.RTL.readMoreText_collapsed.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.RTL.readMoreText_collapsed.png new file mode 100644 index 0000000..4077c47 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.RTL.readMoreText_collapsed.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.RTL.readMoreText_expanded.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.RTL.readMoreText_expanded.png new file mode 100644 index 0000000..95d61d8 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.RTL.readMoreText_expanded.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_long.all_collapsed.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_long.all_collapsed.png new file mode 100644 index 0000000..be92836 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_long.all_collapsed.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_long.all_expanded.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_long.all_expanded.png new file mode 100644 index 0000000..2dfe1f4 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_long.all_expanded.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_long.default_none.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_long.default_none.png new file mode 100644 index 0000000..5399d65 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_long.default_none.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_long.expanded_none.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_long.expanded_none.png new file mode 100644 index 0000000..30067a6 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_long.expanded_none.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_long.readLessText_collapsed.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_long.readLessText_collapsed.png new file mode 100644 index 0000000..5399d65 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_long.readLessText_collapsed.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_long.readLessText_expanded.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_long.readLessText_expanded.png new file mode 100644 index 0000000..2dfe1f4 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_long.readLessText_expanded.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_long.readMoreText_collapsed.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_long.readMoreText_collapsed.png new file mode 100644 index 0000000..be92836 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_long.readMoreText_collapsed.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_long.readMoreText_expanded.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_long.readMoreText_expanded.png new file mode 100644 index 0000000..30067a6 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_long.readMoreText_expanded.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_short.all_collapsed.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_short.all_collapsed.png new file mode 100644 index 0000000..6e1c970 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_short.all_collapsed.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_short.all_expanded.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_short.all_expanded.png new file mode 100644 index 0000000..b0dfcaf Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_short.all_expanded.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_short.default_none.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_short.default_none.png new file mode 100644 index 0000000..6e1c970 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_short.default_none.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_short.expanded_none.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_short.expanded_none.png new file mode 100644 index 0000000..6e1c970 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_short.expanded_none.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_short.readLessText_collapsed.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_short.readLessText_collapsed.png new file mode 100644 index 0000000..6e1c970 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_short.readLessText_collapsed.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_short.readLessText_expanded.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_short.readLessText_expanded.png new file mode 100644 index 0000000..b0dfcaf Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_short.readLessText_expanded.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_short.readMoreText_collapsed.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_short.readMoreText_collapsed.png new file mode 100644 index 0000000..6e1c970 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_short.readMoreText_collapsed.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_short.readMoreText_expanded.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_short.readMoreText_expanded.png new file mode 100644 index 0000000..6e1c970 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.String_short.readMoreText_expanded.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.emoji.all_collapsed.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.emoji.all_collapsed.png new file mode 100644 index 0000000..3194ea7 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.emoji.all_collapsed.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.emoji.all_expanded.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.emoji.all_expanded.png new file mode 100644 index 0000000..b9407fa Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.emoji.all_expanded.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.emoji.default_none.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.emoji.default_none.png new file mode 100644 index 0000000..9a883ef Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.emoji.default_none.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.emoji.expanded_none.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.emoji.expanded_none.png new file mode 100644 index 0000000..3c2d56c Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.emoji.expanded_none.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.emoji.readLessText_collapsed.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.emoji.readLessText_collapsed.png new file mode 100644 index 0000000..9a883ef Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.emoji.readLessText_collapsed.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.emoji.readLessText_expanded.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.emoji.readLessText_expanded.png new file mode 100644 index 0000000..b9407fa Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.emoji.readLessText_expanded.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.emoji.readMoreText_collapsed.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.emoji.readMoreText_collapsed.png new file mode 100644 index 0000000..3194ea7 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.emoji.readMoreText_collapsed.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.emoji.readMoreText_expanded.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.emoji.readMoreText_expanded.png new file mode 100644 index 0000000..3c2d56c Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.emoji.readMoreText_expanded.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.all_collapsed.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.all_collapsed.png new file mode 100644 index 0000000..d7d5fe3 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.all_collapsed.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.all_expanded.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.all_expanded.png new file mode 100644 index 0000000..fe2b8bb Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.all_expanded.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.default_none.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.default_none.png new file mode 100644 index 0000000..b8ead8e Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.default_none.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.expanded_none.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.expanded_none.png new file mode 100644 index 0000000..fbfd381 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.expanded_none.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.readLessText_collapsed.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.readLessText_collapsed.png new file mode 100644 index 0000000..b8ead8e Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.readLessText_collapsed.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.readLessText_expanded.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.readLessText_expanded.png new file mode 100644 index 0000000..fe2b8bb Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.readLessText_expanded.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.readMoreText_collapsed.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.readMoreText_collapsed.png new file mode 100644 index 0000000..d7d5fe3 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.readMoreText_collapsed.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.readMoreText_expanded.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.readMoreText_expanded.png new file mode 100644 index 0000000..fbfd381 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longAnnotatedString.readMoreText_expanded.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longString.all_collapsed.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longString.all_collapsed.png new file mode 100644 index 0000000..be92836 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longString.all_collapsed.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longString.all_expanded.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longString.all_expanded.png new file mode 100644 index 0000000..2dfe1f4 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longString.all_expanded.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longString.default_none.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longString.default_none.png new file mode 100644 index 0000000..5399d65 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longString.default_none.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longString.expanded_none.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longString.expanded_none.png new file mode 100644 index 0000000..30067a6 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longString.expanded_none.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longString.readLessText_collapsed.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longString.readLessText_collapsed.png new file mode 100644 index 0000000..5399d65 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longString.readLessText_collapsed.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longString.readLessText_expanded.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longString.readLessText_expanded.png new file mode 100644 index 0000000..2dfe1f4 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longString.readLessText_expanded.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longString.readMoreText_collapsed.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longString.readMoreText_collapsed.png new file mode 100644 index 0000000..be92836 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longString.readMoreText_collapsed.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longString.readMoreText_expanded.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longString.readMoreText_expanded.png new file mode 100644 index 0000000..30067a6 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.longString.readMoreText_expanded.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.all_collapsed.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.all_collapsed.png new file mode 100644 index 0000000..b4c31be Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.all_collapsed.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.all_expanded.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.all_expanded.png new file mode 100644 index 0000000..a952cf6 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.all_expanded.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.default_none.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.default_none.png new file mode 100644 index 0000000..b4c31be Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.default_none.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.expanded_none.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.expanded_none.png new file mode 100644 index 0000000..b4c31be Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.expanded_none.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.readLessText_collapsed.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.readLessText_collapsed.png new file mode 100644 index 0000000..b4c31be Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.readLessText_collapsed.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.readLessText_expanded.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.readLessText_expanded.png new file mode 100644 index 0000000..a952cf6 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.readLessText_expanded.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.readMoreText_collapsed.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.readMoreText_collapsed.png new file mode 100644 index 0000000..b4c31be Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.readMoreText_collapsed.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.readMoreText_expanded.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.readMoreText_expanded.png new file mode 100644 index 0000000..b4c31be Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortAnnotatedString.readMoreText_expanded.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortString.all_collapsed.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortString.all_collapsed.png new file mode 100644 index 0000000..6e1c970 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortString.all_collapsed.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortString.all_expanded.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortString.all_expanded.png new file mode 100644 index 0000000..b0dfcaf Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortString.all_expanded.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortString.default_none.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortString.default_none.png new file mode 100644 index 0000000..6e1c970 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortString.default_none.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortString.expanded_none.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortString.expanded_none.png new file mode 100644 index 0000000..6e1c970 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortString.expanded_none.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortString.readLessText_collapsed.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortString.readLessText_collapsed.png new file mode 100644 index 0000000..6e1c970 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortString.readLessText_collapsed.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortString.readLessText_expanded.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortString.readLessText_expanded.png new file mode 100644 index 0000000..b0dfcaf Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortString.readLessText_expanded.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortString.readMoreText_collapsed.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortString.readMoreText_collapsed.png new file mode 100644 index 0000000..6e1c970 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortString.readMoreText_collapsed.png differ diff --git a/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortString.readMoreText_expanded.png b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortString.readMoreText_expanded.png new file mode 100644 index 0000000..6e1c970 Binary files /dev/null and b/readmore-material3/screenshots/ReadMoreTextScreenshotTest.shortString.readMoreText_expanded.png differ diff --git a/readmore-material3/src/test/java/com/webtoonscorp/android/readmore/material3/ReadMoreTextScreenshotTest.kt b/readmore-material3/src/test/java/com/webtoonscorp/android/readmore/material3/ReadMoreTextScreenshotTest.kt new file mode 100644 index 0000000..edc02bc --- /dev/null +++ b/readmore-material3/src/test/java/com/webtoonscorp/android/readmore/material3/ReadMoreTextScreenshotTest.kt @@ -0,0 +1,335 @@ +/* + * Copyright 2022 NAVER Webtoon + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.webtoonscorp.android.readmore.material3 + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.Stable +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalLayoutDirection +import androidx.compose.ui.test.junit4.createComposeRule +import androidx.compose.ui.test.onRoot +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.SpanStyle +import androidx.compose.ui.text.buildAnnotatedString +import androidx.compose.ui.text.font.FontStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextDecoration +import androidx.compose.ui.text.withStyle +import androidx.compose.ui.unit.LayoutDirection +import androidx.compose.ui.unit.sp +import com.github.takahirom.roborazzi.RoborazziRule +import com.github.takahirom.roborazzi.captureRoboImage +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.ParameterizedRobolectricTestRunner +import org.robolectric.annotation.GraphicsMode +import java.io.File + +@RunWith(ParameterizedRobolectricTestRunner::class) +@GraphicsMode(GraphicsMode.Mode.NATIVE) +internal class ReadMoreTextScreenshotTest( + private val testCase: ScreenshotTestCase, +) { + companion object { + + @JvmStatic + @ParameterizedRobolectricTestRunner.Parameters(name = "{0}") + fun data(): List { + return listOf( + StringScreenshotTestCase( + name = "String_short", + text = "Lorem ipsum dolor sit amet.", + readMoreText = "Read more", + readLessText = "Read less", + ), + StringScreenshotTestCase( + name = "String_long", + text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", + readMoreText = "Read more", + readLessText = "Read less", + ), + StringScreenshotTestCase( + name = "RTL", + text = "ู„ูŠุงู„ุŒ ูุชุงุฉ ุชุณู„ูƒ ุฏุฑุจุงู‹ ู…ูˆุญุดุงู‹ ุจุญุซุงู‹ ุนู† ุญู„ู ู„ุฌู†ูˆู†ู‡ุง. ููƒูŠู ุณุชู†ุชู‡ูŠ ู…ุบุงู…ุฑุชู‡ุง ุนู†ุฏู…ุง ู„ุง ุชุณุชุทูŠุน ุงู„ุชูุฑูŠู‚ ุจูŠู† ุงู„ูˆู‡ู… ูˆ ุงู„ุญู‚ูŠู‚ุฉ ูˆ ุจูŠู† ุงู„ุนุฏูˆ ูˆ ุงู„ุตุฏูŠู‚. ู‡ุฐู‡ ุงู„ุฑุญู„ุฉ ุณุชุถุนู‡ุง ููŠ ู…ูˆุงุฌู‡ุฉ ุฃุณูˆุฃ ู…ุฎุงูˆูู‡ุงุŒ ูู…ุงุฐุง ุณุชูƒูˆู† ุชู„ูƒ ุงู„ูƒูˆุงุจูŠุณุŸ ู…ู† ุณูŠู‚ุงุจู„ู‡ุง ููŠ ุงู„ุทุฑูŠู‚ ุฃู… ู…ู† ูŠุณูƒู† ุนู‚ู„ู‡ุง ุงู„ูุงุฑุบุŸ", + readMoreText = "ุงู‚ุฑุฃ ุงู„ู…ุฒูŠุฏ", + readLessText = "ุงู‚ุฑุฃ ุฃู‚ู„", + isRtl = true, + ), + StringScreenshotTestCase( + name = "emoji", + text = "๐Ÿ˜€๐Ÿ˜ƒ๐Ÿ˜„๐Ÿ˜๐Ÿ˜†๐Ÿ˜…๐Ÿ˜‚๐Ÿคฃ๐Ÿฅฒโ˜บ๏ธ.๐Ÿ˜Š๐Ÿ˜‡๐Ÿ™‚๐Ÿ™ƒ๐Ÿ˜‰๐Ÿ˜Œ๐Ÿ˜๐Ÿฅฐ๐Ÿ‘ช๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ.๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ง๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ.๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ง๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง๐Ÿ‘จโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘ง๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง๐Ÿ‘ฉโ€๐Ÿ‘ฆ.๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ๐Ÿ‘ฉโ€๐Ÿ‘ง๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง๐Ÿ˜˜๐Ÿ˜—๐Ÿ˜™๐Ÿ˜š๐Ÿ˜‹๐Ÿ˜›.๐Ÿ˜๐Ÿ˜œ๐Ÿคช๐Ÿคจ๐Ÿง๐Ÿค“๐Ÿ˜Ž๐Ÿฅธ๐Ÿคฉ๐Ÿฅณ.๐Ÿ˜๐Ÿ˜’๐Ÿ˜ž๐Ÿ˜”๐Ÿ˜Ÿ๐Ÿ˜•๐Ÿ™โ˜น๏ธ๐Ÿ˜ฃ๐Ÿ˜–.๐Ÿ˜ซ๐Ÿ˜ฉ๐Ÿฅบ๐Ÿ˜ข๐Ÿ˜ญ๐Ÿ˜ค๐Ÿ˜ ๐Ÿ˜ก๐Ÿคฌ๐Ÿคฏ๐Ÿ˜ณ๐Ÿฅต๐Ÿฅถ๐Ÿ˜ฑ๐Ÿ˜จ๐Ÿ˜ฐ๐Ÿ˜ฅ๐Ÿ˜“๐Ÿค—๐Ÿค”๐Ÿคญ๐Ÿคซ๐Ÿคฅ๐Ÿ˜ถ๐Ÿ˜๐Ÿ˜‘๐Ÿ˜ฌ๐Ÿ™„๐Ÿ˜ฏ๐Ÿ˜ฆ๐Ÿ˜ง๐Ÿ˜ฎ๐Ÿ˜ฒ๐Ÿฅฑ๐Ÿ˜ด๐Ÿคค๐Ÿ˜ช๐Ÿ˜ต๐Ÿค๐Ÿฅด๐Ÿคข๐Ÿคฎ๐Ÿคง๐Ÿ˜ท๐Ÿค’๐Ÿค•๐Ÿค‘๐Ÿค ๐Ÿ˜ˆ๐Ÿ‘ฟ๐Ÿ‘น๐Ÿ‘บ๐Ÿคก๐Ÿ’ฉ๐Ÿ‘ป๐Ÿ’€โ˜ ๏ธ๐Ÿ‘ฝ๐Ÿ‘พ๐Ÿค–๐ŸŽƒ๐Ÿ˜บ๐Ÿ˜ธ๐Ÿ˜น๐Ÿ˜ป๐Ÿ˜ผ๐Ÿ˜ฝ๐Ÿ™€๐Ÿ˜ฟ๐Ÿ˜พ", + readMoreText = "Read more", + readLessText = "Read less", + ), + AnnotatedStringScreenshotTestCase( + name = "AnnotatedString_short", + text = buildAnnotatedString { + withStyle( + SpanStyle( + color = Color.White, + background = Color.Black, + ), + ) { + append("abcdefghijklmnopqrstuvwxyz,") + } + }, + readMoreText = "Read more", + readLessText = "Read less", + ), + AnnotatedStringScreenshotTestCase( + name = "AnnotatedString_long", + text = buildAnnotatedString { + withStyle( + SpanStyle( + color = Color.White, + background = Color.Black, + ), + ) { + append("abcdefghijklmnopqrstuvwxyz,") + } + withStyle(SpanStyle(fontSize = 12.sp)) { + append("abcdefghijklmnopqrstuvwxyz,") + } + withStyle(SpanStyle(textDecoration = TextDecoration.LineThrough)) { + append("abcdefghijklmnopqrstuvwxyz,") + } + withStyle(SpanStyle(color = Color.Magenta)) { + append("abcdefghijklmnopqrstuvwxyz,") + } + append("abcdefghijklmnopqrstuvwxyz.") + }, + readMoreText = "Read more", + readLessText = "Read less", + ), + ) + } + } + + @get:Rule + val roborazziRule = RoborazziRule( + options = RoborazziRule.Options( + outputFileProvider = { description, outputDirectory, fileExtension -> + // Remove parameters from method name + // e.g. "method_name[parameter]" -> "method_name" + val methodName = description.methodName.replace("""\[.*]$""".toRegex(), "") + File( + outputDirectory, + "${description.testClass.simpleName}.${testCase.name}.$methodName.$fileExtension", + ) + }, + ), + ) + + @get:Rule + val composeTestRule = createComposeRule() + + @Test + fun default_none() { + composeTestRule.setContent { + Screenshot( + testCase = testCase, + expanded = false, + ) + } + + composeTestRule.onRoot() + .captureRoboImage() + } + + @Test + fun expanded_none() { + composeTestRule.setContent { + Screenshot( + testCase = testCase, + expanded = true, + ) + } + + composeTestRule.onRoot() + .captureRoboImage() + } + + @Test + fun readMoreText_collapsed() { + composeTestRule.setContent { + Screenshot( + testCase = testCase, + expanded = false, + readMoreText = testCase.readMoreText, + ) + } + + composeTestRule.onRoot() + .captureRoboImage() + } + + @Test + fun readMoreText_expanded() { + composeTestRule.setContent { + Screenshot( + testCase = testCase, + expanded = true, + readMoreText = testCase.readMoreText, + ) + } + + composeTestRule.onRoot() + .captureRoboImage() + } + + @Test + fun readLessText_collapsed() { + composeTestRule.setContent { + Screenshot( + testCase = testCase, + expanded = false, + readLessText = testCase.readLessText, + ) + } + + composeTestRule.onRoot() + .captureRoboImage() + } + + @Test + fun readLessText_expanded() { + composeTestRule.setContent { + Screenshot( + testCase = testCase, + expanded = true, + readLessText = testCase.readLessText, + ) + } + + composeTestRule.onRoot() + .captureRoboImage() + } + + @Test + fun all_collapsed() { + composeTestRule.setContent { + Screenshot( + testCase = testCase, + expanded = false, + readMoreText = testCase.readMoreText, + readLessText = testCase.readLessText, + ) + } + + composeTestRule.onRoot() + .captureRoboImage() + } + + @Test + fun all_expanded() { + composeTestRule.setContent { + Screenshot( + testCase = testCase, + expanded = true, + readMoreText = testCase.readMoreText, + readLessText = testCase.readLessText, + ) + } + + composeTestRule.onRoot() + .captureRoboImage() + } + + @Composable + private fun Screenshot( + testCase: ScreenshotTestCase, + expanded: Boolean, + readMoreText: String = "", + readLessText: String = "", + ) { + val layoutDirection = if (testCase.isRtl) LayoutDirection.Rtl else LayoutDirection.Ltr + CompositionLocalProvider( + LocalLayoutDirection provides layoutDirection, + ) { + when (testCase) { + is StringScreenshotTestCase -> { + ReadMoreText( + text = testCase.text, + expanded = expanded, + fontSize = 15.sp, + fontStyle = FontStyle.Normal, + lineHeight = 22.sp, + readMoreText = readMoreText, + readMoreColor = Color.Blue, + readMoreFontSize = 14.sp, + readMoreFontWeight = FontWeight.Bold, + readMoreTextDecoration = TextDecoration.Underline, + readLessText = readLessText, + readLessColor = Color.Red, + readLessFontSize = 12.sp, + readLessFontWeight = FontWeight.Bold, + readLessFontStyle = FontStyle.Italic, + ) + } + + is AnnotatedStringScreenshotTestCase -> { + ReadMoreText( + text = testCase.text, + expanded = expanded, + fontSize = 15.sp, + fontStyle = FontStyle.Normal, + lineHeight = 22.sp, + readMoreText = readMoreText, + readMoreColor = Color.Blue, + readMoreFontSize = 14.sp, + readMoreFontWeight = FontWeight.Bold, + readMoreTextDecoration = TextDecoration.Underline, + readLessText = readLessText, + readLessColor = Color.Red, + readLessFontSize = 12.sp, + readLessFontWeight = FontWeight.Bold, + readLessFontStyle = FontStyle.Italic, + ) + } + } + } + } +} + +@Stable +internal sealed interface ScreenshotTestCase { + val name: String + val readMoreText: String + val readLessText: String + val isRtl: Boolean +} + +internal data class StringScreenshotTestCase( + override val name: String, + val text: String, + override val readMoreText: String, + override val readLessText: String, + override val isRtl: Boolean = false, +) : ScreenshotTestCase { + override fun toString(): String = name +} + +internal data class AnnotatedStringScreenshotTestCase( + override val name: String, + val text: AnnotatedString, + override val readMoreText: String, + override val readLessText: String, + override val isRtl: Boolean = false, +) : ScreenshotTestCase { + override fun toString(): String = name +} diff --git a/readmore-material3/src/test/resources/robolectric.properties b/readmore-material3/src/test/resources/robolectric.properties new file mode 100644 index 0000000..daf8002 --- /dev/null +++ b/readmore-material3/src/test/resources/robolectric.properties @@ -0,0 +1,3 @@ +# Robolectric configuration +# Use SDK 33 for better compatibility with Robolectric Native Graphics +sdk=33