Skip to content

Commit 7b0e446

Browse files
committed
Another stab at making the {assert,verify}OnNext work properly
1 parent b668406 commit 7b0e446

File tree

1 file changed

+44
-11
lines changed

1 file changed

+44
-11
lines changed

java/server/src/org/openqa/selenium/server/htmlrunner/NonReflectiveSteps.java

Lines changed: 44 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import com.google.common.base.Suppliers;
2323
import com.google.common.collect.ImmutableMap;
2424

25+
import com.thoughtworks.selenium.SeleneseTestBase;
2526
import com.thoughtworks.selenium.Selenium;
2627
import com.thoughtworks.selenium.SeleniumException;
2728
import com.thoughtworks.selenium.webdriven.ElementFinder;
@@ -47,14 +48,16 @@ private static ImmutableMap<String, CoreStepFactory> build() {
4748
ImmutableMap.Builder<String, CoreStepFactory> steps = ImmutableMap.builder();
4849

4950
CoreStepFactory nextCommandFails = (locator, value) ->
50-
(selenium, state) -> new NextCommandFails();
51+
(selenium, state) -> new NextCommandFails(state.expand(locator));
5152
steps.put("assertErrorOnNext", nextCommandFails);
5253
steps.put("assertFailureOnNext", nextCommandFails);
5354

54-
CoreStepFactory verifyNextCommandFails = (locator, value) ->
55-
(selenium, state) -> new VerifyNextCommandFails();
56-
steps.put("verifyErrorOnNext", verifyNextCommandFails);
57-
steps.put("verifyFailureOnNext", verifyNextCommandFails);
55+
steps.put(
56+
"verifyErrorOnNext",
57+
(locator, value) -> (selenium, state) -> new VerifyNextCommandFails(state.expand(locator)));
58+
steps.put(
59+
"verifyFailureOnNext",
60+
(locator, value) -> (selenium, state) -> new VerifyNextCommandFails(state.expand(locator)));
5861

5962
class SelectedOption implements CoreStep {
6063

@@ -127,16 +130,31 @@ public NextStepDecorator execute(Selenium selenium, TestState state) {
127130
}
128131

129132
private static class NextCommandFails extends NextStepDecorator {
133+
private final String assertion;
134+
135+
public NextCommandFails(String assertion) {
136+
this.assertion = assertion;
137+
}
130138

131139
@Override
132140
public NextStepDecorator evaluate(CoreStep nextStep, Selenium selenium, TestState state) {
133141
NextStepDecorator actualResult = nextStep.execute(selenium, state);
134142

135-
// This is kind of fragile. Oh well.
136-
if (actualResult.equals(NextStepDecorator.IDENTITY)) {
143+
Throwable cause = actualResult.getCause();
144+
if (cause == null) {
137145
return NextStepDecorator.ASSERTION_FAILED("Expected command to fail");
138146
}
139-
return NextStepDecorator.IDENTITY;
147+
148+
if (!(cause instanceof SeleniumException)) {
149+
return actualResult;
150+
}
151+
152+
try {
153+
SeleneseTestBase.assertEquals(assertion, cause.getMessage());
154+
return NextStepDecorator.IDENTITY;
155+
} catch (AssertionError e) {
156+
return NextStepDecorator.ASSERTION_FAILED(e.getMessage());
157+
}
140158
}
141159

142160
@Override
@@ -146,16 +164,31 @@ public boolean isOkayToContinueTest() {
146164
}
147165

148166
private static class VerifyNextCommandFails extends NextStepDecorator {
167+
private final String assertion;
168+
169+
public VerifyNextCommandFails(String assertion) {
170+
this.assertion = assertion;
171+
}
149172

150173
@Override
151174
public NextStepDecorator evaluate(CoreStep nextStep, Selenium selenium, TestState state) {
152175
NextStepDecorator actualResult = nextStep.execute(selenium, state);
153176

154-
// This is kind of fragile. Oh well.
155-
if (actualResult.equals(NextStepDecorator.IDENTITY)) {
177+
Throwable cause = actualResult.getCause();
178+
if (cause == null) {
156179
return NextStepDecorator.VERIFICATION_FAILED("Expected command to fail");
157180
}
158-
return NextStepDecorator.IDENTITY;
181+
182+
if (!(cause instanceof SeleniumException)) {
183+
return actualResult;
184+
}
185+
186+
try {
187+
SeleneseTestBase.assertEquals(assertion, cause.getMessage());
188+
return NextStepDecorator.IDENTITY;
189+
} catch (AssertionError e) {
190+
return NextStepDecorator.VERIFICATION_FAILED(e.getMessage());
191+
}
159192
}
160193

161194
@Override

0 commit comments

Comments
 (0)