Allure Ruby Adaptor API
This is a helper library containing the basics for any ruby-based Allure adaptor.
Using it you can easily implement the adaptor for your favorite ruby testing library or
you can just create the report of any other kind using the basic Allure terms.
Setup
Add the dependency to your Gemfile
gem "allure-ruby-commons"
Configuration
Following configuration options are supported:
Allure.configure do |config|
config.results_directory = "report/allure-results"
config.clean_results_directory = true
config.logging_level = Logger::INFO
config.logger = Logger.new($stdout, Logger::DEBUG)
config.environment = "staging"
config.link_tms_pattern = "http://www.jira.com/browse/{}"
config.link_issue_pattern = "http://www.jira.com/browse/{}"
config.environment_properties = {
custom_attribute: "foo"
}
config.categories = File.new("my_custom_categories.json")
end
Getting the configuration object:
Allure.configuration
Allure execution environment
It is possible to set up custom allure environment which will be used as custom parameter environment
in every test case. This is useful if you run same tests on different environments and generate single report. This way different runs are not put as retry. Environment can be configured in following ways:
- via
ALLURE_ENVIRONMENT
environment variable - via
configure
method
Environment properties
To add additional environment information to the report it is possible to set configuration property environment_properties
.
Option can be set to hash or block returning a hash:
config.environment_properties = {
custom_attribute: "foo"
}
config.environment_properties = -> { { custom_attributes: "foo"} }
Log level
Log level can be also configured via environment variable ALLURE_LOG_LEVEL
which accepts one of the following values: DEBUG INFO WARN ERROR FATAL UNKNOWN
.
Allure lifecycle
Reports are built using API defined in AllureLifecycle class and using allure specific entities defined in models.
Example of building a simple test case can be seen in integration spec.
Convenience method Allure.lifecycle
exists for getting thread specific allure lifecycle instance.
Additional methods in Allure exist to add various custom attributes to test report.
Allure.add_attachment(name: "attachment", source: "Some string", type: Allure::ContentType::TXT, test_case: false)
Allure.add_attachment(name: "attachment", source: "/path/to/test.txt", type: Allure::ContentType::TXT, test_case: false)
Allure.add_link(name: "Custom Url", url: "http://www.github.com")
Steps
It is possible to mark method definitions to be automatically added to report as steps. The class just needs to extend AllureStepAnnotation
and step
method needs to be used before the method definition.
class TestHelper
extend AllureStepAnnotation
step("Singleton step")
def self.class_method; end
step("Standard step")
def standard_method; end
end
JSON parsing
Internally, allure-ruby-common produces JSON files. To improve performance, oj gem is used for parsing and generating JSON files if it is available. Otherwise default ruby json implementation is used.