test(designsystem): Roborazzi-эталон F7NotificationRow (Fd, w360dp) — состояния с действиями/без; PNG-эталон нативной строки уведомления
This commit is contained in:
+77
@@ -0,0 +1,77 @@
|
|||||||
|
package ru.forbion.f7cloud.core.designsystem
|
||||||
|
|
||||||
|
import androidx.compose.foundation.background
|
||||||
|
import androidx.compose.foundation.layout.Column
|
||||||
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
|
import androidx.compose.ui.test.junit4.ComposeContentTestRule
|
||||||
|
import androidx.compose.ui.test.junit4.createComposeRule
|
||||||
|
import androidx.compose.ui.test.onRoot
|
||||||
|
import com.github.takahirom.roborazzi.captureRoboImage
|
||||||
|
import org.junit.Rule
|
||||||
|
import org.junit.Test
|
||||||
|
import org.junit.runner.RunWith
|
||||||
|
import org.robolectric.RobolectricTestRunner
|
||||||
|
import org.robolectric.annotation.Config
|
||||||
|
import org.robolectric.annotation.GraphicsMode
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Roborazzi-эталон строки уведомления (`F7NotificationRow`) для Fd-сверки 1:1 с мобильной
|
||||||
|
* лентой forbion (mail/111, ширина Figma-фрейма w360dp). Рендерит ключевые состояния строки,
|
||||||
|
* которые сверяются с веб-эталоном `docs/app-map/reference/notifications/`:
|
||||||
|
* - с действиями (primary=заливка + контур), длинный сабж, с message;
|
||||||
|
* - без действий, короткий сабж, без message.
|
||||||
|
* Иконки (`iconUrl`/`closeIconUrl`) грузятся через Coil/сеть — в Robolectric не отрисуются,
|
||||||
|
* это влияет только на растр иконки, не на компоновку/типографику (их и сверяем).
|
||||||
|
*/
|
||||||
|
@RunWith(RobolectricTestRunner::class)
|
||||||
|
@GraphicsMode(GraphicsMode.Mode.NATIVE)
|
||||||
|
@Config(sdk = [34], qualifiers = "w360dp-h800dp-xxhdpi")
|
||||||
|
class NotificationRowScreenshotTest {
|
||||||
|
|
||||||
|
@get:Rule
|
||||||
|
val composeRule: ComposeContentTestRule = createComposeRule()
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun notification_row_states() {
|
||||||
|
composeRule.setContent {
|
||||||
|
F7Theme {
|
||||||
|
Column(modifier = Modifier.fillMaxSize().background(Color.White)) {
|
||||||
|
// Строка с действиями + длинный сабж + message
|
||||||
|
F7NotificationRow(
|
||||||
|
subject = "Приглашение в беседу «Планёрка команды разработки F7»",
|
||||||
|
message = "Константин Девальд приглашает вас присоединиться к звонку.",
|
||||||
|
relativeTime = "5 минут назад",
|
||||||
|
iconUrl = null,
|
||||||
|
closeIconUrl = "",
|
||||||
|
authHeader = null,
|
||||||
|
onClick = {},
|
||||||
|
onDismiss = {},
|
||||||
|
showDivider = true,
|
||||||
|
actions = listOf(
|
||||||
|
F7NotificationActionUi(label = "Присоединиться", primary = true),
|
||||||
|
F7NotificationActionUi(label = "Отклонить", primary = false),
|
||||||
|
),
|
||||||
|
onActionClick = {},
|
||||||
|
)
|
||||||
|
// Строка без действий, короткий сабж, без message
|
||||||
|
F7NotificationRow(
|
||||||
|
subject = "Рекомендованное приложение: Формы",
|
||||||
|
message = "",
|
||||||
|
relativeTime = "49 минут назад",
|
||||||
|
iconUrl = null,
|
||||||
|
closeIconUrl = "",
|
||||||
|
authHeader = null,
|
||||||
|
onClick = {},
|
||||||
|
onDismiss = {},
|
||||||
|
showDivider = false,
|
||||||
|
actions = emptyList(),
|
||||||
|
onActionClick = {},
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
composeRule.onRoot().captureRoboImage("src/test/screenshots/notification-row-states.png")
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 126 KiB |
Reference in New Issue
Block a user