io.cucumber.scala.Scenario.scala Maven / Gradle / Ivy
package io.cucumber.scala
import java.net.URI
import java.util
import io.cucumber.core.backend.{Status, TestCaseState}
/** Before or After Hooks that declare a parameter of this type will receive an instance of this class.
* It allows writing text and embedding media into reports, as well as inspecting results (in an After block).
*
* Note: This class is not intended to be used to create reports. To create custom reports use
* the `io.cucumber.plugin.Plugin` class. The plugin system provides a much richer access to Cucumbers then
* hooks after could provide. For an example see `io.cucumber.core.plugin.PrettyFormatter`.
*/
class Scenario(val delegate: TestCaseState) {
/** @return tags of this scenario.
*/
def getSourceTagNames: util.Collection[String] = delegate.getSourceTagNames
/** Returns the current status of this test case.
*
* The test case status is calculate as the most severe status of the
* executed steps in the testcase so far.
*
* @return the current status of this test case
*/
def getStatus: Status = Status.valueOf(delegate.getStatus.name)
/** @return true if and only if `getStatus` returns "failed"
*/
def isFailed: Boolean = delegate.isFailed
/** Attach data to the report(s).
*
* {@code
* // Attach a screenshot. See your UI automation tool's docs for
* // details about how to take a screenshot.
* scenario.attach(pngBytes, "image/png", "Bartholomew and the Bytes of the Oobleck");
* }
*
*
* To ensure reporting tools can understand what the data is a
* {@code mediaType} must be provided. For example: {@code text/plain},
* {@code image/png}, {@code text/html;charset=utf-8}.
*
* Media types are defined in RFC 7231 Section 3.1.1.1.
*
* @param data what to attach, for example an image.
* @param mediaType what is the data?
* @param name attachment name
*/
def attach(data: Array[Byte], mediaType: String, name: String): Unit = {
delegate.attach(data, mediaType, name)
}
/** Attaches some text based data to the report.
*
* @param data what to attach, for example html.
* @param mediaType what is the data?
* @param name attachment name
* @see #attach(byte[], String, String)
*/
def attach(data: String, mediaType: String, name: String): Unit = {
delegate.attach(data, mediaType, name)
}
/** Outputs some text into the report.
*
* @param text what to put in the report.
*/
def log(text: String): Unit = {
delegate.log(text)
}
/** @return the name of the Scenario
*/
def getName: String = delegate.getName
/** Returns the unique identifier for this scenario.
*
* If this is a Scenario from Scenario Outlines this will return the id of
* the example row in the Scenario Outline.
*
* The id is not stable across multiple executions of Cucumber but does
* correlate with ids used in messages output. Use the uri + line number to
* obtain a somewhat stable identifier of a scenario.
*
* @return the id of the Scenario.
*/
def getId: String = delegate.getId
/** @return the uri of the Scenario.
*/
def getUri: URI = delegate.getUri
/** Returns the line in the feature file of the Scenario.
*
* If this is a Scenario from Scenario Outlines this will return the line of
* the example row in the Scenario Outline.
*
* @return the line in the feature file of the Scenario
*/
def getLine: Integer = delegate.getLine
}