Giter VIP home page Giter VIP logo

agent-java-testng's Introduction

ReportPortal Listener for TestNG tests

A TestNG reporter that uploads the results to a ReportPortal server.

DISCLAIMER: We use Google Analytics for sending anonymous usage information such as agent's and client's names, and their versions after a successful launch start. This information might help us to improve both ReportPortal backend and client sides. It is used by the ReportPortal team only and is not supposed for sharing with 3rd parties.

Maven Central CI Build codecov Join Slack chat! stackoverflow Build with Love

The latest version: 5.4.2. Please use Maven Central link above to get the agent. For TestNG version 7.1.0 and higher

Overview: How to Add ReportPortal Logging to Your Project

To start using ReportPortal with TestNG framework please do the following steps:

  1. Configuration
    • Create/update the reportportal.properties configuration file
    • Build system configuration
    • Add Listener
  2. Logging configuration
    • Loggers and their types
  3. Running tests
    • Build system commands
  4. Custom use examples

Configuration

'reportportal.properties' configuration file

To start using ReportPortal you need to create a file named reportportal.properties in your Java project in a source folder src/main/resources or src/test/resources (depending on where your tests are located):

reportportal.properties

rp.endpoint = http://localhost:8080
rp.api.key = e0e541d8-b1cd-426a-ae18-b771173c545a
rp.launch = TestNG Tests
rp.project = default_personal

Property description

  • rp.endpoint - the URL for the ReportPortal server (actual link).
  • rp.api.key - an access token for ReportPortal which is used for user identification. It can be found on your report portal user profile page.
  • rp.project - a project ID on which the agent will report test launches. Must be set to one of your assigned projects.
  • rp.launch - a user-selected identifier of test launches.

The full list of supported properties is located here in client-java library documentation (a common library for all Java agents): https://github.com/reportportal/client-java

Build system configuration

Maven

If your project is Maven-based you need to add dependencies to pom.xml file:

<project>
  <!-- project declaration omitted -->
  
  <dependency>
    <groupId>com.epam.reportportal</groupId>
    <artifactId>agent-java-testng</artifactId>
    <version>5.4.2</version>
    <scope>test</scope>
  </dependency>

  <!-- build config omitted -->
</project>

You are free to use you own version of TestNG, but not earlier than 7.1.0. If you leave just Agent dependency it will be still OK, it will use transitive TestNG version.

Gradle

For Gradle-based projects please update dependencies section in build.gradle file:

dependencies {
    testImplementation 'com.epam.reportportal:agent-java-testng:5.4.2'
}

Listener configuration

There are many ways to configure a listener in TestNG, but the most elegant and recommended way is to use a ServiceLoader file. Here is how you can do that:

  1. Create folders /META-INF/services in resources folder (src/main/resources or src/test/resources)
  2. Put there a file named org.testng.ITestNGListener
  3. Put a default implementation reference as a single row into the file: com.epam.reportportal.testng.ReportPortalTestNGListener

Example: /META-INF/services/org.testng.ITestNGListener

com.epam.reportportal.testng.ReportPortalTestNGListener

That's it! You are all set.

Logging

ReportPortal provides its own logger implementations for major logging frameworks like Log4j and Logback. It also provides additional formatting features for popular client and test libraries like: Selenide, Apache HttpComponents, Rest Assured, etc.

Here is the list of supported loggers and setup documentation links.

Logging frameworks:

Library name Documentation link
Log4j https://github.com/reportportal/logger-java-log4j
Logback https://github.com/reportportal/logger-java-logback

HTTP clients:

Library name Documentation link
OkHttp3 https://github.com/reportportal/logger-java-okhttp3
Apache HttpComponents https://github.com/reportportal/logger-java-httpcomponents

Test frameworks:

Library name Documentation link
Selenide https://github.com/reportportal/logger-java-selenide
Rest Assured https://github.com/reportportal/logger-java-rest-assured

Running tests

We are set. To run tests we just need to execute corresponding command in our build system.

Maven

mvn test or mvnw test if you are using Maven wrapper

Gradle

gradle test or gradlew test if you are using Gradle wrapper

Customization

Code example How to overload params in run-time

As a sample you can use code for Override UUID in run-time

	public static class MyListener extends BaseTestNGListener {
		public MyListener() {
			super(new ParamOverrideTestNgService());
		}
	}

	public static class ParamOverrideTestNgService extends TestNGService {
		public ParamOverrideTestNgService() {
			super(getLaunchOverriddenProperties());
		}

		private static Supplier<Launch> getLaunchOverriddenProperties() {
			ListenerParameters parameters = new ListenerParameters(PropertiesLoader.load());
			parameters.setApiKey("my crazy uuid");
			ReportPortal reportPortal = ReportPortal.builder().withParameters(parameters).build();
			StartLaunchRQ rq = buildStartLaunch(reportPortal.getParameters());
			return new Supplier<Launch>() {
				@Override
				public Launch get() {
					return reportPortal.newLaunch(rq);
				}
			};
		}

		private static StartLaunchRQ buildStartLaunch(ListenerParameters parameters) {
			StartLaunchRQ rq = new StartLaunchRQ();
			rq.setName(parameters.getLaunchName());
			rq.setStartTime(Calendar.getInstance().getTime());
			rq.setAttributes(parameters.getAttributes());
			rq.setMode(parameters.getLaunchRunningMode());
			if (!Strings.isNullOrEmpty(parameters.getDescription())) {
				rq.setDescription(parameters.getDescription());
			}

			return rq;
		}
	}

Example repository

There are two modules under Example project which represent agent usage with Lo4j and Logback loggers:

agent-java-testng's People

Contributors

avarabyeu avatar dzmitrykavalets avatar entrudo avatar filland avatar hardnorth avatar ihar-kahadouski avatar pbortnik avatar raikbitters avatar utdacc avatar yumfriez avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

agent-java-testng's Issues

Report portal not showing results with java 11

Hi team,
I've integrated report portal with my java-testNG framework. And I can see the results in my reportportal account of my execution.
Now I just updated my java version from java 1.8 to Java 11 in my machine and pom.xml. Now I'm not able to see my results in reportportal. Does reportportal supports java 11?

Please help me on this.

Thanks

Incorrect handling of TestNG reporting. Listener is defined in base class by annotation.

  1. Add listener using an annotation on a base test class.
@Listeners(ReportPortalTestNGListener.class)
public class BaseTest {
}
  1. Create several test classes extended from the base class
public class TestA extends BaseTest {

  @Test
  public void testFirst() {
    System.out.println("Run first test A");
  }

  @Test
  public void testSecond() {
    System.out.println("Run second test A");
  }
}
public class TestB extends BaseTest {

  @Test
  public void testFirst() {
    System.out.println("Run first test B");
  }

  @Test
  public void testSecond() {
    System.out.println("Run second test B");
  }
}
  1. Make a configuration xml file
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Example tests">

  <test name="Test A">
    <classes>
      <class name="com.epam.example.TestA"/>
    </classes>
  </test>

  <test name="Test B">
    <classes>
      <class name="com.epam.example.TestB"/>
    </classes>
  </test>
</suite>
  1. Run tests

Expected: Runs are correctly saved in RP

Actual:
Report Portal creates more than one test class.

image

Parallel run. Logs and attachments are messed up between different threads

Environment
Server version: 5.0.0
Client version: BETA-8
Logger version: BETA-8

Problem
It seems that testng client incorrectly manages RP_ID for test items running in parallel. Having 2+ threads logs and attachments are posted to incorrect threads.
image

How to reproduce
Sample project that reproduces the issue: rp-sample.zip
Usage: update reportportal.properties and run.

Getting Random error - Report portal is not functioning correctly. Response is not json

When running tests using testNg getting Report portal is not functioning correctly. Response is not json error.

com.epam.reportportal.exception.InternalReportPortalClientException: Report portal is not functioning correctly. Response is not json
at com.epam.reportportal.service.ReportPortalErrorHandler.handleError(ReportPortalErrorHandler.java:88)
at com.epam.reportportal.service.ReportPortalErrorHandler.handle(ReportPortalErrorHandler.java:59)
at com.epam.reportportal.restendpoint.http.HttpClientRestEndpoint$1.subscribe(HttpClientRestEndpoint.java:517)
at io.reactivex.internal.operators.maybe.MaybeCreate.subscribeActual(MaybeCreate.java:45)
at io.reactivex.Maybe.subscribe(Maybe.java:3727)
at io.reactivex.internal.operators.maybe.MaybeCache.subscribeActual(MaybeCache.java:77)
at io.reactivex.Maybe.subscribe(Maybe.java:3727)
at io.reactivex.internal.operators.maybe.MaybeSubscribeOn$SubscribeTask.run(MaybeSubscribeOn.java:54)
at io.reactivex.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:38)
at io.reactivex.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:26)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

Listeners order execution for RP agent

Steps:

Attach @listeners annotation
Define example listeners in next order: @listeners({ReportPortalTestNGListener.class, ScreenShooter.class})
In onTestFailure metod we have next line: this.testNGService.finishTestMethod("FAILED", testResult);
Due to listeners runing in random order, screenshot sometimes not attached to RP, becouse finishTestMethod runing before screenshot attach. Nordstrom/TestNG-Foundation don't help, becouse now they have a bug with different versions of testNG and Nordstrom.

зображення

Creation of tags

To create tags, I had the following line in reportportal.properties
rp.tags = "smoke" "1.4.6"

Testng agent created one tag in RP combining both tags: "smoke" "1.4.6". I expected two tags: "smoke" and "1.4.6", not one. pytest created two tags for the same line. Having multiple tags (to describe what is being run) help find specific launch.
testng
pytest

Duplicate tests in launch/lanch does not fininsh

I added reportportal to my project following the instructions here > https://github.com/reportportal/example-java-TestNG and using the @listeners annotation. The launches appear in reportportal and everything looks fine until the test runs end. The launch in RP never finishes and has to be forced to finish. The launches have duplicate suites, one of which finishes as expected, the other never finishes. This happens whether we run it locally/manually or use Jenkins. Does anyone have nay thoughts on why this is and how I can fix it? This is a selenium/java project ultimately running from a jenkins pipeline job.

Thx

UnrecognizedPropertyException while running testNG test cases with reportportal.io

Describe the bug
...
When tried to run testNg test cases with reportportal following error was encountered.

Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "number" (class com.epam.ta.reportportal.ws.model.EntryCreatedRS), not marked as ignorable (one known property: "id"]) at [Source: [B@3deca00c; line: 1, column: 12] (through reference chain: com.epam.ta.reportportal.ws.model.EntryCreatedRS["number"]) at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:62) at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:834) at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:1093) at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1489) at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1467) at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:282) at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:140) at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3814) at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2975) at com.epam.restendpoint.serializer.json.JacksonSerializer.deserialize(JacksonSerializer.java:49) ... 19 more Exception in thread "RxCachedThreadScheduler-7" io.reactivex.exceptions.OnErrorNotImplementedException: Unable to deserialize content at io.reactivex.internal.observers.EmptyCompletableObserver.onError(EmptyCompletableObserver.java:50) at io.reactivex.internal.operators.completable.CompletableSubscribeOn$SubscribeOnObserver.onError(CompletableSubscribeOn.java:74) at io.reactivex.internal.operators.completable.CompletableCache.onError(CompletableCache.java:81) at io.reactivex.internal.operators.completable.CompletableConcatArray$ConcatInnerObserver.onError(CompletableConcatArray.java:60) at io.reactivex.internal.operators.completable.CompletableConcatIterable$ConcatInnerObserver.onError(CompletableConcatIterable.java:72) at io.reactivex.internal.operators.maybe.MaybeIgnoreElementCompletable$IgnoreMaybeObserver.onError(MaybeIgnoreElementCompletable.java:73) at io.reactivex.internal.operators.maybe.MaybeCache.subscribeActual(MaybeCache.java:62) at io.reactivex.Maybe.subscribe(Maybe.java:3707) at io.reactivex.internal.operators.maybe.MaybeIgnoreElementCompletable.subscribeActual(MaybeIgnoreElementCompletable.java:37) at io.reactivex.Completable.subscribe(Completable.java:1634) at io.reactivex.internal.operators.completable.CompletableConcatIterable$ConcatInnerObserver.next(CompletableConcatIterable.java:119) at io.reactivex.internal.operators.completable.CompletableConcatIterable.subscribeActual(CompletableConcatIterable.java:47) at io.reactivex.Completable.subscribe(Completable.java:1634) at io.reactivex.internal.operators.completable.CompletableConcatArray$ConcatInnerObserver.next(CompletableConcatArray.java:89) at io.reactivex.internal.operators.completable.CompletableConcatArray.subscribeActual(CompletableConcatArray.java:33) at io.reactivex.Completable.subscribe(Completable.java:1634) at io.reactivex.internal.operators.completable.CompletableCache.subscribeActual(CompletableCache.java:59) at io.reactivex.Completable.subscribe(Completable.java:1634) at io.reactivex.internal.operators.completable.CompletableSubscribeOn$SubscribeOnObserver.run(CompletableSubscribeOn.java:64) at io.reactivex.Scheduler$1.run(Scheduler.java:138) at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:59) at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:51) at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266) at java.util.concurrent.FutureTask.run(FutureTask.java) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: com.epam.restendpoint.http.exception.SerializerException: Unable to deserialize content at com.epam.restendpoint.serializer.json.JacksonSerializer.deserialize(JacksonSerializer.java:51) at com.epam.restendpoint.http.HttpClientRestEndpoint$TypeConverterCallback.callback(HttpClientRestEndpoint.java:644) at com.epam.restendpoint.http.HttpClientRestEndpoint$1$1.completed(HttpClientRestEndpoint.java:560) at com.epam.restendpoint.http.HttpClientRestEndpoint$1$1.completed(HttpClientRestEndpoint.java:518) at rp.org.apache.http.concurrent.BasicFuture.completed(BasicFuture.java:119) at rp.org.apache.http.impl.nio.client.DefaultClientExchangeHandlerImpl.responseCompleted(DefaultClientExchangeHandlerImpl.java:177) at rp.org.apache.http.nio.protocol.HttpAsyncRequestExecutor.processResponse(HttpAsyncRequestExecutor.java:436) at rp.org.apache.http.nio.protocol.HttpAsyncRequestExecutor.inputReady(HttpAsyncRequestExecutor.java:326) at rp.org.apache.http.impl.nio.client.InternalRequestExecutor.inputReady(InternalRequestExecutor.java:83) at rp.org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput(DefaultNHttpClientConnection.java:265) at rp.org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:81) at rp.org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:39) at rp.org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:114) at rp.org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:162) at rp.org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:337) at rp.org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:315) at rp.org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:276) at rp.org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104) at rp.org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:588) ... 1 more Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "number" (class com.epam.ta.reportportal.ws.model.EntryCreatedRS), not marked as ignorable (one known property: "id"]) at [Source: [B@3deca00c; line: 1, column: 12] (through reference chain: com.epam.ta.reportportal.ws.model.EntryCreatedRS["number"]) at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:62) at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:834) at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:1093) at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1489) at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1467) at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:282) at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:140) at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3814) at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2975) at com.epam.restendpoint.serializer.json.JacksonSerializer.deserialize(JacksonSerializer.java:49) ... 19 more io.reactivex.exceptions.OnErrorNotImplementedException: Unable to deserialize content at io.reactivex.internal.functions.Functions$14.accept(Functions.java:229) at io.reactivex.internal.functions.Functions$14.accept(Functions.java:226) at io.reactivex.internal.operators.maybe.MaybeCallbackObserver.onError(MaybeCallbackObserver.java:81) at io.reactivex.internal.operators.maybe.MaybeSubscribeOn$SubscribeOnMaybeObserver.onError(MaybeSubscribeOn.java:96) at io.reactivex.internal.operators.maybe.MaybeCache.onError(MaybeCache.java:103) at io.reactivex.internal.operators.maybe.MaybeFlatten$FlatMapMaybeObserver.onError(MaybeFlatten.java:103) at io.reactivex.internal.operators.maybe.MaybeCache.subscribeActual(MaybeCache.java:62) at io.reactivex.Maybe.subscribe(Maybe.java:3707) at io.reactivex.internal.operators.maybe.MaybeFlatten.subscribeActual(MaybeFlatten.java:42) at io.reactivex.Maybe.subscribe(Maybe.java:3707) at io.reactivex.internal.operators.maybe.MaybeCache.subscribeActual(MaybeCache.java:77) at io.reactivex.Maybe.subscribe(Maybe.java:3707) at io.reactivex.internal.operators.maybe.MaybeSubscribeOn$SubscribeTask.run(MaybeSubscribeOn.java:54) at io.reactivex.Scheduler$1.run(Scheduler.java:138) at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:59) at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:51) at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266) at java.util.concurrent.FutureTask.run(FutureTask.java) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: com.epam.restendpoint.http.exception.SerializerException: Unable to deserialize content at com.epam.restendpoint.serializer.json.JacksonSerializer.deserialize(JacksonSerializer.java:51) at com.epam.restendpoint.http.HttpClientRestEndpoint$TypeConverterCallback.callback(HttpClientRestEndpoint.java:644) at com.epam.restendpoint.http.HttpClientRestEndpoint$1$1.completed(HttpClientRestEndpoint.java:560) at com.epam.restendpoint.http.HttpClientRestEndpoint$1$1.completed(HttpClientRestEndpoint.java:518) at rp.org.apache.http.concurrent.BasicFuture.completed(BasicFuture.java:119) at rp.org.apache.http.impl.nio.client.DefaultClientExchangeHandlerImpl.responseCompleted(DefaultClientExchangeHandlerImpl.java:177) at rp.org.apache.http.nio.protocol.HttpAsyncRequestExecutor.processResponse(HttpAsyncRequestExecutor.java:436) at rp.org.apache.http.nio.protocol.HttpAsyncRequestExecutor.inputReady(HttpAsyncRequestExecutor.java:326) at rp.org.apache.http.impl.nio.client.InternalRequestExecutor.inputReady(InternalRequestExecutor.java:83) at rp.org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput(DefaultNHttpClientConnection.java:265) at rp.org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:81) at rp.org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:39) at rp.org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:114) at rp.org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:162) at rp.org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:337) at rp.org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:315) at rp.org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:276) at rp.org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104) at rp.org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:588) ... 1 more Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "number" (class com.epam.ta.reportportal.ws.model.EntryCreatedRS), not marked as ignorable (one known property: "id"]) at [Source: [B@3deca00c; line: 1, column: 12] (through reference chain: com.epam.ta.reportportal.ws.model.EntryCreatedRS["number"]) at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:62) at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:834) at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:1093) at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1489) at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1467) at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:282) at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:140) at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3814) at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2975) at com.epam.restendpoint.serializer.json.JacksonSerializer.deserialize(JacksonSerializer.java:49) ... 19 more Exception in thread "RxCachedThreadScheduler-5" io.reactivex.exceptions.OnErrorNotImplementedException: Unable to deserialize content at io.reactivex.internal.functions.Functions$14.accept(Functions.java:229) at io.reactivex.internal.functions.Functions$14.accept(Functions.java:226) at io.reactivex.internal.operators.maybe.MaybeCallbackObserver.onError(MaybeCallbackObserver.java:81) at io.reactivex.internal.operators.maybe.MaybeSubscribeOn$SubscribeOnMaybeObserver.onError(MaybeSubscribeOn.java:96) at io.reactivex.internal.operators.maybe.MaybeCache.onError(MaybeCache.java:103) at io.reactivex.internal.operators.maybe.MaybeFlatten$FlatMapMaybeObserver.onError(MaybeFlatten.java:103) at io.reactivex.internal.operators.maybe.MaybeCache.subscribeActual(MaybeCache.java:62) at io.reactivex.Maybe.subscribe(Maybe.java:3707) at io.reactivex.internal.operators.maybe.MaybeFlatten.subscribeActual(MaybeFlatten.java:42) at io.reactivex.Maybe.subscribe(Maybe.java:3707) at io.reactivex.internal.operators.maybe.MaybeCache.subscribeActual(MaybeCache.java:77) at io.reactivex.Maybe.subscribe(Maybe.java:3707) at io.reactivex.internal.operators.maybe.MaybeSubscribeOn$SubscribeTask.run(MaybeSubscribeOn.java:54) at io.reactivex.Scheduler$1.run(Scheduler.java:138) at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:59) at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:51) at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266) at java.util.concurrent.FutureTask.run(FutureTask.java) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: com.epam.restendpoint.http.exception.SerializerException: Unable to deserialize content at com.epam.restendpoint.serializer.json.JacksonSerializer.deserialize(JacksonSerializer.java:51) at com.epam.restendpoint.http.HttpClientRestEndpoint$TypeConverterCallback.callback(HttpClientRestEndpoint.java:644) at com.epam.restendpoint.http.HttpClientRestEndpoint$1$1.completed(HttpClientRestEndpoint.java:560) at com.epam.restendpoint.http.HttpClientRestEndpoint$1$1.completed(HttpClientRestEndpoint.java:518) at rp.org.apache.http.concurrent.BasicFuture.completed(BasicFuture.java:119) at rp.org.apache.http.impl.nio.client.DefaultClientExchangeHandlerImpl.responseCompleted(DefaultClientExchangeHandlerImpl.java:177) at rp.org.apache.http.nio.protocol.HttpAsyncRequestExecutor.processResponse(HttpAsyncRequestExecutor.java:436) at rp.org.apache.http.nio.protocol.HttpAsyncRequestExecutor.inputReady(HttpAsyncRequestExecutor.java:326) at rp.org.apache.http.impl.nio.client.InternalRequestExecutor.inputReady(InternalRequestExecutor.java:83) at rp.org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput(DefaultNHttpClientConnection.java:265) at rp.org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:81) at rp.org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:39) at rp.org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:114) at rp.org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:162) at rp.org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:337) at rp.org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:315) at rp.org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:276) at rp.org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104) at rp.org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:588) ... 1 more Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "number" (class com.epam.ta.reportportal.ws.model.EntryCreatedRS), not marked as ignorable (one known property: "id"]) at [Source: [B@3deca00c; line: 1, column: 12] (through reference chain: com.epam.ta.reportportal.ws.model.EntryCreatedRS["number"]) at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:62) at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:834) at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:1093) at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1489) at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1467) at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:282) at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:140) at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3814) at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2975) at com.epam.restendpoint.serializer.json.JacksonSerializer.deserialize(JacksonSerializer.java:49) ... 19 more

dependencies used :
`

4.0.0
com.testvagrant.codingRound
codoingRound
1.0-SNAPSHOT

<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>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.12.RELEASE</version>
</parent>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>8</source>
                <target>8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.15</version>
            <configuration>
                <properties>
                    <property>
                        <name>usedefaultlisteners</name>
                        <value>false</value> <!-- disabling default listeners is optional -->
                    </property>
                    <property>
                        <name>listener</name>
                        <value>com.epam.reportportal.testng.ReportPortalTestNGListener</value>
                    </property>
                </properties>
            </configuration>
        </plugin>
    </plugins>
</build>
<dependencies>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.6.0</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>6.14.3</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.8</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>io.github.bonigarcia</groupId>
        <artifactId>webdrivermanager</artifactId>
        <version>3.4.0</version>
        <!--<scope>test</scope>-->
    </dependency>
    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>22.0</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>4.3.8.RELEASE</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.epam.reportportal</groupId>
        <artifactId>agent-java-testng</artifactId>
        <version>3.0.0</version>
    </dependency>
    <!-- TODO Leave only one dependency, depends on what logger you use: -->
    <!--<dependency>-->
        <!--<groupId>com.epam.reportportal</groupId>-->
        <!--<artifactId>logger-java-logback</artifactId>-->
        <!--<version>3.0.0</version>-->
    <!--</dependency>-->
    <!--<dependency>-->
        <!--<groupId>com.epam.reportportal</groupId>-->
        <!--<artifactId>logger-java-log4j</artifactId>-->
        <!--<version>3.0.0</version>-->
    <!--</dependency>-->
</dependencies>

`

Expected behaviour
Tests are getting recognized in reportportal dashboard but no metrics are displayed.

Screenshots
If applicable
image
All test case results are blank and are in loading state, whereas in actual all test cases have run.

Versions:

  • OS, Browser
    LinuxMint - 19
    Browser - chrome 69
  • Version of RP [find it under Login form, copy as is]
    Current version: API Service: 4.3.4; Index Service: 4.2.0; Jira Service: 4.3.0; Rally Service: 4.3.0; Authorization Service: 4.2.0; Service UI: 4.3.6;

agent doesn't work with latest version of TestNG

Please update TestNG dependency version to latest.

Currently with TestNG 6.14.3 after execution I gen an error:
java.lang.NullPointerException at com.epam.reportportal.testng.TestNGService.buildFinishTestMethodRq(TestNGService.java:324) at com.epam.reportportal.testng.TestNGService.finishTestMethod(TestNGService.java:155) at com.epam.reportportal.testng.BaseTestNGListener.onTestSkipped(BaseTestNGListener.java:103) at org.testng.internal.TestListenerHelper.runTestListeners(TestListenerHelper.java:61) at org.testng.internal.Invoker.runTestListeners(Invoker.java:1388) at org.testng.internal.Invoker.invokeMethod(Invoker.java:633) at org.testng.internal.Invoker.retryFailed(Invoker.java:838) at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1009) at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125) at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109) at org.testng.TestRunner.privateRun(TestRunner.java:648) at org.testng.TestRunner.run(TestRunner.java:505) at org.testng.SuiteRunner.runTest(SuiteRunner.java:455) at org.testng.SuiteRunner.access$000(SuiteRunner.java:40) at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:489) at org.testng.internal.thread.ThreadUtil$1.call(ThreadUtil.java:52) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)

With version 6.11 there is no such problem

Error when throwing SkipException from BeforeClass method when using agent-java-testng

Hi,

When trying to throw skip exception from a BeforeClass method, there is an error in the Report Portal (See below).

We are using the Following:
TestNG Version: 6.11 (Happens also with 6.14.2)
Report Portal Version: 4.0.0
agent-java-testng version: 4.0.0

I’m attaching an example project - skip.zip

The stack trace is:
io.reactivex.exceptions.OnErrorNotImplementedException: Report Portal returned error Status code: 406 Status message: Not Acceptable Error Message: Finish test item is not allowed. Test item '5ad343722ab79c0001eb1646' has descendants with 'IN_PROGRESS' status. All descendants '[TestItemid='5ad343722ab79c0001eb1647', ...
Full stack trace attached:
Full Stack Trace.txt

ReportPortal TestNg java is not finishing the launch in case of TestNG process interuption

I have the an issue, when the TestNg execution is interrupted or failed for some reasons , the launch is not finished. and I have to force finish the launch

Example: Start a testNg test from InteliJ IDEA , then stop the running from the IDEA also before it ends testing. the issue will appear.

Could you please explain how to programmatically force finish from testNG Java client the interrupted launches.

Thanks.

Sending screenshots to Report Portal from project on docker

Hi,

I have configured my testNG project for sending screenshots to Report Portal but it works only when I run the project locally on my Windows laptop.
Report Portal docker is deployed on linux server.

When I start the project with our Jenkins which is working on docker (the same server) I can see RP_MESSAGE#BASE64# .. etc " log in the proper form but file doesnt appear in ReportPortal.

Is there any addtional service, port settings I should apply to our Jenkins docker that it can send files to Report Portal?
I suppose there is some problem with communication between dockers?
How to check if there was a try of sending this file?

For runnig Report portal I have used default docker file just changed port to 8666.

docker-compose (1).txt

Thanks,
Radek

Reportportal with Selenium Grid

This is not an issue. Just an understanding I need before integrating ReportPortal with Selenium Grid for parallel execution on different machines.

i.e...
If we have a host machine(from where execution is triggered and ReportPortal is hosted) and parallel execution takes place on multiple machines(nodes) via Selenium grid.

After execution does Reportportal create a single launch only on host for all test cases that executed on different nodes ?
All nodes execution --- > Single Launch
or do we have different launches for each execution on node respectively
Node 1 ---- > Launch 1
Node 2 ---- > Launch 2

If second case,then how can we combine multiple launches in RP in Java + TestNg ?

Thanks,
Kunal

"ItemID cannot be null" exception is thrown when test failed.

Prerequisites
client agent-java-testng - 4.0.2 (https)
server 4.1.0

Steps to reproduce

  1. Assert.fail in BeforeClass section
  2. Run the test

Expected Result: Test is skipped
Actual Result: test throws exception listed below:
java.lang.IllegalArgumentException: ItemID should not be null at rp.com.google.common.base.Preconditions.checkArgument(Preconditions.java:122) at com.epam.reportportal.service.LaunchImpl.finishTestItem(LaunchImpl.java:230) at com.epam.reportportal.testng.TestNGService.finishTestMethod(TestNGService.java:157) at com.epam.reportportal.testng.BaseTestNGListener.onTestFailure(BaseTestNGListener.java:98) at org.testng.internal.TestListenerHelper.runTestListeners(TestListenerHelper.java:67) at org.testng.internal.Invoker.runTestListeners(Invoker.java:1389) at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1042) at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125) at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109) at org.testng.TestRunner.privateRun(TestRunner.java:648) at org.testng.TestRunner.run(TestRunner.java:505) at org.testng.SuiteRunner.runTest(SuiteRunner.java:455) at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450) at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415) at org.testng.SuiteRunner.run(SuiteRunner.java:364) at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84) at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)

AdditionalStackTrace.txt

Note We tested on different testng adapter versions:
client agent-java-testng - 3.0.6 (http) - issue isn't reproducible
client agent-java-testng - 3.0.6 (https) - issue is reproducible
client agent-java-testng - 4.0.2 (https) - issue is reproducible

Report Portal is on http 8080. ELB redirects traffic from http to https.
Hence the issue is on client side.

The issue is critical because launches don't finish.

Launch not finished if testng SkipException thrown in Before/After methods

Seems, SkipException in Before/After methods not handled correctly.

Problem actual for Before/After Suite, Before/After Test, Before/After Class, Before/After Method. Before/After Group not tested.

1 Test launch hangs and not finished

2 Counfiguration methods duplicated

image
error.log

image

        <dependency>
            <groupId>com.epam.reportportal</groupId>
            <artifactId>agent-java-testng</artifactId>
            <version>4.0.1</version>
        </dependency>
        <dependency>
            <groupId>com.epam.reportportal</groupId>
            <artifactId>logger-java-log4j</artifactId>
            <version>4.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.14.3</version> //6.11 the same
        </dependency>

To Reproduce (groovy code)

import com.epam.reportportal.testng.ReportPortalTestNGListener
import org.testng.SkipException
import org.testng.annotations.BeforeClass
import org.testng.annotations.Listeners

@Listeners([ReportPortalTestNGListener])
class Test {

    @BeforeClass
    public void before(){
        throw new SkipException("text")
    }

    @org.testng.annotations.Test
    public void test1(){
        sleep(1000)
    }

    @org.testng.annotations.Test
    public void test2(){
        sleep(1000)
    }

    @org.testng.annotations.Test
    public void test3(){
        sleep(1000)
    }

}

NullPointerException in ReportPortalTestNGListener

NullPointerException in ReportPortalTestNGListener with version testNG 6.9.13. *

Method addListener(Object listener) in this version is marked as @deprecated, possible cause of the error somehow connected with it.
Do you support the version testNG 6.9.13.0 and above?

Code

    public static void main(String[] args) throws JAXBException, IOException {
        ReportPortalTestNGListener reportPortalTestNGListener = new ReportPortalTestNGListener();
        TestNG testNG = new TestNG();
        List<XmlSuite> suites = new ArrayList<>();
        suites.add(new TestRailApiSuite());
        suites.add(new YandexDNSApiSuite());
        testNG.setXmlSuites(suites);
        testNG.setSuiteThreadPoolSize(SUITE_THREAD_POOL_SIZE);
        List<Class<? extends ITestNGListener>> listeners = new ArrayList<>();
        listeners.add(SuiteListener.class);
        testNG.setListenerClasses(listeners);
        testNG.addListener((Object) reportPortalTestNGListener);
        testNG.setUseDefaultListeners(false);
        testNG.run();
    }

Run result

Exception in thread "pool-1-thread-1" Exception in thread "pool-1-thread-2" java.lang.NullPointerException
	at com.epam.reportportal.testng.ReportPortalTestNGListener.onStart(ReportPortalTestNGListener.java:68)
	at org.testng.SuiteRunner.invokeListeners(SuiteRunner.java:210)
	at org.testng.SuiteRunner.run(SuiteRunner.java:268)
	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
java.lang.NullPointerException
	at com.epam.reportportal.testng.ReportPortalTestNGListener.onStart(ReportPortalTestNGListener.java:68)
	at org.testng.SuiteRunner.invokeListeners(SuiteRunner.java:210)
	at org.testng.SuiteRunner.run(SuiteRunner.java:268)
	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

UPD
The reason for errors in multithreaded start on suites.
If you set testNG.setSuiteThreadPoolSize(1); еrror do not arise

Error when TestNG suite contains more than one <test> section

[2017-04-12 12:34:57,362] [DEBUG] [I/O dispatcher 3-28] ReportPortal item with ID '58edf4c1adbe1d00073e0c25' has been created
[2017-04-12 12:34:57,362] [DEBUG] [I/O dispatcher 4-29] ReportPortal item with ID '58edf4c1adbe1d00073e0c23' has been created
io.reactivex.exceptions.OnErrorNotImplementedException: Report Portal returned error
Status code: 406
Status message: 
Error Message: Reporting for item 58edf4a6adbe1d00073e0305 already finished. Please, check item status.
Error Type: REPORTING_ITEM_ALREADY_FINISHED

	at io.reactivex.internal.observers.EmptyCompletableObserver.onError(EmptyCompletableObserver.java:50)
	at io.reactivex.internal.operators.completable.CompletableSubscribeOn$SubscribeOnObserver.onError(CompletableSubscribeOn.java:74)
	at io.reactivex.internal.operators.completable.CompletableCache.onError(CompletableCache.java:81)
	at io.reactivex.internal.operators.completable.CompletableConcatArray$ConcatInnerObserver.onError(CompletableConcatArray.java:60)
	at io.reactivex.internal.operators.completable.CompletableConcatIterable$ConcatInnerObserver.onError(CompletableConcatIterable.java:72)
	at io.reactivex.internal.operators.completable.CompletableCache.subscribeActual(CompletableCache.java:64)
	at io.reactivex.Completable.subscribe(Completable.java:1634)
	at io.reactivex.internal.operators.completable.CompletableConcatIterable$ConcatInnerObserver.next(CompletableConcatIterable.java:119)
	at io.reactivex.internal.operators.completable.CompletableConcatIterable.subscribeActual(CompletableConcatIterable.java:47)
	at io.reactivex.Completable.subscribe(Completable.java:1634)
	at io.reactivex.internal.operators.completable.CompletableConcatArray$ConcatInnerObserver.next(CompletableConcatArray.java:89)
	at io.reactivex.internal.operators.completable.CompletableConcatArray.subscribeActual(CompletableConcatArray.java:33)
	at io.reactivex.Completable.subscribe(Completable.java:1634)
	at io.reactivex.internal.operators.completable.CompletableCache.subscribeActual(CompletableCache.java:59)
	at io.reactivex.Completable.subscribe(Completable.java:1634)
	at io.reactivex.internal.operators.completable.CompletableSubscribeOn$SubscribeOnObserver.run(CompletableSubscribeOn.java:64)
	at io.reactivex.Scheduler$1.run(Scheduler.java:138)
	at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:59)
	at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:51)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
Caused by: com.epam.reportportal.exception.ReportPortalException: Report Portal returned error
Status code: 406
Status message: 
Error Message: Reporting for item 58edf4a6adbe1d00073e0305 already finished. Please, check item status.
Error Type: REPORTING_ITEM_ALREADY_FINISHED

	at com.epam.reportportal.service.ReportPortalErrorHandler.handleError(ReportPortalErrorHandler.java:62)
	at com.epam.restendpoint.http.DefaultErrorHandler.handle(DefaultErrorHandler.java:56)
	at com.epam.restendpoint.http.HttpClientRestEndpoint$1$1.completed(HttpClientRestEndpoint.java:547)
	at com.epam.restendpoint.http.HttpClientRestEndpoint$1$1.completed(HttpClientRestEndpoint.java:518)
	at rp.org.apache.http.concurrent.BasicFuture.completed(BasicFuture.java:119)
	at rp.org.apache.http.impl.nio.client.DefaultClientExchangeHandlerImpl.responseCompleted(DefaultClientExchangeHandlerImpl.java:177)
	at rp.org.apache.http.nio.protocol.HttpAsyncRequestExecutor.processResponse(HttpAsyncRequestExecutor.java:436)
	at rp.org.apache.http.nio.protocol.HttpAsyncRequestExecutor.inputReady(HttpAsyncRequestExecutor.java:326)
	at rp.org.apache.http.impl.nio.client.InternalRequestExecutor.inputReady(InternalRequestExecutor.java:83)
	at rp.org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput(DefaultNHttpClientConnection.java:265)
	at rp.org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:81)
	at rp.org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:39)
	at rp.org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:114)
	at rp.org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:162)
	at rp.org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:337)
	at rp.org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:315)
	at rp.org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:276)
	at rp.org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104)
	at rp.org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:588)
	... 1 more
Exception in thread "RxCachedThreadScheduler-10" io.reactivex.exceptions.OnErrorNotImplementedException: Report Portal returned error
Status code: 406
Status message: 
Error Message: Reporting for item 58edf4a6adbe1d00073e0305 already finished. Please, check item status.
Error Type: REPORTING_ITEM_ALREADY_FINISHED

	at io.reactivex.internal.observers.EmptyCompletableObserver.onError(EmptyCompletableObserver.java:50)
	at io.reactivex.internal.operators.completable.CompletableSubscribeOn$SubscribeOnObserver.onError(CompletableSubscribeOn.java:74)
	at io.reactivex.internal.operators.completable.CompletableCache.onError(CompletableCache.java:81)
	at io.reactivex.internal.operators.completable.CompletableConcatArray$ConcatInnerObserver.onError(CompletableConcatArray.java:60)
	at io.reactivex.internal.operators.completable.CompletableConcatIterable$ConcatInnerObserver.onError(CompletableConcatIterable.java:72)
	at io.reactivex.internal.operators.completable.CompletableCache.subscribeActual(CompletableCache.java:64)
	at io.reactivex.Completable.subscribe(Completable.java:1634)
	at io.reactivex.internal.operators.completable.CompletableConcatIterable$ConcatInnerObserver.next(CompletableConcatIterable.java:119)
	at io.reactivex.internal.operators.completable.CompletableConcatIterable.subscribeActual(CompletableConcatIterable.java:47)
	at io.reactivex.Completable.subscribe(Completable.java:1634)
	at io.reactivex.internal.operators.completable.CompletableConcatArray$ConcatInnerObserver.next(CompletableConcatArray.java:89)
	at io.reactivex.internal.operators.completable.CompletableConcatArray.subscribeActual(CompletableConcatArray.java:33)
	at io.reactivex.Completable.subscribe(Completable.java:1634)
	at io.reactivex.internal.operators.completable.CompletableCache.subscribeActual(CompletableCache.java:59)
	at io.reactivex.Completable.subscribe(Completable.java:1634)
	at io.reactivex.internal.operators.completable.CompletableSubscribeOn$SubscribeOnObserver.run(CompletableSubscribeOn.java:64)
	at io.reactivex.Scheduler$1.run(Scheduler.java:138)
	at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:59)
	at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:51)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
Caused by: com.epam.reportportal.exception.ReportPortalException: Report Portal returned error
Status code: 406
Status message: 
Error Message: Reporting for item 58edf4a6adbe1d00073e0305 already finished. Please, check item status.
Error Type: REPORTING_ITEM_ALREADY_FINISHED

	at com.epam.reportportal.service.ReportPortalErrorHandler.handleError(ReportPortalErrorHandler.java:62)
	at com.epam.restendpoint.http.DefaultErrorHandler.handle(DefaultErrorHandler.java:56)
	at com.epam.restendpoint.http.HttpClientRestEndpoint$1$1.completed(HttpClientRestEndpoint.java:547)
	at com.epam.restendpoint.http.HttpClientRestEndpoint$1$1.completed(HttpClientRestEndpoint.java:518)
	at rp.org.apache.http.concurrent.BasicFuture.completed(BasicFuture.java:119)
	at rp.org.apache.http.impl.nio.client.DefaultClientExchangeHandlerImpl.responseCompleted(DefaultClientExchangeHandlerImpl.java:177)
	at rp.org.apache.http.nio.protocol.HttpAsyncRequestExecutor.processResponse(HttpAsyncRequestExecutor.java:436)
	at rp.org.apache.http.nio.protocol.HttpAsyncRequestExecutor.inputReady(HttpAsyncRequestExecutor.java:326)
	at rp.org.apache.http.impl.nio.client.InternalRequestExecutor.inputReady(InternalRequestExecutor.java:83)
	at rp.org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput(DefaultNHttpClientConnection.java:265)
	at rp.org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:81)
	at rp.org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:39)
	at rp.org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:114)
	at rp.org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:162)
	at rp.org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:337)
	at rp.org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:315)
	at rp.org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:276)
	at rp.org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104)
	at rp.org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:588)
	... 1 more

If there is a single section then everything is OK.

<suite name="Tests" verbose="2" configfailurepolicy="continue" parallel="classes" thread-count="10">
    <test name="Validation">
        <packages>
            <package name="com.validate"/>
        </packages>
    </test>
</suite>

And the following will produce REPORTING_ITEM_ALREADY_FINISHED error:

<suite name="Tests" verbose="2" configfailurepolicy="continue" parallel="classes" thread-count="10">
    <test name="Validation">
        <packages>
            <package name="com.validate"/>
        </packages>
    </test>
    <test name="Work">
        <packages>
            <package name="com.work"/>
        </packages>
    </test>
</suite>

UUID For launch not changing

TestNG Agent: BETA-9
Log4J2 Version: BETA-9

Setuped Admin UUID, all works correctly, after changed to another UUID, in result old UUID setuped in Report Portul, but in properties file it's new.

NPE for skipped test

Libs:

    rpTestngAgentVersion = '4.0.1'
    rpLog4jVersion = '4.0.0'
    rpLogbackVersion = '4.0.0'
    testngVersion = '6.14.2'

Steps to reproduce:

  1. Create Example.java
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

public class Example {

    @BeforeMethod
    public void before() {
        Assert.assertTrue(false);
    }

    @Test
    public void test() {
        Assert.assertTrue(true);
    }
}
  1. Add it to testng.xml
    <test name="Example test">
        <classes>
            <class name="Example" />
        </classes>
    </test>
  1. Run via command line ./gradlew clean test

Actual result:

  • test failed by NPE
java.lang.NullPointerException
	at com.epam.reportportal.testng.TestNGService.buildFinishTestMethodRq(TestNGService.java:324)
	at com.epam.reportportal.testng.TestNGService.finishTestMethod(TestNGService.java:155)
	at com.epam.reportportal.testng.BaseTestNGListener.onTestSkipped(BaseTestNGListener.java:103)

Error Message: Incorrect Request. [Field 'type' shouldn't be null.]

`com.epam.reportportal.exception.ReportPortalException: Report Portal returned error
Status code: 400
Status message: Bad Request
Error Message: Incorrect Request. [Field 'type' shouldn't be null.]
Error Type: INCORRECT_REQUEST

at com.epam.reportportal.service.ReportPortalErrorHandler.handleError(ReportPortalErrorHandler.java:83)
at com.epam.reportportal.service.ReportPortalErrorHandler.handle(ReportPortalErrorHandler.java:59)
at com.epam.reportportal.restendpoint.http.HttpClientRestEndpoint$1.subscribe(HttpClientRestEndpoint.java:517)
at io.reactivex.internal.operators.maybe.MaybeCreate.subscribeActual(MaybeCreate.java:45)
at io.reactivex.Maybe.subscribe(Maybe.java:3727)
at io.reactivex.internal.operators.maybe.MaybeCache.subscribeActual(MaybeCache.java:77)
at io.reactivex.Maybe.subscribe(Maybe.java:3727)
at io.reactivex.internal.operators.maybe.MaybeSubscribeOn$SubscribeTask.run(MaybeSubscribeOn.java:54)
at io.reactivex.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:38)
at io.reactivex.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:26)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)`

XML suite name="Name" verbose="1" parallel="instances" thread-count="4"

testNG version: 7.0.0
agent-java-testng: 4.2.0
logger-java-logback: 4.0.5
RP version: API Service: 4.3.1

Have you any solution for that?

[v5] WARNING: Invalid cookie header: 'Invalid 'expires' attribute'

Describe the bug
I have WARNING in my java autotest console, when I run tests using report portal

апр. 16, 2020 2:29:21 PM rp.org.apache.http.client.protocol.ResponseProcessCookies processCookies WARNING: Invalid cookie header: "Set-Cookie: AWSALB=P7cqG8g/K70xHAKOUPrWrG0XgmhG8GJNinj8lDnKVyITyubAen2lBr+fSa/e2JAoGksQphtImp49rZxc41qdqUGvAc67SdZHY1BMFIHKzc8kyWc1oQjq6oI+s39U; Expires=Thu, 23 Apr 2020 11:29:18 GMT; Path=/". Invalid 'expires' attribute: Thu, 23 Apr 2020 11:29:18 GMT

libraries(use java 13):
com.epam.reportportal.agent-java-testng:5.0.0-BETA-9
com.epam.reportportal.logger-java-log4j:5.0.0-BETA-9

Expected behavior
No WARNING

Installed:
'analyzer': '5.0.0',
'api': '5.0.0',
'index': '5.0.5',
'migrations': '5.0.0',
'uat': '5.0.0',
'ui': '5.0.0',
rabbit 3.8.3
pg12
minio/minio:latest
elk_version: 7.6.1

java.lang.NoClassDefFound Error: rp/com/google/common/base/Supplier[v5]

java.lang.NoClassDefFound
Caused by: java.lang.ClassNotFoundException: rp.com.google.common.base.Supplier
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more

Using TestNG runner and listeners
ReportPortalTestNGListener listener = new ReportPortalTestNGListener();
TestNG testNg = new TestNG();
List lSuites = new ArrayList();
Collections.addAll(lSuites, "path.xml");
testNg.setTestSuites(lSuites);
testNg.addListener(listener);
testNg.run();

Desktop (please complete the following information):

  • OS: [e.g. Windows 10]
  • Browser Firefox

Project Spec

  • Gradle
  • Java
    Can any one help me to resolve this issue.

Thanks

Duplicate Suite name is coming for each run inside launch

Hello Team,
For my every run , I see two suite name(duplicate) inside the launch. One is always in interrupted state and another one contains all my test cases with a log. Seems like duplicate suite name is logged into the report.
I am attaching a screenshot for the same. Do let me know if any logs are required for this.
Also, Launch contains logs for after method. As per my understanding after method logs should be inside the test method log only because after execution of after method a test case will complete.
I am also attaching a screenshot for that. Kindly advice.

image

image

UNCLASSIFIED_ERROR when I run TestNG test and send the reports to RP

I installed RP and also configured it based on the instructions in the documentation. I was able to signin successfully into the portal. Also I got the UDID and updated the reportportal.proprties.

However I see the following error when I run the test case provided in the github example testng project.

[RemoteTestNG] detected TestNG version 6.13.1
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
2018-10-10 10:06:54,490 [main] INFO  com.epam.rp.tests.logging.JsonLoggingTest - RP_MESSAGE#BASE64#ewogICJURlMiOiB7CiAgICAiYnVpbGQiOiB7CiAgICAgICJuYW1lIjogIlRGUyBTZXJ2aWNlIiwKICAgICAgImRlc2NyaXB0aW9uIjogIlJlcG9ydFBvcnRhbCBURlMgSW50ZWdyYXRpb24iLAogICAgICAidmVyc2lvbiI6ICIyLjUuMS4zLVNOQVBTSE9UIiwKICAgICAgImJyYW5jaCI6ICJIRUFELWY2NDllMWNjZWM2NmI3YzdmZDdhNzc4NzY4NjI3YzI4ZThjY2JkMmUiCiAgICB9CiAgfSwKICAiR0FURVdBWSI6IHsKICAgICJidWlsZCI6IHsKICAgICAgIm5hbWUiOiAiR2F0ZXdheSBTZXJ2aWNlIiwKICAgICAgImRlc2NyaXB0aW9uIjogIlJlcG9ydFBvcnRhbCBHYXRld2F5IFNlcnZpY2UiLAogICAgICAidmVyc2lvbiI6ICIzLjAuMC1TTkFQU0hPVCIsCiAgICAgICJicmFuY2giOiAiSEVBRC03MDUyNTBmNGI0NmIzMjZmY2E2NjY4MWE2ZGU3MzZhMzg4OTQyNmE2IgogICAgfQogIH0sCiAgIlVJIjogewogICAgImJ1aWxkIjogewogICAgICAibmFtZSI6ICJVSSBTZXJ2aWNlIiwKICAgICAgImRlc2NyaXB0aW9uIjogIlJlcG9ydFBvcnRhbCBVc2VyIEludGVyZmFjZSIsCiAgICAgICJ2ZXJzaW9uIjogIjIuNy4xLVNOQVBTSE9UIiwKICAgICAgImJyYW5jaCI6ICJAYnJhbmNoQCIKICAgIH0KICB9LAogICJSQUxMWSI6IHsKICAgICJidWlsZCI6IHsKICAgICAgIm5hbWUiOiAiUmFsbHkgU2VydmljZSIsCiAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXBvcnRQb3J0YWwgUmFsbHkgSW50ZWdyYXRpb24iLAogICAgICAidmVyc2lvbiI6ICIyLjcuMS1TTkFQU0hPVCIsCiAgICAgICJicmFuY2giOiAiSEVBRC01Y2VkOTg5NDM0MWM0MTg4YjQ2NzkzOGNlYjE2M2E2YzUyNDRmNTU4IgogICAgfQogIH0sCiAgIlVBVCI6IHsKICAgICJidWlsZCI6IHsKICAgICAgIm5hbWUiOiAiQXV0aG9yaXphdGlvbiBTZXJ2aWNlIiwKICAgICAgImRlc2NyaXB0aW9uIjogIlVuaWZpZWQgQXV0aG9yaXphdGlvbiBUcmFwIGZvciBhbGwgUmVwb3J0UG9ydGFsJ3MgU2VydmljZXMiLAogICAgICAidmVyc2lvbiI6ICIyLjcuMi1TTkFQU0hPVCIsCiAgICAgICJicmFuY2giOiAiSEVBRC1iM2RiMThkOGNhNDJiYTRkYzJjYmUyYTg2ZDM0ODA4Mzg2OTMxZmM3IgogICAgfSwKICAgICJhdXRoX2V4dGVuc2lvbnMiOiBbCiAgICAgICJnaXRodWIiCiAgICBdCiAgfSwKICAiQVBJIjogewogICAgImJ1aWxkIjogewogICAgICAibmFtZSI6ICJBUEkgU2VydmljZSIsCiAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXBvcnRQb3J0YWwgQVBJIFNlcnZpY2UiLAogICAgICAidmVyc2lvbiI6ICIzLjAuMC1TTkFQU0hPVCIsCiAgICAgICJicmFuY2giOiAiSEVBRC01MmRlZGMwNjU1NDlhOTg5NTFkOTUzMGVjOGE4MGIwZTUxYTcyZmU5IgogICAgfQogIH0sCiAgIkpJUkEiOiB7CiAgICAiYnVpbGQiOiB7CiAgICAgICJuYW1lIjogIkppcmEgU2VydmljZSIsCiAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXBvcnRQb3J0YWwgSmlyYSBJbnRlZ3JhdGlvbiIsCiAgICAgICJ2ZXJzaW9uIjogIjIuNy4xLVNOQVBTSE9UIiwKICAgICAgImJyYW5jaCI6ICJIRUFELTNkNGRhMDcyZDE1MDQ5ZWYwMTM3NjgxZTVkYTgzZmNiMGYyNDBjNmUiCiAgICB9CiAgfSwKICAiUkVHSVNUUlkiOiB7CiAgICAiYnVpbGQiOiB7CiAgICAgICJuYW1lIjogIlJlZ2lzdHJ5IFNlcnZpY2UiLAogICAgICAiZGVzY3JpcHRpb24iOiAiUmVwb3J0UG9ydGFsIFJlZ2lzdHJ5IGFuZCBDb25maWd1cmF0aW9uIFNlcnZpY2UiLAogICAgICAidmVyc2lvbiI6ICIyLjcuMi1TTkFQU0hPVCIsCiAgICAgICJicmFuY2giOiAiSEVBRC1hNWJmMjk2NDgzOTI4ZWMyNzllYWI2NzA1M2M5NzFlZGQ2MDEwZmU4IgogICAgfQogIH0KfQo=#I'm logging content via BASE64
2018-10-10 10:06:54,519 [main] INFO  com.epam.rp.tests.logging.JsonLoggingTest - RP_MESSAGE#FILE#/var/folders/x6/lt7jmf5x43scwmbrk_t8mdbr0000gn/T/rp-test7492796823510463939.json#I'm logging content via temp file
io.reactivex.exceptions.OnErrorNotImplementedException: Report Portal returned error
Status code: 500
Status message: Internal Server Error
Error Message: Unclassified error [null]
Error Type: UNCLASSIFIED_ERROR

	at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:704)
	at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:701)
	at io.reactivex.internal.operators.maybe.MaybeCallbackObserver.onError(MaybeCallbackObserver.java:83)
	at io.reactivex.internal.operators.maybe.MaybeSubscribeOn$SubscribeOnMaybeObserver.onError(MaybeSubscribeOn.java:96)
	at io.reactivex.internal.operators.maybe.MaybeCache.onError(MaybeCache.java:103)
	at io.reactivex.internal.operators.maybe.MaybeFromCallable.subscribeActual(MaybeFromCallable.java:50)
	at io.reactivex.Maybe.subscribe(Maybe.java:3727)
	at io.reactivex.internal.operators.maybe.MaybeCache.subscribeActual(MaybeCache.java:77)
	at io.reactivex.Maybe.subscribe(Maybe.java:3727)
	at io.reactivex.internal.operators.maybe.MaybeSubscribeOn$SubscribeTask.run(MaybeSubscribeOn.java:54)
	at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:452)
	at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:61)
	at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:52)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Caused by: com.epam.reportportal.exception.ReportPortalException: Report Portal returned error
Status code: 500
Status message: Internal Server Error
Error Message: Unclassified error [null]
Error Type: UNCLASSIFIED_ERROR

	at com.epam.reportportal.service.ReportPortalErrorHandler.handleError(ReportPortalErrorHandler.java:62)
	at com.epam.reportportal.restendpoint.http.DefaultErrorHandler.handle(DefaultErrorHandler.java:56)
	at com.epam.reportportal.restendpoint.http.HttpClientRestEndpoint$1.call(HttpClientRestEndpoint.java:486)
	at com.epam.reportportal.restendpoint.http.HttpClientRestEndpoint$1.call(HttpClientRestEndpoint.java:455)
	at io.reactivex.internal.operators.maybe.MaybeFromCallable.subscribeActual(MaybeFromCallable.java:46)
	... 13 more

Add logs of After/Before methods into TestItem after in finished (aka Update Item after it closed)

for example:

  1. have a test which run and finished (does not matter if passed)
  2. After test finished (can be lot of test after an such) I want to attach a log with video to it cause it created after the Test closes.

I am aware It can be done with API from your example, but how to get the ID of the correct Item not manually from the platform, but from the code.
also why not to Add a way to get the ID from ReportPortal Class and also update from there?

Info about skipping of tests aren't writing due to retryAnalyzer at test-methods

Problem

Info about skipping of tests aren't writing due to retryAnalyzer at test-methods
retryAnalyzer at test-methods causes "java.lang.IllegalArgumentException: ItemID should not be null"

Steps to Reproduce

  1. versions at pom.xml
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.11</version>
        </dependency>
        <dependency>
            <groupId>com.epam.reportportal</groupId>
            <artifactId>agent-java-testng</artifactId>
            <version>4.0.2</version>
        </dependency>
        <dependency>
            <groupId>com.epam.reportportal</groupId>
            <artifactId>logger-java-log4j</artifactId>
            <version>4.0.1</version>
        </dependency>
  1. create class that implement IRetryAnalyzer (even without retry - always false), e.g.
package com.reltio.qa.helpers;

import org.apache.log4j.Logger;
import org.testng.IRetryAnalyzer;
import org.testng.ITestResult;

public class RetryAnalyzer implements IRetryAnalyzer {
    private final Logger logger = Logger.getLogger(this.getClass());

    int counter = 0;
    int retryLimit = 2;

    @Override
    public boolean retry(ITestResult result) {
        if (result.isSuccess()) {
            return false;
        }
        if (counter < retryLimit) {
            if (result.getThrowable() != null) {
                logger.warn(String.format("Test %s failed with exception. Will retry... (%s attempt)", result.getName(), counter), result.getThrowable());
            }
            counter++;
            return true;
        }
        return false;
    }
}
  1. create listener which set RetryAnalyzer.class at test-method, e.g.
package com.reltio.qa.helpers.listeners;

import com.reltio.qa.helpers.RetryAnalyzer;
import org.testng.IAnnotationTransformer;
import org.testng.IRetryAnalyzer;
import org.testng.annotations.ITestAnnotation;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

/**
 * This class is a Listener. It will apply retry mechanism (RetryAnalyzer class) for every test method which doesn't have RetryAnalyzer specified at annotation
 */
public class RetryAnnotationListener implements IAnnotationTransformer {

    @Override
    public void transform(ITestAnnotation testAnnotation, Class testClass,
                          Constructor testConstructor, Method testMethod) {
        IRetryAnalyzer retry = testAnnotation.getRetryAnalyzer();

        if (retry == null) {
            testAnnotation.setRetryAnalyzer(RetryAnalyzer.class);
        }
    }
}
  1. create test class, where non-test-method is failed, e.g.
package com.reltio.qa;

import com.reltio.qa.helpers.RetryAnalyzer;
import org.apache.log4j.Logger;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class ReproduceItemIdTest {

    final Logger logger = Logger.getLogger(this.getClass());

    @BeforeClass
    public void bcReproduceItemIdTest() {
        logger.info("bcReproduceItemIdTest");
        Assert.assertTrue(false); // requirement: fail at non @Test method
    }

//    @BeforeMethod
//    public void bmReproduceItemIdTest() {
//        logger.info("bmReproduceItemIdTest");
//        Assert.assertTrue(false); // requirement: fail at non @Test method
//    }

    @Test
    public void test0() {
        logger.info("test0");
        Assert.assertTrue(true);
    }
}
  1. create suite with listener && test-class mentioned above, e.g.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="ALL Tests" parallel="tests" thread-count="1">
    <listeners>
        <listener class-name="com.epam.reportportal.testng.ReportPortalTestNGListener"/>
        <listener class-name="com.reltio.qa.helpers.listeners.RetryAnnotationListener"/>
    </listeners>

    <test name="SandBox">
        <classes>
            <class name="com.reltio.qa.ReproduceItemIdTest"/>
        </classes>
    </test>
</suite>
  1. execute tests via maven with reporting to reportportal, e.g.:
test -Dsurefire.suiteXmlFiles=suites/ReproduceItemId.xml -Drp.enable=true -Drp.endpoint=https://dnsname.com -Drp.uuid=someUUID -Drp.project=someProject -Drp.launch=Debug -Drp.mode=debug

Expected Results

No exception.
Process such scenario with retryAnalyzer as expected - just write info about skipping of tests.

Actual Results

2018-05-16 14:59:30,670 [INFO ][TestNG-tests-1  ][     ReproduceItemIdTest] - bcReproduceItemIdTest
java.lang.IllegalArgumentException: ItemID should not be null
	at rp.com.google.common.base.Preconditions.checkArgument(Preconditions.java:122)
	at com.epam.reportportal.service.LaunchImpl.finishTestItem(LaunchImpl.java:230)
	at com.epam.reportportal.testng.TestNGService.finishTestMethod(TestNGService.java:157)
	at com.epam.reportportal.testng.BaseTestNGListener.onTestSkipped(BaseTestNGListener.java:103)
	at org.testng.internal.Invoker.runTestListeners(Invoker.java:1723)
	at org.testng.internal.Invoker.runTestListeners(Invoker.java:1714)
	at org.testng.internal.Invoker.registerSkippedTestResult(Invoker.java:1272)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:605)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:869)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1193)
	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
	at org.testng.TestRunner.privateRun(TestRunner.java:744)
	at org.testng.TestRunner.run(TestRunner.java:602)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:380)
	at org.testng.SuiteRunner.access$000(SuiteRunner.java:39)
	at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:414)
	at org.testng.internal.thread.ThreadUtil$1.call(ThreadUtil.java:52)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
[ERROR] Tests run: 2, Failures: 1, Errors: 0, Skipped: 1, Time elapsed: 7.713 s <<< FAILURE! - in TestSuite
[ERROR] bcReproduceItemIdTest(com.reltio.qa.ReproduceItemIdTest)  Time elapsed: 4.027 s  <<< FAILURE!
java.lang.AssertionError: expected [true] but found [false]
	at com.reltio.qa.ReproduceItemIdTest.bcReproduceItemIdTest(ReproduceItemIdTest.java:16)

[INFO] 
[INFO] Results:
[INFO] 
[ERROR] Failures: 
[ERROR]   ReproduceItemIdTest.bcReproduceItemIdTest:16 expected [true] but found [false]
[INFO] 
[ERROR] Tests run: 2, Failures: 1, Errors: 0, Skipped: 1
[INFO] 
[ERROR] There are test failures.

sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException

Guys, facing Certificate issue while building(using mvn clean install) "example-java-TestNG-master-->log4j" project
i tried installing certificates from "http://tj.symcb.com/tj.crt" manually on my laptop, but did not help, i'm stuck here

[ERROR] Failed to execute goal on project example-java-TestNG-logback: Could not resolve dependencies for project com.epam.rp:example-java-TestNG-logback:jar:1.0-SNAPSHOT: Failed to collect dependencies at com.epam.reportportal:agent-java-testng:jar:4.0.0-BETA-1 -> com.epam.reportportal:client-java:jar:4.0.0-BETA-1: Failed to read artifact descriptor for com.epam.reportportal:client-java:jar:4.0.0-BETA-1: Could not transfer artifact com.epam.reportportal:client-java:pom:4.0.0-BETA-1 from/to jitpack.io (https://jitpack.io): sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target -> [Help 1]

Listeners order execution for RP agent

Steps:

  1. Attach @listeners annotation
  2. Define example listeners in next order: @listeners({ReportPortalTestNGListener.class, ScreenShooter.class})
  3. In onTestFailure metod we have next line: this.testNGService.finishTestMethod("FAILED", testResult);
    Due to listeners runing in random order, screenshot sometimes not attached to RP, becouse finishTestMethod runing before screenshot attach. Nordstrom/TestNG-Foundation don't help, becouse now they have a bug with different versions of testNG and Nordstrom.
    зображення

ItemID should not be null

If test failed in TestNG listener or extended listeners and main @test will not start, then we have java.lang.NullPointerException: ItemID should not be null exception.

RP 5.0.0
TestNG Agent 5 beta 9
Log4j2 5 beta 9

Logs are getting logged in wrong tests

I am using agent-java-testNG v5.0.0-BETA-9 and RP versions Current version:API Service: 5.0.0;Index Service: 5.0.5;Authorization Service: 5.0.0;Service UI: 5.0.0;

I am using testng to run 6 TC in where classes are to be run in parallel. But when logs are getting logged in RP, they are all messed, they are getting logged in wrong Tests and sometimes all into 1. How can I make it log correctly in their seperate Tests. Can it be due to me setting "rp.reporting.async", "true"?

My log4j.xml file looks like this:

<Configuration
	packages="com.epam.ta.reportportal.log4j.appender" status="WARN">
	<Appenders>
		<ReportPortalLog4j2Appender
			name="ReportPortalLog4j2Appender">
			<PatternLayout pattern="%-5level - %msg%n%throwable" />
		</ReportPortalLog4j2Appender>
		<Console name="ConsoleAppender" target="SYSTEM_OUT">
			<PatternLayout pattern="%-5level - %msg%n%throwable" />
		</Console>
	</Appenders>
	<Loggers>
		<Root level="INFO">
			<AppenderRef ref="ConsoleAppender" />
			<AppenderRef ref="ReportPortalLog4j2Appender" />
		</Root>
		<Logger name="com.epam.reportportal.service" level="WARN"
			additivity="false">
			<AppenderRef ref="ReportPortalLog4j2Appender" />
		</Logger>
		<Logger name="com.epam.reportportal.utils" level="WARN"
			additivity="false">
			<AppenderRef ref="ReportPortalLog4j2Appender" />
		</Logger>
	</Loggers>
</Configuration>```

Report portal use with gradle showing the results as in progress

I am trying to evaluate report portal for use in a simple java project using TestNG and Gradle as build tool. Since i did not find any specific instructions for the same in this repo, I tried playing around with different settings.

Here is my build.gradle file:

When i use this settings below then, I do not see any results being pushed out to report portal.

apply plugin: 'java'
apply plugin: 'maven'

group = 'com.automation-hacks'
version = '1.0-SNAPSHOT'

sourceCompatibility = 1.8
targetCompatibility = 1.8


repositories {
     maven { url "http://dl.bintray.com/epam/reportportal" }
     maven { url "http://repo.maven.apache.org/maven2" }
}
dependencies {
    compile group: 'com.epam.reportportal', name: 'agent-java-testng', version:'3.0.1'
//    compile group: 'com.epam.reportportal', name: 'logger-java-log4j', version:'3.0.1'
    testCompile group: 'org.testng', name: 'testng', version: '6.14.3'
}

test {
    systemProperty 'usedefaultlisteners', false
    systemProperty 'listener', 'com.epam.reportportal.testng.ReportPortalTestNGListener'
    include '**/*Test.class'
}

task smokeTests(type: Test) {
    useTestNG() {
        suites 'src/test/resources/suite.xml'
        includeGroups 'smoke'
    }
}

Thus i tried another approach of annotating my test class with @Listeners({ReportPortalTestNGListener.class}) and i saw an entry being pushed out, however i do not see the pass/fail results and it continuously displays it as in progress.

I am attaching a zip file (rptest.zip) with my entire sample project. If you can provide pointers on
A) How to configure the maven-surefire plugin with the listener in gradle?
B) If above does not work, How to get the annotation in Test File working, it would be great

I think Report portal is solving a very common use case for automation engineers and i really want to start using this in my current company.

image
image

Cannot locate the classes that are mentioned here - ConfigurationModule & TestNGAgentModule

Basically my problem is same as https://stackoverflow.com/questions/48899958/reportportal-wuth-testng-how-to-set-launch-name-during-run-time/49245585.
I tried code to override the UUID and Launch name from readme of https://github.com/reportportal/agent-java-testNG .

But Its throwing errors for classes not found. Where are these classes located?
ConfigurationModule, ReportPortalClientModule and TestNGAgentModule

Is it possible to change the licence to Apache 2.0?

It would be much easier for commercial products development, if this library had an Apache 2.0 license. I use agent-java-testNG in my commercial project and I cannot override classes from it, if it has GPL license, only use it as a dependency as is.
Thank you!

[v5]agent-java-testng - ItemID should not be null (Test item is not getting created)

While running the tests on Java+TestNG+LogBack with new version of agent-java-testng by pointing to V5 ReportPortal, i'm getting following exception. It used to work well until 5.0.0-BETA-6 version.

Exception in thread "TestNG-test=Multiple-1" java.lang.NullPointerException: ItemID should not be null
	at java.util.Objects.requireNonNull(Objects.java:228)
	at com.epam.reportportal.service.LaunchImpl.finishTestItem(LaunchImpl.java:283)
	at com.epam.reportportal.testng.TestNGService.finishTestMethod(TestNGService.java:167)
	at com.epam.reportportal.testng.BaseTestNGListener.onTestFailure(BaseTestNGListener.java:93)
	at org.testng.internal.TestListenerHelper.runTestListeners(TestListenerHelper.java:67)
	at org.testng.internal.Invoker.runTestListeners(Invoker.java:1389)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1042)
	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

pom.xml

		<dependency>
			<groupId>com.epam.reportportal</groupId>
			<artifactId>agent-java-testng</artifactId>
			<version>5.0.0-BETA-9</version>
		</dependency>
		<dependency>
			<groupId>com.epam.reportportal</groupId>
			<artifactId>logger-java-logback</artifactId>
			<version>5.0.0-BETA-9</version>
		</dependency>

TestNG.xml

<?xml version="1.0" encoding="UTF-8"?> 
	<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Login" parallel="classes" thread-count="2"
	data-provider-thread-count="2">
	<listeners>
		<listener class-name="com.epam.reportportal.testng.ReportPortalTestNGListener" />
	</listeners>
	<test name="Login">
		<classes>
			<class name="com.saucedemo.tests.login.AUTO123456_SauceDemo_Login_With_Valid_User" />
		</classes>
	</test>
</suite>

OS: Mac, java version "1.8.0_201"
Note: You can run any TestNG test to reproduce it.

image

Report portal is not handling TestNG test method invocationCount correct.

Scenario: When run a test method more than one iteration by configuring the invocationCount property of the test method.
Correct behavior: the test method should appear in report portal as one level that has nested iterations.

Current behavior: each iteration from the same method appears as a standalone test method level.

for more details please check this [URL comment](#96 (comment))

Nested Steps. NPE on handling null-vallued method arguments by StepAspect

Suggestion:
Handle nulls as "null" strings in such a case, not to fail the whole execution.

Example below:

@Test()
public void test() {
    step(null);
}

@Step("Simple step")
public void step(Object o) {
    System.out.println(o);
}

java.lang.NullPointerException: null value in entry: ...
at rp.com.google.common.collect.CollectPreconditions.checkEntryNotNull(CollectPreconditions.java:32)
at rp.com.google.common.collect.ImmutableMap.entryOf(ImmutableMap.java:176)
at rp.com.google.common.collect.ImmutableMap$Builder.put(ImmutableMap.java:285)
at com.epam.reportportal.aspect.StepNameUtils.createParamsMapping(StepNameUtils.java:70)
at com.epam.reportportal.aspect.StepNameUtils.getStepName(StepNameUtils.java:52)
at com.epam.reportportal.aspect.StepRequestUtils.buildStartStepRequest(StepRequestUtils.java:45)
at com.epam.reportportal.aspect.StepAspect.startNestedStep(StepAspect.java:83)

allow retry for configuration methods

we use IConfigurable of TestNG to retry configuration methods, the server today shows all the retries under same configuration item, we would like to be able to see the retries the same as in Test Items retries on the server, how can we use the testng-client to inform the server there is a retry for the configuration

Random Exceptions in parallel of 500 tests

Describe the bug
Running 400-500 Tests in parallel with threadCount of 60 with TestNG Java

Tests randomly fail and stop on ReportPortalException (in logs) (sometimes 1 tests sometimes 40 tests)
In ReportPortal Website I see them as interrupted tests when the launch stop (with force) and when the tests finish running the website still show those tests IN PROGRESS
My question is, how to handle this kind of error? how can I debug it

the pom.xml

<dependency>
           <groupId>com.epam.reportportal</groupId>
           <artifactId>agent-java-testng</artifactId>
           <version>4.2.1-BETA</version>
       </dependency>

       <dependency>
           <groupId>com.epam.reportportal</groupId>
           <artifactId>logger-java-log4j</artifactId>
           <version>4.0.1</version>
       </dependency>

Expected behaviour
To not fail randomly

Logs
SEVERE: [142] ReportPortal execution error
com.epam.reportportal.exception.ReportPortalException: Report Portal returned error
Status code: 406
Status message: Not Acceptable
Error Message: Finish test item is not allowed. Test item '5c7cfc202ab79c000160eae8' has descendants with 'IN_PROGRESS' status. All descendants '[beforeClassInits, beforeMethods, addNewTemplateVisiblityWorkspace, beforeMethods, addNewTemplateVisiblityWorkspace, afterClassActions]'
Error Type: FINISH_ITEM_NOT_ALLOWED

at com.epam.reportportal.service.ReportPortalErrorHandler.handleError(ReportPortalErrorHandler.java:83)
at com.epam.reportportal.service.ReportPortalErrorHandler.handle(ReportPortalErrorHandler.java:59)
at com.epam.reportportal.restendpoint.http.HttpClientRestEndpoint$1.subscribe(HttpClientRestEndpoint.java:517)
at io.reactivex.internal.operators.maybe.MaybeCreate.subscribeActual(MaybeCreate.java:45)
at io.reactivex.Maybe.subscribe(Maybe.java:4096)
at io.reactivex.internal.operators.maybe.MaybeCache.subscribeActual(MaybeCache.java:77)
at io.reactivex.Maybe.subscribe(Maybe.java:4096)
at io.reactivex.internal.operators.maybe.MaybeSubscribeOn$SubscribeTask.run(MaybeSubscribeOn.java:54)
at io.reactivex.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:38)
at io.reactivex.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:26)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

Versions:

  • OS, Browser
    MacOS High Sierra, Chrome Browser
  • The version of RP [find it under Login form, copy as is]

Current version: Analysis Service: 4.3.0; API Service: 4.3.0; Index Service: 4.2.0; Jira Service: 4.3.0; Authorization Service: 4.2.0; Service UI: 4.3.0;

Multiply runners from TestNG xml suite configuration

Steps:

  1. Create TestNG suite file with next format:
<suite name="example">
    <suite-files>
        <suite-file path="example1"/>
        <suite-file path="example2"/>
        <suite-file path="example3"/>
    </suite-files>
</suite>
  1. Run with Maven surfire plugin or local IDE run test suite.

Expected result: in RP one runner with three suites.
Actual result: in RP three runners, two runners empty, one runner with three suites.

Report portal is not working Fine with TestNG Parallel Mode

When Enable TestNG Parallel mode, the log messages are not assigned to its test node:

Assume we have 3 test methods [Test1() , Test2() , Test3()]
Enable Parallel Mode with methods mode and with 3 threads to let all test methods run in same time.
use the report ortal logger and listener to log test results.
after execution , there will be 3 test cases nodes under the launch/suit/test.
but one test case has the log of other test cases and other test cases will be empty.

Any recommendations for the TestNG parallel mode ?

Unable to update defect type in version 5

Steps to reproduce:

  1. Execute a test and make sure test run is reported in ReportPortal.
  2. If any of the test in test run fails then you will see To Investigate under defect type under all launches on launches screen.
  3. User should be able to click on To Investigate and then update values in Edit defect type dialog box.
  4. I have tried the same scenario in version 4 of RP and it works perfectly fine.

Attaching the screenshots, api responses that result in failure in version 5 of RP.

RP_Bug_v4v5.docx

Problems with TestNG Retry functionality

TestNG supports retry functionality: TestNG Retry

  • Problem with RP test statuses: when testNG rerun failed test, all reruned tests without last will have skipped status:
    зображення
    But RP sometimes set another tests statuses:
    зображення
  • RP rerun functionality don't supports TestNG retry functionality, if we want to do smth like this:
    зображення
    it will not work

RP doesn't show results in case of TestNG retry option

Hi,
our team use tests rerun/retry TestNG option in case of it's failure (org.testng.IRetryAnalyzer).
The issue is that if any pre/post-condition method fails (e.g. @BeforeMethod, @AfterTest, etc), Report Portal does not display tests that are going afterwards. It display only precondition methods (see screenshot).

rp

In other case, if rerun option is not invoked - tests will be displayed on RP as skipped.

rp2

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.