From 25a1ba9217b9505323852b6d05879b7ab37462cb Mon Sep 17 00:00:00 2001 From: Vadzim Hushchanskou Date: Tue, 13 Feb 2024 18:22:19 +0300 Subject: [PATCH 01/17] Add metadata annotations --- CHANGELOG.md | 4 ++ .../reportportal/annotations/Description.java | 38 ++++++++++++++++ .../reportportal/annotations/DisplayName.java | 38 ++++++++++++++++ .../reportportal/annotations/TmsLink.java | 45 +++++++++++++++++++ .../reportportal/annotations/TmsLinks.java | 30 +++++++++++++ 5 files changed, 155 insertions(+) create mode 100644 src/main/java/com/epam/reportportal/annotations/Description.java create mode 100644 src/main/java/com/epam/reportportal/annotations/DisplayName.java create mode 100644 src/main/java/com/epam/reportportal/annotations/TmsLink.java create mode 100644 src/main/java/com/epam/reportportal/annotations/TmsLinks.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 5be372a8..af1d6161 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,10 @@ ## [5.2.5] ### Added - `Utils.copyFiles` static method to use in examples, by @HardNorth +- `Description` annotation, by @HardNorth +- `DisplayName` annotation, by @HardNorth +- `TmsLink` annotation, by @HardNorth +- `TmsLinks` annotation, by @HardNorth ## [5.2.4] ### Changed diff --git a/src/main/java/com/epam/reportportal/annotations/Description.java b/src/main/java/com/epam/reportportal/annotations/Description.java new file mode 100644 index 00000000..91223d62 --- /dev/null +++ b/src/main/java/com/epam/reportportal/annotations/Description.java @@ -0,0 +1,38 @@ +/* + * Copyright 2024 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.epam.reportportal.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * If put on a method or constructor, or class, overrides or set corresponding Test Item description on ReportPortal. + * This annotation should be handled in priority to other mechanisms of existing test frameworks. + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.TYPE }) +public @interface Description { + + /** + * Test Item description as a simple String. + * + * @return new description for a Test Item + */ + String value(); +} diff --git a/src/main/java/com/epam/reportportal/annotations/DisplayName.java b/src/main/java/com/epam/reportportal/annotations/DisplayName.java new file mode 100644 index 00000000..c20f35a8 --- /dev/null +++ b/src/main/java/com/epam/reportportal/annotations/DisplayName.java @@ -0,0 +1,38 @@ +/* + * Copyright 2024 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.epam.reportportal.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * If put on a method or constructor, or class, overrides corresponding Test Item name on ReportPortal. + * This annotation should be handled in priority to other mechanisms of existing test frameworks. + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.TYPE }) +public @interface DisplayName { + + /** + * Test Item name as a simple String. + * + * @return new name for a Test Item + */ + String value(); +} diff --git a/src/main/java/com/epam/reportportal/annotations/TmsLink.java b/src/main/java/com/epam/reportportal/annotations/TmsLink.java new file mode 100644 index 00000000..2841dc62 --- /dev/null +++ b/src/main/java/com/epam/reportportal/annotations/TmsLink.java @@ -0,0 +1,45 @@ +/* + * Copyright 2024 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.epam.reportportal.annotations; + +/** + * Add a link to a Test Case located in external Test Management System. + * This annotation appends a hypertext link to a Test Case into the Test Item description. + */ +public @interface TmsLink { + + /** + * TMS ticket ID. + * + * @return ID as string + */ + String value(); + + /** + * Link text pattern, accepts 'tms_id' parameter. + * + * @return formatted link text + */ + String linkTextPattern() default "TMS #{tms_id}"; + + /** + * Link URL pattern, accepts 'tms_id' parameter. + * + * @return link to a TMS ticket + */ + String urlPattern() default ""; +} diff --git a/src/main/java/com/epam/reportportal/annotations/TmsLinks.java b/src/main/java/com/epam/reportportal/annotations/TmsLinks.java new file mode 100644 index 00000000..96b78a8a --- /dev/null +++ b/src/main/java/com/epam/reportportal/annotations/TmsLinks.java @@ -0,0 +1,30 @@ +/* + * Copyright 2024 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.epam.reportportal.annotations; + +import java.lang.annotation.*; + +/** + * Gathering annotation for {@link TmsLink}/ + */ +@Documented +@Inherited +@Retention(RetentionPolicy.RUNTIME) +@Target({ ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.TYPE }) +public @interface TmsLinks { + TmsLink[] value(); +} From b073d5ec345e037aeba5d314fbb23718eda1cd77 Mon Sep 17 00:00:00 2001 From: Vadzim Hushchanskou Date: Wed, 14 Feb 2024 11:07:45 +0300 Subject: [PATCH 02/17] Add missed annotations --- .../java/com/epam/reportportal/annotations/TmsLink.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/com/epam/reportportal/annotations/TmsLink.java b/src/main/java/com/epam/reportportal/annotations/TmsLink.java index 2841dc62..b74f4b04 100644 --- a/src/main/java/com/epam/reportportal/annotations/TmsLink.java +++ b/src/main/java/com/epam/reportportal/annotations/TmsLink.java @@ -16,10 +16,17 @@ package com.epam.reportportal.annotations; +import java.lang.annotation.*; + /** * Add a link to a Test Case located in external Test Management System. * This annotation appends a hypertext link to a Test Case into the Test Item description. */ +@Documented +@Inherited +@Retention(RetentionPolicy.RUNTIME) +@Target({ ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.TYPE }) +@Repeatable(TmsLinks.class) public @interface TmsLink { /** From ffb416a310c3499276a7da30ae90c2900b711b64 Mon Sep 17 00:00:00 2001 From: Vadzim Hushchanskou Date: Wed, 14 Feb 2024 15:10:14 +0300 Subject: [PATCH 03/17] Update targets --- .../java/com/epam/reportportal/annotations/Description.java | 2 +- .../java/com/epam/reportportal/annotations/DisplayName.java | 2 +- src/main/java/com/epam/reportportal/annotations/TmsLink.java | 2 +- src/main/java/com/epam/reportportal/annotations/TmsLinks.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/epam/reportportal/annotations/Description.java b/src/main/java/com/epam/reportportal/annotations/Description.java index 91223d62..eef28f15 100644 --- a/src/main/java/com/epam/reportportal/annotations/Description.java +++ b/src/main/java/com/epam/reportportal/annotations/Description.java @@ -26,7 +26,7 @@ * This annotation should be handled in priority to other mechanisms of existing test frameworks. */ @Retention(RetentionPolicy.RUNTIME) -@Target({ ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.TYPE }) +@Target({ ElementType.METHOD, ElementType.TYPE }) public @interface Description { /** diff --git a/src/main/java/com/epam/reportportal/annotations/DisplayName.java b/src/main/java/com/epam/reportportal/annotations/DisplayName.java index c20f35a8..633a4e17 100644 --- a/src/main/java/com/epam/reportportal/annotations/DisplayName.java +++ b/src/main/java/com/epam/reportportal/annotations/DisplayName.java @@ -26,7 +26,7 @@ * This annotation should be handled in priority to other mechanisms of existing test frameworks. */ @Retention(RetentionPolicy.RUNTIME) -@Target({ ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.TYPE }) +@Target({ ElementType.METHOD, ElementType.TYPE }) public @interface DisplayName { /** diff --git a/src/main/java/com/epam/reportportal/annotations/TmsLink.java b/src/main/java/com/epam/reportportal/annotations/TmsLink.java index b74f4b04..0c4c55d7 100644 --- a/src/main/java/com/epam/reportportal/annotations/TmsLink.java +++ b/src/main/java/com/epam/reportportal/annotations/TmsLink.java @@ -25,7 +25,7 @@ @Documented @Inherited @Retention(RetentionPolicy.RUNTIME) -@Target({ ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.TYPE }) +@Target({ ElementType.METHOD, ElementType.TYPE }) @Repeatable(TmsLinks.class) public @interface TmsLink { diff --git a/src/main/java/com/epam/reportportal/annotations/TmsLinks.java b/src/main/java/com/epam/reportportal/annotations/TmsLinks.java index 96b78a8a..97b391bf 100644 --- a/src/main/java/com/epam/reportportal/annotations/TmsLinks.java +++ b/src/main/java/com/epam/reportportal/annotations/TmsLinks.java @@ -24,7 +24,7 @@ @Documented @Inherited @Retention(RetentionPolicy.RUNTIME) -@Target({ ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.TYPE }) +@Target({ ElementType.METHOD, ElementType.TYPE }) public @interface TmsLinks { TmsLink[] value(); } From 304c2ae7dd6fbd0eaf716833b53e15e5ec6ba4f3 Mon Sep 17 00:00:00 2001 From: Vadzim Hushchanskou Date: Thu, 15 Feb 2024 23:40:00 +0300 Subject: [PATCH 04/17] Add Issue` and `ExternalIssue` annotations --- CHANGELOG.md | 1 + .../annotations/ExternalIssue.java | 57 +++++++++++++++++++ .../epam/reportportal/annotations/Issue.java | 51 +++++++++++++++++ 3 files changed, 109 insertions(+) create mode 100644 src/main/java/com/epam/reportportal/annotations/ExternalIssue.java create mode 100644 src/main/java/com/epam/reportportal/annotations/Issue.java diff --git a/CHANGELOG.md b/CHANGELOG.md index af1d6161..7775733a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ - `DisplayName` annotation, by @HardNorth - `TmsLink` annotation, by @HardNorth - `TmsLinks` annotation, by @HardNorth +- `Issue` and `ExternalIssue` annotations, by @HardNorth ## [5.2.4] ### Changed diff --git a/src/main/java/com/epam/reportportal/annotations/ExternalIssue.java b/src/main/java/com/epam/reportportal/annotations/ExternalIssue.java new file mode 100644 index 00000000..1c4473f5 --- /dev/null +++ b/src/main/java/com/epam/reportportal/annotations/ExternalIssue.java @@ -0,0 +1,57 @@ +/* + * Copyright 2024 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.epam.reportportal.annotations; + +import java.lang.annotation.*; + +/** + * Link current Issue with an Issue posted in External Bug Tracking System. This annotation designed to use within {@link Issue} annotation + * only and does not allow to add it to any other target. + */ +@Documented +@Retention(RetentionPolicy.RUNTIME) +@Target({}) +public @interface ExternalIssue { + /** + * External System Issue ID + * + * @return Issue ID + */ + String value(); + + /** + * Optional, use custom Bug Tracking System URL instead of one which is set in `reportportal.properties` file. + * + * @return Bug Tracking System URL + */ + String btsUrl() default ""; + + /** + * Optional, use custom Bug Tracking System Project name instead of one which is set in `reportportal.properties` file. + * + * @return Bug Tracking System Project name + */ + String btsProject() default ""; + + /** + * Optional, use custom Bug Tracking System Issue URL pattern instead of one which is set in `reportportal.properties` file. Use + * {issue_id} mark to put it into the result URL. + * + * @return Bug Tracking System Issue URL pattern + */ + String urlPattern() default ""; +} diff --git a/src/main/java/com/epam/reportportal/annotations/Issue.java b/src/main/java/com/epam/reportportal/annotations/Issue.java new file mode 100644 index 00000000..4d76fa65 --- /dev/null +++ b/src/main/java/com/epam/reportportal/annotations/Issue.java @@ -0,0 +1,51 @@ +/* + * Copyright 2024 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.epam.reportportal.annotations; + +import java.lang.annotation.*; + +/** + * This annotation supposed to automatically link failed test items a specific Issue on ReportPortal. + */ +@Documented +@Inherited +@Retention(RetentionPolicy.RUNTIME) +@Target({ ElementType.METHOD }) +public @interface Issue { + /** + * Type (Locator), Short Name (Abbreviation) or Long Name (Defect name) (specified by priority) of an Issue on ReportPortal for + * the current project. If there is no such issue found in Project Setting the value will be used "as is" and sent as + * Issue Type (Locator). + * + * @return Type (Locator), Short Name (Abbreviation) or Long Name (Defect name) of an Issue + */ + String value(); + + /** + * Arbitrary text describing the issue. + * + * @return issue description + */ + String comment() default ""; + + /** + * Links to External System where this issue is located. + * + * @return External Issue describing object + */ + ExternalIssue[] external() default {}; +} From 9246addede99e7f8e09b54681f2fc60abb25315e Mon Sep 17 00:00:00 2001 From: Vadzim Hushchanskou Date: Thu, 15 Feb 2024 23:40:39 +0300 Subject: [PATCH 05/17] Update CHANGELOG.md --- CHANGELOG.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7775733a..ad63232e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,8 +7,7 @@ - `Utils.copyFiles` static method to use in examples, by @HardNorth - `Description` annotation, by @HardNorth - `DisplayName` annotation, by @HardNorth -- `TmsLink` annotation, by @HardNorth -- `TmsLinks` annotation, by @HardNorth +- `TmsLink` and `TmsLinks` annotations, by @HardNorth - `Issue` and `ExternalIssue` annotations, by @HardNorth ## [5.2.4] From d55610c81f4039f4a00cb7ad8e617b631b491eff Mon Sep 17 00:00:00 2001 From: Vadzim Hushchanskou Date: Fri, 16 Feb 2024 17:21:14 +0300 Subject: [PATCH 06/17] Add `rp.bts.project`, `rp.bts.url`, `rp.bts.issue.url`, `rp.bts.issue.fail` properties --- CHANGELOG.md | 8 +++--- .../utils/properties/ListenerProperty.java | 26 ++++++++++++++++++- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ad63232e..4603ae1c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,14 +1,16 @@ # Changelog ## [Unreleased] - -## [5.2.5] ### Added -- `Utils.copyFiles` static method to use in examples, by @HardNorth - `Description` annotation, by @HardNorth - `DisplayName` annotation, by @HardNorth - `TmsLink` and `TmsLinks` annotations, by @HardNorth - `Issue` and `ExternalIssue` annotations, by @HardNorth + - `rp.bts.project`, `rp.bts.url`, `rp.bts.issue.url`, `rp.bts.issue.fail` properties, which controls these annotations, by @HardNorth + +## [5.2.5] +### Added +- `Utils.copyFiles` static method to use in examples, by @HardNorth ## [5.2.4] ### Changed diff --git a/src/main/java/com/epam/reportportal/utils/properties/ListenerProperty.java b/src/main/java/com/epam/reportportal/utils/properties/ListenerProperty.java index 1fad7de5..1ca4a76c 100644 --- a/src/main/java/com/epam/reportportal/utils/properties/ListenerProperty.java +++ b/src/main/java/com/epam/reportportal/utils/properties/ListenerProperty.java @@ -15,6 +15,9 @@ */ package com.epam.reportportal.utils.properties; +import com.epam.reportportal.annotations.ExternalIssue; +import com.epam.reportportal.annotations.Issue; + /** * Describe properties names */ @@ -113,7 +116,28 @@ public enum ListenerProperty { TRUNCATE_FIELDS("rp.truncation.field", false), TRUNCATE_REPLACEMENT("rp.truncation.replacement", false), TRUNCATE_ITEM_NAME_LIMIT("rp.truncation.item.name.limit", false), - TRUNCATE_ATTRIBUTE_LIMIT("rp.truncation.attribute.limit", false); + TRUNCATE_ATTRIBUTE_LIMIT("rp.truncation.attribute.limit", false), + + // Issue reporting properties + /** + * Bug Tracking System Project name to use along with {@link ExternalIssue} annotation. Should be the same as in corresponding + * integration. + */ + BTS_PROJECT("rp.bts.project", false), + /** + * Bug Tracking System base URL to use along with {@link ExternalIssue} annotation. Should be the same as in corresponding integration. + */ + BTS_URL("rp.bts.url", false), + /** + * Bug Tracking System URL Pattern for Issues to use along with {@link ExternalIssue} annotation. Use {issue_id} + * placeholder to mark a place where to put Issue ID. The result URL should point on the Issue. + */ + BTS_ISSUE_URL("rp.bts.issue.url", false), + /** + * Fail tests marked with {@link Issue} annotation if they passed. Default value: true. Designed to not miss the moment + * when the issue got fixed but test is still marked by annotation. + */ + BTS_ISSUE_FAIL("rp.bts.issue.fail", false); //formatter:on private final String propertyName; From 626c581787477534bf197b6260186f05af81bd80 Mon Sep 17 00:00:00 2001 From: Vadzim Hushchanskou Date: Mon, 19 Feb 2024 23:43:52 +0300 Subject: [PATCH 07/17] Update property description --- .../epam/reportportal/utils/properties/ListenerProperty.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/epam/reportportal/utils/properties/ListenerProperty.java b/src/main/java/com/epam/reportportal/utils/properties/ListenerProperty.java index 1ca4a76c..4708f36b 100644 --- a/src/main/java/com/epam/reportportal/utils/properties/ListenerProperty.java +++ b/src/main/java/com/epam/reportportal/utils/properties/ListenerProperty.java @@ -129,8 +129,9 @@ public enum ListenerProperty { */ BTS_URL("rp.bts.url", false), /** - * Bug Tracking System URL Pattern for Issues to use along with {@link ExternalIssue} annotation. Use {issue_id} - * placeholder to mark a place where to put Issue ID. The result URL should point on the Issue. + * Bug Tracking System URL Pattern for Issues to use along with {@link ExternalIssue} annotation. Use {issue_id} and + * {bts_project} placeholders to mark a place where to put Issue ID and Bug Tracking System Project name. The result URL + * should point on the Issue. */ BTS_ISSUE_URL("rp.bts.issue.url", false), /** From ec17e976966366334889b64c1dc02d7c0ba23edf Mon Sep 17 00:00:00 2001 From: Vadzim Hushchanskou Date: Tue, 20 Feb 2024 17:46:27 +0300 Subject: [PATCH 08/17] Add ReportPortalClient.getProjectSettings` method --- CHANGELOG.md | 1 + .../com/epam/reportportal/service/ReportPortalClient.java | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4603ae1c..a39eeb0b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ - `TmsLink` and `TmsLinks` annotations, by @HardNorth - `Issue` and `ExternalIssue` annotations, by @HardNorth - `rp.bts.project`, `rp.bts.url`, `rp.bts.issue.url`, `rp.bts.issue.fail` properties, which controls these annotations, by @HardNorth +- `ReportPortalClient.getProjectSettings` method, by @HardNorth ## [5.2.5] ### Added diff --git a/src/main/java/com/epam/reportportal/service/ReportPortalClient.java b/src/main/java/com/epam/reportportal/service/ReportPortalClient.java index 90d8aa91..69c8d3bf 100644 --- a/src/main/java/com/epam/reportportal/service/ReportPortalClient.java +++ b/src/main/java/com/epam/reportportal/service/ReportPortalClient.java @@ -19,6 +19,7 @@ import com.epam.ta.reportportal.ws.model.item.ItemCreatedRS; import com.epam.ta.reportportal.ws.model.launch.*; import com.epam.ta.reportportal.ws.model.log.SaveLogRQ; +import com.epam.ta.reportportal.ws.model.project.config.ProjectSettingsResource; import io.reactivex.Maybe; import okhttp3.MultipartBody; import retrofit2.http.*; @@ -60,4 +61,7 @@ public interface ReportPortalClient { @GET("v1/{projectName}/item/uuid/{itemUuid}") Maybe getItemByUuid(@Path("itemUuid") String itemUuid); + + @GET("v1/{projectName}/settings") + Maybe getProjectSettings(); } From a363d2a4367414972a88665a7609abcce8f5281d Mon Sep 17 00:00:00 2001 From: Vadzim Hushchanskou Date: Wed, 21 Feb 2024 17:02:16 +0300 Subject: [PATCH 09/17] Test utilities update --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 377351ed..a9e4268a 100644 --- a/build.gradle +++ b/build.gradle @@ -80,7 +80,7 @@ dependencies { exclude group: 'org.hamcrest' } testImplementation 'org.apache.commons:commons-io:1.3.2' - testImplementation 'com.epam.reportportal:agent-java-test-utils:0.0.2' + testImplementation 'com.epam.reportportal:agent-java-test-utils:0.0.3' } test { From 8f2f08db7e90bd950667809981185341967ea00c Mon Sep 17 00:00:00 2001 From: Vadzim Hushchanskou Date: Wed, 21 Feb 2024 18:12:51 +0300 Subject: [PATCH 10/17] Issues gathering annotation add --- .../epam/reportportal/annotations/Issue.java | 3 +- .../epam/reportportal/annotations/Issues.java | 30 +++++++++++++++++++ .../reportportal/annotations/TmsLinks.java | 2 +- 3 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/epam/reportportal/annotations/Issues.java diff --git a/src/main/java/com/epam/reportportal/annotations/Issue.java b/src/main/java/com/epam/reportportal/annotations/Issue.java index 4d76fa65..9054bd51 100644 --- a/src/main/java/com/epam/reportportal/annotations/Issue.java +++ b/src/main/java/com/epam/reportportal/annotations/Issue.java @@ -24,7 +24,8 @@ @Documented @Inherited @Retention(RetentionPolicy.RUNTIME) -@Target({ ElementType.METHOD }) +@Target(ElementType.METHOD) +@Repeatable(Issues.class) public @interface Issue { /** * Type (Locator), Short Name (Abbreviation) or Long Name (Defect name) (specified by priority) of an Issue on ReportPortal for diff --git a/src/main/java/com/epam/reportportal/annotations/Issues.java b/src/main/java/com/epam/reportportal/annotations/Issues.java new file mode 100644 index 00000000..2086db4e --- /dev/null +++ b/src/main/java/com/epam/reportportal/annotations/Issues.java @@ -0,0 +1,30 @@ +/* + * Copyright 2024 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.epam.reportportal.annotations; + +import java.lang.annotation.*; + +/** + * Gathering annotation for {@link Issue} + */ +@Documented +@Inherited +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface Issues { + Issue[] value(); +} diff --git a/src/main/java/com/epam/reportportal/annotations/TmsLinks.java b/src/main/java/com/epam/reportportal/annotations/TmsLinks.java index 97b391bf..f762f96a 100644 --- a/src/main/java/com/epam/reportportal/annotations/TmsLinks.java +++ b/src/main/java/com/epam/reportportal/annotations/TmsLinks.java @@ -19,7 +19,7 @@ import java.lang.annotation.*; /** - * Gathering annotation for {@link TmsLink}/ + * Gathering annotation for {@link TmsLink} */ @Documented @Inherited From 56ad095c55b0661b4c849c84a081cc3347619337 Mon Sep 17 00:00:00 2001 From: Vadzim Hushchanskou Date: Thu, 22 Feb 2024 17:19:50 +0300 Subject: [PATCH 11/17] Issue filter annotations --- CHANGELOG.md | 1 + .../epam/reportportal/annotations/Issue.java | 7 ++++ .../reportportal/annotations/TestFilter.java | 34 +++++++++++++++++++ .../annotations/TestNameFilter.java | 26 ++++++++++++++ .../annotations/TestParamFilter.java | 31 +++++++++++++++++ 5 files changed, 99 insertions(+) create mode 100644 src/main/java/com/epam/reportportal/annotations/TestFilter.java create mode 100644 src/main/java/com/epam/reportportal/annotations/TestNameFilter.java create mode 100644 src/main/java/com/epam/reportportal/annotations/TestParamFilter.java diff --git a/CHANGELOG.md b/CHANGELOG.md index a39eeb0b..57bcc793 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ - `TmsLink` and `TmsLinks` annotations, by @HardNorth - `Issue` and `ExternalIssue` annotations, by @HardNorth - `rp.bts.project`, `rp.bts.url`, `rp.bts.issue.url`, `rp.bts.issue.fail` properties, which controls these annotations, by @HardNorth + - `TestFilter`, `TestNameFilter`, `TestParamFilter` annotations to control Issue apply on Parameterized and Dynamic Tests, by @HardNorth - `ReportPortalClient.getProjectSettings` method, by @HardNorth ## [5.2.5] diff --git a/src/main/java/com/epam/reportportal/annotations/Issue.java b/src/main/java/com/epam/reportportal/annotations/Issue.java index 9054bd51..d7c28ed8 100644 --- a/src/main/java/com/epam/reportportal/annotations/Issue.java +++ b/src/main/java/com/epam/reportportal/annotations/Issue.java @@ -49,4 +49,11 @@ * @return External Issue describing object */ ExternalIssue[] external() default {}; + + /** + * For Parameterized and Dynamic tests apply current issue to specific test filtered by certain criteria. + * + * @return filter list + */ + TestFilter[] filter() default {}; } diff --git a/src/main/java/com/epam/reportportal/annotations/TestFilter.java b/src/main/java/com/epam/reportportal/annotations/TestFilter.java new file mode 100644 index 00000000..fa6f41e0 --- /dev/null +++ b/src/main/java/com/epam/reportportal/annotations/TestFilter.java @@ -0,0 +1,34 @@ +/* + * Copyright 2024 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.epam.reportportal.annotations; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Link current Issue with a specific Parameterized or Dynamic test by applying filters. + */ +@Documented +@Retention(RetentionPolicy.RUNTIME) +@Target({}) +public @interface TestFilter { + TestNameFilter[] name() default {}; + + TestParamFilter[] param() default {}; +} diff --git a/src/main/java/com/epam/reportportal/annotations/TestNameFilter.java b/src/main/java/com/epam/reportportal/annotations/TestNameFilter.java new file mode 100644 index 00000000..ac7f9ed3 --- /dev/null +++ b/src/main/java/com/epam/reportportal/annotations/TestNameFilter.java @@ -0,0 +1,26 @@ +/* + * Copyright 2024 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.epam.reportportal.annotations; + +/** + * Filter Test Set by Test Name. + */ +public @interface TestNameFilter { + String startsWith() default ""; + String endsWith() default ""; + String contains() default ""; +} diff --git a/src/main/java/com/epam/reportportal/annotations/TestParamFilter.java b/src/main/java/com/epam/reportportal/annotations/TestParamFilter.java new file mode 100644 index 00000000..c5cf0750 --- /dev/null +++ b/src/main/java/com/epam/reportportal/annotations/TestParamFilter.java @@ -0,0 +1,31 @@ +/* + * Copyright 2024 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.epam.reportportal.annotations; + +/** + * Filter Test Set by Parameter. + */ +public @interface TestParamFilter { + int paramIndex() default -1; + String nameStartsWith() default ""; + String nameEndsWith() default ""; + String nameContains() default ""; + + String valueStartsWith() default ""; + String valueEndsWith() default ""; + String valueContains() default ""; +} From dee6202fa112aacf57ada3263419b097d91e414c Mon Sep 17 00:00:00 2001 From: Vadzim Hushchanskou Date: Fri, 23 Feb 2024 13:48:53 +0300 Subject: [PATCH 12/17] Issue filter annotations javadocs --- .../epam/reportportal/annotations/Issue.java | 3 +- .../annotations/ParameterKey.java | 9 +--- .../reportportal/annotations/TestFilter.java | 12 +++++ .../annotations/TestNameFilter.java | 17 +++++++ .../annotations/TestParamFilter.java | 46 +++++++++++++++++++ 5 files changed, 78 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/epam/reportportal/annotations/Issue.java b/src/main/java/com/epam/reportportal/annotations/Issue.java index d7c28ed8..d59b0fa5 100644 --- a/src/main/java/com/epam/reportportal/annotations/Issue.java +++ b/src/main/java/com/epam/reportportal/annotations/Issue.java @@ -51,7 +51,8 @@ ExternalIssue[] external() default {}; /** - * For Parameterized and Dynamic tests apply current issue to specific test filtered by certain criteria. + * For Parameterized and Dynamic tests select certain test for Issue applying using filters by certain criteria. Each additional filter + * applies to the set of tests using logical "AND". * * @return filter list */ diff --git a/src/main/java/com/epam/reportportal/annotations/ParameterKey.java b/src/main/java/com/epam/reportportal/annotations/ParameterKey.java index 1c401989..856daafa 100644 --- a/src/main/java/com/epam/reportportal/annotations/ParameterKey.java +++ b/src/main/java/com/epam/reportportal/annotations/ParameterKey.java @@ -21,23 +21,16 @@ import java.lang.annotation.Target; /** - * Used in parametrized tests. ReportPortal waiting test parameters - * in key - value style. Using the annotation for method parameter + * Used in parametrized tests. ReportPortal waiting test parameters in key - value style. Using the annotation for method parameter * the specific key can be provided. - * - * @author Pavel Bortnik - * @since ReportPortal Api v3.1.0 */ - @Retention(RetentionPolicy.RUNTIME) @Target({ ElementType.PARAMETER }) public @interface ParameterKey { - /** * Returns parameter key value * * @return key value */ String value() default ""; - } diff --git a/src/main/java/com/epam/reportportal/annotations/TestFilter.java b/src/main/java/com/epam/reportportal/annotations/TestFilter.java index fa6f41e0..3cf92768 100644 --- a/src/main/java/com/epam/reportportal/annotations/TestFilter.java +++ b/src/main/java/com/epam/reportportal/annotations/TestFilter.java @@ -28,7 +28,19 @@ @Retention(RetentionPolicy.RUNTIME) @Target({}) public @interface TestFilter { + + /** + * Specify Test Name filters to select certain test for {@link Issue} applying, suitable for dynamic tests. + * + * @return Test Name filters + */ TestNameFilter[] name() default {}; + + /** + * Specify Test Parameter filters to select certain test for {@link Issue} applying, suitable for parameterized tests. + * + * @return Test Name filters + */ TestParamFilter[] param() default {}; } diff --git a/src/main/java/com/epam/reportportal/annotations/TestNameFilter.java b/src/main/java/com/epam/reportportal/annotations/TestNameFilter.java index ac7f9ed3..379d056f 100644 --- a/src/main/java/com/epam/reportportal/annotations/TestNameFilter.java +++ b/src/main/java/com/epam/reportportal/annotations/TestNameFilter.java @@ -20,7 +20,24 @@ * Filter Test Set by Test Name. */ public @interface TestNameFilter { + /** + * Select a test which name starts with specified String. + * + * @return required prefix + */ String startsWith() default ""; + + /** + * Select a test which name ends with specified String. + * + * @return required postfix + */ String endsWith() default ""; + + /** + * Select a test which name should contain specified String. + * + * @return required contents + */ String contains() default ""; } diff --git a/src/main/java/com/epam/reportportal/annotations/TestParamFilter.java b/src/main/java/com/epam/reportportal/annotations/TestParamFilter.java index c5cf0750..4c317cc8 100644 --- a/src/main/java/com/epam/reportportal/annotations/TestParamFilter.java +++ b/src/main/java/com/epam/reportportal/annotations/TestParamFilter.java @@ -20,12 +20,58 @@ * Filter Test Set by Parameter. */ public @interface TestParamFilter { + /** + * Parameter index to which this filter should be applied. If it's not specified then the filter try to match every parameter. + * + * @return parameter index + */ int paramIndex() default -1; + + /** + * Select a test parameter which name starts with specified String. Designed to use with {@link ParameterKey} annotation, since there is + * no parameters names in Java runtime. + * + * @return required prefix + */ String nameStartsWith() default ""; + + /** + * Select a test parameter which name ends with specified String. Designed to use with {@link ParameterKey} annotation, since there is + * no parameters names in Java runtime. + * + * @return required prefix + */ String nameEndsWith() default ""; + + /** + * Select a test parameter which name should contain specified String. Designed to use with {@link ParameterKey} annotation, since there + * is no parameters names in Java runtime. + * + * @return required prefix + */ String nameContains() default ""; + /** + * Select a test parameter which value starts with specified String. Non-string parameter values convert with {@link Object#toString()}, + * method. + * + * @return required prefix + */ String valueStartsWith() default ""; + + /** + * Select a test parameter which value ends with specified String. Non-string parameter values convert with {@link Object#toString()}, + * method. + * + * @return required prefix + */ String valueEndsWith() default ""; + + /** + * Select a test parameter which value should contain specified String. Non-string parameter values convert with + * {@link Object#toString()}, method. + * + * @return required prefix + */ String valueContains() default ""; } From 8f68ef7d3d80eaeb6096b9a5a65a7b41ff8d771a Mon Sep 17 00:00:00 2001 From: Vadzim Hushchanskou Date: Fri, 23 Feb 2024 13:57:12 +0300 Subject: [PATCH 13/17] Apply formatting --- .../com/epam/reportportal/annotations/ExternalIssue.java | 5 ++++- .../com/epam/reportportal/annotations/TemplateConfig.java | 2 +- .../java/com/epam/reportportal/annotations/TestFilter.java | 1 - .../epam/reportportal/annotations/attribute/Attributes.java | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/epam/reportportal/annotations/ExternalIssue.java b/src/main/java/com/epam/reportportal/annotations/ExternalIssue.java index 1c4473f5..3310b3ca 100644 --- a/src/main/java/com/epam/reportportal/annotations/ExternalIssue.java +++ b/src/main/java/com/epam/reportportal/annotations/ExternalIssue.java @@ -16,7 +16,10 @@ package com.epam.reportportal.annotations; -import java.lang.annotation.*; +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; /** * Link current Issue with an Issue posted in External Bug Tracking System. This annotation designed to use within {@link Issue} annotation diff --git a/src/main/java/com/epam/reportportal/annotations/TemplateConfig.java b/src/main/java/com/epam/reportportal/annotations/TemplateConfig.java index 45f096f2..dcaf1855 100644 --- a/src/main/java/com/epam/reportportal/annotations/TemplateConfig.java +++ b/src/main/java/com/epam/reportportal/annotations/TemplateConfig.java @@ -26,7 +26,7 @@ * Template configuration. Required for customizing representation of the parsed collections and arrays. * {@link TemplateConfig#methodNameTemplate()} required to set the current method name template to be included in the result value to * prevent situations when the method argument has the same name as a default {@link TemplateConfiguration#METHOD_NAME_TEMPLATE} - * + *

* {@link TemplateConfig#selfNameTemplate()} required to set the current object name template to be included in the result value to * prevent situations when the method argument has the same name as a default {@link TemplateConfiguration#SELF_NAME_TEMPLATE} */ diff --git a/src/main/java/com/epam/reportportal/annotations/TestFilter.java b/src/main/java/com/epam/reportportal/annotations/TestFilter.java index 3cf92768..9ab33ed8 100644 --- a/src/main/java/com/epam/reportportal/annotations/TestFilter.java +++ b/src/main/java/com/epam/reportportal/annotations/TestFilter.java @@ -36,7 +36,6 @@ */ TestNameFilter[] name() default {}; - /** * Specify Test Parameter filters to select certain test for {@link Issue} applying, suitable for parameterized tests. * diff --git a/src/main/java/com/epam/reportportal/annotations/attribute/Attributes.java b/src/main/java/com/epam/reportportal/annotations/attribute/Attributes.java index 80fe6ae5..5e509e38 100644 --- a/src/main/java/com/epam/reportportal/annotations/attribute/Attributes.java +++ b/src/main/java/com/epam/reportportal/annotations/attribute/Attributes.java @@ -28,7 +28,7 @@ * @see MultiValueAttribute */ @Retention(RetentionPolicy.RUNTIME) -@Target({ElementType.METHOD, ElementType.TYPE}) +@Target({ ElementType.METHOD, ElementType.TYPE }) @Inherited public @interface Attributes { From 9a76ccf27bab19a1e0570ebd148bd2de9cb1ba99 Mon Sep 17 00:00:00 2001 From: Vadzim Hushchanskou Date: Fri, 23 Feb 2024 13:58:01 +0300 Subject: [PATCH 14/17] Fix typing --- .../com/epam/reportportal/annotations/TestParamFilter.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/epam/reportportal/annotations/TestParamFilter.java b/src/main/java/com/epam/reportportal/annotations/TestParamFilter.java index 4c317cc8..977c4051 100644 --- a/src/main/java/com/epam/reportportal/annotations/TestParamFilter.java +++ b/src/main/java/com/epam/reportportal/annotations/TestParamFilter.java @@ -29,7 +29,7 @@ /** * Select a test parameter which name starts with specified String. Designed to use with {@link ParameterKey} annotation, since there is - * no parameters names in Java runtime. + * no parameter names in Java runtime. * * @return required prefix */ @@ -37,7 +37,7 @@ /** * Select a test parameter which name ends with specified String. Designed to use with {@link ParameterKey} annotation, since there is - * no parameters names in Java runtime. + * no parameter names in Java runtime. * * @return required prefix */ @@ -45,7 +45,7 @@ /** * Select a test parameter which name should contain specified String. Designed to use with {@link ParameterKey} annotation, since there - * is no parameters names in Java runtime. + * is no parameter names in Java runtime. * * @return required prefix */ From 9deb477f3498b3e46096f30c2eecb4763f0b466b Mon Sep 17 00:00:00 2001 From: Vadzim Hushchanskou Date: Fri, 23 Feb 2024 15:32:06 +0300 Subject: [PATCH 15/17] Slack link update --- README.md | 2 +- README_TEMPLATE.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7ec64d04..6200fe4c 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ [![Maven Central](https://img.shields.io/maven-central/v/com.epam.reportportal/client-java.svg?label=Maven%20Central)](https://central.sonatype.com/artifact/com.epam.reportportal/client-java) [![CI Build](https://github.com/reportportal/client-java/actions/workflows/ci.yml/badge.svg)](https://github.com/reportportal/client-java/actions/workflows/ci.yml) [![codecov](https://codecov.io/gh/reportportal/client-java/branch/develop/graph/badge.svg?token=IVTys0o4JT)](https://codecov.io/gh/reportportal/client-java) -[![Join Slack chat!](https://slack.epmrpp.reportportal.io/badge.svg)](https://slack.epmrpp.reportportal.io/) +[![Join Slack chat!](https://img.shields.io/badge/slack-join-brightgreen.svg)](https://slack.epmrpp.reportportal.io/) [![stackoverflow](https://img.shields.io/badge/reportportal-stackoverflow-orange.svg?style=flat)](http://stackoverflow.com/questions/tagged/reportportal) [![Build with Love](https://img.shields.io/badge/build%20with-❤%EF%B8%8F%E2%80%8D-lightgrey.svg)](http://reportportal.io?style=flat) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) diff --git a/README_TEMPLATE.md b/README_TEMPLATE.md index 05aaa930..96806176 100644 --- a/README_TEMPLATE.md +++ b/README_TEMPLATE.md @@ -7,7 +7,7 @@ [![Maven Central](https://img.shields.io/maven-central/v/com.epam.reportportal/client-java.svg?label=Maven%20Central)](https://central.sonatype.com/artifact/com.epam.reportportal/client-java) [![CI Build](https://github.com/reportportal/client-java/actions/workflows/ci.yml/badge.svg)](https://github.com/reportportal/client-java/actions/workflows/ci.yml) [![codecov](https://codecov.io/gh/reportportal/client-java/branch/develop/graph/badge.svg?token=IVTys0o4JT)](https://codecov.io/gh/reportportal/client-java) -[![Join Slack chat!](https://slack.epmrpp.reportportal.io/badge.svg)](https://slack.epmrpp.reportportal.io/) +[![Join Slack chat!](https://img.shields.io/badge/slack-join-brightgreen.svg)](https://slack.epmrpp.reportportal.io/) [![stackoverflow](https://img.shields.io/badge/reportportal-stackoverflow-orange.svg?style=flat)](http://stackoverflow.com/questions/tagged/reportportal) [![Build with Love](https://img.shields.io/badge/build%20with-❤%EF%B8%8F%E2%80%8D-lightgrey.svg)](http://reportportal.io?style=flat) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) From b4fa701af44205c44b653ab4cb274ba0764abb0e Mon Sep 17 00:00:00 2001 From: Vadzim Hushchanskou Date: Wed, 6 Mar 2024 12:07:13 +0300 Subject: [PATCH 16/17] Mute weaver warnings --- src/main/resources/META-INF/aop-ajc.xml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/main/resources/META-INF/aop-ajc.xml b/src/main/resources/META-INF/aop-ajc.xml index 4f45411f..9bfa23eb 100644 --- a/src/main/resources/META-INF/aop-ajc.xml +++ b/src/main/resources/META-INF/aop-ajc.xml @@ -1,4 +1,21 @@ + + + From df39c1af9a8f6cddab0b1ee8600b7475fffbb80f Mon Sep 17 00:00:00 2001 From: Vadzim Hushchanskou Date: Thu, 14 Mar 2024 15:27:33 +0300 Subject: [PATCH 17/17] Minor fix --- src/main/java/com/epam/reportportal/annotations/TmsLink.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/epam/reportportal/annotations/TmsLink.java b/src/main/java/com/epam/reportportal/annotations/TmsLink.java index 0c4c55d7..f94d25b6 100644 --- a/src/main/java/com/epam/reportportal/annotations/TmsLink.java +++ b/src/main/java/com/epam/reportportal/annotations/TmsLink.java @@ -20,7 +20,7 @@ /** * Add a link to a Test Case located in external Test Management System. - * This annotation appends a hypertext link to a Test Case into the Test Item description. + * This annotation appends a hypertext link to a Test Case into the Test Item description. */ @Documented @Inherited