From 81b886e5388eca8d1b6ee5ea520523ffc8970163 Mon Sep 17 00:00:00 2001 From: Yuliya Prihodko <107035036+pressayuliya@users.noreply.github.com> Date: Fri, 8 Sep 2023 18:07:17 +0300 Subject: [PATCH 01/17] EPMRPP-86235 || Create Features section in Documentation (#601) Co-authored-by: Yuliya_Prihodko --- docs/FAQ/index.md | 6 ++++++ docs/features/AIFailureReasonDetection.md | 6 ++++++ docs/features/CategorisationOfFailures.md | 6 ++++++ docs/features/QualityGates.md | 6 ++++++ docs/features/RESTAPI.md | 6 ++++++ docs/features/RealTimeReporting.md | 6 ++++++ docs/features/RichArtifactsInTestReports.md | 6 ++++++ docs/features/UnifiedTestReporting.md | 7 +++++++ docs/features/VisualisationOfTestResults.md | 6 ++++++ docs/features/_category_.json | 7 +++++++ 10 files changed, 62 insertions(+) create mode 100644 docs/FAQ/index.md create mode 100644 docs/features/AIFailureReasonDetection.md create mode 100644 docs/features/CategorisationOfFailures.md create mode 100644 docs/features/QualityGates.md create mode 100644 docs/features/RESTAPI.md create mode 100644 docs/features/RealTimeReporting.md create mode 100644 docs/features/RichArtifactsInTestReports.md create mode 100644 docs/features/UnifiedTestReporting.md create mode 100644 docs/features/VisualisationOfTestResults.md create mode 100644 docs/features/_category_.json diff --git a/docs/FAQ/index.md b/docs/FAQ/index.md new file mode 100644 index 000000000..b3baaafeb --- /dev/null +++ b/docs/FAQ/index.md @@ -0,0 +1,6 @@ +--- +sidebar_position: 17 +sidebar_label: FAQ +--- + +# FAQ diff --git a/docs/features/AIFailureReasonDetection.md b/docs/features/AIFailureReasonDetection.md new file mode 100644 index 000000000..bc2c78b1a --- /dev/null +++ b/docs/features/AIFailureReasonDetection.md @@ -0,0 +1,6 @@ +--- +sidebar_position: 3 +sidebar_label: AI failure reason detection +--- + +# AI failure reason detection diff --git a/docs/features/CategorisationOfFailures.md b/docs/features/CategorisationOfFailures.md new file mode 100644 index 000000000..8670bb3ea --- /dev/null +++ b/docs/features/CategorisationOfFailures.md @@ -0,0 +1,6 @@ +--- +sidebar_position: 2 +sidebar_label: Categorisation of failures +--- + +# Categorisation of failures diff --git a/docs/features/QualityGates.md b/docs/features/QualityGates.md new file mode 100644 index 000000000..11b1d2af1 --- /dev/null +++ b/docs/features/QualityGates.md @@ -0,0 +1,6 @@ +--- +sidebar_position: 7 +sidebar_label: Quality Gates +--- + +# Quality Gates diff --git a/docs/features/RESTAPI.md b/docs/features/RESTAPI.md new file mode 100644 index 000000000..4d3ffa807 --- /dev/null +++ b/docs/features/RESTAPI.md @@ -0,0 +1,6 @@ +--- +sidebar_position: 7 +sidebar_label: REST API +--- + +# REST API diff --git a/docs/features/RealTimeReporting.md b/docs/features/RealTimeReporting.md new file mode 100644 index 000000000..c16a5293b --- /dev/null +++ b/docs/features/RealTimeReporting.md @@ -0,0 +1,6 @@ +--- +sidebar_position: 5 +sidebar_label: Real-time reporting +--- + +# Real-time reporting diff --git a/docs/features/RichArtifactsInTestReports.md b/docs/features/RichArtifactsInTestReports.md new file mode 100644 index 000000000..ef2827242 --- /dev/null +++ b/docs/features/RichArtifactsInTestReports.md @@ -0,0 +1,6 @@ +--- +sidebar_position: 4 +sidebar_label: Rich artifacts in test reports +--- + +# Rich artifacts in test reports diff --git a/docs/features/UnifiedTestReporting.md b/docs/features/UnifiedTestReporting.md new file mode 100644 index 000000000..f09719e2f --- /dev/null +++ b/docs/features/UnifiedTestReporting.md @@ -0,0 +1,7 @@ +--- +sidebar_position: 1 +sidebar_label: Unified test reporting +--- + +# Unified test reporting + diff --git a/docs/features/VisualisationOfTestResults.md b/docs/features/VisualisationOfTestResults.md new file mode 100644 index 000000000..1f0760fa6 --- /dev/null +++ b/docs/features/VisualisationOfTestResults.md @@ -0,0 +1,6 @@ +--- +sidebar_position: 6 +sidebar_label: Visualisation of test results +--- + +# Visualisation of test results diff --git a/docs/features/_category_.json b/docs/features/_category_.json new file mode 100644 index 000000000..3b6204fce --- /dev/null +++ b/docs/features/_category_.json @@ -0,0 +1,7 @@ +{ + "label": "Features", + "position": "2", + "link": { + "type": "generated-index" + } +} From 13803ad1563b7c866c811f104754c117c59feaa2 Mon Sep 17 00:00:00 2001 From: Yuliya Prihodko <107035036+pressayuliya@users.noreply.github.com> Date: Tue, 19 Sep 2023 11:54:43 +0300 Subject: [PATCH 02/17] EPMRPP-81759 || Create Releases section for new Documentation (#597) --- docs/Releases/Version3.3.2-1.md | 13 +++ docs/Releases/Version3.3.2.md | 19 ++++ docs/Releases/Version4.0.0.md | 148 ++++++++++++++++++++++++++++++++ docs/Releases/Version4.1.0.md | 16 ++++ docs/Releases/Version4.2.0.md | 40 +++++++++ docs/Releases/Version4.3.md | 27 ++++++ docs/Releases/Version5.0.0.md | 93 ++++++++++++++++++++ docs/Releases/Version5.0RC.md | 66 ++++++++++++++ docs/Releases/Version5.1.0.md | 53 ++++++++++++ docs/Releases/Version5.2.0.md | 18 ++++ docs/Releases/Version5.2.1.md | 8 ++ docs/Releases/Version5.2.2.md | 15 ++++ docs/Releases/Version5.2.3.md | 11 +++ docs/Releases/Version5.3.0.md | 30 +++++++ docs/Releases/Version5.3.1..md | 16 ++++ docs/Releases/Version5.3.2.md | 13 +++ docs/Releases/Version5.3.3.md | 38 ++++++++ docs/Releases/Version5.3.5.md | 11 +++ docs/Releases/Version5.4.0.md | 28 ++++++ docs/Releases/Version5.5.0.md | 23 +++++ docs/Releases/Version5.6.0.md | 41 +++++++++ docs/Releases/Version5.6.1.md | 9 ++ docs/Releases/Version5.6.2.md | 10 +++ docs/Releases/Version5.6.3.md | 9 ++ docs/Releases/Version5.7.0.md | 38 ++++++++ docs/Releases/Version5.7.1.md | 9 ++ docs/Releases/Version5.7.2.md | 51 +++++++++++ docs/Releases/Version5.7.3.md | 53 ++++++++++++ docs/Releases/Version5.7.4.md | 31 +++++++ docs/Releases/Versionv23.1.md | 84 ++++++++++++++++++ docs/Releases/_category_.json | 7 ++ docs/Releases/img/5.7.4.png | Bin 0 -> 72056 bytes 32 files changed, 1028 insertions(+) create mode 100644 docs/Releases/Version3.3.2-1.md create mode 100644 docs/Releases/Version3.3.2.md create mode 100644 docs/Releases/Version4.0.0.md create mode 100644 docs/Releases/Version4.1.0.md create mode 100644 docs/Releases/Version4.2.0.md create mode 100644 docs/Releases/Version4.3.md create mode 100644 docs/Releases/Version5.0.0.md create mode 100644 docs/Releases/Version5.0RC.md create mode 100644 docs/Releases/Version5.1.0.md create mode 100644 docs/Releases/Version5.2.0.md create mode 100644 docs/Releases/Version5.2.1.md create mode 100644 docs/Releases/Version5.2.2.md create mode 100644 docs/Releases/Version5.2.3.md create mode 100644 docs/Releases/Version5.3.0.md create mode 100644 docs/Releases/Version5.3.1..md create mode 100644 docs/Releases/Version5.3.2.md create mode 100644 docs/Releases/Version5.3.3.md create mode 100644 docs/Releases/Version5.3.5.md create mode 100644 docs/Releases/Version5.4.0.md create mode 100644 docs/Releases/Version5.5.0.md create mode 100644 docs/Releases/Version5.6.0.md create mode 100644 docs/Releases/Version5.6.1.md create mode 100644 docs/Releases/Version5.6.2.md create mode 100644 docs/Releases/Version5.6.3.md create mode 100644 docs/Releases/Version5.7.0.md create mode 100644 docs/Releases/Version5.7.1.md create mode 100644 docs/Releases/Version5.7.2.md create mode 100644 docs/Releases/Version5.7.3.md create mode 100644 docs/Releases/Version5.7.4.md create mode 100644 docs/Releases/Versionv23.1.md create mode 100644 docs/Releases/_category_.json create mode 100644 docs/Releases/img/5.7.4.png diff --git a/docs/Releases/Version3.3.2-1.md b/docs/Releases/Version3.3.2-1.md new file mode 100644 index 000000000..cd566be8e --- /dev/null +++ b/docs/Releases/Version3.3.2-1.md @@ -0,0 +1,13 @@ +--- +sidebar_position: 29 +sidebar_label: Version 3.3.2-1 +--- + +# Version 3.3.2-1 + +**Update instructions** +- In case of update from 3.3.2 version, just update version of API container. +- In case of update from older versions: follow update guide for version 3.3.2 + +**Minor improvements:** +- Backward compatibility with 4.0.x Agents diff --git a/docs/Releases/Version3.3.2.md b/docs/Releases/Version3.3.2.md new file mode 100644 index 000000000..317637269 --- /dev/null +++ b/docs/Releases/Version3.3.2.md @@ -0,0 +1,19 @@ +--- +sidebar_position: 30 +sidebar_label: Version 3.3.2 +--- + +# Version 3.3.2 + +[milestone 3.3](https://github.com/reportportal/reportportal/milestone/5?closed=1) + +[Migrate to version 3.1+ instructions](https://github.com/reportportal/reportportal/wiki/Migration-to-3.1) + + +## Bug fixes + +Fixed the following bugs: + +[#267](https://github.com/reportportal/reportportal/issues/267) Couldn't expand log of test + +[#248](https://github.com/reportportal/reportportal/issues/248) Log message is not expanded if lower than 'level-ERROR' diff --git a/docs/Releases/Version4.0.0.md b/docs/Releases/Version4.0.0.md new file mode 100644 index 000000000..7c6314511 --- /dev/null +++ b/docs/Releases/Version4.0.0.md @@ -0,0 +1,148 @@ +--- +sidebar_position: 28 +sidebar_label: Version 4.0.0 +--- + +# Version 4.0.0 + +Issues and features in [milestone 4.0](https://github.com/reportportal/reportportal/issues?q=is%3Aclosed+milestone%3A4.0) + +## Migration Details + +- MAKE BACKUP + +- IF YOUR MONGO IS INSTALLED ON SEPARATE HOST, WE WOULD LIKE TO DRAW YOUR ATTENTION ON NEW URI FORMAT: RP_MONGO_URI=mongodb://localhost:27017. Please, refer to [MongoDB documentation](https://docs.mongodb.com/manual/reference/connection-string/) to get more details + +- ElasticSearch has been introduced. Please, make sure `vm.max_map_count` kernel setting is defined as it's described in the [official ES guide](https://www.elastic.co/guide/en/elasticsearch/reference/6.1/docker.html#docker-cli-run-prod-mode) to prepare your environment + Please, make sure you give right permissions to ES data folder (as described in the official guide) +```sh +mkdir data/elasticsearch +chmod g+rwx data/elasticsearch +chgrp 1000 data/elasticsearch +``` +- Please, refer to the last version of docker-compose example for more details + +## Agent Compatibility Details +- TestNG: Versions of TestNG framework below 6.10 are not supported +- JVM Clients v3 can be extended to support ReportPortal server v.4. + +## New features + +* New version of Auto Analyzer + +[Ru Video](https://www.youtube.com/watch?v=GsmfLzQdgRs) + +[En Video](https://www.youtube.com/watch?v=d2ekWI2exZ4) + +- [#48](https://github.com/reportportal/reportportal/issues/48) IGNORE flag for AA to skip item next time; +- [#227](https://github.com/reportportal/reportportal/issues/227) Boost human priority; +- A label for auto-analysed test cases (AA) is added; +- An AA action is added to the test cases` history on a Log view; +- Added a filter for test items with a label AA +- Retries and Auto-Analyzer + +* [#37](https://github.com/reportportal/reportportal/issues/37) Flaky test widget +* [#264](https://github.com/reportportal/reportportal/issues/264) Retry + +## Improvements + +### Github Improvements + +* [#254](https://github.com/reportportal/reportportal/issues/254) Added possibility to post bug with a correct link based on Unique ID to test item +* [#238](https://github.com/reportportal/reportportal/issues/238) Added possibility to add a domain without a dot; +* [#230](https://github.com/reportportal/reportportal/issues/230) Escaped logs filter term after refresh +* [#141](https://github.com/reportportal/reportportal/issues/141) Added tags in e-mail body +* [#217](https://github.com/reportportal/reportportal/issues/217) Added possibility to print dashboards (print CSS) +* [#212](https://github.com/reportportal/reportportal/issues/212) Added search for "Add shared widget" window +* [#213](https://github.com/reportportal/reportportal/issues/213) Added possibility to add an own shared widget on an own dashboard +* [#105](https://github.com/reportportal/reportportal/issues/105) Changing a dropdown list on a slider to set a log level +* [#22](https://github.com/reportportal/reportportal/issues/22) Added a filter by a launch number +* [#276](https://github.com/reportportal/reportportal/issues/276) Keep logs and screenshots for a long period of time (forever) +* [#210](https://github.com/reportportal/reportportal/issues/210) Image viewer not close +* [#189](https://github.com/reportportal/reportportal/issues/189) Added feature "Copy result from previous run" +* [#133](https://github.com/reportportal/reportportal/issues/133) ALL DASHBOARDS: Added possibility for List view +* [#250](https://github.com/reportportal/reportportal/issues/250) Support for custom types of defects +* [#136](https://github.com/reportportal/reportportal/issues/136) Added a filter for linked bugs +* [#119](https://github.com/reportportal/reportportal/issues/119) Added test parameters on a Step and Log view +* [#26](https://github.com/reportportal/reportportal/issues/26) LDAPS protocol support +* [#270](https://github.com/reportportal/reportportal/issues/270) Report Portal Email Notification should have "link" configuration +* [#247](https://github.com/reportportal/reportportal/issues/247) Get launch's URL using ReportPortal agent-java-testNG +* [#242](https://github.com/reportportal/reportportal/issues/242) "Replace Comments to All Selected Items" should be checked only after a comment is typed + + +### Widgets Improvements + +**Widgets refactoring:** + +* Launch execution & issue statistics widget refactoring with C3.js library; +* Launch statistics line chart refactoring with C3 library Investigated; percentage of launches refactoring with C3.js library; +* Different launches comparison chart refactoring with C3 library; +* Failed cases trend chart refactoring with C3 library; +* Non-Passed test-cases trend chart with C3 library; +* Test-Cases growth trend chart refactoring with C3 library; +* Launches duration chart refactoring with C3 library; +* Refactor charts for All launches & defect type page & launches table widget with refactoring with C3 library; +* Refactoring of charts on Project Info page; + +**Line chart widget improvements:** + +* Combine line chart and trend chart together; +* Added new zoom functionality on Line chart; +* [#232](https://github.com/reportportal/reportportal/issues/232) Added possibility to combine custom defects type on a Line chart widget; + +**The most failed test cases widget:** + +* Changing a design; +* Changing a mechanism of a results calculating (based on Unique ID); +* Added a name of chosen defect type on a widget view; + +**Other widget improvements:** + +[#174](https://github.com/reportportal/reportportal/issues/174) Widget silent update (save an actions with a legend after an auto-refresh); +Added test parameters separately from description; + + +### Improvements on ReportPortal + +* Added Cheat Sheets to the documentation on ReportPortal (“Installation steps”); +* Added possibility to correct and improve documentation on reportportal.io by our Users; +* Added twitter widget; +* Added YouTube widget; +* Added a collapsing function for a documentation menu; +* Added new section for easy downloading ["Download"](http://reportportal.io/download) +* Added Docker-compose.yml generator +* Added extended scheme of agents` working + +### Minor Improvements + +* History table is grouping test items by Unique ID; +* Added ALL to multie drop-down list; +* Added clickable elements on Management board +* Remove match issue +* Added mechanism based on UID to Merge functionality +* Added"check All" to dropdown lists; + + +## Bug fixes + +### Bugs + +* [#249](https://github.com/reportportal/reportportal/issues/249) Notification rule for launch in Debug +* [#4](https://github.com/reportportal/plugin-jenkins/issues/4) Correct a link on Jenkins plugin +* [#268](https://github.com/reportportal/reportportal/issues/268) Warning about an outdated browser +* [#218](https://github.com/reportportal/reportportal/issues/218) system-out is not recognized when importing junit +* [#255](https://github.com/reportportal/reportportal/issues/255) Invalid link for the test in the "FOUND IN" column +* [#322](https://github.com/reportportal/reportportal/issues/322) Make startTestItemRQ in API 4.x case insensitive +* [#317](https://github.com/reportportal/reportportal/issues/317) Bad request. The importing file has invalid format. 'There are invalid xml files inside. +* [#314](https://github.com/reportportal/reportportal/issues/314) Set up different "superadmin" password +* [#307](https://github.com/reportportal/reportportal/issues/307) Cucumber Java Agent – Steps are sporadically missing from the test’s logs +* [#305](https://github.com/reportportal/reportportal/issues/305) JBehave NPE if givenStory=true for root story +* [#281](https://github.com/reportportal/reportportal/issues/281) system-out is not recognized when importing junit +* [#188](https://github.com/reportportal/reportportal/issues/188) Error Message: Start time of child ['Wed Jul 19 12:53:49 UTC 2017'] item should be same or later than start time ['Wed Jul 19 12:53:49 UTC 2017'] of the parent item/launch '596f565d2ab79c0007b48b46' Error Type: CHILD_START_TIME_EARLIER_THAN_PARENT + + +### Agent bugs + +* [#220](https://github.com/reportportal/reportportal/issues/220) Cucumber-JVM: RP throws exception, when there is no features match the filter +* [#229](https://github.com/reportportal/reportportal/issues/229) Unable to view logs for some test items +* [#3](https://github.com/reportportal/logger-java-log4j/issues/3) Race condition failures: lost logs and failures diff --git a/docs/Releases/Version4.1.0.md b/docs/Releases/Version4.1.0.md new file mode 100644 index 000000000..3834bfbfe --- /dev/null +++ b/docs/Releases/Version4.1.0.md @@ -0,0 +1,16 @@ +--- +sidebar_position: 27 +sidebar_label: Version 4.1.0 +--- + +# Version 4.1.0 + +Issues and features in milestone 4.1 + +## Improvements + +* [#369](https://github.com/reportportal/reportportal/issues/369) Custom rules for Auto-Analysis: AA based on launches with the same name and on all launches on a project +* [#66](https://github.com/reportportal/reportportal/issues/66) JIRA & RALLY: possibility to select issue type +* [#106](https://github.com/reportportal/reportportal/pull/106) Replace enum with simple string for better bts extension +* Parameter "rp.project" should have the current project as a value and not the default_project +* MERGE: Possibility to merge launches by specifying only launch ID and merge type via APIrequest diff --git a/docs/Releases/Version4.2.0.md b/docs/Releases/Version4.2.0.md new file mode 100644 index 000000000..a3993dfe5 --- /dev/null +++ b/docs/Releases/Version4.2.0.md @@ -0,0 +1,40 @@ +--- +sidebar_position: 26 +sidebar_label: Version 4.2.0 +--- + +# Version 4.2.0 + +## Features + +* [#417](https://github.com/reportportal/reportportal/issues/417) Segregation of AA settings in a separate section +* [#417](https://github.com/reportportal/reportportal/issues/417) Added a possibility to configure ML; +* [#417](https://github.com/reportportal/reportportal/issues/417) Added a possibility to remove/generate ElasticSearch index (ML education); +* [#381](https://github.com/reportportal/reportportal/issues/381) Auto-Analysis: AA for the current launch (analogue of our previous feature "Match issue); +* [#382](https://github.com/reportportal/reportportal/issues/382) Auto-Analysis: Possibility to chose which items should be auto-analysed in the launch ( With "To investigate", Already auto-analysed, analysed manually) ; + *Documentation about auto-analysis is [here](/analysis/AutoAnalysisOfLaunches)* +* [#366](https://github.com/reportportal/reportportal/issues/366) Bulk operation for Unlink issues in BTS; + +## Improvements +* [#103](https://github.com/reportportal/reportportal/issues/103) HAR viewer for attached .har files; +* [#326](https://github.com/reportportal/reportportal/issues/326) Clickable launch number on a history line; +* [#328](https://github.com/reportportal/reportportal/issues/328) Clickable History table; +* [#329](https://github.com/reportportal/reportportal/issues/329) Duration in format MM:SS +* [#384](https://github.com/reportportal/reportportal/issues/384) [#613](https://github.com/reportportal/service-ui/issues/613) Option for "Tag" filter - "Not contain" +* [#339](https://github.com/reportportal/reportportal/issues/339) OAuth App on GitHub requires the user scope instead of read:user +* "Load issue" has been renamed to "Link issue" +* Added infinite session in full-screen mode(for using ReportPortal dashboards on screens) + +:::note +Before using the last function, please visit Profile page for the auto-generation of API token. +::: +## Bugs +* [#374](https://github.com/reportportal/reportportal/issues/374) Logs with level Error (40 000) and higher are considered in ElasticSearch +* [#376](https://github.com/reportportal/reportportal/issues/376) Unnecessary logging of all items in the run in case if run cannot be completed +* [#371](https://github.com/reportportal/reportportal/issues/371) Unable to connect ldap +* [#251](https://github.com/reportportal/reportportal/issues/251) Internal Server Error if no external system id is specified +* [#292](https://github.com/reportportal/reportportal/issues/292) Embedded cucumber log attachments are displayed incorrectly via reportportal +* [#380](https://github.com/reportportal/reportportal/issues/380) Issue with retry: negative statistics [#380](https://github.com/reportportal/reportportal/issues/380) +* Fixed bug with disappearing numbers on mobile version of All launches + +All issues and features are in milestone 4.2 diff --git a/docs/Releases/Version4.3.md b/docs/Releases/Version4.3.md new file mode 100644 index 000000000..3429c2e34 --- /dev/null +++ b/docs/Releases/Version4.3.md @@ -0,0 +1,27 @@ +--- +sidebar_position: 25 +sidebar_label: Version 4.3 +--- + +# Version 4.2.0 + +## Features + + +* [#442](https://github.com/reportportal/reportportal/issues/442) Added a link to the test item which have been used by Analyzer for decision on History of Actions (Log view); + +* Previous Analyzer is back (choose pre-set Classic) + +## Improvements + +* [#452](https://github.com/reportportal/reportportal/issues/452) Added possibility to share with a quick filter on All launches by link; +* [#427](https://github.com/reportportal/reportportal/issues/427) Allowed to set autoAnalyzed flag via API; +* [#375](https://github.com/reportportal/reportportal/issues/375) Added option *with/without methods* to Most failed/ flaky tests cases widgets; +* Performance optimization for Latest Launches; + +## Bugs + +* [#440](https://github.com/reportportal/reportportal/issues/440) Not getting any data on widget when selecting Start Time in filter +* [#436](https://github.com/reportportal/reportportal/issues/436) Jira integration: Bug priority is always `Minor` + +All issues and features are in milestone [4.3](https://github.com/reportportal/reportportal/milestone/21?closed=1) diff --git a/docs/Releases/Version5.0.0.md b/docs/Releases/Version5.0.0.md new file mode 100644 index 000000000..6b45139f4 --- /dev/null +++ b/docs/Releases/Version5.0.0.md @@ -0,0 +1,93 @@ +--- +sidebar_position: 23 +sidebar_label: Version 5.0.0 +--- + +# Version 5.0.0 + +Finally we are glad to introduce a new release of ReportPortal. +In this version we have: + +* Migrated to PostgreSQL +* Migrated to React JS +* Removed Consul +* Introduced RabbitMQ for asynchronous reporting\ +* Introduced a plugin system +* Improved performance x3 + +## Installation details +- [with Docker](/installation-steps/DeployWithDockerOnLinuxMac) +- [with Kubernetes Helm chart](/installation-steps/DeployWithKubernetes) #362 +- Manual set up [without Docker](/installation-steps/DeployWithoutDocker) +- [**v4 -> v5 data migration instruction**](https://github.com/reportportal/reportportal/wiki/Migration-to-ReportPortal-v.5) +## Plugins +Jira, Rally, SauceLabs integration now will work through the plugin functionality. You need to download latest JAR package from our Bintray repository, and drag-n-drop it ReportPortal in Administrative section -> Plugins. + +Read more [here](/plugins/ManagePlugins#upload-plugin). + +Available plugins to download: +- [Jira](/plugins/JiraServer) +- [Rally](/plugins/Rally) +- [SauceLabs](/plugins/SauceLabs) +## Brand new features +- [#275](https://github.com/reportportal/reportportal/issues/275) [#639](https://github.com/reportportal/reportportal/issues/639) Nested steps +- [#348](https://github.com/reportportal/reportportal/issues/348) Integration with SauceLabs +- [#673](https://github.com/reportportal/reportportal/issues/673) [#486](https://github.com/reportportal/reportportal/issues/486) Pattern analysis +- [#675](https://github.com/reportportal/reportportal/issues/675) Auto-updated wWidget based on launch attributes (Cumulative trend chart, Component Health Check) +- 15 sub-defects per defect type +- [#41](https://github.com/reportportal/reportportal/issues/41) Sub-defects for “To investigate” +- Replace tags with attributes (attributes = key:value) +- [#680](https://github.com/reportportal/reportportal/issues/680) Implement a plugin system for integration with external systems (JIRA, Rally, SauceLabs, E-mail server) +- A possibility to change status of test item +- A view with a test item s list from different launch (Clickable area for Overall statistics, Component Health Check widget) + +## Reporting updates +- Reduced restriction for synchronous reporting +- Fully asynchronous reporting with `api/v2` +- [#275](https://github.com/reportportal/reportportal/issues/275) [#639](https://github.com/reportportal/reportportal/issues/639) Reporting with Nested steps (see section Agents Updates) +- [#526](https://github.com/reportportal/reportportal/issues/526) [#444](https://github.com/reportportal/reportportal/issues/444) Logs/attachments for launch level (see section Agents Updates) +- [#571](https://github.com/reportportal/reportportal/issues/571) [#451](https://github.com/reportportal/reportportal/issues/451) Finish launch with populated status +- [#670](https://github.com/reportportal/reportportal/issues/670) Interruption children “in progress” when a parent has been finished +- [#671](https://github.com/reportportal/reportportal/issues/671) [#548](https://github.com/reportportal/reportportal/issues/548) Reporting test code reference (see section Agents Updates) +- [#490](https://github.com/reportportal/reportportal/issues/490) Reporting test into finished Parent Item +- A possibility to report tests with Test Case ID (ID number from your test management system) + +## Small and nice updates +- [#453](https://github.com/reportportal/reportportal/issues/453) Launch description and attributes on the suite view +- [#606](https://github.com/reportportal/reportportal/issues/606) Markdown on the Log page (no need in !!!MARKDOWN MODE!!!) +- Possibility to configure integrations (Jira/Rally/ E-mail-server/ SauceLabs) per project and for the whole instance +- [#618](https://github.com/reportportal/reportportal/issues/618) Increase limitation for step name length from 256 to 1024 +- [#457](https://github.com/reportportal/reportportal/issues/457) Increase password length +- Auto launch deleting +- Increase the number of launches for widgets from 150 to 600 + + +## Bug fixing +- [#522](https://github.com/reportportal/reportportal/issues/522) Defect comment is not updated during deleting +- [#542](https://github.com/reportportal/reportportal/issues/542) Issue with History line +- [#542](https://github.com/reportportal/reportportal/issues/542) Unable to create a link to the result log page - page keeps reloading +- [#563](https://github.com/reportportal/reportportal/issues/563) DOM XSS in rp.epam.com +- [#564](https://github.com/reportportal/reportportal/issues/564) There is no possibility to enter login/password for email settings with RU local + +## Administrative page updates +- New design +- Possibility to filter projects and users +- Plugin system +- [#364](https://github.com/reportportal/reportportal/issues/364) Possibility to delete personal projects + +## Agents update +- Reporting with Nested steps (already updated TestNG) +- Logs/attachments for launch level (already updated TestNG) +- Reporting test code reference (already updated Java-based agents) +- Reporting test case ID (already updated Java-based agents) + +## Test frameworks integration +- The majority of test framework integrations (agents) of v4 supported by ReportPortal v5.0 backward compatibility. But do not use latest features, capabilities and performance upgrades (NestedSteps, Re-run, re-tries, etc.) +- Please take latest agents started with `5.*` in order to get full support of RPv5 features (work in progress, agents will be released soon) + +## Dev guides +- [ReportPortal with APIv5](https://github.com/reportportal/documentation/blob/master/src/md/src/DevGuides/reporting.md) +- [API v5 vs v4 difference](https://github.com/reportportal/documentation/blob/master/src/md/src/DevGuides/api-differences.md) +- [Using Re-Run functionality for Launches](https://github.com/reportportal/documentation/blob/master/src/md/src/DevGuides/rerun.md) +- [Using Re-Run functionality for Launches](https://github.com/reportportal/documentation/blob/master/src/md/src/DevGuides/rerun.md) +- [Interaction with Analyzer](https://github.com/reportportal/documentation/blob/master/src/md/src/DevGuides/analyzer.md) diff --git a/docs/Releases/Version5.0RC.md b/docs/Releases/Version5.0RC.md new file mode 100644 index 000000000..2bafeffc7 --- /dev/null +++ b/docs/Releases/Version5.0RC.md @@ -0,0 +1,66 @@ +--- +sidebar_position: 24 +sidebar_label: Version 5.0RC +--- + +# Version 5.0RC + +This is the Beta release. + +## Brand new features +- [#275](https://github.com/reportportal/reportportal/issues/275) [#639](https://github.com/reportportal/reportportal/issues/639) Nested steps +- [#348](https://github.com/reportportal/reportportal/issues/348) Integration with SauceLabs +- [#673](https://github.com/reportportal/reportportal/issues/673) [#486](https://github.com/reportportal/reportportal/issues/486) Pattern analysis +- [#675](https://github.com/reportportal/reportportal/issues/675) Widget based on launch attributes (Cumulative trend chart) +- 15 sub-defects per defect type +- [#41](https://github.com/reportportal/reportportal/issues/41) Sub-defects for “To investigate” +- Replace tags with attributes (attributes = key:value) +- [#680](https://github.com/reportportal/reportportal/issues/680) Implement a plugin system for integration with external systems (JIRA, Rally, SauceLabs, E-mail server) + +## Reporting updates +- Reduced restriction for synchronous reporting (beta) +- Fully asynchronous reporting (beta) +- [#275](https://github.com/reportportal/reportportal/issues/275) [#639](https://github.com/reportportal/reportportal/issues/639) Reporting with Nested steps (see section Agents Updates) +- [#526](https://github.com/reportportal/reportportal/issues/526) [#444](https://github.com/reportportal/reportportal/issues/444) Logs/attachments for launch level (see section Agents Updates) +- [#571](https://github.com/reportportal/reportportal/issues/571) [#451](https://github.com/reportportal/reportportal/issues/451) Finish launch with populated status +- [#670](https://github.com/reportportal/reportportal/issues/670) Interruption children “in progress” when a parent has been finished +- [#671](https://github.com/reportportal/reportportal/issues/671) [#548](https://github.com/reportportal/reportportal/issues/548) Reporting test code reference (see section Agents Updates) +- [#490](https://github.com/reportportal/reportportal/issues/490) Reporting test into finished Parent Item + +## Small and nice updates +- [#453](https://github.com/reportportal/reportportal/issues/453) Launch description and attributes on the suite view +- [#606](https://github.com/reportportal/reportportal/issues/606) Markdown on the Log page +- Possibility to configure integrations (Jira/Rally/ E-mail-server/ SauceLabs) per project and for the whole instance +- [#618](https://github.com/reportportal/reportportal/issues/618) Increase limitation for step name length from 256 to 1024 +- [#457](https://github.com/reportportal/reportportal/issues/457) Increase password length +- Auto launch deleting +- Increase the number of launches for widgets + + +## Bug fixing +- [#522](https://github.com/reportportal/reportportal/issues/522) Defect comment is not updated during deleting +- [#542](https://github.com/reportportal/reportportal/issues/542) Issue with History line +- [#542](https://github.com/reportportal/reportportal/issues/542) Unable to create a link to the result log page - page keeps reloading +- [#563](https://github.com/reportportal/reportportal/issues/563) DOM XSS in rp.epam.com +- [#564](https://github.com/reportportal/reportportal/issues/564) (BUG) There is no possibility to enter login/password for email settings with RU local + +## Administrative page updates +- New design +- Possibility to filter projects and users +- Plugin system +- [#364](https://github.com/reportportal/reportportal/issues/364) Possibility to delete personal projects + +## Agents update +- Reporting with Nested steps (already updated TestNG) +- Logs/attachments for launch level (already updated TestNG) +- Reporting test code reference (already updated Java-based agents) + +## Integration with Java Test Frameworks +- [Java TestNG](/log-data-in-reportportal/test-framework-integration/Java/TestNG) +- [JUnit](/log-data-in-reportportal/test-framework-integration/Java/JUnit4) +- [JUNit5](/log-data-in-reportportal/test-framework-integration/Java/JUnit5) +- [Cucumber](/log-data-in-reportportal/test-framework-integration/Java/Cucumber) +- [Jbehave](/log-data-in-reportportal/test-framework-integration/Java/JBehave) + +## Dev guides +- [How to report results to ReportPortal](https://github.com/ihar-kahadouski/dev-guide/blob/master/reporting.md) diff --git a/docs/Releases/Version5.1.0.md b/docs/Releases/Version5.1.0.md new file mode 100644 index 000000000..ec546d9af --- /dev/null +++ b/docs/Releases/Version5.1.0.md @@ -0,0 +1,53 @@ +--- +sidebar_position: 22 +sidebar_label: Version 5.1.0 +--- + +# Version 5.1.0 + +>**Important**: We are constantly improving ReportPortal. And in version 5.1 we have changed a way we encrypt your personal data. Please be aware, that for successful interaction with version 5.1 you need to change a password at the first login. +> **Please read instructions below**. +> +> Thank you for being with us, ReportPortal team + +## Brand new features +- [#893](https://github.com/reportportal/reportportal/issues/893) Improved ML in Аuto-Autoanalysis 2.0 +- [#894](https://github.com/reportportal/reportportal/issues/894) History line improvements +- [#896](https://github.com/reportportal/reportportal/issues/896) History table for the whole Launch/Filter +- [#899](https://github.com/reportportal/reportportal/issues/899) Possibility to compare results from: Launch/Launch; Launch/Filter; Filter/Filter +- Java 11 introduced + +## Reporting updates +- [#895](https://github.com/reportportal/reportportal/issues/895) Explicit declaration of Test Case ID: Possibility to report execution with Test Case ID from your Test Case Management system + +## Small and nice updates +- [#586](https://github.com/reportportal/reportportal/issues/586) Clickable area for widgets: + * Overall statistics bar view + * Failed case trend chart + * Non-passed test cases trend chart + * Passing rate per filter + * Cumulative trend chart + * Most popular pattern table (TOP-20) +- Added a launch UUID in the modal "Edit Launch" +- Added a possibility to resize the Cumulative trend chart widget. +- Refactored auto-complete component +- Introduced Java 11 for API +- [#744](https://github.com/reportportal/reportportal/issues/744) Migrated to Traefik 2 + +## Bug fixing + +- Added a considering of nested steps logs in an auto-analysis procedure +- [#741](https://github.com/reportportal/reportportal/issues/741) Added a possibility to collapse/expand additional launch info on Launches Table widget. +- [#870](https://github.com/reportportal/reportportal/issues/870) Fixed a possibility to send link to BTS on an item finish +- [#447](https://github.com/reportportal/reportportal/issues/447) Fixed launch inactivity scripts +- Fixed launch/attachments/screenshots deleting scripts +- [#746](https://github.com/reportportal/reportportal/issues/746) Backward compatibilities for !!!MARKDOWN!!! in logs +- [#768](https://github.com/reportportal/reportportal/issues/768) Added markdown support for video links in logs +- [#740](https://github.com/reportportal/reportportal/issues/740) Fixed a possibility to view a full launch name in widgets tooltips +- [#749](https://github.com/reportportal/reportportal/issues/749) Fixed a scroll in full-screen mode for widgets + +## Known issues +LDAP returns Code 500 when the integration configuration is not correct + +## How to migrate to the latest version 5.1 +Details can be found [here](https://github.com/reportportal/reportportal/wiki/Migration-to-ReportPortal-v.5.1) diff --git a/docs/Releases/Version5.2.0.md b/docs/Releases/Version5.2.0.md new file mode 100644 index 000000000..e136588ca --- /dev/null +++ b/docs/Releases/Version5.2.0.md @@ -0,0 +1,18 @@ +--- +sidebar_position: 21 +sidebar_label: Version 5.2.0 +--- + +# Version 5.2.0 + +## Small and nice updates +- Expanded the list of possible statuses for Nested Steps (Passes, Failed, Skipped, Warn, Info) +- Nested steps names support Markdown on the Log view +- Added retry handling on the finish +- Added Test Case ID handling on the finish +## Bug fixing +- [#117](https://github.com/reportportal/reportportal/issues/117) Fixed a bug with SauceLabs video +- Fixed a bug with mp4 and webm files downloading +- Fixed bug with IE (ReportPortal didn`t open in IE) + + diff --git a/docs/Releases/Version5.2.1.md b/docs/Releases/Version5.2.1.md new file mode 100644 index 000000000..483530812 --- /dev/null +++ b/docs/Releases/Version5.2.1.md @@ -0,0 +1,8 @@ +--- +sidebar_position: 20 +sidebar_label: Version 5.2.1 +--- + +# Version 5.2.1 + +Fix reportportal/kubernetes [#115](https://github.com/reportportal/reportportal/issues/115) diff --git a/docs/Releases/Version5.2.2.md b/docs/Releases/Version5.2.2.md new file mode 100644 index 000000000..5a5b46392 --- /dev/null +++ b/docs/Releases/Version5.2.2.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 19 +sidebar_label: Version 5.2.2 +--- + +# Version 5.2.2 + +## Improvements + +Added [a possibility to choose a base for a History table via a docker-compose](/work-with-reports/HistoryOfLaunches#historical-trend-of-executions) + +## Bugs +[#997](https://github.com/reportportal/reportportal/issues/997) History doesn't compatible after data migration from v4 to v5 +Auto-Analysis analyzes logs in nested steps +Pattern Analysis analyzes logs in nested steps diff --git a/docs/Releases/Version5.2.3.md b/docs/Releases/Version5.2.3.md new file mode 100644 index 000000000..159e4bf26 --- /dev/null +++ b/docs/Releases/Version5.2.3.md @@ -0,0 +1,11 @@ +--- +sidebar_position: 18 +sidebar_label: Version 5.2.3 +--- + +# Version 5.2.3 + +## Bugs +[#950](https://github.com/reportportal/reportportal/issues/950) Service API PostgreSQL DB locks on SELECT queries +Performance improvements +Small UI fixes diff --git a/docs/Releases/Version5.3.0.md b/docs/Releases/Version5.3.0.md new file mode 100644 index 000000000..f157818fc --- /dev/null +++ b/docs/Releases/Version5.3.0.md @@ -0,0 +1,30 @@ +--- +sidebar_position: 17 +sidebar_label: Version 5.3.0 +--- + +# Version 5.3.0 + +## Brand new features + +[#269](https://github.com/reportportal/reportportal/issues/269) Component Health Check Widget (table view) +[#877](https://github.com/reportportal/reportportal/issues/877) SAML auth + + +## Small and nice updates + +- Filter by retried items on step level view +- Purging jobs delete logs/attachments/launches by star time, not lastModified time +- [#1005](https://github.com/reportportal/reportportal/issues/1005) Auto-Analysis: Add a boost for items with the latest Defect Type +- Parent line recalculation on the step view +- Refine on the Step view: Has retries / Hasn`t retries +- Filter description is increased to 1500 + + +## Bug fixing + +- Github login does not work for users with private membership in the organization +- [#773](https://github.com/reportportal/reportportal/issues/773) Service-API errors when the user does not have a photo +- Wrong order during retry reporting +- Reduced number of requests to BTS +- Performance fixes diff --git a/docs/Releases/Version5.3.1..md b/docs/Releases/Version5.3.1..md new file mode 100644 index 000000000..917d8c501 --- /dev/null +++ b/docs/Releases/Version5.3.1..md @@ -0,0 +1,16 @@ +--- +sidebar_position: 16 +sidebar_label: Version 5.3.1 +--- + +# Version 5.3.1 + +## Bug fixing + +[Performance]High CPU and Disk IO utilization of PostgreSQL queries + +[Performance] Responce time degradation of the History Table on Steps Level due to high cpu utilization of the DB query + +[Performance][PreProd] High responce time(up to 3 min) of the Most Failed TC Widget loading + +Fix for launches purging job diff --git a/docs/Releases/Version5.3.2.md b/docs/Releases/Version5.3.2.md new file mode 100644 index 000000000..bb600a63e --- /dev/null +++ b/docs/Releases/Version5.3.2.md @@ -0,0 +1,13 @@ +--- +sidebar_position: 15 +sidebar_label: Version 5.3.2 +--- + +# Version 5.3.2 + +## Bug fixing + +* The high amount of DB locks on the UPDATE public.users query +* Unclassified error when Admin creates shared widget based on not shared filter +* High Disk utilization of PostgreSQL queries generated by Component Health Check Widget(table view) +* Bug with Component Health Check Widget(table view) diff --git a/docs/Releases/Version5.3.3.md b/docs/Releases/Version5.3.3.md new file mode 100644 index 000000000..bef204dcd --- /dev/null +++ b/docs/Releases/Version5.3.3.md @@ -0,0 +1,38 @@ +--- +sidebar_position: 14 +sidebar_label: Version 5.3.3 +--- + +# Version 5.3.3 + +## New features + +- Increased number of launches for Cumulative trend chart from 600 to 10 000 launches + +## Small and nice updates + +- Added expanded failed items by default. Improved an alignment of arrows and step names on Log view +- Launches. Log view. Attachment section. Gallery improvement for reducing the number of clicks +- Added a possibility to add attributes to refine rather than replace them +- [UI] Show first 5 lines for defect comment instead of 2 first lines on Step view and on Log view +- Increased a description for widgets/dashboards/filters to 1500 symbols + +## Analyzer improvements +- Analyzer. Add more options for log lines in settings +- Added a boosting feature for the similarity between log lines with more important namespaces + +## Bugfixing +- Fixed: [#867](https://github.com/reportportal/reportportal/issues/867) Very poor scroll performance +- Fixed: [#1128](https://github.com/reportportal/reportportal/issues/1128) Wrong password in the email letter when adding a new user +- Fixed: [#1182](https://github.com/reportportal/reportportal/issues/1182) Year in footer copyright text is not up to date +- Fixed [#857](https://github.com/reportportal/reportportal/issues/857) Total Failed count is not matched with Test cases after Merging the multiple Launches [ deep merge] +- Fixed: [#911](https://github.com/reportportal/reportportal/issues/911) Widget table column width (Unique bugs table) +- Fixed: [#871](https://github.com/reportportal/reportportal/issues/871) Launch duration chart label "seconds" +- Fixed: [#1050](https://github.com/reportportal/reportportal/issues/1050) Add UUID data to TestItem Controller when querying using filters +- Fixed: [#1184](https://github.com/reportportal/reportportal/issues/1184) No history of test-items with defect +- Fixed: History. Compare functionality. The custom column has items from 1st execution instead of the latest one +- Fixed: 'Add new widget' from Launches page in case no dashboards on the project +- Fixed: Only one attribute is returned for the launches in 'Launches table' widget +- Fixed: Only the first 12 attachments are displayed in 'Attachments' section +- [Performance] Issue with DB CPU utilization of "Flaky" widget query +- Fixed unclassified errors from inserts of issues for failed items diff --git a/docs/Releases/Version5.3.5.md b/docs/Releases/Version5.3.5.md new file mode 100644 index 000000000..248a9c64d --- /dev/null +++ b/docs/Releases/Version5.3.5.md @@ -0,0 +1,11 @@ +--- +sidebar_position: 13 +sidebar_label: Version 5.3.5 +--- + +# Version 5.3.5 + +# Bugfixing +- Fixed: [#950](https://github.com/reportportal/reportportal/issues/950) Problems with DB locks on SELECT +- Fixed: [#1231](https://github.com/reportportal/reportportal/issues/1231) Problems with data retention jobs +- Fixed: [#1269](https://github.com/reportportal/reportportal/issues/1269) Problem with an infinite load on Ctrl/Command+Click diff --git a/docs/Releases/Version5.4.0.md b/docs/Releases/Version5.4.0.md new file mode 100644 index 000000000..374048576 --- /dev/null +++ b/docs/Releases/Version5.4.0.md @@ -0,0 +1,28 @@ +--- +sidebar_position: 12 +sidebar_label: Version 5.4.0 +--- + +# Version 5.4.0 + +[Migration guide](https://github.com/reportportal/reportportal/wiki/Migration-to-ReportPortal-v.5.4) + +## New features +- [#1440](https://github.com/reportportal/reportportal/issues/1440) Data retention jobs refactoring +- Top-20 most time-consuming tests widget +- 30 executions on the History line +- Launch attributes on History Line and History table +- Filter by Jira issue ID +- URL by launch UUID +- Design updates + +## Analyzer updates +[#1363](https://github.com/reportportal/reportportal/issues/1363) ML-based analyzer improvements + +## Small and nice update +- Increased description filter from 16 to 256 +- Improvement for AD plugin. Active directory dynamic user search filter +- Added clickable area to Passing rate + +## Bugfixing +- Fixed: Issue with deadlocks diff --git a/docs/Releases/Version5.5.0.md b/docs/Releases/Version5.5.0.md new file mode 100644 index 000000000..57cbd3edb --- /dev/null +++ b/docs/Releases/Version5.5.0.md @@ -0,0 +1,23 @@ +--- +sidebar_position: 11 +sidebar_label: Version 5.5.0 +--- + +# Version 5.5.0 + +[Migration guide](https://github.com/reportportal/reportportal/wiki/Migration-to-ReportPortal-v.5.5) + +## New features +- Make decision modal + +## Analyzer updates +- ML suggestions in Make decision modal +- Add logic for auto-analysis for No defect test items + +## Small and nice update +- Performance improvements + +## Bugfixing +- Fixed: [Performance] CPU utilization degradation of select child items on different levels +- Fixed: bugs with rerun functionality + diff --git a/docs/Releases/Version5.6.0.md b/docs/Releases/Version5.6.0.md new file mode 100644 index 000000000..2b3894a34 --- /dev/null +++ b/docs/Releases/Version5.6.0.md @@ -0,0 +1,41 @@ +--- +sidebar_position: 10 +sidebar_label: Version 5.6.0 +--- + +# Version 5.6.0 + +[Migration guide](https://github.com/reportportal/reportportal/wiki/Migration-to-ReportPortal-v.5.6) + +## New features +- [#1094](https://github.com/reportportal/reportportal/issues/1094) Filter by Attributes + +## Small and nice update +- Change status from the Log View +- Add Test Case ID to the log view + +## Analyzer updates +- Cleaning Job for Elastic Search +- "All big log messages should match +- Add the to investigate group except To Investigate itself to be used in Auto-analysis and suggestions +- Add a field with test item name while indexing logs/auto-analysis/suggestions +- Add configuration to check strictly all log message while analysis +- When demo data is generated, the user should click "generating index" for analyzer himself +- Adding launch name/message info into custom retrained models +- Add checking by Exceptions and releasing the min should match for search/cluster operations to 95% +- Add checking by Exceptions and releasing the min should match for search/cluster operations to 95% +- Adding launch name/message info into custom retrained models +- Changed the logic for No defect and custom TI defect types for auto-analysis +- Create a similar for searching by similar TI items as for AA logic for treating short/long messages +- The users complained that some older test items still can be used by Auto-analysis, so I decided to add discounting for the ES scores in case they are farther from the start_time of the test item. + +## Bugfixing +- Performance fixes +- Fixed issue with deadlocks by retries refactoring +- [#1474](https://github.com/reportportal/reportportal/issues/1474) SAML. Add "callbackUrl" field to SAML configuration +- Failed cases trend chart. Send only "statistics$executions$failed" field in "contentFields" +- [#1502](https://github.com/reportportal/reportportal/issues/1502) Email configurations. Change field "Username" to "Sender email" + +## What's Changed +* Release 5.6.0 by @Cyberglamdring [in #1583](https://github.com/reportportal/reportportal/pull/1583) +* [Full Changelog](https://github.com/reportportal/reportportal/compare/5.5.0...5.6.0) diff --git a/docs/Releases/Version5.6.1.md b/docs/Releases/Version5.6.1.md new file mode 100644 index 000000000..8972b3296 --- /dev/null +++ b/docs/Releases/Version5.6.1.md @@ -0,0 +1,9 @@ +--- +sidebar_position: 9 +sidebar_label: Version 5.6.1 +--- + +# Version 5.6.1 + +## Bugfixing +- Fixed Log4J vulnerabilities [CVE-2021-44228](https://github.com/advisories/GHSA-jfh8-c2jp-5v3q), [CVE-2021-45046](https://github.com/advisories/GHSA-7rjr-3q55-vv33): bumping the dependency version to the `2.16.0` diff --git a/docs/Releases/Version5.6.2.md b/docs/Releases/Version5.6.2.md new file mode 100644 index 000000000..2cc98e5bb --- /dev/null +++ b/docs/Releases/Version5.6.2.md @@ -0,0 +1,10 @@ +--- +sidebar_position: 8 +sidebar_label: Version 5.6.2 +--- + +# Version 5.6.2 + +# Bugfixing + +- ReportPortal release 5.6.2 aimed at fixing Log4J vulnerabilities: [CVE-2021-44228](https://github.com/advisories/GHSA-jfh8-c2jp-5v3q), [CVE-2021-45046](https://github.com/advisories/GHSA-7rjr-3q55-vv33) and [CVE-2021-45105](https://github.com/advisories/GHSA-p6xc-xr62-6r2g) diff --git a/docs/Releases/Version5.6.3.md b/docs/Releases/Version5.6.3.md new file mode 100644 index 000000000..dbae2e557 --- /dev/null +++ b/docs/Releases/Version5.6.3.md @@ -0,0 +1,9 @@ +--- +sidebar_position: 7 +sidebar_label: Version 5.6.3 +--- + +# Version 5.6.3 + +## Bugfixing +- Log4J vulnerabilities: [CVE-2021-44832](https://github.com/advisories/GHSA-8489-44mv-ggj8) diff --git a/docs/Releases/Version5.7.0.md b/docs/Releases/Version5.7.0.md new file mode 100644 index 000000000..12258cfb3 --- /dev/null +++ b/docs/Releases/Version5.7.0.md @@ -0,0 +1,38 @@ +--- +sidebar_position: 6 +sidebar_label: Version 5.7.0 +--- + +# Version 5.7.0 + +## New Features: +A possibility to see all unique errors for a launch +[#1268](https://github.com/reportportal/reportportal/issues/1268). Support of Azure SAML authorization + + +## New Plugins: + +- [Jira Cloud](https://github.com/reportportal/plugin-bts-jira-cloud/packages/1366483) plugin for posting new bugs +- [Azure DevOps](https://github.com/reportportal/plugin-bts-azure/packages/1366495) plugin for posting new bugs + +## Small and Nice Updates: + +- New design for Make decision modal +- Help & Support functionality for newly deployed instances +- Additional configuration for Similar “To Investigate” functionality (“Min Should Match”) +- Default State for Auto-Analysis is ON + +## Bugfixing: + +- New logic for removing widget has been implemented (deleting a parent widget doesn’t delete the child widget) +- [#1603](https://github.com/reportportal/reportportal/issues/1603). Attributes. Error on cancel edit common attributes in "Edit items" modal +- [#1181](https://github.com/reportportal/reportportal/issues/1181). Most Failed Tests and Most Flaky Tests widgets: wrong time is shown +- [#1606](https://github.com/reportportal/reportportal/issues/1606). Component Health Check Widget not working after Upgrade +- [#1616](https://github.com/reportportal/reportportal/issues/1616). Component health check (table view) widget for HotProd filter does not load results and keeps spinning + + +## Performance Improvements: + +- 3x improved performance of project index generation for Auto-Analysis +- Refactored and optimized retry items processing +- Increased Auto-Analysis performance by updating the communicating interface between API and ANALYZERS diff --git a/docs/Releases/Version5.7.1.md b/docs/Releases/Version5.7.1.md new file mode 100644 index 000000000..f1b70ee56 --- /dev/null +++ b/docs/Releases/Version5.7.1.md @@ -0,0 +1,9 @@ +--- +sidebar_position: 5 +sidebar_label: Version 5.7.1 +--- + +# Version 5.7.1 + +## Technical Improvements: +Functionality to configure virtual hosts in RabbitMQ for Analyzer was added diff --git a/docs/Releases/Version5.7.2.md b/docs/Releases/Version5.7.2.md new file mode 100644 index 000000000..57ca6ba35 --- /dev/null +++ b/docs/Releases/Version5.7.2.md @@ -0,0 +1,51 @@ +--- +sidebar_position: 4 +sidebar_label: Version 5.7.2 +--- + +# Version 5.7.2 + +## What's Changed: + +ReportPortal Release 5.7.2 aimed on enabling log messages to be saved into ElasticSearch +- We now save logs into 2 sources: DB and Elastic (via DataStreams) + +## New features +- A possibility to see all unique errors for a launch (click the launch name and see tab Unique Errors on the top +- [#1268](https://github.com/reportportal/reportportal/issues/1268). Support of Azure SAML authorization + +## New plugins +- [Jira Cloud](https://github.com/reportportal/plugin-bts-jira-cloud/packages/1366483) plugin for posting new bugs into Jira Cloud +- [Azure DevOps](https://github.com/reportportal/plugin-bts-azure/packages/1366495) plugin for posting new bugs into ADO Bug tracking + +## Small but nice updates +- New design for Make decision modal (previously Edit defect modal) +- Help & Support functionality for newly deployed instances +- Additional configuration for Similar “To Investigate” functionality (“Min Should Match”) +- Default State for Auto-Analysis is ON + +## Technical updates +- Performance improvements (powerful as a hell) +- Functionality to configure virtual hosts in RabbitMQ for Analyzer + +## Logs into Elastic +With the version 5.7.2 we bring a fundamental change for ReportPortal to store and manage test logs inside Elastic (via Data Streams). +The transition of full logging to elastic will consist of 2 steps: +- version 5.7.2 introduces double logging: both in PG Database and Elastic in parallel +- version 5.8 switch off database logging for logs and will store logs only inside Elastic + +The release timeline between 5.7.2 and 5.8 will be about 3 months. +this period will be enough for the vast of project to generate enough logs history inside elastic, and by switching to version 5.8 after 5.7.2 will eliminate the need for the data migration efforts. +Which means, that if you update to version 5.7.2, use it for 3-4 months before version 5.8, and then update to version 5.8 once it available, there will no any effort required to do the migration. Since all logs will already be stored in Elastic. +Along with version 5.8 we will distribute migration script and instructions for data migration. So that you can easily migration from early 5.x version. +The reason of the switch and performance results will be a subject of separate article. +In a few words: it reduces the DB footprint in almost x10 times, improves speed of logging, and minimizes computation power to clean-up data. And also brings Full text search capabilities. + +## New Contributors +* @raikbitters made their first contribution in [#1749](https://github.com/reportportal/reportportal/pull/1749) +* @tsteenbe made their first contribution in [#1757](https://github.com/reportportal/reportportal/pull/1757) + +**Full Changelog**: [5.7.1...5.7.2](https://github.com/reportportal/reportportal/compare/5.7.1...5.7.2) + +## Bugfixing: +Bug connected to filtering by attributes with "any" and "without any" conditions was fixed diff --git a/docs/Releases/Version5.7.3.md b/docs/Releases/Version5.7.3.md new file mode 100644 index 000000000..acb03f70b --- /dev/null +++ b/docs/Releases/Version5.7.3.md @@ -0,0 +1,53 @@ +--- +sidebar_position: 3 +sidebar_label: Version 5.7.3 +--- + +# Version 5.7.3 + +## Features: + +- Implemented functionality to find Next and Previous Error Logs. + Buttons “Show”, “Next” and “Previous” error logs minimize user’s efforts of scrolling across all the available logs. +- Improved lazy loading: the number of pre-loaded logs is 300 which helps to get a better understanding of preconditions to a certain error. What is more, now it’s possible to load 300 more logs or load all the current step at once. +- “Stack trace” in log messages now loads all the Error Logs. + Besides, with the help of “Jump to” button on the Error Log it’s possible to switch to this Error Log displayed in the “All Logs” view. + +## Small and nice updates: + +[#3109](https://github.com/reportportal/service-ui/pull/3109) Launch and test item description limits have been increased to 2048. Improved description view on all the “Launches” pages means that now even more useful links, artifacts, OKRs, etc can be stored in the description. + +## Bugfixing: +We have refactored logs double-entry saving to Elasticsearch by changing index type: now logs are saved in indexes per project instead of indexes per launch. It helps us to save the performance of Elasticsearch considering other operations and the data which we have processed via Elastic. +More details can be found via the [link](https://reportportal.io/blog/performance-improvements-in-5.7.3?utm_source=trigger&utm_medium=release_note&utm_campaign=perf_improve&utm_content=dec). + +## Technical updates: + +- Updated RabbitMQ to 3.10.7. +- Environment variable added for Service Jobs to configure http/https usage (added to values.yaml for RabbitMQ as well). +- Added the logics of logs deletion (by jobs): when the logs are deleted by jobs from PostgreSQL, they are also deleted from ElasticSearch. + +## CVE addressed: + +- [CVE-2017-18640](https://github.com/advisories/GHSA-rvwf-54qp-4r6v) +- [CVE-2020-17527](https://github.com/advisories/GHSA-vvw4-rfwf-p6hx) +- [CVE-2020-25032](https://github.com/advisories/GHSA-xc3p-ff3m-f46v) +- [CVE-2020-25638](https://github.com/advisories/GHSA-j8jw-g6fq-mp7h) +- [CVE-2021-22112](https://github.com/advisories/GHSA-gq28-h5vg-8prx) +- [CVE-2021-22118](https://github.com/advisories/GHSA-gfwj-fwqj-fp3v) +- [CVE-2021-22119](https://github.com/advisories/GHSA-w9jg-gvgr-354m) +- [CVE-2021-25122](https://github.com/advisories/GHSA-j39c-c8hj-x4j3) +- [CVE-2021-25329](https://github.com/advisories/GHSA-jgwr-3qm3-26f3) +- [CVE-2021-29510](https://github.com/advisories/GHSA-5jqp-qgf6-3pvh) +- [CVE-2021-33503](https://github.com/advisories/GHSA-q2q7-5pp4-w6pg) +- [CVE-2021-35515](https://github.com/advisories/GHSA-7hfm-57qf-j43q) +- [CVE-2021-35516](https://github.com/advisories/GHSA-crv7-7245-f45f) +- [CVE-2021-35517](https://github.com/advisories/GHSA-xqfj-vm6h-2x34) +- [CVE-2021-36090](https://github.com/advisories/GHSA-mc84-pj99-q6hh) +- [CVE-2022-21724](https://github.com/advisories/GHSA-v7wg-cpwc-24m4) +- [CVE-2022-22970](https://github.com/advisories/GHSA-hh26-6xwr-ggv7) +- [CVE-2022-22978](https://github.com/advisories/GHSA-hh32-7344-cg2f) +- [CVE-2022-24761](https://github.com/advisories/GHSA-4f7p-27jc-3c36) +- [CVE-2022-25857](https://github.com/advisories/GHSA-3mc7-4q67-w48m) +- [CVE-2022-27772](https://github.com/advisories/GHSA-cm59-pr5q-cw85) + diff --git a/docs/Releases/Version5.7.4.md b/docs/Releases/Version5.7.4.md new file mode 100644 index 000000000..fcd3254de --- /dev/null +++ b/docs/Releases/Version5.7.4.md @@ -0,0 +1,31 @@ +--- +sidebar_position: 2 +sidebar_label: Version 5.7.4 +--- + +# Version 5.7.4 + +## What's Changed: +1. ReportPortal previously used MinIO Client for file storage, which offered such benefits as: + +- Easy Docker-based installation +- Kubernetes Support +- S3-compatible bridge which allows to delegate file storage to S3, but keep using MinIO API + +But since there have been some changes in MinIO, we have explored alternative clients for working with cloud storage. + +Changes in MinIO: +- a licensing shift to AGPL which does not allow to have MinIO dependencies in the code anymore +- deprecation of S3 Proxy Gateway highly utilized in client installations + +Thus, we have replaced MinIO Client with JCloud in the latest ReportPortal version. +Starting from ReportPortal 5.7.4 you can either use AWS S3 directly or continue with your existing MinIO as object storage. + + + + +2. **IMPORTANT:** + +**Please, don’t forget to update ElasticSearch config.** +We've enabled logs double entry by default. Thus, it is important to review your ElasticSearch setup. +Please, read carefully through this [migration guide](https://github.com/reportportal/reportportal/wiki/Migration-to-ReportPortal-v.5.7.4) in order to avoid performance pitfalls. diff --git a/docs/Releases/Versionv23.1.md b/docs/Releases/Versionv23.1.md new file mode 100644 index 000000000..568b74abc --- /dev/null +++ b/docs/Releases/Versionv23.1.md @@ -0,0 +1,84 @@ +--- +sidebar_position: 1 +sidebar_label: Version v.23.1 +--- + +# Version v.23.1 + +# 1. What's Changed: + +- **New ReportPortal logo** + We are thrilled to unveil our refreshed brand identity with a brand-new logo for ReportPortal. As part of our ongoing commitment to innovation and evolution, we have embarked on a rebranding and redesign process to give our product a fresh, modern look and align with the exciting changes ahead. + +- **Enhanced permissions:** + Unlock the power of collaboration with limitless access to project filters, widgets, and dashboards for every project member. Now it will be simpler. + +- **Rally/Jira Server effortless Integration:** + Post issues from ReportPortal to Jira and Rally seamlessly, without manual credentials. + +- **Updated widget validation**: + Easily create widgets with identical names across multiple dashboards. + +- **Launch import improvements:** + Get enhanced flexibility with the possibility to upload launches as both .ZIP and .XML files. + +- **Attributes logics improvement:** + No more need for creating separate rules for each attribute. Save your time with the integrated option to select either 'All' or 'Any' attributes when creating a Notification rule. + +- **Additional email notification on password change:** + Email notifications will always be sent to you whenever your password is changed so that you could promptly take action in case any unauthorized changes are made by third parties. + + +# 2. Technical Improvements: + +- **Initial Admin Passwords updates:** + We’ve adjusted the existing approach: upon the initial installation and the first login of the SuperAdmin, they will be required to create a unique initial password, distinct from the default password provided in the ReportPortal installation documentation. Failure to do so will result in the Auth service not starting. + +- **Removal of Sure Python dependency:** + To ensure compatibility with the Apache2 license, we have eliminated Sure Python dependency from ReportPortal. + +- **Updated RabbitMQ image** + RabbitMQ image updated to `bitnami/rabbitmq:3.10.8-debian-11-r7` + +- **Services health checks** + Added health checks for API, Jobs, and UAT services + +- **New environments variables for Double Entry that processes logs by Jobs service** + `RP_PROCESSING_LOG_MAXBATCHSIZE` and `RP_PROCESSING_LOG_MAXBATCHTIMEOUT` + +# 3. Enhancements Based on Community Feedback: + +- [#41](https://github.com/reportportal/plugin-bts-jira/issues/41). JIRA integration throws errors while setting up. +- [#243](https://github.com/reportportal/service-authorization/issues/243). Email not synchronized after change. +- [#287](https://github.com/reportportal/kubernetes/issues/287). Serviceui securityContext issue: + The release UI image is now based on the non-root nginx image, which is more secure. +- [#1013](https://github.com/reportportal/reportportal/issues/1013). Display more results in Flaky/Most Failed test case tables: + The number of items in Most failed test-cases table (TOP-20) has been increased from 20 to 50. +- [#1618](https://github.com/reportportal/reportportal/issues/1618). [v5] Okta SSO login is not possible. +- [#1790](https://github.com/reportportal/reportportal/issues/1790). URL links to dashboard are not loading the widgets. +- [#1868](https://github.com/reportportal/reportportal/issues/1868). Client exception with client-javascript, Request failed with status code 400: + The maximum length of Attribute Key and Value has been increased to 512 characters. +- [#1891](https://github.com/reportportal/reportportal/issues/1891). Cannot report test results to the project with "demo" name. +- [#1912](https://github.com/reportportal/reportportal/issues/1912). Cloud Jira Integration Post Issue is not Coming. +- [#3132](https://github.com/reportportal/service-ui/issues/3132). Component Health Check - Needs to wrap text: + The table now includes a new column named 'Name'. Hovering over the value in the table will display a tooltip with the full text of the value. + +# 4. CVE addressed: + +- [CVE-2018-10237](https://github.com/advisories/GHSA-mvr2-9pj6-7w5j), [CVE-2018-12022](https://github.com/advisories/GHSA-cjjf-94ff-43w7), [CVE-2018-12023](https://github.com/advisories/GHSA-6wqp-v4v6-c87c), [CVE-2018-14718](https://github.com/advisories/GHSA-645p-88qh-w398), [CVE-2018-14719](https://github.com/advisories/GHSA-4gq5-ch57-c2mg), [CVE-2018-14720](https://github.com/advisories/GHSA-x2w5-5m2g-7h5m), [CVE-2018-14721](https://github.com/advisories/GHSA-9mxf-g3x6-wv74), [CVE-2018-19360](https://github.com/advisories/GHSA-f9hv-mg5h-xcw9), [CVE-2018-19361](https://github.com/advisories/GHSA-mx9v-gmh4-mgqw), [CVE-2018-19362](https://github.com/advisories/GHSA-c8hm-7hpq-7jhg), [CVE-2019-11254](https://github.com/advisories/GHSA-wxc4-f4m6-wwqv), [CVE-2019-12814](https://github.com/advisories/GHSA-cmfg-87vq-g5g4), [CVE-2019-14892](https://github.com/advisories/GHSA-cf6r-3wgc-h863), [CVE-2019-14893](https://github.com/advisories/GHSA-qmqc-x3r4-6v39), [CVE-2019-16335](https://github.com/advisories/GHSA-85cw-hj65-qqv9), [CVE-2019-16942](https://github.com/advisories/GHSA-mx7p-6679-8g3q), [CVE-2019-16943](https://github.com/advisories/GHSA-fmmc-742q-jg75), [CVE-2019-17267](https://github.com/advisories/GHSA-f3j5-rmmp-3fc5), [CVE-2019-17531](https://github.com/advisories/GHSA-gjmw-vf9h-g25v), [CVE-2019-20330](https://github.com/advisories/GHSA-gww7-p5w4-wrfv), [CVE-2020-10650](https://github.com/advisories/GHSA-rpr3-cw39-3pxh), [CVE-2020-10672](https://github.com/advisories/GHSA-95cm-88f5-f2c7), [CVE-2020-10673](https://github.com/advisories/GHSA-fqwf-pjwf-7vqv), [CVE-2020-10968](https://github.com/advisories/GHSA-rf6r-2c4q-2vwg), [CVE-2020-10969](https://github.com/advisories/GHSA-758m-v56v-grj4), [CVE-2020-11111](https://github.com/advisories/GHSA-v3xw-c963-f5hc), [CVE-2020-11112](https://github.com/advisories/GHSA-58pp-9c76-5625), [CVE-2020-11619](https://github.com/advisories/GHSA-27xj-rqx5-2255), [CVE-2020-11620](https://github.com/advisories/GHSA-h4rc-386g-6m85), [CVE-2020-13956](https://github.com/advisories/GHSA-7r82-7xv7-xcpj), [CVE-2020-14040](https://github.com/advisories/GHSA-5rcv-m4m3-hfh7), [CVE-2020-14060](https://github.com/advisories/GHSA-j823-4qch-3rgm), [CVE-2020-14061](https://github.com/advisories/GHSA-c2q3-4qrh-fm48), [CVE-2020-14062](https://github.com/advisories/GHSA-c265-37vj-cwcc), [CVE-2020-15138](https://github.com/advisories/GHSA-wvhm-4hhf-97x9), [CVE-2020-24750](https://github.com/advisories/GHSA-qjw2-hr98-qgfh), [CVE-2020-25649](https://github.com/advisories/GHSA-288c-cq4h-88gq), [CVE-2020-29652](https://github.com/advisories/GHSA-3vm4-22fp-5rfm), [CVE-2020-35728](https://github.com/advisories/GHSA-5r5r-6hpj-8gg9), [CVE-2020-36179](https://github.com/advisories/GHSA-9gph-22xh-8x98), [CVE-2020-36180](https://github.com/advisories/GHSA-8c4j-34r4-xr8g), [CVE-2020-36181](https://github.com/advisories/GHSA-cvm9-fjm9-3572), [CVE-2020-36182](https://github.com/advisories/GHSA-89qr-369f-5m5x), [CVE-2020-36183](https://github.com/advisories/GHSA-9m6f-7xcq-8vf8), [CVE-2020-36184](https://github.com/advisories/GHSA-m6x4-97wx-4q27), [CVE-2020-36185](https://github.com/advisories/GHSA-8w26-6f25-cm9x), [CVE-2020-36186](https://github.com/advisories/GHSA-v585-23hc-c647), [CVE-2020-36187](https://github.com/advisories/GHSA-r695-7vr9-jgc2), [CVE-2020-36188](https://github.com/advisories/GHSA-f9xh-2qgp-cq57), [CVE-2020-36189](https://github.com/advisories/GHSA-vfqx-33qm-g869), [CVE-2020-36518](https://github.com/advisories/GHSA-57j2-w4cx-62h2), [CVE-2020-7746](https://github.com/advisories/GHSA-h68q-55jf-x68w), [CVE-2020-8840](https://github.com/advisories/GHSA-4w82-r329-3q67), [CVE-2021-20190](https://github.com/advisories/GHSA-5949-rw7g-wx7w), [CVE-2021-22060](https://github.com/advisories/GHSA-6gf2-pvqw-37ph), [CVE-2021-22096](https://github.com/advisories/GHSA-rfmp-97jj-h8m6), [CVE-2021-23341](https://github.com/advisories/GHSA-h4hr-7fg3-h35w), [CVE-2021-30640](https://github.com/advisories/GHSA-36qh-35cm-5w2w), [CVE-2021-32723](https://github.com/advisories/GHSA-gj77-59wh-66hg), [CVE-2021-33037](https://github.com/advisories/GHSA-4vww-mc66-62m6), [CVE-2021-3801](https://github.com/advisories/GHSA-hqhp-5p83-hx96), [CVE-2021-38561](https://github.com/advisories/GHSA-ppp9-7jff-5vj2), [CVE-2021-41079](https://github.com/advisories/GHSA-59g9-7gfx-c72p), [CVE-2021-4235](https://github.com/advisories/GHSA-r88r-gmrh-7j83), [CVE-2021-4279](https://github.com/advisories/GHSA-8gh8-hqwg-xf34), [CVE-2022-22950](https://github.com/advisories/GHSA-558x-2xjg-6232), [CVE-2022-22965](https://github.com/advisories/GHSA-36p3-wjmg-h94x), [CVE-2022-22969](https://github.com/advisories/GHSA-c2cp-3xj9-97w9), [CVE-2022-23181](https://github.com/advisories/GHSA-9f3j-pm6f-9fm5), [CVE-2022-24785](https://github.com/advisories/GHSA-8hfj-j24r-96c4), [CVE-2022-24999](https://github.com/advisories/GHSA-hrpp-h998-j3pp), [CVE-2022-27191](https://github.com/advisories/GHSA-8c26-wmh5-6g9v), [CVE-2022-28948](https://github.com/advisories/GHSA-hp87-p4gw-j4gq), [CVE-2022-31129](https://github.com/advisories/GHSA-wc69-rhjr-hc9g), [CVE-2022-32149](https://github.com/advisories/GHSA-69ch-w2m2-3vjp), [CVE-2022-40150](https://github.com/advisories/GHSA-x27m-9w8j-5vcw), [CVE-2022-40152](https://github.com/advisories/GHSA-3f7h-mf4q-vrm4), [CVE-2022-42003](https://github.com/advisories/GHSA-jjjh-jjxp-wpff), [CVE-2022-42004](https://github.com/advisories/GHSA-rgv9-q543-rqg4), [CVE-2022-42252](https://github.com/advisories/GHSA-p22x-g9px-3945), [CVE-2022-45685](https://github.com/advisories/GHSA-7rf3-mqpx-h7xg). + +# 4. Link to Migration guide: +https://github.com/reportportal/reportportal/wiki/Migration-to-ReportPortal-v.23.1 + +# 5. Released versions + +|Service Name|Repository|Tag| +|---|---| --- | +|Index|reportportal/service-index|5.8.0| +|Authorization|reportportal/service-authorization|5.8.0| +|UI|reportportal/service-ui|5.8.0| +|API|reportportal/service-api|5.8.0| +|Jobs|reportportal/service-jobs|5.8.0| +|Migrations|reportportal/migrations|5.8.0| +|Auto Analyzer|reportportal/service-auto-analyzer|5.7.5| +|Metrics Gatherer|reportportal/service-metrics-gatherer|5.7.4| diff --git a/docs/Releases/_category_.json b/docs/Releases/_category_.json new file mode 100644 index 000000000..5aeeeeab2 --- /dev/null +++ b/docs/Releases/_category_.json @@ -0,0 +1,7 @@ +{ + "label": "Releases", + "position": "4", + "link": { + "type": "generated-index" + } +} diff --git a/docs/Releases/img/5.7.4.png b/docs/Releases/img/5.7.4.png new file mode 100644 index 0000000000000000000000000000000000000000..19cede312b06fe1157e2a2ff86c3a946f4c313af GIT binary patch literal 72056 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 Date: Thu, 21 Sep 2023 14:42:10 +0300 Subject: [PATCH 03/17] EPMRPP-86307 || FAQ article in Documentation (#607) --- docs/FAQ/index.md | 68 ++++++++++++++++++- docs/admin-panel/_category_.json | 2 +- docs/analysis/_category_.json | 2 +- docs/case-studies/_category_.json | 2 +- docs/dashboards-and-widgets/_category_.json | 2 +- docs/dev-guides/_category_.json | 2 +- docs/installation-steps/_category_.json | 2 +- docs/issues-troubleshooting/_category_.json | 2 +- docs/log-data-in-reportportal/_category_.json | 2 +- docs/plugins/_category_.json | 2 +- docs/quality-gates/_category_.json | 2 +- .../_category_.json | 2 +- docs/reportportal-glossary/index.mdx | 2 +- docs/reportportal-tutorial/index.mdx | 2 +- docs/saved-searches-filters/_category_.json | 2 +- docs/terms-and-conditions/_category_.json | 2 +- docs/user-account/_category_.json | 2 +- docs/user-role-guides/index.md | 2 +- docs/work-with-reports/_category_.json | 2 +- 19 files changed, 85 insertions(+), 19 deletions(-) diff --git a/docs/FAQ/index.md b/docs/FAQ/index.md index b3baaafeb..a9faedc6f 100644 --- a/docs/FAQ/index.md +++ b/docs/FAQ/index.md @@ -1,6 +1,72 @@ --- -sidebar_position: 17 +sidebar_position: 21 sidebar_label: FAQ --- # FAQ + +On this page, we have put together a list of the most frequently asked questions. Here, you can find prompt responses. + +**1. Does on-prem installed ReportPortal make any external calls? What are the content and nature of these calls? ** + +All test results and testing data reside in-house, within your instance of ReportPortal. However, there are two types of external calls that ReportPortal makes. The first checks our status page for the latest version and informs users of it on the login page. The second sends anonymized data to [Google Analytics](/terms-and-conditions/GoogleAnalyticsUsageByReportPortal), helping us refine the user experience and better understand application usage. This can be toggled off if desired. + +**2. Assuming ReportPortal locally caches logs to understand their content, where are these stored, and what are the associated retention policies?** + +ReportPortal utilizes PostgreSQL for its database, MinIO and the local system for file storage, and Elasticsearch for log indexing and ML processes. + +Retention policies can be set and adjusted within the application on a per-project basis. + +**3. How is data encrypted in transit and at rest?** + +We use encryption in transit via SSL for our SaaS instances. For on-prem installation it depends on your LoadBalancer. + +We use encryption at rest for our SaaS instances. It is provided by AWS and configured during VM provisioning. For on-prem installation it depends on your DevOps. + +**4. Does the containerized solution function as a standalone, or can it be integrated with K8S or other orchestration platforms? Is there a helm chart available?** + +ReportPortal is containerized and can be orchestrated using either docker-compose or [Kubernetes](https://github.com/reportportal/kubernetes/tree/develop/reportportal). + +**5. Is there any training available to use ReportPortal effectively?** + +Check our [Tutorial](/reportportal-tutorial/) and read [blog post](https://reportportal.io/blog/Tips-to-get-ReportPortal-benefits) with tips to get ReportPortal benefits. We also recommend investigate [our documentation](https://reportportal.io/docs/) where you can find screenshots and video instructions on ReportPortal functionality. + +**6. Is there a demo available?** + +For sure, you can explore ReportPortal [without installation](/reportportal-tutorial/#how-to-explore-reportportal-without-installation) visiting our Demo instance. + +**7. How can I begin using ReportPortal?** + +The initial steps involve installing and configuring the tool. [Installation steps](/category/installation-steps) you can find in our documentation. + +**8. Does the tool integrate with my existing test automation framework?** + +ReportPortal can be integrated with common testing frameworks and CI tools. Consult [this section](/log-data-in-reportportal/test-framework-integration) of the documentation for detailed information on test framework integration. And use following links for Integration with CI/CD: [Integration with GitLab CI](/quality-gates/IntegrationWithCICD/IntegrationWithGitLabCI/), [Integration with Jenkins](/quality-gates/IntegrationWithCICD/IntegrationWithJenkins/). + +**9. What type of license does ReportPortal use?** + +ReportPortal is licensed under Apache v2.0, which means it’s free to use, comes with no liability and warranty, and there is no service and support included. And can be utilized even for commercial usage. + +**10. Does ReportPortal have any paid features?** + +At that moment, we offer the only premium feature – [Quality Gates](/category/quality-gates). It is a set of predefined criteria that must be satisfied for a run to be deemed successful. + +**11. Does ReportPortal use AI?** + +We provide ML-driven failure triage. Read [this article](https://reportportal.io/blog/How-we-use-AI) to know how we use AI. + +**12. Do we need specific infrastructure prerequisites to avoid performance problems?** + +Look into [Optimal Performance Hardware setup](/installation-steps/OptimalPerformanceHardwareSetup). + +**13. What types of reports can I generate with the ReportPortal?** + +ReportPortal has a lot of widgets to visualize test results and understand the state of the product. Most popular our widgets: [Overall statistics chart](/dashboards-and-widgets/OverallStatistics), [Launch statistics chart](/dashboards-and-widgets/LaunchStatisticsChart), [Failed cases trend chart](/dashboards-and-widgets/FailedCasesTrendChart), [Launch execution and issue statistic](/dashboards-and-widgets/LaunchExecutionAndIssueStatistic), [Component health check](/dashboards-and-widgets/ComponentHealthCheck). + +**14. Can ReportPortal aggregate performance test results?** + +We do not support direct integration with performance testing frameworks, but as a workaround you can import performance test results in JUnit format into ReportPortal. Further information on this topic can be found [here](https://github.com/reportportal/reportportal/issues/1820). + +**15. Does ReportPortal have integration with Jira?** + +Our test automation reporting dashboard have integration with following Bug Tracking Systems: [Jira Server](/plugins/AtlassianJiraServer), [Jira Cloud](/plugins/AtlassianJiraCloud), [Azure DevOps](/plugins/AzureDevOpsBTS), and [Rally](/plugins/Rally). diff --git a/docs/admin-panel/_category_.json b/docs/admin-panel/_category_.json index 280bcc43a..951bb6316 100644 --- a/docs/admin-panel/_category_.json +++ b/docs/admin-panel/_category_.json @@ -1,6 +1,6 @@ { "label": "Admin Panel", - "position": "12", + "position": "14", "link": { "type": "generated-index" } diff --git a/docs/analysis/_category_.json b/docs/analysis/_category_.json index da944b5e6..7ee89eff0 100644 --- a/docs/analysis/_category_.json +++ b/docs/analysis/_category_.json @@ -1,6 +1,6 @@ { "label": "Analysis", - "position": "8", + "position": "11", "link": { "type": "generated-index" } diff --git a/docs/case-studies/_category_.json b/docs/case-studies/_category_.json index 520d93b41..e5f4bc931 100644 --- a/docs/case-studies/_category_.json +++ b/docs/case-studies/_category_.json @@ -1,6 +1,6 @@ { "label": "Case Studies", - "position": "16", + "position": "19", "link": { "type": "generated-index" } diff --git a/docs/dashboards-and-widgets/_category_.json b/docs/dashboards-and-widgets/_category_.json index 649102c64..a777ce85a 100644 --- a/docs/dashboards-and-widgets/_category_.json +++ b/docs/dashboards-and-widgets/_category_.json @@ -1,6 +1,6 @@ { "label": "Dashboards and widgets", - "position": "10", + "position": "13", "link": { "type": "generated-index" } diff --git a/docs/dev-guides/_category_.json b/docs/dev-guides/_category_.json index 3b34ebbb4..523cfebf6 100644 --- a/docs/dev-guides/_category_.json +++ b/docs/dev-guides/_category_.json @@ -1,6 +1,6 @@ { "label": "Developers guides", - "position": "7", + "position": "9", "link": { "type": "generated-index" } diff --git a/docs/installation-steps/_category_.json b/docs/installation-steps/_category_.json index aae8775c4..9c49281f5 100644 --- a/docs/installation-steps/_category_.json +++ b/docs/installation-steps/_category_.json @@ -1,6 +1,6 @@ { "label": "Installation Steps", - "position": "3", + "position": "4", "link": { "type": "generated-index" } diff --git a/docs/issues-troubleshooting/_category_.json b/docs/issues-troubleshooting/_category_.json index d48114961..299b06353 100644 --- a/docs/issues-troubleshooting/_category_.json +++ b/docs/issues-troubleshooting/_category_.json @@ -1,6 +1,6 @@ { "label": "Issues Troubleshooting", - "position": "15", + "position": "18", "link": { "type": "generated-index" } diff --git a/docs/log-data-in-reportportal/_category_.json b/docs/log-data-in-reportportal/_category_.json index e27add91a..b3f0be38c 100644 --- a/docs/log-data-in-reportportal/_category_.json +++ b/docs/log-data-in-reportportal/_category_.json @@ -1,6 +1,6 @@ { "label": "Log data in ReportPortal", - "position": "6", + "position": "8", "link": { "type": "generated-index" } diff --git a/docs/plugins/_category_.json b/docs/plugins/_category_.json index 2cf8c1884..9d3a53cc4 100644 --- a/docs/plugins/_category_.json +++ b/docs/plugins/_category_.json @@ -1,6 +1,6 @@ { "label": "Plugins", - "position": "13", + "position": "15", "link": { "type": "generated-index" } diff --git a/docs/quality-gates/_category_.json b/docs/quality-gates/_category_.json index fb2eee0b3..49f9db487 100644 --- a/docs/quality-gates/_category_.json +++ b/docs/quality-gates/_category_.json @@ -1,6 +1,6 @@ { "label": "Quality Gates", - "position": "14", + "position": "16", "link": { "type": "generated-index" } diff --git a/docs/reportportal-configuration/_category_.json b/docs/reportportal-configuration/_category_.json index 9d2d53dd3..abbb29645 100644 --- a/docs/reportportal-configuration/_category_.json +++ b/docs/reportportal-configuration/_category_.json @@ -1,6 +1,6 @@ { "label": "ReportPortal Configuration", - "position": "4", + "position": "5", "link": { "type": "generated-index" } diff --git a/docs/reportportal-glossary/index.mdx b/docs/reportportal-glossary/index.mdx index 7b4818c95..83428514e 100644 --- a/docs/reportportal-glossary/index.mdx +++ b/docs/reportportal-glossary/index.mdx @@ -1,5 +1,5 @@ --- -sidebar_position: 16 +sidebar_position: 20 sidebar_label: ReportPortal Glossary --- diff --git a/docs/reportportal-tutorial/index.mdx b/docs/reportportal-tutorial/index.mdx index afc62fe2f..836dcf74b 100644 --- a/docs/reportportal-tutorial/index.mdx +++ b/docs/reportportal-tutorial/index.mdx @@ -1,5 +1,5 @@ --- -sidebar_position: 2 +sidebar_position: 3 sidebar_label: ReportPortal Tutorial description: ReportPortal guide. How to do test failure analysis, how to create dashboard to manage test results and use capabilities of continuous testing platform. --- diff --git a/docs/saved-searches-filters/_category_.json b/docs/saved-searches-filters/_category_.json index dd12bfc3f..5fbc856bf 100644 --- a/docs/saved-searches-filters/_category_.json +++ b/docs/saved-searches-filters/_category_.json @@ -1,6 +1,6 @@ { "label": "Saved searches (filters)", - "position": "9", + "position": "12", "link": { "type": "generated-index" } diff --git a/docs/terms-and-conditions/_category_.json b/docs/terms-and-conditions/_category_.json index fca45c950..18f12d9c8 100644 --- a/docs/terms-and-conditions/_category_.json +++ b/docs/terms-and-conditions/_category_.json @@ -1,6 +1,6 @@ { "label": "Terms & conditions", - "position": "16", + "position": "22", "link": { "type": "generated-index" } diff --git a/docs/user-account/_category_.json b/docs/user-account/_category_.json index e792897cb..0bc4a3390 100644 --- a/docs/user-account/_category_.json +++ b/docs/user-account/_category_.json @@ -1,6 +1,6 @@ { "label": "User account", - "position": "5", + "position": "7", "link": { "type": "generated-index" } diff --git a/docs/user-role-guides/index.md b/docs/user-role-guides/index.md index 0db7f212b..df94135d0 100644 --- a/docs/user-role-guides/index.md +++ b/docs/user-role-guides/index.md @@ -1,5 +1,5 @@ --- -sidebar_position: 14 +sidebar_position: 17 sidebar_label: User role guides --- diff --git a/docs/work-with-reports/_category_.json b/docs/work-with-reports/_category_.json index cc45a8f11..6915464df 100644 --- a/docs/work-with-reports/_category_.json +++ b/docs/work-with-reports/_category_.json @@ -1,6 +1,6 @@ { "label": "Work with reports", - "position": "7", + "position": "10", "link": { "type": "generated-index" } From ef92a299e0d73f2dfb8010f622e0cf11acdfa5a7 Mon Sep 17 00:00:00 2001 From: Yuliya Prihodko <107035036+pressayuliya@users.noreply.github.com> Date: Mon, 25 Sep 2023 09:21:24 +0300 Subject: [PATCH 04/17] EPMRPP-86605 || Changes regarding API Key+update for Jira Server article (#608) --- docs/plugins/AtlassianJiraServer.mdx | 6 +++--- .../HowToGetAnAccessTokenInReportPortal.mdx | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/plugins/AtlassianJiraServer.mdx b/docs/plugins/AtlassianJiraServer.mdx index 9504f42aa..320cd0ec6 100644 --- a/docs/plugins/AtlassianJiraServer.mdx +++ b/docs/plugins/AtlassianJiraServer.mdx @@ -209,9 +209,9 @@ https://jira.company.com/jira https://jiraeu.company.com ``` -3. Verify the project key in JIRA Server is correct. Please fill in the Project key field with project key-value, e.g. project ABC-DEF has key ABCDEF. +2. Verify the project key in JIRA Server is correct. Please fill in the Project key field with project key-value, e.g. project ABC-DEF has key ABCDEF. -4. Verify the username and password data. Make sure, that the login name and not the email are in the username field. In case all the data above is correct, but the error appears again, check whether the user's credentials to JIRA Server are not expired. As far as JIRA Server sends the request in HTML format, we are not able to display the real reason for the error. To check and/or resolve the issue, please do the next steps: +3. Verify the username and password data. Make sure, that the login name and not the email are in the username field. In case all the data above is correct, but the error appears again, check whether the user's credentials to JIRA Server are not expired. As far as JIRA Server sends the request in HTML format, we are not able to display the real reason for the error. To check and/or resolve the issue, please do the next steps: * Open JIRA Server page * Log in to JIRA Server with domain credentials using basic authorization (i.e., fill in user's login name and password into the fields) @@ -220,7 +220,7 @@ https://jiraeu.company.com * Submit the credentials again * Now try to establish the connection to JIRA Server on the ReportPortal project. -5. SSL instance of JIRA (even cloud version) can be accessed by JIRA API token, used instead of a password. +4. SSL instance of JIRA (even cloud version) can be accessed by JIRA API token, used instead of a password. After you have connected Jira and our test automation results dashboard, you can choose an issue type that you will be able to add to Jira during the “Post Issue” operation. Also, the user can add predefined fields that the user can fill. ## Post issue to Atlassian Jira Server diff --git a/docs/reportportal-configuration/HowToGetAnAccessTokenInReportPortal.mdx b/docs/reportportal-configuration/HowToGetAnAccessTokenInReportPortal.mdx index 039e1c2c5..775130c0e 100644 --- a/docs/reportportal-configuration/HowToGetAnAccessTokenInReportPortal.mdx +++ b/docs/reportportal-configuration/HowToGetAnAccessTokenInReportPortal.mdx @@ -53,7 +53,7 @@ Another method involves using the API Key found on the user's Profile page. The API Key is a unique token that grants access to the ReportPortal REST API. -To use it, log in and navigate to the Profile page, then find the API Keys tab. If you've previously created a token, it now has been converted to a Legacy API Key at the moment of migration to newest version and it remains valid and operational. +To use it, log in and navigate to the Profile page, then find the API Keys tab. If you’ve previously integrated agents using UUID, it has been converted to a Legacy API Key at the moment of migration to newest version and it remains valid and operational. :::note It will continue to work even if you generate new API Keys. From 7dd5fe3d577c7c741741f0e37c4a41af4cd18407 Mon Sep 17 00:00:00 2001 From: Vadzim Hushchanskou Date: Mon, 25 Sep 2023 22:08:58 +0300 Subject: [PATCH 05/17] Update IntegrationWithGitLabCI.md --- .../IntegrationWithCICD/IntegrationWithGitLabCI.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/quality-gates/IntegrationWithCICD/IntegrationWithGitLabCI.md b/docs/quality-gates/IntegrationWithCICD/IntegrationWithGitLabCI.md index 6c194e1eb..edb01e2f9 100644 --- a/docs/quality-gates/IntegrationWithCICD/IntegrationWithGitLabCI.md +++ b/docs/quality-gates/IntegrationWithCICD/IntegrationWithGitLabCI.md @@ -295,7 +295,7 @@ to get new features. So these properties are: `rp.launch.uuid.print` and `rp.launch.uuid.print.output`. You can put them into your `reportportal.properties` file. Enable Launch UUID printing with the property: `rp.launch.uuid.print = true`. It will output a line like this into the console: -`Report Portal Launch UUID: 61ce1c26-842a-4bde-9abe-a4696e31d626`. +`ReportPortal Launch UUID: 61ce1c26-842a-4bde-9abe-a4696e31d626`. Our tests use Gradle to build and run them, unlike other build systems Gradle usually hides test output streams and just prints truncated stack trace in case @@ -330,7 +330,7 @@ test: - chmod +x ./gradlew - ./gradlew --console=plain :service-api:demoSmoke -Prp.api.key=$RP_DEMO_KEY -Prp.admin.password=$RP_ADMIN_PASSWORD | tee ./console.log - > - sed -rn 's/[ ]+Report Portal Launch UUID: ([^\\r\\n]+)/LAUNCH_UUID=\1/ w launch.env' ./console.log + sed -rn 's/[ ]+ReportPortal Launch UUID: ([^\\r\\n]+)/LAUNCH_UUID=\1/ w launch.env' ./console.log ``` Some explanations here: @@ -346,7 +346,7 @@ since version 5.2.0: `rp_launch_uuid_print` and `rp_launch_uuid_print_output`. You can put them into your `pytest.ini` file. For this example, we just need one of them: `rp_launch_uuid_print = True`. It will output a line like this into the console: -`Report Portal Launch UUID: 61ce1c26-842a-4bde-9abe-a4696e31d626`. +`ReportPortal Launch UUID: 61ce1c26-842a-4bde-9abe-a4696e31d626`. Next, we need to save this UUID to an environment variable which we later will use in a separate stage in polling ReportPortal API. GitLab allows this with [dotenv @@ -364,7 +364,7 @@ test: script: - pytest -sv --reportportal -m "not command_skip" -n 2 -o "rp_api_key=$RP_DEMO_KEY" tests | tee ./console.log - > - sed -rn 's/Report Portal Launch UUID: ([^\\r\\n]+)/LAUNCH_UUID=\1/ w launch.env' ./console.log + sed -rn 's/ReportPortal Launch UUID: ([^\\r\\n]+)/LAUNCH_UUID=\1/ w launch.env' ./console.log ``` Some explanations here: From 50beb65251ee201816da813f32dd1da0f3d351b7 Mon Sep 17 00:00:00 2001 From: Vadzim Hushchanskou Date: Mon, 25 Sep 2023 22:50:26 +0300 Subject: [PATCH 06/17] Update IntegrationWithGitLabCI.md --- .../IntegrationWithCICD/IntegrationWithGitLabCI.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/quality-gates/IntegrationWithCICD/IntegrationWithGitLabCI.md b/docs/quality-gates/IntegrationWithCICD/IntegrationWithGitLabCI.md index edb01e2f9..9e2984dea 100644 --- a/docs/quality-gates/IntegrationWithCICD/IntegrationWithGitLabCI.md +++ b/docs/quality-gates/IntegrationWithCICD/IntegrationWithGitLabCI.md @@ -289,7 +289,7 @@ UUID, which is a unique Launch identifier. Every Java Agent has specific properties which control Launch UUID printing, since July 2023. To ensure that check if your Agent has -the `com.epam.reportportal:client-java` library dependency of version 5.1.21 or +the `com.epam.reportportal:client-java` library dependency of version 5.1.23 or late. It’s generally safe to add exclusion and put a newer version of the library to get new features. So these properties are: `rp.launch.uuid.print` and `rp.launch.uuid.print.output`. You can put them into your @@ -342,7 +342,7 @@ Some explanations here: ### Getting Launch UUID for Python tests ReportPortal pytest agent has specific properties which control Launch UUID printing, -since version 5.2.0: `rp_launch_uuid_print` and `rp_launch_uuid_print_output`. +since version 5.2.2: `rp_launch_uuid_print` and `rp_launch_uuid_print_output`. You can put them into your `pytest.ini` file. For this example, we just need one of them: `rp_launch_uuid_print = True`. It will output a line like this into the console: From a643ee3490a6229deb19e913191a8a975b6008a1 Mon Sep 17 00:00:00 2001 From: Dmitriy Gumeniuk Date: Tue, 26 Sep 2023 16:12:07 -0400 Subject: [PATCH 07/17] fix import script line --- docs/log-data-in-reportportal/ImportDataToReportPortal.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/log-data-in-reportportal/ImportDataToReportPortal.mdx b/docs/log-data-in-reportportal/ImportDataToReportPortal.mdx index 5128429d0..db12a1e53 100644 --- a/docs/log-data-in-reportportal/ImportDataToReportPortal.mdx +++ b/docs/log-data-in-reportportal/ImportDataToReportPortal.mdx @@ -57,7 +57,7 @@ Here's an example of a request to the endpoint: ```yaml curl -X 'POST' \ - 'http://localhost:8585/api/v1/testProject/launch/import?attributeKey=someKey&attributeValue=someValue&description=someDescription&launchName=someName&skippedIsNotIssue=true' + 'http://localhost:8585/api/v1/testProject/launch/import?attributeKey=someKey&attributeValue=someValue&description=someDescription&launchName=someName&skippedIsNotIssue=true' \ -F 'file=@Launch.zip;type=application/x-zip-compressed' ``` From 4c26b603bccd7a928f9027004dc0764d8328c44c Mon Sep 17 00:00:00 2001 From: Yuliya Prihodko <107035036+pressayuliya@users.noreply.github.com> Date: Wed, 27 Sep 2023 09:33:50 +0300 Subject: [PATCH 08/17] EPMRPP-86715 || Add Features articles+rename Releases folder to releases (#609) --- docs/features/AIFailureReasonDetection.md | 28 +++++++++++++++++- docs/features/CategorisationOfFailures.md | 27 ++++++++++++++++- docs/features/QualityGates.md | 18 +++++++++++ docs/features/RESTAPI.md | 24 +++++++++++++++ docs/features/RealTimeReporting.md | 20 +++++++++++++ docs/features/RichArtifactsInTestReports.md | 24 +++++++++++++++ docs/features/UnifiedTestReporting.md | 20 ++++++++++++- docs/features/VisualisationOfTestResults.md | 22 +++++++++++++- docs/{Releases => releases}/Version3.3.2-1.md | 0 docs/{Releases => releases}/Version3.3.2.md | 0 docs/{Releases => releases}/Version4.0.0.md | 0 docs/{Releases => releases}/Version4.1.0.md | 0 docs/{Releases => releases}/Version4.2.0.md | 0 docs/{Releases => releases}/Version4.3.md | 0 docs/{Releases => releases}/Version5.0.0.md | 0 docs/{Releases => releases}/Version5.0RC.md | 0 docs/{Releases => releases}/Version5.1.0.md | 0 docs/{Releases => releases}/Version5.2.0.md | 0 docs/{Releases => releases}/Version5.2.1.md | 0 docs/{Releases => releases}/Version5.2.2.md | 0 docs/{Releases => releases}/Version5.2.3.md | 0 docs/{Releases => releases}/Version5.3.0.md | 0 docs/{Releases => releases}/Version5.3.1..md | 0 docs/{Releases => releases}/Version5.3.2.md | 0 docs/{Releases => releases}/Version5.3.3.md | 0 docs/{Releases => releases}/Version5.3.5.md | 0 docs/{Releases => releases}/Version5.4.0.md | 0 docs/{Releases => releases}/Version5.5.0.md | 0 docs/{Releases => releases}/Version5.6.0.md | 0 docs/{Releases => releases}/Version5.6.1.md | 0 docs/{Releases => releases}/Version5.6.2.md | 0 docs/{Releases => releases}/Version5.6.3.md | 0 docs/{Releases => releases}/Version5.7.0.md | 0 docs/{Releases => releases}/Version5.7.1.md | 0 docs/{Releases => releases}/Version5.7.2.md | 0 docs/{Releases => releases}/Version5.7.3.md | 0 docs/{Releases => releases}/Version5.7.4.md | 0 docs/{Releases => releases}/Versionv23.1.md | 0 docs/{Releases => releases}/_category_.json | 2 +- docs/{Releases => releases}/img/5.7.4.png | Bin 40 files changed, 180 insertions(+), 5 deletions(-) rename docs/{Releases => releases}/Version3.3.2-1.md (100%) rename docs/{Releases => releases}/Version3.3.2.md (100%) rename docs/{Releases => releases}/Version4.0.0.md (100%) rename docs/{Releases => releases}/Version4.1.0.md (100%) rename docs/{Releases => releases}/Version4.2.0.md (100%) rename docs/{Releases => releases}/Version4.3.md (100%) rename docs/{Releases => releases}/Version5.0.0.md (100%) rename docs/{Releases => releases}/Version5.0RC.md (100%) rename docs/{Releases => releases}/Version5.1.0.md (100%) rename docs/{Releases => releases}/Version5.2.0.md (100%) rename docs/{Releases => releases}/Version5.2.1.md (100%) rename docs/{Releases => releases}/Version5.2.2.md (100%) rename docs/{Releases => releases}/Version5.2.3.md (100%) rename docs/{Releases => releases}/Version5.3.0.md (100%) rename docs/{Releases => releases}/Version5.3.1..md (100%) rename docs/{Releases => releases}/Version5.3.2.md (100%) rename docs/{Releases => releases}/Version5.3.3.md (100%) rename docs/{Releases => releases}/Version5.3.5.md (100%) rename docs/{Releases => releases}/Version5.4.0.md (100%) rename docs/{Releases => releases}/Version5.5.0.md (100%) rename docs/{Releases => releases}/Version5.6.0.md (100%) rename docs/{Releases => releases}/Version5.6.1.md (100%) rename docs/{Releases => releases}/Version5.6.2.md (100%) rename docs/{Releases => releases}/Version5.6.3.md (100%) rename docs/{Releases => releases}/Version5.7.0.md (100%) rename docs/{Releases => releases}/Version5.7.1.md (100%) rename docs/{Releases => releases}/Version5.7.2.md (100%) rename docs/{Releases => releases}/Version5.7.3.md (100%) rename docs/{Releases => releases}/Version5.7.4.md (100%) rename docs/{Releases => releases}/Versionv23.1.md (100%) rename docs/{Releases => releases}/_category_.json (79%) rename docs/{Releases => releases}/img/5.7.4.png (100%) diff --git a/docs/features/AIFailureReasonDetection.md b/docs/features/AIFailureReasonDetection.md index bc2c78b1a..dd6f0be52 100644 --- a/docs/features/AIFailureReasonDetection.md +++ b/docs/features/AIFailureReasonDetection.md @@ -3,4 +3,30 @@ sidebar_position: 3 sidebar_label: AI failure reason detection --- -# AI failure reason detection +# AI-based failure reason detection + +In the realm of test automation, failure analysis often becomes a bottleneck, consuming valuable time and resources. ReportPortal introduces a game-changing solution with its AI-powered failure reason detection feature. Employing advanced Machine Learning (ML) algorithms, this feature streamlines your test processes, enabling quicker, more accurate results. + +**Unlocking Efficiency through Automation** + +Running daily regression tests can be a double-edged sword: they're essential for maintaining a robust application, but they also generate an avalanche of test results that need analysis. The good news? ReportPortal's AI algorithms take over this repetitive task, automatically categorizing test failures according to their root cause. As a result, your team can shift their focus to newly emerged issues, substantially cutting down the time spent on manual triage. + +**Speed and Precision in Defect Identification** + +The power of AI doesn't stop at handling daily jobs; it extends to making your defect identification process lightning-fast and razor-sharp. ReportPortal's Auto-Analysis feature scans through test results, logs, and other associated data to quickly pinpoint failures and automatically tag them with defect types. This efficiency enables your team to discover a maximum number of bugs in minimal time, supercharging your QA process. + +**Elevated Accuracy in Failure Classification** + +Human error is an inevitable part of any process, particularly one as monotonous as going through lines of test logs. ReportPortal's AI-driven approach minimizes this risk. By automating the classification of test failures, it not only eliminates manual errors but also adds an extra layer of precision that even the most experienced testers might miss. + +ReportPortal's AI functionality comes in three distinct forms to accommodate various testing needs: + +- **Analyzer:** This feature automatically classifies test failures, sparing your team the manual labor of sifting through results. Utilizing advanced algorithms, the Analyzer categorizes different types of test failures, so you can prioritize issues that need immediate attention. +- **Unique Error:** This tool groups identical test failures together for accelerated bulk analysis. By clustering similar failures, Unique Error allows for more efficient troubleshooting and quicker resolution of recurring issues. +- **ML-Based Suggestions:** Leveraging machine learning algorithms, this feature provides suggestions for failures that are most similar to ones you've encountered before while do manual analysis. The suggestions guide your team in identifying the root causes of test failures more accurately and swiftly. + +**Conclusion: A Smarter Way to Test** + +AI-based failure reason detection is more than just a flashy feature. First deployed in production in 2016, long before the hype cycle surrounding GenAI technology. It's a strategic asset that enhances team productivity and the reliability of your applications. By automating the most cumbersome aspects of test analysis, ReportPortal frees up your team to focus on what truly matters: delivering high-quality software. + +Embrace the future of test automation with ReportPortal's AI capabilities and give your team the edge they've been waiting for. diff --git a/docs/features/CategorisationOfFailures.md b/docs/features/CategorisationOfFailures.md index 8670bb3ea..6ec57fc5d 100644 --- a/docs/features/CategorisationOfFailures.md +++ b/docs/features/CategorisationOfFailures.md @@ -3,4 +3,29 @@ sidebar_position: 2 sidebar_label: Categorisation of failures --- -# Categorisation of failures +# Categorization of failures based on issue roots + +In the realm of software development and QA, test failure analysis isn't just a task—it's a critical practice. The way we categorize test failures informs not only the testing process but also how quickly and efficiently developers can resolve issues. ReportPortal provides an advanced, feature-rich environment for streamlined failure categorization, which is an integral part of any agile development cycle. + +Navigate to the 'Launches' tab in ReportPortal and you'll find an intuitive breakdown of your test executions, displaying Total, Passed, Failed, and Skipped test cases. What sets ReportPortal apart is its pre-categorized issues like Product Bug, Automation Bug, and System Issue. This leaves your team with a focused subset of items marked “To Investigate.” + +**The Process of Intelligent Triage** + +When you open one of these “To Investigate” items, a QA engineer engages in defect triage by reviewing logs, screenshots, and video recordings, all of which are seamlessly integrated into each failed test item. Based on this comprehensive analysis, the engineer categorizes the failures through the “Make Decision” modal, as follows: + +- **Product Bug:** These issues stem from flaws in the application code and should be the developers' first priority for resolution. +- **Automation Bug:** This category addresses issues related to test data, such as outdated tests or incorrect data, and timeouts. +- **System Issue:** Failures in this category usually result from an unstable testing environment or issues with third-party software. +- **Not a Defect:** Use this classification for tests that have been resolved or manually validated. + +**The Takeaways** + +Intelligent categorization with ReportPortal serves several essential functions: + +**1. Root Cause Analysis:** The key question remains: Was the failure caused by an issue within the software, or was it an external factor? With access to detailed logs, screenshots, and video, pinpointing the root cause becomes a far more efficient process. + +**2. Functional Area Identification:** Categorizing failures often reveals which area of the application is prone to issues, allowing for targeted remediation. + +**3. Severity Assessment:** Understanding the severity of a failure is critical. Is it an application issue that mandates postponing deployment, or is it a lesser issue that can be prioritized accordingly? + +In summary, the intelligent test failure categorization offered by ReportPortal is a cornerstone for delivering high-quality products swiftly and effectively. diff --git a/docs/features/QualityGates.md b/docs/features/QualityGates.md index 11b1d2af1..3b9a07a3f 100644 --- a/docs/features/QualityGates.md +++ b/docs/features/QualityGates.md @@ -4,3 +4,21 @@ sidebar_label: Quality Gates --- # Quality Gates + +Quality Gates is a feature thanks to which ReportPortal becomes an integral part of continuous testing platform. It prevents the code from moving forward if it doesn’t meet testing criteria. ReportPortal uses aggregated data and rule engine to verify testing results against required conditions. + +Top-3 benefits of Quality Gates: + +**Increased Speed and Efficiency** + +Automated GO / NO-GO decisions enable quick decision-making by instantly evaluating whether a particular build or code change meets the predefined quality criteria while tested. This eliminates the need for manual reviews at various stages of the process, allowing teams to release software more quickly and efficiently and avoid delays and human error. + +**Improved Consistency and Reliability** + +By setting standardized quality criteria, automated quality gates ensure that each code change adheres to the same high-quality standards. This consistency helps to reduce the likelihood of defects and errors, making the end product more reliable and robust. + +**Enhanced Collaboration and Accountability** + +Automated quality gates provide immediate, objective feedback that is accessible to all team members, from developers to QA to management. This shared understanding of what constitutes "quality" improves collaboration and holds everyone accountable for the quality of the software. + +In summary, Quality Gates are an essential feature in ReportPortal that helps to understand the quality of your product and make release decisions. diff --git a/docs/features/RESTAPI.md b/docs/features/RESTAPI.md index 4d3ffa807..3877103dc 100644 --- a/docs/features/RESTAPI.md +++ b/docs/features/RESTAPI.md @@ -4,3 +4,27 @@ sidebar_label: REST API --- # REST API + +ReportPortal offers a robust set of features through its REST API, covering test data, user data, project data, statistics, integrations, and more. + +The REST API can be particularly useful for those looking to: + +- Implement own reporter and integrate it with a custom testing framework or runner. +- Retrieve data from ReportPortal for custom reports or integration with third-party systems. +- Enhance functionality and develop add-ons. + +Here are the examples of how REST API can be helpful, including: + +**1. Creating/updating test results**, test runs, logs, adding attachments, and comments, and other information as attributes. It improves the testing process in general by supplying more context and information about the test results. + +**2. Integration with test management tools** (Jira, TestRail, and others). It allows to collect and manage test results and other data in one place. + +**3. Integration with bug tracking systems** (Jira Server, Jira Cloud, Azure DevOps, Rally, and others). This makes it possible to easily track issues. + +**4. Integration with CI/CD pipelines** (Jenkins, Travis CI, TeamCity, and others) for the real-time test results, faster feedback and quicker release cycles. + +**5. Integration with other systems** like Data Mart (Microsoft Dynamics, Power BI, Vertica). They serve for extensive data analysis. + +**6. Custom integration.** With REST API, you can create your own extensions. For example, if here there is no integration with specific test framework that you need, you can make any integration using API. + +Generally, REST API can be used for getting the most out of the test automation reporting tools such as ReportPortal and for the extension of capabilities. REST API allows to track and manage bugs in one central area, to design unique reports and dashboards that might offer insightful data and assist teams in making better decisions regarding the testing process. diff --git a/docs/features/RealTimeReporting.md b/docs/features/RealTimeReporting.md index c16a5293b..f238e26ff 100644 --- a/docs/features/RealTimeReporting.md +++ b/docs/features/RealTimeReporting.md @@ -4,3 +4,23 @@ sidebar_label: Real-time reporting --- # Real-time reporting + +Real-time test reporting provides the most current data without delay. Thanks to near real-time capabilities, you can receive the first test results in a matter of seconds after the execution has started and benefit from the advantage of getting the entire execution results before it is completed. + +Real-time reporting in ReportPortal comes with three main advantages: + +**Saving time on early reaction and Early Defect Identification** + +With test case results and logs appearing in ReportPortal in real-time, teams can begin triaging issues immediately. This not only saves time but also allows for early identification of defects, leading to quicker resolutions and improved code quality. + +At the same time, you can save time and effort with manual re-testing of failed test cases, while the entire execution is still on the go. + +**Maximized Testing Efficiency for Large Regressions** + +For extensive regression tests that may take several hours to complete, real-time reporting ensures that teams don't have to wait until the end to start analyzing results. They can begin the analysis while the rest of the tests are still running, thereby making optimal use of time and resources. + +**Streamlined Workflow with Continuous Feedback:** + +The real-time nature of the reporting enables a continuous feedback loop among testers, developers, and other stakeholders. This makes it easier to implement changes on the fly and ensures that everyone stays informed, reducing the likelihood of surprises at the end of the regression cycle. + +Overall, real-time reporting provides easy access to test results as soon as they are generated, allows to quickly identify issues and make decisions, reduces costs by preventing similar issues and ensures effective communication between team and stakeholders. diff --git a/docs/features/RichArtifactsInTestReports.md b/docs/features/RichArtifactsInTestReports.md index ef2827242..67d31908e 100644 --- a/docs/features/RichArtifactsInTestReports.md +++ b/docs/features/RichArtifactsInTestReports.md @@ -4,3 +4,27 @@ sidebar_label: Rich artifacts in test reports --- # Rich artifacts in test reports + +Test execution report in ReportPortal may contain extra details in addition to the standard test results (passed/failed status). + +These additional artifacts in test reports can consist of: + +**1. Logs.** + +Logs can include error messages that are very helpful for test failure analysis. With logs, it is possible to understand the root cause and set the defect type properly. + +**2. Screenshots.** + +You can see the image of the data displayed on the screen during the test run. Screenshots make the debugging process easier and may give insights into why this issue occurred. + +**3. Video recordings.** + +Logs in ReportPortal can have video recordings attached as well. A video shows the exact screen states. Using this artifact, you will be able to troubleshoot problems more quickly. + +Besides, ReportPortal also supports integration with Sauce Labs via corresponding plugin so that it is possible to watch videos of test executions right in the ReportPortal. + +**4. Network traffic.** + +These are details about the network calls performed while the test was running (requests and responses). + +You can send all the artifacts to ReportPortal as attachments and use them to simplify defect triage, to replicate and debug issues, to find performance and network-related issues, to comprehend the context in which certain problems occurred. diff --git a/docs/features/UnifiedTestReporting.md b/docs/features/UnifiedTestReporting.md index f09719e2f..b5ef01acb 100644 --- a/docs/features/UnifiedTestReporting.md +++ b/docs/features/UnifiedTestReporting.md @@ -3,5 +3,23 @@ sidebar_position: 1 sidebar_label: Unified test reporting --- -# Unified test reporting +# Single-entry point and unified test reporting + +ReportPortal was created with the idea in mind to be a single tool to acquire and aggregate the results of all automated tests for projects. Our centralized test automation tool is a great focus area for managers and test engineers because all test results can be accessed, reviewed and analyzed in one place. + +In the complex landscape of software testing, where multiple test frameworks, languages, and types of tests often coexist, the sheer volume and diversity of test reports can be overwhelming. ReportPortal addresses this problem elegantly by serving as a single-entry point for all test reports, providing unified and consolidated insights across the board. This single point of truth offers a multitude of benefits that can transform the way your team approaches testing. + +**Unification and Standardization** + +ReportPortal is designed to unify reports from various test frameworks and languages, whether they are API tests, integration tests, or end-to-end tests. It takes these disparate reports and presents them in a standardized format, making them equally understandable to QA engineers, developers, and even DevOps teams. This eliminates the need for engineers to scour multiple platforms for hidden reports, thereby reducing confusion and promoting efficiency. + +**Streamlined Collaboration** + +With a single link, you can direct team members to a central location where test results are not just collected but also analyzed. This facilitates collaboration by creating a universal language and understanding of test results across different team members, irrespective of their roles or technical proficiencies. The centralized reporting also aids in "Shift Left" testing approaches, where test feedback is made available earlier in the development cycle by Developers and not only QA Engineers. + +**Immediate Feedback and Quality Gate Integration** + +When combined with automated quality gates, the platform can provide instantaneous verdicts on whether code changes have passed or failed the tests. In the event of a failure, the platform's auto-analysis feature helps to pinpoint the exact cause. This real-time, automated feedback is invaluable in modern DevOps pipelines, accelerating the release process and enhancing code quality. + +In summary, ReportPortal’s single-entry point for all test reports offers the unique advantage of consolidating, standardizing, and analyzing test data in one location. This unified approach significantly simplifies the testing process, fosters better collaboration, and enables more agile development cycles. Adopting ReportPortal is a strategic move toward a more efficient and streamlined testing environment. diff --git a/docs/features/VisualisationOfTestResults.md b/docs/features/VisualisationOfTestResults.md index 1f0760fa6..6ae4610a8 100644 --- a/docs/features/VisualisationOfTestResults.md +++ b/docs/features/VisualisationOfTestResults.md @@ -3,4 +3,24 @@ sidebar_position: 6 sidebar_label: Visualisation of test results --- -# Visualisation of test results +# Visualization of test data + +ReportPortal's dynamic visualization capabilities provide teams with real-time insights, enabling them to make informed decisions quickly and efficiently. + +**Real-Time Dashboards and Widgets** + +One of ReportPortal's most compelling features is its real-time dashboards and widgets. These dashboards can be customized to focus on specific test executions or take a broader view at the build level by consolidating multiple executions. As your tests run, widgets update in real-time, ensuring your data is always current. This eliminates the cumbersome task of having to recreate reports for every testing cycle or regression. + +**Versatile Tracking** + +ReportPortal's widgets are designed to track essential metrics and trends in your test results. Whether you are interested in code coverage, performance metrics, or failure trends, there's a widget to help you monitor it. The real-time aspect ensures that any shifts in these metrics are immediately visible, allowing your team to adapt and respond more quickly than ever before. + +**Eye-Opening Insights** + +The platform goes beyond just displaying test results; it offers deep insights into the technical debt of your test automation. Widgets can break down test failures by different categories, such as environmental issues, automation errors, or actual product bugs. This classification empowers teams to understand where their efforts are most needed and helps them prioritize tasks effectively. + +**Demonstrating ROI of test automation** + +Perhaps the most critical advantage is the ability to highlight the return on investment (ROI) of your test automation. By showing the actual number of failures due to product bugs, ReportPortal makes it easier to quantify the value your testing is bringing to the overall project. + +In conclusion, ReportPortal’s visualization capabilities offer real-time, customizable, and insightful views into your test data. These features not only save time but also provide teams with the insights needed to deliver better software, faster. diff --git a/docs/Releases/Version3.3.2-1.md b/docs/releases/Version3.3.2-1.md similarity index 100% rename from docs/Releases/Version3.3.2-1.md rename to docs/releases/Version3.3.2-1.md diff --git a/docs/Releases/Version3.3.2.md b/docs/releases/Version3.3.2.md similarity index 100% rename from docs/Releases/Version3.3.2.md rename to docs/releases/Version3.3.2.md diff --git a/docs/Releases/Version4.0.0.md b/docs/releases/Version4.0.0.md similarity index 100% rename from docs/Releases/Version4.0.0.md rename to docs/releases/Version4.0.0.md diff --git a/docs/Releases/Version4.1.0.md b/docs/releases/Version4.1.0.md similarity index 100% rename from docs/Releases/Version4.1.0.md rename to docs/releases/Version4.1.0.md diff --git a/docs/Releases/Version4.2.0.md b/docs/releases/Version4.2.0.md similarity index 100% rename from docs/Releases/Version4.2.0.md rename to docs/releases/Version4.2.0.md diff --git a/docs/Releases/Version4.3.md b/docs/releases/Version4.3.md similarity index 100% rename from docs/Releases/Version4.3.md rename to docs/releases/Version4.3.md diff --git a/docs/Releases/Version5.0.0.md b/docs/releases/Version5.0.0.md similarity index 100% rename from docs/Releases/Version5.0.0.md rename to docs/releases/Version5.0.0.md diff --git a/docs/Releases/Version5.0RC.md b/docs/releases/Version5.0RC.md similarity index 100% rename from docs/Releases/Version5.0RC.md rename to docs/releases/Version5.0RC.md diff --git a/docs/Releases/Version5.1.0.md b/docs/releases/Version5.1.0.md similarity index 100% rename from docs/Releases/Version5.1.0.md rename to docs/releases/Version5.1.0.md diff --git a/docs/Releases/Version5.2.0.md b/docs/releases/Version5.2.0.md similarity index 100% rename from docs/Releases/Version5.2.0.md rename to docs/releases/Version5.2.0.md diff --git a/docs/Releases/Version5.2.1.md b/docs/releases/Version5.2.1.md similarity index 100% rename from docs/Releases/Version5.2.1.md rename to docs/releases/Version5.2.1.md diff --git a/docs/Releases/Version5.2.2.md b/docs/releases/Version5.2.2.md similarity index 100% rename from docs/Releases/Version5.2.2.md rename to docs/releases/Version5.2.2.md diff --git a/docs/Releases/Version5.2.3.md b/docs/releases/Version5.2.3.md similarity index 100% rename from docs/Releases/Version5.2.3.md rename to docs/releases/Version5.2.3.md diff --git a/docs/Releases/Version5.3.0.md b/docs/releases/Version5.3.0.md similarity index 100% rename from docs/Releases/Version5.3.0.md rename to docs/releases/Version5.3.0.md diff --git a/docs/Releases/Version5.3.1..md b/docs/releases/Version5.3.1..md similarity index 100% rename from docs/Releases/Version5.3.1..md rename to docs/releases/Version5.3.1..md diff --git a/docs/Releases/Version5.3.2.md b/docs/releases/Version5.3.2.md similarity index 100% rename from docs/Releases/Version5.3.2.md rename to docs/releases/Version5.3.2.md diff --git a/docs/Releases/Version5.3.3.md b/docs/releases/Version5.3.3.md similarity index 100% rename from docs/Releases/Version5.3.3.md rename to docs/releases/Version5.3.3.md diff --git a/docs/Releases/Version5.3.5.md b/docs/releases/Version5.3.5.md similarity index 100% rename from docs/Releases/Version5.3.5.md rename to docs/releases/Version5.3.5.md diff --git a/docs/Releases/Version5.4.0.md b/docs/releases/Version5.4.0.md similarity index 100% rename from docs/Releases/Version5.4.0.md rename to docs/releases/Version5.4.0.md diff --git a/docs/Releases/Version5.5.0.md b/docs/releases/Version5.5.0.md similarity index 100% rename from docs/Releases/Version5.5.0.md rename to docs/releases/Version5.5.0.md diff --git a/docs/Releases/Version5.6.0.md b/docs/releases/Version5.6.0.md similarity index 100% rename from docs/Releases/Version5.6.0.md rename to docs/releases/Version5.6.0.md diff --git a/docs/Releases/Version5.6.1.md b/docs/releases/Version5.6.1.md similarity index 100% rename from docs/Releases/Version5.6.1.md rename to docs/releases/Version5.6.1.md diff --git a/docs/Releases/Version5.6.2.md b/docs/releases/Version5.6.2.md similarity index 100% rename from docs/Releases/Version5.6.2.md rename to docs/releases/Version5.6.2.md diff --git a/docs/Releases/Version5.6.3.md b/docs/releases/Version5.6.3.md similarity index 100% rename from docs/Releases/Version5.6.3.md rename to docs/releases/Version5.6.3.md diff --git a/docs/Releases/Version5.7.0.md b/docs/releases/Version5.7.0.md similarity index 100% rename from docs/Releases/Version5.7.0.md rename to docs/releases/Version5.7.0.md diff --git a/docs/Releases/Version5.7.1.md b/docs/releases/Version5.7.1.md similarity index 100% rename from docs/Releases/Version5.7.1.md rename to docs/releases/Version5.7.1.md diff --git a/docs/Releases/Version5.7.2.md b/docs/releases/Version5.7.2.md similarity index 100% rename from docs/Releases/Version5.7.2.md rename to docs/releases/Version5.7.2.md diff --git a/docs/Releases/Version5.7.3.md b/docs/releases/Version5.7.3.md similarity index 100% rename from docs/Releases/Version5.7.3.md rename to docs/releases/Version5.7.3.md diff --git a/docs/Releases/Version5.7.4.md b/docs/releases/Version5.7.4.md similarity index 100% rename from docs/Releases/Version5.7.4.md rename to docs/releases/Version5.7.4.md diff --git a/docs/Releases/Versionv23.1.md b/docs/releases/Versionv23.1.md similarity index 100% rename from docs/Releases/Versionv23.1.md rename to docs/releases/Versionv23.1.md diff --git a/docs/Releases/_category_.json b/docs/releases/_category_.json similarity index 79% rename from docs/Releases/_category_.json rename to docs/releases/_category_.json index 5aeeeeab2..a976b7146 100644 --- a/docs/Releases/_category_.json +++ b/docs/releases/_category_.json @@ -1,6 +1,6 @@ { "label": "Releases", - "position": "4", + "position": "5", "link": { "type": "generated-index" } diff --git a/docs/Releases/img/5.7.4.png b/docs/releases/img/5.7.4.png similarity index 100% rename from docs/Releases/img/5.7.4.png rename to docs/releases/img/5.7.4.png From f9830d8e6d23b8d8015f7168b69a3d90ed29cc03 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 8 Sep 2023 16:37:18 +0300 Subject: [PATCH 09/17] Bump word-wrap from 1.2.3 to 1.2.4 (#583) Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.4. - [Release notes](https://github.com/jonschlinkert/word-wrap/releases) - [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4) --- updated-dependencies: - dependency-name: word-wrap dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7dc332e78..ee2c4bf8d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14362,9 +14362,9 @@ "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==" }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", + "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", "devOptional": true, "engines": { "node": ">=0.10.0" From d9f581829c468c63fa9f4126a290cfaa5fe62f5b Mon Sep 17 00:00:00 2001 From: Dmitriy Gumeniuk Date: Tue, 12 Sep 2023 17:52:40 -0400 Subject: [PATCH 10/17] Update DevGuide for Plugins link --- docs/plugins/ManagePlugins.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/plugins/ManagePlugins.mdx b/docs/plugins/ManagePlugins.mdx index 113ede996..e85154a3f 100644 --- a/docs/plugins/ManagePlugins.mdx +++ b/docs/plugins/ManagePlugins.mdx @@ -17,7 +17,7 @@ ReportPortal as a test management system can be reinforced by uploading plugins. |E-mail server| With this plugin, you will be able to configure notifications about test result finish in real time.| |SauceLabs| This plugin helps you to integrate ReportPortal with Sauce Labs and watch a video of test executions right in the ReportPortal application on the log view. |LDAP/Active directory/SAML| This plugin helps authorize without new user creation| -| Implement your own plugin |https://github.com/reportportal/documentation/blob/master/src/md/src/DevGuides/plugin.md| +| Implement your own plugin |https://reportportal.io/docs/dev-guides/PluginDevelopersGuide/| ## Upload plugin From 85572f766f39123c343fc29ed0edcb0c90ace14c Mon Sep 17 00:00:00 2001 From: Dmitriy Gumeniuk Date: Tue, 12 Sep 2023 17:57:04 -0400 Subject: [PATCH 11/17] Update PluginDevelopersGuide with NOTE markup --- docs/dev-guides/PluginDevelopersGuide.mdx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/dev-guides/PluginDevelopersGuide.mdx b/docs/dev-guides/PluginDevelopersGuide.mdx index 9e583d8f1..4dfc82adb 100644 --- a/docs/dev-guides/PluginDevelopersGuide.mdx +++ b/docs/dev-guides/PluginDevelopersGuide.mdx @@ -477,4 +477,7 @@ public class ExampleExtension implements ReportPortalExtensionPoint, DisposableB All plugin components that relies on `@Autowired` dependencies should be loaded lazily using `MemoizingSupplier` or another lazy-load mechanism. This is the restriction of plugin installation flow: -##### We create extension object using constructor and only then we autowire dependencies. If we don't use lazy initialization - all objects created in the constructor will be created with `NULL` objects that were marked as `@Autowired` +:::note + +We create extension object using constructor and only then we autowire dependencies. If we don't use lazy initialization - all objects created in the constructor will be created with `NULL` objects that were marked as `@Autowired` +::: From 8ea050fa8e0c57cdb550e8578753063aac08ed67 Mon Sep 17 00:00:00 2001 From: Yuliya Prihodko <107035036+pressayuliya@users.noreply.github.com> Date: Tue, 19 Sep 2023 10:53:44 +0300 Subject: [PATCH 12/17] EPMRPP-86496 || Add info about rp.uuid to Documentation (#605) --- .../test-framework-integration/Java/index.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/log-data-in-reportportal/test-framework-integration/Java/index.md b/docs/log-data-in-reportportal/test-framework-integration/Java/index.md index 544b931d4..e02485766 100644 --- a/docs/log-data-in-reportportal/test-framework-integration/Java/index.md +++ b/docs/log-data-in-reportportal/test-framework-integration/Java/index.md @@ -28,6 +28,10 @@ rp.launch={NAME_OF_YOUR_LAUNCH} `rp.launch` - a user-selected identifier of test launches. +:::note +Starting from the Service Release 23.1++, `rp.uuid` was renamed to `rp.api.key`. +::: + This set of properties will allow you to report your tests. And there are more properties available for fine grain tuning of integration. Details available [here](https://github.com/reportportal/client-java#property-file). If you need a sophisticated and full-featured integration with a test framework, you can configure it by your self. From 4eb471844820cb816491a869a5bb2992d086521c Mon Sep 17 00:00:00 2001 From: Yuliya Prihodko <107035036+pressayuliya@users.noreply.github.com> Date: Mon, 25 Sep 2023 09:21:24 +0300 Subject: [PATCH 13/17] EPMRPP-86605 || Changes regarding API Key+update for Jira Server article (#608) --- docs/plugins/AtlassianJiraServer.mdx | 6 +++--- .../HowToGetAnAccessTokenInReportPortal.mdx | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/plugins/AtlassianJiraServer.mdx b/docs/plugins/AtlassianJiraServer.mdx index 9504f42aa..320cd0ec6 100644 --- a/docs/plugins/AtlassianJiraServer.mdx +++ b/docs/plugins/AtlassianJiraServer.mdx @@ -209,9 +209,9 @@ https://jira.company.com/jira https://jiraeu.company.com ``` -3. Verify the project key in JIRA Server is correct. Please fill in the Project key field with project key-value, e.g. project ABC-DEF has key ABCDEF. +2. Verify the project key in JIRA Server is correct. Please fill in the Project key field with project key-value, e.g. project ABC-DEF has key ABCDEF. -4. Verify the username and password data. Make sure, that the login name and not the email are in the username field. In case all the data above is correct, but the error appears again, check whether the user's credentials to JIRA Server are not expired. As far as JIRA Server sends the request in HTML format, we are not able to display the real reason for the error. To check and/or resolve the issue, please do the next steps: +3. Verify the username and password data. Make sure, that the login name and not the email are in the username field. In case all the data above is correct, but the error appears again, check whether the user's credentials to JIRA Server are not expired. As far as JIRA Server sends the request in HTML format, we are not able to display the real reason for the error. To check and/or resolve the issue, please do the next steps: * Open JIRA Server page * Log in to JIRA Server with domain credentials using basic authorization (i.e., fill in user's login name and password into the fields) @@ -220,7 +220,7 @@ https://jiraeu.company.com * Submit the credentials again * Now try to establish the connection to JIRA Server on the ReportPortal project. -5. SSL instance of JIRA (even cloud version) can be accessed by JIRA API token, used instead of a password. +4. SSL instance of JIRA (even cloud version) can be accessed by JIRA API token, used instead of a password. After you have connected Jira and our test automation results dashboard, you can choose an issue type that you will be able to add to Jira during the “Post Issue” operation. Also, the user can add predefined fields that the user can fill. ## Post issue to Atlassian Jira Server diff --git a/docs/reportportal-configuration/HowToGetAnAccessTokenInReportPortal.mdx b/docs/reportportal-configuration/HowToGetAnAccessTokenInReportPortal.mdx index 039e1c2c5..775130c0e 100644 --- a/docs/reportportal-configuration/HowToGetAnAccessTokenInReportPortal.mdx +++ b/docs/reportportal-configuration/HowToGetAnAccessTokenInReportPortal.mdx @@ -53,7 +53,7 @@ Another method involves using the API Key found on the user's Profile page. The API Key is a unique token that grants access to the ReportPortal REST API. -To use it, log in and navigate to the Profile page, then find the API Keys tab. If you've previously created a token, it now has been converted to a Legacy API Key at the moment of migration to newest version and it remains valid and operational. +To use it, log in and navigate to the Profile page, then find the API Keys tab. If you’ve previously integrated agents using UUID, it has been converted to a Legacy API Key at the moment of migration to newest version and it remains valid and operational. :::note It will continue to work even if you generate new API Keys. From 9286b587d758887eaee7e01318905bfb0f2f7755 Mon Sep 17 00:00:00 2001 From: Vadzim Hushchanskou Date: Mon, 25 Sep 2023 22:08:58 +0300 Subject: [PATCH 14/17] Update IntegrationWithGitLabCI.md --- .../IntegrationWithCICD/IntegrationWithGitLabCI.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/quality-gates/IntegrationWithCICD/IntegrationWithGitLabCI.md b/docs/quality-gates/IntegrationWithCICD/IntegrationWithGitLabCI.md index 6c194e1eb..edb01e2f9 100644 --- a/docs/quality-gates/IntegrationWithCICD/IntegrationWithGitLabCI.md +++ b/docs/quality-gates/IntegrationWithCICD/IntegrationWithGitLabCI.md @@ -295,7 +295,7 @@ to get new features. So these properties are: `rp.launch.uuid.print` and `rp.launch.uuid.print.output`. You can put them into your `reportportal.properties` file. Enable Launch UUID printing with the property: `rp.launch.uuid.print = true`. It will output a line like this into the console: -`Report Portal Launch UUID: 61ce1c26-842a-4bde-9abe-a4696e31d626`. +`ReportPortal Launch UUID: 61ce1c26-842a-4bde-9abe-a4696e31d626`. Our tests use Gradle to build and run them, unlike other build systems Gradle usually hides test output streams and just prints truncated stack trace in case @@ -330,7 +330,7 @@ test: - chmod +x ./gradlew - ./gradlew --console=plain :service-api:demoSmoke -Prp.api.key=$RP_DEMO_KEY -Prp.admin.password=$RP_ADMIN_PASSWORD | tee ./console.log - > - sed -rn 's/[ ]+Report Portal Launch UUID: ([^\\r\\n]+)/LAUNCH_UUID=\1/ w launch.env' ./console.log + sed -rn 's/[ ]+ReportPortal Launch UUID: ([^\\r\\n]+)/LAUNCH_UUID=\1/ w launch.env' ./console.log ``` Some explanations here: @@ -346,7 +346,7 @@ since version 5.2.0: `rp_launch_uuid_print` and `rp_launch_uuid_print_output`. You can put them into your `pytest.ini` file. For this example, we just need one of them: `rp_launch_uuid_print = True`. It will output a line like this into the console: -`Report Portal Launch UUID: 61ce1c26-842a-4bde-9abe-a4696e31d626`. +`ReportPortal Launch UUID: 61ce1c26-842a-4bde-9abe-a4696e31d626`. Next, we need to save this UUID to an environment variable which we later will use in a separate stage in polling ReportPortal API. GitLab allows this with [dotenv @@ -364,7 +364,7 @@ test: script: - pytest -sv --reportportal -m "not command_skip" -n 2 -o "rp_api_key=$RP_DEMO_KEY" tests | tee ./console.log - > - sed -rn 's/Report Portal Launch UUID: ([^\\r\\n]+)/LAUNCH_UUID=\1/ w launch.env' ./console.log + sed -rn 's/ReportPortal Launch UUID: ([^\\r\\n]+)/LAUNCH_UUID=\1/ w launch.env' ./console.log ``` Some explanations here: From 7451a92aa3e8d71c3ced2050a60d45acfd27865f Mon Sep 17 00:00:00 2001 From: Vadzim Hushchanskou Date: Mon, 25 Sep 2023 22:50:26 +0300 Subject: [PATCH 15/17] Update IntegrationWithGitLabCI.md --- .../IntegrationWithCICD/IntegrationWithGitLabCI.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/quality-gates/IntegrationWithCICD/IntegrationWithGitLabCI.md b/docs/quality-gates/IntegrationWithCICD/IntegrationWithGitLabCI.md index edb01e2f9..9e2984dea 100644 --- a/docs/quality-gates/IntegrationWithCICD/IntegrationWithGitLabCI.md +++ b/docs/quality-gates/IntegrationWithCICD/IntegrationWithGitLabCI.md @@ -289,7 +289,7 @@ UUID, which is a unique Launch identifier. Every Java Agent has specific properties which control Launch UUID printing, since July 2023. To ensure that check if your Agent has -the `com.epam.reportportal:client-java` library dependency of version 5.1.21 or +the `com.epam.reportportal:client-java` library dependency of version 5.1.23 or late. It’s generally safe to add exclusion and put a newer version of the library to get new features. So these properties are: `rp.launch.uuid.print` and `rp.launch.uuid.print.output`. You can put them into your @@ -342,7 +342,7 @@ Some explanations here: ### Getting Launch UUID for Python tests ReportPortal pytest agent has specific properties which control Launch UUID printing, -since version 5.2.0: `rp_launch_uuid_print` and `rp_launch_uuid_print_output`. +since version 5.2.2: `rp_launch_uuid_print` and `rp_launch_uuid_print_output`. You can put them into your `pytest.ini` file. For this example, we just need one of them: `rp_launch_uuid_print = True`. It will output a line like this into the console: From 05185a387b9c9223aefaf2cf4f7a023aabb10ea5 Mon Sep 17 00:00:00 2001 From: Dmitriy Gumeniuk Date: Tue, 26 Sep 2023 16:12:07 -0400 Subject: [PATCH 16/17] fix import script line --- docs/log-data-in-reportportal/ImportDataToReportPortal.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/log-data-in-reportportal/ImportDataToReportPortal.mdx b/docs/log-data-in-reportportal/ImportDataToReportPortal.mdx index 5128429d0..db12a1e53 100644 --- a/docs/log-data-in-reportportal/ImportDataToReportPortal.mdx +++ b/docs/log-data-in-reportportal/ImportDataToReportPortal.mdx @@ -57,7 +57,7 @@ Here's an example of a request to the endpoint: ```yaml curl -X 'POST' \ - 'http://localhost:8585/api/v1/testProject/launch/import?attributeKey=someKey&attributeValue=someValue&description=someDescription&launchName=someName&skippedIsNotIssue=true' + 'http://localhost:8585/api/v1/testProject/launch/import?attributeKey=someKey&attributeValue=someValue&description=someDescription&launchName=someName&skippedIsNotIssue=true' \ -F 'file=@Launch.zip;type=application/x-zip-compressed' ``` From 4d413c5efb358b5c630dafdb1880ff10a22a5c94 Mon Sep 17 00:00:00 2001 From: Yuliya_Prihodko Date: Wed, 27 Sep 2023 10:14:03 +0300 Subject: [PATCH 17/17] Fix link for Atlassian Jira Server --- docs/releases/Version5.0.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/releases/Version5.0.0.md b/docs/releases/Version5.0.0.md index 6b45139f4..bf4917fc2 100644 --- a/docs/releases/Version5.0.0.md +++ b/docs/releases/Version5.0.0.md @@ -26,7 +26,7 @@ Jira, Rally, SauceLabs integration now will work through the plugin functionalit Read more [here](/plugins/ManagePlugins#upload-plugin). Available plugins to download: -- [Jira](/plugins/JiraServer) +- [Jira](/plugins/AtlassianJiraServer) - [Rally](/plugins/Rally) - [SauceLabs](/plugins/SauceLabs) ## Brand new features