Skip to content

Commit 165f789

Browse files
authored
[visual-testing] Add extended failure message for visual checks (#6445)
1 parent a2fc038 commit 165f789

File tree

7 files changed

+66
-6
lines changed

7 files changed

+66
-6
lines changed

docs/modules/plugins/pages/plugin-visual.adoc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,12 @@ include::partial$plugin-installation.adoc[]
3030
|`<empty>`
3131
|Used to append scenario based index to a baseline name
3232

33+
|`ui.visual.extended-assertion-format-enabled`
34+
a|`true`
35+
`false`
36+
|`false`
37+
|Extends assertion message for baseline validation by including baseline name
38+
3339
|`ui.visual.override-baselines`
3440
a|`true`
3541
`false`

vividus-extension-visual-testing/src/main/java/org/vividus/visual/steps/AbstractVisualSteps.java

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2019-2023 the original author or authors.
2+
* Copyright 2019-2026 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -37,6 +37,8 @@ public abstract class AbstractVisualSteps
3737
private final IAttachmentPublisher attachmentPublisher;
3838
private final ISoftAssert softAssert;
3939

40+
private boolean extendedAssertionFormatEnabled;
41+
4042
protected AbstractVisualSteps(IUiContext uiContext, IAttachmentPublisher attachmentPublisher,
4143
ISoftAssert softAssert)
4244
{
@@ -90,7 +92,22 @@ private <T extends AbstractVisualCheck, R extends VisualCheckResult> Optional<R>
9092
protected void verifyResult(VisualCheckResult result)
9193
{
9294
boolean passed = result.isPassed() ^ result.getActionType() == VisualActionType.CHECK_INEQUALITY_AGAINST;
93-
softAssert.assertTrue("Visual check passed", passed);
95+
if (extendedAssertionFormatEnabled)
96+
{
97+
String format = "Visual check for '%s' baseline is %s";
98+
if (passed)
99+
{
100+
softAssert.recordPassedAssertion(format.formatted(result.getBaselineName(), "passed"));
101+
}
102+
else
103+
{
104+
softAssert.recordFailedAssertion(format.formatted(result.getBaselineName(), "failed"));
105+
}
106+
}
107+
else
108+
{
109+
softAssert.assertTrue("Visual check passed", passed);
110+
}
94111
}
95112

96113
protected abstract String getTemplateName();
@@ -99,4 +116,9 @@ protected ISoftAssert getSoftAssert()
99116
{
100117
return softAssert;
101118
}
119+
120+
public void setExtendedAssertionFormatEnabled(boolean extendedAssertionFormatEnabled)
121+
{
122+
this.extendedAssertionFormatEnabled = extendedAssertionFormatEnabled;
123+
}
102124
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
ui.visual.indexer=
2+
ui.visual.extended-assertion-format-enabled=false

vividus-extension-visual-testing/src/main/resources/vividus-extension/spring.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66
http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd"
77
default-lazy-init="true">
88

9+
<bean name="abstractVisualSteps" class="org.vividus.visual.steps.AbstractVisualSteps" abstract="true">
10+
<property name="extendedAssertionFormatEnabled" value="${ui.visual.extended-assertion-format-enabled}" />
11+
</bean>
12+
913
<beans profile="web_selenium,mobile_app">
1014
<bean id="scenario" class="org.vividus.visual.screenshot.ScenarioBasedIndexer" />
1115

vividus-extension-visual-testing/src/test/java/org/vividus/visual/steps/VisualStepsTests.java

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2019-2023 the original author or authors.
2+
* Copyright 2019-2026 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -57,6 +57,7 @@ class VisualStepsTests
5757
private static final String VISUAL_CHECK_PASSED = "Visual check passed";
5858
private static final String COMPARE_AGAINST = "true, COMPARE_AGAINST";
5959
private static final String CHECK_INEQUALITY_AGAINST = "false, CHECK_INEQUALITY_AGAINST";
60+
private static final String EXTENDED_MESSAGE_FORMAT = "Visual check for '%s' baseline is %s";
6061

6162
@Mock private IUiContext uiContext;
6263
@Mock private IAttachmentPublisher attachmentPublisher;
@@ -150,6 +151,32 @@ void shouldPerformVisualCheckAndPublishAttachment(boolean passed, VisualActionTy
150151
assertNull(visualCheck.getSearchContext());
151152
}
152153

154+
@Test
155+
void shouldUseExtendedAssertionFormatPassed()
156+
{
157+
var visualCheck = new AbstractVisualCheck(BASELINE_NAME, VisualActionType.COMPARE_AGAINST) { };
158+
var visualCheckResult = new VisualCheckResult(visualCheck);
159+
visualCheckResult.setPassed(true);
160+
161+
visualSteps.setExtendedAssertionFormatEnabled(true);
162+
visualSteps.verifyResult(visualCheckResult);
163+
164+
verify(softAssert).recordPassedAssertion(EXTENDED_MESSAGE_FORMAT.formatted(BASELINE_NAME, "passed"));
165+
}
166+
167+
@Test
168+
void shouldUseExtendedAssertionFormatFailed()
169+
{
170+
var visualCheck = new AbstractVisualCheck(BASELINE_NAME, VisualActionType.COMPARE_AGAINST) { };
171+
var visualCheckResult = new VisualCheckResult(visualCheck);
172+
visualCheckResult.setPassed(false);
173+
174+
visualSteps.setExtendedAssertionFormatEnabled(true);
175+
visualSteps.verifyResult(visualCheckResult);
176+
177+
verify(softAssert).recordFailedAssertion(EXTENDED_MESSAGE_FORMAT.formatted(BASELINE_NAME, "failed"));
178+
}
179+
153180
private static final class TestVisualSteps extends AbstractVisualSteps
154181
{
155182
private TestVisualSteps(IUiContext uiContext, IAttachmentPublisher attachmentPublisher, ISoftAssert softAssert)

vividus-plugin-applitools/src/main/resources/vividus-plugin/spring.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@
2525
<bean class="org.vividus.visual.eyes.converter.ExamplesTableToRenderingBrowserInfoConverter" />
2626
<bean class="org.vividus.visual.eyes.converter.StringToAccessibilitySettingsConverter" />
2727

28-
<bean id="visualTestingSteps" class="org.vividus.visual.eyes.VisualTestingSteps" >
28+
<bean id="visualTestingSteps" class="org.vividus.visual.eyes.VisualTestingSteps" parent="abstractVisualSteps">
2929
<constructor-arg index="2" ref="screenshotParametersFactory" />
3030
</bean>
3131

32-
<bean id="ufgSteps" class="org.vividus.visual.eyes.UfgSteps" />
32+
<bean id="ufgSteps" class="org.vividus.visual.eyes.UfgSteps" parent="abstractVisualSteps"/>
3333

3434
<bean id="eyesLogHandler" class="org.vividus.visual.eyes.logger.EyesLogHandler">
3535
<constructor-arg value="org.vividus.visual.eyes.service.ImageVisualTestingService" />

vividus-plugin-visual/src/main/resources/vividus-plugin/spring.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
<context:component-scan base-package="org.vividus.visual.storage" />
1010

11-
<bean id="visualSteps" class="org.vividus.visual.VisualSteps">
11+
<bean id="visualSteps" class="org.vividus.visual.VisualSteps" parent="abstractVisualSteps">
1212
<constructor-arg ref="screenshotParametersFactory" />
1313
</bean>
1414

0 commit comments

Comments
 (0)