class Cucumber::Messages::Attachment
Represents the Attachment
message in Cucumber’s message protocol.
//// Attachments (parse errors, execution errors, screenshots, links…)
*
An attachment represents any kind of data associated with a line in a [Source](#io.cucumber.messages.Source) file. It can be used for: * Syntax errors during parse time * Screenshots captured and attached during execution * Logs captured and attached during execution It is not to be used for runtime errors raised/thrown during execution. This is captured in `TestResult`.
Attributes
body[R]
*
The body of the attachment. If `contentEncoding` is `IDENTITY`, the attachment is simply the string. If it's `BASE64`, the string should be Base64 decoded to obtain the attachment.
content_encoding[R]
*
Whether to interpret `body` "as-is" (IDENTITY) or if it needs to be Base64-decoded (BASE64). Content encoding is *not* determined by the media type, but rather by the type of the object being attached: - string => IDENTITY - byte array => BASE64 - stream => BASE64
file_name[R]
*
Suggested file name of the attachment. (Provided by the user as an argument to `attach`)
media_type[R]
*
The media type of the data. This can be any valid [IANA Media Type](https://www.iana.org/assignments/media-types/media-types.xhtml) as well as Cucumber-specific media types such as `text/x.cucumber.gherkin+plain` and `text/x.cucumber.stacktrace+plain`
source[R]
test_case_started_id[R]
test_step_id[R]
url[R]
*
A URL where the attachment can be retrieved. This field should not be set by Cucumber. It should be set by a program that reads a message stream and does the following for each Attachment message: - Writes the body (after base64 decoding if necessary) to a new file. - Sets `body` and `contentEncoding` to `null` - Writes out the new attachment message This will result in a smaller message stream, which can improve performance and reduce bandwidth of message consumers. It also makes it easier to process and download attachments separately from reports.
Public Class Methods
from_h(hash)
click to toggle source
Returns a new Attachment
from the given hash. If the hash keys are camelCased, they are properly assigned to the corresponding snake_cased attributes.
Cucumber::Messages::Attachment.from_h(some_hash) # => #<Cucumber::Messages::Attachment:0x... ...>
# File lib/cucumber/messages.deserializers.rb, line 20 def self.from_h(hash) return nil if hash.nil? self.new( body: hash[:body], content_encoding: hash[:contentEncoding], file_name: hash[:fileName], media_type: hash[:mediaType], source: Source.from_h(hash[:source]), test_case_started_id: hash[:testCaseStartedId], test_step_id: hash[:testStepId], url: hash[:url], ) end
new( body: '', content_encoding: AttachmentContentEncoding::IDENTITY, file_name: nil, media_type: '', source: nil, test_case_started_id: nil, test_step_id: nil, url: nil )
click to toggle source
# File lib/cucumber/messages.dtos.rb, line 87 def initialize( body: '', content_encoding: AttachmentContentEncoding::IDENTITY, file_name: nil, media_type: '', source: nil, test_case_started_id: nil, test_step_id: nil, url: nil ) @body = body @content_encoding = content_encoding @file_name = file_name @media_type = media_type @source = source @test_case_started_id = test_case_started_id @test_step_id = test_step_id @url = url end