|
16 | 16 | import com.aventstack.extentreports.GherkinKeyword; |
17 | 17 | import com.aventstack.extentreports.MediaEntityBuilder; |
18 | 18 | import com.aventstack.extentreports.Status; |
| 19 | +import com.aventstack.extentreports.gherkin.model.Given; |
19 | 20 | import com.aventstack.extentreports.markuputils.MarkupHelper; |
20 | 21 | import com.aventstack.extentreports.service.ExtentService; |
21 | 22 |
|
22 | 23 | import cucumber.api.PickleStepTestStep; |
23 | 24 | import cucumber.api.Result; |
24 | 25 | import cucumber.api.TestCase; |
| 26 | +import cucumber.api.TestStep; |
25 | 27 | import cucumber.api.event.EmbedEvent; |
26 | 28 | import cucumber.api.event.EventHandler; |
27 | 29 | import cucumber.api.event.EventPublisher; |
@@ -155,15 +157,48 @@ private synchronized void handleTestCaseStarted(TestCaseStarted event) { |
155 | 157 | } |
156 | 158 | } |
157 | 159 |
|
| 160 | + @SuppressWarnings("deprecation") |
158 | 161 | private synchronized void handleTestStepStarted(TestStepStarted event) { |
| 162 | + if (event.testStep.isHook()) { |
| 163 | + ExtentTest t = scenarioThreadLocal.get() |
| 164 | + .createNode(Given.class, event.testStep.getCodeLocation()); |
| 165 | + stepTestThreadLocal.set(t); |
| 166 | + } |
159 | 167 | if (event.testStep instanceof PickleStepTestStep) { |
160 | 168 | PickleStepTestStep testStep = (PickleStepTestStep) event.testStep; |
161 | 169 | createTestStep(testStep); |
162 | 170 | } |
163 | 171 | } |
164 | 172 |
|
165 | 173 | private synchronized void handleTestStepFinished(TestStepFinished event) { |
166 | | - updateResult(event.result); |
| 174 | + updateResult(event.testStep, event.result); |
| 175 | + } |
| 176 | + |
| 177 | + private synchronized void updateResult(TestStep step, Result result) { |
| 178 | + switch (result.getStatus().lowerCaseName()) { |
| 179 | + case "failed": |
| 180 | + stepTestThreadLocal.get().fail(result.getError()); |
| 181 | + break; |
| 182 | + case "skipped": |
| 183 | + case "pending": |
| 184 | + Boolean currentEndingEventSkipped = stepTestThreadLocal.get().getModel().getLogContext() != null |
| 185 | + && !stepTestThreadLocal.get().getModel().getLogContext().isEmpty() |
| 186 | + ? stepTestThreadLocal.get().getModel().getLogContext().getLast().getStatus() == Status.SKIP |
| 187 | + : false; |
| 188 | + if (result.getError() != null) { |
| 189 | + stepTestThreadLocal.get().skip(result.getError()); |
| 190 | + } else if (!currentEndingEventSkipped) { |
| 191 | + String details = result.getErrorMessage() == null ? "Step skipped" : result.getErrorMessage(); |
| 192 | + stepTestThreadLocal.get().skip(details); |
| 193 | + } |
| 194 | + break; |
| 195 | + case "passed": |
| 196 | + if (stepTestThreadLocal.get()!= null && stepTestThreadLocal.get().getModel().getLogContext().isEmpty()) |
| 197 | + stepTestThreadLocal.get().pass(""); |
| 198 | + break; |
| 199 | + default: |
| 200 | + break; |
| 201 | + } |
167 | 202 | } |
168 | 203 |
|
169 | 204 | private synchronized void handleEmbed(EmbedEvent event) { |
@@ -214,7 +249,12 @@ private URL toUrl(String fileName) { |
214 | 249 | } |
215 | 250 | } |
216 | 251 |
|
217 | | - private void handleWrite(WriteEvent event) { } |
| 252 | + private void handleWrite(WriteEvent event) { |
| 253 | + String text = event.text; |
| 254 | + if (text != null && !text.isEmpty()) { |
| 255 | + stepTestThreadLocal.get().info(text); |
| 256 | + } |
| 257 | + } |
218 | 258 |
|
219 | 259 | private void finishReport() { |
220 | 260 | ExtentService.getInstance().flush(); |
@@ -393,31 +433,4 @@ private Map<String, Object> createDocStringMap(PickleString docString) { |
393 | 433 | return docStringMap; |
394 | 434 | } |
395 | 435 |
|
396 | | - private synchronized void updateResult(Result result) { |
397 | | - switch (result.getStatus().lowerCaseName()) { |
398 | | - case "failed": |
399 | | - stepTestThreadLocal.get().fail(result.getError()); |
400 | | - break; |
401 | | - case "skipped": |
402 | | - case "pending": |
403 | | - Boolean currentEndingEventSkipped = stepTestThreadLocal.get().getModel().getLogContext() != null |
404 | | - && !stepTestThreadLocal.get().getModel().getLogContext().isEmpty() |
405 | | - ? stepTestThreadLocal.get().getModel().getLogContext().getLast().getStatus() == Status.SKIP |
406 | | - : false; |
407 | | - if (result.getError() != null) { |
408 | | - stepTestThreadLocal.get().skip(result.getError()); |
409 | | - } else if (!currentEndingEventSkipped) { |
410 | | - String details = result.getErrorMessage() == null ? "Step skipped" : result.getErrorMessage(); |
411 | | - stepTestThreadLocal.get().skip(details); |
412 | | - } |
413 | | - break; |
414 | | - case "passed": |
415 | | - if (stepTestThreadLocal.get()!= null && stepTestThreadLocal.get().getModel().getLogContext().isEmpty()) |
416 | | - stepTestThreadLocal.get().pass(""); |
417 | | - break; |
418 | | - default: |
419 | | - break; |
420 | | - } |
421 | | - } |
422 | | - |
423 | 436 | } |
0 commit comments