diff --git a/integration-core/uikit-compose-testcases/src/main/kotlin/com/sdds/compose/uikit/fixtures/testcases/AiHeaderTestCases.kt b/integration-core/uikit-compose-testcases/src/main/kotlin/com/sdds/compose/uikit/fixtures/testcases/AiHeaderTestCases.kt new file mode 100644 index 000000000..649284fe7 --- /dev/null +++ b/integration-core/uikit-compose-testcases/src/main/kotlin/com/sdds/compose/uikit/fixtures/testcases/AiHeaderTestCases.kt @@ -0,0 +1,164 @@ +package com.sdds.compose.uikit.fixtures.testcases + +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import com.sdds.compose.uikit.IconButton +import com.sdds.compose.uikit.Text +import com.sdds.compose.uikit.ai.AiHeader +import com.sdds.compose.uikit.ai.AiHeaderSeparationType +import com.sdds.compose.uikit.ai.AiHeaderStyle +import com.sdds.compose.uikit.ai.AiHeaderTitleAlignment +import com.sdds.icons.R + +/** + * Тест-кейсы для компонента [AiHeader] + */ + +/** + * PLASMA-T2664, PLASMA-T2670 + */ +@Composable +fun AiHeaderTitleSubtitleStartHasStartEndButton( + style: AiHeaderStyle, +) { + AiHeaderCommon( + style = style, + ) +} + +/** + * PLASMA-T2665 + */ +@Composable +fun AiHeaderTitleSubtitleCenter( + style: AiHeaderStyle, +) { + AiHeaderCommon( + style = style, + titleAlignment = AiHeaderTitleAlignment.Center, + actionBefore = null, + actionAfter = null, + ) +} + +/** + * PLASMA-T2666 + */ +@Composable +fun AiHeaderTitleHasDividerStartButton( + style: AiHeaderStyle, +) { + AiHeaderCommon( + style = style, + separationType = AiHeaderSeparationType.Divider, + subtitleContent = null, + titleAlignment = AiHeaderTitleAlignment.End, + actionAfter = null, + ) +} + +/** + * PLASMA-T2667 + */ +@Composable +fun AiHeaderNoTitleEndButton( + style: AiHeaderStyle, +) { + AiHeaderCommon( + style = style, + titleContent = null, + actionBefore = null, + ) +} + +/** + * PLASMA-T2668 + */ +@Composable +fun AiHeaderLongTitleSubtitleDividerCenter( + style: AiHeaderStyle, +) { + AiHeaderCommon( + style = style, + separationType = AiHeaderSeparationType.Divider, + titleAlignment = AiHeaderTitleAlignment.Center, + titleContent = { + Text( + "There is no one who loves pain itself, who seeks after " + + "it and wants to have it, simply because it is pain", + ) + }, + subtitleContent = { + Text( + "Lorem Ipsum is simply dummy text of the printing and " + + "typesetting industry. Lorem Ipsum has been the industry's standard dummy " + + "text ever since the 1500s, when an unknown printer took a galley of type " + + "and scrambled it to make a type specimen book.", + ) + }, + ) +} + +/** + * PLASMA-T2669, PLASMA-T2672 + */ +@Composable +fun AiHeaderTitleAlignmentEndStartEndButton( + style: AiHeaderStyle, +) { + AiHeaderCommon( + style = style, + titleAlignment = AiHeaderTitleAlignment.End, + ) +} + +/** + * PLASMA-T2671 + */ +@Composable +fun AiHeaderCenterStartEndButton( + style: AiHeaderStyle, +) { + AiHeaderCommon( + style = style, + titleAlignment = AiHeaderTitleAlignment.Center, + ) +} + +/** + * Общий тест-кейс + */ +@Composable +fun AiHeaderCommon( + modifier: Modifier = Modifier, + style: AiHeaderStyle, + separationType: AiHeaderSeparationType = AiHeaderSeparationType.None, + actionBefore: (@Composable () -> Unit)? = { + IconButton( + iconRes = R.drawable.ic_panel_sidebar_l_outline_24, + onClick = {}, + ) + }, + actionAfter: @Composable (() -> Unit)? = { + IconButton(iconRes = R.drawable.ic_close_24, onClick = {}) + }, + titleContent: @Composable (() -> Unit)? = { + Text(text = "Заголовок") + }, + subtitleContent: @Composable (() -> Unit)? = { + Text(text = "Подзаголовок") + }, + titleAlignment: AiHeaderTitleAlignment = AiHeaderTitleAlignment.Start, +) { + AiHeader( + modifier = modifier.fillMaxWidth(), + style = style, + separationType = separationType, + actionBefore = actionBefore, + actionAfter = actionAfter, + titleContent = titleContent, + subtitleContent = subtitleContent, + titleAlignment = titleAlignment, + ) +} diff --git a/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderH2DefaultTitleAlignmentEndStartEndButton_dark.png b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderH2DefaultTitleAlignmentEndStartEndButton_dark.png new file mode 100644 index 000000000..82b21acd7 Binary files /dev/null and b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderH2DefaultTitleAlignmentEndStartEndButton_dark.png differ diff --git a/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderH2DefaultTitleAlignmentEndStartEndButton_light.png b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderH2DefaultTitleAlignmentEndStartEndButton_light.png new file mode 100644 index 000000000..f56c1fe1d Binary files /dev/null and b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderH2DefaultTitleAlignmentEndStartEndButton_light.png differ diff --git a/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderH3DefaultCenterStartEndButton_dark.png b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderH3DefaultCenterStartEndButton_dark.png new file mode 100644 index 000000000..c415c48f6 Binary files /dev/null and b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderH3DefaultCenterStartEndButton_dark.png differ diff --git a/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderH3DefaultCenterStartEndButton_light.png b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderH3DefaultCenterStartEndButton_light.png new file mode 100644 index 000000000..644f5da5e Binary files /dev/null and b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderH3DefaultCenterStartEndButton_light.png differ diff --git a/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderH4DefaultTitleSubtitleStartHasStartEndButton_dark.png b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderH4DefaultTitleSubtitleStartHasStartEndButton_dark.png new file mode 100644 index 000000000..8a4511c1d Binary files /dev/null and b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderH4DefaultTitleSubtitleStartHasStartEndButton_dark.png differ diff --git a/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderH4DefaultTitleSubtitleStartHasStartEndButton_light.png b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderH4DefaultTitleSubtitleStartHasStartEndButton_light.png new file mode 100644 index 000000000..4c3cc93d1 Binary files /dev/null and b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderH4DefaultTitleSubtitleStartHasStartEndButton_light.png differ diff --git a/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderH5ClearTitleAlignmentEndStartEndButton_dark.png b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderH5ClearTitleAlignmentEndStartEndButton_dark.png new file mode 100644 index 000000000..0620153bb Binary files /dev/null and b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderH5ClearTitleAlignmentEndStartEndButton_dark.png differ diff --git a/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderH5ClearTitleAlignmentEndStartEndButton_light.png b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderH5ClearTitleAlignmentEndStartEndButton_light.png new file mode 100644 index 000000000..578138642 Binary files /dev/null and b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderH5ClearTitleAlignmentEndStartEndButton_light.png differ diff --git a/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderLSecondaryTitleSubtitleCenter_dark.png b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderLSecondaryTitleSubtitleCenter_dark.png new file mode 100644 index 000000000..69ec047ad Binary files /dev/null and b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderLSecondaryTitleSubtitleCenter_dark.png differ diff --git a/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderLSecondaryTitleSubtitleCenter_light.png b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderLSecondaryTitleSubtitleCenter_light.png new file mode 100644 index 000000000..e8f1c1ea6 Binary files /dev/null and b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderLSecondaryTitleSubtitleCenter_light.png differ diff --git a/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderLongTitleSubtitleDividerCenter_dark.png b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderLongTitleSubtitleDividerCenter_dark.png new file mode 100644 index 000000000..ab2605380 Binary files /dev/null and b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderLongTitleSubtitleDividerCenter_dark.png differ diff --git a/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderLongTitleSubtitleDividerCenter_light.png b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderLongTitleSubtitleDividerCenter_light.png new file mode 100644 index 000000000..898cde782 Binary files /dev/null and b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderLongTitleSubtitleDividerCenter_light.png differ diff --git a/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderMClearTitleHasDividerStartButton_dark.png b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderMClearTitleHasDividerStartButton_dark.png new file mode 100644 index 000000000..7244af41e Binary files /dev/null and b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderMClearTitleHasDividerStartButton_dark.png differ diff --git a/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderMClearTitleHasDividerStartButton_light.png b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderMClearTitleHasDividerStartButton_light.png new file mode 100644 index 000000000..12ddaba1f Binary files /dev/null and b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderMClearTitleHasDividerStartButton_light.png differ diff --git a/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderSDefaultNoTitleEndButton_dark.png b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderSDefaultNoTitleEndButton_dark.png new file mode 100644 index 000000000..8f0133617 Binary files /dev/null and b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderSDefaultNoTitleEndButton_dark.png differ diff --git a/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderSDefaultNoTitleEndButton_light.png b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderSDefaultNoTitleEndButton_light.png new file mode 100644 index 000000000..d619b023c Binary files /dev/null and b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderSDefaultNoTitleEndButton_light.png differ diff --git a/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderXlDefaultTitleSubtitleStartHasStartEndButton_dark.png b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderXlDefaultTitleSubtitleStartHasStartEndButton_dark.png new file mode 100644 index 000000000..0c354a958 Binary files /dev/null and b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderXlDefaultTitleSubtitleStartHasStartEndButton_dark.png differ diff --git a/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderXlDefaultTitleSubtitleStartHasStartEndButton_light.png b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderXlDefaultTitleSubtitleStartHasStartEndButton_light.png new file mode 100644 index 000000000..e50e2dfbb Binary files /dev/null and b/tokens/sdds.serv.compose/screenshots-compose/testAiHeaderXlDefaultTitleSubtitleStartHasStartEndButton_light.png differ diff --git a/tokens/sdds.serv.compose/src/test/kotlin/com/sdds/serv/ComposeAiHeaderScreenshotTest.kt b/tokens/sdds.serv.compose/src/test/kotlin/com/sdds/serv/ComposeAiHeaderScreenshotTest.kt new file mode 100644 index 000000000..66753f47d --- /dev/null +++ b/tokens/sdds.serv.compose/src/test/kotlin/com/sdds/serv/ComposeAiHeaderScreenshotTest.kt @@ -0,0 +1,102 @@ +package com.sdds.serv + +import com.github.takahirom.roborazzi.RobolectricDeviceQualifiers +import com.sdds.compose.uikit.fixtures.RoborazziConfigCompose +import com.sdds.compose.uikit.fixtures.SDK_NUMBER +import com.sdds.compose.uikit.fixtures.testcases.AiHeaderCenterStartEndButton +import com.sdds.compose.uikit.fixtures.testcases.AiHeaderLongTitleSubtitleDividerCenter +import com.sdds.compose.uikit.fixtures.testcases.AiHeaderNoTitleEndButton +import com.sdds.compose.uikit.fixtures.testcases.AiHeaderTitleAlignmentEndStartEndButton +import com.sdds.compose.uikit.fixtures.testcases.AiHeaderTitleHasDividerStartButton +import com.sdds.compose.uikit.fixtures.testcases.AiHeaderTitleSubtitleCenter +import com.sdds.compose.uikit.fixtures.testcases.AiHeaderTitleSubtitleStartHasStartEndButton +import com.sdds.compose.uikit.style.style +import com.sdds.serv.styles.aiheader.AiHeader +import com.sdds.serv.styles.aiheader.Clear +import com.sdds.serv.styles.aiheader.Default +import com.sdds.serv.styles.aiheader.H2 +import com.sdds.serv.styles.aiheader.H3 +import com.sdds.serv.styles.aiheader.H4 +import com.sdds.serv.styles.aiheader.H5 +import com.sdds.serv.styles.aiheader.L +import com.sdds.serv.styles.aiheader.M +import com.sdds.serv.styles.aiheader.S +import com.sdds.serv.styles.aiheader.Secondary +import com.sdds.serv.styles.aiheader.Xl +import com.sdds.serv.styles.aiheader.Xs +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.ParameterizedRobolectricTestRunner +import org.robolectric.annotation.Config +import org.robolectric.annotation.GraphicsMode + +@RunWith(ParameterizedRobolectricTestRunner::class) +@GraphicsMode(GraphicsMode.Mode.NATIVE) +@Config(sdk = [SDK_NUMBER], qualifiers = RobolectricDeviceQualifiers.Pixel6) +class ComposeAiHeaderScreenshotTest( + theme: String, +) : RoborazziConfigCompose(theme) { + + @Test + fun testAiHeaderXlDefaultTitleSubtitleStartHasStartEndButton() { + composeTestRule.content { + AiHeaderTitleSubtitleStartHasStartEndButton(AiHeader.Xl.Default.style()) + } + } + + @Test + fun testAiHeaderLSecondaryTitleSubtitleCenter() { + composeTestRule.content { + AiHeaderTitleSubtitleCenter(AiHeader.L.Secondary.style()) + } + } + + @Test + fun testAiHeaderMClearTitleHasDividerStartButton() { + composeTestRule.content { + AiHeaderTitleHasDividerStartButton(AiHeader.M.Clear.style()) + } + } + + @Test + fun testAiHeaderSDefaultNoTitleEndButton() { + composeTestRule.content { + AiHeaderNoTitleEndButton(AiHeader.S.Default.style()) + } + } + + @Test + fun testAiHeaderLongTitleSubtitleDividerCenter() { + composeTestRule.content { + AiHeaderLongTitleSubtitleDividerCenter(AiHeader.Xs.Secondary.style()) + } + } + + @Test + fun testAiHeaderH5ClearTitleAlignmentEndStartEndButton() { + composeTestRule.content { + AiHeaderTitleAlignmentEndStartEndButton(AiHeader.H5.Clear.style()) + } + } + + @Test + fun testAiHeaderH4DefaultTitleSubtitleStartHasStartEndButton() { + composeTestRule.content { + AiHeaderTitleSubtitleStartHasStartEndButton(AiHeader.H4.Default.style()) + } + } + + @Test + fun testAiHeaderH3DefaultCenterStartEndButton() { + composeTestRule.content { + AiHeaderCenterStartEndButton(AiHeader.H3.Default.style()) + } + } + + @Test + fun testAiHeaderH2DefaultTitleAlignmentEndStartEndButton() { + composeTestRule.content { + AiHeaderTitleAlignmentEndStartEndButton(AiHeader.H2.Default.style()) + } + } +}