Code Monkey home page Code Monkey logo

agent-java-cucumber's Introduction

Cucumber2 Agent for ReportPortal

Download

Join Slack chat! stackoverflow UserVoice Build with Love

Installation

Add to POM.xml

dependency

<repositories>
     <repository>
        <snapshots>
          <enabled>false</enabled>
        </snapshots>
        <id>bintray-epam-reportportal</id>
        <name>bintray</name>
        <url>http://dl.bintray.com/epam/reportportal</url>
     </repository>
</repositories>



<dependency>
  <groupId>com.epam.reportportal</groupId>
  <artifactId>agent-java-cucumber2</artifactId>
  <version>4.0.0</version>
</dependency>

Install Reporter

As Cucumber runs your features, it calls out to any number of listener objects to let them know how it’s progressing. These listeners are notified at various points throughout the run of features. This principle is used to notify ReportPortal about your tests progress in real-time. ReportPortal supports two kinds of Reporters. Both of them allow you to report your execution progress to ReportPortal, but there are some differences in report structure.

  • Scenario Reporter
  • Step Reporter Step Reporter propagates the most traditional for ReportPortal test structure keeping your scenarios and steps inside as separate entities. In opposite, Scenario Reporter use scenario as the base point and does not separate step from each other which is sometimes more convenient for BDD users.

Enabling StepReporter:

@RunWith(Cucumber.class)
@CucumberOptions(plugin = {"pretty", "com.epam.reportportal.cucumber.StepReporter"})
public class RunCukesTest {
}

Enabling ScenarioReporter:

@RunWith(Cucumber.class)
@CucumberOptions(plugin = {"pretty", "com.epam.reportportal.cucumber.ScenarioReporter"})
public class RunCukesTest {
}

Configuration

Copy you configuration from UI of Report Portal at User Profile section

or

In order to start using of agent, user should configure property file "reportportal.properties" in such format:

reportportal.properties

rp.endpoint = https://rp.epam.com/
rp.username = default
rp.uuid = 8967de3b-fec7-47bb-9dbc-2aa4ceab8b1e
rp.launch = default_TEST_EXAMPLE
rp.project = default_project

## OPTIONAL PARAMETERS
rp.tags = TAG1;TAG2
rp.keystore.resource = reportportal-client-v2.jks
rp.keystore.password = reportportal

rp.batch.size.logs = 5

Parameters

User should provide next parameters to agent.

Parameter Description Required
rp.enable Enable/Disable logging to report portal: rp.enable=true - enable log to RP server. Any other value means 'false': rp.enable=false - disable log to RP server. If parameter is skipped in properties file then automation project results will be posted on RP. No
rp.username User name Yes
rp.password User password. We strongly recommend to use UUID or separate ReportPortal internal users password here to avoid domain password publishing. Yes
rp.uuid UUID of user. Yes
rp.endpoint URL of web service, where requests should be sent Yes
rp.launch The unique name of Launch (Run), based on that name a history of runs will be created for the particular name Yes
rp.project Project name, to identify scope Yes
rp.tags Set of tags for specifying additional meta information for current launch. Format: tag1;tag2;build:12345-6. Tags should be separated by “;”. There are one special tag- build – it should be used for specification number of build for launch. No
rp.batch.size.logs In order to rise up performance and reduce number of requests to server Yes
rp.keystore.resource Put your JKS file into resources and specify path to it
rp.keystore.password Access password for JKS (certificate storage) package, mentioned above
rp.convertimage Colored log images can be converted to grayscale for reducing image size. Values: ‘true’ – will be converted. Any other value means false. No
rp.mode Report portal provide possibility to specify visibility of executing launch. Currently supported two modes: DEFAULT - all users from project can see this launch; DEBUG - only owner can see this launch(in debug sub tab). Note: for all java based clients(TestNg, Junit) mode will be set automaticaly to "DEFAULT" if it is not specified. No
rp.skipped.issue Report Portal provide feature to mark skipped tests as not 'To Investigate' items on WS side. Parameter could be equal boolean values: TRUE - skipped tests considered as issues and will be mark as 'To Investigate' on portal. FALSE - skipped tests will not be mark as 'To Investigate' on portal. No

Launch name can be edited once, and should be edited once, before first execution. As usual, parts of launches are fixed for a long time. Keeping the same name for launch, here we will understand a fixed list of suites under launch, will help to have a history trend, and on UI instances of the same launch will be saved with postfix "#number", like "Test Launch #1", "Test Launch #2" etc.

If mandatory properties are missed client throw exception IllegalArgumentException.

Proxy configuration

The client uses standard java proxy mechanism. If you are new try Java networking and proxies page.

Ways to set up properties:

a. reportportal.properties file b. command line properties (-Dhttps.proxyHost=localhost)

How to provide parameters

There are two way to load parameters.

  • Load from properties file

Properties file should have name: “reportportal.properties”. Properties file can be situated on the class path (in the project directory).

If listener can’t find properties file it throws FileNotFoundException. By default “reportportal.properties” exists in the reportportall-client.jar, but user can create his own “reportportal.properties” file and put in class path.

  • Use system variables

Parameters loading order

Client loads properties in the next order. Every next level overrides previous:

a. Properties file. Client loads all known to him properties (specified in the "Input Parameters" section) from "reportportal.properties" file.

b. Environment variables. If environment variables with names specified in the "Input Parameters" section exist client reload existing properties from environment variables.

c. JVM variables. If JVM variables with names specified in the "Input Parameters" section exist, client overrides existing ones from JVM variables.

Events

  • TestRunStarted - the first event sent.
  • TestSourceRead - sent for each feature file read, contains the feature file source.
  • TestCaseStarted - sent before starting the execution of a Test Case(/Pickle/Scenario), contains the Test Case
  • TestStepStarted - sent before starting the execution of a Test Step, contains the Test Step
  • TestStepFinished - sent after the execution of a Test Step, contains the Test Step and its Result.
  • TestCaseFinished - sent after the execution of a Test Case(/Pickle/Scenario), contains the Test Case and its Result.
  • TestRunFinished - the last event sent.
  • EmbedEvent - calling scenario.embed in a hook triggers this event.
  • WriteEvent - calling scenario.write in a hook triggers this event.

Main methods

  • setEventPublisher(EventPublisher publisher) - the only method that should be overidden to implement Formatter functionality
  • beforeLaunch - manipulations before/after the launch is started
  • afterLaunch - manipulations before/after the launch is finished
  • beforeFeature - manipulations before/after new feature is started
  • afterFeature - manipulations before/after current feature is finished
  • beforeScenario - manipulations before/after new scenario is started
  • afterScenario - manipulations before/after current scenario is finished
  • startFeature - starting new feature
  • startLaunch - starting new launch
  • beforeStep - manipulations before/after new step is started
  • afterStep - manipulations before/after current step is finished
  • beforeHooks - manipulations before/after new hook is started
  • afterHooks - manipulations before/after current hook is finished

agent-java-cucumber's People

Contributors

avarabyeu avatar jurteg avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.