Distrito Telefónica. Hub de Innovación y Talento
Nuestro enfoque
@JvmStatic
@ParameterizedRobolectricTestRunner.Parameters(name = " Button {1} brand {0} darkTheme={2} ")
fun brands(): List<Array<Any>> {
return brands.flatMap { brand ->
buttonStyles.flatMap { buttonStyle ->
themes.map { darkTheme ->
arrayOf(brand, buttonStyle, darkTheme)
}
}
}
}
composeTestRule.setContent {
MisticaTheme(brand = brand, darkTheme = darkTheme) {
Surface(
color = if (style.isInverse()) {
colors.backgroundBrand
} else {
colors.background
}
) {
Button(
text = "textValue",
buttonStyle = style,
icon = android.R.drawable.ic_lock_power_off.takeIf { icon },
onClickListener = { },
modifier = Modifier.padding(16.dp)
)
}
}
}
...
compareScreenshot(
composeTestRule.onRoot(),
component = "Button",
style = style.toString(),
brand = brand,
darkTheme = darkTheme,
extra = iconSuffix
)
rule.scenario.onActivity { activity ->
val wrapper: FrameLayout = activity.findViewById(R.id.dummy_activity_wrapper)
val textInput = TextInput(activity)
wrapper.addView(textInput)
compareScreenshot(
Espresso.onView(ViewMatchers.withId(R.id.dummy_activity_wrapper)),
component = "XMLButton",
style = style.toString(),
brand = brand,
darkTheme = darkTheme,
extra = iconSuffix
)
}
fun compareScreenshot(...) {
node.captureRoboImage(screenshotName(component, style, brand, darkTheme, extra))
}
XMLButton_DANGER_MovistarBrand_dark.png
XMLButton_DANGER_MovistarBrand_icon_dark.png
XMLButton_DANGER_MovistarBrand_icon.png
XMLButton_DANGER_MovistarBrand.png
Button_DANGER_MovistarBrand_dark.png
Button_DANGER_MovistarBrand_icon_dark.png
Button_DANGER_MovistarBrand_icon.png
Button_DANGER_MovistarBrand.png
....
Forma de trabajar
...
- name: Run Roborazzi Record
run: 'bash ./gradlew clean recordRoborazziDebug'
- name: Commit and push screenshots baseline
id: commitAndPushScreenshotsBaseline
uses: EndBug/add-and-commit@v7
with:
message: 'Updated screenshots baseline'
add: './**/screenshots/*'
on:
pull_request:
jobs:
CompareScreenshots:
runs-on: ubuntu-latest
steps:
...
- name: Verify Screenshots (roborazzi)
run: 'bash ./gradlew verifyRoborazziDebug'
Informe de errores de capturas de pantalla