diff --git a/CLAUDE.md b/CLAUDE.md index 248f7953..d5af4497 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -15,6 +15,8 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co - `./gradlew check` - Run all checks (tests + lint) - `./gradlew lint` - Run lint analysis - `./gradlew lintFix` - Run lint and apply safe fixes +- `./gradlew updateDebugScreenshotTest` - Generate/update screenshot test references +- `./gradlew validateDebugScreenshotTest` - Validate screenshots against references ### Clean - `./gradlew clean` - Clean build directory @@ -117,11 +119,256 @@ SeviBus follows Modern Android Development practices with Clean Architecture: ### Testing - Unit tests: JUnit, Strikt assertions, Mockito-Kotlin, Coroutines testing - Instrumentation tests available via `connectedAndroidTest` +- Screenshot tests: Compose Preview Screenshot Testing (see below) - Debug builds include: - Chucker for network debugging - Debug menu module (`:debug-menu`) for development tools - No-op implementation for release builds +## Screenshot Testing + +SeviBus uses [Compose Preview Screenshot Testing](https://developer.android.com/studio/preview/compose-screenshot-testing) (experimental) to automatically generate and validate screenshots of Compose previews. + +### Overview + +The screenshot testing setup uses a **wrapper pattern** to maintain IDE preview visibility while satisfying the `screenshotTest` source set requirement: + +- **Preview functions** live in `app/src/main/` with `internal` visibility (visible in IDE) +- **Test wrappers** live in `app/src/screenshotTest/` and call the preview functions with `@PreviewTest` annotation +- **Reference screenshots** are stored in `app/src/screenshotTestDebug/reference/` + +### Commands + +```bash +# Generate/update reference screenshots (run after creating new tests or changing UI) +./gradlew updateDebugScreenshotTest + +# Validate screenshots against references (run to check for visual regressions) +./gradlew validateDebugScreenshotTest +``` + +### Adding New Screenshot Tests + +Follow these steps to add screenshot tests for a component: + +#### 1. Create Preview Functions in Main Source + +In your component file (e.g., `app/src/main/java/com/sloy/sevibus/ui/components/MyComponent.kt`): + +```kotlin +@Preview +@Composable +internal fun MyComponentDefaultPreview() { + SevTheme { + MyComponent(/* deterministic test data */) + } +} +``` + +**Important:** +- Use `internal` visibility (not `private`) so the screenshotTest source set can access them +- Use descriptive, unique names ending with "Preview" +- Use **deterministic test data** (no `.random()`, `.shuffled()`, `Random.nextInt()`, etc.) +- Wrap in `SevTheme` for consistent theming +- Use `@PreviewLightDark` to test both light and dark themes automatically + +#### 2. Create Test Wrapper in screenshotTest Source Set + +Create `app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/MyComponentScreenshotTests.kt`: + +```kotlin +package com.sloy.sevibus.ui.components + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for MyComponent. + * These tests reference preview functions defined in the main source set. + */ +class MyComponentScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun defaultPreview() { + MyComponentDefaultPreview() + } + + @Preview + @PreviewTest + @Composable + fun darkModePreview() { + MyComponentDarkModePreview() + } +} +``` + +**Important:** +- Both `@Preview` and `@PreviewTest` annotations are required +- Test function names should be descriptive (they become part of the screenshot filename) +- Use same package as the component for easier access to internal functions + +#### 3. Generate Reference Screenshots + +```bash +./gradlew updateDebugScreenshotTest +``` + +This creates PNG files in `app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/MyComponentScreenshotTests/` + +#### 4. Validate Screenshots + +```bash +./gradlew validateDebugScreenshotTest +``` + +All tests should pass on first generation. Commit the reference screenshots to git. + +### Deterministic Test Data + +**Critical:** Screenshot tests require deterministic data to produce consistent results across test runs. + +**When using Stubs:** +- The `Stubs` object has been refactored to return deterministic data +- Use fixed indices: `Stubs.lines[0]`, `Stubs.stops[1]`, etc. +- Avoid `.random()`, `.shuffled()`, `Random.nextInt()`, `Random.nextLong()`, etc. +- Cover different cases with different test previews (e.g., empty state, single item, multiple items) + +### Testing Different States + +Create separate preview functions for different component states: + +```kotlin +// Empty state +@Preview +@Composable +internal fun MyComponentEmptyPreview() { + SevTheme { + MyComponent(items = emptyList()) + } +} + +// Single item +@Preview +@Composable +internal fun MyComponentSingleItemPreview() { + SevTheme { + MyComponent(items = listOf(Stubs.items[0])) + } +} + +// Multiple items +@Preview +@Composable +internal fun MyComponentMultipleItemsPreview() { + SevTheme { + MyComponent(items = listOf(Stubs.items[0], Stubs.items[1], Stubs.items[2])) + } +} + +// Error state +@Preview +@Composable +internal fun MyComponentErrorPreview() { + SevTheme { + MyComponent(error = "Something went wrong") + } +} +``` + +### Configuration + +Screenshot testing is configured in: + +**gradle.properties:** +```properties +android.experimental.enableScreenshotTest=true +``` + +**gradle/libs.versions.toml:** +```toml +[versions] +composeScreenshot = "0.0.1-alpha12" + +[libraries] +compose-screenshot-validation = { module = "com.android.tools.screenshot:screenshot-validation-api", version.ref = "composeScreenshot" } + +[plugins] +compose-screenshot = { id = "com.android.compose.screenshot", version.ref = "composeScreenshot" } +``` + +**app/build.gradle.kts:** +```kotlin +plugins { + alias(libs.plugins.compose.screenshot) +} + +android { + experimentalProperties["android.experimental.enableScreenshotTest"] = true + + testOptions { + screenshotTests { + imageDifferenceThreshold = 0.01f // 1% tolerance for image differences + } + } +} + +dependencies { + screenshotTestImplementation(libs.compose.screenshot.validation) + screenshotTestImplementation(libs.androidx.ui.tooling) + screenshotTestImplementation(platform(libs.androidx.compose.bom)) + screenshotTestImplementation(libs.androidx.ui) +} +``` + +### Troubleshooting + +**Issue: Tests fail with image differences** +- Run `./gradlew updateDebugScreenshotTest` to regenerate references +- Check if you're using non-deterministic data (random values, timestamps, etc.) +- Verify that `SevTheme` is applied consistently + +**Issue: `@Preview annotation is required for @PreviewTest`** +- Both annotations must be present on the test wrapper function + +**Issue: Cannot find preview function** +- Ensure preview function is `internal` (not `private`) +- Verify package name matches between main source and screenshotTest + +**Issue: Screenshots look different on different machines** +- Ensure deterministic test data (no random values) +- Check that all developers use the same JDK version (21) +- Verify image difference threshold in `build.gradle.kts` + +### Directory Structure + +``` +app/src/ +├── main/ +│ └── java/com/sloy/sevibus/ui/components/ +│ └── MyComponent.kt # Component + @Preview functions (internal) +├── screenshotTest/ +│ ├── AndroidManifest.xml # Required empty manifest +│ └── kotlin/com/sloy/sevibus/ui/components/ +│ └── MyComponentScreenshotTests.kt # @PreviewTest wrappers +└── screenshotTestDebug/ + └── reference/ + └── com/sloy/sevibus/ui/components/MyComponentScreenshotTests/ + ├── defaultPreview_0.png + └── darkModePreview_0.png # Reference screenshots (commit to git) +``` +### Key Files Reference + +- **Plugin configuration**: `gradle/libs.versions.toml`, `app/build.gradle.kts` +- **Test data**: `app/src/main/java/com/sloy/sevibus/Stubs.kt` (deterministic test data) +- **Example tests**: `app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/` + - `BusArrivalListItemScreenshotTests.kt` - Complex component with 6 states + - `InfoBannerComponentScreenshotTests.kt` - Light/dark theme testing + - `LineIndicatorScreenshotTests.kt` - Simple component +- **Reference screenshots**: `app/src/screenshotTestDebug/reference/` + ## Analytics & Event Tracking SeviBus uses a multi-tracker analytics system with a type-safe event model. diff --git a/app/build.gradle.kts b/app/build.gradle.kts index d5eeb3a3..be522cb6 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -7,6 +7,7 @@ plugins { alias(libs.plugins.ksp) alias(libs.plugins.kotlinSerialization) alias(libs.plugins.compose.compiler) + alias(libs.plugins.compose.screenshot) id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") } @@ -78,6 +79,14 @@ android { excludes += "/META-INF/{AL2.0,LGPL2.1}" } } + + experimentalProperties["android.experimental.enableScreenshotTest"] = true + + testOptions { + screenshotTests { + imageDifferenceThreshold = 0.01f + } + } } ksp { @@ -153,6 +162,12 @@ dependencies { testImplementation(libs.strikt) testImplementation(libs.coroutines.testing) testImplementation(libs.mockito.kotlin) + + // Screenshot testing + screenshotTestImplementation(libs.compose.screenshot.validation) + screenshotTestImplementation(libs.androidx.ui.tooling) + screenshotTestImplementation(platform(libs.androidx.compose.bom)) + screenshotTestImplementation(libs.androidx.ui) } secrets { diff --git a/app/src/main/java/com/sloy/sevibus/App.kt b/app/src/main/java/com/sloy/sevibus/App.kt index e5f170aa..e81c8d20 100644 --- a/app/src/main/java/com/sloy/sevibus/App.kt +++ b/app/src/main/java/com/sloy/sevibus/App.kt @@ -283,7 +283,7 @@ private fun ProfileIcon(currentUser: LoggedUser?, onNavigate: (NavigationDestina @Preview @Composable -private fun AppPreviewBottomSheet() { +internal fun AppPreviewBottomSheet() { SevTheme { MapBottomSheetScaffold( currentDestination = NavigationDestination.ForYou, @@ -301,7 +301,7 @@ private fun AppPreviewBottomSheet() { @Preview @Composable -private fun AppPreviewFullScreen() { +internal fun AppPreviewFullScreen() { SevTheme { MapBottomSheetScaffold( currentDestination = NavigationDestination.Search, diff --git a/app/src/main/java/com/sloy/sevibus/AppLayoutPlayground.kt b/app/src/main/java/com/sloy/sevibus/AppLayoutPlayground.kt index d1c6d6e9..c812fe0b 100644 --- a/app/src/main/java/com/sloy/sevibus/AppLayoutPlayground.kt +++ b/app/src/main/java/com/sloy/sevibus/AppLayoutPlayground.kt @@ -289,6 +289,6 @@ private fun FullScreenContent() { @Preview(showSystemUi = true) @Composable -private fun Preview() { +internal fun Preview() { AppLayoutPlayground() } diff --git a/app/src/main/java/com/sloy/sevibus/Stubs.kt b/app/src/main/java/com/sloy/sevibus/Stubs.kt index 2ebeeb1c..7f918d62 100644 --- a/app/src/main/java/com/sloy/sevibus/Stubs.kt +++ b/app/src/main/java/com/sloy/sevibus/Stubs.kt @@ -20,7 +20,6 @@ import com.sloy.sevibus.feature.foryou.nearby.NearbyStop import com.sloy.sevibus.feature.lines.LinesScreenState import kotlinx.coroutines.delay import java.time.LocalDateTime -import kotlin.random.Random @Deprecated("") object Stubs { @@ -99,127 +98,127 @@ object Stubs { code = 430, description = "Glorieta Plus Ultra", position = Position(latitude = 37.356990, longitude = -5.980317), - lines = lines.shuffled().take(Random.nextInt(1, 4)).map { it.toSummary() }, + lines = listOf(lines[0], lines[1], lines[2]).map { it.toSummary() }, ), Stop( code = 566, description = "Manuel Siurot (Rafael Salgado)", position = Position(latitude = 37.359176, longitude = -5.980631), - lines = lines.shuffled().take(Random.nextInt(1, 4)).map { it.toSummary() }, + lines = listOf(lines[3], lines[4]).map { it.toSummary() }, ), Stop( code = 154, description = "Manuel Siurot (Hospital V.Rocio)", position = Position(latitude = 37.361072, longitude = -5.981739), - lines = lines.shuffled().take(Random.nextInt(1, 4)).map { it.toSummary() }, + lines = listOf(lines[5]).map { it.toSummary() }, ), Stop( code = 64, description = "Manuel Siurot (Gustavo Gallardo)", position = Position(latitude = 37.365230, longitude = -5.983750), - lines = lines.shuffled().take(Random.nextInt(1, 4)).map { it.toSummary() }, + lines = listOf(lines[6], lines[7], lines[8], lines[9]).map { it.toSummary() }, ), Stop( code = 65, description = "Manuel Siurot (Edificio La Estrella)", position = Position(latitude = 37.367492, longitude = -5.985054), - lines = lines.shuffled().take(Random.nextInt(1, 4)).map { it.toSummary() }, + lines = listOf(lines[10], lines[11]).map { it.toSummary() }, ), Stop( code = 66, description = "Avenida La Borbolla (Felipe Ii)", position = Position(latitude = 37.372348, longitude = -5.985392), - lines = lines.shuffled().take(Random.nextInt(1, 4)).map { it.toSummary() }, + lines = listOf(lines[12], lines[13], lines[14]).map { it.toSummary() }, ), Stop( code = 67, description = "Avenida La Borbolla (Montevideo)", position = Position(latitude = 37.374198, longitude = -5.985209), - lines = lines.shuffled().take(Random.nextInt(1, 4)).map { it.toSummary() }, + lines = listOf(lines[15]).map { it.toSummary() }, ), Stop( code = 68, description = "Avda. La Borbolla (Dr. Pedro de Castro)", position = Position(latitude = 37.379100, longitude = -5.983300), - lines = lines.shuffled().take(Random.nextInt(1, 4)).map { it.toSummary() }, + lines = listOf(lines[16], lines[17]).map { it.toSummary() }, ), Stop( code = 472, description = "Menendez Pelayo (Juzgados)", position = Position(latitude = 37.381877, longitude = -5.987963), - lines = lines.shuffled().take(Random.nextInt(1, 4)).map { it.toSummary() }, + lines = listOf(lines[18], lines[19], lines[20]).map { it.toSummary() }, ), Stop( code = 42, description = "Menéndez Pelayo (Puerta de La Carne)", position = Position(latitude = 37.386516, longitude = -5.985553), - lines = lines.shuffled().take(Random.nextInt(1, 4)).map { it.toSummary() }, + lines = listOf(lines[21]).map { it.toSummary() }, ), Stop( code = 43, description = "Recaredo (Puerta Carmona)", position = Position(latitude = 37.389663, longitude = -5.984265), - lines = lines.shuffled().take(Random.nextInt(1, 4)).map { it.toSummary() }, + lines = listOf(lines[22], lines[23]).map { it.toSummary() }, ), Stop( code = 888, description = "Recaredo (San Roque)", position = Position(latitude = 37.391544, longitude = -5.984123), - lines = lines.shuffled().take(Random.nextInt(1, 4)).map { it.toSummary() }, + lines = listOf(lines[24], lines[25], lines[26]).map { it.toSummary() }, ), Stop( code = 22, description = "María Auxiliadora (Puerta Osario)", position = Position(latitude = 37.394493, longitude = -5.983595), - lines = lines.shuffled().take(Random.nextInt(1, 4)).map { it.toSummary() }, + lines = listOf(lines[27]).map { it.toSummary() }, ), Stop( code = 23, description = "Ronda de Capuchinos (Avenida Miraflores)", position = Position(latitude = 37.398807, longitude = -5.981822), - lines = lines.shuffled().take(Random.nextInt(1, 4)).map { it.toSummary() }, + lines = listOf(lines[28], lines[29]).map { it.toSummary() }, ), Stop( code = 24, description = "Ronda de Capuchinos (León XIII)", position = Position(latitude = 37.399669, longitude = -5.983595), - lines = lines.shuffled().take(Random.nextInt(1, 4)).map { it.toSummary() }, + lines = listOf(lines[30], lines[31], lines[32]).map { it.toSummary() }, ), Stop( code = 25, description = "Muñoz León (Sánchez Perrier)", position = Position(latitude = 37.401397, longitude = -5.985486), - lines = lines.shuffled().take(Random.nextInt(1, 4)).map { it.toSummary() }, + lines = listOf(lines[33]).map { it.toSummary() }, ), Stop( code = 238, description = "San Juan de Ribera (Macarena)", position = Position(latitude = 37.403549, longitude = -5.987237), - lines = lines.shuffled().take(Random.nextInt(1, 4)).map { it.toSummary() }, + lines = listOf(lines[34], lines[35]).map { it.toSummary() }, ), Stop( code = 239, description = "San Juan de Ribera (Policlínico)", position = Position(latitude = 37.405429, longitude = -5.986314), - lines = lines.shuffled().take(Random.nextInt(1, 4)).map { it.toSummary() }, + lines = listOf(lines[36], lines[37], lines[38]).map { it.toSummary() }, ), Stop( code = 233, description = "Doctor Fedriani (Doctor Leal Castaños)", position = Position(latitude = 37.407817, longitude = -5.985156), - lines = lines.shuffled().take(Random.nextInt(1, 4)).map { it.toSummary() }, + lines = listOf(lines[39]).map { it.toSummary() }, ), Stop( code = 251, description = "Doctor Fedriani (Plaza Isla Canela)", position = Position(latitude = 37.409427, longitude = -5.984575), - lines = lines.shuffled().take(Random.nextInt(1, 4)).map { it.toSummary() }, + lines = listOf(lines[40], lines[41]).map { it.toSummary() }, ), Stop( code = 252, description = "Doctor Fedriani (Avda. San Lázaro)", position = Position(latitude = 37.411148, longitude = -5.983941), - lines = lines.shuffled().take(Random.nextInt(1, 4)).map { it.toSummary() }, + lines = listOf(lines[42], lines[43]).map { it.toSummary() }, ) ) @@ -281,8 +280,13 @@ object Stubs { ) @Deprecated("") - val routesWithStops: List = routes.map { - RouteWithStops(it, stops.shuffled()) + val routesWithStops: List = routes.mapIndexed { index, route -> + val stopsForRoute = if (index % 2 == 0) { + stops.take(10) + } else { + stops.drop(5).take(10) + } + RouteWithStops(route, stopsForRoute) } @Deprecated("") @@ -301,155 +305,156 @@ object Stubs { type = "Sin transbordo", customName = "Bono Laura", balance = 845, - serialNumber = randomCardSerial() + serialNumber = nextCardSerial() ), CardInfo( code = 70, type = "Hijo de empleado", customName = "La de paco", - serialNumber = randomCardSerial() + serialNumber = nextCardSerial() ), CardInfo( code = 116, type = "Estudiante mensual", customName = "Estudiante", - serialNumber = randomCardSerial() + serialNumber = nextCardSerial() ), CardInfo( code = 30, type = "Saldo con transbordo", customName = "Números rojos", balance = -45, - serialNumber = randomCardSerial() + serialNumber = nextCardSerial() ), CardInfo( code = 117, type = "Diversidad funcional", customName = null, balance = -45, - serialNumber = randomCardSerial() + serialNumber = nextCardSerial() ), CardInfo( code = 71, type = "Familiar de empleado", customName = null, - serialNumber = randomCardSerial() + serialNumber = nextCardSerial() ), CardInfo( code = 101, type = "Joven", customName = null, - serialNumber = randomCardSerial() + serialNumber = nextCardSerial() ), CardInfo( code = 102, type = "Algo de Tussam", customName = null, - serialNumber = randomCardSerial() + serialNumber = nextCardSerial() ), CardInfo( code = 103, type = "Solidaria", customName = null, - serialNumber = randomCardSerial() + serialNumber = nextCardSerial() ), CardInfo( code = 104, type = "3ª edad", customName = null, - serialNumber = randomCardSerial() + serialNumber = nextCardSerial() ), CardInfo( code = 109, type = "Social", customName = null, - serialNumber = randomCardSerial() + serialNumber = nextCardSerial() ), CardInfo( code = 115, type = "Estudiante", customName = null, - serialNumber = randomCardSerial() + serialNumber = nextCardSerial() ), CardInfo( code = 116, type = "Estudiante mensual", customName = null, - serialNumber = randomCardSerial() + serialNumber = nextCardSerial() ), CardInfo( code = 117, type = "Diversidad funcional", customName = null, - serialNumber = randomCardSerial() + serialNumber = nextCardSerial() ), CardInfo( code = 118, type = "Infantil", customName = null, - serialNumber = randomCardSerial() + serialNumber = nextCardSerial() ), CardInfo( code = 150, type = "30 días", customName = null, - serialNumber = randomCardSerial() + serialNumber = nextCardSerial() ), CardInfo( code = 151, type = "Turística 1 día", customName = null, - serialNumber = randomCardSerial() + serialNumber = nextCardSerial() ), CardInfo( code = 152, type = "Turística 3 días", customName = null, - serialNumber = randomCardSerial() + serialNumber = nextCardSerial() ), CardInfo( code = 154, type = "Familia numerosa", customName = null, - serialNumber = randomCardSerial() + serialNumber = nextCardSerial() ), CardInfo( code = 155, type = "Familia numerosa especial", customName = null, - serialNumber = randomCardSerial() + serialNumber = nextCardSerial() ), CardInfo( code = 156, type = "Anual", customName = null, - serialNumber = randomCardSerial() + serialNumber = nextCardSerial() ), CardInfo( code = 201, type = "Pensionista", customName = null, - serialNumber = randomCardSerial() + serialNumber = nextCardSerial() ), ) - private fun randomCardSerial(): CardId = Random.nextLong(100000000, 999999999) + private var cardSerialCounter = 100000000L + private fun nextCardSerial(): CardId = cardSerialCounter++ @Deprecated("") val cardInfoTransactions = listOf( - CardTransaction.Validation(randomCardSerial(), LocalDateTime.now(), 350, lines[4].toSummary(), bus = 0, people = 2), - CardTransaction.Validation(randomCardSerial(), LocalDateTime.now(), 350, lines[2].toSummary(), bus = 0, people = 0), - CardTransaction.TopUp(randomCardSerial(), LocalDateTime.now(), 10000), - CardTransaction.Validation(randomCardSerial(), LocalDateTime.now(), 350, lines[34].toSummary(), bus = 0, people = 2), - CardTransaction.Validation(randomCardSerial(), LocalDateTime.now(), 350, lines[34].toSummary(), bus = 0, people = 0), + CardTransaction.Validation(700000001, LocalDateTime.now(), 350, lines[4].toSummary(), bus = 0, people = 2), + CardTransaction.Validation(700000002, LocalDateTime.now(), 350, lines[2].toSummary(), bus = 0, people = 0), + CardTransaction.TopUp(700000003, LocalDateTime.now(), 10000), + CardTransaction.Validation(700000004, LocalDateTime.now(), 350, lines[34].toSummary(), bus = 0, people = 2), + CardTransaction.Validation(700000005, LocalDateTime.now(), 350, lines[34].toSummary(), bus = 0, people = 0), ) @Deprecated("") val searchResults: List get() { - val stops = stops.shuffled().take(5) + val stops = listOf(stops[0], stops[2], stops[5], stops[8], stops[11]) .map { SearchResult.StopResult(it) } - val lines = lines.shuffled().take(3) + val lines = listOf(lines[1], lines[7], lines[15]) .map { SearchResult.LineResult(it) } return (stops + lines) } @@ -535,42 +540,42 @@ object Stubs { BusArrival.Available.Arriving( bus = 1, distance = 50, - line = lines.random().toSummary(), - route = routes.random(), + line = lines[0].toSummary(), + route = routes[0], isLastBus = false ), BusArrival.Available.Estimation( bus = 6, distance = 50, seconds = 2 * 60, - line = lines.random().toSummary(), - route = routes.random(), + line = lines[1].toSummary(), + route = routes[1], isLastBus = false ), BusArrival.Available.Estimation( bus = 2, distance = 50, seconds = 5 * 60, - line = lines.random().toSummary(), - route = routes.random(), + line = lines[2].toSummary(), + route = routes[0], isLastBus = false ), BusArrival.Available.Estimation( bus = 3, distance = 100, seconds = 10 * 60, - line = lines.random().toSummary(), - route = routes.random(), + line = lines[3].toSummary(), + route = routes[1], isLastBus = false ), BusArrival.Available.NoEstimation( bus = 4, distance = 200, - line = lines.random().toSummary(), - route = routes.random(), + line = lines[4].toSummary(), + route = routes[0], isLastBus = false ), - BusArrival.NotAvailable(line = lines.random().toSummary(), route = routes.random()) + BusArrival.NotAvailable(line = lines[5].toSummary(), route = routes[1]) ) suspend inline fun delayNetwork(): Unit = delay(1_000) diff --git a/app/src/main/java/com/sloy/sevibus/feature/cards/CardBalanceItem.kt b/app/src/main/java/com/sloy/sevibus/feature/cards/CardBalanceItem.kt index 9af869ae..e080b542 100644 --- a/app/src/main/java/com/sloy/sevibus/feature/cards/CardBalanceItem.kt +++ b/app/src/main/java/com/sloy/sevibus/feature/cards/CardBalanceItem.kt @@ -70,7 +70,7 @@ private fun FormattedBalance(balance: Int) { @Preview @Composable -private fun CardBalanceItemPreview() { +internal fun CardBalanceItemPreview() { SevTheme { Surface { Column { diff --git a/app/src/main/java/com/sloy/sevibus/feature/cards/CardInfoElement.kt b/app/src/main/java/com/sloy/sevibus/feature/cards/CardInfoElement.kt index d04e2da8..57cf859e 100644 --- a/app/src/main/java/com/sloy/sevibus/feature/cards/CardInfoElement.kt +++ b/app/src/main/java/com/sloy/sevibus/feature/cards/CardInfoElement.kt @@ -105,7 +105,7 @@ private fun TitleSubtitleItem( @Preview @Composable -private fun CardInfoCardPreview() { +internal fun CardInfoCardPreview() { SevTheme { CardInfoElement(Stubs.cardWithAllFields, {}) } diff --git a/app/src/main/java/com/sloy/sevibus/feature/cards/CardTransactionsElement.kt b/app/src/main/java/com/sloy/sevibus/feature/cards/CardTransactionsElement.kt index 0ee63604..671422d2 100644 --- a/app/src/main/java/com/sloy/sevibus/feature/cards/CardTransactionsElement.kt +++ b/app/src/main/java/com/sloy/sevibus/feature/cards/CardTransactionsElement.kt @@ -183,7 +183,7 @@ private fun TopUpItem(transaction: CardTransaction.TopUp) { @Preview @Composable -private fun CardTransactionsCardPreview() { +internal fun CardTransactionsCardPreview() { ScreenPreview { CardTransactionsElement(Stubs.cardInfoTransactions) } @@ -191,7 +191,7 @@ private fun CardTransactionsCardPreview() { @Preview @Composable -private fun CardTransactionsLoadingPreview() { +internal fun CardTransactionsLoadingPreview() { ScreenPreview { CardTransactionsShimmer() } diff --git a/app/src/main/java/com/sloy/sevibus/feature/cards/CardsHelpScreen.kt b/app/src/main/java/com/sloy/sevibus/feature/cards/CardsHelpScreen.kt index 8209d0ba..0a465af3 100644 --- a/app/src/main/java/com/sloy/sevibus/feature/cards/CardsHelpScreen.kt +++ b/app/src/main/java/com/sloy/sevibus/feature/cards/CardsHelpScreen.kt @@ -139,7 +139,7 @@ private fun HtmlText( @Preview @Composable -private fun CardHelpPreview() { +internal fun CardHelpPreview() { ScreenPreview { CardsHelpScreen() } diff --git a/app/src/main/java/com/sloy/sevibus/feature/cards/CardsScreen.kt b/app/src/main/java/com/sloy/sevibus/feature/cards/CardsScreen.kt index 1d469fe7..b12a4817 100644 --- a/app/src/main/java/com/sloy/sevibus/feature/cards/CardsScreen.kt +++ b/app/src/main/java/com/sloy/sevibus/feature/cards/CardsScreen.kt @@ -749,9 +749,10 @@ private fun CardAddMoreItem(newCardState: CardsScreenNewCardState) { @Preview @Composable -private fun LoadedWithTransactionsPreview() { +internal fun LoadedWithTransactionsPreview() { ScreenPreview { - val cards = Stubs.cards + // Use only first 3 cards to avoid overwhelming the layoutlib renderer + val cards = Stubs.cards.take(3) val transactions: Map = cards.associate { it.serialNumber to TransactionsState.Loaded(Stubs.cardInfoTransactions) } CardsScreen( @@ -764,7 +765,7 @@ private fun LoadedWithTransactionsPreview() { @Preview @Composable -private fun LoadedWithTransactionsLoadingPreview() { +internal fun LoadedWithTransactionsLoadingPreview() { ScreenPreview { val cards = Stubs.cards val transactions = cards.associate { it.serialNumber to TransactionsState.Loading } @@ -778,7 +779,7 @@ private fun LoadedWithTransactionsLoadingPreview() { @Preview @Composable -private fun LoadedWithTransactionsEmptyPreview() { +internal fun LoadedWithTransactionsEmptyPreview() { ScreenPreview { val cards = Stubs.cards val transactions = cards.associate { it.serialNumber to TransactionsState.Empty } @@ -792,7 +793,7 @@ private fun LoadedWithTransactionsEmptyPreview() { @Preview @Composable -private fun LoadedWithTransactionsErrorPreview() { +internal fun LoadedWithTransactionsErrorPreview() { ScreenPreview { val cards = Stubs.cards val transactions = cards.associate { it.serialNumber to TransactionsState.Error(Exception("Preview error")) } @@ -806,7 +807,7 @@ private fun LoadedWithTransactionsErrorPreview() { @Preview @Composable -private fun LoadedPreview() { +internal fun LoadedPreview() { ScreenPreview { CardsScreen(CardsScreenState.Content(Stubs.cards.andTransactions()), CardsScreenNewCardState.InputForm(), NfcState.ENABLED) } @@ -814,7 +815,7 @@ private fun LoadedPreview() { @Preview @Composable -private fun ReorderingPreview() { +internal fun ReorderingPreview() { ScreenPreview { CardsScreen( CardsScreenState.Content(Stubs.cards.andTransactions(), isReordering = true), @@ -826,7 +827,7 @@ private fun ReorderingPreview() { @Preview @Composable -private fun LoadingPreview() { +internal fun LoadingPreview() { ScreenPreview { CardsScreen(CardsScreenState.Loading, CardsScreenNewCardState.InputForm(), NfcState.ENABLED) } @@ -834,7 +835,7 @@ private fun LoadingPreview() { @Preview @Composable -private fun EmptyNfcEnabledPreview() { +internal fun EmptyNfcEnabledPreview() { ScreenPreview { CardsScreen(CardsScreenState.Empty, CardsScreenNewCardState.InputForm(), NfcState.ENABLED) } @@ -842,7 +843,7 @@ private fun EmptyNfcEnabledPreview() { @Preview @Composable -private fun EmptyCheckingCardPreview() { +internal fun EmptyCheckingCardPreview() { ScreenPreview { CardsScreen( CardsScreenState.Empty, @@ -854,7 +855,7 @@ private fun EmptyCheckingCardPreview() { @Preview @Composable -private fun EmptyNfcDisabledPreview() { +internal fun EmptyNfcDisabledPreview() { ScreenPreview { CardsScreen(CardsScreenState.Empty, CardsScreenNewCardState.InputForm(), NfcState.DISABLED) } @@ -862,7 +863,7 @@ private fun EmptyNfcDisabledPreview() { @Preview @Composable -private fun ErrorPreview() { +internal fun ErrorPreview() { ScreenPreview { CardsScreen( CardsScreenState.Error(Exception("Preview error")), diff --git a/app/src/main/java/com/sloy/sevibus/feature/foryou/ForYouScreen.kt b/app/src/main/java/com/sloy/sevibus/feature/foryou/ForYouScreen.kt index d55ceff8..093f0e37 100644 --- a/app/src/main/java/com/sloy/sevibus/feature/foryou/ForYouScreen.kt +++ b/app/src/main/java/com/sloy/sevibus/feature/foryou/ForYouScreen.kt @@ -114,7 +114,7 @@ private fun SlidingContent( @Preview @Composable -private fun ForYouScreenPreview() { +internal fun ForYouScreenPreview() { ScreenPreview { ForYouScreen(0, {}, {}, {}, {}) } diff --git a/app/src/main/java/com/sloy/sevibus/feature/foryou/alert/AlertWidget.kt b/app/src/main/java/com/sloy/sevibus/feature/foryou/alert/AlertWidget.kt index 04f80879..6677f5eb 100644 --- a/app/src/main/java/com/sloy/sevibus/feature/foryou/alert/AlertWidget.kt +++ b/app/src/main/java/com/sloy/sevibus/feature/foryou/alert/AlertWidget.kt @@ -138,7 +138,7 @@ private fun AlertCard( @Preview @Composable -private fun AlertWidgetPreview() { +internal fun AlertWidgetPreview() { ScreenPreview { AlertWidget( state = AlertState.LowBalance(cardId = 123456L), diff --git a/app/src/main/java/com/sloy/sevibus/feature/foryou/favorites/FavoriteListItem.kt b/app/src/main/java/com/sloy/sevibus/feature/foryou/favorites/FavoriteListItem.kt index f7d2f17b..af2ab9a7 100644 --- a/app/src/main/java/com/sloy/sevibus/feature/foryou/favorites/FavoriteListItem.kt +++ b/app/src/main/java/com/sloy/sevibus/feature/foryou/favorites/FavoriteListItem.kt @@ -205,7 +205,7 @@ fun FavoriteListItemShimmer(modifier: Modifier = Modifier) { @Preview @Composable -private fun LoadedPreview() { +internal fun LoadedPreview() { SevTheme { Surface { Column(Modifier.padding(16.dp)) { @@ -213,7 +213,7 @@ private fun LoadedPreview() { FavoriteListItem( favorite = it, onStopClicked = {}, - arrivals = Stubs.arrivals.shuffled().take(5).sorted(), + arrivals = listOf(Stubs.arrivals[0], Stubs.arrivals[1], Stubs.arrivals[2], Stubs.arrivals[3], Stubs.arrivals[4]).sorted(), modifier = Modifier.padding(bottom = 4.dp), ) } @@ -224,7 +224,7 @@ private fun LoadedPreview() { @Preview @Composable -private fun LoadingArrivalsPreview() { +internal fun LoadingArrivalsPreview() { SevTheme { Surface { Column(Modifier.padding(16.dp)) { @@ -243,7 +243,7 @@ private fun LoadingArrivalsPreview() { @Preview(widthDp = 400) @Composable -private fun LoadingPreview() { +internal fun FavoriteListItemLoadingPreview() { SevTheme { Surface { Column { diff --git a/app/src/main/java/com/sloy/sevibus/feature/foryou/favorites/FavoritesWidget.kt b/app/src/main/java/com/sloy/sevibus/feature/foryou/favorites/FavoritesWidget.kt index 9487dfa3..6948bfa1 100644 --- a/app/src/main/java/com/sloy/sevibus/feature/foryou/favorites/FavoritesWidget.kt +++ b/app/src/main/java/com/sloy/sevibus/feature/foryou/favorites/FavoritesWidget.kt @@ -156,7 +156,7 @@ private fun EditButton(onClick: () -> Unit) { @Preview @Composable -private fun WithArrivalsPreview() { +internal fun WithArrivalsPreview() { ScreenPreview { FavoritesWidget(FavoritesListState.Content(Stubs.favorites.take(3)), false, {}, {}, {}) } @@ -164,7 +164,7 @@ private fun WithArrivalsPreview() { @Preview @Composable -private fun EmptyPreview() { +internal fun EmptyPreview() { ScreenPreview { FavoritesWidget(FavoritesListState.Content(emptyList()), false, {}, {}, {}) } @@ -172,7 +172,7 @@ private fun EmptyPreview() { @Preview @Composable -private fun NotLoggedPreview() { +internal fun NotLoggedPreview() { ScreenPreview { FavoritesWidget(FavoritesListState.NotLogged, false, {}, {}, {}) } @@ -180,7 +180,7 @@ private fun NotLoggedPreview() { @Preview @Composable -private fun LoadingPreview() { +internal fun FavoritesWidgetLoadingPreview() { ScreenPreview { FavoritesWidget(FavoritesListState.Loading, false, {}, {}, {}) } diff --git a/app/src/main/java/com/sloy/sevibus/feature/foryou/favorites/NearbyListItem.kt b/app/src/main/java/com/sloy/sevibus/feature/foryou/favorites/NearbyListItem.kt index b420e907..8256bcbb 100644 --- a/app/src/main/java/com/sloy/sevibus/feature/foryou/favorites/NearbyListItem.kt +++ b/app/src/main/java/com/sloy/sevibus/feature/foryou/favorites/NearbyListItem.kt @@ -205,14 +205,14 @@ private fun NearbyListItemShimmer(modifier: Modifier = Modifier) { @Preview @Composable -private fun LoadedPreview() { +internal fun LoadedPreview() { SevTheme { Column(Modifier.padding(16.dp)) { Stubs.nearby.forEach { NearbyListItem( nearby = it, onStopClicked = {}, - arrivals = Stubs.arrivals.shuffled().take(5).sorted(), + arrivals = listOf(Stubs.arrivals[0], Stubs.arrivals[1], Stubs.arrivals[2], Stubs.arrivals[3], Stubs.arrivals[4]).sorted(), modifier = Modifier.padding(bottom = 4.dp), ) } @@ -222,7 +222,7 @@ private fun LoadedPreview() { @Preview @Composable -private fun LoadingArrivalsPreview() { +internal fun LoadingArrivalsPreview() { SevTheme { Column(Modifier.padding(16.dp)) { Stubs.nearby.forEach { @@ -239,7 +239,7 @@ private fun LoadingArrivalsPreview() { @Preview(widthDp = 400) @Composable -private fun LoadingPreview() { +internal fun NearbyListItemLoadingPreview() { SevTheme { Column { NearbyListItemShimmer() diff --git a/app/src/main/java/com/sloy/sevibus/feature/foryou/favorites/edit/EditFavoritesScreen.kt b/app/src/main/java/com/sloy/sevibus/feature/foryou/favorites/edit/EditFavoritesScreen.kt index aab03df0..f10c92c0 100644 --- a/app/src/main/java/com/sloy/sevibus/feature/foryou/favorites/edit/EditFavoritesScreen.kt +++ b/app/src/main/java/com/sloy/sevibus/feature/foryou/favorites/edit/EditFavoritesScreen.kt @@ -467,7 +467,7 @@ private fun SelectableLineIndicator( @Preview(showSystemUi = true) @Composable -private fun Preview() { +internal fun Preview() { ScreenPreview { EditFavoritesScreen(EditFavoritesState(Stubs.favorites), SnackbarHostState(), {}, {}, {}) } @@ -475,7 +475,7 @@ private fun Preview() { @Preview(showBackground = true, widthDp = 350) @Composable -private fun FavoriteItemPreview() { +internal fun FavoriteItemPreview() { SevTheme { val reorderableLazyListState = rememberReorderableLazyListState(rememberLazyListState()) { _, _ -> } LazyColumn( diff --git a/app/src/main/java/com/sloy/sevibus/feature/foryou/nearby/NearbyWidget.kt b/app/src/main/java/com/sloy/sevibus/feature/foryou/nearby/NearbyWidget.kt index cf0cbb60..b236796a 100644 --- a/app/src/main/java/com/sloy/sevibus/feature/foryou/nearby/NearbyWidget.kt +++ b/app/src/main/java/com/sloy/sevibus/feature/foryou/nearby/NearbyWidget.kt @@ -150,7 +150,7 @@ private fun NearbyEmptyState(message: String) { @Preview @Composable -private fun WithArrivalsPreview() { +internal fun WithArrivalsPreview() { ScreenPreview { NearbyWidgetHasPermission(NearbyScreenState.Content(Stubs.nearby), {}) } @@ -158,7 +158,7 @@ private fun WithArrivalsPreview() { @Preview @Composable -private fun EmptyPreview() { +internal fun EmptyPreview() { ScreenPreview { NearbyWidgetHasPermission(NearbyScreenState.Content(emptyList()), {}) } @@ -166,7 +166,7 @@ private fun EmptyPreview() { @Preview @Composable -private fun LoadingPreview() { +internal fun NearbyWidgetLoadingPreview() { ScreenPreview { NearbyWidgetHasPermission(NearbyScreenState.Loading, {}) } @@ -174,7 +174,7 @@ private fun LoadingPreview() { @Preview @Composable -private fun NoPemissionPreview() { +internal fun NoPemissionPreview() { ScreenPreview { NearbyWidgetNoPermission({}) } diff --git a/app/src/main/java/com/sloy/sevibus/feature/lines/LinesScreen.kt b/app/src/main/java/com/sloy/sevibus/feature/lines/LinesScreen.kt index 0035e5b2..b7ff6430 100644 --- a/app/src/main/java/com/sloy/sevibus/feature/lines/LinesScreen.kt +++ b/app/src/main/java/com/sloy/sevibus/feature/lines/LinesScreen.kt @@ -114,7 +114,7 @@ private fun LineGroupTitle(lineGroup: String) { @Preview @Composable -private fun LinesScreenPreview() { +internal fun LinesScreenPreview() { ScreenPreview { LinesScreen(state = LinesScreenState.Content(Stubs.groupsOfLines), {}) } diff --git a/app/src/main/java/com/sloy/sevibus/feature/linestops/LineRouteScreen.kt b/app/src/main/java/com/sloy/sevibus/feature/linestops/LineRouteScreen.kt index 17a4ac1b..87b5c1cf 100644 --- a/app/src/main/java/com/sloy/sevibus/feature/linestops/LineRouteScreen.kt +++ b/app/src/main/java/com/sloy/sevibus/feature/linestops/LineRouteScreen.kt @@ -138,12 +138,12 @@ private fun RouteContent( @Preview @Composable -private fun PreviewWithRoutes() { +internal fun PreviewWithRoutes() { ScreenPreview { LineRouteScreen( state = LineRouteScreenState.Content.Full( line = Stubs.lines[0], - stops = Stubs.stops.shuffled(), + stops = Stubs.stops, selectedRoute = Stubs.lines[0].routes.first(), ), highlightedStopId = null, @@ -155,12 +155,12 @@ private fun PreviewWithRoutes() { @Preview @Composable -private fun PreviewWithoutRoutes() { +internal fun PreviewWithoutRoutes() { ScreenPreview { LineRouteScreen( state = LineRouteScreenState.Content.Full( line = Stubs.lines.first { it.routes.size == 1 }, - stops = Stubs.stops.shuffled(), + stops = Stubs.stops, selectedRoute = Stubs.lines[2].routes.first(), ), highlightedStopId = null, diff --git a/app/src/main/java/com/sloy/sevibus/feature/linestops/component/StopTimelineElement.kt b/app/src/main/java/com/sloy/sevibus/feature/linestops/component/StopTimelineElement.kt index 803d9ab2..9c2edce4 100644 --- a/app/src/main/java/com/sloy/sevibus/feature/linestops/component/StopTimelineElement.kt +++ b/app/src/main/java/com/sloy/sevibus/feature/linestops/component/StopTimelineElement.kt @@ -130,7 +130,7 @@ enum class HighlightPosition { @PreviewLightDark @Composable -private fun StopListItemPreview() { +internal fun StopListItemPreview() { SevTheme { Column( Modifier diff --git a/app/src/main/java/com/sloy/sevibus/feature/login/SettingsScreen.kt b/app/src/main/java/com/sloy/sevibus/feature/login/SettingsScreen.kt index 85709cae..90351159 100644 --- a/app/src/main/java/com/sloy/sevibus/feature/login/SettingsScreen.kt +++ b/app/src/main/java/com/sloy/sevibus/feature/login/SettingsScreen.kt @@ -484,7 +484,7 @@ private fun AccountContentLoggedIn(state: SettingsScreenState.LoggedIn, onLogout @Preview(showBackground = true, heightDp = 1200) @Composable -private fun LoggedInPreview() { +internal fun LoggedInPreview() { SevTheme { SettingsScreen( SettingsScreenState.LoggedIn(LoggedUser("x", "Bonifacio Ramírez Alcántara", "pepe@gmail.com", null)), @@ -498,7 +498,7 @@ private fun LoggedInPreview() { @Preview @Composable -private fun LoggedOutPreview() { +internal fun LoggedOutPreview() { ScreenPreview { SettingsScreen( SettingsScreenState.LoggedOut(isInProgress = false), @@ -512,7 +512,7 @@ private fun LoggedOutPreview() { @Preview @Composable -private fun LoggedOutProgressPreview() { +internal fun LoggedOutProgressPreview() { ScreenPreview { SettingsScreen( SettingsScreenState.LoggedOut(isInProgress = true), diff --git a/app/src/main/java/com/sloy/sevibus/feature/map/MapScreen.kt b/app/src/main/java/com/sloy/sevibus/feature/map/MapScreen.kt index 4ba6f314..b61df955 100644 --- a/app/src/main/java/com/sloy/sevibus/feature/map/MapScreen.kt +++ b/app/src/main/java/com/sloy/sevibus/feature/map/MapScreen.kt @@ -271,7 +271,7 @@ private fun DebugInfo( @OptIn(ExperimentalPermissionsApi::class) @Preview @Composable -private fun MapScreenPreview() { +internal fun MapScreenPreview() { ScreenPreview { val scope = rememberCoroutineScope() val density = androidx.compose.ui.platform.LocalDensity.current diff --git a/app/src/main/java/com/sloy/sevibus/feature/map/icons/BusIcon.kt b/app/src/main/java/com/sloy/sevibus/feature/map/icons/BusIcon.kt index 679fe358..040df927 100644 --- a/app/src/main/java/com/sloy/sevibus/feature/map/icons/BusIcon.kt +++ b/app/src/main/java/com/sloy/sevibus/feature/map/icons/BusIcon.kt @@ -73,7 +73,7 @@ private fun LineIndicatorChevron(line: LineSummary, modifier: Modifier = Modifie @Preview() @Composable -private fun Preview() { +internal fun Preview() { SevTheme { BusMapIcon(Stubs.lines.first().toSummary()) } diff --git a/app/src/main/java/com/sloy/sevibus/feature/map/icons/CircularStopIcon.kt b/app/src/main/java/com/sloy/sevibus/feature/map/icons/CircularStopIcon.kt index e3e0c44c..009dd22f 100644 --- a/app/src/main/java/com/sloy/sevibus/feature/map/icons/CircularStopIcon.kt +++ b/app/src/main/java/com/sloy/sevibus/feature/map/icons/CircularStopIcon.kt @@ -28,7 +28,7 @@ fun CircularStopIcon(stopColor: Color, iconSize: Dp) { @Preview(showBackground = true, backgroundColor = 0xFF00FFFF, name = "Light", uiMode = UI_MODE_NIGHT_NO) @Preview(showBackground = true, backgroundColor = 0xFF00FFFF, name = "Dark", uiMode = UI_MODE_NIGHT_YES or UI_MODE_TYPE_NORMAL) @Composable -private fun CircularStopIconPreview() { +internal fun CircularStopIconPreview() { SevTheme { CircularStopIcon(LineColor.Red.primary(), iconSize = 8.dp) } diff --git a/app/src/main/java/com/sloy/sevibus/feature/map/icons/OutlinedStopIcon.kt b/app/src/main/java/com/sloy/sevibus/feature/map/icons/OutlinedStopIcon.kt index ae112c4f..16bc23ea 100644 --- a/app/src/main/java/com/sloy/sevibus/feature/map/icons/OutlinedStopIcon.kt +++ b/app/src/main/java/com/sloy/sevibus/feature/map/icons/OutlinedStopIcon.kt @@ -76,7 +76,7 @@ fun OutlinedStopIcon(stopColor: Color, iconSize: Dp = 40.dp, shadow: Boolean = f @Preview(showBackground = true, backgroundColor = 0xFF00FFFF, name = "Light", uiMode = UI_MODE_NIGHT_NO) @Preview(showBackground = true, backgroundColor = 0xFF00FFFF, name = "Dark", uiMode = UI_MODE_NIGHT_YES or UI_MODE_TYPE_NORMAL) @Composable -private fun OutlinedStopIconPreview() { +internal fun OutlinedStopIconPreview() { Color.Blue SevTheme { OutlinedStopIcon(LineColor.Red.primary(), shadow = false) @@ -87,7 +87,7 @@ private fun OutlinedStopIconPreview() { @Preview(showBackground = true, backgroundColor = 0xFF00FFFF, name = "Light", uiMode = UI_MODE_NIGHT_NO) @Preview(showBackground = true, backgroundColor = 0xFF00FFFF, name = "Dark", uiMode = UI_MODE_NIGHT_YES or UI_MODE_TYPE_NORMAL) @Composable -private fun OutlinedStopIconShadowPreview() { +internal fun OutlinedStopIconShadowPreview() { SevTheme { OutlinedStopIcon(LineColor.Red.primary(), shadow = true) diff --git a/app/src/main/java/com/sloy/sevibus/feature/map/icons/ShapedStopIcon.kt b/app/src/main/java/com/sloy/sevibus/feature/map/icons/ShapedStopIcon.kt index e4a9b99f..ac2de556 100644 --- a/app/src/main/java/com/sloy/sevibus/feature/map/icons/ShapedStopIcon.kt +++ b/app/src/main/java/com/sloy/sevibus/feature/map/icons/ShapedStopIcon.kt @@ -50,7 +50,7 @@ fun ShapedStopIcon(stopColor: Color, iconSize: Dp) { @Preview(showBackground = true, backgroundColor = 0xFF00FFFF, name = "Light", uiMode = UI_MODE_NIGHT_NO) @Preview(showBackground = true, backgroundColor = 0xFF00FFFF, name = "Dark", uiMode = UI_MODE_NIGHT_YES) @Composable -private fun ShapedStopIconPreview() { +internal fun ShapedStopIconPreview() { SevTheme { ShapedStopIcon(LineColor.Red.primary(), 5 * 24.dp) } diff --git a/app/src/main/java/com/sloy/sevibus/feature/search/RoundedSearchBar.kt b/app/src/main/java/com/sloy/sevibus/feature/search/RoundedSearchBar.kt index d96b148b..fe87b87c 100644 --- a/app/src/main/java/com/sloy/sevibus/feature/search/RoundedSearchBar.kt +++ b/app/src/main/java/com/sloy/sevibus/feature/search/RoundedSearchBar.kt @@ -144,7 +144,7 @@ fun RoundedSearchBar( @PreviewLightDark() @Composable -private fun SearchPreviewLightDark() { +internal fun SearchPreviewLightDark() { SevTheme { RoundedSearchBar( state = TopBarState.Search("triana", true), @@ -157,7 +157,7 @@ private fun SearchPreviewLightDark() { @PreviewLightDark() @Composable -private fun SearchEmptyPreviewLightDark() { +internal fun SearchEmptyPreviewLightDark() { SevTheme { Column { RoundedSearchBar( @@ -179,10 +179,10 @@ private fun SearchEmptyPreviewLightDark() { @PreviewLightDark() @Composable -private fun SearchStopPreviewLightDark() { +internal fun SearchStopPreviewLightDark() { SevTheme { RoundedSearchBar( - state = TopBarState.StopSelected(Stubs.stops.random()), + state = TopBarState.StopSelected(Stubs.stops[0]), onSearchTermChanged = {}, onOpenSearchScreen = {}, onCancelClicked = {}, @@ -192,10 +192,10 @@ private fun SearchStopPreviewLightDark() { @PreviewLightDark() @Composable -private fun SearchLinePreviewLightDark() { +internal fun SearchLinePreviewLightDark() { SevTheme { RoundedSearchBar( - state = TopBarState.LineSelected(Stubs.lines.random()), + state = TopBarState.LineSelected(Stubs.lines[0]), onSearchTermChanged = {}, onOpenSearchScreen = {}, onCancelClicked = {}, diff --git a/app/src/main/java/com/sloy/sevibus/feature/search/SearchScreen.kt b/app/src/main/java/com/sloy/sevibus/feature/search/SearchScreen.kt index 529e3a9d..a9661f0c 100644 --- a/app/src/main/java/com/sloy/sevibus/feature/search/SearchScreen.kt +++ b/app/src/main/java/com/sloy/sevibus/feature/search/SearchScreen.kt @@ -175,7 +175,7 @@ private fun StopResultItem(stop: Stop, onStopClick: (Stop) -> Unit) { @Preview @Composable -private fun PreviewResults() { +internal fun PreviewResults() { ScreenPreview { SearchScreen(Stubs.searchResults, {}) } @@ -183,7 +183,7 @@ private fun PreviewResults() { @Preview @Composable -private fun PreviewEmpty() { +internal fun PreviewEmpty() { ScreenPreview { SearchScreen(emptyList(), {}) } diff --git a/app/src/main/java/com/sloy/sevibus/feature/stopdetail/StopDetailScreen.kt b/app/src/main/java/com/sloy/sevibus/feature/stopdetail/StopDetailScreen.kt index 69b0d183..a0fcada6 100644 --- a/app/src/main/java/com/sloy/sevibus/feature/stopdetail/StopDetailScreen.kt +++ b/app/src/main/java/com/sloy/sevibus/feature/stopdetail/StopDetailScreen.kt @@ -236,7 +236,7 @@ fun ArrivalsFailureBanner(throwable: Throwable) { @Preview @Composable -private fun LoadedArrivalsPreview() { +internal fun LoadedArrivalsPreview() { ScreenPreview { val arrivals = Stubs.arrivals StopDetailScreen( @@ -254,7 +254,7 @@ private fun LoadedArrivalsPreview() { @Preview @Composable -private fun LoadingArrivalsPreview() { +internal fun LoadingArrivalsPreview() { ScreenPreview { StopDetailScreen( StopDetailScreenState.Loaded(Stubs.stops[1], arrivalsState = ArrivalsState.Loading(Stubs.lines.take(3).map { it.toSummary() })), @@ -267,9 +267,9 @@ private fun LoadingArrivalsPreview() { @PreviewLightDark @Composable -private fun FailedArrivalsPreview() { +internal fun FailedArrivalsPreview() { ScreenPreview { - val failedArrivals = Stubs.lines.shuffled().take(3).map { BusArrival.NotAvailable(it.toSummary(), it.routes.first()) } + val failedArrivals = listOf(Stubs.lines[0], Stubs.lines[1], Stubs.lines[2]).map { BusArrival.NotAvailable(it.toSummary(), it.routes.first()) } StopDetailScreen( StopDetailScreenState.Loaded( Stubs.stops[1], @@ -284,7 +284,7 @@ private fun FailedArrivalsPreview() { @Preview @Composable -private fun LoadingStopPreview() { +internal fun LoadingStopPreview() { ScreenPreview { StopDetailScreen( StopDetailScreenState.Loading, @@ -297,7 +297,7 @@ private fun LoadingStopPreview() { @Preview @Composable -private fun FailedStopPreview() { +internal fun FailedStopPreview() { ScreenPreview { StopDetailScreen( StopDetailScreenState.Failed(IllegalStateException("Stop error")), diff --git a/app/src/main/java/com/sloy/sevibus/infrastructure/nightmode/NightModeSelectorBottomSheet.kt b/app/src/main/java/com/sloy/sevibus/infrastructure/nightmode/NightModeSelectorBottomSheet.kt index 65f08440..a1159913 100644 --- a/app/src/main/java/com/sloy/sevibus/infrastructure/nightmode/NightModeSelectorBottomSheet.kt +++ b/app/src/main/java/com/sloy/sevibus/infrastructure/nightmode/NightModeSelectorBottomSheet.kt @@ -71,7 +71,7 @@ fun NightModeSelectorBottomSheet( @Preview @Composable -private fun Preview() { +internal fun Preview() { SevTheme { NightModeSelectorBottomSheet( sheetState = rememberStandardBottomSheetState( diff --git a/app/src/main/java/com/sloy/sevibus/ui/components/AppUpdateButton.kt b/app/src/main/java/com/sloy/sevibus/ui/components/AppUpdateButton.kt index 8a2ab439..b6aa8b2d 100644 --- a/app/src/main/java/com/sloy/sevibus/ui/components/AppUpdateButton.kt +++ b/app/src/main/java/com/sloy/sevibus/ui/components/AppUpdateButton.kt @@ -191,7 +191,7 @@ private fun ReadyIcon() { @Preview @Composable -private fun AvailablePreview() { +internal fun AvailablePreview() { SevTheme { AppUpdateButton(AppUpdateButtonState.Available({}), Modifier.padding(8.dp)) } @@ -199,7 +199,7 @@ private fun AvailablePreview() { @Preview @Composable -private fun DownloadingZeroPreview() { +internal fun DownloadingZeroPreview() { SevTheme { AppUpdateButton(AppUpdateButtonState.Downloading(0L, 0L), Modifier.padding(8.dp)) } @@ -207,7 +207,7 @@ private fun DownloadingZeroPreview() { @Preview @Composable -private fun DownloadingPreview() { +internal fun DownloadingPreview() { SevTheme { AppUpdateButton(AppUpdateButtonState.Downloading(30L, 100L), Modifier.padding(8.dp)) } @@ -215,7 +215,7 @@ private fun DownloadingPreview() { @Preview @Composable -private fun ReadyPreview() { +internal fun ReadyPreview() { SevTheme { AppUpdateButton(AppUpdateButtonState.Ready({}), Modifier.padding(8.dp)) } diff --git a/app/src/main/java/com/sloy/sevibus/ui/components/ArrivalTimeElement.kt b/app/src/main/java/com/sloy/sevibus/ui/components/ArrivalTimeElement.kt index 183bc4d4..c9b80094 100644 --- a/app/src/main/java/com/sloy/sevibus/ui/components/ArrivalTimeElement.kt +++ b/app/src/main/java/com/sloy/sevibus/ui/components/ArrivalTimeElement.kt @@ -77,7 +77,7 @@ private fun BusArrival.toText() = when (this) { @Preview(showBackground = true) @Composable -private fun Preview() { +internal fun ArrivalTimeElementPreview() { SevTheme { Column( verticalArrangement = Arrangement.spacedBy(8.dp), diff --git a/app/src/main/java/com/sloy/sevibus/ui/components/BusArrivalListItem.kt b/app/src/main/java/com/sloy/sevibus/ui/components/BusArrivalListItem.kt index 509d4fab..ef3e698f 100644 --- a/app/src/main/java/com/sloy/sevibus/ui/components/BusArrivalListItem.kt +++ b/app/src/main/java/com/sloy/sevibus/ui/components/BusArrivalListItem.kt @@ -99,7 +99,7 @@ fun BusArrivalListItem(arrival: BusArrival, isHighlighted: Boolean, onClick: (Bu @Preview(showBackground = true) @Composable -private fun AvailablePreview() { +internal fun BusArrivalAvailablePreview() { SevTheme { Column( verticalArrangement = Arrangement.spacedBy(4.dp), modifier = Modifier @@ -113,7 +113,7 @@ private fun AvailablePreview() { @Preview(showBackground = true) @Composable -private fun LastBusPreview() { +internal fun BusArrivalLastBusPreview() { SevTheme { Column( verticalArrangement = Arrangement.spacedBy(4.dp), modifier = Modifier @@ -124,8 +124,8 @@ private fun LastBusPreview() { BusArrival.Available.Arriving( bus = 1, distance = 50, - line = Stubs.lines.random().toSummary(), - route = Stubs.routes.random(), + line = Stubs.lines[1].toSummary(), + route = Stubs.routes[0], isLastBus = true ), isHighlighted = false, {}) } @@ -134,7 +134,7 @@ private fun LastBusPreview() { @Preview(showBackground = true) @Composable -private fun HighlightedPreview() { +internal fun BusArrivalHighlightedPreview() { SevTheme { Column( verticalArrangement = Arrangement.spacedBy(4.dp), modifier = Modifier @@ -148,14 +148,14 @@ private fun HighlightedPreview() { @Preview(showBackground = true) @Composable -private fun NotAvailablePreview() { +internal fun BusArrivalNotAvailablePreview() { SevTheme { Column( verticalArrangement = Arrangement.spacedBy(4.dp), modifier = Modifier .background(Color.White) .padding(16.dp) ) { - BusArrivalListItem(BusArrival.NotAvailable(Stubs.lines.random().toSummary(), Stubs.routes.random()), isHighlighted = false, {}) + BusArrivalListItem(BusArrival.NotAvailable(Stubs.lines[2].toSummary(), Stubs.routes[1]), isHighlighted = false, {}) } } } @@ -163,7 +163,7 @@ private fun NotAvailablePreview() { @Preview(showBackground = true) @Composable -private fun LoadingWithLinePreview() { +internal fun BusArrivalLoadingWithLinePreview() { SevTheme { Column( verticalArrangement = Arrangement.spacedBy(4.dp), modifier = Modifier @@ -177,7 +177,7 @@ private fun LoadingWithLinePreview() { @Preview(showBackground = true) @Composable -private fun LoadingPreview() { +internal fun BusArrivalLoadingPreview() { SevTheme { Column( verticalArrangement = Arrangement.spacedBy(4.dp), modifier = Modifier diff --git a/app/src/main/java/com/sloy/sevibus/ui/components/CircularIconButton.kt b/app/src/main/java/com/sloy/sevibus/ui/components/CircularIconButton.kt index 8635d54f..e40879e6 100644 --- a/app/src/main/java/com/sloy/sevibus/ui/components/CircularIconButton.kt +++ b/app/src/main/java/com/sloy/sevibus/ui/components/CircularIconButton.kt @@ -47,7 +47,7 @@ fun CircularIconButton( @Preview @Composable -private fun Preview() { +internal fun CircularIconButtonPreview() { SevTheme { CircularIconButton( onClick = { }, diff --git a/app/src/main/java/com/sloy/sevibus/ui/components/FakeReviewDialog.kt b/app/src/main/java/com/sloy/sevibus/ui/components/FakeReviewDialog.kt index e4315419..3d240451 100644 --- a/app/src/main/java/com/sloy/sevibus/ui/components/FakeReviewDialog.kt +++ b/app/src/main/java/com/sloy/sevibus/ui/components/FakeReviewDialog.kt @@ -211,7 +211,7 @@ private fun StarsRating() { @Preview @Composable -private fun FakeReviewDialogContentPreview() { +internal fun FakeReviewDialogContentPreview() { SevTheme { // Now previewing the content directly FakeReviewDialogContent(onDismiss = {}) diff --git a/app/src/main/java/com/sloy/sevibus/ui/components/IconPicker.kt b/app/src/main/java/com/sloy/sevibus/ui/components/IconPicker.kt index 8fb1178e..4c3a9ad3 100644 --- a/app/src/main/java/com/sloy/sevibus/ui/components/IconPicker.kt +++ b/app/src/main/java/com/sloy/sevibus/ui/components/IconPicker.kt @@ -77,7 +77,7 @@ private fun IconPickerContent( @Preview(showBackground = true, widthDp = 250) @Composable -private fun IconPickerPreview() { +internal fun IconPickerPreview() { SevTheme { Surface( color = SevTheme.colorScheme.surface, @@ -93,7 +93,7 @@ private fun IconPickerPreview() { @Preview(showBackground = true, widthDp = 300, heightDp = 200) @Composable -private fun IconPickerInContextPreview() { +internal fun IconPickerInContextPreview() { SevTheme { Box( modifier = Modifier.padding(16.dp), diff --git a/app/src/main/java/com/sloy/sevibus/ui/components/InfoBannerComponent.kt b/app/src/main/java/com/sloy/sevibus/ui/components/InfoBannerComponent.kt index a53495d2..f47a886b 100644 --- a/app/src/main/java/com/sloy/sevibus/ui/components/InfoBannerComponent.kt +++ b/app/src/main/java/com/sloy/sevibus/ui/components/InfoBannerComponent.kt @@ -61,7 +61,7 @@ fun InfoBannerComponent( @PreviewLightDark @Composable -private fun TwoLinesPreview() { +internal fun InfoBannerTwoLinesPreview() { SevTheme { Surface { @@ -75,7 +75,7 @@ private fun TwoLinesPreview() { @PreviewLightDark @Composable -private fun TwoLinesActionPreview() { +internal fun InfoBannerTwoLinesActionPreview() { SevTheme { Surface { InfoBannerComponent( @@ -89,7 +89,7 @@ private fun TwoLinesActionPreview() { @Preview @Composable -private fun OneLinePreview() { +internal fun InfoBannerOneLinePreview() { SevTheme { InfoBannerComponent( "Selecciona la parada de destino.", @@ -100,7 +100,7 @@ private fun OneLinePreview() { @Preview @Composable -private fun OneLineActionPreview() { +internal fun InfoBannerOneLineActionPreview() { SevTheme { InfoBannerComponent( "Selecciona la parada de destino.", diff --git a/app/src/main/java/com/sloy/sevibus/ui/components/LineIndicator.kt b/app/src/main/java/com/sloy/sevibus/ui/components/LineIndicator.kt index 20a2a7a3..e345184a 100644 --- a/app/src/main/java/com/sloy/sevibus/ui/components/LineIndicator.kt +++ b/app/src/main/java/com/sloy/sevibus/ui/components/LineIndicator.kt @@ -50,7 +50,7 @@ fun LineIndicator(line: LineSummary, modifier: Modifier = Modifier) { @OptIn(ExperimentalLayoutApi::class) @Preview @Composable -private fun Preview() { +internal fun LineIndicatorPreview() { SevTheme { Surface { FlowRow( diff --git a/app/src/main/java/com/sloy/sevibus/ui/components/RouteTabsSelector.kt b/app/src/main/java/com/sloy/sevibus/ui/components/RouteTabsSelector.kt index 555d92ac..e3bc8e9a 100644 --- a/app/src/main/java/com/sloy/sevibus/ui/components/RouteTabsSelector.kt +++ b/app/src/main/java/com/sloy/sevibus/ui/components/RouteTabsSelector.kt @@ -65,7 +65,7 @@ private fun RouteTab(directionValue: String, isSelected: Boolean, onRouteClicked @Preview(showBackground = true) @Composable -private fun Preview() { +internal fun RouteTabsSelectorPreview() { ScreenPreview { Column { diff --git a/app/src/main/java/com/sloy/sevibus/ui/components/SegmentedControl.kt b/app/src/main/java/com/sloy/sevibus/ui/components/SegmentedControl.kt index 7dd0f69a..e7c22cf2 100644 --- a/app/src/main/java/com/sloy/sevibus/ui/components/SegmentedControl.kt +++ b/app/src/main/java/com/sloy/sevibus/ui/components/SegmentedControl.kt @@ -90,7 +90,7 @@ fun SegmentedControl(options: List, selectedIndex: Int, modifier: Modifi @Preview @Composable -private fun Preview() { +internal fun SegmentedControlPreview() { SevTheme { SegmentedControl(options = listOf("First", "Second", "Third"), selectedIndex = 0) } diff --git a/app/src/main/java/com/sloy/sevibus/ui/components/SevNavigationBar.kt b/app/src/main/java/com/sloy/sevibus/ui/components/SevNavigationBar.kt index 61f5932d..07a2d24c 100644 --- a/app/src/main/java/com/sloy/sevibus/ui/components/SevNavigationBar.kt +++ b/app/src/main/java/com/sloy/sevibus/ui/components/SevNavigationBar.kt @@ -56,7 +56,7 @@ fun SevNavigationBar( @Preview @Composable -private fun SevNavigationBarPreview() { +internal fun SevNavigationBarPreview() { SevTheme { SevNavigationBar( listOf( diff --git a/app/src/main/java/com/sloy/sevibus/ui/components/StopCardElement.kt b/app/src/main/java/com/sloy/sevibus/ui/components/StopCardElement.kt index f4a1a440..d45aeb48 100644 --- a/app/src/main/java/com/sloy/sevibus/ui/components/StopCardElement.kt +++ b/app/src/main/java/com/sloy/sevibus/ui/components/StopCardElement.kt @@ -64,7 +64,7 @@ private fun SupportingLines(lines: List) { @Preview(showBackground = true) @Composable -private fun SingleLinePreview() { +internal fun SingleLinePreview() { SevTheme { StopCardElement(Stubs.stops[0], false, {}) } @@ -72,7 +72,7 @@ private fun SingleLinePreview() { @Preview(showBackground = true) @Composable -private fun DoubleLinePreview() { +internal fun DoubleLinePreview() { SevTheme { StopCardElement(Stubs.stops[1], false, {}) } @@ -80,7 +80,7 @@ private fun DoubleLinePreview() { @Preview(showBackground = true) @Composable -private fun HighlightedPreview() { +internal fun HighlightedPreview() { SevTheme { StopCardElement(Stubs.stops.first(), true, {}) } diff --git a/app/src/main/java/com/sloy/sevibus/ui/components/SurfaceButton.kt b/app/src/main/java/com/sloy/sevibus/ui/components/SurfaceButton.kt index 337cbfc2..e407e8bb 100644 --- a/app/src/main/java/com/sloy/sevibus/ui/components/SurfaceButton.kt +++ b/app/src/main/java/com/sloy/sevibus/ui/components/SurfaceButton.kt @@ -87,7 +87,7 @@ fun SmallSurfaceButton(text: String, onClick: () -> Unit, modifier: Modifier = M @Preview(showBackground = true) @Composable -private fun TextPreview() { +internal fun TextPreview() { SevTheme { Box(Modifier.padding(16.dp)) { SurfaceButton("Hello world", {}) @@ -98,7 +98,7 @@ private fun TextPreview() { @Preview(showBackground = true) @Composable -private fun IconPreview() { +internal fun IconPreview() { SevTheme { Box(Modifier.padding(16.dp)) { SurfaceButton("Hello world", {}, icon = { @@ -116,7 +116,7 @@ private fun IconPreview() { @Preview(showBackground = true) @Composable -private fun SmallIconPreview() { +internal fun SmallIconPreview() { SevTheme { Box(Modifier.padding(16.dp)) { SmallSurfaceButton("Hello world", {}, icon = { diff --git a/app/src/main/java/com/sloy/sevibus/ui/icons/Star.kt b/app/src/main/java/com/sloy/sevibus/ui/icons/Star.kt index c83a34e8..bb3bab08 100644 --- a/app/src/main/java/com/sloy/sevibus/ui/icons/Star.kt +++ b/app/src/main/java/com/sloy/sevibus/ui/icons/Star.kt @@ -73,7 +73,7 @@ private var _star: ImageVector? = null @Preview @Composable -private fun Preview() { +internal fun Preview() { Box(modifier = Modifier.padding(12.dp)) { Image(imageVector = SevIcons.Star, contentDescription = "") } diff --git a/app/src/screenshotTest/AndroidManifest.xml b/app/src/screenshotTest/AndroidManifest.xml new file mode 100644 index 00000000..c073e7a9 --- /dev/null +++ b/app/src/screenshotTest/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + + diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/AppLayoutPlaygroundScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/AppLayoutPlaygroundScreenshotTests.kt new file mode 100644 index 00000000..91a0181a --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/AppLayoutPlaygroundScreenshotTests.kt @@ -0,0 +1,19 @@ +package com.sloy.sevibus + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for AppLayoutPlayground. + * These tests reference preview functions defined in the main source set. + */ +class AppLayoutPlaygroundScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun preview() { + Preview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/AppScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/AppScreenshotTests.kt new file mode 100644 index 00000000..b92a7e95 --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/AppScreenshotTests.kt @@ -0,0 +1,26 @@ +package com.sloy.sevibus + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for App. + * These tests reference preview functions defined in the main source set. + */ +class AppScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun appPreviewBottomSheet() { + AppPreviewBottomSheet() + } + + @Preview + @PreviewTest + @Composable + fun appPreviewFullScreen() { + AppPreviewFullScreen() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/cards/CardBalanceItemScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/cards/CardBalanceItemScreenshotTests.kt new file mode 100644 index 00000000..29cd2c47 --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/cards/CardBalanceItemScreenshotTests.kt @@ -0,0 +1,19 @@ +package com.sloy.sevibus.feature.cards + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for CardBalanceItem. + * These tests reference preview functions defined in the main source set. + */ +class CardBalanceItemScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun cardBalanceItemPreview() { + CardBalanceItemPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/cards/CardInfoElementScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/cards/CardInfoElementScreenshotTests.kt new file mode 100644 index 00000000..bdd5ff43 --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/cards/CardInfoElementScreenshotTests.kt @@ -0,0 +1,19 @@ +package com.sloy.sevibus.feature.cards + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for CardInfoElement. + * These tests reference preview functions defined in the main source set. + */ +class CardInfoElementScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun cardInfoCardPreview() { + CardInfoCardPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/cards/CardTransactionsElementScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/cards/CardTransactionsElementScreenshotTests.kt new file mode 100644 index 00000000..0738d2b5 --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/cards/CardTransactionsElementScreenshotTests.kt @@ -0,0 +1,26 @@ +package com.sloy.sevibus.feature.cards + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for CardTransactionsElement. + * These tests reference preview functions defined in the main source set. + */ +class CardTransactionsElementScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun cardTransactionsCardPreview() { + CardTransactionsCardPreview() + } + + @Preview + @PreviewTest + @Composable + fun cardTransactionsLoadingPreview() { + CardTransactionsLoadingPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/cards/CardsHelpScreenScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/cards/CardsHelpScreenScreenshotTests.kt new file mode 100644 index 00000000..6ba8676f --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/cards/CardsHelpScreenScreenshotTests.kt @@ -0,0 +1,19 @@ +package com.sloy.sevibus.feature.cards + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for CardsHelpScreen. + * These tests reference preview functions defined in the main source set. + */ +class CardsHelpScreenScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun cardHelpPreview() { + CardHelpPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests.kt new file mode 100644 index 00000000..4c99cef5 --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests.kt @@ -0,0 +1,89 @@ +package com.sloy.sevibus.feature.cards + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for CardsScreen. + * These tests reference preview functions defined in the main source set. + */ +class CardsScreenScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun loadedWithTransactionsPreview() { + LoadedWithTransactionsPreview() + } + + @Preview + @PreviewTest + @Composable + fun loadedWithTransactionsLoadingPreview() { + LoadedWithTransactionsLoadingPreview() + } + + @Preview + @PreviewTest + @Composable + fun loadedWithTransactionsEmptyPreview() { + LoadedWithTransactionsEmptyPreview() + } + + @Preview + @PreviewTest + @Composable + fun loadedWithTransactionsErrorPreview() { + LoadedWithTransactionsErrorPreview() + } + + @Preview + @PreviewTest + @Composable + fun loadedPreview() { + LoadedPreview() + } + + @Preview + @PreviewTest + @Composable + fun reorderingPreview() { + ReorderingPreview() + } + + @Preview + @PreviewTest + @Composable + fun loadingPreview() { + LoadingPreview() + } + + @Preview + @PreviewTest + @Composable + fun emptyNfcEnabledPreview() { + EmptyNfcEnabledPreview() + } + + @Preview + @PreviewTest + @Composable + fun emptyCheckingCardPreview() { + EmptyCheckingCardPreview() + } + + @Preview + @PreviewTest + @Composable + fun emptyNfcDisabledPreview() { + EmptyNfcDisabledPreview() + } + + @Preview + @PreviewTest + @Composable + fun errorPreview() { + ErrorPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/foryou/ForYouScreenScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/foryou/ForYouScreenScreenshotTests.kt new file mode 100644 index 00000000..f9a00080 --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/foryou/ForYouScreenScreenshotTests.kt @@ -0,0 +1,19 @@ +package com.sloy.sevibus.feature.foryou + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for ForYouScreen. + * These tests reference preview functions defined in the main source set. + */ +class ForYouScreenScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun forYouScreenPreview() { + ForYouScreenPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/foryou/alert/AlertWidgetScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/foryou/alert/AlertWidgetScreenshotTests.kt new file mode 100644 index 00000000..d9dfd90e --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/foryou/alert/AlertWidgetScreenshotTests.kt @@ -0,0 +1,19 @@ +package com.sloy.sevibus.feature.foryou.alert + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for AlertWidget. + * These tests reference preview functions defined in the main source set. + */ +class AlertWidgetScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun alertWidgetPreview() { + AlertWidgetPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/foryou/favorites/FavoriteListItemScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/foryou/favorites/FavoriteListItemScreenshotTests.kt new file mode 100644 index 00000000..1060ad08 --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/foryou/favorites/FavoriteListItemScreenshotTests.kt @@ -0,0 +1,33 @@ +package com.sloy.sevibus.feature.foryou.favorites + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for FavoriteListItem. + * These tests reference preview functions defined in the main source set. + */ +class FavoriteListItemScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun loadedPreview() { + LoadedPreview() + } + + @Preview + @PreviewTest + @Composable + fun loadingArrivalsPreview() { + LoadingArrivalsPreview() + } + + @Preview + @PreviewTest + @Composable + fun favoriteListItemLoadingPreview() { + FavoriteListItemLoadingPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/foryou/favorites/FavoritesWidgetScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/foryou/favorites/FavoritesWidgetScreenshotTests.kt new file mode 100644 index 00000000..631a9cc3 --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/foryou/favorites/FavoritesWidgetScreenshotTests.kt @@ -0,0 +1,40 @@ +package com.sloy.sevibus.feature.foryou.favorites + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for FavoritesWidget. + * These tests reference preview functions defined in the main source set. + */ +class FavoritesWidgetScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun withArrivalsPreview() { + WithArrivalsPreview() + } + + @Preview + @PreviewTest + @Composable + fun emptyPreview() { + EmptyPreview() + } + + @Preview + @PreviewTest + @Composable + fun notLoggedPreview() { + NotLoggedPreview() + } + + @Preview + @PreviewTest + @Composable + fun favoritesWidgetLoadingPreview() { + FavoritesWidgetLoadingPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/foryou/favorites/edit/EditFavoritesScreenScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/foryou/favorites/edit/EditFavoritesScreenScreenshotTests.kt new file mode 100644 index 00000000..3f37e1a7 --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/foryou/favorites/edit/EditFavoritesScreenScreenshotTests.kt @@ -0,0 +1,26 @@ +package com.sloy.sevibus.feature.foryou.favorites.edit + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for EditFavoritesScreen. + * These tests reference preview functions defined in the main source set. + */ +class EditFavoritesScreenScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun preview() { + Preview() + } + + @Preview + @PreviewTest + @Composable + fun favoriteItemPreview() { + FavoriteItemPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/foryou/nearby/NearbyListItemScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/foryou/nearby/NearbyListItemScreenshotTests.kt new file mode 100644 index 00000000..a4adc3ca --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/foryou/nearby/NearbyListItemScreenshotTests.kt @@ -0,0 +1,33 @@ +package com.sloy.sevibus.feature.foryou.nearby + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for NearbyListItem. + * These tests reference preview functions defined in the main source set. + */ +class NearbyListItemScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun loadedPreview() { + LoadedPreview() + } + + @Preview + @PreviewTest + @Composable + fun loadingArrivalsPreview() { + LoadingArrivalsPreview() + } + + @Preview + @PreviewTest + @Composable + fun nearbyListItemLoadingPreview() { + NearbyListItemLoadingPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/foryou/nearby/NearbyWidgetScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/foryou/nearby/NearbyWidgetScreenshotTests.kt new file mode 100644 index 00000000..b81f73c3 --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/foryou/nearby/NearbyWidgetScreenshotTests.kt @@ -0,0 +1,40 @@ +package com.sloy.sevibus.feature.foryou.nearby + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for NearbyWidget. + * These tests reference preview functions defined in the main source set. + */ +class NearbyWidgetScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun withArrivalsPreview() { + WithArrivalsPreview() + } + + @Preview + @PreviewTest + @Composable + fun emptyPreview() { + EmptyPreview() + } + + @Preview + @PreviewTest + @Composable + fun nearbyWidgetLoadingPreview() { + NearbyWidgetLoadingPreview() + } + + @Preview + @PreviewTest + @Composable + fun noPemissionPreview() { + NoPemissionPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/lines/LinesScreenScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/lines/LinesScreenScreenshotTests.kt new file mode 100644 index 00000000..4bf0c7e4 --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/lines/LinesScreenScreenshotTests.kt @@ -0,0 +1,19 @@ +package com.sloy.sevibus.feature.lines + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for LinesScreen. + * These tests reference preview functions defined in the main source set. + */ +class LinesScreenScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun linesScreenPreview() { + LinesScreenPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/linestops/LineRouteScreenScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/linestops/LineRouteScreenScreenshotTests.kt new file mode 100644 index 00000000..dc42e879 --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/linestops/LineRouteScreenScreenshotTests.kt @@ -0,0 +1,26 @@ +package com.sloy.sevibus.feature.linestops + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for LineRouteScreen. + * These tests reference preview functions defined in the main source set. + */ +class LineRouteScreenScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun previewWithRoutes() { + PreviewWithRoutes() + } + + @Preview + @PreviewTest + @Composable + fun previewWithoutRoutes() { + PreviewWithoutRoutes() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/linestops/component/StopTimelineElementScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/linestops/component/StopTimelineElementScreenshotTests.kt new file mode 100644 index 00000000..45af76d7 --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/linestops/component/StopTimelineElementScreenshotTests.kt @@ -0,0 +1,19 @@ +package com.sloy.sevibus.feature.linestops.component + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for StopTimelineElement. + * These tests reference preview functions defined in the main source set. + */ +class StopTimelineElementScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun stopListItemPreview() { + StopListItemPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/login/SettingsScreenScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/login/SettingsScreenScreenshotTests.kt new file mode 100644 index 00000000..235dbf9c --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/login/SettingsScreenScreenshotTests.kt @@ -0,0 +1,33 @@ +package com.sloy.sevibus.feature.login + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for SettingsScreen. + * These tests reference preview functions defined in the main source set. + */ +class SettingsScreenScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun loggedInPreview() { + LoggedInPreview() + } + + @Preview + @PreviewTest + @Composable + fun loggedOutPreview() { + LoggedOutPreview() + } + + @Preview + @PreviewTest + @Composable + fun loggedOutProgressPreview() { + LoggedOutProgressPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/map/MapScreenScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/map/MapScreenScreenshotTests.kt new file mode 100644 index 00000000..ae744a07 --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/map/MapScreenScreenshotTests.kt @@ -0,0 +1,19 @@ +package com.sloy.sevibus.feature.map + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for MapScreen. + * These tests reference preview functions defined in the main source set. + */ +class MapScreenScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun mapScreenPreview() { + MapScreenPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/map/icons/BusIconScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/map/icons/BusIconScreenshotTests.kt new file mode 100644 index 00000000..ac2d32fb --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/map/icons/BusIconScreenshotTests.kt @@ -0,0 +1,19 @@ +package com.sloy.sevibus.feature.map.icons + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for BusIcon. + * These tests reference preview functions defined in the main source set. + */ +class BusIconScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun preview() { + Preview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/map/icons/CircularStopIconScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/map/icons/CircularStopIconScreenshotTests.kt new file mode 100644 index 00000000..9a20346a --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/map/icons/CircularStopIconScreenshotTests.kt @@ -0,0 +1,19 @@ +package com.sloy.sevibus.feature.map.icons + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for CircularStopIcon. + * These tests reference preview functions defined in the main source set. + */ +class CircularStopIconScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun circularStopIconPreview() { + CircularStopIconPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/map/icons/OutlinedStopIconScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/map/icons/OutlinedStopIconScreenshotTests.kt new file mode 100644 index 00000000..3bf3a58b --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/map/icons/OutlinedStopIconScreenshotTests.kt @@ -0,0 +1,26 @@ +package com.sloy.sevibus.feature.map.icons + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for OutlinedStopIcon. + * These tests reference preview functions defined in the main source set. + */ +class OutlinedStopIconScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun outlinedStopIconPreview() { + OutlinedStopIconPreview() + } + + @Preview + @PreviewTest + @Composable + fun outlinedStopIconShadowPreview() { + OutlinedStopIconShadowPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/map/icons/ShapedStopIconScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/map/icons/ShapedStopIconScreenshotTests.kt new file mode 100644 index 00000000..55b35b9a --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/map/icons/ShapedStopIconScreenshotTests.kt @@ -0,0 +1,19 @@ +package com.sloy.sevibus.feature.map.icons + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for ShapedStopIcon. + * These tests reference preview functions defined in the main source set. + */ +class ShapedStopIconScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun shapedStopIconPreview() { + ShapedStopIconPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/search/RoundedSearchBarScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/search/RoundedSearchBarScreenshotTests.kt new file mode 100644 index 00000000..049f00cf --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/search/RoundedSearchBarScreenshotTests.kt @@ -0,0 +1,40 @@ +package com.sloy.sevibus.feature.search + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for RoundedSearchBar. + * These tests reference preview functions defined in the main source set. + */ +class RoundedSearchBarScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun searchPreviewLightDark() { + SearchPreviewLightDark() + } + + @Preview + @PreviewTest + @Composable + fun searchEmptyPreviewLightDark() { + SearchEmptyPreviewLightDark() + } + + @Preview + @PreviewTest + @Composable + fun searchStopPreviewLightDark() { + SearchStopPreviewLightDark() + } + + @Preview + @PreviewTest + @Composable + fun searchLinePreviewLightDark() { + SearchLinePreviewLightDark() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/search/SearchScreenScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/search/SearchScreenScreenshotTests.kt new file mode 100644 index 00000000..a635cdcb --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/search/SearchScreenScreenshotTests.kt @@ -0,0 +1,26 @@ +package com.sloy.sevibus.feature.search + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for SearchScreen. + * These tests reference preview functions defined in the main source set. + */ +class SearchScreenScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun previewResults() { + PreviewResults() + } + + @Preview + @PreviewTest + @Composable + fun previewEmpty() { + PreviewEmpty() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/stopdetail/StopDetailScreenScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/stopdetail/StopDetailScreenScreenshotTests.kt new file mode 100644 index 00000000..0661e79e --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/feature/stopdetail/StopDetailScreenScreenshotTests.kt @@ -0,0 +1,47 @@ +package com.sloy.sevibus.feature.stopdetail + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for StopDetailScreen. + * These tests reference preview functions defined in the main source set. + */ +class StopDetailScreenScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun loadedArrivalsPreview() { + LoadedArrivalsPreview() + } + + @Preview + @PreviewTest + @Composable + fun loadingArrivalsPreview() { + LoadingArrivalsPreview() + } + + @Preview + @PreviewTest + @Composable + fun failedArrivalsPreview() { + FailedArrivalsPreview() + } + + @Preview + @PreviewTest + @Composable + fun loadingStopPreview() { + LoadingStopPreview() + } + + @Preview + @PreviewTest + @Composable + fun failedStopPreview() { + FailedStopPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/infrastructure/nightmode/NightModeSelectorBottomSheetScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/infrastructure/nightmode/NightModeSelectorBottomSheetScreenshotTests.kt new file mode 100644 index 00000000..378bff45 --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/infrastructure/nightmode/NightModeSelectorBottomSheetScreenshotTests.kt @@ -0,0 +1,19 @@ +package com.sloy.sevibus.infrastructure.nightmode + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for NightModeSelectorBottomSheet. + * These tests reference preview functions defined in the main source set. + */ +class NightModeSelectorBottomSheetScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun preview() { + Preview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/AppUpdateButtonScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/AppUpdateButtonScreenshotTests.kt new file mode 100644 index 00000000..2337523b --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/AppUpdateButtonScreenshotTests.kt @@ -0,0 +1,40 @@ +package com.sloy.sevibus.ui.components + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for AppUpdateButton. + * These tests reference preview functions defined in the main source set. + */ +class AppUpdateButtonScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun availablePreview() { + AvailablePreview() + } + + @Preview + @PreviewTest + @Composable + fun downloadingZeroPreview() { + DownloadingZeroPreview() + } + + @Preview + @PreviewTest + @Composable + fun downloadingPreview() { + DownloadingPreview() + } + + @Preview + @PreviewTest + @Composable + fun readyPreview() { + ReadyPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/ArrivalTimeElementScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/ArrivalTimeElementScreenshotTests.kt new file mode 100644 index 00000000..4a21956f --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/ArrivalTimeElementScreenshotTests.kt @@ -0,0 +1,19 @@ +package com.sloy.sevibus.ui.components + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for ArrivalTimeElement. + * These tests reference preview functions defined in the main source set. + */ +class ArrivalTimeElementScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun arrivalTimeElementPreview() { + ArrivalTimeElementPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/BusArrivalListItemScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/BusArrivalListItemScreenshotTests.kt new file mode 100644 index 00000000..8ff66fbd --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/BusArrivalListItemScreenshotTests.kt @@ -0,0 +1,54 @@ +package com.sloy.sevibus.ui.components + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for BusArrivalListItem component. + * These tests reference preview functions defined in the main source set. + */ +class BusArrivalListItemScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun availablePreview() { + BusArrivalAvailablePreview() + } + + @Preview + @PreviewTest + @Composable + fun lastBusPreview() { + BusArrivalLastBusPreview() + } + + @Preview + @PreviewTest + @Composable + fun highlightedPreview() { + BusArrivalHighlightedPreview() + } + + @Preview + @PreviewTest + @Composable + fun notAvailablePreview() { + BusArrivalNotAvailablePreview() + } + + @Preview + @PreviewTest + @Composable + fun loadingWithLinePreview() { + BusArrivalLoadingWithLinePreview() + } + + @Preview + @PreviewTest + @Composable + fun loadingPreview() { + BusArrivalLoadingPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/CircularIconButtonScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/CircularIconButtonScreenshotTests.kt new file mode 100644 index 00000000..e2a1e967 --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/CircularIconButtonScreenshotTests.kt @@ -0,0 +1,19 @@ +package com.sloy.sevibus.ui.components + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for CircularIconButton. + * These tests reference preview functions defined in the main source set. + */ +class CircularIconButtonScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun circularIconButtonPreview() { + CircularIconButtonPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/FakeReviewDialogScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/FakeReviewDialogScreenshotTests.kt new file mode 100644 index 00000000..40b0e132 --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/FakeReviewDialogScreenshotTests.kt @@ -0,0 +1,19 @@ +package com.sloy.sevibus.ui.components + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for FakeReviewDialog. + * These tests reference preview functions defined in the main source set. + */ +class FakeReviewDialogScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun fakeReviewDialogContentPreview() { + FakeReviewDialogContentPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/IconPickerScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/IconPickerScreenshotTests.kt new file mode 100644 index 00000000..ade01dc4 --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/IconPickerScreenshotTests.kt @@ -0,0 +1,26 @@ +package com.sloy.sevibus.ui.components + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for IconPicker. + * These tests reference preview functions defined in the main source set. + */ +class IconPickerScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun iconPickerPreview() { + IconPickerPreview() + } + + @Preview + @PreviewTest + @Composable + fun iconPickerInContextPreview() { + IconPickerInContextPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/InfoBannerComponentScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/InfoBannerComponentScreenshotTests.kt new file mode 100644 index 00000000..3c708629 --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/InfoBannerComponentScreenshotTests.kt @@ -0,0 +1,40 @@ +package com.sloy.sevibus.ui.components + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for InfoBannerComponent. + * These tests reference preview functions defined in the main source set. + */ +class InfoBannerComponentScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun twoLinesPreview() { + InfoBannerTwoLinesPreview() + } + + @Preview + @PreviewTest + @Composable + fun twoLinesActionPreview() { + InfoBannerTwoLinesActionPreview() + } + + @Preview + @PreviewTest + @Composable + fun oneLinePreview() { + InfoBannerOneLinePreview() + } + + @Preview + @PreviewTest + @Composable + fun oneLineActionPreview() { + InfoBannerOneLineActionPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/LineElementScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/LineElementScreenshotTests.kt new file mode 100644 index 00000000..b82f46d3 --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/LineElementScreenshotTests.kt @@ -0,0 +1,19 @@ +package com.sloy.sevibus.ui.components + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for LineElement. + * These tests reference preview functions defined in the main source set. + */ +class LineElementScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun lineElementPreview() { + LineElementPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/LineIndicatorScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/LineIndicatorScreenshotTests.kt new file mode 100644 index 00000000..58d2406b --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/LineIndicatorScreenshotTests.kt @@ -0,0 +1,19 @@ +package com.sloy.sevibus.ui.components + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for LineIndicator component. + * These tests reference preview functions defined in the main source set. + */ +class LineIndicatorScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun lineIndicatorPreview() { + LineIndicatorPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/RouteTabsSelectorScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/RouteTabsSelectorScreenshotTests.kt new file mode 100644 index 00000000..edf695ce --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/RouteTabsSelectorScreenshotTests.kt @@ -0,0 +1,19 @@ +package com.sloy.sevibus.ui.components + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for RouteTabsSelector. + * These tests reference preview functions defined in the main source set. + */ +class RouteTabsSelectorScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun routeTabsSelectorPreview() { + RouteTabsSelectorPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/SegmentedControlScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/SegmentedControlScreenshotTests.kt new file mode 100644 index 00000000..e136b32c --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/SegmentedControlScreenshotTests.kt @@ -0,0 +1,19 @@ +package com.sloy.sevibus.ui.components + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for SegmentedControl. + * These tests reference preview functions defined in the main source set. + */ +class SegmentedControlScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun segmentedControlPreview() { + SegmentedControlPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/SevNavigationBarScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/SevNavigationBarScreenshotTests.kt new file mode 100644 index 00000000..3c681eef --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/SevNavigationBarScreenshotTests.kt @@ -0,0 +1,19 @@ +package com.sloy.sevibus.ui.components + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for SevNavigationBar. + * These tests reference preview functions defined in the main source set. + */ +class SevNavigationBarScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun sevNavigationBarPreview() { + SevNavigationBarPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/StopCardElementScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/StopCardElementScreenshotTests.kt new file mode 100644 index 00000000..a9a435fb --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/StopCardElementScreenshotTests.kt @@ -0,0 +1,33 @@ +package com.sloy.sevibus.ui.components + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for StopCardElement. + * These tests reference preview functions defined in the main source set. + */ +class StopCardElementScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun singleLinePreview() { + SingleLinePreview() + } + + @Preview + @PreviewTest + @Composable + fun doubleLinePreview() { + DoubleLinePreview() + } + + @Preview + @PreviewTest + @Composable + fun highlightedPreview() { + HighlightedPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/SurfaceButtonScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/SurfaceButtonScreenshotTests.kt new file mode 100644 index 00000000..4b6a0326 --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/components/SurfaceButtonScreenshotTests.kt @@ -0,0 +1,33 @@ +package com.sloy.sevibus.ui.components + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for SurfaceButton. + * These tests reference preview functions defined in the main source set. + */ +class SurfaceButtonScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun textPreview() { + TextPreview() + } + + @Preview + @PreviewTest + @Composable + fun iconPreview() { + IconPreview() + } + + @Preview + @PreviewTest + @Composable + fun smallIconPreview() { + SmallIconPreview() + } +} diff --git a/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/icons/StarScreenshotTests.kt b/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/icons/StarScreenshotTests.kt new file mode 100644 index 00000000..1fac0e98 --- /dev/null +++ b/app/src/screenshotTest/kotlin/com/sloy/sevibus/ui/icons/StarScreenshotTests.kt @@ -0,0 +1,19 @@ +package com.sloy.sevibus.ui.icons + +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import com.android.tools.screenshot.PreviewTest + +/** + * Screenshot tests for Star icon. + * These tests reference preview functions defined in the main source set. + */ +class StarScreenshotTests { + + @Preview + @PreviewTest + @Composable + fun preview() { + Preview() + } +} diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/AppLayoutPlaygroundScreenshotTests/preview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/AppLayoutPlaygroundScreenshotTests/preview_0.png new file mode 100644 index 00000000..bd019264 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/AppLayoutPlaygroundScreenshotTests/preview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/AppScreenshotTests/appPreviewBottomSheet_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/AppScreenshotTests/appPreviewBottomSheet_0.png new file mode 100644 index 00000000..bd019264 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/AppScreenshotTests/appPreviewBottomSheet_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/AppScreenshotTests/appPreviewFullScreen_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/AppScreenshotTests/appPreviewFullScreen_0.png new file mode 100644 index 00000000..bd019264 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/AppScreenshotTests/appPreviewFullScreen_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardBalanceItemScreenshotTests/cardBalanceItemPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardBalanceItemScreenshotTests/cardBalanceItemPreview_0.png new file mode 100644 index 00000000..56eb1d7c Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardBalanceItemScreenshotTests/cardBalanceItemPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardInfoElementScreenshotTests/cardInfoCardPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardInfoElementScreenshotTests/cardInfoCardPreview_0.png new file mode 100644 index 00000000..cce5bf7f Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardInfoElementScreenshotTests/cardInfoCardPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardTransactionsElementScreenshotTests/cardTransactionsCardPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardTransactionsElementScreenshotTests/cardTransactionsCardPreview_0.png new file mode 100644 index 00000000..696db850 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardTransactionsElementScreenshotTests/cardTransactionsCardPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardTransactionsElementScreenshotTests/cardTransactionsLoadingPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardTransactionsElementScreenshotTests/cardTransactionsLoadingPreview_0.png new file mode 100644 index 00000000..fa759a66 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardTransactionsElementScreenshotTests/cardTransactionsLoadingPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsHelpScreenScreenshotTests/cardHelpPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsHelpScreenScreenshotTests/cardHelpPreview_0.png new file mode 100644 index 00000000..7156fcc0 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsHelpScreenScreenshotTests/cardHelpPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/emptyCheckingCardPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/emptyCheckingCardPreview_0.png new file mode 100644 index 00000000..2e83a132 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/emptyCheckingCardPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/emptyNfcDisabledPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/emptyNfcDisabledPreview_0.png new file mode 100644 index 00000000..0a908237 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/emptyNfcDisabledPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/emptyNfcEnabledPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/emptyNfcEnabledPreview_0.png new file mode 100644 index 00000000..99bc1602 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/emptyNfcEnabledPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/errorPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/errorPreview_0.png new file mode 100644 index 00000000..6eb0bba0 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/errorPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/loadedPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/loadedPreview_0.png new file mode 100644 index 00000000..fab44248 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/loadedPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/loadedWithTransactionsEmptyPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/loadedWithTransactionsEmptyPreview_0.png new file mode 100644 index 00000000..fab44248 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/loadedWithTransactionsEmptyPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/loadedWithTransactionsErrorPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/loadedWithTransactionsErrorPreview_0.png new file mode 100644 index 00000000..fab44248 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/loadedWithTransactionsErrorPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/loadedWithTransactionsLoadingPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/loadedWithTransactionsLoadingPreview_0.png new file mode 100644 index 00000000..fab44248 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/loadedWithTransactionsLoadingPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/loadedWithTransactionsPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/loadedWithTransactionsPreview_0.png new file mode 100644 index 00000000..fab44248 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/loadedWithTransactionsPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/loadingPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/loadingPreview_0.png new file mode 100644 index 00000000..256d2563 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/loadingPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/reorderingPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/reorderingPreview_0.png new file mode 100644 index 00000000..da1e665e Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/cards/CardsScreenScreenshotTests/reorderingPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/ForYouScreenScreenshotTests/forYouScreenPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/ForYouScreenScreenshotTests/forYouScreenPreview_0.png new file mode 100644 index 00000000..165af7c7 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/ForYouScreenScreenshotTests/forYouScreenPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/alert/AlertWidgetScreenshotTests/alertWidgetPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/alert/AlertWidgetScreenshotTests/alertWidgetPreview_0.png new file mode 100644 index 00000000..ae337ab9 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/alert/AlertWidgetScreenshotTests/alertWidgetPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/favorites/FavoriteListItemScreenshotTests/favoriteListItemLoadingPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/favorites/FavoriteListItemScreenshotTests/favoriteListItemLoadingPreview_0.png new file mode 100644 index 00000000..2053866f Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/favorites/FavoriteListItemScreenshotTests/favoriteListItemLoadingPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/favorites/FavoriteListItemScreenshotTests/loadedPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/favorites/FavoriteListItemScreenshotTests/loadedPreview_0.png new file mode 100644 index 00000000..c8b958e6 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/favorites/FavoriteListItemScreenshotTests/loadedPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/favorites/FavoriteListItemScreenshotTests/loadingArrivalsPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/favorites/FavoriteListItemScreenshotTests/loadingArrivalsPreview_0.png new file mode 100644 index 00000000..11246623 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/favorites/FavoriteListItemScreenshotTests/loadingArrivalsPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/favorites/FavoritesWidgetScreenshotTests/emptyPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/favorites/FavoritesWidgetScreenshotTests/emptyPreview_0.png new file mode 100644 index 00000000..d27c4d3a Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/favorites/FavoritesWidgetScreenshotTests/emptyPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/favorites/FavoritesWidgetScreenshotTests/favoritesWidgetLoadingPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/favorites/FavoritesWidgetScreenshotTests/favoritesWidgetLoadingPreview_0.png new file mode 100644 index 00000000..6f079e58 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/favorites/FavoritesWidgetScreenshotTests/favoritesWidgetLoadingPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/favorites/FavoritesWidgetScreenshotTests/notLoggedPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/favorites/FavoritesWidgetScreenshotTests/notLoggedPreview_0.png new file mode 100644 index 00000000..b43297e2 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/favorites/FavoritesWidgetScreenshotTests/notLoggedPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/favorites/FavoritesWidgetScreenshotTests/withArrivalsPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/favorites/FavoritesWidgetScreenshotTests/withArrivalsPreview_0.png new file mode 100644 index 00000000..ffe95273 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/favorites/FavoritesWidgetScreenshotTests/withArrivalsPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/favorites/edit/EditFavoritesScreenScreenshotTests/favoriteItemPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/favorites/edit/EditFavoritesScreenScreenshotTests/favoriteItemPreview_0.png new file mode 100644 index 00000000..567bc943 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/favorites/edit/EditFavoritesScreenScreenshotTests/favoriteItemPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/favorites/edit/EditFavoritesScreenScreenshotTests/preview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/favorites/edit/EditFavoritesScreenScreenshotTests/preview_0.png new file mode 100644 index 00000000..bd019264 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/favorites/edit/EditFavoritesScreenScreenshotTests/preview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/nearby/NearbyListItemScreenshotTests/loadedPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/nearby/NearbyListItemScreenshotTests/loadedPreview_0.png new file mode 100644 index 00000000..86b724e9 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/nearby/NearbyListItemScreenshotTests/loadedPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/nearby/NearbyListItemScreenshotTests/loadingArrivalsPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/nearby/NearbyListItemScreenshotTests/loadingArrivalsPreview_0.png new file mode 100644 index 00000000..3e10d042 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/nearby/NearbyListItemScreenshotTests/loadingArrivalsPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/nearby/NearbyListItemScreenshotTests/nearbyListItemLoadingPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/nearby/NearbyListItemScreenshotTests/nearbyListItemLoadingPreview_0.png new file mode 100644 index 00000000..9d751a21 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/nearby/NearbyListItemScreenshotTests/nearbyListItemLoadingPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/nearby/NearbyWidgetScreenshotTests/emptyPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/nearby/NearbyWidgetScreenshotTests/emptyPreview_0.png new file mode 100644 index 00000000..50eb0523 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/nearby/NearbyWidgetScreenshotTests/emptyPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/nearby/NearbyWidgetScreenshotTests/nearbyWidgetLoadingPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/nearby/NearbyWidgetScreenshotTests/nearbyWidgetLoadingPreview_0.png new file mode 100644 index 00000000..6f079e58 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/nearby/NearbyWidgetScreenshotTests/nearbyWidgetLoadingPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/nearby/NearbyWidgetScreenshotTests/noPemissionPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/nearby/NearbyWidgetScreenshotTests/noPemissionPreview_0.png new file mode 100644 index 00000000..c32a32f2 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/nearby/NearbyWidgetScreenshotTests/noPemissionPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/nearby/NearbyWidgetScreenshotTests/withArrivalsPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/nearby/NearbyWidgetScreenshotTests/withArrivalsPreview_0.png new file mode 100644 index 00000000..88e04ddc Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/foryou/nearby/NearbyWidgetScreenshotTests/withArrivalsPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/lines/LinesScreenScreenshotTests/linesScreenPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/lines/LinesScreenScreenshotTests/linesScreenPreview_0.png new file mode 100644 index 00000000..a7b75077 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/lines/LinesScreenScreenshotTests/linesScreenPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/linestops/LineRouteScreenScreenshotTests/previewWithRoutes_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/linestops/LineRouteScreenScreenshotTests/previewWithRoutes_0.png new file mode 100644 index 00000000..9475a3f1 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/linestops/LineRouteScreenScreenshotTests/previewWithRoutes_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/linestops/LineRouteScreenScreenshotTests/previewWithoutRoutes_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/linestops/LineRouteScreenScreenshotTests/previewWithoutRoutes_0.png new file mode 100644 index 00000000..efb9c525 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/linestops/LineRouteScreenScreenshotTests/previewWithoutRoutes_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/linestops/component/StopTimelineElementScreenshotTests/stopListItemPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/linestops/component/StopTimelineElementScreenshotTests/stopListItemPreview_0.png new file mode 100644 index 00000000..9536fc7b Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/linestops/component/StopTimelineElementScreenshotTests/stopListItemPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/login/SettingsScreenScreenshotTests/loggedInPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/login/SettingsScreenScreenshotTests/loggedInPreview_0.png new file mode 100644 index 00000000..33fe5a29 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/login/SettingsScreenScreenshotTests/loggedInPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/login/SettingsScreenScreenshotTests/loggedOutPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/login/SettingsScreenScreenshotTests/loggedOutPreview_0.png new file mode 100644 index 00000000..5b27c057 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/login/SettingsScreenScreenshotTests/loggedOutPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/login/SettingsScreenScreenshotTests/loggedOutProgressPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/login/SettingsScreenScreenshotTests/loggedOutProgressPreview_0.png new file mode 100644 index 00000000..437a83a2 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/login/SettingsScreenScreenshotTests/loggedOutProgressPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/map/MapScreenScreenshotTests/mapScreenPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/map/MapScreenScreenshotTests/mapScreenPreview_0.png new file mode 100644 index 00000000..cb6f437f Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/map/MapScreenScreenshotTests/mapScreenPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/map/icons/BusIconScreenshotTests/preview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/map/icons/BusIconScreenshotTests/preview_0.png new file mode 100644 index 00000000..bd019264 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/map/icons/BusIconScreenshotTests/preview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/map/icons/CircularStopIconScreenshotTests/circularStopIconPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/map/icons/CircularStopIconScreenshotTests/circularStopIconPreview_0.png new file mode 100644 index 00000000..b5ca8ce5 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/map/icons/CircularStopIconScreenshotTests/circularStopIconPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/map/icons/OutlinedStopIconScreenshotTests/outlinedStopIconPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/map/icons/OutlinedStopIconScreenshotTests/outlinedStopIconPreview_0.png new file mode 100644 index 00000000..a4f4143f Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/map/icons/OutlinedStopIconScreenshotTests/outlinedStopIconPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/map/icons/OutlinedStopIconScreenshotTests/outlinedStopIconShadowPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/map/icons/OutlinedStopIconScreenshotTests/outlinedStopIconShadowPreview_0.png new file mode 100644 index 00000000..3067959b Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/map/icons/OutlinedStopIconScreenshotTests/outlinedStopIconShadowPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/map/icons/ShapedStopIconScreenshotTests/shapedStopIconPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/map/icons/ShapedStopIconScreenshotTests/shapedStopIconPreview_0.png new file mode 100644 index 00000000..8a205a2b Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/map/icons/ShapedStopIconScreenshotTests/shapedStopIconPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/search/RoundedSearchBarScreenshotTests/searchEmptyPreviewLightDark_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/search/RoundedSearchBarScreenshotTests/searchEmptyPreviewLightDark_0.png new file mode 100644 index 00000000..618dacfe Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/search/RoundedSearchBarScreenshotTests/searchEmptyPreviewLightDark_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/search/RoundedSearchBarScreenshotTests/searchLinePreviewLightDark_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/search/RoundedSearchBarScreenshotTests/searchLinePreviewLightDark_0.png new file mode 100644 index 00000000..026da515 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/search/RoundedSearchBarScreenshotTests/searchLinePreviewLightDark_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/search/RoundedSearchBarScreenshotTests/searchPreviewLightDark_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/search/RoundedSearchBarScreenshotTests/searchPreviewLightDark_0.png new file mode 100644 index 00000000..f36fb51b Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/search/RoundedSearchBarScreenshotTests/searchPreviewLightDark_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/search/RoundedSearchBarScreenshotTests/searchStopPreviewLightDark_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/search/RoundedSearchBarScreenshotTests/searchStopPreviewLightDark_0.png new file mode 100644 index 00000000..d9bfdb27 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/search/RoundedSearchBarScreenshotTests/searchStopPreviewLightDark_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/search/SearchScreenScreenshotTests/previewEmpty_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/search/SearchScreenScreenshotTests/previewEmpty_0.png new file mode 100644 index 00000000..faa855c3 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/search/SearchScreenScreenshotTests/previewEmpty_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/search/SearchScreenScreenshotTests/previewResults_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/search/SearchScreenScreenshotTests/previewResults_0.png new file mode 100644 index 00000000..da188217 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/search/SearchScreenScreenshotTests/previewResults_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/stopdetail/StopDetailScreenScreenshotTests/failedArrivalsPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/stopdetail/StopDetailScreenScreenshotTests/failedArrivalsPreview_0.png new file mode 100644 index 00000000..4d47e525 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/stopdetail/StopDetailScreenScreenshotTests/failedArrivalsPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/stopdetail/StopDetailScreenScreenshotTests/failedStopPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/stopdetail/StopDetailScreenScreenshotTests/failedStopPreview_0.png new file mode 100644 index 00000000..e92d184f Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/stopdetail/StopDetailScreenScreenshotTests/failedStopPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/stopdetail/StopDetailScreenScreenshotTests/loadedArrivalsPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/stopdetail/StopDetailScreenScreenshotTests/loadedArrivalsPreview_0.png new file mode 100644 index 00000000..9f39417f Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/stopdetail/StopDetailScreenScreenshotTests/loadedArrivalsPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/stopdetail/StopDetailScreenScreenshotTests/loadingArrivalsPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/stopdetail/StopDetailScreenScreenshotTests/loadingArrivalsPreview_0.png new file mode 100644 index 00000000..3923b685 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/stopdetail/StopDetailScreenScreenshotTests/loadingArrivalsPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/stopdetail/StopDetailScreenScreenshotTests/loadingStopPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/stopdetail/StopDetailScreenScreenshotTests/loadingStopPreview_0.png new file mode 100644 index 00000000..c7f4a3de Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/feature/stopdetail/StopDetailScreenScreenshotTests/loadingStopPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/infrastructure/nightmode/NightModeSelectorBottomSheetScreenshotTests/preview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/infrastructure/nightmode/NightModeSelectorBottomSheetScreenshotTests/preview_0.png new file mode 100644 index 00000000..bd019264 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/infrastructure/nightmode/NightModeSelectorBottomSheetScreenshotTests/preview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/AppUpdateButtonScreenshotTests/availablePreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/AppUpdateButtonScreenshotTests/availablePreview_0.png new file mode 100644 index 00000000..2bd4fdd7 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/AppUpdateButtonScreenshotTests/availablePreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/AppUpdateButtonScreenshotTests/downloadingPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/AppUpdateButtonScreenshotTests/downloadingPreview_0.png new file mode 100644 index 00000000..6a6edcd5 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/AppUpdateButtonScreenshotTests/downloadingPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/AppUpdateButtonScreenshotTests/downloadingZeroPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/AppUpdateButtonScreenshotTests/downloadingZeroPreview_0.png new file mode 100644 index 00000000..f972a9a0 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/AppUpdateButtonScreenshotTests/downloadingZeroPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/AppUpdateButtonScreenshotTests/readyPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/AppUpdateButtonScreenshotTests/readyPreview_0.png new file mode 100644 index 00000000..98c5b9e0 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/AppUpdateButtonScreenshotTests/readyPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/BusArrivalListItemScreenshotTests/availablePreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/BusArrivalListItemScreenshotTests/availablePreview_0.png new file mode 100644 index 00000000..12aba4ca Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/BusArrivalListItemScreenshotTests/availablePreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/BusArrivalListItemScreenshotTests/highlightedPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/BusArrivalListItemScreenshotTests/highlightedPreview_0.png new file mode 100644 index 00000000..b1122b0f Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/BusArrivalListItemScreenshotTests/highlightedPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/BusArrivalListItemScreenshotTests/lastBusPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/BusArrivalListItemScreenshotTests/lastBusPreview_0.png new file mode 100644 index 00000000..33c065e6 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/BusArrivalListItemScreenshotTests/lastBusPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/BusArrivalListItemScreenshotTests/loadingPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/BusArrivalListItemScreenshotTests/loadingPreview_0.png new file mode 100644 index 00000000..f11cfa23 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/BusArrivalListItemScreenshotTests/loadingPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/BusArrivalListItemScreenshotTests/loadingWithLinePreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/BusArrivalListItemScreenshotTests/loadingWithLinePreview_0.png new file mode 100644 index 00000000..02a58fa5 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/BusArrivalListItemScreenshotTests/loadingWithLinePreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/BusArrivalListItemScreenshotTests/notAvailablePreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/BusArrivalListItemScreenshotTests/notAvailablePreview_0.png new file mode 100644 index 00000000..4b80ab0a Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/BusArrivalListItemScreenshotTests/notAvailablePreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/InfoBannerComponentScreenshotTests/oneLineActionPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/InfoBannerComponentScreenshotTests/oneLineActionPreview_0.png new file mode 100644 index 00000000..25aa1dfe Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/InfoBannerComponentScreenshotTests/oneLineActionPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/InfoBannerComponentScreenshotTests/oneLinePreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/InfoBannerComponentScreenshotTests/oneLinePreview_0.png new file mode 100644 index 00000000..a83cf75c Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/InfoBannerComponentScreenshotTests/oneLinePreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/InfoBannerComponentScreenshotTests/twoLinesActionPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/InfoBannerComponentScreenshotTests/twoLinesActionPreview_0.png new file mode 100644 index 00000000..20eb8eb0 Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/InfoBannerComponentScreenshotTests/twoLinesActionPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/InfoBannerComponentScreenshotTests/twoLinesPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/InfoBannerComponentScreenshotTests/twoLinesPreview_0.png new file mode 100644 index 00000000..f930eadc Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/InfoBannerComponentScreenshotTests/twoLinesPreview_0.png differ diff --git a/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/LineIndicatorScreenshotTests/lineIndicatorPreview_0.png b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/LineIndicatorScreenshotTests/lineIndicatorPreview_0.png new file mode 100644 index 00000000..9a48b00c Binary files /dev/null and b/app/src/screenshotTestDebug/reference/com/sloy/sevibus/ui/components/LineIndicatorScreenshotTests/lineIndicatorPreview_0.png differ diff --git a/gradle.properties b/gradle.properties index 20e2a015..d59cb6c8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ # http://www.gradle.org/docs/current/userguide/build_environment.html # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. -org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 +org.gradle.jvmargs=-Xmx6144m -Dfile.encoding=UTF-8 # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. For more details, visit # https://developer.android.com/r/tools/gradle-multi-project-decoupled-projects @@ -20,4 +20,6 @@ kotlin.code.style=official # Enables namespacing of each library's R class so that its R class includes only the # resources declared in the library itself and none from the library's dependencies, # thereby reducing the size of the R class for that library -android.nonTransitiveRClass=true \ No newline at end of file +android.nonTransitiveRClass=true +# Enables Compose Preview Screenshot Testing (experimental) +android.experimental.enableScreenshotTest=true \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 7332a584..a081f631 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -34,6 +34,7 @@ appcompat = "1.7.1" inAppUpdate = "1.3.1" playReview = "2.0.2" statsig = "4.42.2" +composeScreenshot = "0.0.1-alpha12" [libraries] coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "coroutines" } @@ -114,6 +115,8 @@ inAppUpdateCompose = { group = "se.warting.in-app-update", name = "in-app-update inAppUpdateCompose-material = { group = "se.warting.in-app-update", name = "in-app-update-compose-mui", version.ref = "inAppUpdate" } statsig-sdk = { group = "com.statsig", name = "android-sdk", version.ref = "statsig" } +compose-screenshot-validation = { module = "com.android.tools.screenshot:screenshot-validation-api", version.ref = "composeScreenshot" } + [plugins] androidApplication = { id = "com.android.application", version.ref = "agp" } jetbrainsKotlinAndroid = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } @@ -124,4 +127,5 @@ ksp = { id = "com.google.devtools.ksp", version = "2.2.20-2.0.2" } kotlinSerialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } android-library = { id = "com.android.library", version.ref = "agp" } +compose-screenshot = { id = "com.android.compose.screenshot", version.ref = "composeScreenshot" }