diff --git a/docs/FAQ/index.md b/docs/FAQ/index.md index f20c32dafd..3d00ccff10 100644 --- a/docs/FAQ/index.md +++ b/docs/FAQ/index.md @@ -77,7 +77,7 @@ The initial steps involve installing and configuring the tool. [Installation ste #### 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/). +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. #### 9. What type of license does ReportPortal use? @@ -85,9 +85,8 @@ ReportPortal is licensed under Apache v2.0, which means it’s free to use, come #### 10. Does ReportPortal have any paid features? -We offer two premium features: +We offer the following premium feature: -* [Quality Gates](/quality-gates/) – a set of predefined criteria that must be met for a test run to be considered successful. * [SCIM Server](/features/SCIMServerFeature) – helps automate user management by syncing users and their access rights between your identity provider and ReportPortal. #### 11. Does ReportPortal use AI? diff --git a/docs/analysis/UniqueErrorAnalysis.mdx b/docs/analysis/UniqueErrorAnalysis.mdx index 6b068bfc3a..426f5b4faa 100644 --- a/docs/analysis/UniqueErrorAnalysis.mdx +++ b/docs/analysis/UniqueErrorAnalysis.mdx @@ -23,7 +23,7 @@ Thanks to the Unique Error analysis functionality, ReportPortal got the followin 1. A list of unique errors for the launch, with grouping. 2. Easier test results analysis. 3. Machine learning (ML) suggestions for groups of tests. -4. The [‘New Errors’](/quality-gates/QualityRulesConfiguration/#new-errors-in-the-run) Quality Gates rule. + ## How to run Unique Error analysis @@ -118,15 +118,7 @@ We have 2 errors with identical text, but the difference is numeric value in the -## How to extend Unique Error analysis - -Unique Error analysis functionality can be extended by the [ReportPortal premium feature](https://reportportal.io/pricing/saas) – [Quality Gates](/quality-gates/). - -If you have Quality Gate plugin installed, you can create Quality Gate for the launch with the 'New Errors' rule. This rule helps identify any new unique errors in the current launch by comparing them to another specified launch. - -If there is Quality Gate for the launch with the 'New Errors' rule, the 'ALL UNIQUE ERRORS' dropdown is visible and enabled. The available options are: All, New Errors and Known Errors. - If there is no Quality Gate for the launch with the 'New Errors' rule, the 'ALL UNIQUE ERRORS' dropdown is visible but disabled. A tooltip appears on hover for the disabled state: 'No Quality Gate with 'New Error' rule for the launch.' diff --git a/docs/configuration/ProjectSettings.mdx b/docs/configuration/ProjectSettings.mdx index 21f6bb2f21..2adc862419 100644 --- a/docs/configuration/ProjectSettings.mdx +++ b/docs/configuration/ProjectSettings.mdx @@ -19,7 +19,7 @@ To go to the project settings page, click the "Project Settings" icon in the lef The project configuration page will be opened. -The project settings are divided into following tabs: "General", "Integrations", "Notifications", "Defect Types", "Analyzer", "Pattern Analysis", "Demo Data" and "Quality Gates" (if you have our [premium feature](/quality-gates)). +The project settings are divided into following tabs: "General", "Integrations", "Notifications", "Defect Types", "Analyzer", "Pattern Analysis" and "Demo Data". ## General settings diff --git a/docs/intro.md b/docs/intro.md index 8c2cedeb04..fbde7561c8 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -12,7 +12,7 @@ ReportPortal is a TestOps service, that provides increased capabilities to speed ReportPortal is a great addition to Continuous Integration and Continuous Testing process. -ReportPortal is distributed under the Apache v2.0 license, and it is free to use and modify, even for commercial purposes. We offer two paid premium features – [Quality Gates](/quality-gates) and [SCIM Server feature](/features/SCIMServerFeature). +ReportPortal is distributed under the Apache v2.0 license, and it is free to use and modify, even for commercial purposes. We offer a paid premium feature – [SCIM Server feature](/features/SCIMServerFeature). If a company is interested in our services, we can provide support hours to deploy, integrate, configure, or customize the tool, as well as [SaaS options](https://reportportal.io/pricing/saas). diff --git a/docs/plugins/other/index.md b/docs/plugins/other/index.md index 271c152b8d..3803651f01 100644 --- a/docs/plugins/other/index.md +++ b/docs/plugins/other/index.md @@ -11,8 +11,6 @@ The [Sauce Labs](/plugins/other/SauceLabs) plugin connects ReportPortal with Sau The [Test Executions](/test-executions/) plugin introduces a refreshed approach to exploring and managing test results in ReportPortal. Instead of focusing on individual launches, it displays all test cases in a unified, easily searchable list. Users can apply multi-level filters, adjust the view to match their workflow, and analyze execution details with greater precision. This feature simplifies navigation across large datasets, enhances visibility into test progress, and supports more efficient decision-making during the testing process. -The [Quality Gates](/quality-gates/) plugin automates quality control in continuous testing pipelines, helping teams accelerate release cycles and ensure product reliability. It allows users to define customizable quality rules directly in ReportPortal and automatically evaluates each CI/CD build against them. Once a test run is completed, ReportPortal sends instant feedback to the CI/CD system, indicating whether the build meets predefined criteria or should be stopped for review. - import DocCardList from '@theme/DocCardList'; diff --git a/docs/releases/archived-releases/Version23.2.md b/docs/releases/archived-releases/Version23.2.md index ba90f3b04b..456cb9a5cd 100644 --- a/docs/releases/archived-releases/Version23.2.md +++ b/docs/releases/archived-releases/Version23.2.md @@ -37,7 +37,7 @@ Please note that Features 3 and 4 are configurable, giving you the flexibility t You can now generate as many API Keys as you need. You also have the ability to keep track of the creation date of API Keys and revoke any that are unused. Old tokens will still continue to function. Additionally, easy identification of the purpose of API Keys is facilitated through the use of prefixes. -- **[Gitlab CI integration](/quality-gates/IntegrationWithCICD/IntegrationWithGitLabCI) Workaround:** +- **Gitlab CI integration Workaround:** ## 2. Small updates: diff --git a/docs/terms-and-conditions/PremiumFeatures.md b/docs/terms-and-conditions/PremiumFeatures.md index af7d55b301..05d2727b5f 100644 --- a/docs/terms-and-conditions/PremiumFeatures.md +++ b/docs/terms-and-conditions/PremiumFeatures.md @@ -13,6 +13,5 @@ Our Premium Features have been meticulously designed and developed with large-sc We invite you to explore our Premium Features, understanding their objectives and benefits in detail on our documentation page. We are confident that you'll find the value they add to be well worth the investment. As always, we're here to answer any questions and assist you in getting the most out of your ReportPortal experience. **Available Premium Features:** - - [**Quality Gates**](/quality-gates) - [**SCIM Server feature**](/features/SCIMServerFeature) - [**Test Executions**](/features/TestExecutions) diff --git a/docs/tutorial/index.mdx b/docs/tutorial/index.mdx index 4c1dd1bbb4..d4ad3b4305 100644 --- a/docs/tutorial/index.mdx +++ b/docs/tutorial/index.mdx @@ -204,24 +204,6 @@ In this way, you see the historical trend of the causes of falls. -## How to make automated test results part of my pipeline - -ReportPortal supports Continuous Testing with built-in functionality – [Quality Gates](/quality-gates) (premium feature). Quality Gate is a set of predefined criteria that should be met in order launch run to be considered as successful. - -Firstly, navigate to Project settings and create a Quality Gate with the rules which will be applied to a specific launch that matches the conditions. - - - - - - - - - - - -Finally, configure [integration with CI/CD](/quality-gates/IntegrationWithCICD) to send results to the pipeline. - ## How to use nested steps and attributes in ReportPortal Usually, you see the results of automation as a carpet of error logs, and only an automation engineer can understand what is happening inside. Adding nested steps ([Java](https://github.com/reportportal/client-java/wiki/Nested-steps), [Python](https://github.com/reportportal/client-Python/wiki/Nested-steps)) allows applying a one-time change in the test code to make a logical grouping of steps and make these error logs more readable for the whole team. diff --git a/docusaurus.config.js b/docusaurus.config.js index d786b1bc2d..95fa991a0f 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -44,6 +44,18 @@ const config = { routeBasePath: '/', sidebarPath: require.resolve('./sidebars.js'), editUrl: 'https://github.com/reportportal/docs/blob/develop', + lastVersion: '26.2-organizations', + onlyIncludeVersions: ['26.2-organizations', '26.1'], + versions: { + '26.2-organizations': { + label: '26.2-organizations', + banner: 'none', + }, + '26.1': { + label: '26.1', + banner: 'none', + }, + }, }, blog: false, theme: { @@ -87,6 +99,15 @@ const config = { to: 'https://developers.reportportal.io/api-docs/', target: '_self', }, + { + label: 'Releases', + position: 'left', + target: '_self', + }, + { + type: 'docsVersionDropdown', + position: 'right', + }, { href: 'https://reportportal.io/', label: 'ReportPortal.io', @@ -196,11 +217,8 @@ const config = { appId: 'CRZVCU6DFV', apiKey: 'd8b54d5902dab4d50e4fba6321fb01a7', indexName: 'reportportal', - replaceSearchResultPathname: { - from: '/docs/', - to: baseUrl, // To suggest URLs correctly for local and dev deployment - }, searchPagePath: 'search', + contextualSearch: false, }, }), @@ -254,10 +272,6 @@ const config = { to: '/external-integrations', from: '/category/external-integrations', }, - { - to: '/quality-gates', - from: '/category/quality-gates', - }, { to: '/case-studies', from: '/category/case-studies', diff --git a/package-lock.json b/package-lock.json index 8e0e4f282c..195cd44fab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,9 +9,9 @@ "version": "2.0.0", "license": "Apache-2.0", "dependencies": { - "@docusaurus/core": "^3.6.0", - "@docusaurus/plugin-client-redirects": "^3.6.0", - "@docusaurus/preset-classic": "^3.6.0", + "@docusaurus/core": "^3.9.2", + "@docusaurus/plugin-client-redirects": "^3.9.2", + "@docusaurus/preset-classic": "^3.9.2", "@mdx-js/react": "3.0.0", "clsx": "^2.0.0", "dotenv": "^16.3.1", @@ -22,9 +22,9 @@ "yet-another-react-lightbox": "^3.15.6" }, "devDependencies": { - "@docusaurus/eslint-plugin": "^3.6.0", - "@docusaurus/module-type-aliases": "^3.6.0", - "@docusaurus/types": "^3.3.2", + "@docusaurus/eslint-plugin": "^3.9.2", + "@docusaurus/module-type-aliases": "^3.9.2", + "@docusaurus/types": "^3.9.2", "docusaurus-mdx-checker": "^3.0.0", "eslint": "^8.56.0", "eslint-config-airbnb": "^19.0.4", @@ -44,240 +44,120 @@ "version": "1.2.6", "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "devOptional": true, + "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/@algolia/autocomplete-core": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz", - "integrity": "sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==", - "license": "MIT", - "dependencies": { - "@algolia/autocomplete-plugin-algolia-insights": "1.9.3", - "@algolia/autocomplete-shared": "1.9.3" - } - }, - "node_modules/@algolia/autocomplete-plugin-algolia-insights": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz", - "integrity": "sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==", - "license": "MIT", - "dependencies": { - "@algolia/autocomplete-shared": "1.9.3" - }, - "peerDependencies": { - "search-insights": ">= 1 < 3" - } - }, - "node_modules/@algolia/autocomplete-preset-algolia": { - "version": "1.17.6", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.6.tgz", - "integrity": "sha512-Cvg5JENdSCMuClwhJ1ON1/jSuojaYMiUW2KePm18IkdCzPJj/NXojaOxw58RFtQFpJgfVW8h2E8mEoDtLlMdeA==", + "node_modules/@algolia/abtesting": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.13.0.tgz", + "integrity": "sha512-Zrqam12iorp3FjiKMXSTpedGYznZ3hTEOAr2oCxI8tbF8bS1kQHClyDYNq/eV0ewMNLyFkgZVWjaS+8spsOYiQ==", "license": "MIT", "dependencies": { - "@algolia/autocomplete-shared": "1.17.6" + "@algolia/client-common": "5.47.0", + "@algolia/requester-browser-xhr": "5.47.0", + "@algolia/requester-fetch": "5.47.0", + "@algolia/requester-node-http": "5.47.0" }, - "peerDependencies": { - "@algolia/client-search": ">= 4.9.1 < 6", - "algoliasearch": ">= 4.9.1 < 6" - } - }, - "node_modules/@algolia/autocomplete-preset-algolia/node_modules/@algolia/autocomplete-shared": { - "version": "1.17.6", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.6.tgz", - "integrity": "sha512-aq/3V9E00Tw2GC/PqgyPGXtqJUlVc17v4cn1EUhSc+O/4zd04Uwb3UmPm8KDaYQQOrkt1lwvCj2vG2wRE5IKhw==", - "license": "MIT", - "peerDependencies": { - "@algolia/client-search": ">= 4.9.1 < 6", - "algoliasearch": ">= 4.9.1 < 6" - } - }, - "node_modules/@algolia/autocomplete-shared": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz", - "integrity": "sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==", - "license": "MIT", - "peerDependencies": { - "@algolia/client-search": ">= 4.9.1 < 6", - "algoliasearch": ">= 4.9.1 < 6" - } - }, - "node_modules/@algolia/cache-browser-local-storage": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.24.0.tgz", - "integrity": "sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww==", - "license": "MIT", - "dependencies": { - "@algolia/cache-common": "4.24.0" - } - }, - "node_modules/@algolia/cache-common": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.24.0.tgz", - "integrity": "sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g==", - "license": "MIT" - }, - "node_modules/@algolia/cache-in-memory": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.24.0.tgz", - "integrity": "sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w==", - "license": "MIT", - "dependencies": { - "@algolia/cache-common": "4.24.0" + "engines": { + "node": ">= 14.0.0" } }, "node_modules/@algolia/client-abtesting": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.12.0.tgz", - "integrity": "sha512-hx4eVydkm3yrFCFxmcBtSzI/ykt0cZ6sDWch+v3JTgKpD2WtosMJU3Upv1AjQ4B6COSHCOWEX3vfFxW6OoH6aA==", + "version": "5.47.0", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.47.0.tgz", + "integrity": "sha512-aOpsdlgS9xTEvz47+nXmw8m0NtUiQbvGWNuSEb7fA46iPL5FxOmOUZkh8PREBJpZ0/H8fclSc7BMJCVr+Dn72w==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.12.0", - "@algolia/requester-browser-xhr": "5.12.0", - "@algolia/requester-fetch": "5.12.0", - "@algolia/requester-node-http": "5.12.0" + "@algolia/client-common": "5.47.0", + "@algolia/requester-browser-xhr": "5.47.0", + "@algolia/requester-fetch": "5.47.0", + "@algolia/requester-node-http": "5.47.0" }, "engines": { "node": ">= 14.0.0" } }, - "node_modules/@algolia/client-account": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.24.0.tgz", - "integrity": "sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA==", - "license": "MIT", - "dependencies": { - "@algolia/client-common": "4.24.0", - "@algolia/client-search": "4.24.0", - "@algolia/transporter": "4.24.0" - } - }, - "node_modules/@algolia/client-account/node_modules/@algolia/client-common": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", - "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", - "license": "MIT", - "dependencies": { - "@algolia/requester-common": "4.24.0", - "@algolia/transporter": "4.24.0" - } - }, - "node_modules/@algolia/client-account/node_modules/@algolia/client-search": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz", - "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==", - "license": "MIT", - "dependencies": { - "@algolia/client-common": "4.24.0", - "@algolia/requester-common": "4.24.0", - "@algolia/transporter": "4.24.0" - } - }, "node_modules/@algolia/client-analytics": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.24.0.tgz", - "integrity": "sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg==", - "license": "MIT", - "dependencies": { - "@algolia/client-common": "4.24.0", - "@algolia/client-search": "4.24.0", - "@algolia/requester-common": "4.24.0", - "@algolia/transporter": "4.24.0" - } - }, - "node_modules/@algolia/client-analytics/node_modules/@algolia/client-common": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", - "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", - "license": "MIT", - "dependencies": { - "@algolia/requester-common": "4.24.0", - "@algolia/transporter": "4.24.0" - } - }, - "node_modules/@algolia/client-analytics/node_modules/@algolia/client-search": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz", - "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==", + "version": "5.47.0", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.47.0.tgz", + "integrity": "sha512-EcF4w7IvIk1sowrO7Pdy4Ako7x/S8+nuCgdk6En+u5jsaNQM4rTT09zjBPA+WQphXkA2mLrsMwge96rf6i7Mow==", "license": "MIT", "dependencies": { - "@algolia/client-common": "4.24.0", - "@algolia/requester-common": "4.24.0", - "@algolia/transporter": "4.24.0" + "@algolia/client-common": "5.47.0", + "@algolia/requester-browser-xhr": "5.47.0", + "@algolia/requester-fetch": "5.47.0", + "@algolia/requester-node-http": "5.47.0" + }, + "engines": { + "node": ">= 14.0.0" } }, "node_modules/@algolia/client-common": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.12.0.tgz", - "integrity": "sha512-od3WmO8qxyfNhKc+K3D17tvun3IMs/xMNmxCG9MiElAkYVbPPTRUYMkRneCpmJyQI0hNx2/EA4kZgzVfQjO86Q==", + "version": "5.47.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.47.0.tgz", + "integrity": "sha512-Wzg5Me2FqgRDj0lFuPWFK05UOWccSMsIBL2YqmTmaOzxVlLZ+oUqvKbsUSOE5ud8Fo1JU7JyiLmEXBtgDKzTwg==", "license": "MIT", "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-insights": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.12.0.tgz", - "integrity": "sha512-8alajmsYUd+7vfX5lpRNdxqv3Xx9clIHLUItyQK0Z6gwGMbVEFe6YYhgDtwslMAP0y6b0WeJEIZJMLgT7VYpRw==", + "version": "5.47.0", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.47.0.tgz", + "integrity": "sha512-Ci+cn/FDIsDxSKMRBEiyKrqybblbk8xugo6ujDN1GSTv9RIZxwxqZYuHfdLnLEwLlX7GB8pqVyqrUSlRnR+sJA==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.12.0", - "@algolia/requester-browser-xhr": "5.12.0", - "@algolia/requester-fetch": "5.12.0", - "@algolia/requester-node-http": "5.12.0" + "@algolia/client-common": "5.47.0", + "@algolia/requester-browser-xhr": "5.47.0", + "@algolia/requester-fetch": "5.47.0", + "@algolia/requester-node-http": "5.47.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-personalization": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.24.0.tgz", - "integrity": "sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w==", - "license": "MIT", - "dependencies": { - "@algolia/client-common": "4.24.0", - "@algolia/requester-common": "4.24.0", - "@algolia/transporter": "4.24.0" - } - }, - "node_modules/@algolia/client-personalization/node_modules/@algolia/client-common": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", - "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", + "version": "5.47.0", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.47.0.tgz", + "integrity": "sha512-gsLnHPZmWcX0T3IigkDL2imCNtsQ7dR5xfnwiFsb+uTHCuYQt+IwSNjsd8tok6HLGLzZrliSaXtB5mfGBtYZvQ==", "license": "MIT", "dependencies": { - "@algolia/requester-common": "4.24.0", - "@algolia/transporter": "4.24.0" + "@algolia/client-common": "5.47.0", + "@algolia/requester-browser-xhr": "5.47.0", + "@algolia/requester-fetch": "5.47.0", + "@algolia/requester-node-http": "5.47.0" + }, + "engines": { + "node": ">= 14.0.0" } }, "node_modules/@algolia/client-query-suggestions": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.12.0.tgz", - "integrity": "sha512-Q5CszzGWfxbIDs9DJ/QJsL7bP6h+lJMg27KxieEnI9KGCu0Jt5iFA3GkREkgRZxRdzlHbZKkrIzhtHVbSHw/rg==", + "version": "5.47.0", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.47.0.tgz", + "integrity": "sha512-PDOw0s8WSlR2fWFjPQldEpmm/gAoUgLigvC3k/jCSi/DzigdGX6RdC0Gh1RR1P8Cbk5KOWYDuL3TNzdYwkfDyA==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.12.0", - "@algolia/requester-browser-xhr": "5.12.0", - "@algolia/requester-fetch": "5.12.0", - "@algolia/requester-node-http": "5.12.0" + "@algolia/client-common": "5.47.0", + "@algolia/requester-browser-xhr": "5.47.0", + "@algolia/requester-fetch": "5.47.0", + "@algolia/requester-node-http": "5.47.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-search": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.12.0.tgz", - "integrity": "sha512-R3qzEytgVLHOGNri+bpta6NtTt7YtkvUe/QBcAmMDjW4Jk1P0eBYIPfvnzIPbINRsLxIq9fZs9uAYBgsrts4Zg==", + "version": "5.47.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.47.0.tgz", + "integrity": "sha512-b5hlU69CuhnS2Rqgsz7uSW0t4VqrLMLTPbUpEl0QVz56rsSwr1Sugyogrjb493sWDA+XU1FU5m9eB8uH7MoI0g==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.12.0", - "@algolia/requester-browser-xhr": "5.12.0", - "@algolia/requester-fetch": "5.12.0", - "@algolia/requester-node-http": "5.12.0" + "@algolia/client-common": "5.47.0", + "@algolia/requester-browser-xhr": "5.47.0", + "@algolia/requester-fetch": "5.47.0", + "@algolia/requester-node-http": "5.47.0" }, "engines": { "node": ">= 14.0.0" @@ -290,161 +170,86 @@ "license": "MIT" }, "node_modules/@algolia/ingestion": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.12.0.tgz", - "integrity": "sha512-zpHo6qhR22tL8FsdSI4DvEraPDi/019HmMrCFB/TUX98yzh5ooAU7sNW0qPL1I7+S++VbBmNzJOEU9VI8tEC8A==", + "version": "1.47.0", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.47.0.tgz", + "integrity": "sha512-WvwwXp5+LqIGISK3zHRApLT1xkuEk320/EGeD7uYy+K8WwDd5OjXnhjuXRhYr1685KnkvWkq1rQ/ihCJjOfHpQ==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.12.0", - "@algolia/requester-browser-xhr": "5.12.0", - "@algolia/requester-fetch": "5.12.0", - "@algolia/requester-node-http": "5.12.0" + "@algolia/client-common": "5.47.0", + "@algolia/requester-browser-xhr": "5.47.0", + "@algolia/requester-fetch": "5.47.0", + "@algolia/requester-node-http": "5.47.0" }, "engines": { "node": ">= 14.0.0" } }, - "node_modules/@algolia/logger-common": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.24.0.tgz", - "integrity": "sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA==", - "license": "MIT" - }, - "node_modules/@algolia/logger-console": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.24.0.tgz", - "integrity": "sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg==", - "license": "MIT", - "dependencies": { - "@algolia/logger-common": "4.24.0" - } - }, "node_modules/@algolia/monitoring": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.12.0.tgz", - "integrity": "sha512-i2AJZED/zf4uhxezAJUhMKoL5QoepCBp2ynOYol0N76+TSoohaMADdPnWCqOULF4RzOwrG8wWynAwBlXsAI1RQ==", + "version": "1.47.0", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.47.0.tgz", + "integrity": "sha512-j2EUFKAlzM0TE4GRfkDE3IDfkVeJdcbBANWzK16Tb3RHz87WuDfQ9oeEW6XiRE1/bEkq2xf4MvZesvSeQrZRDA==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.12.0", - "@algolia/requester-browser-xhr": "5.12.0", - "@algolia/requester-fetch": "5.12.0", - "@algolia/requester-node-http": "5.12.0" + "@algolia/client-common": "5.47.0", + "@algolia/requester-browser-xhr": "5.47.0", + "@algolia/requester-fetch": "5.47.0", + "@algolia/requester-node-http": "5.47.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/recommend": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-4.24.0.tgz", - "integrity": "sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw==", - "license": "MIT", - "dependencies": { - "@algolia/cache-browser-local-storage": "4.24.0", - "@algolia/cache-common": "4.24.0", - "@algolia/cache-in-memory": "4.24.0", - "@algolia/client-common": "4.24.0", - "@algolia/client-search": "4.24.0", - "@algolia/logger-common": "4.24.0", - "@algolia/logger-console": "4.24.0", - "@algolia/requester-browser-xhr": "4.24.0", - "@algolia/requester-common": "4.24.0", - "@algolia/requester-node-http": "4.24.0", - "@algolia/transporter": "4.24.0" - } - }, - "node_modules/@algolia/recommend/node_modules/@algolia/client-common": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", - "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", - "license": "MIT", - "dependencies": { - "@algolia/requester-common": "4.24.0", - "@algolia/transporter": "4.24.0" - } - }, - "node_modules/@algolia/recommend/node_modules/@algolia/client-search": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz", - "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==", - "license": "MIT", - "dependencies": { - "@algolia/client-common": "4.24.0", - "@algolia/requester-common": "4.24.0", - "@algolia/transporter": "4.24.0" - } - }, - "node_modules/@algolia/recommend/node_modules/@algolia/requester-browser-xhr": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.24.0.tgz", - "integrity": "sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==", - "license": "MIT", - "dependencies": { - "@algolia/requester-common": "4.24.0" - } - }, - "node_modules/@algolia/recommend/node_modules/@algolia/requester-node-http": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.24.0.tgz", - "integrity": "sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==", + "version": "5.47.0", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.47.0.tgz", + "integrity": "sha512-+kTSE4aQ1ARj2feXyN+DMq0CIDHJwZw1kpxIunedkmpWUg8k3TzFwWsMCzJVkF2nu1UcFbl7xsIURz3Q3XwOXA==", "license": "MIT", "dependencies": { - "@algolia/requester-common": "4.24.0" + "@algolia/client-common": "5.47.0", + "@algolia/requester-browser-xhr": "5.47.0", + "@algolia/requester-fetch": "5.47.0", + "@algolia/requester-node-http": "5.47.0" + }, + "engines": { + "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-browser-xhr": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.12.0.tgz", - "integrity": "sha512-KxwleraFuVoEGCoeW6Y1RAEbgBMS7SavqeyzWdtkJc6mXeCOJXn1iZitb8Tyn2FcpMNUKlSm0adrUTt7G47+Ow==", + "version": "5.47.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.47.0.tgz", + "integrity": "sha512-Ja+zPoeSA2SDowPwCNRbm5Q2mzDvVV8oqxCQ4m6SNmbKmPlCfe30zPfrt9ho3kBHnsg37pGucwOedRIOIklCHw==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.12.0" + "@algolia/client-common": "5.47.0" }, "engines": { "node": ">= 14.0.0" } }, - "node_modules/@algolia/requester-common": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.24.0.tgz", - "integrity": "sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA==", - "license": "MIT" - }, "node_modules/@algolia/requester-fetch": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.12.0.tgz", - "integrity": "sha512-FuDZXUGU1pAg2HCnrt8+q1VGHKChV/LhvjvZlLOT7e56GJie6p+EuLu4/hMKPOVuQQ8XXtrTHKIU3Lw+7O5/bQ==", + "version": "5.47.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.47.0.tgz", + "integrity": "sha512-N6nOvLbaR4Ge+oVm7T4W/ea1PqcSbsHR4O58FJ31XtZjFPtOyxmnhgCmGCzP9hsJI6+x0yxJjkW5BMK/XI8OvA==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.12.0" + "@algolia/client-common": "5.47.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-node-http": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.12.0.tgz", - "integrity": "sha512-ncDDY7CxZhMs6LIoPl+vHFQceIBhYPY5EfuGF1V7beO0U38xfsCYEyutEFB2kRzf4D9Gqppn3iWX71sNtrKcuw==", + "version": "5.47.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.47.0.tgz", + "integrity": "sha512-z1oyLq5/UVkohVXNDEY70mJbT/sv/t6HYtCvCwNrOri6pxBJDomP9R83KOlwcat+xqBQEdJHjbrPh36f1avmZA==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.12.0" + "@algolia/client-common": "5.47.0" }, "engines": { "node": ">= 14.0.0" } }, - "node_modules/@algolia/transporter": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.24.0.tgz", - "integrity": "sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==", - "license": "MIT", - "dependencies": { - "@algolia/cache-common": "4.24.0", - "@algolia/logger-common": "4.24.0", - "@algolia/requester-common": "4.24.0" - } - }, "node_modules/@ampproject/remapping": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", @@ -458,23 +263,23 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", + "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz", - "integrity": "sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -519,15 +324,15 @@ } }, "node_modules/@babel/generator": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz", - "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.0.tgz", + "integrity": "sha512-vSH118/wwM/pLR38g/Sgk05sNtro6TlTJKuiMXDaZqPUfjTFcudpCOt00IhOfj+1BFAX+UFAlzCU+6WXr3GLFQ==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.2", - "@babel/types": "^7.26.0", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" }, "engines": { @@ -560,13 +365,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", - "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.25.9", - "@babel/helper-validator-option": "^7.25.9", + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -640,21 +445,30 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", - "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.6.tgz", + "integrity": "sha512-mOAsxeeKkUKayvZR3HeTYD/fICpCPLJrU5ZjelT/PA6WHtNDBOE436YiaEUvHN454bRM3CebhDsIpieCc4texA==", "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "debug": "^4.4.3", "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" + "resolve": "^1.22.11" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-member-expression-to-functions": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", @@ -669,13 +483,13 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", - "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -711,9 +525,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", - "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -780,27 +594,27 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", - "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -834,12 +648,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz", - "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", "license": "MIT", "dependencies": { - "@babel/types": "^7.26.0" + "@babel/types": "^7.29.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -942,6 +756,7 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1755,16 +1570,16 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.9.tgz", - "integrity": "sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.0.tgz", + "integrity": "sha512-jlaRT5dJtMaMCV6fAuLbsQMSwz/QkvaHOHOSXRitGGwSpR1blCY4KUKoyP2tYO8vJcqYe8cEj96cqSztv3uF9w==", "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.6", - "babel-plugin-polyfill-regenerator": "^0.6.1", + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "babel-plugin-polyfill-corejs2": "^0.4.14", + "babel-plugin-polyfill-corejs3": "^0.13.0", + "babel-plugin-polyfill-regenerator": "^0.6.5", "semver": "^6.3.1" }, "engines": { @@ -1774,6 +1589,19 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-runtime/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -2097,58 +1925,57 @@ } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.26.0.tgz", - "integrity": "sha512-YXHu5lN8kJCb1LOb9PgV6pvak43X2h4HvRApcN5SdWeaItQOzfn1hgP6jasD6KWQyJDBxrVmA9o9OivlnNJK/w==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.29.0.tgz", + "integrity": "sha512-TgUkdp71C9pIbBcHudc+gXZnihEDOjUAmXO1VO4HHGES7QLZcShR0stfKIxLSNIYx2fqhmJChOjm/wkF8wv4gA==", "license": "MIT", "dependencies": { - "core-js-pure": "^3.30.2", - "regenerator-runtime": "^0.14.0" + "core-js-pure": "^3.48.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", - "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.25.9", - "@babel/parser": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz", - "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.25.9", - "@babel/generator": "^7.25.9", - "@babel/parser": "^7.25.9", - "@babel/template": "^7.25.9", - "@babel/types": "^7.25.9", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/types": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", - "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -2163,129 +1990,1396 @@ "node": ">=0.1.90" } }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "node_modules/@csstools/cascade-layer-name-parser": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-2.0.5.tgz", + "integrity": "sha512-p1ko5eHgV+MgXFVa4STPKpvPxr6ReS8oS2jzTukjR74i5zJNyWO1ZM1m8YKBXnzDKWfBN1ztLYlHxbVemDD88A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "license": "MIT", "engines": { - "node": ">=10.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" } }, - "node_modules/@docsearch/css": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.6.3.tgz", - "integrity": "sha512-3uvbg8E7rhqE1C4oBAK3tGlS2qfhi9zpfZgH/yjDPF73vd9B41urVIKujF4rczcF4E3qs34SedhehiDJ4UdNBA==", - "license": "MIT" + "node_modules/@csstools/color-helpers": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", + "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + } }, - "node_modules/@docsearch/react": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.6.3.tgz", - "integrity": "sha512-2munr4uBuZq1PG+Ge+F+ldIdxb3Wi8OmEIv2tQQb4RvEvvph+xtQkxwHzVIEnt5s+HecwucuXwB+3JhcZboFLg==", + "node_modules/@csstools/css-calc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", + "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "license": "MIT", - "dependencies": { - "@algolia/autocomplete-core": "1.9.3", - "@algolia/autocomplete-preset-algolia": "1.17.6", - "@docsearch/css": "3.6.3", - "algoliasearch": "^5.11.0" + "engines": { + "node": ">=18" }, "peerDependencies": { - "@types/react": ">= 16.8.0 < 19.0.0", - "react": ">= 16.8.0 < 19.0.0", - "react-dom": ">= 16.8.0 < 19.0.0", - "search-insights": ">= 1 < 3" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "react": { - "optional": true - }, - "react-dom": { - "optional": true - }, - "search-insights": { - "optional": true - } + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" } }, - "node_modules/@docsearch/react/node_modules/@algolia/client-analytics": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.12.0.tgz", - "integrity": "sha512-EpTsSv6IW8maCfXCDIptgT7+mQJj7pImEkcNUnxR8yUKAHzTogTXv9yGm2WXOZFVuwstd2i0sImhQ1Vz8RH/hA==", + "node_modules/@csstools/css-color-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", + "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "license": "MIT", "dependencies": { - "@algolia/client-common": "5.12.0", - "@algolia/requester-browser-xhr": "5.12.0", - "@algolia/requester-fetch": "5.12.0", - "@algolia/requester-node-http": "5.12.0" + "@csstools/color-helpers": "^5.1.0", + "@csstools/css-calc": "^2.1.4" }, "engines": { - "node": ">= 14.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" } }, - "node_modules/@docsearch/react/node_modules/@algolia/client-personalization": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.12.0.tgz", - "integrity": "sha512-bUV9HtfkTBgpoVhxFrMkmVPG03ZN1Rtn51kiaEtukucdk3ggjR9Qu1YUfRSU2lFgxr9qJc8lTxwfvhjCeJRcqw==", + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", + "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "license": "MIT", - "dependencies": { - "@algolia/client-common": "5.12.0", - "@algolia/requester-browser-xhr": "5.12.0", - "@algolia/requester-fetch": "5.12.0", - "@algolia/requester-node-http": "5.12.0" - }, "engines": { - "node": ">= 14.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.4" } }, - "node_modules/@docsearch/react/node_modules/@algolia/recommend": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.12.0.tgz", - "integrity": "sha512-0jmZyKvYnB/Bj5c7WKsKedOUjnr0UtXm0LVFUdQrxXfqOqvWv9n6Vpr65UjdYG4Q49kRQxhlwtal9WJYrYymXg==", + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", + "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "license": "MIT", - "dependencies": { - "@algolia/client-common": "5.12.0", - "@algolia/requester-browser-xhr": "5.12.0", - "@algolia/requester-fetch": "5.12.0", - "@algolia/requester-node-http": "5.12.0" - }, "engines": { - "node": ">= 14.0.0" + "node": ">=18" } }, - "node_modules/@docsearch/react/node_modules/algoliasearch": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.12.0.tgz", - "integrity": "sha512-psGBRYdGgik8I6m28iAB8xpubvjEt7UQU+w5MAJUA2324WHiGoHap5BPkkjB14rMaXeRts6pmOsrVIglGyOVwg==", + "node_modules/@csstools/media-query-list-parser": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz", + "integrity": "sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "license": "MIT", - "dependencies": { - "@algolia/client-abtesting": "5.12.0", - "@algolia/client-analytics": "5.12.0", - "@algolia/client-common": "5.12.0", - "@algolia/client-insights": "5.12.0", - "@algolia/client-personalization": "5.12.0", - "@algolia/client-query-suggestions": "5.12.0", - "@algolia/client-search": "5.12.0", - "@algolia/ingestion": "1.12.0", - "@algolia/monitoring": "1.12.0", - "@algolia/recommend": "5.12.0", - "@algolia/requester-browser-xhr": "5.12.0", - "@algolia/requester-fetch": "5.12.0", - "@algolia/requester-node-http": "5.12.0" - }, "engines": { - "node": ">= 14.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" } }, - "node_modules/@docusaurus/babel": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/babel/-/babel-3.6.0.tgz", - "integrity": "sha512-7CsoQFiadoq7AHSUIQNkI/lGfg9AQ2ZBzsf9BqfZGXkHwWDy6twuohEaG0PgQv1npSRSAB2dioVxhRSErnqKNA==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.25.9", + "node_modules/@csstools/postcss-alpha-function": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-alpha-function/-/postcss-alpha-function-1.0.1.tgz", + "integrity": "sha512-isfLLwksH3yHkFXfCI2Gcaqg7wGGHZZwunoJzEZk0yKYIokgre6hYVFibKL3SYAoR1kBXova8LB+JoO5vZzi9w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-cascade-layers": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-5.0.2.tgz", + "integrity": "sha512-nWBE08nhO8uWl6kSAeCx4im7QfVko3zLrtgWZY4/bP87zrSPpSyN/3W3TDqz1jJuH+kbKOHXg5rJnK+ZVYcFFg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-cascade-layers/node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/@csstools/postcss-cascade-layers/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@csstools/postcss-color-function": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-4.0.12.tgz", + "integrity": "sha512-yx3cljQKRaSBc2hfh8rMZFZzChaFgwmO2JfFgFr1vMcF3C/uyy5I4RFIBOIWGq1D+XbKCG789CGkG6zzkLpagA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-color-function-display-p3-linear": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function-display-p3-linear/-/postcss-color-function-display-p3-linear-1.0.1.tgz", + "integrity": "sha512-E5qusdzhlmO1TztYzDIi8XPdPoYOjoTY6HBYBCYSj+Gn4gQRBlvjgPQXzfzuPQqt8EhkC/SzPKObg4Mbn8/xMg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-color-mix-function": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.12.tgz", + "integrity": "sha512-4STERZfCP5Jcs13P1U5pTvI9SkgLgfMUMhdXW8IlJWkzOOOqhZIjcNhWtNJZes2nkBDsIKJ0CJtFtuaZ00moag==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-color-mix-variadic-function-arguments": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-variadic-function-arguments/-/postcss-color-mix-variadic-function-arguments-1.0.2.tgz", + "integrity": "sha512-rM67Gp9lRAkTo+X31DUqMEq+iK+EFqsidfecmhrteErxJZb6tUoJBVQca1Vn1GpDql1s1rD1pKcuYzMsg7Z1KQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-content-alt-text": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.8.tgz", + "integrity": "sha512-9SfEW9QCxEpTlNMnpSqFaHyzsiRpZ5J5+KqCu1u5/eEJAWsMhzT40qf0FIbeeglEvrGRMdDzAxMIz3wqoGSb+Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-contrast-color-function": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-contrast-color-function/-/postcss-contrast-color-function-2.0.12.tgz", + "integrity": "sha512-YbwWckjK3qwKjeYz/CijgcS7WDUCtKTd8ShLztm3/i5dhh4NaqzsbYnhm4bjrpFpnLZ31jVcbK8YL77z3GBPzA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-exponential-functions": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-2.0.9.tgz", + "integrity": "sha512-abg2W/PI3HXwS/CZshSa79kNWNZHdJPMBXeZNyPQFbbj8sKO3jXxOt/wF7juJVjyDTc6JrvaUZYFcSBZBhaxjw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-font-format-keywords": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-4.0.0.tgz", + "integrity": "sha512-usBzw9aCRDvchpok6C+4TXC57btc4bJtmKQWOHQxOVKen1ZfVqBUuCZ/wuqdX5GHsD0NRSr9XTP+5ID1ZZQBXw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-gamut-mapping": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.11.tgz", + "integrity": "sha512-fCpCUgZNE2piVJKC76zFsgVW1apF6dpYsqGyH8SIeCcM4pTEsRTWTLCaJIMKFEundsCKwY1rwfhtrio04RJ4Dw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-gradients-interpolation-method": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.12.tgz", + "integrity": "sha512-jugzjwkUY0wtNrZlFeyXzimUL3hN4xMvoPnIXxoZqxDvjZRiSh+itgHcVUWzJ2VwD/VAMEgCLvtaJHX+4Vj3Ow==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-hwb-function": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.12.tgz", + "integrity": "sha512-mL/+88Z53KrE4JdePYFJAQWFrcADEqsLprExCM04GDNgHIztwFzj0Mbhd/yxMBngq0NIlz58VVxjt5abNs1VhA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-ic-unit": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-4.0.4.tgz", + "integrity": "sha512-yQ4VmossuOAql65sCPppVO1yfb7hDscf4GseF0VCA/DTDaBc0Wtf8MTqVPfjGYlT5+2buokG0Gp7y0atYZpwjg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-initial": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-initial/-/postcss-initial-2.0.1.tgz", + "integrity": "sha512-L1wLVMSAZ4wovznquK0xmC7QSctzO4D0Is590bxpGqhqjboLXYA16dWZpfwImkdOgACdQ9PqXsuRroW6qPlEsg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-5.0.3.tgz", + "integrity": "sha512-jS/TY4SpG4gszAtIg7Qnf3AS2pjcUM5SzxpApOrlndMeGhIbaTzWBzzP/IApXoNWEW7OhcjkRT48jnAUIFXhAQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class/node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@csstools/postcss-light-dark-function": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.11.tgz", + "integrity": "sha512-fNJcKXJdPM3Lyrbmgw2OBbaioU7yuKZtiXClf4sGdQttitijYlZMD5K7HrC/eF83VRWRrYq6OZ0Lx92leV2LFA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-float-and-clear": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-float-and-clear/-/postcss-logical-float-and-clear-3.0.0.tgz", + "integrity": "sha512-SEmaHMszwakI2rqKRJgE+8rpotFfne1ZS6bZqBoQIicFyV+xT1UF42eORPxJkVJVrH9C0ctUgwMSn3BLOIZldQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-overflow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overflow/-/postcss-logical-overflow-2.0.0.tgz", + "integrity": "sha512-spzR1MInxPuXKEX2csMamshR4LRaSZ3UXVaRGjeQxl70ySxOhMpP2252RAFsg8QyyBXBzuVOOdx1+bVO5bPIzA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-overscroll-behavior": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overscroll-behavior/-/postcss-logical-overscroll-behavior-2.0.0.tgz", + "integrity": "sha512-e/webMjoGOSYfqLunyzByZj5KKe5oyVg/YSbie99VEaSDE2kimFm0q1f6t/6Jo+VVCQ/jbe2Xy+uX+C4xzWs4w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-resize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-resize/-/postcss-logical-resize-3.0.0.tgz", + "integrity": "sha512-DFbHQOFW/+I+MY4Ycd/QN6Dg4Hcbb50elIJCfnwkRTCX05G11SwViI5BbBlg9iHRl4ytB7pmY5ieAFk3ws7yyg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-viewport-units": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-3.0.4.tgz", + "integrity": "sha512-q+eHV1haXA4w9xBwZLKjVKAWn3W2CMqmpNpZUk5kRprvSiBEGMgrNH3/sJZ8UA3JgyHaOt3jwT9uFa4wLX4EqQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-media-minmax": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-2.0.9.tgz", + "integrity": "sha512-af9Qw3uS3JhYLnCbqtZ9crTvvkR+0Se+bBqSr7ykAnl9yKhk6895z9rf+2F4dClIDJWxgn0iZZ1PSdkhrbs2ig==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/media-query-list-parser": "^4.0.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-media-queries-aspect-ratio-number-values": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-3.0.5.tgz", + "integrity": "sha512-zhAe31xaaXOY2Px8IYfoVTB3wglbJUVigGphFLj6exb7cjZRH9A6adyE22XfFK3P2PzwRk0VDeTJmaxpluyrDg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/media-query-list-parser": "^4.0.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-nested-calc": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-4.0.0.tgz", + "integrity": "sha512-jMYDdqrQQxE7k9+KjstC3NbsmC063n1FTPLCgCRS2/qHUbHM0mNy9pIn4QIiQGs9I/Bg98vMqw7mJXBxa0N88A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-normalize-display-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.1.tgz", + "integrity": "sha512-TQUGBuRvxdc7TgNSTevYqrL8oItxiwPDixk20qCB5me/W8uF7BPbhRrAvFuhEoywQp/woRsUZ6SJ+sU5idZAIA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-oklab-function": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.12.tgz", + "integrity": "sha512-HhlSmnE1NKBhXsTnNGjxvhryKtO7tJd1w42DKOGFD6jSHtYOrsJTQDKPMwvOfrzUAk8t7GcpIfRyM7ssqHpFjg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-position-area-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-position-area-property/-/postcss-position-area-property-1.0.0.tgz", + "integrity": "sha512-fUP6KR8qV2NuUZV3Cw8itx0Ep90aRjAZxAEzC3vrl6yjFv+pFsQbR18UuQctEKmA72K9O27CoYiKEgXxkqjg8Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-progressive-custom-properties": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.2.1.tgz", + "integrity": "sha512-uPiiXf7IEKtUQXsxu6uWtOlRMXd2QWWy5fhxHDnPdXKCQckPP3E34ZgDoZ62r2iT+UOgWsSbM4NvHE5m3mAEdw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-property-rule-prelude-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-property-rule-prelude-list/-/postcss-property-rule-prelude-list-1.0.0.tgz", + "integrity": "sha512-IxuQjUXq19fobgmSSvUDO7fVwijDJaZMvWQugxfEUxmjBeDCVaDuMpsZ31MsTm5xbnhA+ElDi0+rQ7sQQGisFA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-random-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-random-function/-/postcss-random-function-2.0.1.tgz", + "integrity": "sha512-q+FQaNiRBhnoSNo+GzqGOIBKoHQ43lYz0ICrV+UudfWnEF6ksS6DsBIJSISKQT2Bvu3g4k6r7t0zYrk5pDlo8w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-relative-color-syntax": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.12.tgz", + "integrity": "sha512-0RLIeONxu/mtxRtf3o41Lq2ghLimw0w9ByLWnnEVuy89exmEEq8bynveBxNW3nyHqLAFEeNtVEmC1QK9MZ8Huw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-scope-pseudo-class": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-scope-pseudo-class/-/postcss-scope-pseudo-class-4.0.1.tgz", + "integrity": "sha512-IMi9FwtH6LMNuLea1bjVMQAsUhFxJnyLSgOp/cpv5hrzWmrUYU5fm0EguNDIIOHUqzXode8F/1qkC/tEo/qN8Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-scope-pseudo-class/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@csstools/postcss-sign-functions": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-sign-functions/-/postcss-sign-functions-1.1.4.tgz", + "integrity": "sha512-P97h1XqRPcfcJndFdG95Gv/6ZzxUBBISem0IDqPZ7WMvc/wlO+yU0c5D/OCpZ5TJoTt63Ok3knGk64N+o6L2Pg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-stepped-value-functions": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-4.0.9.tgz", + "integrity": "sha512-h9btycWrsex4dNLeQfyU3y3w40LMQooJWFMm/SK9lrKguHDcFl4VMkncKKoXi2z5rM9YGWbUQABI8BT2UydIcA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-syntax-descriptor-syntax-production": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-syntax-descriptor-syntax-production/-/postcss-syntax-descriptor-syntax-production-1.0.1.tgz", + "integrity": "sha512-GneqQWefjM//f4hJ/Kbox0C6f2T7+pi4/fqTqOFGTL3EjnvOReTqO1qUQ30CaUjkwjYq9qZ41hzarrAxCc4gow==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-system-ui-font-family": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-system-ui-font-family/-/postcss-system-ui-font-family-1.0.0.tgz", + "integrity": "sha512-s3xdBvfWYfoPSBsikDXbuorcMG1nN1M6GdU0qBsGfcmNR0A/qhloQZpTxjA3Xsyrk1VJvwb2pOfiOT3at/DuIQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-text-decoration-shorthand": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.3.tgz", + "integrity": "sha512-KSkGgZfx0kQjRIYnpsD7X2Om9BUXX/Kii77VBifQW9Ih929hK0KNjVngHDH0bFB9GmfWcR9vJYJJRvw/NQjkrA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/color-helpers": "^5.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-trigonometric-functions": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-4.0.9.tgz", + "integrity": "sha512-Hnh5zJUdpNrJqK9v1/E3BbrQhaDTj5YiX7P61TOvUhoDHnUmsNNxcDAgkQ32RrcWx9GVUvfUNPcUkn8R3vIX6A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-unset-value": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-4.0.0.tgz", + "integrity": "sha512-cBz3tOCI5Fw6NIFEwU3RiwK6mn3nKegjpJuzCndoGq3BZPkUjnsq7uQmIeMNeMbMk7YD2MfKcgCpZwX5jyXqCA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/utilities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@csstools/utilities/-/utilities-2.0.0.tgz", + "integrity": "sha512-5VdOr0Z71u+Yp3ozOx8T11N703wIFGVRgOWbOZMKgglPJsWA54MRIoMNVMa7shUToIhx5J8vX4sOZgD2XiihiQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@docsearch/core": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/@docsearch/core/-/core-4.5.3.tgz", + "integrity": "sha512-x/P5+HVzv9ALtbuJIfpkF8Eyc5RE8YCsFcOgLrrtWa9Ui+53ggZA5seIAanCRORbS4+m982lu7rZmebSiuMIcw==", + "license": "MIT", + "peerDependencies": { + "@types/react": ">= 16.8.0 < 20.0.0", + "react": ">= 16.8.0 < 20.0.0", + "react-dom": ">= 16.8.0 < 20.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/@docsearch/css": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-4.5.3.tgz", + "integrity": "sha512-kUpHaxn0AgI3LQfyzTYkNUuaFY4uEz/Ym9/N/FvyDE+PzSgZsCyDH9jE49B6N6f1eLCm9Yp64J9wENd6vypdxA==", + "license": "MIT" + }, + "node_modules/@docsearch/react": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-4.5.3.tgz", + "integrity": "sha512-Hm3Lg/FD9HXV57WshhWOHOprbcObF5ptLzcjA5zdgJDzYOMwEN+AvY8heQ5YMTWyC6kW2d+Qk25AVlHnDWMSvA==", + "license": "MIT", + "dependencies": { + "@docsearch/core": "4.5.3", + "@docsearch/css": "4.5.3" + }, + "peerDependencies": { + "@types/react": ">= 16.8.0 < 20.0.0", + "react": ">= 16.8.0 < 20.0.0", + "react-dom": ">= 16.8.0 < 20.0.0", + "search-insights": ">= 1 < 3" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "search-insights": { + "optional": true + } + } + }, + "node_modules/@docusaurus/babel": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/babel/-/babel-3.9.2.tgz", + "integrity": "sha512-GEANdi/SgER+L7Japs25YiGil/AUDnFFHaCGPBbundxoWtCkA2lmy7/tFmgED4y1htAy6Oi4wkJEQdGssnw9MA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.9", "@babel/generator": "^7.25.9", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-transform-runtime": "^7.25.9", @@ -2295,42 +3389,41 @@ "@babel/runtime": "^7.25.9", "@babel/runtime-corejs3": "^7.25.9", "@babel/traverse": "^7.25.9", - "@docusaurus/logger": "3.6.0", - "@docusaurus/utils": "3.6.0", + "@docusaurus/logger": "3.9.2", + "@docusaurus/utils": "3.9.2", "babel-plugin-dynamic-import-node": "^2.3.3", "fs-extra": "^11.1.1", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" } }, "node_modules/@docusaurus/bundler": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/bundler/-/bundler-3.6.0.tgz", - "integrity": "sha512-o5T9HXkPKH0OQAifTxEXaebcO8kaz3tU1+wlIShZ2DKJHlsyWX3N4rToWBHroWnV/ZCT2XN3kLRzXASqrnb9Tw==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/bundler/-/bundler-3.9.2.tgz", + "integrity": "sha512-ZOVi6GYgTcsZcUzjblpzk3wH1Fya2VNpd5jtHoCCFcJlMQ1EYXZetfAnRHLcyiFeBABaI1ltTYbOBtH/gahGVA==", "license": "MIT", "dependencies": { "@babel/core": "^7.25.9", - "@docusaurus/babel": "3.6.0", - "@docusaurus/cssnano-preset": "3.6.0", - "@docusaurus/logger": "3.6.0", - "@docusaurus/types": "3.6.0", - "@docusaurus/utils": "3.6.0", - "autoprefixer": "^10.4.14", + "@docusaurus/babel": "3.9.2", + "@docusaurus/cssnano-preset": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", "babel-loader": "^9.2.1", - "clean-css": "^5.3.2", + "clean-css": "^5.3.3", "copy-webpack-plugin": "^11.0.0", - "css-loader": "^6.8.1", + "css-loader": "^6.11.0", "css-minimizer-webpack-plugin": "^5.0.1", "cssnano": "^6.1.2", "file-loader": "^6.2.0", "html-minifier-terser": "^7.2.0", - "mini-css-extract-plugin": "^2.9.1", + "mini-css-extract-plugin": "^2.9.2", "null-loader": "^4.0.1", - "postcss": "^8.4.26", - "postcss-loader": "^7.3.3", - "react-dev-utils": "^12.0.1", + "postcss": "^8.5.4", + "postcss-loader": "^7.3.4", + "postcss-preset-env": "^10.2.1", "terser-webpack-plugin": "^5.3.9", "tslib": "^2.6.0", "url-loader": "^4.1.1", @@ -2338,10 +3431,10 @@ "webpackbar": "^6.0.1" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { - "@docusaurus/faster": "3.5.2" + "@docusaurus/faster": "*" }, "peerDependenciesMeta": { "@docusaurus/faster": { @@ -2350,18 +3443,18 @@ } }, "node_modules/@docusaurus/core": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.6.0.tgz", - "integrity": "sha512-lvRgMoKJJSRDt9+HhAqFcICV4kp/mw1cJJrLxIw4Q2XZnFGM1XUuwcbuaqWmGog+NcOLZaPCcCtZbn60EMCtjQ==", - "license": "MIT", - "dependencies": { - "@docusaurus/babel": "3.6.0", - "@docusaurus/bundler": "3.6.0", - "@docusaurus/logger": "3.6.0", - "@docusaurus/mdx-loader": "3.6.0", - "@docusaurus/utils": "3.6.0", - "@docusaurus/utils-common": "3.6.0", - "@docusaurus/utils-validation": "3.6.0", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.9.2.tgz", + "integrity": "sha512-HbjwKeC+pHUFBfLMNzuSjqFE/58+rLVKmOU3lxQrpsxLBOGosYco/Q0GduBb0/jEMRiyEqjNT/01rRdOMWq5pw==", + "license": "MIT", + "dependencies": { + "@docusaurus/babel": "3.9.2", + "@docusaurus/bundler": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/mdx-loader": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "boxen": "^6.2.1", "chalk": "^4.1.2", "chokidar": "^3.5.3", @@ -2369,46 +3462,45 @@ "combine-promises": "^1.1.0", "commander": "^5.1.0", "core-js": "^3.31.1", - "del": "^6.1.1", "detect-port": "^1.5.1", "escape-html": "^1.0.3", "eta": "^2.2.0", "eval": "^0.1.8", + "execa": "5.1.1", "fs-extra": "^11.1.1", "html-tags": "^3.3.1", "html-webpack-plugin": "^5.6.0", "leven": "^3.1.0", "lodash": "^4.17.21", + "open": "^8.4.0", "p-map": "^4.0.0", "prompts": "^2.4.2", - "react-dev-utils": "^12.0.1", - "react-helmet-async": "^1.3.0", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", "react-loadable": "npm:@docusaurus/react-loadable@6.0.0", "react-loadable-ssr-addon-v5-slorber": "^1.0.1", "react-router": "^5.3.4", "react-router-config": "^5.1.1", "react-router-dom": "^5.3.4", - "rtl-detect": "^1.0.4", "semver": "^7.5.4", "serve-handler": "^6.1.6", - "shelljs": "^0.8.5", + "tinypool": "^1.0.2", "tslib": "^2.6.0", "update-notifier": "^6.0.2", "webpack": "^5.95.0", "webpack-bundle-analyzer": "^4.10.2", - "webpack-dev-server": "^4.15.2", + "webpack-dev-server": "^5.2.2", "webpack-merge": "^6.0.1" }, "bin": { "docusaurus": "bin/docusaurus.mjs" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "@mdx-js/react": "^3.0.0", - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, "node_modules/@docusaurus/core/node_modules/webpack-merge": { @@ -2426,24 +3518,24 @@ } }, "node_modules/@docusaurus/cssnano-preset": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.6.0.tgz", - "integrity": "sha512-h3jlOXqqzNSoU+C4CZLNpFtD+v2xr1UBf4idZpwMgqid9r6lb5GS7tWKnQnauio6OipacbHbDXEX3JyT1PlDkg==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.9.2.tgz", + "integrity": "sha512-8gBKup94aGttRduABsj7bpPFTX7kbwu+xh3K9NMCF5K4bWBqTFYW+REKHF6iBVDHRJ4grZdIPbvkiHd/XNKRMQ==", "license": "MIT", "dependencies": { "cssnano-preset-advanced": "^6.1.2", - "postcss": "^8.4.38", + "postcss": "^8.5.4", "postcss-sort-media-queries": "^5.2.0", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" } }, "node_modules/@docusaurus/eslint-plugin": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/eslint-plugin/-/eslint-plugin-3.6.0.tgz", - "integrity": "sha512-ILTdyegGbX0pbjDc2mqerO8WsCO7NBAsH/HOMoN6VvfV5T9J52rEG4DfGZXFAKAGLsH9J5Ct7vkTb5jTViZK2Q==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/eslint-plugin/-/eslint-plugin-3.9.2.tgz", + "integrity": "sha512-LnCrmrR4EtzpSiq6aoSfiY0Lf8P0WslGbBFZJ0olKXJIMxey8dpKevT1K/+tN87Lbn2H/VrdGGSPGlfVKmihAQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2451,41 +3543,41 @@ "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "eslint": ">=6" } }, "node_modules/@docusaurus/logger": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.6.0.tgz", - "integrity": "sha512-BcQhoXilXW0607cH/kO6P5Gt5KxCGfoJ+QDKNf3yO2S09/RsITlW+0QljXPbI3DklTrHrhRDmgGk1yX4nUhWTA==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.9.2.tgz", + "integrity": "sha512-/SVCc57ByARzGSU60c50rMyQlBuMIJCjcsJlkphxY6B0GV4UH3tcA1994N8fFfbJ9kX3jIBe/xg3XP5qBtGDbA==", "license": "MIT", "dependencies": { "chalk": "^4.1.2", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" } }, "node_modules/@docusaurus/mdx-loader": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.6.0.tgz", - "integrity": "sha512-GhRzL1Af/AdSSrGesSPOU/iP/aXadTGmVKuysCxZDrQR2RtBtubQZ9aw+KvdFVV7R4K/CsbgD6J5oqrXlEPk3Q==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.9.2.tgz", + "integrity": "sha512-wiYoGwF9gdd6rev62xDU8AAM8JuLI/hlwOtCzMmYcspEkzecKrP8J8X+KpYnTlACBUUtXNJpSoCwFWJhLRevzQ==", "license": "MIT", "dependencies": { - "@docusaurus/logger": "3.6.0", - "@docusaurus/utils": "3.6.0", - "@docusaurus/utils-validation": "3.6.0", + "@docusaurus/logger": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "@mdx-js/mdx": "^3.0.0", "@slorber/remark-comment": "^1.0.0", "escape-html": "^1.0.3", "estree-util-value-to-estree": "^3.0.1", "file-loader": "^6.2.0", "fs-extra": "^11.1.1", - "image-size": "^1.0.2", + "image-size": "^2.0.2", "mdast-util-mdx": "^3.0.0", "mdast-util-to-string": "^4.0.0", "rehype-raw": "^7.0.0", @@ -2502,25 +3594,25 @@ "webpack": "^5.88.1" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, "node_modules/@docusaurus/module-type-aliases": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.6.0.tgz", - "integrity": "sha512-szTrIN/6/fuk0xkf3XbRfdTFJzRQ8d1s3sQj5++58wltrT7v3yn1149oc9ryYjMpRcbsarGloQwMu7ofPe4XPg==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.9.2.tgz", + "integrity": "sha512-8qVe2QA9hVLzvnxP46ysuofJUIc/yYQ82tvA/rBTrnpXtCjNSFLxEZfd5U8cYZuJIVlkPxamsIgwd5tGZXfvew==", "license": "MIT", "dependencies": { - "@docusaurus/types": "3.6.0", + "@docusaurus/types": "3.9.2", "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router-config": "*", "@types/react-router-dom": "*", - "react-helmet-async": "*", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", "react-loadable": "npm:@docusaurus/react-loadable@6.0.0" }, "peerDependencies": { @@ -2529,48 +3621,48 @@ } }, "node_modules/@docusaurus/plugin-client-redirects": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-3.6.0.tgz", - "integrity": "sha512-LIqRT6dtgxdENQH8XYwOOyxfKuzFD1ayJmIDCp9Yi/rbdcPE4vvTcESLGXOKvcyWZSfyCu+JA8Tyk4qpp+2J0w==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-3.9.2.tgz", + "integrity": "sha512-lUgMArI9vyOYMzLRBUILcg9vcPTCyyI2aiuXq/4npcMVqOr6GfmwtmBYWSbNMlIUM0147smm4WhpXD0KFboffw==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.6.0", - "@docusaurus/logger": "3.6.0", - "@docusaurus/utils": "3.6.0", - "@docusaurus/utils-common": "3.6.0", - "@docusaurus/utils-validation": "3.6.0", + "@docusaurus/core": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "eta": "^2.2.0", "fs-extra": "^11.1.1", "lodash": "^4.17.21", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, "node_modules/@docusaurus/plugin-content-blog": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.6.0.tgz", - "integrity": "sha512-o4aT1/E0Ldpzs/hQff5uyoSriAhS/yqBhqSn+fvSw465AaqRsva6O7CZSYleuBq6x2bewyE3QJq2PcTiHhAd8g==", - "license": "MIT", - "dependencies": { - "@docusaurus/core": "3.6.0", - "@docusaurus/logger": "3.6.0", - "@docusaurus/mdx-loader": "3.6.0", - "@docusaurus/theme-common": "3.6.0", - "@docusaurus/types": "3.6.0", - "@docusaurus/utils": "3.6.0", - "@docusaurus/utils-common": "3.6.0", - "@docusaurus/utils-validation": "3.6.0", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.9.2.tgz", + "integrity": "sha512-3I2HXy3L1QcjLJLGAoTvoBnpOwa6DPUa3Q0dMK19UTY9mhPkKQg/DYhAGTiBUKcTR0f08iw7kLPqOhIgdV3eVQ==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/mdx-loader": "3.9.2", + "@docusaurus/theme-common": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "cheerio": "1.0.0-rc.12", "feed": "^4.2.2", "fs-extra": "^11.1.1", "lodash": "^4.17.21", - "reading-time": "^1.5.0", + "schema-dts": "^1.1.2", "srcset": "^4.0.0", "tslib": "^2.6.0", "unist-util-visit": "^5.0.0", @@ -2578,226 +3670,267 @@ "webpack": "^5.88.1" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "@docusaurus/plugin-content-docs": "*", - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, "node_modules/@docusaurus/plugin-content-docs": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.6.0.tgz", - "integrity": "sha512-c5gZOxocJKO/Zev2MEZInli+b+VNswDGuKHE6QtFgidhAJonwjh2kwj967RvWFaMMk62HlLJLZ+IGK2XsVy4Aw==", - "license": "MIT", - "dependencies": { - "@docusaurus/core": "3.6.0", - "@docusaurus/logger": "3.6.0", - "@docusaurus/mdx-loader": "3.6.0", - "@docusaurus/module-type-aliases": "3.6.0", - "@docusaurus/theme-common": "3.6.0", - "@docusaurus/types": "3.6.0", - "@docusaurus/utils": "3.6.0", - "@docusaurus/utils-common": "3.6.0", - "@docusaurus/utils-validation": "3.6.0", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.9.2.tgz", + "integrity": "sha512-C5wZsGuKTY8jEYsqdxhhFOe1ZDjH0uIYJ9T/jebHwkyxqnr4wW0jTkB72OMqNjsoQRcb0JN3PcSeTwFlVgzCZg==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/mdx-loader": "3.9.2", + "@docusaurus/module-type-aliases": "3.9.2", + "@docusaurus/theme-common": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "@types/react-router-config": "^5.0.7", "combine-promises": "^1.1.0", "fs-extra": "^11.1.1", "js-yaml": "^4.1.0", "lodash": "^4.17.21", + "schema-dts": "^1.1.2", "tslib": "^2.6.0", "utility-types": "^3.10.0", "webpack": "^5.88.1" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, "node_modules/@docusaurus/plugin-content-pages": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.6.0.tgz", - "integrity": "sha512-RKHhJrfkadHc7+tt1cP48NWifOrhkSRMPdXNYytzhoQrXlP6Ph+3tfQ4/n+nT0S3Y9+wwRxYqRqA380ZLt+QtQ==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.9.2.tgz", + "integrity": "sha512-s4849w/p4noXUrGpPUF0BPqIAfdAe76BLaRGAGKZ1gTDNiGxGcpsLcwJ9OTi1/V8A+AzvsmI9pkjie2zjIQZKA==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.6.0", - "@docusaurus/mdx-loader": "3.6.0", - "@docusaurus/types": "3.6.0", - "@docusaurus/utils": "3.6.0", - "@docusaurus/utils-validation": "3.6.0", + "@docusaurus/core": "3.9.2", + "@docusaurus/mdx-loader": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "fs-extra": "^11.1.1", "tslib": "^2.6.0", "webpack": "^5.88.1" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-css-cascade-layers": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-css-cascade-layers/-/plugin-css-cascade-layers-3.9.2.tgz", + "integrity": "sha512-w1s3+Ss+eOQbscGM4cfIFBlVg/QKxyYgj26k5AnakuHkKxH6004ZtuLe5awMBotIYF2bbGDoDhpgQ4r/kcj4rQ==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "tslib": "^2.6.0" + }, + "engines": { + "node": ">=20.0" } }, "node_modules/@docusaurus/plugin-debug": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.6.0.tgz", - "integrity": "sha512-o8T1Rl94COLdSlKvjYLQpRJQRU8WWZ8EX1B0yV0dQLNN8reyH7MQW+6z1ig4sQFfH3pnjPWVGHfuEjcib5m7Eg==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.9.2.tgz", + "integrity": "sha512-j7a5hWuAFxyQAkilZwhsQ/b3T7FfHZ+0dub6j/GxKNFJp2h9qk/P1Bp7vrGASnvA9KNQBBL1ZXTe7jlh4VdPdA==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.6.0", - "@docusaurus/types": "3.6.0", - "@docusaurus/utils": "3.6.0", + "@docusaurus/core": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", "fs-extra": "^11.1.1", - "react-json-view-lite": "^1.2.0", + "react-json-view-lite": "^2.3.0", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, "node_modules/@docusaurus/plugin-google-analytics": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.6.0.tgz", - "integrity": "sha512-kgRFbfpi6Hshj75YUztKyEMtI/kw0trPRwoTN4g+W1NK99R/vh8phTvhBTIMnDbetU79795LkwfG0rZ/ce6zWQ==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.9.2.tgz", + "integrity": "sha512-mAwwQJ1Us9jL/lVjXtErXto4p4/iaLlweC54yDUK1a97WfkC6Z2k5/769JsFgwOwOP+n5mUQGACXOEQ0XDuVUw==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.6.0", - "@docusaurus/types": "3.6.0", - "@docusaurus/utils-validation": "3.6.0", + "@docusaurus/core": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, "node_modules/@docusaurus/plugin-google-gtag": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.6.0.tgz", - "integrity": "sha512-nqu4IfjaO4UX+dojHL2BxHRS+sKj31CIMWYo49huQ3wTET0Oc3u/WGTaKd3ShTPDhkgiRhTOSTPUwJWrU55nHg==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.9.2.tgz", + "integrity": "sha512-YJ4lDCphabBtw19ooSlc1MnxtYGpjFV9rEdzjLsUnBCeis2djUyCozZaFhCg6NGEwOn7HDDyMh0yzcdRpnuIvA==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.6.0", - "@docusaurus/types": "3.6.0", - "@docusaurus/utils-validation": "3.6.0", + "@docusaurus/core": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "@types/gtag.js": "^0.0.12", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, "node_modules/@docusaurus/plugin-google-tag-manager": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.6.0.tgz", - "integrity": "sha512-OU6c5xI0nOVbEc9eImGvvsgNWe4vGm97t/W3aLHjWsHyNk3uwFNBQMHRvBUwAi9k/K3kyC5E7DWnc67REhdLOw==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.9.2.tgz", + "integrity": "sha512-LJtIrkZN/tuHD8NqDAW1Tnw0ekOwRTfobWPsdO15YxcicBo2ykKF0/D6n0vVBfd3srwr9Z6rzrIWYrMzBGrvNw==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.6.0", - "@docusaurus/types": "3.6.0", - "@docusaurus/utils-validation": "3.6.0", + "@docusaurus/core": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, "node_modules/@docusaurus/plugin-sitemap": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.6.0.tgz", - "integrity": "sha512-YB5XMdf9FjLhgbHY/cDbYhVxsgcpPIjxY9769HUgFOB7GVzItTLOR71W035R1BiR2CA5QAn3XOSg36WLRxlhQQ==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.9.2.tgz", + "integrity": "sha512-WLh7ymgDXjG8oPoM/T4/zUP7KcSuFYRZAUTl8vR6VzYkfc18GBM4xLhcT+AKOwun6kBivYKUJf+vlqYJkm+RHw==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.6.0", - "@docusaurus/logger": "3.6.0", - "@docusaurus/types": "3.6.0", - "@docusaurus/utils": "3.6.0", - "@docusaurus/utils-common": "3.6.0", - "@docusaurus/utils-validation": "3.6.0", + "@docusaurus/core": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "fs-extra": "^11.1.1", "sitemap": "^7.1.1", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@docusaurus/plugin-svgr": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-svgr/-/plugin-svgr-3.9.2.tgz", + "integrity": "sha512-n+1DE+5b3Lnf27TgVU5jM1d4x5tUh2oW5LTsBxJX4PsAPV0JGcmI6p3yLYtEY0LRVEIJh+8RsdQmRE66wSV8mw==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "@svgr/core": "8.1.0", + "@svgr/webpack": "^8.1.0", + "tslib": "^2.6.0", + "webpack": "^5.88.1" + }, + "engines": { + "node": ">=20.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, "node_modules/@docusaurus/preset-classic": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.6.0.tgz", - "integrity": "sha512-kpGNdQzr/Dpm7o3b1iaQrz4DMDx3WIeBbl4V4P4maa2zAQkTdlaP4CMgA5oKrRrpqPLnQFsUM/b+qf2glhl2Tw==", - "license": "MIT", - "dependencies": { - "@docusaurus/core": "3.6.0", - "@docusaurus/plugin-content-blog": "3.6.0", - "@docusaurus/plugin-content-docs": "3.6.0", - "@docusaurus/plugin-content-pages": "3.6.0", - "@docusaurus/plugin-debug": "3.6.0", - "@docusaurus/plugin-google-analytics": "3.6.0", - "@docusaurus/plugin-google-gtag": "3.6.0", - "@docusaurus/plugin-google-tag-manager": "3.6.0", - "@docusaurus/plugin-sitemap": "3.6.0", - "@docusaurus/theme-classic": "3.6.0", - "@docusaurus/theme-common": "3.6.0", - "@docusaurus/theme-search-algolia": "3.6.0", - "@docusaurus/types": "3.6.0" - }, - "engines": { - "node": ">=18.0" + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.9.2.tgz", + "integrity": "sha512-IgyYO2Gvaigi21LuDIe+nvmN/dfGXAiMcV/murFqcpjnZc7jxFAxW+9LEjdPt61uZLxG4ByW/oUmX/DDK9t/8w==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/plugin-content-blog": "3.9.2", + "@docusaurus/plugin-content-docs": "3.9.2", + "@docusaurus/plugin-content-pages": "3.9.2", + "@docusaurus/plugin-css-cascade-layers": "3.9.2", + "@docusaurus/plugin-debug": "3.9.2", + "@docusaurus/plugin-google-analytics": "3.9.2", + "@docusaurus/plugin-google-gtag": "3.9.2", + "@docusaurus/plugin-google-tag-manager": "3.9.2", + "@docusaurus/plugin-sitemap": "3.9.2", + "@docusaurus/plugin-svgr": "3.9.2", + "@docusaurus/theme-classic": "3.9.2", + "@docusaurus/theme-common": "3.9.2", + "@docusaurus/theme-search-algolia": "3.9.2", + "@docusaurus/types": "3.9.2" + }, + "engines": { + "node": ">=20.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, "node_modules/@docusaurus/theme-classic": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.6.0.tgz", - "integrity": "sha512-sAXNfwPL6uRD+BuHuKXZfAXud7SS7IK/JdrPuzyQxdO1gJKzI5GFfe1ED1QoJDNWJWJ01JHE5rSnwYLEADc2rQ==", - "license": "MIT", - "dependencies": { - "@docusaurus/core": "3.6.0", - "@docusaurus/logger": "3.6.0", - "@docusaurus/mdx-loader": "3.6.0", - "@docusaurus/module-type-aliases": "3.6.0", - "@docusaurus/plugin-content-blog": "3.6.0", - "@docusaurus/plugin-content-docs": "3.6.0", - "@docusaurus/plugin-content-pages": "3.6.0", - "@docusaurus/theme-common": "3.6.0", - "@docusaurus/theme-translations": "3.6.0", - "@docusaurus/types": "3.6.0", - "@docusaurus/utils": "3.6.0", - "@docusaurus/utils-common": "3.6.0", - "@docusaurus/utils-validation": "3.6.0", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.9.2.tgz", + "integrity": "sha512-IGUsArG5hhekXd7RDb11v94ycpJpFdJPkLnt10fFQWOVxAtq5/D7hT6lzc2fhyQKaaCE62qVajOMKL7OiAFAIA==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/mdx-loader": "3.9.2", + "@docusaurus/module-type-aliases": "3.9.2", + "@docusaurus/plugin-content-blog": "3.9.2", + "@docusaurus/plugin-content-docs": "3.9.2", + "@docusaurus/plugin-content-pages": "3.9.2", + "@docusaurus/theme-common": "3.9.2", + "@docusaurus/theme-translations": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", "@mdx-js/react": "^3.0.0", "clsx": "^2.0.0", - "copy-text-to-clipboard": "^3.2.0", "infima": "0.2.0-alpha.45", "lodash": "^4.17.21", "nprogress": "^0.2.0", - "postcss": "^8.4.26", + "postcss": "^8.5.4", "prism-react-renderer": "^2.3.0", "prismjs": "^1.29.0", "react-router-dom": "^5.3.4", @@ -2806,23 +3939,23 @@ "utility-types": "^3.10.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, "node_modules/@docusaurus/theme-common": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.6.0.tgz", - "integrity": "sha512-frjlYE5sRs+GuPs4XXlp9aMLI2O4H5FPpznDAXBrCm+8EpWRiIb443ePMxM3IyMCQ5bwFlki0PI9C+r4apstnw==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.9.2.tgz", + "integrity": "sha512-6c4DAbR6n6nPbnZhY2V3tzpnKnGL+6aOsLvFL26VRqhlczli9eWG0VDUNoCQEPnGwDMhPS42UhSAnz5pThm5Ag==", "license": "MIT", "dependencies": { - "@docusaurus/mdx-loader": "3.6.0", - "@docusaurus/module-type-aliases": "3.6.0", - "@docusaurus/utils": "3.6.0", - "@docusaurus/utils-common": "3.6.0", + "@docusaurus/mdx-loader": "3.9.2", + "@docusaurus/module-type-aliases": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router-config": "*", @@ -2833,30 +3966,30 @@ "utility-types": "^3.10.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "@docusaurus/plugin-content-docs": "*", - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, "node_modules/@docusaurus/theme-search-algolia": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.6.0.tgz", - "integrity": "sha512-4IwRUkxjrisR8LXBHeE4d2btraWdMficbgiVL3UHvJURmyvgzMBZQP8KrK8rjdXeu8SuRxSmeV6NSVomRvdbEg==", - "license": "MIT", - "dependencies": { - "@docsearch/react": "^3.5.2", - "@docusaurus/core": "3.6.0", - "@docusaurus/logger": "3.6.0", - "@docusaurus/plugin-content-docs": "3.6.0", - "@docusaurus/theme-common": "3.6.0", - "@docusaurus/theme-translations": "3.6.0", - "@docusaurus/utils": "3.6.0", - "@docusaurus/utils-validation": "3.6.0", - "algoliasearch": "^4.18.0", - "algoliasearch-helper": "^3.13.3", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.9.2.tgz", + "integrity": "sha512-GBDSFNwjnh5/LdkxCKQHkgO2pIMX1447BxYUBG2wBiajS21uj64a+gH/qlbQjDLxmGrbrllBrtJkUHxIsiwRnw==", + "license": "MIT", + "dependencies": { + "@docsearch/react": "^3.9.0 || ^4.1.0", + "@docusaurus/core": "3.9.2", + "@docusaurus/logger": "3.9.2", + "@docusaurus/plugin-content-docs": "3.9.2", + "@docusaurus/theme-common": "3.9.2", + "@docusaurus/theme-translations": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-validation": "3.9.2", + "algoliasearch": "^5.37.0", + "algoliasearch-helper": "^3.26.0", "clsx": "^2.0.0", "eta": "^2.2.0", "fs-extra": "^11.1.1", @@ -2865,57 +3998,59 @@ "utility-types": "^3.10.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, "node_modules/@docusaurus/theme-translations": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.6.0.tgz", - "integrity": "sha512-L555X8lWE3fv8VaF0Bc1VnAgi10UvRKFcvADHiYR7Gj37ItaWP5i7xLHsSw7fi/SHTXe5wfIeCFNqUYHyCOHAQ==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.9.2.tgz", + "integrity": "sha512-vIryvpP18ON9T9rjgMRFLr2xJVDpw1rtagEGf8Ccce4CkTrvM/fRB8N2nyWYOW5u3DdjkwKw5fBa+3tbn9P4PA==", "license": "MIT", "dependencies": { "fs-extra": "^11.1.1", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" } }, "node_modules/@docusaurus/types": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.6.0.tgz", - "integrity": "sha512-jADLgoZGWhAzThr+mRiyuFD4OUzt6jHnb7NRArRKorgxckqUBaPyFOau9hhbcSTHtU6ceyeWjN7FDt7uG2Hplw==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.9.2.tgz", + "integrity": "sha512-Ux1JUNswg+EfUEmajJjyhIohKceitY/yzjRUpu04WXgvVz+fbhVC0p+R0JhvEu4ytw8zIAys2hrdpQPBHRIa8Q==", "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", + "@types/mdast": "^4.0.2", "@types/react": "*", "commander": "^5.1.0", "joi": "^17.9.2", - "react-helmet-async": "^1.3.0", + "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0", "utility-types": "^3.10.0", "webpack": "^5.95.0", "webpack-merge": "^5.9.0" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" } }, "node_modules/@docusaurus/utils": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.6.0.tgz", - "integrity": "sha512-VKczAutI4mptiAw/WcYEu5WeVhQ6Q1zdIUl64SGw9K++9lziH+Kt10Ee8l2dMpRkiUk6zzK20kMNlX2WCUwXYQ==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.9.2.tgz", + "integrity": "sha512-lBSBiRruFurFKXr5Hbsl2thmGweAPmddhF3jb99U4EMDA5L+e5Y1rAkOS07Nvrup7HUMBDrCV45meaxZnt28nQ==", "license": "MIT", "dependencies": { - "@docusaurus/logger": "3.6.0", - "@docusaurus/utils-common": "3.6.0", - "@svgr/webpack": "^8.1.0", + "@docusaurus/logger": "3.9.2", + "@docusaurus/types": "3.9.2", + "@docusaurus/utils-common": "3.9.2", "escape-string-regexp": "^4.0.0", + "execa": "5.1.1", "file-loader": "^6.2.0", "fs-extra": "^11.1.1", "github-slugger": "^1.5.0", @@ -2925,55 +4060,40 @@ "js-yaml": "^4.1.0", "lodash": "^4.17.21", "micromatch": "^4.0.5", + "p-queue": "^6.6.2", "prompts": "^2.4.2", "resolve-pathname": "^3.0.0", - "shelljs": "^0.8.5", "tslib": "^2.6.0", "url-loader": "^4.1.1", "utility-types": "^3.10.0", "webpack": "^5.88.1" }, "engines": { - "node": ">=18.0" - }, - "peerDependencies": { - "@docusaurus/types": "*" - }, - "peerDependenciesMeta": { - "@docusaurus/types": { - "optional": true - } + "node": ">=20.0" } }, "node_modules/@docusaurus/utils-common": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.6.0.tgz", - "integrity": "sha512-diUDNfbw33GaZMmKwdTckT2IBfVouXLXRD+zphH9ywswuaEIKqixvuf5g41H7MBBrlMsxhna3uTMoB4B/OPDcA==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.9.2.tgz", + "integrity": "sha512-I53UC1QctruA6SWLvbjbhCpAw7+X7PePoe5pYcwTOEXD/PxeP8LnECAhTHHwWCblyUX5bMi4QLRkxvyZ+IT8Aw==", "license": "MIT", "dependencies": { + "@docusaurus/types": "3.9.2", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" - }, - "peerDependencies": { - "@docusaurus/types": "*" - }, - "peerDependenciesMeta": { - "@docusaurus/types": { - "optional": true - } + "node": ">=20.0" } }, "node_modules/@docusaurus/utils-validation": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.6.0.tgz", - "integrity": "sha512-CRHiKKJEKA0GFlfOf71JWHl7PtwOyX0+Zg9ep9NFEZv6Lcx3RJ9nhl7p8HRjPL6deyYceavM//BsfW4pCI4BtA==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.9.2.tgz", + "integrity": "sha512-l7yk3X5VnNmATbwijJkexdhulNsQaNDwoagiwujXoxFbWLcxHQqNQ+c/IAlzrfMMOfa/8xSBZ7KEKDesE/2J7A==", "license": "MIT", "dependencies": { - "@docusaurus/logger": "3.6.0", - "@docusaurus/utils": "3.6.0", - "@docusaurus/utils-common": "3.6.0", + "@docusaurus/logger": "3.9.2", + "@docusaurus/utils": "3.9.2", + "@docusaurus/utils-common": "3.9.2", "fs-extra": "^11.2.0", "joi": "^17.9.2", "js-yaml": "^4.1.0", @@ -2981,14 +4101,14 @@ "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" } }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "devOptional": true, + "dev": true, "dependencies": { "eslint-visitor-keys": "^3.3.0" }, @@ -3003,7 +4123,7 @@ "version": "4.10.0", "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", - "devOptional": true, + "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } @@ -3012,7 +4132,7 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "devOptional": true, + "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -3035,7 +4155,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "devOptional": true, + "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -3051,7 +4171,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "devOptional": true, + "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3061,7 +4181,7 @@ "version": "13.24.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "devOptional": true, + "dev": true, "dependencies": { "type-fest": "^0.20.2" }, @@ -3076,13 +4196,13 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "devOptional": true + "dev": true }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "devOptional": true, + "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -3094,173 +4214,570 @@ "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "devOptional": true, + "dev": true, "engines": { "node": ">=10" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", + "dev": true + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/buffers": { + "version": "17.65.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-17.65.0.tgz", + "integrity": "sha512-eBrIXd0/Ld3p9lpDDlMaMn6IEfWqtHMD+z61u0JrIiPzsV1r7m6xDZFRxJyvIFTEO+SWdYF9EiQbXZGd8BzPfA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/codegen": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz", + "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-core": { + "version": "4.56.10", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-core/-/fs-core-4.56.10.tgz", + "integrity": "sha512-PyAEA/3cnHhsGcdY+AmIU+ZPqTuZkDhCXQ2wkXypdLitSpd6d5Ivxhnq4wa2ETRWFVJGabYynBWxIijOswSmOw==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-node-builtins": "4.56.10", + "@jsonjoy.com/fs-node-utils": "4.56.10", + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-fsa": { + "version": "4.56.10", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-fsa/-/fs-fsa-4.56.10.tgz", + "integrity": "sha512-/FVK63ysNzTPOnCCcPoPHt77TOmachdMS422txM4KhxddLdbW1fIbFMYH0AM0ow/YchCyS5gqEjKLNyv71j/5Q==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-core": "4.56.10", + "@jsonjoy.com/fs-node-builtins": "4.56.10", + "@jsonjoy.com/fs-node-utils": "4.56.10", + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/fs-node": { + "version": "4.56.10", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node/-/fs-node-4.56.10.tgz", + "integrity": "sha512-7R4Gv3tkUdW3dXfXiOkqxkElxKNVdd8BDOWC0/dbERd0pXpPY+s2s1Mino+aTvkGrFPiY+mmVxA7zhskm4Ue4Q==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-core": "4.56.10", + "@jsonjoy.com/fs-node-builtins": "4.56.10", + "@jsonjoy.com/fs-node-utils": "4.56.10", + "@jsonjoy.com/fs-print": "4.56.10", + "@jsonjoy.com/fs-snapshot": "4.56.10", + "glob-to-regex.js": "^1.0.0", + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@eslint/js": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", - "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", - "devOptional": true, + "node_modules/@jsonjoy.com/fs-node-builtins": { + "version": "4.56.10", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.56.10.tgz", + "integrity": "sha512-uUnKz8R0YJyKq5jXpZtkGV9U0pJDt8hmYcLRrPjROheIfjMXsz82kXMgAA/qNg0wrZ1Kv+hrg7azqEZx6XZCVw==", + "license": "Apache-2.0", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" - }, - "node_modules/@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "node_modules/@jsonjoy.com/fs-node-to-fsa": { + "version": "4.56.10", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.56.10.tgz", + "integrity": "sha512-oH+O6Y4lhn9NyG6aEoFwIBNKZeYy66toP5LJcDOMBgL99BKQMUf/zWJspdRhMdn/3hbzQsZ8EHHsuekbFLGUWw==", + "license": "Apache-2.0", "dependencies": { - "@hapi/hoek": "^9.0.0" + "@jsonjoy.com/fs-fsa": "4.56.10", + "@jsonjoy.com/fs-node-builtins": "4.56.10", + "@jsonjoy.com/fs-node-utils": "4.56.10" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", - "devOptional": true, + "node_modules/@jsonjoy.com/fs-node-utils": { + "version": "4.56.10", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.56.10.tgz", + "integrity": "sha512-8EuPBgVI2aDPwFdaNQeNpHsyqPi3rr+85tMNG/lHvQLiVjzoZsvxA//Xd8aB567LUhy4QS03ptT+unkD/DIsNg==", + "license": "Apache-2.0", "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" + "@jsonjoy.com/fs-node-builtins": "4.56.10" }, "engines": { - "node": ">=10.10.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "devOptional": true, + "node_modules/@jsonjoy.com/fs-print": { + "version": "4.56.10", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-print/-/fs-print-4.56.10.tgz", + "integrity": "sha512-JW4fp5mAYepzFsSGrQ48ep8FXxpg4niFWHdF78wDrFGof7F3tKDJln72QFDEn/27M1yHd4v7sKHHVPh78aWcEw==", + "license": "Apache-2.0", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@jsonjoy.com/fs-node-utils": "4.56.10", + "tree-dump": "^1.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "devOptional": true, + "node_modules/@jsonjoy.com/fs-snapshot": { + "version": "4.56.10", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.56.10.tgz", + "integrity": "sha512-DkR6l5fj7+qj0+fVKm/OOXMGfDFCGXLfyHkORH3DF8hxkpDgIHbhf/DwncBMs2igu/ST7OEkexn1gIqoU6Y+9g==", + "license": "Apache-2.0", "dependencies": { - "brace-expansion": "^1.1.7" + "@jsonjoy.com/buffers": "^17.65.0", + "@jsonjoy.com/fs-node-utils": "4.56.10", + "@jsonjoy.com/json-pack": "^17.65.0", + "@jsonjoy.com/util": "^17.65.0" }, "engines": { - "node": "*" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "devOptional": true, + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/base64": { + "version": "17.65.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-17.65.0.tgz", + "integrity": "sha512-Xrh7Fm/M0QAYpekSgmskdZYnFdSGnsxJ/tHaolA4bNwWdG9i65S8m83Meh7FOxyJyQAdo4d4J97NOomBLEfkDQ==", + "license": "Apache-2.0", "engines": { - "node": ">=12.22" + "node": ">=10.0" }, "funding": { "type": "github", - "url": "https://github.com/sponsors/nzakas" + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", - "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", - "devOptional": true + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/codegen": { + "version": "17.65.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-17.65.0.tgz", + "integrity": "sha512-7MXcRYe7n3BG+fo3jicvjB0+6ypl2Y/bQp79Sp7KeSiiCgLqw4Oled6chVv07/xLVTdo3qa1CD0VCCnPaw+RGA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "license": "MIT", + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pack": { + "version": "17.65.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-17.65.0.tgz", + "integrity": "sha512-e0SG/6qUCnVhHa0rjDJHgnXnbsacooHVqQHxspjvlYQSkHm+66wkHw6Gql+3u/WxI/b1VsOdUi0M+fOtkgKGdQ==", + "license": "Apache-2.0", "dependencies": { - "@sinclair/typebox": "^0.27.8" + "@jsonjoy.com/base64": "17.65.0", + "@jsonjoy.com/buffers": "17.65.0", + "@jsonjoy.com/codegen": "17.65.0", + "@jsonjoy.com/json-pointer": "17.65.0", + "@jsonjoy.com/util": "17.65.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0", + "tree-dump": "^1.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "license": "MIT", + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pointer": { + "version": "17.65.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-17.65.0.tgz", + "integrity": "sha512-uhTe+XhlIZpWOxgPcnO+iSCDgKKBpwkDVTyYiXX9VayGV8HSFVJM67M6pUE71zdnXF1W0Da21AvnhlmdwYPpow==", + "license": "Apache-2.0", "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "@jsonjoy.com/util": "17.65.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "license": "MIT", + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/util": { + "version": "17.65.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-17.65.0.tgz", + "integrity": "sha512-cWiEHZccQORf96q2y6zU3wDeIVPeidmGqd9cNKJRYoVHTV0S1eHPy5JTbHpMnGfDvtvujQwQozOqgO9ABu6h0w==", + "license": "Apache-2.0", "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" + "@jsonjoy.com/buffers": "17.65.0", + "@jsonjoy.com/codegen": "17.65.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz", + "integrity": "sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/base64": "^1.1.2", + "@jsonjoy.com/buffers": "^1.2.0", + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/json-pointer": "^1.0.2", + "@jsonjoy.com/util": "^1.9.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0", + "tree-dump": "^1.1.0" + }, "engines": { - "node": ">=6.0.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@jridgewell/set-array": { + "node_modules/@jsonjoy.com/json-pack/node_modules/@jsonjoy.com/buffers": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", + "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", + "license": "Apache-2.0", "engines": { - "node": ">=6.0.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", - "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "node_modules/@jsonjoy.com/json-pointer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz", + "integrity": "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==", + "license": "Apache-2.0", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/util": "^1.9.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "license": "MIT", + "node_modules/@jsonjoy.com/util": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz", + "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==", + "license": "Apache-2.0", "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "@jsonjoy.com/buffers": "^1.0.0", + "@jsonjoy.com/codegen": "^1.0.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util/node_modules/@jsonjoy.com/buffers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", + "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, "node_modules/@leichtgewicht/ip-codec": { @@ -3319,6 +4836,18 @@ "react": ">=16" } }, + "node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -3339,16 +4868,164 @@ "node": ">= 8" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@peculiar/asn1-cms": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-cms/-/asn1-cms-2.6.0.tgz", + "integrity": "sha512-2uZqP+ggSncESeUF/9Su8rWqGclEfEiz1SyU02WX5fUONFfkjzS2Z/F1Li0ofSmf4JqYXIOdCAZqIXAIBAT1OA==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "@peculiar/asn1-x509-attr": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-csr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-csr/-/asn1-csr-2.6.0.tgz", + "integrity": "sha512-BeWIu5VpTIhfRysfEp73SGbwjjoLL/JWXhJ/9mo4vXnz3tRGm+NGm3KNcRzQ9VMVqwYS2RHlolz21svzRXIHPQ==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-ecc": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.6.0.tgz", + "integrity": "sha512-FF3LMGq6SfAOwUG2sKpPXblibn6XnEIKa+SryvUl5Pik+WR9rmRA3OCiwz8R3lVXnYnyRkSZsSLdml8H3UiOcw==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-pfx": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pfx/-/asn1-pfx-2.6.0.tgz", + "integrity": "sha512-rtUvtf+tyKGgokHHmZzeUojRZJYPxoD/jaN1+VAB4kKR7tXrnDCA/RAWXAIhMJJC+7W27IIRGe9djvxKgsldCQ==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-cms": "^2.6.0", + "@peculiar/asn1-pkcs8": "^2.6.0", + "@peculiar/asn1-rsa": "^2.6.0", + "@peculiar/asn1-schema": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-pkcs8": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.6.0.tgz", + "integrity": "sha512-KyQ4D8G/NrS7Fw3XCJrngxmjwO/3htnA0lL9gDICvEQ+GJ+EPFqldcJQTwPIdvx98Tua+WjkdKHSC0/Km7T+lA==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-pkcs9": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.6.0.tgz", + "integrity": "sha512-b78OQ6OciW0aqZxdzliXGYHASeCvvw5caqidbpQRYW2mBtXIX2WhofNXTEe7NyxTb0P6J62kAAWLwn0HuMF1Fw==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-cms": "^2.6.0", + "@peculiar/asn1-pfx": "^2.6.0", + "@peculiar/asn1-pkcs8": "^2.6.0", + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "@peculiar/asn1-x509-attr": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-rsa": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.6.0.tgz", + "integrity": "sha512-Nu4C19tsrTsCp9fDrH+sdcOKoVfdfoQQ7S3VqjJU6vedR7tY3RLkQ5oguOIB3zFW33USDUuYZnPEQYySlgha4w==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-schema": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.6.0.tgz", + "integrity": "sha512-xNLYLBFTBKkCzEZIw842BxytQQATQv+lDTCEMZ8C196iJcJJMBUZxrhSTxLaohMyKK8QlzRNTRkUmanucnDSqg==", + "license": "MIT", + "dependencies": { + "asn1js": "^3.0.6", + "pvtsutils": "^1.3.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-x509": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.6.0.tgz", + "integrity": "sha512-uzYbPEpoQiBoTq0/+jZtpM6Gq6zADBx+JNFP3yqRgziWBxQ/Dt/HcuvRfm9zJTPdRcBqPNdaRHTVwpyiq6iNMA==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "asn1js": "^3.0.6", + "pvtsutils": "^1.3.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-x509-attr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.6.0.tgz", + "integrity": "sha512-MuIAXFX3/dc8gmoZBkwJWxUWOSvG4MMDntXhrOZpJVMkYX+MYc/rUAU2uJOved9iJEoiUx7//3D8oG83a78UJA==", + "license": "MIT", "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/x509": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/@peculiar/x509/-/x509-1.14.3.tgz", + "integrity": "sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==", + "license": "MIT", + "dependencies": { + "@peculiar/asn1-cms": "^2.6.0", + "@peculiar/asn1-csr": "^2.6.0", + "@peculiar/asn1-ecc": "^2.6.0", + "@peculiar/asn1-pkcs9": "^2.6.0", + "@peculiar/asn1-rsa": "^2.6.0", + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "pvtsutils": "^1.3.6", + "reflect-metadata": "^0.2.2", + "tslib": "^2.8.1", + "tsyringe": "^4.10.0" }, "engines": { - "node": ">= 8" + "node": ">=20.0.0" } }, "node_modules/@pkgr/core": { @@ -3737,9 +5414,9 @@ } }, "node_modules/@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", "license": "MIT", "dependencies": { "@types/connect": "*", @@ -3815,33 +5492,21 @@ } }, "node_modules/@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "version": "4.17.25", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", + "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", - "@types/serve-static": "*" + "@types/serve-static": "^1" } }, "node_modules/@types/express-serve-static-core": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.1.tgz", - "integrity": "sha512-CRICJIl0N5cXDONAdlTv5ShATZ4HEwk6kDDIW2/w9qOWKg+NU/5F8wYRWCrONad0/UKkloNSmmyN/wX4rtpbVA==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/express/node_modules/@types/express-serve-static-core": { - "version": "4.19.6", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", - "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", + "version": "4.19.8", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz", + "integrity": "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==", "license": "MIT", "dependencies": { "@types/node": "*", @@ -3880,15 +5545,15 @@ "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" }, "node_modules/@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", "license": "MIT" }, "node_modules/@types/http-proxy": { - "version": "1.17.15", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.15.tgz", - "integrity": "sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==", + "version": "1.17.17", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.17.tgz", + "integrity": "sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==", "license": "MIT", "dependencies": { "@types/node": "*" @@ -3967,20 +5632,6 @@ "undici-types": "~5.26.4" } }, - "node_modules/@types/node-forge": { - "version": "1.3.11", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", - "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/parse-json": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", - "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" - }, "node_modules/@types/prismjs": { "version": "1.26.3", "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.3.tgz", @@ -3992,9 +5643,9 @@ "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" }, "node_modules/@types/qs": { - "version": "6.9.16", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.16.tgz", - "integrity": "sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", "license": "MIT" }, "node_modules/@types/range-parser": { @@ -4043,9 +5694,9 @@ } }, "node_modules/@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", "license": "MIT" }, "node_modules/@types/sax": { @@ -4069,12 +5720,11 @@ "dev": true }, "node_modules/@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", "license": "MIT", "dependencies": { - "@types/mime": "^1", "@types/node": "*" } }, @@ -4088,14 +5738,24 @@ } }, "node_modules/@types/serve-static": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", + "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", "license": "MIT", "dependencies": { "@types/http-errors": "*", "@types/node": "*", - "@types/send": "*" + "@types/send": "<1" + } + }, + "node_modules/@types/serve-static/node_modules/@types/send": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", + "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" } }, "node_modules/@types/sockjs": { @@ -4113,18 +5773,18 @@ "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" }, "node_modules/@types/ws": { - "version": "8.5.13", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.13.tgz", - "integrity": "sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/yargs": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -4474,15 +6134,15 @@ } }, "node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", @@ -4493,6 +6153,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "license": "MIT", "dependencies": { "ajv": "^8.0.0" }, @@ -4505,78 +6166,53 @@ } } }, - "node_modules/algoliasearch": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.24.0.tgz", - "integrity": "sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==", - "license": "MIT", - "dependencies": { - "@algolia/cache-browser-local-storage": "4.24.0", - "@algolia/cache-common": "4.24.0", - "@algolia/cache-in-memory": "4.24.0", - "@algolia/client-account": "4.24.0", - "@algolia/client-analytics": "4.24.0", - "@algolia/client-common": "4.24.0", - "@algolia/client-personalization": "4.24.0", - "@algolia/client-search": "4.24.0", - "@algolia/logger-common": "4.24.0", - "@algolia/logger-console": "4.24.0", - "@algolia/recommend": "4.24.0", - "@algolia/requester-browser-xhr": "4.24.0", - "@algolia/requester-common": "4.24.0", - "@algolia/requester-node-http": "4.24.0", - "@algolia/transporter": "4.24.0" - } - }, - "node_modules/algoliasearch-helper": { - "version": "3.22.5", - "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.22.5.tgz", - "integrity": "sha512-lWvhdnc+aKOKx8jyA3bsdEgHzm/sglC4cYdMG4xSQyRiPLJVJtH/IVYZG3Hp6PkTEhQqhyVYkeP9z2IlcHJsWw==", + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "license": "MIT", "dependencies": { - "@algolia/events": "^4.0.1" + "fast-deep-equal": "^3.1.3" }, "peerDependencies": { - "algoliasearch": ">= 3.1 < 6" - } - }, - "node_modules/algoliasearch/node_modules/@algolia/client-common": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", - "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", - "license": "MIT", - "dependencies": { - "@algolia/requester-common": "4.24.0", - "@algolia/transporter": "4.24.0" - } - }, - "node_modules/algoliasearch/node_modules/@algolia/client-search": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz", - "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==", - "license": "MIT", - "dependencies": { - "@algolia/client-common": "4.24.0", - "@algolia/requester-common": "4.24.0", - "@algolia/transporter": "4.24.0" + "ajv": "^8.8.2" } }, - "node_modules/algoliasearch/node_modules/@algolia/requester-browser-xhr": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.24.0.tgz", - "integrity": "sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==", - "license": "MIT", - "dependencies": { - "@algolia/requester-common": "4.24.0" + "node_modules/algoliasearch": { + "version": "5.47.0", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.47.0.tgz", + "integrity": "sha512-AGtz2U7zOV4DlsuYV84tLp2tBbA7RPtLA44jbVH4TTpDcc1dIWmULjHSsunlhscbzDydnjuFlNhflR3nV4VJaQ==", + "license": "MIT", + "dependencies": { + "@algolia/abtesting": "1.13.0", + "@algolia/client-abtesting": "5.47.0", + "@algolia/client-analytics": "5.47.0", + "@algolia/client-common": "5.47.0", + "@algolia/client-insights": "5.47.0", + "@algolia/client-personalization": "5.47.0", + "@algolia/client-query-suggestions": "5.47.0", + "@algolia/client-search": "5.47.0", + "@algolia/ingestion": "1.47.0", + "@algolia/monitoring": "1.47.0", + "@algolia/recommend": "5.47.0", + "@algolia/requester-browser-xhr": "5.47.0", + "@algolia/requester-fetch": "5.47.0", + "@algolia/requester-node-http": "5.47.0" + }, + "engines": { + "node": ">= 14.0.0" } }, - "node_modules/algoliasearch/node_modules/@algolia/requester-node-http": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.24.0.tgz", - "integrity": "sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==", + "node_modules/algoliasearch-helper": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.27.0.tgz", + "integrity": "sha512-eNYchRerbsvk2doHOMfdS1/B6Tm70oGtu8mzQlrNzbCeQ8p1MjCW8t/BL6iZ5PD+cL5NNMgTMyMnmiXZ1sgmNw==", "license": "MIT", "dependencies": { - "@algolia/requester-common": "4.24.0" + "@algolia/events": "^4.0.1" + }, + "peerDependencies": { + "algoliasearch": ">= 3.1 < 6" } }, "node_modules/ansi-align": { @@ -4833,6 +6469,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/asn1js": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.7.tgz", + "integrity": "sha512-uLvq6KJu04qoQM6gvBfKFjlh6Gl0vOKQuR5cJMDHQkmwfMOQeN3F3SHCv9SNYSL+CRoHvOGFfllDlVz03GQjvQ==", + "license": "BSD-3-Clause", + "dependencies": { + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.3", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/ast-types-flow": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", @@ -4856,18 +6506,10 @@ "has-symbols": "^1.0.3" } }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/autoprefixer": { - "version": "10.4.20", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", - "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", + "version": "10.4.24", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.24.tgz", + "integrity": "sha512-uHZg7N9ULTVbutaIsDRoUkoS8/h3bdsmVJYZ5l3wv8Cp/6UIIoRDm90hZ+BwxUj/hGBEzLxdHNSKuFpn8WOyZw==", "funding": [ { "type": "opencollective", @@ -4884,11 +6526,10 @@ ], "license": "MIT", "dependencies": { - "browserslist": "^4.23.3", - "caniuse-lite": "^1.0.30001646", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.1", + "browserslist": "^4.28.1", + "caniuse-lite": "^1.0.30001766", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -4958,13 +6599,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", - "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.15.tgz", + "integrity": "sha512-hR3GwrRwHUfYwGfrisXPIDP3JcYfBrW7wKE7+Au6wDYl7fm/ka1NEII6kORzxNU556JjfidZeBsO10kYvtV1aw==", "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.2", + "@babel/compat-data": "^7.28.6", + "@babel/helper-define-polyfill-provider": "^0.6.6", "semver": "^6.3.1" }, "peerDependencies": { @@ -4994,12 +6635,12 @@ } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", - "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.6.tgz", + "integrity": "sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A==", "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.2" + "@babel/helper-define-polyfill-provider": "^0.6.6" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -5019,6 +6660,15 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.19", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", + "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", @@ -5042,23 +6692,23 @@ } }, "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", "license": "MIT", "dependencies": { - "bytes": "3.1.2", + "bytes": "~3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", "type-is": "~1.6.18", - "unpipe": "1.0.0" + "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8", @@ -5083,18 +6733,6 @@ "ms": "2.0.0" } }, - "node_modules/body-parser/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -5102,9 +6740,9 @@ "license": "MIT" }, "node_modules/bonjour-service": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", - "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", + "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", @@ -5149,9 +6787,9 @@ } }, "node_modules/browserslist": { - "version": "4.24.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", - "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", "funding": [ { "type": "opencollective", @@ -5168,10 +6806,11 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001669", - "electron-to-chromium": "^1.5.41", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.1" + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" @@ -5185,6 +6824,21 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", @@ -5194,6 +6848,15 @@ "node": ">= 0.8" } }, + "node_modules/bytestreamjs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bytestreamjs/-/bytestreamjs-2.0.1.tgz", + "integrity": "sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/cacheable-lookup": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", @@ -5249,6 +6912,35 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -5290,9 +6982,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001677", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001677.tgz", - "integrity": "sha512-fmfjsOlJUpMWu+mAAtZZZHz7UEwsUxIIvu1TJfO1HqFQvB/B+ii0xr9B5HpbZY/mC4XZ8SvjHJqtAY6pDPQEog==", + "version": "1.0.30001767", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001767.tgz", + "integrity": "sha512-34+zUAMhSH+r+9eKmYG+k2Rpt8XttfE4yXAjoZvkAPs15xcYQhyBYdalJ65BzivAvGRMViEjy6oKr/S91loekQ==", "funding": [ { "type": "opencollective", @@ -5381,6 +7073,7 @@ "version": "1.0.0-rc.12", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "license": "MIT", "dependencies": { "cheerio-select": "^2.1.0", "dom-serializer": "^2.0.0", @@ -5401,6 +7094,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-select": "^5.1.0", @@ -5414,15 +7108,10 @@ } }, "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -5435,6 +7124,9 @@ "engines": { "node": ">= 8.10.0" }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, "optionalDependencies": { "fsevents": "~2.3.2" } @@ -5594,6 +7286,12 @@ "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", "license": "MIT" }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" + }, "node_modules/combine-promises": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/combine-promises/-/combine-promises-1.2.0.tgz", @@ -5638,16 +7336,16 @@ } }, "node_modules/compression": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.5.tgz", - "integrity": "sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", "license": "MIT", "dependencies": { "bytes": "3.1.2", "compressible": "~2.0.18", "debug": "2.6.9", "negotiator": "~0.6.4", - "on-headers": "~1.0.2", + "on-headers": "~1.1.0", "safe-buffer": "5.2.1", "vary": "~1.1.2" }, @@ -5727,9 +7425,9 @@ } }, "node_modules/consola": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", - "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", "license": "MIT", "engines": { "node": "^14.18.0 || >=16.10.0" @@ -5759,31 +7457,20 @@ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" }, "node_modules/cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", "license": "MIT" }, - "node_modules/copy-text-to-clipboard": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.0.tgz", - "integrity": "sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/copy-webpack-plugin": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", @@ -5862,12 +7549,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.39.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.39.0.tgz", - "integrity": "sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==", + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.48.0.tgz", + "integrity": "sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==", "license": "MIT", "dependencies": { - "browserslist": "^4.24.2" + "browserslist": "^4.28.1" }, "funding": { "type": "opencollective", @@ -5875,9 +7562,9 @@ } }, "node_modules/core-js-pure": { - "version": "3.39.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.39.0.tgz", - "integrity": "sha512-7fEcWwKI4rJinnK+wLTezeg2smbFFdSBP6E2kQZNbnzM2s1rpKQ6aaRteZSSg7FLU3P0HGGVo/gbpfanU36urg==", + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.48.0.tgz", + "integrity": "sha512-1slJgk89tWC51HQ1AEqG+s2VuwpTRr8ocu4n20QUcH1v9lAN0RXen0Q0AABa/DK1I7RrNWLucplOHMx8hfTGTw==", "hasInstallScript": true, "license": "MIT", "funding": { @@ -5955,10 +7642,48 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/css-blank-pseudo": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-7.0.1.tgz", + "integrity": "sha512-jf+twWGDf6LDoXDUode+nc7ZlrqfaNphrBIBrcmeP3D8yw1uPaix1gCC8LUQUGQ6CycuK2opkbFFWFuq/a94ag==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-blank-pseudo/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/css-declaration-sorter": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz", - "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.3.1.tgz", + "integrity": "sha512-gz6x+KkgNCjxq3Var03pRYLhyNfwhkKF1g/yoLgDNtFvVu0/fOLV9C8fFEZRjACp/XQLumjAYo7JVjzH3wLbxA==", "license": "ISC", "engines": { "node": "^14 || ^16 || >=18" @@ -5967,6 +7692,68 @@ "postcss": "^8.0.9" } }, + "node_modules/css-has-pseudo": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-7.0.3.tgz", + "integrity": "sha512-oG+vKuGyqe/xvEMoxAQrhi7uY16deJR3i7wwhBerVrGQKSqUC5GiOVxTpM9F9B9hw0J+eKeOWLH7E9gZ1Dr5rA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-has-pseudo/node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/css-has-pseudo/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/css-loader": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", @@ -6041,9 +7828,31 @@ "esbuild": { "optional": true }, - "lightningcss": { - "optional": true + "lightningcss": { + "optional": true + } + } + }, + "node_modules/css-prefers-color-scheme": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-10.0.0.tgz", + "integrity": "sha512-VCtXZAWivRglTZditUfB4StnsWr6YVZ2PRtuxQLKTNRdtAf8tpzaVPE9zXIF3VaSc7O70iK/j1+NXxyQCqdPjQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" } }, "node_modules/css-select": { @@ -6085,6 +7894,22 @@ "url": "https://github.com/sponsors/fb55" } }, + "node_modules/cssdb": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.7.1.tgz", + "integrity": "sha512-+F6LKx48RrdGOtE4DT5jz7Uo+VeyKXpK797FAevIkzjV8bMHz6xTO5F7gNDcRCHmPgD5jj2g6QCsY9zmVrh38A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + } + ], + "license": "MIT-0" + }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -6245,11 +8070,12 @@ "license": "MIT" }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -6309,7 +8135,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "devOptional": true + "dev": true }, "node_modules/deepmerge": { "version": "4.3.1", @@ -6319,16 +8145,32 @@ "node": ">=0.10.0" } }, - "node_modules/default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", - "license": "BSD-2-Clause", + "node_modules/default-browser": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.4.0.tgz", + "integrity": "sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==", + "license": "MIT", "dependencies": { - "execa": "^5.0.0" + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" }, "engines": { - "node": ">= 10" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/defer-to-connect": { @@ -6380,27 +8222,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/del": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", - "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", - "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -6447,35 +8268,6 @@ "detect-port": "bin/detect-port.js" } }, - "node_modules/detect-port-alt": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", - "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", - "dependencies": { - "address": "^1.0.1", - "debug": "^2.6.0" - }, - "bin": { - "detect": "bin/detect-port", - "detect-port": "bin/detect-port" - }, - "engines": { - "node": ">= 4.2.1" - } - }, - "node_modules/detect-port-alt/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/detect-port-alt/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, "node_modules/devlop": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", @@ -6515,7 +8307,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "devOptional": true, + "dev": true, "dependencies": { "esutils": "^2.0.2" }, @@ -6699,6 +8491,20 @@ "url": "https://github.com/motdotla/dotenv?sponsor=1" } }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", @@ -6716,9 +8522,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.50", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.50.tgz", - "integrity": "sha512-eMVObiUQ2LdgeO1F/ySTXsvqvxb6ZH2zPGaMYsWzRDdOddUa77tdmI0ltg+L16UpbWdhPmuF3wIQYyQq65WfZw==", + "version": "1.5.283", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.283.tgz", + "integrity": "sha512-3vifjt1HgrGW/h76UEeny+adYApveS9dH2h3p57JYzBSXJIKUJAvtmIytDKjcSCt9xHfrNCFJ7gts6vkhuq++w==", "license": "ISC" }, "node_modules/emoji-regex": { @@ -6843,13 +8649,10 @@ } }, "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, "engines": { "node": ">= 0.4" } @@ -6890,6 +8693,18 @@ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==" }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-set-tostringtag": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", @@ -6970,7 +8785,7 @@ "version": "8.56.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", - "devOptional": true, + "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -7419,7 +9234,7 @@ "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "devOptional": true, + "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -7431,7 +9246,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "devOptional": true, + "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -7447,7 +9262,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "devOptional": true, + "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -7457,7 +9272,7 @@ "version": "7.2.2", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "devOptional": true, + "dev": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -7473,7 +9288,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "devOptional": true, + "dev": true, "dependencies": { "is-glob": "^4.0.3" }, @@ -7485,7 +9300,7 @@ "version": "13.24.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "devOptional": true, + "dev": true, "dependencies": { "type-fest": "^0.20.2" }, @@ -7500,13 +9315,13 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "devOptional": true + "dev": true }, "node_modules/eslint/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "devOptional": true, + "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -7518,7 +9333,7 @@ "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "devOptional": true, + "dev": true, "engines": { "node": ">=10" }, @@ -7530,7 +9345,7 @@ "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "devOptional": true, + "dev": true, "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", @@ -7559,7 +9374,7 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "devOptional": true, + "dev": true, "dependencies": { "estraverse": "^5.1.0" }, @@ -7750,45 +9565,49 @@ } }, "node_modules/express": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", - "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", "debug": "2.6.9", "depd": "2.0.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", "merge-descriptors": "1.0.3", "methods": "~1.1.2", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.10", + "path-to-regexp": "~0.1.12", "proxy-addr": "~2.0.7", - "qs": "6.13.0", + "qs": "~6.14.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", + "send": "~0.19.0", + "serve-static": "~1.16.2", "setprototypeof": "1.2.0", - "statuses": "2.0.1", + "statuses": "~2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" }, "engines": { "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/express/node_modules/content-disposition": { @@ -7819,9 +9638,9 @@ "license": "MIT" }, "node_modules/express/node_modules/path-to-regexp": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", - "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", "license": "MIT" }, "node_modules/express/node_modules/range-parser": { @@ -7884,12 +9703,22 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "devOptional": true + "dev": true }, "node_modules/fast-uri": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz", - "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], "license": "BSD-3-Clause" }, "node_modules/fastq": { @@ -7928,6 +9757,7 @@ "version": "4.2.2", "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz", "integrity": "sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==", + "license": "MIT", "dependencies": { "xml-js": "^1.6.11" }, @@ -7963,7 +9793,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "devOptional": true, + "dev": true, "dependencies": { "flat-cache": "^3.0.4" }, @@ -8035,14 +9865,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/filesize": { - "version": "8.0.7", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", - "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -8055,17 +9877,17 @@ } }, "node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "statuses": "2.0.1", + "statuses": "~2.0.2", "unpipe": "~1.0.0" }, "engines": { @@ -8107,6 +9929,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -8124,195 +9947,55 @@ "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "bin": { "flat": "cli.js" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "devOptional": true, - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", - "devOptional": true - }, - "node_modules/follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/fork-ts-checker-webpack-plugin": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", - "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==", - "dependencies": { - "@babel/code-frame": "^7.8.3", - "@types/json-schema": "^7.0.5", - "chalk": "^4.1.0", - "chokidar": "^3.4.2", - "cosmiconfig": "^6.0.0", - "deepmerge": "^4.2.2", - "fs-extra": "^9.0.0", - "glob": "^7.1.6", - "memfs": "^3.1.2", - "minimatch": "^3.0.4", - "schema-utils": "2.7.0", - "semver": "^7.3.2", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=10", - "yarn": ">=1.0.0" - }, - "peerDependencies": { - "eslint": ">= 6", - "typescript": ">= 2.7", - "vue-template-compiler": "*", - "webpack": ">= 4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - }, - "vue-template-compiler": { - "optional": true - } - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" }, "engines": { - "node": "*" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", - "dependencies": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" - }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", "engines": { - "node": ">= 8.9.0" + "node": ">=4.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "engines": { - "node": ">=6" + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" } }, "node_modules/form-data-encoder": { @@ -8341,15 +10024,15 @@ } }, "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", "license": "MIT", "engines": { "node": "*" }, "funding": { - "type": "patreon", + "type": "github", "url": "https://github.com/sponsors/rawify" } }, @@ -8375,15 +10058,11 @@ "node": ">=14.14" } }, - "node_modules/fs-monkey": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", - "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==" - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true }, "node_modules/fsevents": { "version": "2.3.3", @@ -8442,16 +10121,21 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -8465,6 +10149,19 @@ "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", @@ -8501,6 +10198,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -8527,6 +10225,22 @@ "node": ">= 6" } }, + "node_modules/glob-to-regex.js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz", + "integrity": "sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", @@ -8537,6 +10251,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -8546,6 +10261,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -8575,41 +10291,6 @@ "node": ">=10" } }, - "node_modules/global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dependencies": { - "global-prefix": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -8654,11 +10335,12 @@ } }, "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8708,7 +10390,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "devOptional": true + "dev": true }, "node_modules/gray-matter": { "version": "4.0.3", @@ -8797,6 +10479,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -8805,9 +10488,10 @@ } }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -8842,9 +10526,10 @@ } }, "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -9096,22 +10781,6 @@ "safe-buffer": "~5.1.0" } }, - "node_modules/html-entities": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", - "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/mdevils" - }, - { - "type": "patreon", - "url": "https://patreon.com/mdevils" - } - ], - "license": "MIT" - }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -9238,6 +10907,7 @@ "url": "https://github.com/sponsors/fb55" } ], + "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", @@ -9257,25 +10927,29 @@ "license": "MIT" }, "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", "license": "MIT", "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" }, "engines": { "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", + "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", "license": "MIT" }, "node_modules/http-proxy": { @@ -9293,9 +10967,9 @@ } }, "node_modules/http-proxy-middleware": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz", - "integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==", + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", + "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", "license": "MIT", "dependencies": { "@types/http-proxy": "^1.17.8", @@ -9349,6 +11023,27 @@ "node": ">=10.17.0" } }, + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "license": "MIT", + "engines": { + "node": ">=10.18" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/icss-utils": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", @@ -9370,12 +11065,10 @@ } }, "node_modules/image-size": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz", - "integrity": "sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==", - "dependencies": { - "queue": "6.0.2" - }, + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-2.0.2.tgz", + "integrity": "sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==", + "license": "MIT", "bin": { "image-size": "bin/image-size.js" }, @@ -9383,15 +11076,6 @@ "node": ">=16.x" } }, - "node_modules/immer": { - "version": "9.0.21", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", - "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" - } - }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -9444,6 +11128,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -9478,14 +11163,6 @@ "node": ">= 0.4" } }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "engines": { - "node": ">= 0.10" - } - }, "node_modules/invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -9495,9 +11172,9 @@ } }, "node_modules/ipaddr.js": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", - "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz", + "integrity": "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==", "license": "MIT", "engines": { "node": ">= 10" @@ -9622,11 +11299,15 @@ } }, "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9741,6 +11422,39 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container/node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-installed-globally": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", @@ -9777,6 +11491,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-network-error": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz", + "integrity": "sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-npm": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", @@ -9819,14 +11545,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "engines": { - "node": ">=6" - } - }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -9878,14 +11596,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-root": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", - "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", - "engines": { - "node": ">=6" - } - }, "node_modules/is-set": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", @@ -10161,13 +11871,14 @@ "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "devOptional": true + "dev": true }, "node_modules/json5": { "version": "2.2.3", @@ -10288,13 +11999,13 @@ } }, "node_modules/launch-editor": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.9.1.tgz", - "integrity": "sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.12.0.tgz", + "integrity": "sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==", "license": "MIT", "dependencies": { - "picocolors": "^1.0.0", - "shell-quote": "^1.8.1" + "picocolors": "^1.1.1", + "shell-quote": "^1.8.3" } }, "node_modules/leven": { @@ -10309,7 +12020,7 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "devOptional": true, + "dev": true, "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -10319,9 +12030,9 @@ } }, "node_modules/lilconfig": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", - "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", "license": "MIT", "engines": { "node": ">=14" @@ -10360,6 +12071,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, "dependencies": { "p-locate": "^5.0.0" }, @@ -10391,7 +12103,7 @@ "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "devOptional": true + "dev": true }, "node_modules/lodash.uniq": { "version": "4.5.0", @@ -10467,6 +12179,15 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/mdast-util-directive": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.0.0.tgz", @@ -10880,14 +12601,32 @@ } }, "node_modules/memfs": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", - "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "version": "4.56.10", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.56.10.tgz", + "integrity": "sha512-eLvzyrwqLHnLYalJP7YZ3wBe79MXktMdfQbvMrVD80K+NhrIukCVBvgP30zTJYEEDh9hZ/ep9z0KOdD7FSHo7w==", + "license": "Apache-2.0", "dependencies": { - "fs-monkey": "^1.0.4" + "@jsonjoy.com/fs-core": "4.56.10", + "@jsonjoy.com/fs-fsa": "4.56.10", + "@jsonjoy.com/fs-node": "4.56.10", + "@jsonjoy.com/fs-node-builtins": "4.56.10", + "@jsonjoy.com/fs-node-to-fsa": "4.56.10", + "@jsonjoy.com/fs-node-utils": "4.56.10", + "@jsonjoy.com/fs-print": "4.56.10", + "@jsonjoy.com/fs-snapshot": "4.56.10", + "@jsonjoy.com/json-pack": "^1.11.0", + "@jsonjoy.com/util": "^1.9.0", + "glob-to-regex.js": "^1.0.1", + "thingies": "^2.5.0", + "tree-dump": "^1.0.3", + "tslib": "^2.0.0" }, - "engines": { - "node": ">= 4.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, "node_modules/merge-descriptors": { @@ -12733,9 +14472,9 @@ } }, "node_modules/mini-css-extract-plugin": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.2.tgz", - "integrity": "sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.10.0.tgz", + "integrity": "sha512-540P2c5dYnJlyJxTaSloliZexv8rji6rY8FhQN+WF/82iHQfA23j/xtJx97L+mXOML27EqksSek/g4eK7jaL3g==", "license": "MIT", "dependencies": { "schema-utils": "^4.0.0", @@ -12755,7 +14494,8 @@ "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "license": "ISC" }, "node_modules/minimist": { "version": "1.2.8", @@ -12775,9 +14515,10 @@ } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/multicast-dns": { "version": "7.2.5", @@ -12793,9 +14534,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "funding": [ { "type": "github", @@ -12814,7 +14555,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "devOptional": true + "dev": true }, "node_modules/negotiator": { "version": "0.6.4", @@ -12853,19 +14594,10 @@ "node": ">=18" } }, - "node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "license": "(BSD-3-Clause OR GPL-2.0)", - "engines": { - "node": ">= 6.13.0" - } - }, "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", "license": "MIT" }, "node_modules/normalize-path": { @@ -12876,15 +14608,6 @@ "node": ">=0.10.0" } }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -12992,9 +14715,13 @@ } }, "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -13116,9 +14843,9 @@ } }, "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", "license": "MIT", "engines": { "node": ">= 0.8" @@ -13128,6 +14855,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, "dependencies": { "wrappy": "1" } @@ -13176,7 +14904,7 @@ "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "devOptional": true, + "dev": true, "dependencies": { "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", @@ -13197,10 +14925,20 @@ "node": ">=12.20" } }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, "dependencies": { "yocto-queue": "^0.1.0" }, @@ -13215,6 +14953,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, "dependencies": { "p-limit": "^3.0.2" }, @@ -13239,25 +14978,49 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", + "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", "license": "MIT", "dependencies": { - "@types/retry": "0.12.0", + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", "retry": "^0.13.1" }, "engines": { - "node": ">=8" + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "license": "MIT", + "dependencies": { + "p-finally": "^1.0.0" + }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/package-json": { @@ -13341,7 +15104,8 @@ "node_modules/parse-numeric-range": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", - "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==" + "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==", + "license": "ISC" }, "node_modules/parse5": { "version": "7.1.2", @@ -13355,11 +15119,12 @@ } }, "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", - "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", + "license": "MIT", "dependencies": { - "domhandler": "^5.0.2", + "domhandler": "^5.0.3", "parse5": "^7.0.0" }, "funding": { @@ -13388,6 +15153,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, "engines": { "node": ">=8" } @@ -13396,6 +15162,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -13548,9 +15315,9 @@ } }, "node_modules/pkg-dir/node_modules/yocto-queue": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", - "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", "license": "MIT", "engines": { "node": ">=12.20" @@ -13559,115 +15326,199 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "node_modules/pkijs": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/pkijs/-/pkijs-3.3.3.tgz", + "integrity": "sha512-+KD8hJtqQMYoTuL1bbGOqxb4z+nZkTAwVdNtWwe8Tc2xNbEmdJYIYoc6Qt0uF55e6YW6KuTHw1DjQ18gMhzepw==", + "license": "BSD-3-Clause", "dependencies": { - "find-up": "^3.0.0" + "@noble/hashes": "1.4.0", + "asn1js": "^3.0.6", + "bytestreamjs": "^2.0.1", + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.3", + "tslib": "^2.8.1" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/pkg-up/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { - "locate-path": "^3.0.0" + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { - "node": ">=6" + "node": "^10 || ^12 || >=14" } }, - "node_modules/pkg-up/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "node_modules/postcss-attribute-case-insensitive": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-7.0.1.tgz", + "integrity": "sha512-Uai+SupNSqzlschRyNx3kbCTWgY/2hcwtHEI/ej2LJWc9JJ77qKgGptd8DHwY1mXtZ7Aoh4z4yxfwMBue9eNgw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "postcss-selector-parser": "^7.0.0" }, "engines": { - "node": ">=6" + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/pkg-up/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/postcss-attribute-case-insensitive/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/pkg-up/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "node_modules/postcss-calc": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz", + "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==", + "license": "MIT", "dependencies": { - "p-limit": "^2.0.0" + "postcss-selector-parser": "^6.0.11", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=6" + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" } }, - "node_modules/pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "node_modules/postcss-clamp": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", + "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">=4" + "node": ">=7.6.0" + }, + "peerDependencies": { + "postcss": "^8.4.6" } }, - "node_modules/postcss": { - "version": "8.4.47", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", - "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "node_modules/postcss-color-functional-notation": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.12.tgz", + "integrity": "sha512-TLCW9fN5kvO/u38/uesdpbx3e8AkTYhMvDZYa9JpmImWuTE99bDQ7GU7hdOADIZsiI9/zuxfAJxny/khknp1Zw==", "funding": [ { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "type": "github", + "url": "https://github.com/sponsors/csstools" }, { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-color-hex-alpha": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-10.0.0.tgz", + "integrity": "sha512-1kervM2cnlgPs2a8Vt/Qbe5cQ++N7rkYo/2rz2BkqJZIHQwaVuJgQH38REHrAi4uM0b1fqxMkWYmese94iMp3w==", + "funding": [ { "type": "github", - "url": "https://github.com/sponsors/ai" + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" } ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.1.0", - "source-map-js": "^1.2.1" + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/postcss-calc": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz", - "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==", - "license": "MIT", + "node_modules/postcss-color-rebeccapurple": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-10.0.0.tgz", + "integrity": "sha512-JFta737jSP+hdAIEhk1Vs0q0YF5P8fFcj+09pweS8ktuGuZ8pPlykHsk6mPxZ8awDl4TrcxUqJo9l1IhVr/OjQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", "dependencies": { - "postcss-selector-parser": "^6.0.11", + "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^14 || ^16 || >=18.0" + "node": ">=18" }, "peerDependencies": { - "postcss": "^8.2.2" + "postcss": "^8.4" } }, "node_modules/postcss-colormin": { @@ -13676,32 +15527,168 @@ "integrity": "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==", "license": "MIT", "dependencies": { - "browserslist": "^4.23.0", - "caniuse-api": "^3.0.0", - "colord": "^2.9.3", - "postcss-value-parser": "^4.2.0" + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0", + "colord": "^2.9.3", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-convert-values": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz", + "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-custom-media": { + "version": "11.0.6", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-11.0.6.tgz", + "integrity": "sha512-C4lD4b7mUIw+RZhtY7qUbf4eADmb7Ey8BFA2px9jUbwg7pjTZDl4KY4bvlUV+/vXQvzQRfiGEVJyAbtOsCMInw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/cascade-layer-name-parser": "^2.0.5", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/media-query-list-parser": "^4.0.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-custom-properties": { + "version": "14.0.6", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-14.0.6.tgz", + "integrity": "sha512-fTYSp3xuk4BUeVhxCSJdIPhDLpJfNakZKoiTDx7yRGCdlZrSJR7mWKVOBS4sBF+5poPQFMj2YdXx1VHItBGihQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/cascade-layer-name-parser": "^2.0.5", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-custom-selectors": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-8.0.5.tgz", + "integrity": "sha512-9PGmckHQswiB2usSO6XMSswO2yFWVoCAuih1yl9FVcwkscLjRKjwsjM3t+NIWpSU2Jx3eOiK2+t4vVTQaoCHHg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/cascade-layer-name-parser": "^2.0.5", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-custom-selectors/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-dir-pseudo-class": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-9.0.1.tgz", + "integrity": "sha512-tRBEK0MHYvcMUrAuYMEOa0zg9APqirBcgzi6P21OhxtJyJADo/SWBwY1CAwEohQ/6HDaa9jCjLRG7K3PVQYHEA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" }, "engines": { - "node": "^14 || ^16 || >=18.0" + "node": ">=18" }, "peerDependencies": { - "postcss": "^8.4.31" + "postcss": "^8.4" } }, - "node_modules/postcss-convert-values": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz", - "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==", + "node_modules/postcss-dir-pseudo-class/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", "dependencies": { - "browserslist": "^4.23.0", - "postcss-value-parser": "^4.2.0" + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" }, "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.4.31" + "node": ">=4" } }, "node_modules/postcss-discard-comments": { @@ -13767,6 +15754,195 @@ "postcss": "^8.4.31" } }, + "node_modules/postcss-double-position-gradients": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-6.0.4.tgz", + "integrity": "sha512-m6IKmxo7FxSP5nF2l63QbCC3r+bWpFUWmZXZf096WxG0m7Vl1Q1+ruFOhpdDRmKrRS+S3Jtk+TVk/7z0+BVK6g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-visible": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-10.0.1.tgz", + "integrity": "sha512-U58wyjS/I1GZgjRok33aE8juW9qQgQUNwTSdxQGuShHzwuYdcklnvK/+qOWX1Q9kr7ysbraQ6ht6r+udansalA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-visible/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-focus-within": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-9.0.1.tgz", + "integrity": "sha512-fzNUyS1yOYa7mOjpci/bR+u+ESvdar6hk8XNK/TRR0fiGTp2QT5N+ducP0n3rfH/m9I7H/EQU6lsa2BrgxkEjw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-within/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-font-variant": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-gap-properties": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-6.0.0.tgz", + "integrity": "sha512-Om0WPjEwiM9Ru+VhfEDPZJAKWUd0mV1HmNXqp2C29z80aQ2uP9UVhLc7e3aYMIor/S5cVhoPgYQ7RtfeZpYTRw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-image-set-function": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-7.0.0.tgz", + "integrity": "sha512-QL7W7QNlZuzOwBTeXEmbVckNt1FSmhQtbMRvGGqqU4Nf4xk6KUEQhAoWuMzwbSv5jxiRiSZ5Tv7eiDB9U87znA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/utilities": "^2.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-lab-function": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-7.0.12.tgz", + "integrity": "sha512-tUcyRk1ZTPec3OuKFsqtRzW2Go5lehW29XA21lZ65XmzQkz43VY2tyWEC202F7W3mILOjw0voOiuxRGTsN+J9w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, "node_modules/postcss-loader": { "version": "7.3.4", "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.4.tgz", @@ -13789,6 +15965,31 @@ "webpack": "^5.0.0" } }, + "node_modules/postcss-logical": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-8.1.0.tgz", + "integrity": "sha512-pL1hXFQ2fEXNKiNiAgtfA005T9FBxky5zkX6s4GZM2D8RkVgRqz3f4g1JUoq925zXv495qk8UNldDwh8uGEDoA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, "node_modules/postcss-merge-idents": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-6.0.3.tgz", @@ -13916,13 +16117,13 @@ } }, "node_modules/postcss-modules-local-by-default": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", - "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", "license": "MIT", "dependencies": { "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", + "postcss-selector-parser": "^7.0.0", "postcss-value-parser": "^4.1.0" }, "engines": { @@ -13932,13 +16133,26 @@ "postcss": "^8.1.0" } }, + "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/postcss-modules-scope": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", - "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", "license": "ISC", "dependencies": { - "postcss-selector-parser": "^6.0.4" + "postcss-selector-parser": "^7.0.0" }, "engines": { "node": "^10 || ^12 || >= 14" @@ -13947,19 +16161,116 @@ "postcss": "^8.1.0" } }, + "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/postcss-modules-values": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "license": "ISC", "dependencies": { - "icss-utils": "^5.0.0" + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-nesting": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-13.0.2.tgz", + "integrity": "sha512-1YCI290TX+VP0U/K/aFxzHzQWHWURL+CtHMSbex1lCdpXD1SoR2sYuxDu5aNI9lPoXpKTCggFZiDJbwylU0LEQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/selector-resolve-nested": "^3.1.0", + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-nesting/node_modules/@csstools/selector-resolve-nested": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-3.1.0.tgz", + "integrity": "sha512-mf1LEW0tJLKfWyvn5KdDrhpxHyuxpbNwTIwOYLIvsTffeyOf85j5oIzfG0yosxDgx/sswlqBnESYUcQH0vgZ0g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/postcss-nesting/node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/postcss-nesting/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" }, "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "node": ">=4" } }, "node_modules/postcss-normalize-charset": { @@ -14095,6 +16406,28 @@ "postcss": "^8.4.31" } }, + "node_modules/postcss-opacity-percentage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-3.0.0.tgz", + "integrity": "sha512-K6HGVzyxUxd/VgZdX04DCtdwWJ4NGLG212US4/LA1TLAbHgmAsTWVR86o+gGIbFtnTkfOpb9sCRBx8K7HO66qQ==", + "funding": [ + { + "type": "kofi", + "url": "https://ko-fi.com/mrcgrtz" + }, + { + "type": "liberapay", + "url": "https://liberapay.com/mrcgrtz" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, "node_modules/postcss-ordered-values": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz", @@ -14111,6 +16444,198 @@ "postcss": "^8.4.31" } }, + "node_modules/postcss-overflow-shorthand": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-6.0.0.tgz", + "integrity": "sha512-BdDl/AbVkDjoTofzDQnwDdm/Ym6oS9KgmO7Gr+LHYjNWJ6ExORe4+3pcLQsLA9gIROMkiGVjjwZNoL/mpXHd5Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-page-break": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8" + } + }, + "node_modules/postcss-place": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-10.0.0.tgz", + "integrity": "sha512-5EBrMzat2pPAxQNWYavwAfoKfYcTADJ8AXGVPcUZ2UkNloUTWzJQExgrzrDkh3EKzmAx1evfTAzF9I8NGcc+qw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-preset-env": { + "version": "10.6.1", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-10.6.1.tgz", + "integrity": "sha512-yrk74d9EvY+W7+lO9Aj1QmjWY9q5NsKjK2V9drkOPZB/X6KZ0B3igKsHUYakb7oYVhnioWypQX3xGuePf89f3g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/postcss-alpha-function": "^1.0.1", + "@csstools/postcss-cascade-layers": "^5.0.2", + "@csstools/postcss-color-function": "^4.0.12", + "@csstools/postcss-color-function-display-p3-linear": "^1.0.1", + "@csstools/postcss-color-mix-function": "^3.0.12", + "@csstools/postcss-color-mix-variadic-function-arguments": "^1.0.2", + "@csstools/postcss-content-alt-text": "^2.0.8", + "@csstools/postcss-contrast-color-function": "^2.0.12", + "@csstools/postcss-exponential-functions": "^2.0.9", + "@csstools/postcss-font-format-keywords": "^4.0.0", + "@csstools/postcss-gamut-mapping": "^2.0.11", + "@csstools/postcss-gradients-interpolation-method": "^5.0.12", + "@csstools/postcss-hwb-function": "^4.0.12", + "@csstools/postcss-ic-unit": "^4.0.4", + "@csstools/postcss-initial": "^2.0.1", + "@csstools/postcss-is-pseudo-class": "^5.0.3", + "@csstools/postcss-light-dark-function": "^2.0.11", + "@csstools/postcss-logical-float-and-clear": "^3.0.0", + "@csstools/postcss-logical-overflow": "^2.0.0", + "@csstools/postcss-logical-overscroll-behavior": "^2.0.0", + "@csstools/postcss-logical-resize": "^3.0.0", + "@csstools/postcss-logical-viewport-units": "^3.0.4", + "@csstools/postcss-media-minmax": "^2.0.9", + "@csstools/postcss-media-queries-aspect-ratio-number-values": "^3.0.5", + "@csstools/postcss-nested-calc": "^4.0.0", + "@csstools/postcss-normalize-display-values": "^4.0.1", + "@csstools/postcss-oklab-function": "^4.0.12", + "@csstools/postcss-position-area-property": "^1.0.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/postcss-property-rule-prelude-list": "^1.0.0", + "@csstools/postcss-random-function": "^2.0.1", + "@csstools/postcss-relative-color-syntax": "^3.0.12", + "@csstools/postcss-scope-pseudo-class": "^4.0.1", + "@csstools/postcss-sign-functions": "^1.1.4", + "@csstools/postcss-stepped-value-functions": "^4.0.9", + "@csstools/postcss-syntax-descriptor-syntax-production": "^1.0.1", + "@csstools/postcss-system-ui-font-family": "^1.0.0", + "@csstools/postcss-text-decoration-shorthand": "^4.0.3", + "@csstools/postcss-trigonometric-functions": "^4.0.9", + "@csstools/postcss-unset-value": "^4.0.0", + "autoprefixer": "^10.4.23", + "browserslist": "^4.28.1", + "css-blank-pseudo": "^7.0.1", + "css-has-pseudo": "^7.0.3", + "css-prefers-color-scheme": "^10.0.0", + "cssdb": "^8.6.0", + "postcss-attribute-case-insensitive": "^7.0.1", + "postcss-clamp": "^4.1.0", + "postcss-color-functional-notation": "^7.0.12", + "postcss-color-hex-alpha": "^10.0.0", + "postcss-color-rebeccapurple": "^10.0.0", + "postcss-custom-media": "^11.0.6", + "postcss-custom-properties": "^14.0.6", + "postcss-custom-selectors": "^8.0.5", + "postcss-dir-pseudo-class": "^9.0.1", + "postcss-double-position-gradients": "^6.0.4", + "postcss-focus-visible": "^10.0.1", + "postcss-focus-within": "^9.0.1", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^6.0.0", + "postcss-image-set-function": "^7.0.0", + "postcss-lab-function": "^7.0.12", + "postcss-logical": "^8.1.0", + "postcss-nesting": "^13.0.2", + "postcss-opacity-percentage": "^3.0.0", + "postcss-overflow-shorthand": "^6.0.0", + "postcss-page-break": "^3.0.4", + "postcss-place": "^10.0.0", + "postcss-pseudo-class-any-link": "^10.0.1", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^8.0.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-pseudo-class-any-link": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-10.0.1.tgz", + "integrity": "sha512-3el9rXlBOqTFaMFkWDOkHUTQekFIYnaQY55Rsp8As8QQkpiSgIYEcF/6Ond93oHiDsGb4kad8zjt+NPlOC1H0Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-pseudo-class-any-link/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/postcss-reduce-idents": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-6.0.3.tgz", @@ -14157,6 +16682,53 @@ "postcss": "^8.4.31" } }, + "node_modules/postcss-replace-overflow-wrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "license": "MIT", + "peerDependencies": { + "postcss": "^8.0.3" + } + }, + "node_modules/postcss-selector-not": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-8.0.1.tgz", + "integrity": "sha512-kmVy/5PYVb2UOhy0+LqUYAhKj7DUGDpSWa5LZqlkWJaaAV+dxxsOG3+St0yNLu6vsKD7Dmqx+nWQt0iil89+WA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-selector-not/node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/postcss-selector-parser": { "version": "6.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", @@ -14238,7 +16810,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "devOptional": true, + "dev": true, "engines": { "node": ">= 0.8.0" } @@ -14301,9 +16873,9 @@ } }, "node_modules/prismjs": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", - "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", "license": "MIT", "engines": { "node": ">=6" @@ -14395,13 +16967,31 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pvtsutils": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.6.tgz", + "integrity": "sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.8.1" + } + }, + "node_modules/pvutils": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.5.tgz", + "integrity": "sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==", + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", + "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -14410,14 +17000,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/queue": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", - "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", - "dependencies": { - "inherits": "~2.0.3" - } - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -14466,15 +17048,15 @@ } }, "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8" @@ -14489,18 +17071,6 @@ "node": ">= 0.8" } }, - "node_modules/raw-body/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -14534,48 +17104,6 @@ "node": ">=0.10.0" } }, - "node_modules/react-dev-utils": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", - "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==", - "dependencies": { - "@babel/code-frame": "^7.16.0", - "address": "^1.1.2", - "browserslist": "^4.18.1", - "chalk": "^4.1.2", - "cross-spawn": "^7.0.3", - "detect-port-alt": "^1.1.6", - "escape-string-regexp": "^4.0.0", - "filesize": "^8.0.6", - "find-up": "^5.0.0", - "fork-ts-checker-webpack-plugin": "^6.5.0", - "global-modules": "^2.0.0", - "globby": "^11.0.4", - "gzip-size": "^6.0.0", - "immer": "^9.0.7", - "is-root": "^2.1.0", - "loader-utils": "^3.2.0", - "open": "^8.4.0", - "pkg-up": "^3.1.0", - "prompts": "^2.4.2", - "react-error-overlay": "^6.0.11", - "recursive-readdir": "^2.2.2", - "shell-quote": "^1.7.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/react-dev-utils/node_modules/loader-utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", - "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", - "engines": { - "node": ">= 12.13.0" - } - }, "node_modules/react-dom": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", @@ -14588,11 +17116,6 @@ "react": "^18.2.0" } }, - "node_modules/react-error-overlay": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz", - "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==" - }, "node_modules/react-fast-compare": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", @@ -14620,15 +17143,15 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "node_modules/react-json-view-lite": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/react-json-view-lite/-/react-json-view-lite-1.5.0.tgz", - "integrity": "sha512-nWqA1E4jKPklL2jvHWs6s+7Na0qNgw9HCP6xehdQJeg6nPBTFZgGwyko9Q0oj+jQWKTTVRS30u0toM5wiuL3iw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/react-json-view-lite/-/react-json-view-lite-2.5.0.tgz", + "integrity": "sha512-tk7o7QG9oYyELWHL8xiMQ8x4WzjCzbWNyig3uexmkLb54r8jO0yH3WCWx8UZS0c49eSA4QUmG5caiRJ8fAn58g==", "license": "MIT", "engines": { - "node": ">=14" + "node": ">=18" }, "peerDependencies": { - "react": "^16.13.1 || ^17.0.0 || ^18.0.0" + "react": "^18.0.0 || ^19.0.0" } }, "node_modules/react-loadable": { @@ -14707,6 +17230,20 @@ "react": ">=15" } }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -14718,52 +17255,11 @@ "node": ">=8.10.0" } }, - "node_modules/reading-time": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz", - "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==" - }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/recursive-readdir": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", - "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", - "dependencies": { - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/recursive-readdir/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/recursive-readdir/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } + "node_modules/reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", + "license": "Apache-2.0" }, "node_modules/reflect.getprototypeof": { "version": "1.0.4", @@ -15158,6 +17654,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -15177,17 +17674,21 @@ "license": "MIT" }, "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", + "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -15246,6 +17747,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, "dependencies": { "glob": "^7.1.3" }, @@ -15256,11 +17758,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rtl-detect": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.1.2.tgz", - "integrity": "sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ==" - }, "node_modules/rtlcss": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-4.3.0.tgz", @@ -15279,6 +17776,18 @@ "node": ">=12.0.0" } }, + "node_modules/run-applescript": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -15364,12 +17873,17 @@ "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" }, "node_modules/sax": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", - "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.4.tgz", + "integrity": "sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } }, "node_modules/scheduler": { "version": "0.23.0", @@ -15379,10 +17893,16 @@ "loose-envify": "^1.1.0" } }, + "node_modules/schema-dts": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/schema-dts/-/schema-dts-1.1.5.tgz", + "integrity": "sha512-RJr9EaCmsLzBX2NDiO5Z3ux2BVosNZN5jo0gWgsyKvxKIUL5R3swNvoorulAeL9kLB0iTSX7V6aokhla2m7xbg==", + "license": "Apache-2.0" + }, "node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", @@ -15391,48 +17911,13 @@ "ajv-keywords": "^5.1.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 10.13.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" } }, - "node_modules/schema-utils/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/schema-utils/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/search-insights": { - "version": "2.17.2", - "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.2.tgz", - "integrity": "sha512-zFNpOpUO+tY2D85KrxJ+aqwnIfdEGi06UH2+xEb+Bp9Mwznmauqc9djbnBibJO5mpfUPPa8st6Sx65+vbeO45g==", - "license": "MIT", - "peer": true - }, "node_modules/section-matter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", @@ -15452,16 +17937,16 @@ "license": "MIT" }, "node_modules/selfsigned": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", - "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-5.5.0.tgz", + "integrity": "sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew==", "license": "MIT", "dependencies": { - "@types/node-forge": "^1.3.0", - "node-forge": "^1" + "@peculiar/x509": "^1.14.2", + "pkijs": "^3.3.3" }, "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/semver": { @@ -15491,24 +17976,24 @@ } }, "node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "range-parser": "~1.2.1", - "statuses": "2.0.1" + "statuses": "~2.0.2" }, "engines": { "node": ">= 0.8.0" @@ -15529,21 +18014,6 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, - "node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, "node_modules/send/node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -15626,21 +18096,25 @@ "license": "MIT" }, "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.2.tgz", + "integrity": "sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==", "license": "MIT", "dependencies": { - "accepts": "~1.3.4", + "accepts": "~1.3.8", "batch": "0.6.1", "debug": "2.6.9", "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" + "http-errors": "~1.8.0", + "mime-types": "~2.1.35", + "parseurl": "~1.3.3" }, "engines": { "node": ">= 0.8.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/serve-index/node_modules/debug": { @@ -15662,38 +18136,27 @@ } }, "node_modules/serve-index/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", "license": "MIT", "dependencies": { "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" }, "engines": { "node": ">= 0.6" } }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "license": "ISC" - }, "node_modules/serve-index/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "license": "ISC" - }, "node_modules/serve-index/node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -15704,15 +18167,15 @@ } }, "node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", "license": "MIT", "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.19.0" + "send": "~0.19.1" }, "engines": { "node": ">= 0.8.0" @@ -15791,39 +18254,81 @@ } }, "node_modules/shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" }, - "bin": { - "shjs": "bin/shjs" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -16003,20 +18508,6 @@ "wbuf": "^1.7.3" } }, - "node_modules/spdy-transport/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -16026,6 +18517,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/srcset/-/srcset-4.0.0.tgz", "integrity": "sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -16034,24 +18526,25 @@ } }, "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/std-env": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", - "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", "license": "MIT" }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" } @@ -16476,7 +18969,24 @@ "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/thingies": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.5.0.tgz", + "integrity": "sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==", + "license": "MIT", + "engines": { + "node": ">=10.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "^2" + } }, "node_modules/thunky": { "version": "1.1.0", @@ -16494,6 +19004,15 @@ "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" }, + "node_modules/tinypool": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -16523,6 +19042,22 @@ "node": ">=6" } }, + "node_modules/tree-dump": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.1.0.tgz", + "integrity": "sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/trim-lines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", @@ -16566,9 +19101,10 @@ } }, "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" }, "node_modules/tsutils": { "version": "3.21.0", @@ -16591,11 +19127,29 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, + "node_modules/tsyringe": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/tsyringe/-/tsyringe-4.10.0.tgz", + "integrity": "sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==", + "license": "MIT", + "dependencies": { + "tslib": "^1.9.3" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/tsyringe/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "devOptional": true, + "dev": true, "dependencies": { "prelude-ls": "^1.2.1" }, @@ -16704,6 +19258,7 @@ "version": "5.3.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "devOptional": true, "peer": true, "bin": { "tsc": "bin/tsc", @@ -16919,9 +19474,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", "funding": [ { "type": "opencollective", @@ -16939,7 +19494,7 @@ "license": "MIT", "dependencies": { "escalade": "^3.2.0", - "picocolors": "^1.1.0" + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -17100,7 +19655,8 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" }, "node_modules/utila": { "version": "0.4.0", @@ -17128,6 +19684,7 @@ "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -17299,33 +19856,58 @@ } }, "node_modules/webpack-dev-middleware": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", - "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz", + "integrity": "sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==", "license": "MIT", "dependencies": { "colorette": "^2.0.10", - "memfs": "^3.4.3", - "mime-types": "^2.1.31", + "memfs": "^4.43.1", + "mime-types": "^3.0.1", + "on-finished": "^2.4.1", "range-parser": "^1.2.1", "schema-utils": "^4.0.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } } }, - "node_modules/webpack-dev-middleware/node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "license": "MIT" + "node_modules/webpack-dev-middleware/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack-dev-middleware/node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } }, "node_modules/webpack-dev-middleware/node_modules/range-parser": { "version": "1.2.1", @@ -17337,54 +19919,52 @@ } }, "node_modules/webpack-dev-server": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", - "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", - "license": "MIT", - "dependencies": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.5", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.3.tgz", + "integrity": "sha512-9Gyu2F7+bg4Vv+pjbovuYDhHX+mqdqITykfzdM9UyKqKHlsE5aAjRhR+oOEfXW5vBeu8tarzlJFIZva4ZjAdrQ==", + "license": "MIT", + "dependencies": { + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.25", + "@types/express-serve-static-core": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", "colorette": "^2.0.10", - "compression": "^1.7.4", + "compression": "^1.8.1", "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", + "express": "^4.22.1", "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "launch-editor": "^2.6.0", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.1.1", + "http-proxy-middleware": "^2.0.9", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "schema-utils": "^4.2.0", + "selfsigned": "^5.5.0", "serve-index": "^1.9.1", "sockjs": "^0.3.24", "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.4", - "ws": "^8.13.0" + "webpack-dev-middleware": "^7.4.2", + "ws": "^8.18.0" }, "bin": { "webpack-dev-server": "bin/webpack-dev-server.js" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" + "webpack": "^5.0.0" }, "peerDependenciesMeta": { "webpack": { @@ -17395,16 +19975,40 @@ } } }, - "node_modules/webpack-dev-server/node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "license": "MIT" + "node_modules/webpack-dev-server/node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack-dev-server/node_modules/open": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", "license": "MIT", "engines": { "node": ">=10.0.0" @@ -17753,7 +20357,8 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true }, "node_modules/write-file-atomic": { "version": "3.0.3", @@ -17787,6 +20392,36 @@ } } }, + "node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wsl-utils/node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/xdg-basedir": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", @@ -17802,6 +20437,7 @@ "version": "1.6.11", "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "license": "MIT", "dependencies": { "sax": "^1.2.4" }, @@ -17815,14 +20451,6 @@ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "license": "ISC" }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "engines": { - "node": ">= 6" - } - }, "node_modules/yet-another-react-lightbox": { "version": "3.16.0", "resolved": "https://registry.npmjs.org/yet-another-react-lightbox/-/yet-another-react-lightbox-3.16.0.tgz", @@ -17839,6 +20467,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, "engines": { "node": ">=10" }, diff --git a/package.json b/package.json index 52a83fa8cd..da050b75be 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,8 @@ "clear": "docusaurus clear", "serve": "docusaurus serve", "write-translations": "docusaurus write-translations", - "write-heading-ids": "docusaurus write-heading-ids" + "write-heading-ids": "docusaurus write-heading-ids", + "version": "docusaurus docs:version" }, "repository": { "type": "git", @@ -25,9 +26,9 @@ }, "homepage": "https://github.com/reportportal/documentation#readme", "dependencies": { - "@docusaurus/core": "^3.6.0", - "@docusaurus/plugin-client-redirects": "^3.6.0", - "@docusaurus/preset-classic": "^3.6.0", + "@docusaurus/core": "^3.9.2", + "@docusaurus/plugin-client-redirects": "^3.9.2", + "@docusaurus/preset-classic": "^3.9.2", "@mdx-js/react": "3.0.0", "clsx": "^2.0.0", "dotenv": "^16.3.1", @@ -38,9 +39,9 @@ "yet-another-react-lightbox": "^3.15.6" }, "devDependencies": { - "@docusaurus/eslint-plugin": "^3.6.0", - "@docusaurus/module-type-aliases": "^3.6.0", - "@docusaurus/types": "^3.3.2", + "@docusaurus/eslint-plugin": "^3.9.2", + "@docusaurus/module-type-aliases": "^3.9.2", + "@docusaurus/types": "^3.9.2", "docusaurus-mdx-checker": "^3.0.0", "eslint": "^8.56.0", "eslint-config-airbnb": "^19.0.4", diff --git a/src/css/custom.css b/src/css/custom.css index 9e3e454e8f..1333f46f86 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -97,4 +97,32 @@ h1 { .version-button .dropdown--right .dropdown__menu { left: 0px; +} + +.navbar__item.dropdown.dropdown--hoverable.dropdown--right { + border: 1px solid var(--ifm-color-primary); + border-radius: 20px; + padding: 4px 12px; + transition: all 0.2s ease; +} + +.navbar__item.dropdown.dropdown--hoverable.dropdown--right:hover { + background-color: var(--ifm-color-primary); +} + +.navbar__item.dropdown.dropdown--hoverable.dropdown--right:hover .navbar__link { + color: #fff; +} + +.navbar__item.dropdown.dropdown--hoverable.dropdown--right .navbar__link { + padding: 0; + font-size: 14px; +} + +.navbar__item.dropdown.dropdown--hoverable.dropdown--right .navbar__link::after { + border-color: var(--ifm-color-primary) transparent transparent; +} + +.navbar__item.dropdown.dropdown--hoverable.dropdown--right:hover .navbar__link::after { + border-color: #fff transparent transparent; } \ No newline at end of file diff --git a/versioned_docs/version-26.1/FAQ/img/ApiService.png b/versioned_docs/version-26.1/FAQ/img/ApiService.png new file mode 100644 index 0000000000..71fd10a4cf Binary files /dev/null and b/versioned_docs/version-26.1/FAQ/img/ApiService.png differ diff --git a/versioned_docs/version-26.1/FAQ/img/DemoPersonal.png b/versioned_docs/version-26.1/FAQ/img/DemoPersonal.png new file mode 100644 index 0000000000..3052c12a64 Binary files /dev/null and b/versioned_docs/version-26.1/FAQ/img/DemoPersonal.png differ diff --git a/versioned_docs/version-26.1/FAQ/img/DemoShared.png b/versioned_docs/version-26.1/FAQ/img/DemoShared.png new file mode 100644 index 0000000000..a84d20ec38 Binary files /dev/null and b/versioned_docs/version-26.1/FAQ/img/DemoShared.png differ diff --git a/versioned_docs/version-26.1/FAQ/img/NewVersions.png b/versioned_docs/version-26.1/FAQ/img/NewVersions.png new file mode 100644 index 0000000000..6857717c4e Binary files /dev/null and b/versioned_docs/version-26.1/FAQ/img/NewVersions.png differ diff --git a/versioned_docs/version-26.1/FAQ/index.md b/versioned_docs/version-26.1/FAQ/index.md new file mode 100644 index 0000000000..5ab8576bfd --- /dev/null +++ b/versioned_docs/version-26.1/FAQ/index.md @@ -0,0 +1,182 @@ +--- +title: FAQ +sidebar_position: 24 +description: Find quick answers about installing, integrating, and using ReportPortal, from AI features and licenses to dashboards, integrations, and performance guidance. +--- + +# 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?](/FAQ/#1-does-on-prem-installed-reportportal-make-any-external-calls-what-are-the-content-and-nature-of-these-calls) +2. [Assuming ReportPortal locally caches logs to understand their content, where are these stored, and what are the associated retention policies?](/FAQ/#2-assuming-reportportal-locally-caches-logs-to-understand-their-content-where-are-these-stored-and-what-are-the-associated-retention-policies) +3. [How is data encrypted in transit and at rest?](/FAQ/#3-how-is-data-encrypted-in-transit-and-at-rest) +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?](/FAQ/#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) +5. [Is there any training available to use ReportPortal effectively?](/FAQ/#5-is-there-any-training-available-to-use-reportportal-effectively) +6. [Is there a demo available?](/FAQ/#6-is-there-a-demo-available) +7. [How can I begin using ReportPortal?](/FAQ/#7-how-can-i-begin-using-reportportal) +8. [Does the tool integrate with my existing test automation framework?](/FAQ/#8-does-the-tool-integrate-with-my-existing-test-automation-framework) +9. [What type of license does ReportPortal use?](/FAQ/#9-what-type-of-license-does-reportportal-use) +10. [Does ReportPortal have any paid features?](/FAQ/#10-does-reportportal-have-any-paid-features) +11. [Does ReportPortal use AI?](/FAQ/#11-does-reportportal-use-ai) +12. [Do we need specific infrastructure prerequisites to avoid performance problems?](/FAQ/#12-do-we-need-specific-infrastructure-prerequisites-to-avoid-performance-problems) +13. [What types of reports can I generate with the ReportPortal?](/FAQ/#13-what-types-of-reports-can-i-generate-with-the-reportportal) +14. [Can ReportPortal aggregate performance test results?](/FAQ/#14-can-reportportal-aggregate-performance-test-results) +15. [Does ReportPortal have integration with Jira?](/FAQ/#15-does-reportportal-have-integration-with-jira) +16. [How can I check the ReportPortal version?](/FAQ/#16-how-can-i-check-the-reportportal-version) +17. [How can I check if the ReportPortal API is working?](/FAQ/#17-how-can-i-check-if-the-reportportal-api-is-working) +18. [What are the application limits in ReportPortal?](/FAQ/#18-what-are-the-application-limits-in-reportportal) + +#### 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 OpenSearch 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](/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? + +You can explore ReportPortal without installation by visiting our [demo instance](https://demo.reportportal.io/) which offers: +* Free trial available indefinitely +* Data is flushed every 24 hours +* All enterprise features included + +You can either join a shared project or create a personal one. + +When a user visits the demo instance, they can log in using the default/pre-filled credentials. In this case, they will access a **shared project** that is available to everyone using the same demo account. This means that anything they report will be visible to all users and can be modified or managed by anyone. + + + +Alternatively, the user can log in via GitHub. In this case, a **personal project** and user account will be created just for them. Only that user will be able to view and manage the data reported within their personal project. + + + +If you need a personalized demo session, please leave your [contact details](https://reportportal.io/contact-us/general/). To get a quick overview, check out our [demo video](https://www.youtube.com/watch?v=AKA_O8lcIdc). + +#### 7. How can I begin using ReportPortal? + +The initial steps involve installing and configuring the tool. [Installation steps](/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](/26.1/quality-gates/IntegrationWithCICD/IntegrationWithGitLabCI/), [Integration with Jenkins](/26.1/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? + +We offer two premium features: + +* [Quality Gates](/26.1/quality-gates/) – a set of predefined criteria that must be met for a test run to be considered successful. +* [SCIM Server](/features/SCIMServerFeature) – helps automate user management by syncing users and their access rights between your identity provider and ReportPortal. + +#### 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 [Hardware Requirements](/installation-steps/HardwareRequirements). + +#### 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). + +Depending on your needs, you can create either a report for a [single test run](/dashboards-and-widgets/PossibleDashboardsInReportPortal#report-for-one-tests-run-a-dashboard-for-an-engineer) or a [Build/Release/Sprint Report](/dashboards-and-widgets/PossibleDashboardsInReportPortal#build--release-sprint-report-a-dashboard-for-a-team-leads-pm-dm). ReportPortal also allows you to generate various types of [test automation reports](https://reportportal.io/blog/how-to-create-test-report-with-reportportal) using widgets, including: + +* Summary Report +* Detailed Test Case Report +* Trend Analysis Report +* Failure Analysis Report +* Execution History Report + +#### 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](https://github.com/reportportal/reportportal/issues/1820) in JUnit format into ReportPortal. + +#### 15. Does ReportPortal have integration with Jira? + +Our test automation reporting dashboard have integration with following Bug Tracking Systems: [Jira Server](/plugins/bug-tracking/AtlassianJiraServer), [Jira Cloud](/plugins/bug-tracking/AtlassianJiraCloud), [Azure DevOps](/plugins/bug-tracking/AzureDevOps), [GitLab](/plugins/bug-tracking/GitLab), [Monday](/plugins/bug-tracking/Monday) and [Rally](/plugins/bug-tracking/Rally). + +#### 16. How can I check the ReportPortal version? + +You can find the current version of ReportPortal on the login page. Simply hover your mouse over the ```i``` icon next to the "New versions are available" message to see the version details. + + + +#### 17. How can I check if the ReportPortal API is working? + +Open your browser and go to the following URL: ```http://{your-hostname}/composite/info```. This page provides essential information about the API's status. + + + +#### 18. What are the application limits in ReportPortal? + +ReportPortal has defined application limits to maintain stable performance and consistent API behavior across all projects and endpoints. Below is the complete list of limits and recommendations: + +**1. Pagination & Collections** + +**Max page size: 300** items per page across collection endpoints: +- Launches +- Dashboards +- Filters +- Project members +- Suites / Tests / Steps / Logs +- Widgets + +**2. Dashboards & Widgets** + +- **Dashboards per project:** up to **3,000** (increased from 300 in version 24.2). +- **Dashboard name length: 3–55** characters, must be unique per user per project. +- **Widget fullscreen auto-refresh:** occurs every **30 seconds**. +- **Test Case Search widget results cap: 300** total cases (10 per page × 30 pages). + +**3. Attributes & Text Fields** + +- **Attribute key length:** up to **512** characters. +- **Attribute value length:** up to **512** characters. +- **Quality Gate name length** (Managed Plugin): **1–55** characters. + +**4. Files, Uploads & Storage** + +- **API attachment uploads:** default limit **64 MB** (configurable at the service-api level). +- **JUnit/Robot imports via UI:** up to **32 MB** per ZIP/XML file. +- **User avatars:** + - Accepted formats: **JPEG, PNG, GIF** + - Maximum size: **1 MB** + - Maximum dimensions: **300×500 px** +- **RabbitMQ message size:** infrastructure-dependent; it’s recommended to keep log payloads reasonably sized, as very large logs may be rejected to process. + +**5. API Behavior & Miscellaneous** + +- **Rate limiting:** none built-in; throughput and concurrency depend on infrastructure capacity. +- **Import timeout UX:** works similar to ```/v2``` reporting, depends on infrastructure. + +**6. Launch Merge** + +- **No hard cap**, but treat **around 20 launches** per merge as a safe operational limit, unless you have tested higher based on your infrastructure size and data distribution. + +:::note +All bulk operations triggered from the “Make decision” modal are limited to 300 test items per request.
+When more items are selected, the operation must be divided into multiple requests. +::: diff --git a/versioned_docs/version-26.1/admin-panel/AllProjectsPage.mdx b/versioned_docs/version-26.1/admin-panel/AllProjectsPage.mdx new file mode 100644 index 0000000000..11dd2f2b9b --- /dev/null +++ b/versioned_docs/version-26.1/admin-panel/AllProjectsPage.mdx @@ -0,0 +1,184 @@ +--- +sidebar_position: 1 +sidebar_label: All Projects page +description: Manage all projects in ReportPortal with administrator privileges. View project details, settings, and user access for comprehensive test automation reporting tools administration. +--- + +# All Projects page + +Users with the `Administrator` role have access to the ReportPortal "Administrate" section. + +In "Administrate" section you can: + +- Manage projects: create a project, delete a project, update project settings. + +- Manage users: create a user, invite a user to ReportPortal, delete a user, update a user project role, assign a user to projects/unassign a user from +projects. + +To go to the "Administrate" section, open menu at the bottom of the page and select "Administrate" option. + +All existing projects are displayed on the "Projects" page. + +For each project, the following information is displayed: + +- Project name - the link to the "Dashboards" page of a project +- Project type: "Internal" or "Personal" +- Number of assigned team members +- Number of launches +- Last Launch date +- "See detailed information" button +- Ellipsis button + +By clicking on ellipsis button, a dropdown with the next options appears: + +- Members +- Settings +- Assign/Unassign +- Delete + +:::note +Administrator has access to a project even if they are not assigned to this project. +::: + +## Projects Navigation – Sorting and Search + +By default, projects are sorted by the name in our test automation reporting dashboard. + +You can sort projects using the buttons from the "Sort by" section at the top. +The sorting can be performed by: Creation date, Name, Members, Launches, Last Launch date, Project Type, Organization. + +To find a project quickly, type 3 or more symbols of the project name into the +"Search" field. + + + +All Projects page allows: + - to create a project + - to update project settings + - to invite users + - to view project information + - to delete a project (except PERSONAL project) + +## Create projects + +To create a project: + +1. Login into the ReportPortal instance as an `Administrator`. +2. Open menu at the bottom. +3. Click the 'Administrate' link. +4. Select 'Projects' from the left-hand sidebar. +5. Click the 'Add New Project' button in the right top corner. +6. Then enter a name of the project. +7. Click the 'Add' button. + +A confirmation message in the status bar should appear. + +:::note +The name of the project should contain between 3-256 symbols. +It can include Latin and numeric characters, as well as underscores and dashes. +The name should be unique and cannot be changed after saving. +::: +An Admin can configure the project settings or leave them as the default. +Project members with PROJECT_MANAGER roles are able to set up the project settings. +To know how project settings could be updated, go to the [Project Settings](/configuration/ProjectSettings) section. + +## Modify project settings + +To modify project settings please refer to [Project Settings](/configuration/ProjectSettings) + +## Invite user on "All Projects" page + +:::info +Depending on the toggle state in [Server Settings](/admin-panel/ServerSettings), the ability to manually invite external users to ReportPortal can be disabled. +::: + +To invite a user to a project on "All Projects" page, perform the following steps: + +1. Login into the ReportPortal instance as an `Administrator`. + +2. Navigate to the "Administrate" section -> "All Projects" page + +3. Click on ellipsis button on the project preview. + +4. Select the "Members" option. + +5. Click on the "Invite User" button. + +6. Enter the email address of the user in case he/she is not present in ReportPortal database + or enter his/her login name in the "Login or email" field. In case the user is already available in ReportPortal, his/her name will appear in the suggestion list. +If not, the Admin should enter correct email address. + +7. Select an appropriate role in the "Project role" dropdown. + +8. Click on the "Invite" button. + +9. In the case the user is already available in ReportPortal she/he will be assigned to the project. +If not, the email with the invitation link will be sent to user email address. + +10. The user will receive an email with the link to the registration page. +When the user clicks the link, he/she will see a registration form. + +11. The user needs to fill in the registration form and click the "Register" +button to complete the registration. + +12. The user will be assigned to the project that the invitation was sent from, and to "Personal Project" with the PROJECT + MANAGER project role. + + + +:::note +The link for registration will be active until the user registers in the system for up to, +but not exceeding 24 hours. +::: + +## Detailed project info + +1. Login into ReportPortal instance as `Administrator`. + +2. Navigate to the "Administrate" section -\> "All Projects" page. + +3. Click "See detailed information" button. + +4. View aggregated data of the selected project. Available period options are: + - last 6 months + - last 3 months + - last month. + +## Delete projects + +To delete a project, perform the following steps: + +1. Login into ReportPortal instance as `Administrator`. + +2. Navigate to the "Administrate" section -> "All Projects" page. + +3. Click on ellipsis button on the project preview. + +4. Click on the "Delete" option. A warning pop-up message will appear. + +5. Click "Delete". The project will be deleted from ReportPortal. + + + +:::note +PERSONAL PROJECTS cannot be deleted from the system. +::: +## Use Case 1 + +**Situation:** We have a small team. Everybody can see everything. We need one dashboard which shows information about the whole project. + +**Solution:** Create one project. Assign all users on the created project. View all types of test cases (UI, API, Unit and so on) on this project. Divide executions by custom filters. Create a dashboard with a widget based on filters. + +**Pros:** You have a dashboard that can combine all results needed for your team. You need to configure only one project. + +**Cons:** All team members can see all results, you can not configure permissions rules. + +## Use Case 2 + +**Situation:** We have a big team with a difficult permission structure and nested streams. Only persons with granted permissions can see results of a certain stream. + +**Solution:** Create separate projects for different streams. Assign users to appropriate projects. Create a dashboard with a widget based on filters for each project. + +**Pros:** Security, only users with granted permission will have access to the data. + +**Cons:** You can not see a single dashboard for several dashboards. diff --git a/versioned_docs/version-26.1/admin-panel/AllUsersPage.mdx b/versioned_docs/version-26.1/admin-panel/AllUsersPage.mdx new file mode 100644 index 0000000000..7e303f90d1 --- /dev/null +++ b/versioned_docs/version-26.1/admin-panel/AllUsersPage.mdx @@ -0,0 +1,202 @@ +--- +sidebar_position: 2 +sidebar_label: All Users page +description: Manage all users in ReportPortal with administrator privileges. View user details, roles, and permissions for comprehensive test automation reporting tools administration. +--- + +# All Users page + +The "All Users" page in "Administrate" section provides the access to see all available users in the our Testops system. + +The page provides next information: + * user's information: login, full name, email address + * last login date: in 'time ago' format + * projects on which users are assigned and roles on them + * Delete button: only Admin is able to delete user from the system + +"All Users" page allows: + - to add and invite new ReportPortal users. + - to assign users to the projects with any project role. + - to unassign users from projects. + - to update project role + - to delete users from ReportPortal. + +ReportPortal allows to create a new user account on the "All Users" page in the "Administration" section. + +## Add user + +:::info +Depending on the toggle state in [Server Settings](/admin-panel/ServerSettings), the ability to manually invite external users to ReportPortal can be disabled. +::: + +To add a user on the "All Users" page, perform the following steps: + +1. Login into ReportPortal instance as `Administrator`. + +2. Navigate to the "Administrate" section -> "All users" page. + +3. Click on the "Add User" button. + +4. Fill all fields with valid data in the "Add user" form and click on the "Add" button. + +A new user will be added to the system and assigned to the selected project, and to "Personal Project" with the +PROJECT MANAGER project role. Message with authorization data will be sent to the user's email. + +:::note +If you do not need a personal project, `ADMINISTRATOR` can delete it. This project will be removed from the instance. But if the user is unassigned from all projects in the system, and he/she will log in to the ReportPortal after that - the deleted personal project will be created once more time. +::: + + + +:::note +This is the only place in the system where an Administrator can be created +from. "Project role" is disabled, if Administrator has been selected in the +"Account role" field. The "ProjectRole" parameter is not specified for +Administrator, the Administrator has full privileges on the project. +::: + +:::important +Please, do not forget to review project roles on regular basis. We recommend to do it at least quarterly. +::: + +## Invite user on the "All Users" page + +:::info +Depending on the toggle state in [Server Settings](/admin-panel/ServerSettings), the ability to manually invite external users to ReportPortal can be disabled. +::: + +To invite a user on the "All Users" page, perform the following steps: + +1. Login into ReportPortal instance as `Administrator`. + +2. Navigate to the "Administrate" section -\> "All users" page. + +3. Click on the "Invite User" button. + +4. Fill all fields with valid data in the "Invite user" form and click on the "Invite" button. The invitation + has been sent. You can copy the link to the invitation from the "Link to + invitation" field. + +5. The user will receive an email with the link to the invitation. Registration +link will be active until the user registers in the system by this reference, +but not more than 24 hours. When the user clicks the link, he/she will see a registration form. + +6. The user needs to fill in the registration form and click the "Register" button to complete the registration. +The user will be assigned to the project that was specified by you during the invitation, +and to "Personal Project" with the PROJECT MANAGER project role. + + + +## Assign user on project + +To assign user on the "All Users" page, perform the following +steps: + +1. Login into ReportPortal instance as `Administrator`. + +2. Navigate to the "Administrate" section -> "All Users" page. + +3. Find a user and their projects in the "Projects and roles" column. + +4. Click on the name of any project. + +5. Click "Add project" button. + +6. Fill the name of project. + +7. Select a project role. + +8. Click on the "Tick" button. - The user will be assigned to the project. + +## Unassign user from the project + +To unassign a user from the project, perform the following steps: + +1. Navigate to the "Administrate" section -> "All Users" page. + +2. Find a user and their project in the "Projects and roles" column. + +3. Click on the name of project. + +4. Click on "Cross" icon near the needed project. + +5. Confirm the action. - The user will be unassigned from the project. + + + +:::note +Users can not be unassigned from their own personal projects. +::: + +## Edit user's project role + +To edit a user project role on the "All Users" page, perform the following +steps: + +1. Login into ReportPortal instance as `Administrator`. + +2. Navigate to the "Administrate" section -\> "All Users" page. + +3. Find a user and their project in the "Projects and roles" column. + +4. Click on the name of project. + +5. Select a new value from the "Project Role" drop-down. + +6. Click on the tick button. + + + +## Delete user + +To delete a user from ReportPortal, perform the following steps: + +1. Login into ReportPortal instance as `Administrator`. + +2. Navigate to the "Administrate" section -> "All Users" page. + +3. Select a user and click the "Delete" button. + +4. The warning message will be displayed. + +5. Click the "Delete" button. The user will be deleted from the ReportPortal. All launches that the user owns on the projects will be kept in ReportPortal. + + + +## Edit user account role + +The only space in ReportPortal where user can get the Administrator rights is All Users page. + +**Give ADMINISTRATOR role** + +To give Administrator role for any user, perform the following steps: + +1. Login into the ReportPortal instance as `Administrator`. + +2. Navigate to the "Administrate" section -> "All Users" page. + +3. Hover over user's name. - "Make admin" button will be displayed. + +4. Click on the "Make admin" button. - A confirmation message will be shown. + +5. Click "Change" button on pop-up window. Account role User will be changed to + Administrator. The user account will be marked with "admin" label. + + + +**Take away ADMINISTRATOR role** + +To take away Administrator account role, perform the following steps: + +1. Login into ReportPortal instance as `Administrator`. + +2. Navigate to the "Administrate" section -> "All Users" page. + +3. Click on the "Admin" button near the user's name. + +4. A confirm message will be shown. + +5. Click "Change" button. Account role "Administrator" will be changed to + "User". + + diff --git a/versioned_docs/version-26.1/admin-panel/EventMonitoring.mdx b/versioned_docs/version-26.1/admin-panel/EventMonitoring.mdx new file mode 100644 index 0000000000..3ddeba9d6b --- /dev/null +++ b/versioned_docs/version-26.1/admin-panel/EventMonitoring.mdx @@ -0,0 +1,68 @@ +--- +sidebar_position: 3 +sidebar_label: Event monitoring +description: Monitor all activities and events in ReportPortal at project and instance levels for comprehensive test automation reporting tools administration and auditing. +--- + +# Event monitoring + +Starting from version 23.2, ReportPortal can monitor all activities (events) at both the project and instance levels. + +## Project level event monitoring + +To view the list of all activities within your project, open the menu at the bottom of the page as an `Administrator` and select the "Administrate" option. All existing projects are listed on the "All Projects" page. Click on the ellipsis button next to the project and choose the "Monitoring" option from the dropdown. + +Here, you will find a table with the following columns: Time, User, Action, Object Type, Object Name, Old Value, and New Value. + + + +### Time + +This column displays the time in a "time ago" format (e.g., "10 minutes ago"). Hovering over it, the system should show the precise action time. + +### User + +This column shows who acted. We track not only actions by specific users but also, for your convenience, actions performed by ReportPortal itself or certain ReportPortal services. For example, actions by Jobs Service (such as Launch deletions) are included. + +If the activity was on behalf of a user, and their account was deleted, then there will be a "deleted user" entry in the "User" column. + +### Action + +This column displays all events within this project. + +**Event actions:** Create dashboard, Update dashboard, Delete dashboard, Create widget, Update widget, Delete widget, Create filter, Update filter, Delete filter, Create custom defect type, Update defect, Delete defect, Create integration, Update integration, Delete integration, Start launch, Finish launch, Delete launch, Update project, Update analyzer, Post issue, Link issue, Unlink issue, Generate index, Delete index, Start import, Finish import, Update item, AA linked issue, AA changed defect type, Create pattern rule, Update pattern rule, Delete pattern rule, PA find pattern. + +### Object Type + +This refers to the object on which the action was taken. + +**Event objects:** Launch, Dashboard, Custom defect type, Notification rule, Filter, Import, Integration, Test item, Project, Ticket, User, Widget, Pattern Rule, index, Plugin. + +### Object Name + +This is the name of the widget, launch, etc. + +The **Old Value** and **New Value** columns display the changes that were made. + +You can filter activities by user, action, object type, and object name. + + + +Another way to view the event list in your project is by creating a ["Project Activity Panel" widget](/dashboards-and-widgets/ProjectActivityPanel). + +## Instance level event monitoring + +Instance level events are not displayed in the UI – they are stored in the database. + +**Instance level events:** Account deletion, Bulk account deletion, Administrator unassign, Provide Administrator permission for a user, Project creation, Bulk delete project by ReportPortal administrator, Delete project by ReportPortal administrator, Delete project by ReportPortal administrator, Delete Personal project when deleting user, Create Global Integration, Update Global Integration, Delete Global Integration, Bulk delete of Global Integration via API only, Manual plugin upload, Delete Plugin, Update Plugin (disable/enable), Create user in Administrate, Create user via auth service SAML. + +Additionally, during instance setup, you can enable event storage in an audit log file. This data can be sent to a Security Information and Event Management (SIEM) system using tools like Fluentd, Fluentbit, or Filebeat. Logs and events are then checked and monitored within the SIEM system. + +The primary advantage of the audit log file is that it preserves all records without alterations or deletions. In contrast, data in the database can be modified or deleted. For example, if launches or projects are deleted, the corresponding data is removed from the database. Deleting accounts leads to data obfuscation in the database. + +Hence, if historical monitoring and strict accountability are required, enabling event storage in an audit log file is recommended. Financial companies, for example, are often mandated to retain all user actions in their services for 3 years. + +:::note +Administrators should ensure that log rotation is configured for the location where the audit log will be saved, as a substantial amount of data will accumulate. +::: +Event monitoring assists organizations, especially in industries like finance and healthcare, in maintaining the security of their systems and data. diff --git a/versioned_docs/version-26.1/admin-panel/ServerSettings.mdx b/versioned_docs/version-26.1/admin-panel/ServerSettings.mdx new file mode 100644 index 0000000000..e0ac24b068 --- /dev/null +++ b/versioned_docs/version-26.1/admin-panel/ServerSettings.mdx @@ -0,0 +1,215 @@ +--- +sidebar_position: 4 +sidebar_label: Server Settings +description: Configure server settings including GitHub authorization, SSO login, and Google Analytics in ReportPortal test automation reporting tools. +--- + +# Server Settings + +In the Server Settings section, you can enable GitHub authorization, allowing users to sign in with their GitHub credentials. Additionally, you can configure the instance to allow login only through SSO and here you can enable or disable Google Analytics. + +## Authorization configuration + +### Inactivity timeout + +ADMIN can configure session expiration per instance. + +For that, the ADMIN needs to navigate to Administrate > Server Settings and set up the duration of user inactivity before automatic logout in 'Inactivity timeout' block: + +- 15 minutes +- 1 hour +- 12 hours +- 24 hours (default value) + +The user is logged out if their session inactivity exceeds the defined timeout. + +If the user is working in multiple tabs and the inactivity timeout is reached in one tab while they are still active in another, the user remains logged in until the timeout is reached in all tabs. + + + +### Password + +Admin can define the minimum password length for the whole instance. This setting applies to: + +* all new user accounts +* password changes for any existing accounts + +:::note +Existing passwords are not affected and remain valid even if they do not meet the newly configured minimum length. +::: + +To set minimum password length: + +1. Log in as ADMIN. +2. Navigate to Administrate -> Server Settings -> "Authorization Configuration" tab. +3. Set the minimum password length to a value between 8 and 256 characters. +4. Click "Submit". + +If the entered value is outside the allowed range, the system automatically adjusts it: + +* if the value is less than 8, it is set to 8 +* if the value is greater than 256, it is set to 256 + + + +The configured minimum password length is validated in the following scenarios: + +* User registration form +* Create User modal window +* Password change in the user profile +* Password reset from the login page + + + +### GitHub + +To enable [GitHub authorization](/plugins/authorization/GitHub/): + +1. Log in as ADMIN. +2. Go to Administrate > Server Settings. +3. Switch ON the "GitHub authorisation" toggle. +4. Fill in required [parameters for authorization](/plugins/authorization/GitHub#reportportal-configuration). +5. Click "Submit". + + + +Now you can access ReportPortal by clicking the "Login with GitHub" button on the login page. + +### Instance Invitations + +ADMIN can disable the possibility for manual invitation of external users. In such case, users can get access to ReportPortal via identity provider only (for example, SAML) configured on the instance. + +The default state of toggle on "Instance Invitations" section is OFF. + + + +When toggle is OFF: + +1. The "Invite User" and "Add User" buttons are displayed on the "All Users" page. + + + +2. The "Invite User" button is displayed on the "Project Members" page. + + + +When toggle is ON, manual invitation of external is disabled: + +1. The "Invite User" and "Add User" buttons are removed from the "All Users" page. + + + +2. The "Invite User" button on the "Project Members" page has been changed to the "Assign User" button. Now, the Project Manager and Administrator can no longer invite new users to this project and instance; they can only assign existing users to this project. + + + +To assign user on the project: + +1. Log in as Project Manager or ADMIN. +2. Go to the "Project Members" page. +3. Click the "Assign User" button. +4. Start type the name > suggestions will be provided in the dropdown. + + + +or + +1. Log in as ADMIN. +2. Go to Administrate > "All Projects" page. +3. Click on the ellipsis button on the project preview. +4. Select the "Members" option. +5. Click on the "Assign User" button. +6. Start type the name > suggestions will be provided in the dropdown. + + + +## Features + +An admin can disable the "Important launches" functionality to better control storage usage and prevent launches from being stored indefinitely on the instance. + +By default, the "Important launches" functionality is enabled on all instances. Users can then [mark launches as important](/configuration/LaunchesRetentionPolicy/#mark-launch-as-important-on-ui) using the launch burger menu or [report launch as important](/configuration/LaunchesRetentionPolicy/#report-launch-as-important), and these launches can only be deleted manually or when [storage limits are exceeded](/configuration/LaunchesRetentionPolicy/#important-launch-deletion-on-full-storage). + +To **turn off the "Important launches" functionality**: + +1. Log in as an ADMIN. +2. Navigate to Administrate > Server Settings > "Features" tab. +3. Turn the toggle "Important launches" off. + + + +When toggling "Important Launches" off: + +1. The "Mark as important" option is disabled on the launch burger menu, and there is a tooltip with an explanation. + + + +2. A background job runs to remove the "Important" flag from launches that were previously marked as important, converting them to regular launches and making them subject to the standard [retention policy](/configuration/LaunchesRetentionPolicy/). +3. If the toggle is off, then even if a user reports a launch with the system attribute retentionPolicy:important, the launch will not be marked as important and will still be subject to the standard retention policy. +4. If you previously had important launches, then turned off the toggle, and later turn it back on, the old launches that were once marked as important will not become important again. + +## Analytics + +To turn on [Google Analytics](/terms-and-conditions/GoogleAnalyticsUsageByReportPortal/) on ReportPortal UI: + +1. Log in as ADMIN. +2. Go to Administrate > Server Settings. +3. Go to Analytics tab. +4. Check "Help make Report Portal better by automatically sending analytics to us" checkbox. +5. Click on "Submit" button. + + + +## Links & Branding + +ADMIN can configure the necessary links in the footer of the application on the Server Settings > 'Links & Branding' tab. + +By default, there are **2 links hardcoded on UI**: + +- [Fork us on GitHub](https://github.com/reportportal) +- [Documentation](https://reportportal.io/docs/) + +Next links are displayed by default, but can be changed: + +- [Chat with us on Slack](https://slack.epmrpp.reportportal.io/) +- [Contact us](mailto:support@reportportal.io) +- [EPAM](https://www.epam.com/) + + + +Admin can add 5 links except 2 hardcoded links, so a maximum of 7 links can be displayed in footer. + +To **add a new footer link**: + +1. Log in as ADMIN. +2. Go to Administrate > Server Settings > 'Links & Branding' tab. +3. Click the 'Add new' button. + + + +4. Provide Link name (from 3 to 30 characters). +5. Provide URL or Email (from 3 to 1024 characters). +6. Click the 'Save' button. + + + +To **delete footer link**: + +1. Go to Administrate > Server Settings > 'Links & Branding' tab. +2. Click on the 'Trash' icon. +3. Click the 'Delete' button on the 'Delete link' modal. + + + +To **change the links order**: + +1. Go to Administrate > Server Settings > 'Links & Branding' tab > 'Footer Links' section. +2. Click on the drag-n-drop icon. +3. Change the links order. + + + +All added/updated links immediately displayed across all application pages after saving changes. + +:::note +Footer links visibly differ on Project Settings Page compared to other pages. +::: diff --git a/versioned_docs/version-26.1/admin-panel/_category_.json b/versioned_docs/version-26.1/admin-panel/_category_.json new file mode 100644 index 0000000000..2b9278dff0 --- /dev/null +++ b/versioned_docs/version-26.1/admin-panel/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Admin Panel", + "position": "16", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.1/admin-panel/img/EventMonitoring.png b/versioned_docs/version-26.1/admin-panel/img/EventMonitoring.png new file mode 100644 index 0000000000..0622a81227 Binary files /dev/null and b/versioned_docs/version-26.1/admin-panel/img/EventMonitoring.png differ diff --git a/versioned_docs/version-26.1/admin-panel/img/server-settings/FooterLinks1.png b/versioned_docs/version-26.1/admin-panel/img/server-settings/FooterLinks1.png new file mode 100644 index 0000000000..a11f912f3b Binary files /dev/null and b/versioned_docs/version-26.1/admin-panel/img/server-settings/FooterLinks1.png differ diff --git a/versioned_docs/version-26.1/admin-panel/img/server-settings/FooterLinks2.png b/versioned_docs/version-26.1/admin-panel/img/server-settings/FooterLinks2.png new file mode 100644 index 0000000000..50affa4f10 Binary files /dev/null and b/versioned_docs/version-26.1/admin-panel/img/server-settings/FooterLinks2.png differ diff --git a/versioned_docs/version-26.1/admin-panel/img/server-settings/FooterLinks3.png b/versioned_docs/version-26.1/admin-panel/img/server-settings/FooterLinks3.png new file mode 100644 index 0000000000..4377c58438 Binary files /dev/null and b/versioned_docs/version-26.1/admin-panel/img/server-settings/FooterLinks3.png differ diff --git a/versioned_docs/version-26.1/admin-panel/img/server-settings/FooterLinks4.png b/versioned_docs/version-26.1/admin-panel/img/server-settings/FooterLinks4.png new file mode 100644 index 0000000000..a31ee911a1 Binary files /dev/null and b/versioned_docs/version-26.1/admin-panel/img/server-settings/FooterLinks4.png differ diff --git a/versioned_docs/version-26.1/admin-panel/img/server-settings/FooterLinks5.png b/versioned_docs/version-26.1/admin-panel/img/server-settings/FooterLinks5.png new file mode 100644 index 0000000000..f83f038dd9 Binary files /dev/null and b/versioned_docs/version-26.1/admin-panel/img/server-settings/FooterLinks5.png differ diff --git a/versioned_docs/version-26.1/admin-panel/img/server-settings/ImportantLaunches1.png b/versioned_docs/version-26.1/admin-panel/img/server-settings/ImportantLaunches1.png new file mode 100644 index 0000000000..aa7695d0d9 Binary files /dev/null and b/versioned_docs/version-26.1/admin-panel/img/server-settings/ImportantLaunches1.png differ diff --git a/versioned_docs/version-26.1/admin-panel/img/server-settings/ImportantLaunches2.png b/versioned_docs/version-26.1/admin-panel/img/server-settings/ImportantLaunches2.png new file mode 100644 index 0000000000..6ea671fd1d Binary files /dev/null and b/versioned_docs/version-26.1/admin-panel/img/server-settings/ImportantLaunches2.png differ diff --git a/versioned_docs/version-26.1/admin-panel/img/server-settings/PasswordLength.png b/versioned_docs/version-26.1/admin-panel/img/server-settings/PasswordLength.png new file mode 100644 index 0000000000..775a335ec3 Binary files /dev/null and b/versioned_docs/version-26.1/admin-panel/img/server-settings/PasswordLength.png differ diff --git a/versioned_docs/version-26.1/admin-panel/img/server-settings/ServerSettings1.png b/versioned_docs/version-26.1/admin-panel/img/server-settings/ServerSettings1.png new file mode 100644 index 0000000000..15dcf2ccc4 Binary files /dev/null and b/versioned_docs/version-26.1/admin-panel/img/server-settings/ServerSettings1.png differ diff --git a/versioned_docs/version-26.1/admin-panel/img/server-settings/ServerSettings10.png b/versioned_docs/version-26.1/admin-panel/img/server-settings/ServerSettings10.png new file mode 100644 index 0000000000..0e125e2e3e Binary files /dev/null and b/versioned_docs/version-26.1/admin-panel/img/server-settings/ServerSettings10.png differ diff --git a/versioned_docs/version-26.1/admin-panel/img/server-settings/ServerSettings2.png b/versioned_docs/version-26.1/admin-panel/img/server-settings/ServerSettings2.png new file mode 100644 index 0000000000..ba1f4f89e1 Binary files /dev/null and b/versioned_docs/version-26.1/admin-panel/img/server-settings/ServerSettings2.png differ diff --git a/versioned_docs/version-26.1/admin-panel/img/server-settings/ServerSettings3.png b/versioned_docs/version-26.1/admin-panel/img/server-settings/ServerSettings3.png new file mode 100644 index 0000000000..1b3fb237fd Binary files /dev/null and b/versioned_docs/version-26.1/admin-panel/img/server-settings/ServerSettings3.png differ diff --git a/versioned_docs/version-26.1/admin-panel/img/server-settings/ServerSettings4.png b/versioned_docs/version-26.1/admin-panel/img/server-settings/ServerSettings4.png new file mode 100644 index 0000000000..f485eec5c6 Binary files /dev/null and b/versioned_docs/version-26.1/admin-panel/img/server-settings/ServerSettings4.png differ diff --git a/versioned_docs/version-26.1/admin-panel/img/server-settings/ServerSettings5.png b/versioned_docs/version-26.1/admin-panel/img/server-settings/ServerSettings5.png new file mode 100644 index 0000000000..dcb9b8e2e5 Binary files /dev/null and b/versioned_docs/version-26.1/admin-panel/img/server-settings/ServerSettings5.png differ diff --git a/versioned_docs/version-26.1/admin-panel/img/server-settings/ServerSettings6.png b/versioned_docs/version-26.1/admin-panel/img/server-settings/ServerSettings6.png new file mode 100644 index 0000000000..4b912d7dd0 Binary files /dev/null and b/versioned_docs/version-26.1/admin-panel/img/server-settings/ServerSettings6.png differ diff --git a/versioned_docs/version-26.1/admin-panel/img/server-settings/ServerSettings7.png b/versioned_docs/version-26.1/admin-panel/img/server-settings/ServerSettings7.png new file mode 100644 index 0000000000..57fc475aaf Binary files /dev/null and b/versioned_docs/version-26.1/admin-panel/img/server-settings/ServerSettings7.png differ diff --git a/versioned_docs/version-26.1/admin-panel/img/server-settings/ServerSettings8.png b/versioned_docs/version-26.1/admin-panel/img/server-settings/ServerSettings8.png new file mode 100644 index 0000000000..b3599b453a Binary files /dev/null and b/versioned_docs/version-26.1/admin-panel/img/server-settings/ServerSettings8.png differ diff --git a/versioned_docs/version-26.1/admin-panel/img/server-settings/ServerSettings9.png b/versioned_docs/version-26.1/admin-panel/img/server-settings/ServerSettings9.png new file mode 100644 index 0000000000..7deab7f1da Binary files /dev/null and b/versioned_docs/version-26.1/admin-panel/img/server-settings/ServerSettings9.png differ diff --git a/versioned_docs/version-26.1/admin-panel/index.md b/versioned_docs/version-26.1/admin-panel/index.md new file mode 100644 index 0000000000..b7ee79431b --- /dev/null +++ b/versioned_docs/version-26.1/admin-panel/index.md @@ -0,0 +1,18 @@ +--- +title: Admin Panel +description: Efficiently manage projects and users with our Admin Panel. Explore event monitoring and more for your centralized test automation tool. +--- + +# Admin Panel + +The **Admin Panel** is a comprehensive section dedicated to project and user management for administrators in our test automation dashboard. This category provides all the essential tools needed to effectively oversee and customize your platform. As an admin, you can set up and organize projects, ensuring they are aligned with the goals and structure of your organization. + +Within the Admin Panel, you can **manage user roles and permissions**, tailoring access based on specific responsibilities and ensuring that users have the appropriate level of control. This helps in maintaining a secure environment by limiting access to sensitive information and critical functionalities to only authorized individuals. + +Another key feature of the Admin Panel is **event monitoring**, which allows admins to track activities at both the project and instance levels. This ensures that you have real-time visibility into the actions taken within your system, helping in troubleshooting and security management. From user actions to system alerts, you can keep a close watch on the platform’s behavior and quickly address any issues that arise. + +Overall, the Admin Panel is designed to offer a robust and flexible interface that empowers administrators to manage both projects and users efficiently, ensuring that the platform remains secure, organized, and aligned with the organization’s needs. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.1/analysis/AutoAnalysisOfLaunches.mdx b/versioned_docs/version-26.1/analysis/AutoAnalysisOfLaunches.mdx new file mode 100644 index 0000000000..53b3ee0a25 --- /dev/null +++ b/versioned_docs/version-26.1/analysis/AutoAnalysisOfLaunches.mdx @@ -0,0 +1,358 @@ +--- +sidebar_position: 1 +sidebar_label: Auto-Analysis of launches +description: Use Auto-Analysis to categorize failures with ML, reduce manual work, and link defects automatically. Speed investigations and improve accuracy with test failure analytics. +--- + +# Auto-Analysis of launches + +The analysis feature of the ReportPortal makes it possible for the application to check and pass part of the routine duties by itself. + +Auto-analysis performs automated defect triaging and defines the reason for the test item failure and sets: + +* a defect type; +* a link to BTS _(in case if it exists)_; +* comment _(in case if it exists)_; + +The process of Auto-Analysis is based on previous user-investigated users' results using Machine Learning. + +An auto-analyzer is presented by a combination of several services: OpenSearch and Analyzer service (two instances Analyzer and Analyzer train). + +* OpenSearch contains an analytical base and stores training data for retraining of models. +* Analyzer instance performs all operations, connected with the basic functionality (indexing/removing logs, searching logs, auto-analysis, ML suggestions). +* Analyzer train instance is responsible for training models for Auto-analysis and ML suggestions functionality. + +*You have the option to disable the Analyzer by removing the Analyzer and Analyzer train services from the installation.* + +There are several ways to use an analyzer in our test automation reporting dashboard: + +* Use the ReportPortal Analyzer: **manual** (analysis is switched on only for chosen launch manually) or **auto** (analysis is switched on after the launch finishing automatically); + +* Implement and configure your custom Analyzer and do not deploy ReportPortal service Analyzer; + +* Do not use any Analyzers at all and do an analytical routine by yourself; + +:::important +The Auto Analyzer service is a part of the ReportPortal bundle. +::: + +## ReportPortal Analyzer. How the Auto-Analysis is working + +ReportPortal's Auto Analyzer allows users to reduce the time spent on test execution investigation by analyzing test failures in automatic mode. The default analysis component is running along with OpenSearch which is used for test logs indexing. +For effective using Auto–Analysis you should come through several stages. + +### Create an analytical base in the OpenSearch + +First of all, you need to create an analytical base. For that, you should start to analyze test results manually. + +All test items with a defect type which have been analyzed manually or automatically by ReportPortal are sent to the OpenSearch. + +The following info is sent: + +* An item ID; +* Logs (each log should be with level Error and higher (log level >= 40 000)); +* Issue type; +* Flag: “Analyzed by” (where shows by whom the test item has been analyzed by a user or by ReportPortal); +* A launch name; +* Launch ID; +* Test case ID; + +For the better analysis, we merge small logs (which consist of 1-2 log lines and words number less or equal 100) together. We store this merged log message as a separate document if there are no other big logs (consisting of more than 2 log lines or having a stacktrace) in the test item. We store this merged log message in a separate field "merged_small_logs" for all the big logs if there are ones. + +The Analyzer preprocesses log messages from the request for test failure analysis: extracts error message, stacktrace, numbers, exceptions, urls, paths, parameters and other parts from text to search for the most similar items by these parts in the analytical base. These parts are saved in a separate fields for each log entry. + +Each log entry along with its defect type is saved to OpenSearch in the form of a separate document. All documents created compose an Index. The more test results index has, the more accurate results will be generated by the end of the analysis process. + +:::tip +If you do not sure how many documents(logs) are contained in the Index at that moment, you can check it. +For that, perform the following actions: +* Uncommented Service OpenSearch ports in a docker-compose file or add them: 9200:9200; +* Restart-Service OpenSearch with new docker-compose; +* Send a request to OpenSearch: + * how many documents in the Index: GET http://localhost:9200/_cat/indices?v + * Detailed information: POST http://localhost:9200/{project_name}/_search +::: + +Test items of a launch in Debug mode are not sent to the service Analyzer. If the test item is deleted or moved to the Debug mode, it is removed from the Index. + +### Auto-Analysis process + +After your Index has been completed. You can start to use the auto-analysis feature. + +Analysis can be launched automatically (via Project Settings) or manually (via the menu on All launches view). After the process is started, all items with defect type “To investigate” with logs (log level >= 40 000) from the analyzed launch are picked and sent to the Analyzer Service and the service OpenSearch for investigations. + +### How OpenSearch returns candidates for Analysis + +Here is a simplified procedure of the Auto-analysis candidates searching via OpenSearch. + +When a "To investigate" test item appears we search for the most similar test items in the analytical base. We create a query which searches by several fields, message similarity is a compulsory condition, other conditions boost the better results and they will have a higher score (boost conditions are similarity by launch name, error message, found exceptions, numbers in the logs and etc.). + +Then OpenSearch receives a log message and divides it into the terms (words) with a tokenizer and calculates the importance of each term (word). For that OpenSearch computes TF-IDF for each term (word) in the analyzed log. If the level of term importance is low, the OpenSearch ignores it. + +:::note + +*Term frequency (TF)* – how many time term (word) is used in an analyzed log; + +*Document frequency (DF)* – in how many documents this term (word) is used in Index; + +*TF-IDF (TF — term frequency, IDF — inverse document frequency)* — a statistical measure used to assess the importance of a term (word) in the context of a log that is part of an Index. The weight of a term (word) is proportional to the amount of use of this term (word) in the analyzed log and inversely proportional to the frequency of term (word) usage in Index. +::: + +The term (word) with the highest level of importance is the term (word) that is used very frequently in analyzed log and moderately in the Index. + +After all important terms are defined, OpenSearch calculates the level of equality between an analyzed log and each log in the Index. For each log from the Index is calculated a score. + +:::note + +How calculated a score: + +**score(q,d)** = + + coord(q,d) - + SUM ( + tf(t in d), + idf(t)², + t.getBoost(), + ) (t in q) +Where: +* score(q,d) is the relevance score of log “d” for query “q”. +* coord(q,d) is the coordination factor: the percent of words equality between analyzed log and particular log from the OpenSearch. +* The sum of the weights for each word “t” in the query “q” for log “d”. + * tf(t in d) is a frequency of the word in the analyzed log. + * idf(t) is the inverse frequency of the word in all saved logs in the Index. + * t.getBoost() is the boost that has been applied to the query. The higher priority for logs with: + * The same Launch name; + * The same UID; + * Manual analysis; + * Error message; + * The same numbers in the log; + * and etc. +::: + +The results are sorted by the score, in case the scores are the same, they are sorted by "start_time" field, which helps to boost the test items with closer to today dates. So the latest defect types will be higher in the returned by OpenSearch results. + +The OpenSearch returns to the service Analyzer 10 logs with the highest score for each log. Analyzer regroups all the results by a defect type and chooses the best representative for each defect type group, based on their scores. + +:::note +In the case the test item has several logs, the best representative for a defect type group will become the log with the highest score among all logs. +::: + +### How Auto-analysis makes decisions for candidates, returned by OpenSearch + +The OpenSearch returns to the service Analyzer 10 logs with the highest score for each query and all these candidates will be processed further by the ML model. Analyzer regroups all the results by a defect type and chooses the best representative for each defect type group, based on their scores. + +The ML model is an XGBoost model which features (about 30 features) represent different statistics about the test item, log message texts, launch info and etc, for example: +* the percent of selected test items with the following defect type +* max/min/mean scores for the following defect type +* cosine similarity between vectors, representing error message/stacktrace/the whole message/urls/paths and other text fields +* the probability for being of a specific defect type given by the Random Forest Classifier trained on Tf-Idf vectors + +The model gives a probability for each defect type group, and we choose the defect type group with the highest probability and the probability should be >= 50%. + +A defect comment and a link to BTS of the best representative from this group come to the analyzed item. + +The Auto-analysis model is retrained for the project and this information can be found in the section "How models are retrained" below. + +So this is how Auto-Analysis works and defines the most relevant defect type on the base of the previous investigations. We give an ability to our users to configure auto-analysis manually. + +## Auto-analysis Settings + +All settings and configurations of Analyzer and OpenSearch are situated on a separate tab on Project settings. + +1. Login into ReportPortal instance as Administrator or project member with PROJECT MANAGER role on the project; + +2. Come on Project Settings, choose Auto-Analysis section; + + + +In this section user can perform the following actions: + +1. Switch ON/OFF auto-analysis; + +2. Choose a base for analysis (All launches/ Launches with the same name); + +3. Configure OpenSearch settings; + +4. Remove/Generate OpenSearch index. + +### Switch ON/OFF automatic analysis + +To activate the "Auto-Analysis" functionality in a project, perform the following steps: + +1. Login ReportPortal instance as Administrator or project member with PROJECT MANAGER role on the project. + +2. Select ON in the "Auto-Analysis" selector on the Project settings / Auto-analysis section. + +3. Click the "Submit" button. Now "Auto-Analysis" will start as soon as any launch finishes. + +### Base for analysis + +You can choose which results from previous runs should be considered in Auto-Analysis for defining the failure reason. + +There are five options: + +* All previous launches +* Current and all previous launches with the same name +* All previous launches with the same name +* Only previous launch with the same name +* Only current launch + +If you choose **“All previous launches”** option, test results in the launch will have analyzed on the base of all runs before the current launch regardless of the launch name. + +If you choose **“Current and all previous launches with the same name”** option, test results in the launch will have analyzed on the base of current and all previous launches that have the same Launch name. + +If you choose **“All previous launches with the same name”** option, test results in the launch will have analyzed on the base of all launches before current launch that have the same Launch name. + +If you choose **“Only previous launch with the same name”** option, test results in the launch will have analyzed on the base of last run before current launch with the same name. + +If you choose **“Only current launch”** option, test results in the launch will have analyzed on the base of current launch. + +Imagine that the launches in the image below are part of your ReportPortal project, and currently, Smoke Launch 3 is being analyzed. + + + +So, launches that will have analyzed if you choose **“All previous launches”** option: Smoke Launch 1, Smoke Launch 2, Regression Launch 1, Regression Launch 2, Regression Launch 3. + +Launches that will have analyzed if you choose **“Current and all previous launches with the same name”** option: Smoke Launch 3, Smoke Launch 1, Smoke Launch 2. + +Launches that will have analyzed if you choose **“All previous launches with the same name”** option: Smoke Launch 1, Smoke Launch 2. + +Launches that will have analyzed if you choose **“Only previous launch with the same name”** option: Smoke Launch 2. + +Launches that will have analyzed if you choose **“Only current launch”** option: Smoke Launch 3. + +You can choose those configurations via Project configuration or from the list of actions on All launches view. + +### Defect assignment based on the longest retry + +ReportPortal allows users to control how the system prioritizes retries for analysis. By default, only the latest retry is considered, but users can also choose to analyze the longest retry — the one with the most passed nested steps before the first failure. + +If a test has retries and the test structure contains nested steps, the assignment of defects is determined by the **"Defect assignment based on the longest retry" checkbox** in the Auto-Analysis settings. + + + +The Analyzer applies defect types based on this configuration during manual, auto, or Immediate Auto-Analysis. + +:::note +**Permissions:**
+Admin, Project Manager can modify the setting.
+Customer, Member, Operator can view only. +::: + +By default, **the checkbox is not checked**. In this case: + +* When a test has retries, ReportPortal sends the logs of the latest retry to the Analyzer. + + + +When **the checkbox is checked**: + +* ReportPortal sends the logs of the longest retry (the retry with the maximum number of passed nested steps before the first failure) to the Analyzer. + + + +This ensures that defect assignment is based on the most representative retry, not just the most recent one. + + + +### Remove/Generate OpenSearch index + +There two possible actions that can be performed under Index in OpenSearch. + +You can **remove the Index from OpenSearch** and all logs with there defect type will be deleted. ML will be set to zero. All data with your investigations will be deleted from the OpenSearch. For creating a new one you could start to investigate test results manually or generate data based on previous results on the project once again. + +:::note +Your investigations in ReportPortal will not be changed. The operation concerns only OpenSearch base. +::: + + + +Another option, you can **generate the Index in OpenSearch**. In the case of generation, all data will be removed from OpenSearch and the new one will be generated based on all previous investigations on the project following current analysis settings. + +At the end of the process, you will receive a letter with info about the end of the process and with several items that will be appeared in OpenSearch. + +You can use index generation for several goals. For example, assume two hypothetical situations when index generation can be used: + +* by accident you remove the index, but now you want to restore it. + +:::note +The new base will be generated following logs and settings that are existing on the moment of operating. So index before removing and index after generation can be different. +::: +* you have changed a parameter **Number of log lines** for 3. But your existing index contains logs with value ALL. You can generate a new index, the old index will be removed, and a new one will be generated. Logs in the new index will contain 3 lines; + + + +We strongly do not recommend use auto-analysis until the new index will be generated. + +### Manual analysis + +Analysis can be launched manually. To start the analysis manually, perform the following steps: + +1. Navigate to the "Launches" page. + +2. Select the "Analysis" option from the context menu next to the selected launch name. + +3. Choose the scope of previous results on the base of which test items should be auto-analyzed. The default is the one that is chosen on the setting page, but you can change it manually. + +Via this menu you can choose 3 options unlike on Project Settings: + +* All launches; + +* Launches with the same name; + +* Only current launch; + +Options **All launches** and **Launches with the same name** are working the same as on project settings. +If you choose **Only current launch**, the system is analyzing the test items of chosen launch only on a base of already investigated date of this launch. + +4. Choose which items from launch should be analyzed: + +* Only To investigated; +* Items analyzed automatically (by AA); +* Items analyzed manually; + +In case the user chooses **Only To investigate items** - the system is analyzing only items with defect type "To investigate" in the chosen launch; + +In case the user chooses **Items analyzed automatically (by AA)** - the system is analyzing only items that have been already analyzed by auto-analysis. The results of the previous run of analysis will be set to zero and items will be analyzed once again. + +In case the user chooses **Items analyzed manually** - the system is analyzing only items that have been already analyzed by the user manually. The results of the previous run of analysis will be set to zero and items will be analyzed once again. + +In the case of multi-combination - the system is analyzing results dependence on chosen options. + +:::note +The Ignore flag is saved. If the item has flag **Ignore in AA**, it will not be re-analyzed. +::: + +:::tip +For option **Only current launch** you can not choose *Items analyzed automatically (by AA)* and *Items analyzed manually* simultaneously. +::: + +4. Click the "Analysis" button. Now "Auto-Analysis" will start. + +Any launches with an active analyzing process will be marked with the "Analysis" label. + +:::note +If a test has retries and the test structure contains nested steps, the assignment of defects is determined by the ["Defect assignment based on the longest retry" checkbox](/analysis/AutoAnalysisOfLaunches#defect-assignment-based-on-the-longest-retry) in the Auto-Analysis settings.
+* If the checkbox is not checked, ReportPortal sends the logs of the latest retry to the Analyzer.
+* If the checkbox is checked, ReportPortal sends the logs of the longest retry (the retry with the maximum number of passed nested steps before the first failure) to the Analyzer. +::: + + + +## Label AA + +When the test item is analyzed by the ReportPortal, a label "AA" is set on the test item on a Step Level. You can filter results with a parameter “Analysed by RP (AA)” + + + +## Ignore in Auto-Analysis + +If you don't want to save some test items in OpenSearch, you can "Ignore in Auto-Analysis". For that you can choose this action in “Make decision” modal: + + + +Or from the action list for several test items: + + + +When you choose “Ignore in AA”, logs of the chosen item are removed from the OpenSearch. diff --git a/versioned_docs/version-26.1/analysis/HowModelsAreRetrained.md b/versioned_docs/version-26.1/analysis/HowModelsAreRetrained.md new file mode 100644 index 0000000000..2bc62510fb --- /dev/null +++ b/versioned_docs/version-26.1/analysis/HowModelsAreRetrained.md @@ -0,0 +1,38 @@ +--- +sidebar_position: 5 +sidebar_label: How models are retrained +description: Learn when Auto-Analysis and ML models retrain, how data is used, and what thresholds apply to keep ReportPortal test failure analysis accurate and project-specific. +--- + +# How models are retrained + +In the Auto-analysis and Machine Learning (ML) suggestions processes, several models contribute: + +* Auto-analysis XGBoost model, which provides the likelihood of a test item being of a specific type based on the most similar test item in the history of that defect type. +* ML suggestions XGBoost model, which offers the probability for a test item to resemble the test item from the history. +* Error message language model on Tf-Idf vectors (Random Forest Classifier), which delivers a probability for the error message to be of a specific defect type or its subtype based on the words in the message. The probability from this model serves as a feature in the main boosting algorithm. + +In the beginning, you have global models at your disposal. These models, trained on six projects, have demonstrated average good accuracy. To develop a more powerful and personalized test failure analysis, you should retrain the models on the data from your project. At the start of the project, you have global models available. They were trained on six projects and validated to provide good average accuracy. To have a more powerful and personalized test failure analysis, the models should be retrained on the data from the project. + +:::note +If a global model performs better on your project data, the retrained model will not be saved, because we only keep custom models that outperform the global model on your data. +::: + +Triggering information and retrained models are stored in Minio (or a filesystem), as set up in the Analyzer service settings. + +Conditions for triggering retraining for **Error Message Random Forest Classifier**: +* Each time the test item defect type is changed to another issue type (except "To Investigate"), we update the triggering info. This stores the quantity of test items with defect types and the quantity of test items with defect types since the last training. This information is stored in the file "defect_type_trigger_info" in Minio. +* Retraining is triggered when over 100 labelled items are detected and 100 labelled test items have been identified since the last training. If validation data metrics are better than metrics for the global model on the same data points, a custom "defect_type" model is saved in Minio. This will then be utilized in the auto-analysis and suggestions functionality for enhancing test automation results dashboard. + + +Conditions for triggering retraining of **Auto-analysis** and **Suggestion XGBoost models**: +* We collect training data from several sources: + * When a suggestion is selected (the chosen test item will be a positive example, others will be negative). + * When you don't select any suggestion and manually edit the test item (all suggestions become negative examples). + * Auto-analysis identifies a similar test item; this is considered a positive example unless the defect type is manually changed by the user. + +When either a suggestion analysis runs or a defect type change occurs, we update the trigger info for both models. This information is stored in "auto_analysis_trigger_info" and "suggestion_trigger_info" files in Minio. + +Retraining is triggered when: +* For the auto-analysis model: when over 300 labelled items and 100 labelled test items have been identified since the last training. If validation data metrics are improved, a custom "auto_analysis" model is saved in Minio and utilized in the auto-analysis function. +* For the suggestion model: when more than 100 labelled items and 50 labelled items have been identified since the last training. If validation data metrics are improved, a custom "suggestion" model is saved in Minio and used in the suggestions function. diff --git a/versioned_docs/version-26.1/analysis/ImmediateAutoAnalysis.mdx b/versioned_docs/version-26.1/analysis/ImmediateAutoAnalysis.mdx new file mode 100644 index 0000000000..4fe3912af3 --- /dev/null +++ b/versioned_docs/version-26.1/analysis/ImmediateAutoAnalysis.mdx @@ -0,0 +1,49 @@ +--- +sidebar_position: 2 +sidebar_label: Immediate Auto-Analysis +description: Kick off Auto-Analysis before a launch finishes to flag failures sooner. Use attributes to accelerate test failure analytics and shorten feedback loops. +--- + +# Immediate Auto-Analysis + +In the realm of software development, quick issue detection is a critical aspect that directly impacts the quality of your products. Understanding modern trends, ReportPortal is ready to introduce a new feature – Immediate Auto-Analysis (Immediate AA). Starting from version 24.1, Auto-Analysis can be started via API after certain test cases finish before whole Launch is done thereby accelerating the test failure triage. + +With Immediate AA, you no longer need to wait for the Launch finish before starting the analysis of failed tests. For instance, in your Launch there are 2000 tests, you can now see that 16 tests have already failed, and Immediate AA promptly marked these issues for you on the fly. + +To initiate Immediate AA, you need to specify the following parameters in the **attributes** section **for each step on its start or finish** when reporting: + + + +If the value for **“immediateAutoAnalysis”** is set to **“false”**, Immediate AA will not work. + +If the “immediateAutoAnalysis” attribute is not specified, Immediate AA will not work either. + +:::important +The “immediateAutoAnalysis” attribute can only be applied to a step level. It is essential to send the log, as the Analyzer operates based on the log. +::: + +Immediate AA will work in any case if this attribute is present, regardless Auto-Analysis is enabled or disabled in Project Settings. In case when some items have been already analyzed by Immediate AA, Auto-Analysis and Manual Analysis on Launch finish will skip previously analyzed items. + +Immediate AA, like Auto-Analysis on Launch finish, is based on the following options: + +* All previous launches +* Current and all previous launches with the same name +* All previous launches with the same name +* Only previous launch with the same name +* Only current launch + +You can select the required option in the Project settings for Auto-Analysis. + +:::note +If a test has retries and the test structure contains nested steps, the assignment of defects is determined by the ["Defect assignment based on the longest retry" checkbox](/analysis/AutoAnalysisOfLaunches#defect-assignment-based-on-the-longest-retry) in the Auto-Analysis settings.
+* If the checkbox is not checked, ReportPortal sends the logs of the latest retry to the Analyzer.
+* If the checkbox is checked, ReportPortal sends the logs of the longest retry (the retry with the maximum number of passed nested steps before the first failure) to the Analyzer. +::: + +It is important to highlight that Immediate AA works only for defect types from “To Investigate” group. If you reported a Launch with failed step, and this step has another defect type (“Product Bug”, etc.), then step will not be analyzed by Immediate AA. + +This way, Immediate AA allows to detect issues early and enhances testing performance. + + + + diff --git a/versioned_docs/version-26.1/analysis/ImmediatePatternAnalysis.mdx b/versioned_docs/version-26.1/analysis/ImmediatePatternAnalysis.mdx new file mode 100644 index 0000000000..1238eb7977 --- /dev/null +++ b/versioned_docs/version-26.1/analysis/ImmediatePatternAnalysis.mdx @@ -0,0 +1,47 @@ +--- +sidebar_position: 8 +sidebar_label: Immediate Pattern Analysis +description: Start Pattern Analysis before a launch ends to catch issues early. Trigger via attributes and speed defect triage on large runs in ReportPortal. +--- + +# Immediate Pattern Analysis + +In a modern software world, quick issue detection becomes necessary. ReportPortal as a progressive test automation dashboard, follows today’s faster development methods. Starting from version 24.1, Pattern Analysis can be started via API after certain test cases finish before whole Launch is done. Immediate Pattern Analysis (PA) significantly speeds up failure triage. + +Previously, Pattern Analysis can’t be started before Launch finish. Since some users may have their launches last up to 12 hours, or even all day, they couldn’t start test failure analysis for a long time. This was slowing down issue spotting. With Immediate Pattern Analysis, you can begin looking at your test results much faster, which is especially valuable for large Launches. + +To initiate Immediate PA, fulfill the following conditions: + +1. PA rule should be created. + +2. PA rule should be enabled. + +3. When reporting, you need to specify the following parameters in the **attributes** section **for each step on its start or finish**: + + + +If the value for **“immediatePatternAnalysis”** is set to **“false”**, Immediate PA will not work. + +If the “immediatePatternAnalysis” attribute is not specified, Immediate PA will not work either. + +The “system” parameter determines whether the “immediatePatternAnalysis” attribute will be displayed in the UI. If **“system”** is set to **“true”**, the “immediatePatternAnalysis” attribute will not be displayed on the UI, and if **“system”** is set to **“false”**, it will be. + + + +You can provide this attribute at the start of the step or at the finish. You can also set one value at the start and another at the finish, in which case the last value will take. + +:::note +Immediate PA will work in any case if this attribute is present, regardless Auto Pattern Analysis is enabled or disabled. In this case, Auto Pattern Analysis and Manual Pattern Analysis on Launch finish will skip previously analyzed items by Immediate Pattern Analysis. +::: + +:::important +It would be better to use STRING rule instead of REGEX rule in all possible cases to speed up the Pattern Analysis processing in the database. As a result, you can get your analysis completed faster using the STRING patterns rather than REGEX and reduce the database workload. +::: + +Apart from the timing of execution, Immediate PA differs from PA on Launch finish in that Immediate PA works for any issue type, whereas PA on Launch finish works for "To Investigate" items only. This means that you can report certain items, such as Automation Bug or System Issue, and specify parameters for launching Immediate PA. + + + +Overall, Immediate PA helps to catch issues early and improves testing quality. + + diff --git a/versioned_docs/version-26.1/analysis/MLSuggestions.md b/versioned_docs/version-26.1/analysis/MLSuggestions.md new file mode 100644 index 0000000000..a4513596a0 --- /dev/null +++ b/versioned_docs/version-26.1/analysis/MLSuggestions.md @@ -0,0 +1,54 @@ +--- +sidebar_position: 4 +sidebar_label: ML Suggestions +description: Get AI-powered suggestions for similar failures during triage. Reuse defect types, comments, and BTS links to speed analysis in your test automation dashboard. +--- + +# ML Suggestions + +ML suggestions functionality is based on previously analyzed results (either manually or via Auto-analysis feature) using Machine Learning. The functionality is provided by the Analyzer service in combination with OpenSearch. + +This analysis hints what are the most similar analyzed items to the current test item. You can interact with this functionality in several ways: +* Choose one of the suggested items if you see that the reason for the current test item is similar to the suggested one. When you choose the item and apply changes to the current item, the following test item characteristics will be copied from the chosen test item: + * a defect type; + * a link to BTS _(in case if it exists)_; + * comment _(in case if it exists)_; + +* If you see no suitable suggested test item for the current test item, just do not select any of them. + +## How the ML suggestions functionality is working + +ML Suggestions searches for similar previously analyzed items to the current test item, so it requires an analytical base saved in OpenSearch. ML suggestions takes into account all user-investigated, auto-analyzed items or items chosen from ML suggestions. While the analytical base is growing ML suggestions functionality will have more examples to search by and suggest you the best options. + +ML suggestions analysis is run everytime you enter "Make decision" editor. ML suggestions are run for all test items no matter what defect type they have now. This functionality is processing only test items with logs (log level >= 40000). + +The request for the suggestions part looks like this: +* testItemId; +* uniqueId; +* testCaseHash; +* launchId; +* launchName; +* project; +* analyzerConfig; +* logs = List of log objects (logId, logLevel, message) + +The Analyzer preprocesses log messages from the request for analysis: extracts error message, stacktrace, numbers, exceptions, urls, paths, parameters and other parts from text to search for the most similar items by these parts in the analytical base. We make several requests to the OpenSearch to find similar test items by all the error logs. + +:::note +When a test item has several error logs, we will use the log with the highest score as a representative of this test item. +::: + +The OpenSearch returns to the service Analyzer 10 logs with the highest score for each query and all these candidates will be processed further by the ML model. The ML model is an XGBoost model which features (about 40 features) represent different statistics about the test item, log message texts, launch info and etc, for example: +* the percent of selected test items with the following defect type +* max/min/mean scores for the following defect type +* cosine similarity between vectors, representing error message/stacktrace/the whole message/urls/paths and other text fields +* the probability for being of a specific defect type given by the Random Forest Classifier trained on Tf-Idf vectors + +The model gives a probability for each candidate, we filter out test items with the probability less or equal 40%. We sort the test items by this probability, after that we deduplicate test items inside this ranked list. If two test items are similar with >= 98% by their messages, then we will leave the test item with the highest probability. After deduplication we take maximimum 5 items with the highest score to show in the ML Suggestions section. + +ML suggestions section contains at maximum 5 suggested items, they are shown together with the scores given by the model and we divide them into 3 groups: +* the group "SAME", test items with the score = 100% +* the group "HIGH", test items with the score in the range [70% - 99.9%] +* the group "LOW", test items with the score in the range [40% - 69.9%] + + diff --git a/versioned_docs/version-26.1/analysis/ManualAnalysis.mdx b/versioned_docs/version-26.1/analysis/ManualAnalysis.mdx new file mode 100644 index 0000000000..6631245e9b --- /dev/null +++ b/versioned_docs/version-26.1/analysis/ManualAnalysis.mdx @@ -0,0 +1,114 @@ +--- +sidebar_position: 6 +sidebar_label: Manual Analysis +description: Use the Make decision modal to assign defect types, apply ML suggestions, and bulk update items. Streamline bug triage for a faster automation test report. +--- + +# Manual Analysis + +Manual Analysis is presented on our test report dashboard by “Make decision” modal. + +## “Make decision” modal feature highlights + +* View and analyze execution context: + * See step name and current defect type + * Expand logs to understand failure reasons + * Review links to bugs, comments, or special labels (AA, PA, Ignore AA) + +* Select defect type and comment manually: + * Choose defect from “Manual selection” + * Add a comment + * Apply changes to one or multiple test items + +* Use Analyzer suggestions: + * Pick similar failures based on logs (marked with red asterisk) + * Automatically apply the same defect type, comment, and linked issue + * Expand to apply to other items using “Apply for” section + +* Review test history: + * Check how this step was marked in previous runs + * Reapply defect type, comment, and BTS link + * Extend to other similar items + +* Select other test items for bulk editing: + * Use “Apply for” section to include more items + * See preview in “Results will be applied for” section + * Click “Apply” to confirm changes + +* Perform bulk updates efficiently: + * Select multiple test items + * Apply defect type, comment and BTS link in one action + +## “Make decision” modal redesign + +Redesign of the “Make decision” modal was implemented in version 5.7. This feature helps to sort out auto tests and decide: What is the problem? How can it be marked? Is it required to post issue or link issue? It became easier to use this functionality after the redesign. + + + +The “Make decision” modal can be opened in three ways: + +1) from the Step level + + + +2) via Actions + + + +3) from the Log level + + + +## “Execution to change” section + +**“Execution to change”** section is displayed at the top left of the “Make decision” modal. It includes Step name, current defect type. Also it can have a log, a comment, a link to a Bug Tracking System (BTS), a label (AA, PA, Ignore AA) if exist. You can expand logs to understand why this step was failed. + + + +## How to set a defect type and type a comment + +**“Select defect”** section is displayed at the top right of the “Make decision” modal. It includes “Manual selection”, “Analyzer suggestions”, “History of the test”. + + + +You can **select a defect type and type a comment manually**. Selected defect type and added comment will be applied to the current item (there is also a possibility to apply them to other items – please, have a look at “Apply for” section). + + + +## How to use “Analyzer suggestions” + +You also can select any step from the **“Analyzer suggestions”** with a similar log. Similar log is marked with a red asterisk. Then the defect type, the comment and linked BTS ticket (if exist) of the suggested step will be applied to the current item (there is also a possibility to apply them to other items – please, have a look at “Apply for” section). + + + +## “History of the test” section + +You can see the **“History of the test”** – which defect type this step had in previous runs. You can select any item from the “History of the test”. Then the defect type, the comment and linked BTS ticket (if exist) of the suggested step will be applied to the current item (there is also a possibility to apply them to other items – please, have a look at “Apply for” section). + + + +## How to select other steps for analysis + +The “Make decision” modal works not only with the current step. This feature allows to select other steps with “To Investigate” defect type which can be changed as well. For that, please, expand the **“Apply for”** section and select the needed option. + + + +The **“Results will be applied for”** message is displayed at the bottom after selection. This section was added in version 5.7. + + + +Now you can view all changes before applying. Expand the “Results will be applied for” section to see information about changes. You should click **“Apply”** button to apply selected changes. + + + +## Bulk update + +There is also a possibility for Bulk update, when the changes are applied to all selected test items. + + + + + + + +As you can see, “Make decision” modal is a time-saving tool for engineers. diff --git a/versioned_docs/version-26.1/analysis/PatternAnalysis.mdx b/versioned_docs/version-26.1/analysis/PatternAnalysis.mdx new file mode 100644 index 0000000000..f0c8b200a9 --- /dev/null +++ b/versioned_docs/version-26.1/analysis/PatternAnalysis.mdx @@ -0,0 +1,98 @@ +--- +sidebar_position: 7 +sidebar_label: Pattern Analysis +description: Define string or regex rules to detect known error patterns. Speed up investigations and track frequent causes with the Most Popular Pattern widget. +--- + +# Pattern Analysis + +Pattern Analysis is a feature that helps you to speed up test failure analysis by finding common patterns in error logs. + +## How to run Pattern Analysis + +You can run Pattern Analysis automatically or manually. + +To run Pattern Analysis **automatically**: + +1. Go to the Project Settings. + +2. Open Pattern-Analysis tab. + +3. Check the "Auto Pattern-Analysis" checkbox. + +4. Create rule. + +5. Run a launch. + +6. After launch finish, automatic Pattern Analysis will occur. + + + +:::note +Automatic Pattern Analysis is activated by default. +::: + +In case automatic Pattern Analysis is turned off, you can run **manually** from the menu next to a particular launch: + + + +If we have Auto-Analysis enabled together with Pattern Analysis, Pattern Analysis starts before Auto-Analysis: in this case, ReportPortal first identifies known patterns, and then the Analyzer assigns defect types and links issues in the BTS, if available. +As a result, when both Auto-Analysis and Auto Pattern Analysis occur, a test item will have two labels: AA and PA. + + + +## How to create rules for Pattern Analysis + +To create rule: + +1. Go to the Project Settings. +2. Open Pattern Analysis tab. +3. Click ‘Create Pattern’ button. +4. Fill in the form. +5. Create ‘Create’ button. + + + + + +## Types of Pattern Analysis rules + +There are two types of Pattern Analysis rules: + +1. String – any problem phrase. + + + + + +2. Regex – regular expression. + + + + + +:::note +It would be better to use STRING rule instead of REGEX rule in all possible cases to speed up the Pattern Analysis processing in the database. As a result, you can get your analysis completed faster using the STRING patterns rather than REGEX and reduce the database workload. +::: + +## Use case 1 + +**Problem:**
+A user is aware of several common reasons why test cases fail. During a test run, many tests have failed, and the user needs to check the logs to identify the reasons behind the failures. + +**Solution:**
+Create pattern rules for all common failure reasons, which include specific problem phrases (e.g., `Expected status code <404> but was <500>` or `Null response`) or use Regex queries (e.g., `java:[0-9]*`). Enable pattern analysis and launch a test run. This way, the ReportPortal system can identify all failed items that match known patterns in the error logs and label them with the corresponding pattern name. To find all items that failed for the same reason, apply a filter by ‘Pattern Name’ in the Step view. Additionally, add a ‘Most Popular Pattern’ widget to track the top 20 most frequent reasons for test failures in the build. + + + + + +## Use case 2 + +**Problem:**
+The test run has finished, and the user notices that more than three items have failed for the same reason. The user wants to find all such items. + +**Solution:**
+Create a new pattern rule in the Project Settings. Manually launch a pattern analysis for a specific test run. Use the ‘Pattern Name’ filter in the Step view to find all items that failed for the same reason. + + diff --git a/versioned_docs/version-26.1/analysis/SearchForTheSimilarToInvestigateItems.mdx b/versioned_docs/version-26.1/analysis/SearchForTheSimilarToInvestigateItems.mdx new file mode 100644 index 0000000000..5dcdab9a53 --- /dev/null +++ b/versioned_docs/version-26.1/analysis/SearchForTheSimilarToInvestigateItems.mdx @@ -0,0 +1,44 @@ +--- +sidebar_position: 2 +sidebar_label: Search for the similar "To investigate" items +description: Find similar “To investigate” items by logs across launches to bulk apply decisions. Accelerate defect triage and simplify your test reporting tool workflow. +--- + +# Search for the similar "To investigate" items + +Let's consider below an example of ML-driven failure triage in ReportPortal. + +**Use case:** + +**Situation:** Analyzer has completed its work and marked known issues with defect types. + +But there are a lot of failures with a similar unknown reason in the run. All such items have "To investigate" defect type. + +**Problem:** A user should check and analyze all failed items. + +**Solution:** + +A user is on All launches, he clicks on "To investigate" and opens a list with items. When a user clicks on a pencil next to a defect type, the system opens the ["Make decision" modal](/analysis/ManualAnalysis#make-decision-modal-redesign). In this modal a user can see all items with "To investigate" defect type and the same failure reason. + + + +There are 3 options for search the similar "To investigate" items on the Step level: + +- Current item only +- Similar "To investigate" in the launch & current item +- Similar "To investigate" in 10 launches & current item + +There are 4 options for search the similar "To investigate" items on the Log level: + +- Current item only +- Similar "To investigate" in the launch & current item +- Similar "To investigate" in 10 launches & current item +- "To investigate" from the history line & current item + +If launches are filtered by filter on All Launches page, then addition option ```Similar "To investigate" in the Filter & current item``` appears on the Step and Log levels. + + + +A user can select all identical failures and perform the bulk operation for them. + + diff --git a/versioned_docs/version-26.1/analysis/UniqueErrorAnalysis.mdx b/versioned_docs/version-26.1/analysis/UniqueErrorAnalysis.mdx new file mode 100644 index 0000000000..b50f462fbc --- /dev/null +++ b/versioned_docs/version-26.1/analysis/UniqueErrorAnalysis.mdx @@ -0,0 +1,137 @@ +--- +sidebar_position: 8 +sidebar_label: Unique Error Analysis +description: Group identical errors to speed triage. See unique failures, match tests by error, and apply ML suggestions for faster, clearer test failure analysis. +--- + +# Unique Error Analysis + +You can analyze test failures from two perspectives: quantitative (How many tests have failed?) and qualitative (Why did they fail?). For example, if 1,000 test cases fail, then: + +1. They could all fail for the same reason. + +2. They could fail for various reasons. + +While failed tests allow you to understand what is broken, Unique Error analysis functionality implemented in version 5.7 will show you why it broke. Moreover, the system automatically groups tests by the same errors: when you expand some error, you see a list of tests where it occurred. + +:::important +The main advantage of this solution is that a list of all unique errors of the launch is presented in one place. +::: + +Thanks to the Unique Error analysis functionality, ReportPortal got the following benefits: + +1. A list of unique errors for the launch, with grouping. +2. Easier test results analysis. +3. Machine learning (ML) suggestions for groups of tests. +4. The ['New Errors'](/26.1/quality-gates/QualityRulesConfiguration/#new-errors-in-the-run) Quality Gates rule. + +## How to run Unique Error analysis + +You can run Unique Error analysis automatically or manually. + +To run Unique Error analysis **automatically**: + +1. Go to the Project Settings. +2. Open Analyzer tab. +3. Open ‘Unique Errors’ settings. +4. Check the "Auto-Unique Error" checkbox. + + + +5. Run a launch. +6. After launch finish, open any item level in the launch. +7. Click ‘Unique errors’ tab. + + + + + + + +:::note +Automatic Unique Error analysis is activated by default. +::: + +In case automatic Unique Error analysis is turned off, there are two ways to run Unique Error analysis **manually**: + +1. Run Unique error analysis manually from any item level. + + + +2. Run Unique Error analysis from the menu next to a particular launch. + + + +After Unique Error analysis is finished, open any item level in the launch and click the ‘Unique errors’ tab. + +## How to see Unique Errors + +Finally, you can see the list of Unique Errors. + +There you can see a list of unique logs with number of failed tests related to them. The number of matches found per Unique Errors is displayed in the column ‘MATCHED TESTS’. By default, Unique Errors are displayed from the one with the highest number of failed tests. By clicking on the column name, the sorting is updated each time. + + + +You can expand unique error to check what tests belong to the same one and it could give you a hint during error analysis and defects assigning. The groups are formed based on unique error logs, some small error logs can be merged and displayed as one error. + + + +## How to get ML suggestions for the group of tests + +In addition, there is a possibility to get ML suggestions for the group of tests. It speeds up the process of analyzing failed tests and assigning defect types by several times. + +For that, + +1. Open any item level in the launch. +2. Click ‘Unique Errors’ tab. +3. Expand a cluster with unique error. +4. Select some failed tests. + + + +5. Open ‘Make decision’ modal. +6. Check Analyzer suggestions. + + + + + +## 'Include/exclude numbers' settings + +There are 2 settings to decide whether numbers in error logs have significant value for analysis or not: + +1. Include numbers to analyzed logs. + +2. Exclude numbers from analyzed logs. + + + +Let’s consider some examples with the same Unique Errors but with different include/exclude numbers settings. + +We have 2 errors with identical text, but the difference is numeric value in the first error. + +1. An example with 'Include numbers to analyzed logs' setting. Error with numeric value is displayed: + + + +2. An example with 'Exclude numbers from analyzed logs' setting. As you can see, error with numeric value is not displayed: + + + +## How to extend Unique Error analysis + +Unique Error analysis functionality can be extended by the [ReportPortal premium feature](https://reportportal.io/pricing/saas) – [Quality Gates](/26.1/quality-gates/). + +If you have Quality Gate plugin installed, you can create Quality Gate for the launch with the 'New Errors' rule. This rule helps identify any new unique errors in the current launch by comparing them to another specified launch. + +If there is Quality Gate for the launch with the 'New Errors' rule, the 'ALL UNIQUE ERRORS' dropdown is visible and enabled. The available options are: All, New Errors and Known Errors. + + + +If there is no Quality Gate for the launch with the 'New Errors' rule, the 'ALL UNIQUE ERRORS' dropdown is visible but disabled. A tooltip appears on hover for the disabled state: 'No Quality Gate with 'New Error' rule for the launch.' + + + +If Quality Gate plugin is not installed or disabled, the 'ALL UNIQUE ERRORS' dropdown is invisible. + + diff --git a/versioned_docs/version-26.1/analysis/_category_.json b/versioned_docs/version-26.1/analysis/_category_.json new file mode 100644 index 0000000000..4ac69eac10 --- /dev/null +++ b/versioned_docs/version-26.1/analysis/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Analysis", + "position": "13", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.1/analysis/img/AnalyzeLaunches.png b/versioned_docs/version-26.1/analysis/img/AnalyzeLaunches.png new file mode 100644 index 0000000000..725e67946b Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/AnalyzeLaunches.png differ diff --git a/versioned_docs/version-26.1/analysis/img/BaseForAnalysis.jpg b/versioned_docs/version-26.1/analysis/img/BaseForAnalysis.jpg new file mode 100644 index 0000000000..5ce8a37994 Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/BaseForAnalysis.jpg differ diff --git a/versioned_docs/version-26.1/analysis/img/IgnoreInAutoAnalysis1.png b/versioned_docs/version-26.1/analysis/img/IgnoreInAutoAnalysis1.png new file mode 100644 index 0000000000..0eed39b6fe Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/IgnoreInAutoAnalysis1.png differ diff --git a/versioned_docs/version-26.1/analysis/img/IgnoreInAutoAnalysis2.png b/versioned_docs/version-26.1/analysis/img/IgnoreInAutoAnalysis2.png new file mode 100644 index 0000000000..982e6b1dd7 Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/IgnoreInAutoAnalysis2.png differ diff --git a/versioned_docs/version-26.1/analysis/img/IgnoreLabel.png b/versioned_docs/version-26.1/analysis/img/IgnoreLabel.png new file mode 100644 index 0000000000..982d96978c Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/IgnoreLabel.png differ diff --git a/versioned_docs/version-26.1/analysis/img/ImmediateAA.png b/versioned_docs/version-26.1/analysis/img/ImmediateAA.png new file mode 100644 index 0000000000..4e632304ff Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/ImmediateAA.png differ diff --git a/versioned_docs/version-26.1/analysis/img/ImmediatePA1.png b/versioned_docs/version-26.1/analysis/img/ImmediatePA1.png new file mode 100644 index 0000000000..389e537ac1 Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/ImmediatePA1.png differ diff --git a/versioned_docs/version-26.1/analysis/img/ImmediatePA2.png b/versioned_docs/version-26.1/analysis/img/ImmediatePA2.png new file mode 100644 index 0000000000..5c9cd002d2 Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/ImmediatePA2.png differ diff --git a/versioned_docs/version-26.1/analysis/img/ImmediatePA3.png b/versioned_docs/version-26.1/analysis/img/ImmediatePA3.png new file mode 100644 index 0000000000..d2520a637f Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/ImmediatePA3.png differ diff --git a/versioned_docs/version-26.1/analysis/img/LabelAA.png b/versioned_docs/version-26.1/analysis/img/LabelAA.png new file mode 100644 index 0000000000..1aa0fab68f Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/LabelAA.png differ diff --git a/versioned_docs/version-26.1/analysis/img/LongestRetrySetting1.png b/versioned_docs/version-26.1/analysis/img/LongestRetrySetting1.png new file mode 100644 index 0000000000..3b73ec91a6 Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/LongestRetrySetting1.png differ diff --git a/versioned_docs/version-26.1/analysis/img/LongestRetrySetting2.png b/versioned_docs/version-26.1/analysis/img/LongestRetrySetting2.png new file mode 100644 index 0000000000..e9205e06ce Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/LongestRetrySetting2.png differ diff --git a/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision1.png b/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision1.png new file mode 100644 index 0000000000..2053839299 Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision1.png differ diff --git a/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision10.png b/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision10.png new file mode 100644 index 0000000000..b81fd6c0a3 Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision10.png differ diff --git a/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision11.png b/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision11.png new file mode 100644 index 0000000000..dcf4e9ca8b Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision11.png differ diff --git a/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision12.png b/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision12.png new file mode 100644 index 0000000000..359ca13d6d Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision12.png differ diff --git a/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision13.png b/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision13.png new file mode 100644 index 0000000000..91d690dda7 Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision13.png differ diff --git a/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision2.png b/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision2.png new file mode 100644 index 0000000000..59d02ccd5a Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision2.png differ diff --git a/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision3.png b/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision3.png new file mode 100644 index 0000000000..e9a76d7949 Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision3.png differ diff --git a/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision4.png b/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision4.png new file mode 100644 index 0000000000..0f9f24dbee Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision4.png differ diff --git a/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision5.png b/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision5.png new file mode 100644 index 0000000000..1fb9b67d42 Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision5.png differ diff --git a/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision6.png b/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision6.png new file mode 100644 index 0000000000..b005590e30 Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision6.png differ diff --git a/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision7.png b/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision7.png new file mode 100644 index 0000000000..48cc9091db Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision7.png differ diff --git a/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision8.png b/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision8.png new file mode 100644 index 0000000000..cc1880354b Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision8.png differ diff --git a/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision9.png b/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision9.png new file mode 100644 index 0000000000..50a401d999 Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/ManualAnalysis/MakeDecision9.png differ diff --git a/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis1.png b/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis1.png new file mode 100644 index 0000000000..347010471c Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis1.png differ diff --git a/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis10.png b/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis10.png new file mode 100644 index 0000000000..50330ffc0c Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis10.png differ diff --git a/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis11.png b/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis11.png new file mode 100644 index 0000000000..df0fb4f61e Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis11.png differ diff --git a/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis2.png b/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis2.png new file mode 100644 index 0000000000..8907cc375e Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis2.png differ diff --git a/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis3.png b/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis3.png new file mode 100644 index 0000000000..7047e9bd43 Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis3.png differ diff --git a/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis4.png b/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis4.png new file mode 100644 index 0000000000..06ea7e597d Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis4.png differ diff --git a/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis5.png b/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis5.png new file mode 100644 index 0000000000..cd71e4773f Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis5.png differ diff --git a/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis6.png b/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis6.png new file mode 100644 index 0000000000..cfe3511beb Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis6.png differ diff --git a/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis7.png b/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis7.png new file mode 100644 index 0000000000..7be7d93a9d Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis7.png differ diff --git a/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis8.png b/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis8.png new file mode 100644 index 0000000000..f6d49107d1 Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis8.png differ diff --git a/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis9.png b/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis9.png new file mode 100644 index 0000000000..fe9c39b7db Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/PatternAnalysis/PatternAnalysis9.png differ diff --git a/versioned_docs/version-26.1/analysis/img/RetryLogAnalysis1.png b/versioned_docs/version-26.1/analysis/img/RetryLogAnalysis1.png new file mode 100644 index 0000000000..4cbace293e Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/RetryLogAnalysis1.png differ diff --git a/versioned_docs/version-26.1/analysis/img/RetryLogAnalysis2.png b/versioned_docs/version-26.1/analysis/img/RetryLogAnalysis2.png new file mode 100644 index 0000000000..c9abb45a62 Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/RetryLogAnalysis2.png differ diff --git a/versioned_docs/version-26.1/analysis/img/SearchSimilarToInvestigate1.png b/versioned_docs/version-26.1/analysis/img/SearchSimilarToInvestigate1.png new file mode 100644 index 0000000000..50a401d999 Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/SearchSimilarToInvestigate1.png differ diff --git a/versioned_docs/version-26.1/analysis/img/SearchSimilarToInvestigate2.png b/versioned_docs/version-26.1/analysis/img/SearchSimilarToInvestigate2.png new file mode 100644 index 0000000000..fe881bdb86 Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/SearchSimilarToInvestigate2.png differ diff --git a/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError1.png b/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError1.png new file mode 100644 index 0000000000..dc41421f7a Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError1.png differ diff --git a/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError10.png b/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError10.png new file mode 100644 index 0000000000..9620a95e4e Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError10.png differ diff --git a/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError11.png b/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError11.png new file mode 100644 index 0000000000..048ba73199 Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError11.png differ diff --git a/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError12.png b/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError12.png new file mode 100644 index 0000000000..eb2162920c Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError12.png differ diff --git a/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError13.png b/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError13.png new file mode 100644 index 0000000000..9357473a6b Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError13.png differ diff --git a/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError14.png b/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError14.png new file mode 100644 index 0000000000..e2127c3e34 Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError14.png differ diff --git a/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError15.png b/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError15.png new file mode 100644 index 0000000000..d3292021e7 Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError15.png differ diff --git a/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError16.png b/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError16.png new file mode 100644 index 0000000000..6875e180ac Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError16.png differ diff --git a/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError2.png b/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError2.png new file mode 100644 index 0000000000..7645d61ece Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError2.png differ diff --git a/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError3.png b/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError3.png new file mode 100644 index 0000000000..21c0080091 Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError3.png differ diff --git a/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError4.png b/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError4.png new file mode 100644 index 0000000000..19916313e3 Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError4.png differ diff --git a/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError5.png b/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError5.png new file mode 100644 index 0000000000..c27d737904 Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError5.png differ diff --git a/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError6.png b/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError6.png new file mode 100644 index 0000000000..431c6527a6 Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError6.png differ diff --git a/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError7.png b/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError7.png new file mode 100644 index 0000000000..184e8a923e Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError7.png differ diff --git a/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError8.png b/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError8.png new file mode 100644 index 0000000000..53be3db008 Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError8.png differ diff --git a/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError9.png b/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError9.png new file mode 100644 index 0000000000..51280d444e Binary files /dev/null and b/versioned_docs/version-26.1/analysis/img/UniqueErrorAnalysis/UniqueError9.png differ diff --git a/versioned_docs/version-26.1/analysis/index.md b/versioned_docs/version-26.1/analysis/index.md new file mode 100644 index 0000000000..983e3907e1 --- /dev/null +++ b/versioned_docs/version-26.1/analysis/index.md @@ -0,0 +1,20 @@ +--- +title: Analysis +description: Deep into ReportPortal's advanced analysis methods for robust test automation metrics & efficient defect triaging. +--- + +# Analysis + +The **Analysis** section in ReportPortal offers detailed documentation on the powerful features available to help you conduct faster and more efficient test automation results analysis. Learn how to effectively investigate failures, monitor trends, and improve the overall quality, reliability, and performance of your test automation processes using ReportPortal. + +ReportPortal provides multiple methods for analyzing test results, including **automatic, manual, and immediate analysis** options. For instance, features like Pattern Analysis, Unique Error Analysis, and Auto-Analysis are designed to run automatically by default, offering real-time insights into test failures without manual intervention. However, these features can also be triggered manually in case automatic analysis is turned off. + +The automated analysis capabilities in ReportPortal are particularly useful for reducing the time spent on defect triage. By automatically categorizing and analyzing test results, our test results reporting service helps you quickly identify recurring issues and potential areas for improvement. This not only saves time but also enhances the accuracy of defect detection. + +With Immediate Auto-Analysis and Immediate Pattern Analysis, you can start analyzing failed tests right away, without having to wait for the launch to be completed. + +By leveraging these advanced analysis features, ReportPortal helps you optimize your test processes, enhance defect management, and maintain higher standards of software quality. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.1/case-studies/ImprovingTestAutomationStability.mdx b/versioned_docs/version-26.1/case-studies/ImprovingTestAutomationStability.mdx new file mode 100644 index 0000000000..9f48969462 --- /dev/null +++ b/versioned_docs/version-26.1/case-studies/ImprovingTestAutomationStability.mdx @@ -0,0 +1,32 @@ +--- +sidebar_position: 4 +sidebar_label: Improving test automation stability +description: Learn how ReportPortal improve test automation stability, reduced failures, and cut analysis time with better logging, triage, and dashboards. +--- + +# Improving test automation stability + +**Challenges** + +- Complex, manual test runs +- Low stability of regression for unclear reasons (60% passing rate) +- Unclear reporting for non-technical stakeholders, leading to the lack of transparency in test automation results and progress +- Test automation feedback is unclear, unreliable, incomprehensible, and insufficient to decide to push the app to production + +**Highlights** + +By integrating the test framework with ReportPortal.io, EPAM's team provided: + +- Simplified test runs +- Key info for the manual root cause analysis of test failures, such as logs, screenshots, attachments +- A possibility to triage failed items (AI-based and manual) +- Clear reporting for non-technical stakeholders + +**Results** + +- Improved automation stability from 60% to 77% in one sprint +- Discovered that most failures were caused by environment issues and reduced the number of such failures from 20% to 2% +- Reduced test automation results analysis effort by 45% +- Provided clear and comprehensive test automation reporting dashboard: number of test cases, regression passing rate, reasons for failures, product status + + diff --git a/versioned_docs/version-26.1/case-studies/IncreasingTestAutomationStabilityAndVisibility.mdx b/versioned_docs/version-26.1/case-studies/IncreasingTestAutomationStabilityAndVisibility.mdx new file mode 100644 index 0000000000..60240165e4 --- /dev/null +++ b/versioned_docs/version-26.1/case-studies/IncreasingTestAutomationStabilityAndVisibility.mdx @@ -0,0 +1,36 @@ +--- +sidebar_position: 2 +sidebar_label: Increasing test automation stability and visibility +description: Discover how ReportPortal boosted test stability from 25% to 95%, cut analysis effort by 90%, and improved visibility for smarter release decisions. +--- + +# Increasing test automation stability and visibility + +**Challenges** + +- 2,000 unique tests had low stability (25% passing rate) +- Complex and inconvenient test results reporting +- QA team didn’t have capacity for test failure analysis +- Automation results were ignored by decision makers: no analysis of the causes of failed tests, no trust in the automation testing process +- Lack of visibility into failed tests and failure causes +- Absence of clear reporting of QA engineers’ workload and performance + +**Highlights** + +Integration with ReportPortal.io allowed the client to: + +- Collect history for previous test runs +- Identify passing, failing, and unstable tests +- Select stable tests in a separate run +- Assign unstable test for refactoring and add them to a separate run for implementation +- Configure ReportPortal.io charts to track a refactoring progress +- Accelerate test failure analysis through access to related logs, screenshots, and attachments in one place + +**Results** + +- Automation stability improved from 25% to 95% +- Analysis efforts of QA engineers decreased by 10 times +- Client stakeholders use ReportPortal.io data to make release decisions +- ReportPortal.io became the main tool for tracking test automation progress and health + + diff --git a/versioned_docs/version-26.1/case-studies/ReducingRegressionAnalysisEfforts.mdx b/versioned_docs/version-26.1/case-studies/ReducingRegressionAnalysisEfforts.mdx new file mode 100644 index 0000000000..e3b0c013e5 --- /dev/null +++ b/versioned_docs/version-26.1/case-studies/ReducingRegressionAnalysisEfforts.mdx @@ -0,0 +1,30 @@ +--- +sidebar_position: 3 +sidebar_label: Reducing regression analysis efforts +description: Discover how ReportPortal reduces regression analysis time by enabling real-time insights, automated reruns, and a powerful QA metrics dashboard for faster, smarter testing. +--- + + +# Reducing regression analysis efforts + +**Challenges** + +- Test analysis could only start after full execution was completed (4 hours wasted daily) +- All test failures had to be analyzed manually +- No visibility into causes for tests failures +- Absence of history and trends of test failures +- No tools to manage team workload +- Test execution reports were done manually (1 hour of daily efforts) + +**Highlights** + +- Real-time analysis during test runs: results available after the first job execution, saving team capacity and providing an early reaction +- Automatic re-run of failed tests provided additional value and saved up to 5.5 of team’s hours per day +- About 20% of defects previously analyzed manually are being updated automatically through ML capabilities +- Clear visibility into the number of new /existing production defects, auto test related issues, and environment related issues +- Full understanding of application quality, correct planning of maintenance time, and transparent communication of environment instability based on real-time statistics +- History of tests execution helps to analyze causes of test failures more efficiently +- Improved task management due to possibility to plan work allocation and track tests assigned to each team member +- Real-time dashboards were tailored to client’s KPIs, giving full transparency of test execution results + + diff --git a/versioned_docs/version-26.1/case-studies/ReducingRegressionTimeBy50.mdx b/versioned_docs/version-26.1/case-studies/ReducingRegressionTimeBy50.mdx new file mode 100644 index 0000000000..3b9d744470 --- /dev/null +++ b/versioned_docs/version-26.1/case-studies/ReducingRegressionTimeBy50.mdx @@ -0,0 +1,32 @@ +--- +sidebar_position: 1 +sidebar_label: Reducing regression time by 50% +description: Learn how to reduce regression time by 50% using ReportPortal's test automation reporting tools and qa dashboard tools for faster analysis. +--- + + +# Reducing regression time by 50% + +EPAM helps a Canadian retail company to reverse-engineer their legacy IBM-based store management system to a modern tech stack. As part of this project, ReportPortal was deployed as a centralized test reporting tool. + +**Challenges** + +- Unavailble environments (15VMs) blocked by aggregation scripts +- High risk of aggregation fail: 1 in 10 aggregations fails. In case of a fail, the whole regression should be re-run. +- Constant regression fails move weekly releases for 1 day +- Lack of information for investigation: no screenshots/no history/no structure/no all info +- Duplicated analysis efforts: missing history of test cases and known issues + +**Highlights** + +- Simplified test run reporting by integrating the test framework with ReportPortal.io +- Distributed test execution data for root cause analysis: logs/screenshots/ attachments +- Provided a possibility for AI-based defects triage and manual triage +- Provided clear reporting for non-technical stakeholders +- Real-time reporting +- Save on early reaction: team result analysis right after execution started in real time +- Collaborative results analysis +- Test Case History helped to identify flaky test cases +- Extended ML Analyzer + + diff --git a/versioned_docs/version-26.1/case-studies/_category_.json b/versioned_docs/version-26.1/case-studies/_category_.json new file mode 100644 index 0000000000..da37ba7b39 --- /dev/null +++ b/versioned_docs/version-26.1/case-studies/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "Case Studies", + "position": "22", + "link": {"type": "doc", "id": "index"} +} + diff --git a/versioned_docs/version-26.1/case-studies/img/CaseStudy1.png b/versioned_docs/version-26.1/case-studies/img/CaseStudy1.png new file mode 100644 index 0000000000..b603591afa Binary files /dev/null and b/versioned_docs/version-26.1/case-studies/img/CaseStudy1.png differ diff --git a/versioned_docs/version-26.1/case-studies/img/CaseStudy2.png b/versioned_docs/version-26.1/case-studies/img/CaseStudy2.png new file mode 100644 index 0000000000..e3ed0ac8da Binary files /dev/null and b/versioned_docs/version-26.1/case-studies/img/CaseStudy2.png differ diff --git a/versioned_docs/version-26.1/case-studies/img/CaseStudy3.png b/versioned_docs/version-26.1/case-studies/img/CaseStudy3.png new file mode 100644 index 0000000000..43d23fa283 Binary files /dev/null and b/versioned_docs/version-26.1/case-studies/img/CaseStudy3.png differ diff --git a/versioned_docs/version-26.1/case-studies/img/CaseStudy4.png b/versioned_docs/version-26.1/case-studies/img/CaseStudy4.png new file mode 100644 index 0000000000..57b4b31163 Binary files /dev/null and b/versioned_docs/version-26.1/case-studies/img/CaseStudy4.png differ diff --git a/versioned_docs/version-26.1/case-studies/index.md b/versioned_docs/version-26.1/case-studies/index.md new file mode 100644 index 0000000000..417f698d39 --- /dev/null +++ b/versioned_docs/version-26.1/case-studies/index.md @@ -0,0 +1,16 @@ +--- +title: Case Studies +description: Discover success stories to see how top organizations improved processes thanks to our test automation reporting dashboard. +--- + +# Case Studies + +The **Case Studies** section offers an in-depth look at how ReportPortal functions in real-world scenarios, highlighting its impact across various industries. Here, you’ll find success stories from businesses that have significantly improved their testing processes through the platform. By reading these case studies, you’ll see how ReportPortal accelerates test execution, enhances defect detection, and ultimately optimizes overall software quality, resulting in more reliable and faster product releases. + +Each case study demonstrates visible benefits, showing how organizations have used our test report dashboard to streamline their testing workflows. Whether you’re in finance, healthcare, retail, technology, or any other industry, these examples provide valuable insights into how the platform can address the specific challenges faced in different environments. You’ll learn how teams have reduced testing time, minimized human error, and improved product release cycles by implementing ReportPortal’s automated reporting and monitoring capabilities. The case studies also show how users have taken advantage of ReportPortal’s advanced features like real-time analytics and AI-based defect triage to drive higher efficiency and more accurate testing results. + +In addition to these real-world examples, this section offers practical tips and actionable ideas that can be applied to your own test automation strategy. Whether you’re looking to improve defect detection rates, speed up test execution, or enhance reporting accuracy, the lessons learned from these case studies will give you a deeper understanding of how to maximize the efficiency of your testing efforts using ReportPortal. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.1/configuration/IntegrationViaPlugin.mdx b/versioned_docs/version-26.1/configuration/IntegrationViaPlugin.mdx new file mode 100644 index 0000000000..09bf56eb75 --- /dev/null +++ b/versioned_docs/version-26.1/configuration/IntegrationViaPlugin.mdx @@ -0,0 +1,53 @@ +--- +sidebar_position: 5 +sidebar_label: Integration via plugin +description: Integrate ReportPortal with external systems like Jira, Slack, and bug tracking tools to enhance your test automation reporting tools capabilities. +--- + +# Integration via plugin + +Users can enhance ReportPortal by adding additional integrations with: +* [Jira Server](/plugins/bug-tracking/AtlassianJiraServer) +* [Jira Cloud](/plugins/bug-tracking/AtlassianJiraCloud) +* [Rally](/plugins/bug-tracking/Rally) +* [Azure DevOps](/plugins/bug-tracking/AzureDevOps) +* [GitLab](/plugins/bug-tracking/GitLab) +* [Monday](/plugins/bug-tracking/Monday) +* [Sauce Labs](/plugins/other/SauceLabs) +* [E-mail server](/plugins/notifications/EmailServer) +* [Slack](/plugins/notifications/Slack) +* [Telegram](/plugins/notifications/Telegram) +* [LDAP](/plugins/authorization/LDAP) +* [Active Directory](/plugins/authorization/ActiveDirectory) +* [Okta SAML](/plugins/authorization/SamlProviders/OktaSaml) +* [Azure SAML](/plugins/authorization/SamlProviders/AzureSaml) +* [JUnit](/plugins/import/JUnit) +* [RobotFramework](/plugins/import/RobotFramework) + + + +If you're keen on incorporating ReportPortal with other external systems, and can't find the necessary tab in the Project Settings, please refer to the [Plugins section](/plugins/) in our documentation for guidance. Our test reporting tool integrates seamlessly, allowing for a streamlined connection with external systems. + +The integrations can be added at a global level, applicable for all projects on an instance, in the "Administrate" section. Alternatively, they can be specific to a project and can be configured in the Project Settings. + +For those who require a different configuration to other projects, or want to integrate only their specific project with an external system, the following steps could be followed: + +1. Log into ReportPortal as a `PROJECT MANAGER` or `ADMINISTRATOR` + +2. Navigate to Project settings > Integrations + +3. Click on one of the shown integration panels + +4. Click on the "Add Project integration" button. + +Performing these steps will unlink your current project from the global settings and initiate your own configuration. + + + +:::note +If you unlink project setting and ADMIN changes global settings for the whole instance, your project will use your project settings. +::: + +To revert to the global settings, click the button titled "Reset to global settings". This action will erase your settings, and the integration will revert to using the global settings. + +Remember, you can always reset to the global settings. diff --git a/versioned_docs/version-26.1/configuration/LaunchesRetentionPolicy.mdx b/versioned_docs/version-26.1/configuration/LaunchesRetentionPolicy.mdx new file mode 100644 index 0000000000..ae19d1ad1c --- /dev/null +++ b/versioned_docs/version-26.1/configuration/LaunchesRetentionPolicy.mdx @@ -0,0 +1,129 @@ +--- +sidebar_label: Launches retention policy +description: Configure data retention policies to manage storage and keep important launches. Set up automated cleanup for test execution reporting data. +--- + +# Launches retention policy + +Retention policies play a pivotal role in ensuring that companies maintain control over their data. In ReportPortal, on the General tab in Project Settings, the retention policy outlines the guidelines for how long regular launches and their descendants (logs, attachments) should be kept and when they should be deleted. + +You can also mark some launches as important, meaning they are generally not subject to deletion by the time-based retention policy. These launches can only be deleted manually or if [storage is overused](/configuration/LaunchesRetentionPolicy#important-launch-deletion-on-full-storage) (in this case new launches will displace old ones, even if they are marked as important). + +You can mark a launch as important either through the application's UI or during test reporting using special system attributes. + +:::note +By default, the "Important launches" functionality is enabled on all instances.
+An admin can [disable the "Important launches" functionality](/admin-panel/ServerSettings#features) if needed. +::: + +## Mark launch as important on UI + +1. Go to the 'Launches' page. +2. Open the burger menu for the launch. +3. Click on the 'Mark as Important' option on the menu. +4. Confirm your decision by clicking the 'Mark as Important' button on the 'Mark as Important' modal window. + + + +:::note +Administrator can mark any launch as important.
+Project Manager can mark as important any launch within their own project.
+Customers and Members can mark as important only their own launch. +::: + +## Unmark important launches on UI + +1. Go to the 'Launches' page. +2. Open the burger menu for the launch. +3. Click on the 'Unmark as Important' option in the menu. +4. Click on the 'Unmark' button on the 'Unmark as Important' modal window. + + + +:::note +Administrator can unmark any launch as important.
+Project Manager can unmark as important any launch within their own project.
+Customers and Members can unmark as important only their own launch. +::: + + + +## Report launch as important + +You can also mark launch as important while reporting using following parameters: + + + + + +In case launch is reported with system attributes **retentionPolicy : regular** and **retentionPolicy : important**, then attribute **retentionPolicy : important** is taken for defining the field value. + + + +In case launch is reported without **retentionPolicy** system attribute or with random attribute like **retentionPolicy : qwerty**, then the behavior will be as for the launch with system attribute **retentionPolicy : regular**. + + + + + + + + + +## Delete important launch on UI + +1. Go to the 'Launches' page. +2. Select important launch. +3. Click Actions -> Delete. +4. Click 'Delete Important Launch' button on the 'Delete Launch' modal window. + +OR + +1. Go to the 'Launches' page. +2. Open the burger menu for the important launch. +3. Click on the 'Delete' option on the menu. +4. Click 'Delete Important Launch' button on the 'Delete Launch' modal window. + + + +:::note +Administrator can delete important launches of all users.
+Project Manager can delete the launches of users within their own project.
+Customers and Members can delete only their own launches. +::: + +## Bulk delete important launches + +1. Go to the 'Launches' page. +2. Select at least two important launches. +3. Click Actions -> Delete. +4. Click 'Delete Important Launches' button on the 'Delete Launches' modal window. + + + +:::note +Administrator can perform bulk delete important launches of all users.
+Project Manager can perform bulk delete the launches of users within their own project.
+Customers and Members can perform bulk delete only their own launches. +::: + +## Bulk delete important and regular launches + +1. Go to the 'Launches' page. +2. Select at least one important launch and one regular launch. +3. Click Actions -> Delete. +4. Click ‘Delete with Important Launches' button on the 'Delete Launches' modal window. + + + + + +## Important launch deletion on full storage + +If all your storage is used and it consists of both regular and important launches, as soon as a new launch arrives, regular launches and all their related descendants will be deleted, starting from the oldest ones. The weight of deleted regular launches will be proportional to the weight of the new launches that are being reported. + +If there are no regular launches remaining and all your memory space is used by important launches, then important launches and their descendants will be deleted starting from the oldest until the storage no longer exceeds capacity. The weight of deleted important launches will be proportional to the weight of the new launches that are being reported. + +When it comes to attachments, in case of storage overusage by attachments of both regular and important launches, the same logic will apply. Attachments of regular launches are subject to deletion first. If there are no attachments from regular launches left, then attachments from important launches will be deleted, starting from the oldest, until the storage no longer exceeds capacity. + +Thus, storing and managing data within ReportPortal is now even more convenient. The updates to the launches retention policy introduce the option to mark launches as important, provide greater flexibility and ensure that crucial data is kept as long as needed. diff --git a/versioned_docs/version-26.1/configuration/ProjectSettings.mdx b/versioned_docs/version-26.1/configuration/ProjectSettings.mdx new file mode 100644 index 0000000000..a8eff21e9a --- /dev/null +++ b/versioned_docs/version-26.1/configuration/ProjectSettings.mdx @@ -0,0 +1,405 @@ +--- +sidebar_position: 3 +sidebar_label: Project settings +description: Configure project settings, notifications, defect types, and data retention policies to optimize your test automation reporting dashboard performance. +--- + +# Project settings + +To see the list of available projects and open a project, click the drop-down list in the top of the left menu. + +ReportPortal supports customization of the default settings. + +**Permission:** +Users with the `Administrator` role can edit project settings on the project "Settings" page in Administrate section and on the Project space. +Users with the `PROJECT_MANAGER` role can edit the settings on the project space only. +`MEMBER`/ `OPERATOR`/ `CUSTOMER` can only view applied project settings. + +To go to the project settings page, click the "Project Settings" icon in the left menu. + +The project configuration page will be opened. + +The project settings are divided into following tabs: "General", "Integrations", "Notifications", "Defect Types", "Analyzer", "Pattern Analysis", "Demo Data" and "Quality Gates" (if you have our [premium feature](/26.1/quality-gates)). + +## General settings + +Our test automation results dashboard allows you to control the amount of the stored data (launches, test items, logs and attachments) by removing outdated elements using Quartz jobs. +Functionality of data removing depends on two configurations. + +The first one is API service back-end environment variables that are described in [ReportPortal jobs configuration](/installation-steps-advanced/JobsConfiguration) + +The second one is the "General" tab you can configure parameter of data storage in ReportPortal for this project: + +- Name – is a disabled field as the project name cannot be changed. + +In addition to the Project Settings General section, you can find the project name on the left menu and in the URL. + + + +- **Launch inactivity timeout** - this parameter specifies the scheduled time for a job to interrupt inactive launches (launches which have the status 'in progress', but there is no any items during the chosen period). There are six options: + - 1 hour, + - 3 hours, + - 6 hours, + - 12 hours, + - 1 day, + - 7 days. + +- **Keep launches** - this parameter specifies how long the system will keep old launches in the data base. There are five options: + * 7 days, + * 14 days, + * 21 days, + * 30 days, + * 90 days. + +After this period a launch will be deleted, and you can not see it in ReportPortal. + +- **Keep logs** - this parameter specifies how long the system will keep old logs in launches. Related launch structures will be saved, to keep statistics. There are five options: + * 7 days, + * 14 days, + * 21 days, + * 30 days, + * 90 days. + +Widgets continue to work even if the logs are deleted, as they are linked to test items. + +- **Keep attachments** - this parameter specifies how long to keep binary data (screenshots, files, video, and others attachments) + in the system. There are five options: + * 7 days, + * 14 days, + * 21 days, + * 30 days, + * 90 days. + + + +## Integrations + +The "Integration" tab can allow the project to connect ReportPortal with external systems or rewrite global configurations for third party systems. + +For more information on this topic, please refer to [Integration with external systems](/configuration/IntegrationViaPlugin). + +## Notifications + +The ‘Notifications’ tab provides the administrator with the ability to activate notifications on the project – through either Email or Slack. + +ReportPortal provides a way to add multiple rules with specific conditions. The notification rule should be unique per Notification group – Email or Slack, have a unique parameter set. For example: In case, Launch names, Attributes. + +:::note +Users with ADMINISTRATOR role can configure ‘Notifications’ in the Administrate section.
+Users with PROJECT_MANAGER role can edit the settings on the project space only.
+Users with MEMBER/ OPERATOR/ CUSTOMER project role will not have the capability to edit the project settings, however, they do have the permission to view them. +::: + +### Email notifications + +:::tip +For using this functionality be sure that the [Email server](/plugins/notifications/EmailServer/) is configured. For that, go to the Project Settings -> Integrations -> Email Server. +::: + +To create Email notification rule, perform the following steps: + +1. Go to the Project settings -> Notifications. + +2. Choose Email Notification Group. + +3. Click ‘Create Rule’ button. + +4. Fill the form: + +**Rule name** – from 1 to 55 characters, mandatory field + +**Recipients** – optional field + +Start typing any symbols into the ‘Recipients’ field. You can select an item from the auto-complete tooltip using the keyboard (use the ‘Up’ and ‘Down’ arrows and ‘Enter’ button). You can also enter a custom email into the ‘Recipients’ field. To add a custom email, just enter the email address and press ‘Enter’. + +**Launch owner** – optional checkbox + +The ‘Launch owner’ checkbox is selected by default. Uncheck ‘Launch owner’ to exclude him/her from the notification. + +**In case** – optional field, dropdown with the options: + +* Always – notification will be sent upon the launch finish. +* 10% of items have issues – notification will be sent, if more than 10% of items have issues. +* 20% of items have issues – notification will be sent, if more than 20% of items have issues. +* 50% of items have issues – notification will be sent, if more than 50% of items have issues. +* Launch has issues – notification will be sent, if at least 1 item has issues +* Launch has ‘To Investigate’ items – notification will be sent, if at least 1 item has ‘To Investigate’ + +**Launch names** – optional field + +Start typing any symbols into the ‘Launch names’ field. You can select an item from the auto-complete tooltip using the ‘Up’ and ‘Down’ arrows and clicking ‘Enter’ on the keyboard. This is an alternate way you can add a new launch name that does not exist on the project. Several launches names can be selected; the recipients will receive notifications when each of them finishes. + +**Attributes** – optional checkbox + +When the ‘Attributes’ checkbox is checked, user can provide key/value for attributes and select the necessary radio button: + +* All attributes should match +* Any attribute should match + +Start typing any symbols into the ‘Attribute key’ and ‘Attribute value’ fields. The system will suggest the results in the dropdown, after at least 1 symbol is provided. It is also possible to add a new attribute (that does not exist on the project). Several attributes can be selected at once; the corresponding recipients will receive notifications about the launches that have all the specified attributes. + +You can edit/ copy/enable/disable notification rule by clicking on the appropriate controls on the notification rule. + +5. Click on ‘Create’ button. + + + +### Slack notifications + +:::tip +To use this functionality, ensure that the [Slack plugin](/plugins/notifications/Slack) is uploaded and enabled. For that, go to Administrate -> Plugins or contact your instance Administrator. +::: + +To create Slack notification rule, perform the following steps: + +1. Go to the Project settings -> Notifications. + +2. Choose Slack Notification Group. + +3. Click ‘Create Rule’ button. + +4. Fill the form: + +**Rule name** – from 1 to 55 characters, mandatory field + +**Webhook URL** – mandatory field (it is configured on the [Slack side](/plugins/notifications/Slack#create-an-application-in-slack)) + +**In case** – optional field, dropdown with the options: + +* Always – notification will be sent upon the launch finish. +* 10% of items have issues – notification will be sent, if more than 10% of items have issues. +* 20% of items have issues – notification will be sent, if more than 20% of items have issues. +* 50% of items have issues – notification will be sent, if more than 50% of items have issues. +* Launch has issues – notification will be sent, if at least 1 item has issues +* Launch has ‘To Investigate’ items – notification will be sent, if at least 1 item has ‘To Investigate’ + +**Launch names** – optional field + +Start typing any symbols into the ‘Launch names’ field. You can select an item from the auto-complete tooltip using the ‘Up’ and ‘Down’ arrows and clicking ‘Enter’ on the keyboard. This is an alternate way you can add a new launch name that does not exist on the project. Several launches names can be selected; the recipients will receive notifications when each of them finishes. + +**Attributes** – optional checkbox + +When the ‘Attributes’ checkbox is checked, user can provide key/value for attributes and select the necessary radio button: + +* All attributes should match +* Any attribute should match + +Start typing any symbols into the ‘Attribute key’ and ‘Attribute value’ fields. The system will suggest the results in the dropdown, after at least 1 symbol is provided. It is also possible to add a new attribute (that does not exist on the project). Several attributes can be selected at once; the corresponding recipients will receive notifications about the launches that have all the specified attributes. + +You can edit/ copy/enable/disable notification rule by clicking on the appropriate controls on the notification rule. + +5. Click on ‘Create’ button. + + + +### Telegram notifications + +:::tip +To use this functionality, ensure that the [Telegram plugin](/plugins/notifications/Telegram) is uploaded and enabled. For that, go to Administrate -> Plugins or contact your instance Administrator. +::: + +To create Telegram notification rule, perform the following steps: + +1. Go to the Project settings -> Notifications. + +2. Choose Telegram Notifications Group. + +3. Click ‘Create Rule’ button. + +4. Fill the form: + +**Rule name** – from 1 to 55 characters, mandatory field + +**Chat id** – mandatory field, copied from group info in [Telegram](/plugins/notifications/Telegram#configuration-on-telegram-side) + +:::important +Add ‘-’ before the chat id. +::: + +**Bot Api Key** - mandatory field, received during registration [your Telegram bot](/plugins/notifications/Telegram#configuration-on-telegram-side) + +**In case** – optional field, dropdown with the options: + +* Always – notification will be sent in any case. +* 10% of items have issues – notification will be sent, if more than 10% of items have issues. +* 20% of items have issues – notification will be sent, if more than 20% of items have issues. +* 50% of items have issues – notification will be sent, if more than 50% of items have issues. +* Launch has issues – notification will be sent, if at least 1 item has issues +* Launch has ‘To Investigate’ items – notification will be sent, if at least 1 item has ‘To Investigate’ + +**Launch names** – optional field + +You can select only existing launch name. The field allows multi-selection. + +**Attributes** – optional checkbox + +When the ‘Attributes’ checkbox is checked, you can provide key/value for attributes and select the necessary radio button: + +* ‘All attributes should match’ +* ‘Any attribute should match’ + +5. Click on ‘Create’ button. + + + +## Defect types + +The "Defect Types" tab allows users with permissions to create custom defect types as subtypes of default defects on the project. + +After Installation the ReportPortal by default sets-up the following defect types groups: + +* **To investigate** - means that no investigation was performed on this defect yet. +* **Product Bug** - defect was investigated and a production bug was found as a cause for this test failure. +* **Automation Bug** - defect was investigated and an automation test is not correct. +* **System Issue** - defect was investigated and it turns out that it is a system-level issue, like the app, crashed and caused the test to fail. +* **No Defect** - defect was investigated and defined as not a defect. + +ReportPortal allows the use of existing default defect types (Product Bug, Automation Bug, System Issue, No Defect, To investigate) and or to create custom ones on the project settings page. + +To create custom defect types, perform the following steps: + +1. Login into the ReportPortal. +2. Navigate to Projects -\> Project "Settings" page. +3. Open "Defect Types" tab +4. Click "Add Defect Type" button under any default defect type +5. Add new defect type form will appear +6. Enter "Defect name" and "Abbreviation", select color for defect presentation on the launches grid and widgets. +7. Submit form. You will see an added defect type on the chart preview. + +Add more custom defects, if you need it. The system allows us to add up to ten subtypes of each default defect type. + +Now you can do bug triage and set defect types as default Product Bug/Automation Bug/System Issue/No Defect/TO investigate or custom defects. All of them will be available to select on the Defect Type editor. +For more information refer to the [Investigation of failure](/work-with-reports/InvestigationOfFailure) topic. + +:::note +Default defects cannot be modified and or deleted from the system. Custom defect types can be deleted at any time. + +You can create up to 15 custom defect types for each group. +::: +:::tip +If you have deleted a custom type from the system, all test executions with this deleted defect type get the parent type of the group in which deleted defect has belonged. Statistics updates in all launches where a deleted defect was present. +For example, if you create a custom "Product Bug-1" as a subtype of "Product Bugs" group and investigate a few +defects as "Product Bug-1", then remove "Product Bug-1" from your project, all investigated "Product Bug-1" defects +will be shown as "Product Bug". +::: + + +## Log Types + +Log types define how log entries are categorized and visually highlighted, helping users quickly understand the importance and context of events. Every log entry belongs to a specific log type. Some core system log types are built in and cannot be removed, while custom log types can be added and configured to meet your project needs. + +In the Project Settings -> Log Types tab, you can find the log types available in your project – both system and custom. On this page, you can create custom log types, edit their appearance, delete custom log types, and configure which log types will be displayed in the log level slider on the Log page of the test item. + +**Permissions:**
+Only Admin and Project Manager can manage log types. + +### Create custom log type + +You can create your own log types to better control how logs are organized and visually presented within a project. + +**To create a custom log type:** + +1. Go to the Project settings -> Log types. +2. Click the "Create log type" button. +3. Enter a unique "Log type name". +4. Provide a numeric "Log level" value. +5. Select colors for the "Label color", "Background", and "Text color". +6. Toggle "Text bold" if you want the log type to appear in bold. +7. Click "Create" button. + + + +When a custom log type is created, it is added to the list of available log types and becomes immediately usable within the project. + +:::note +The "Show in log filter" flag for newly created log types is OFF by default. +::: + + + +:::note +If a user reports tests with a log type that doesn’t exist in the project, the system assigns them level 60000 – Unknown. +::: + + + +### Edit log type + +You can update existing log types, adjust their appearance, and manage whether they appear in the log type filter slider. + +:::note +If you update a log type name, make sure to update it in your reporting configuration as well. The system currently identifies log types by their name.
+If you change a log level, all previously reported logs with the old level will be treated as Unknown. +::: + +**To edit log type:** + +1. Go to the Project settings -> Log types. +2. Click the "Edit" icon next to a custom log type. +3. Update the "Log type name", "Log level", and appearance settings (label color, background color, text color, bold). +4. Click "Save" button. + + + +:::note +Log type name and Log level of a system log type cannot be changed. +::: + + + +**To manage the "Show in log filter" toggle:** + +1. Go to the Project settings -> Log types. +2. Modify the "Show in log filter" toggle. + +Log types marked as filterable appear in the log type filter slider on the log view, along with an additional "All" option that shows logs of every type. + +When a log type is selected in the slider, logs with that log level and all higher log levels are displayed. Even if a specific type does not appear in the slider but falls within the selected range, its logs are still included. If no log types are marked as filterable, the slider does not appear. + +:::note +A maximum of 6 log types can be active in the filter slider at the same time (plus the "All" option). +::: + + + + + +### Delete custom log types + +You can delete custom log types from the project. + +:::important +System log types cannot be deleted. +::: + +**To delete a custom log type:** + +1. Go to the Project settings -> Log types. +2. Find the custom log type you want to delete. +3. Click the "Delete" icon. +4. Click "Confirm" button. + + + + + +## Analyzer + +The Analyzer can allow reducing test failure analysis routine on the project. + +For more information on this topic, please refer to [Auto-Analysis documentation](/analysis/AutoAnalysisOfLaunches). + +## Pattern Analysis + +The "Pattern Analysis" feature allows identifying recurring failure patterns and common behaviors across test results. + +For more details, see the [Pattern Analysis documentation](/analysis/PatternAnalysis). + +## Demo data + +The "Demo Data" tab provides a way to generate demo data on the project. + +The generated data could demonstrate how the launches, filter, and dashboard will look. On the other hand, demo data could be +modified or removed without any effect of your real objects. + + diff --git a/versioned_docs/version-26.1/configuration/UserManagement.mdx b/versioned_docs/version-26.1/configuration/UserManagement.mdx new file mode 100644 index 0000000000..9e6818fdf8 --- /dev/null +++ b/versioned_docs/version-26.1/configuration/UserManagement.mdx @@ -0,0 +1,88 @@ +--- +sidebar_position: 3 +sidebar_label: User management +description: Manage users, roles, and permissions in ReportPortal test automation reporting tools for secure project access control. +--- + +# User management + +After [you have created a project](/admin-panel/AllProjectsPage#create-projects), you can invite new members to it. + +**Permissions:**
+User with `ADMINISTRATOR` role and users with project role `PROJECT_MANAGER`. + +### Invite user on a project + +:::info +Depending on the toggle state in [Server Settings](/admin-panel/ServerSettings), the ability to manually invite external users to ReportPortal can be disabled. +::: + +To invite a user on the "Project Members" page, perform the following steps: + +1. Login into ReportPortal instance as with the `PROJECT_MANAGER` project role. +2. Navigate to the "Project Members" page on the left menu. +3. Click the "Invite User" tab. +4. Enter the email address of the user in case he/she is not present in the ReportPortal database or enter his/her login name. +5. In case the user is already available in the ReportPortal, his/her name will appear in the suggestion list. +If not, the Admin should enter the correct email address. +6. Select an appropriate role. +7. Then click 'Invite'. +8. In case the user is already available in ReportPortal she/he will be assigned to the project +If not, the letter with an invitation link will be sent to the user email address. +9. The user will receive an email with the link to the registration. +When the user clicks the link, he/she will see a registration form. +10. The user needs to fill in the registration form and click the "Register" +button to complete the registration. +11. The user will be assigned to the project that the invitation was sent from, and to "Personal Project" with the PROJECT + MANAGER project role. + + + +### Project role + +Every user is given a specific Project role within a specific project. + +Depends on the role, the user is able or not able to perform some actions. For more details, please see the "Permissions map". + +There are 4 possible Project roles in ReportPortal: + +- `PROJECT MANAGER` +- `MEMBER` +- `OPERATOR` +- `CUSTOMER` + +:::note +The `ADMINISTRATOR` has all privileges on the project. +::: + +### Edit project role + +To edit the project role, perform the following steps: + +1. Login into the ReportPortal as a user with `PROJECT_MANAGER` project role. +2. Navigate to the "Project Members" page on the left menu. +3. Select a new value from the "Project Role" drop-down for the user. - The new project role will be automatically saved. + + + +### Unassign user from the project + +Depending on the project needs the assignment could be removed. +To unassign the assignment for the user on the project, perform the following steps: + +1. Login into the ReportPortal as a user with `PROJECT_MANAGER` project role. +2. Navigate to the "Project Members" page on the left menu. +3. Find the required member. +4. Click the 'Unassign' button for the user. +5. Confirm the action in the popup. +6. The user will be unassigned from the current project but will stay in the system. + + +:::note +Invite user, Assign/Unassign internal user to/from the project, change user's role on a project action can be done for a user +with a similar and lower role only. +::: + +:::important +Administrator can also [add users to the project](/admin-panel/AllUsersPage). +::: diff --git a/versioned_docs/version-26.1/configuration/_category_.json b/versioned_docs/version-26.1/configuration/_category_.json new file mode 100644 index 0000000000..52c9d7a7d4 --- /dev/null +++ b/versioned_docs/version-26.1/configuration/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Configuration", + "position": "7", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.1/configuration/img/EmailNotification.png b/versioned_docs/version-26.1/configuration/img/EmailNotification.png new file mode 100644 index 0000000000..14e639a1d7 Binary files /dev/null and b/versioned_docs/version-26.1/configuration/img/EmailNotification.png differ diff --git a/versioned_docs/version-26.1/configuration/img/Integrations.png b/versioned_docs/version-26.1/configuration/img/Integrations.png new file mode 100644 index 0000000000..72d003557e Binary files /dev/null and b/versioned_docs/version-26.1/configuration/img/Integrations.png differ diff --git a/versioned_docs/version-26.1/configuration/img/ProjectIntegration.png b/versioned_docs/version-26.1/configuration/img/ProjectIntegration.png new file mode 100644 index 0000000000..1217e22319 Binary files /dev/null and b/versioned_docs/version-26.1/configuration/img/ProjectIntegration.png differ diff --git a/versioned_docs/version-26.1/configuration/img/ProjectName.png b/versioned_docs/version-26.1/configuration/img/ProjectName.png new file mode 100644 index 0000000000..01d216f695 Binary files /dev/null and b/versioned_docs/version-26.1/configuration/img/ProjectName.png differ diff --git a/versioned_docs/version-26.1/configuration/img/SlackNotification.png b/versioned_docs/version-26.1/configuration/img/SlackNotification.png new file mode 100644 index 0000000000..c702e6cfca Binary files /dev/null and b/versioned_docs/version-26.1/configuration/img/SlackNotification.png differ diff --git a/versioned_docs/version-26.1/configuration/img/TelegramNotification.png b/versioned_docs/version-26.1/configuration/img/TelegramNotification.png new file mode 100644 index 0000000000..24f91c4194 Binary files /dev/null and b/versioned_docs/version-26.1/configuration/img/TelegramNotification.png differ diff --git a/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy1.png b/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy1.png new file mode 100644 index 0000000000..cf0b0604bf Binary files /dev/null and b/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy1.png differ diff --git a/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy10.png b/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy10.png new file mode 100644 index 0000000000..ec457d5243 Binary files /dev/null and b/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy10.png differ diff --git a/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy11.png b/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy11.png new file mode 100644 index 0000000000..71d23fe5d9 Binary files /dev/null and b/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy11.png differ diff --git a/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy2.png b/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy2.png new file mode 100644 index 0000000000..4678558110 Binary files /dev/null and b/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy2.png differ diff --git a/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy3.png b/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy3.png new file mode 100644 index 0000000000..d4e8ae7a58 Binary files /dev/null and b/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy3.png differ diff --git a/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy4.png b/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy4.png new file mode 100644 index 0000000000..c72e5e2087 Binary files /dev/null and b/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy4.png differ diff --git a/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy5.png b/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy5.png new file mode 100644 index 0000000000..1e353e5c4d Binary files /dev/null and b/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy5.png differ diff --git a/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy6.png b/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy6.png new file mode 100644 index 0000000000..22a1f12ee4 Binary files /dev/null and b/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy6.png differ diff --git a/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy7.png b/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy7.png new file mode 100644 index 0000000000..f32d5ebf4c Binary files /dev/null and b/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy7.png differ diff --git a/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy8.png b/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy8.png new file mode 100644 index 0000000000..05bd6dc6d5 Binary files /dev/null and b/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy8.png differ diff --git a/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy9.png b/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy9.png new file mode 100644 index 0000000000..cd8c9ac6e7 Binary files /dev/null and b/versioned_docs/version-26.1/configuration/img/launches-retention-policy/LaunchesRetentionPolicy9.png differ diff --git a/versioned_docs/version-26.1/configuration/img/log-types/CreateLogType.png b/versioned_docs/version-26.1/configuration/img/log-types/CreateLogType.png new file mode 100644 index 0000000000..d306ccd760 Binary files /dev/null and b/versioned_docs/version-26.1/configuration/img/log-types/CreateLogType.png differ diff --git a/versioned_docs/version-26.1/configuration/img/log-types/Delete.png b/versioned_docs/version-26.1/configuration/img/log-types/Delete.png new file mode 100644 index 0000000000..cb3dd47847 Binary files /dev/null and b/versioned_docs/version-26.1/configuration/img/log-types/Delete.png differ diff --git a/versioned_docs/version-26.1/configuration/img/log-types/EditCustom.png b/versioned_docs/version-26.1/configuration/img/log-types/EditCustom.png new file mode 100644 index 0000000000..3da0963137 Binary files /dev/null and b/versioned_docs/version-26.1/configuration/img/log-types/EditCustom.png differ diff --git a/versioned_docs/version-26.1/configuration/img/log-types/EditSystem.png b/versioned_docs/version-26.1/configuration/img/log-types/EditSystem.png new file mode 100644 index 0000000000..02574d7ad9 Binary files /dev/null and b/versioned_docs/version-26.1/configuration/img/log-types/EditSystem.png differ diff --git a/versioned_docs/version-26.1/configuration/img/log-types/FilterOff.png b/versioned_docs/version-26.1/configuration/img/log-types/FilterOff.png new file mode 100644 index 0000000000..265db03fbf Binary files /dev/null and b/versioned_docs/version-26.1/configuration/img/log-types/FilterOff.png differ diff --git a/versioned_docs/version-26.1/configuration/img/log-types/ShowInLogFilter.png b/versioned_docs/version-26.1/configuration/img/log-types/ShowInLogFilter.png new file mode 100644 index 0000000000..721fe43b81 Binary files /dev/null and b/versioned_docs/version-26.1/configuration/img/log-types/ShowInLogFilter.png differ diff --git a/versioned_docs/version-26.1/configuration/index.md b/versioned_docs/version-26.1/configuration/index.md new file mode 100644 index 0000000000..1712eea692 --- /dev/null +++ b/versioned_docs/version-26.1/configuration/index.md @@ -0,0 +1,18 @@ +--- +title: Configuration +description: Configure projects, users, and retention in ReportPortal. Step-by-step guides for access, roles, and policies to manage your test report dashboard effectively. +--- + +# Configuration + +The **Configuration** section is designed specifically for Project Managers, offering essential tools and information to help configure project settings and manage users effectively. In this section, you will find detailed guides that cover every aspect of setting up and customizing project settings to fit the unique needs of your team and organization. Whether you’re just starting a new project or refining an existing one, these resources will help ensure that your project runs smoothly and efficiently. + +**A key feature of this section** is its focus on **user management**. These guides will show you how to invite user on a project, assign roles to team members, and control access to various functionalities within the platform. This ensures that collaboration is smooth, secure, and aligned with the responsibilities of each team member. + +Additionally, this section covers the **Launches retention policy** – an important aspect of managing your project’s data. In ReportPortal, the retention policy determines how long regular launches, and their related data (such as logs and attachments) will be stored before they are automatically deleted. Understanding and configuring this policy is critical for optimizing storage usage and ensuring that old, unnecessary data doesn’t clutter your system. + +Thanks to the Configuration section, Project Managers can ensure efficient project setup, effective user management, and optimal data retention practices. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/ComponentHealthCheck.mdx b/versioned_docs/version-26.1/dashboards-and-widgets/ComponentHealthCheck.mdx new file mode 100644 index 0000000000..b84476e380 --- /dev/null +++ b/versioned_docs/version-26.1/dashboards-and-widgets/ComponentHealthCheck.mdx @@ -0,0 +1,179 @@ +--- +sidebar_position: 24 +sidebar_label: Component health check +description: Generate a detailed test automation report with passing rate of the application components. +--- + +# Component health check + +The widget shows the passing rate of the application components, indicated by the attributes specified for test cases. + +:::note +For using this widget you need to report (or add manually) attributes to test items. +::: + +## Widget's parameters: + +- Filter +- Parameters: All Launches/Latest Launches +- Checkbox 'Exclude Skipped Tests from Statistics'. Default state of checkbox: unselected. +- Minimum allowable passing rate for the component: Possible value ranges from 50% to 100%. The default value is 100%. +- Attribute Key for the First Level (mandatory) +- Attribute Key for the 2nd to 10th Levels (optional) + + + +When the **checkbox 'Exclude Skipped tests from statistics' is selected**, the passing rate is calculated based on the total number of test cases, excluding the skipped tests. + +When the **checkbox 'Exclude Skipped tests from statistics' is not selected**, the passing rate is calculated based on the total number of test cases, including the skipped tests. + +## Widget view + +The Component Health Check widget is multi-level (up to 10 level) with the ability to drill down to the list of test cases included in the corresponding group at each attribute key level. + +**‘ALL LAUNCHES’ option** + +**For the first level**, system applies chosen filter to all the launches in ReportPortal and analyzes the last 600 launches +from the filter. After combining all the tests cases from these launches, the system searches for the test cases +with the attribute key specified for the first widget level (e.g., attribute key **‘function’**) and groups the found test cases +around unique attribute values (order, team, configure, administrate). The system then calculates the passing rate for each group. + +**For the second level**, the system again analyzes the 600 launches from the filter and searches +for the test cases with 1st level attribute key plus value for chosen group (e.g., **function:order**) +and also attribute key specified for the second widget level (e.g., **type**). +The found tests cases are grouped around unique attribute values (backend, API, Unit, UI). +The system again calculates the passing rate for each group. + +The same flow is applied to the other levels of the widget. + + + + + + + + + + + + + + + + + + + +**‘LATEST LAUNCH’ option** + +**For the first level**, the flow is almost the same as for the ‘ALL LAUNCHES’ option. +However, after the test cases are grouped around unique values for the attribute key, system only leaves the tests cases +from latest launches executions for each selection. + +For example, if you have Launch A with executions #1 and #2 and Launch B with executions #1 and #2 +and they correspond to the applied filter, then building the widget based on “LATEST LAUNCHES’ parameter +will take into account only the test cases from Launch A executions #2 and Launch B executions #2. + +## Widget section + +The widget is divided into two sections: Passed and Failed. + +**The Failed section** includes all groups (test cases with the same attribute) that have a passing rate lower than the passing rate specified in the widget wizard. + +**The Passed section** includes all groups that have a passing rate higher than the rate specified in the widget wizard. + + + +Each group on the widget has: + +- **name**, which is equivalent to attribute value +- **passing rate**, calculated as (the number of passed test cases in the group)/(total number of test cases in the group) +- **the number of test cases** in the group +- **a color line**, which depends on the passing rate (see section Widget legend) + +Users can drill down to view the list of test cases included in the group, filtered by: + +- **test method:** Test +- **status:** Passed, Failed, Skipped, Interrupted +- **attributes** (key=Key for corresponding level, value=group name) + +:::note +Each subsequent level should contain the attributes of previous levels. +::: + +When you click on the arrow on the component and the 'Exclude Skipped tests' toggle is OFF, +the system redirects you to the test item view. Test items with statuses Passed, Failed, Interrupted, and Skipped are displayed. + + + + +When you click on the arrow on the component and the 'Exclude Skipped tests' toggle is ON, +the system redirects you to the test item view. Test items with statuses Passed, Failed, and Interrupted are displayed. + + + +## Widget legend + +The widget legend has two lines - Passed and Failed. + +**Failed** + +The failed line has four colors: + +- light red +- regular red +- strong red +- dark red + +It represents values that are less than the rate specified in the widget minus 1. + +**Passed** + +The passing line has only two colors: + +- slightly green +- green + +And have values - from specified on widget wizard to 100%. Depending on this color scheme each group on the widget has its own color. + +Let's say we set 'The min allowable passing rate for the component' to be 90%. The tests cases will be grouped in following color groups: + +green: tests with passing rate equals to 100%
+slightly green: greater than or equal to 90% (specified on widget wizard) and less than 100%
+light red: greater than or equal to 67,5% (calculated as (`90%/4*3`)) and less than 90%
+strong red: greater than or equal to 45% (calculated as (`90%/4*2`)) and less than 67,5%
+regular red: greater than or equal to 22,5% (calculated as (`90%/4`)) and less than 45%
+dark red: less than 22,5% + +:::note +The widget doesn't contain 'IN PROGRESS" launches. +::: + + + +## Use case + +**Situation:**
+As a Project Manager or Test Lead, I want to identify the most unstable areas in my product (application). + +**Solution:**
+Let’s build Component Health Check Widget based on a particular filter for the launches and the following attributes for test cases: + +1st level: **key: function**, possible **values**: order, team, configure, administrate
+2nd level: **key: type**, possible **values**: backend, API, Unit, UI
+3d level: **key: market state**, possible **values**: open, close
+4th level: **key: role**, possible **values**: Project Manager, Member, Admin + +On the first level of the widget, the user will only see the test cases with attribute key **‘function’**.
+The test cases will be grouped by attribute **value**: order, team, configure, administrate.
+By clicking on one of the groups (e.g., order), the user will see the second level of the widget.
+It will contain only test cases that have attribute **function: order** and attribute key **‘type’**.
+Test cases will be grouped by attribute value available for attribute key **‘type’** which are: backend, API, Unit, UI. + +1st LEVEL + + + +2nd LEVEL + + diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/CumulativeTrendChart.mdx b/versioned_docs/version-26.1/dashboards-and-widgets/CumulativeTrendChart.mdx new file mode 100644 index 0000000000..f0f3f2971b --- /dev/null +++ b/versioned_docs/version-26.1/dashboards-and-widgets/CumulativeTrendChart.mdx @@ -0,0 +1,86 @@ +--- +sidebar_position: 22 +sidebar_label: Cumulative trend chart +description: Track cumulative growth trends across builds and versions. Compare statistics over time with drill-down capabilities using qa metrics dashboard. +--- + +# Cumulative trend chart + +Shows the growth trend of summary statistics of launches with the same attribute key. +You can see a growth of statistics from the build to the build, or from version to version. +A widget does not require an edit or new filter creation. If a new version (build, release or other) is added to ReportPortal, new information will be added to the graph. + + + +**Widget's parameters:** +- Filter +- Parameters: only Latest launches +- Number of shown attributes on the widget: 1 - 15 +- Attribute key for the first level (mandatory) +- Attribute key for the second level (optional) + + + +**Widget view** +A widget has two levels. + +**For the first level** the system uses the last 600 launches from the chosen filter. +Then the system searches all launches which have attributes with the key specified on the widget wizard for the first widget level (for example attribute key - BUILD). +Then the system combines launches into groups around unique attribute value (BUILD:3.6, BUILD: V3.7, BUILD:3.8…..). +After that the system should keep in each group **only latest executions** (e.g. the latest launches for BUILD:3.6,  the latest launches  BUILD: V3.7,  the latest launches  BUILD:3.8…. ) and reflects statistics for all unique attributes on the graph for the first widget level. + +First level view - summ statistics of launches with attributes BUILD: 3.20.8.0 / 3.20.8.1 / ... / 3.20.8.9 + +>:::note +Statistics for bars BUILD: 3.20.8.0 is calculated as - a summary of latest launches with attribute 3.20.8.0 +::: + + + + + + + + + + + + + +A user can drill down to the second level of the widget. For that, he should click on the bar. And the system shows two buttons: Drill Down and Show filter. +And a user should click on **"Drill down"**. + +**For the second level** the system again analyzes the 600 launches from the filter. +Then it leaves only launches that have an attribute, that has been clicked by the user (f.e. BUILD: 3.20.8.0 ). +From these launches, systems choose ones with attributes that have key attribute from the section Level 2 (detailed view) on widget wizard. +After the system groups launch with the same attribute and leaves for each selection only the “latest” launches (launches with unique launch name and with the biggest launch number in ReportPortal). +Others should be removed from a group. Each unique group should be reflected in the graph on the second widget level. + + +For each group there is shown a set of bars: Passed, Failed, Skipped, group Product Bug, group Auto Bug, group System Issue, group No defect, group To investigated. + +On the hover on the bar, a user can see detailed information about the sample. Also, the user can see a list of attributes with attribute key from the first and from the second level which has launches, which have been used for a hovered bar. + + +**Visual options** + +**Focus on defect types** +If the option is enabled, a user can see only information about defect types for each sample. +If an option is disabled, a user can see information about statuses and defect types. + +**Totals** +If the option is enabled, a user can see info about several test cases in each sample. + +**Staked area / Separate bars** +Staked area chart - is shown one bar for statuses, and one bar for defect types for each sample. +Separate bars - is shown a separate bar for each status, and each defect type group. + +**Tests / Per cent** +Test mode - OY axis is calculated in test cases. +Percent mode - OY axis is calculated in percent. OY = 100%. + +A user can combine different options. Options are saved per user. + +:::note +The widget doesn't contain 'IN PROGRESS" launches. The widget statistics calculated only in items with method type TEST. +::: diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/DifferentLaunchesComparisonChart.mdx b/versioned_docs/version-26.1/dashboards-and-widgets/DifferentLaunchesComparisonChart.mdx new file mode 100644 index 0000000000..6f27e3cc09 --- /dev/null +++ b/versioned_docs/version-26.1/dashboards-and-widgets/DifferentLaunchesComparisonChart.mdx @@ -0,0 +1,30 @@ +--- +sidebar_position: 18 +sidebar_label: Different launches comparison chart +description: Compare statistics between two latest launches side by side. Analyze test execution differences and track progress using qa dashboard tools. +--- + +# Different launches comparison chart + +The widget allows you to compare statistics for the 2 last launches side by side. + +**Widget's parameters:** + +- Filter. + +**Widget view** + +- The X-axis shows launches numbers and launches names on hover. +- Y-axis shows the percentage of test-cases by statuses. + +The widget contains agenda with statuses, the user can click on a status to remove/add it to the chart. + +The tooltip on mouse hover over the chart area shows launch details: launch name and number, launch start times and percentage of test cases of a particular type. + +The widget has clickable sections when you click on specific sections in the widget, the system forwards you to the launch view for the appropriate selection. + + + +:::note +The widget doesn't contain 'IN PROGRESS" launches. +::: diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/FailedCasesTrendChart.mdx b/versioned_docs/version-26.1/dashboards-and-widgets/FailedCasesTrendChart.mdx new file mode 100644 index 0000000000..f2f7311c49 --- /dev/null +++ b/versioned_docs/version-26.1/dashboards-and-widgets/FailedCasesTrendChart.mdx @@ -0,0 +1,29 @@ +--- +sidebar_position: 16 +sidebar_label: Failed cases trend chart +description: See failed test trends over time to catch regressions early. Analyze totals by defect categories and drill into launches on your test automation dashboard. +--- + +# Failed cases trend chart + +The widget shows the trend of growth in the number of failed test cases (Product Bugs + Auto Bugs + System Issues + No Defects + To Investigates) from run to run. + +**Widget's parameters:** + +- Filter. +- Items: 1-150. The default meaning is 50. + +**Widget view** + +The widget contains the agenda: "Failed". + +- The X-axis shows launches numbers and launches names on hover. +- Y-axis shows several Failed issues (sum of Product Bugs + Auto Bugs + System Issues + No Defects + To Investigates). + +The tooltip on mouse hover over the chart area shows launch details: launch name and number, launch start time and several failed test cases. + + + +:::note +The widget doesn't contain "IN PROGRESS" launches. +::: diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/FlakyTestCasesTableTop50.mdx b/versioned_docs/version-26.1/dashboards-and-widgets/FlakyTestCasesTableTop50.mdx new file mode 100644 index 0000000000..1fc01dc505 --- /dev/null +++ b/versioned_docs/version-26.1/dashboards-and-widgets/FlakyTestCasesTableTop50.mdx @@ -0,0 +1,50 @@ +--- +sidebar_position: 21 +sidebar_label: Flaky test cases table (TOP-50) +description: Track flaky tests that change status between runs. Identify unstable test cases and improve reliability using test automation metrics dashboard. +--- + +# Flaky test cases table (TOP-50) + +Shows the TOP-50 the most flaky test cases within the specified previous launches. + +The test case is displayed in the table if test case status has changed at least once from Passed to Failed or from Failed to Passed in the specified previous launches. + +:::note +For the Flaky Test Cases Table Top 50 widget, only the status of the last retry of a test case is considered. If a test case undergoes multiple retries during different launch executions, and the last retries of each launch yield identical statuses, the test case will not be classified as flaky. Thus, for a test to be identified as flaky, the final retry statuses in each launch must differ. +::: + +**Widget's parameters:** + +- Launches count: 2-100. The default meaning is 30. + +- Launch name: required filed. + +- Include Before and After methods: optional. + +**Widget view** + +The widget has a table view with the following data displayed: + +- Test Case - link to the Step level of the last launch. +- Switches - count of found results with often switches. +- % of Switches - the percent of the fact switches and the possible. +- Last switch - date and time of the last run, when the test item switches the status, displayed in “time ago” format (i.e. “10 minutes ago”). + +On mouse hover, the system will display accurate start times. + +:::note +In “Switches” column only Passed and Failed statuses are displayed (Passed - green, Failed - red). +::: + +:::important +The number of switches from one state to another of the test case with the same uniqueID is displayed in the format **N from M** where: + +**N** is the number of changes of statuses. + +**M** is the number of all possible changes of the item in selection (number of item runs=number of test executions minus number of executions with status Skipped minus 1). + +On mouse hover, tooltip appears “N status changes from M possible times”. +::: + + diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/InvestigatedPercentageOfLaunches.mdx b/versioned_docs/version-26.1/dashboards-and-widgets/InvestigatedPercentageOfLaunches.mdx new file mode 100644 index 0000000000..caeb8a61a4 --- /dev/null +++ b/versioned_docs/version-26.1/dashboards-and-widgets/InvestigatedPercentageOfLaunches.mdx @@ -0,0 +1,44 @@ +--- +sidebar_position: 12 +sidebar_label: Investigated percentage of launches +description: Track the share of Investigated vs To Investigate items by launch or date. Monitor analysis progress to improve triage on your test report dashboard. +--- + +# Investigated percentage of launches + +The widget can be used in two modes - Launch mode and Timeline mode: + +- The widget in the Launch mode shows the percentage of "Investigated" and "To Investigate" items by launch to sum (Product Bugs + Auto Bugs + System Issues + To Investigates). +- The widget in the Timeline mode shows the percentage of "Investigated" and "To Investigate" items to sum (Product Bugs + Auto Bugs + System Issues + To Investigates) in all runs per day, distributed by dates. + +**Widget's parameters:** + +- Filter: At least one filter is required. +- Items: 1-150. The default meaning is 50. +- Mode: Launch or Timeline. The default meaning is Launch mode. + +**Widget view** + +The widget contains an agenda with "To Investigate" and "Investigated" labels. + +The widget view in Launch mode: + +- The X-axis shows launches numbers and launches names on hover. +- Y-axis shows the percent of "Investigated" and "To Investigate" items to sum. (Product Bugs + Auto Bugs + System Issues + To Investigates) + +The tooltip on mouse hover over the chart area shows launch details: launch name, number, launch start time and "percentage of "Investigated" or "To Investigate" items. + + + +The widget view in Timeline mode: + +- The X-axis shows dates and weekdays. +- Y-axis shows a percent of "Investigated" and "To Investigate" items to sum (Product Bugs + Auto Bugs + System Issues + No Defects + To Investigates) distributed by dates. + +The tooltip on mouse hover over the chart area shows launch details: date and percentage of "Investigated" or "To Investigate" items. + +The widget has clickable sections when you click on a specific section in the widget, the system forwards you to the launch view for the appropriate selection. + +:::note +The widget doesn't contain "IN PROGRESS" launches. +::: diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/LaunchExecutionAndIssueStatistic.mdx b/versioned_docs/version-26.1/dashboards-and-widgets/LaunchExecutionAndIssueStatistic.mdx new file mode 100644 index 0000000000..d8b3126a29 --- /dev/null +++ b/versioned_docs/version-26.1/dashboards-and-widgets/LaunchExecutionAndIssueStatistic.mdx @@ -0,0 +1,31 @@ +--- +sidebar_position: 9 +sidebar_label: Launch execution and issue statistic +description: View the latest launch’s pass/fail and defect breakdown at a glance. Click to explore details and triage on your test automation reporting dashboard. +--- + +# Launch execution and issue statistic + +The Launch Execution and Issue Statistic chart shows the status and issues statistics for the last launch of a specified range. + +**Widget's parameters:** + +- Filter: required + +**Widget view** + +The widget shows statistics of the last finished launch for the chosen filter. The statistics are divided into the following sections: + +- Skipped, Passed, Failed +- Product Bug, System Issue, Automation Bug, No Defect (default and custom) and To Investigate. + +The widget contains agenda with statuses, the user can click on a status to remove/add it to the chart. + +Tooltip on mouse hover over chart area shows launch details: launch name, number, and duration. + +The statistics for every type is shown in percentage. On hover, the exact number is shown for each type. + +The widget has clickable sections when you click on a specified section in the widget, the system forwards you to the launch view for the appropriate selection. + + + diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/LaunchStatisticsChart.mdx b/versioned_docs/version-26.1/dashboards-and-widgets/LaunchStatisticsChart.mdx new file mode 100644 index 0000000000..cf9ce17497 --- /dev/null +++ b/versioned_docs/version-26.1/dashboards-and-widgets/LaunchStatisticsChart.mdx @@ -0,0 +1,67 @@ +--- +sidebar_position: 6 +sidebar_label: Launch statistics chart +description: Track failure reasons and statuses across runs or dates with area or bar views. Zoom and click through for deeper insights on your test results dashboard. +--- + +# Launch statistics chart + +The widget can be used in two modes - Launch mode and Timeline mode: + +- The widget in Launch mode shows the growth trend in the number of test cases with each selected status from run to run, +- The widget in Timeline mode shows the sum of test cases with each selected status distributed by dates. + +Also, you can choose a different view of this widget: Area view or Bar view. +For a deeper investigation, you can use the Zoom widget area functionality. + +**Widget's parameters:** + +- Filter: At least one filter is required +- Items: 1-150. The default meaning is 50. +- Widget Criteria: All criteria are selected by default. +- Mode: Launch or Timeline. +- View: Area/ Bar +- Widget Criteria: All criteria are selected by default. + +:::tip +If you choose “Total Defect type”, the system will show the grouped statistics of a chosen standard defect type (the summary of all custom types).
+If you check a single custom defect type, the system will show just the defect type that you have chosen.
+If you choose “Total Defect type” and custom defect types, the system will show and grouped statistics and statistics of each custom defect types. +::: + + +**Widget view** + +The widget contains agenda with selected statuses; you can click on a status to remove/add it to the chart. + +The widget view in Launch mode: + +- The X-axis shows launches numbers and launches names (on hover). +- Y-axis shows the sum of test cases with each selected statuses. + +The tooltip on mouse hover over chart area shows launch details: launch name and number, launch start time and launch statistics. + +Area view + + +Bar view + + +The widget view in Timeline mode: + +- The X-axis shows dates and weekdays. +- Y-axis shows the sum of launches statistics with each selected statuses, distributed by weekdays. + +The tooltip on mouse hover over the chart area shows details: date and total launches statistics. + +The widget has clickable sections; when you click on a specified section in the widget, the system forwards you to launch view for appropriate selection. + +Area view + + +Bar view + + +:::note +The widget doesn't contain "IN PROGRESS" launches. +::: diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/LaunchesDurationChart.mdx b/versioned_docs/version-26.1/dashboards-and-widgets/LaunchesDurationChart.mdx new file mode 100644 index 0000000000..aeff210962 --- /dev/null +++ b/versioned_docs/version-26.1/dashboards-and-widgets/LaunchesDurationChart.mdx @@ -0,0 +1,34 @@ +--- +sidebar_position: 8 +sidebar_label: Launches duration chart +description: Compare launch durations to spot slow runs and trends. Switch between all and latest modes to highlight performance in your test automation results dashboard. +--- + +# Launches duration chart + +The Launch Duration Chart shows the duration of the selected launches. + +**Widget's parameters:** + +- Filter: At least one filter is required +- Items: 1-150. Default meaning is 50 +- Mode All launches/ Latest launches + +**Widget view** + +The widget shows the duration of the filtered launches. + +- The X-axis shows launches duration. +- Y-axis shows launches numbers and launches names on hover. + +Tooltip on mouse hover over chart area shows launch details: launch name, number, and duration. + +The Widget has clickable sections when you click on a specified section in a widget, the system forwards you to launch view for appropriate selection. + +The Widget has two states: All launches and Latest lunches. If you chose *All launches* mode, the widget will show statistics about all launches in the filter. To view only the latest executions of each launch, you should choose *Latest launches*. + + + +:::note +The widget doesn't contain "IN PROGRESS" launches. +::: diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/LaunchesTable.mdx b/versioned_docs/version-26.1/dashboards-and-widgets/LaunchesTable.mdx new file mode 100644 index 0000000000..aed79c27c1 --- /dev/null +++ b/versioned_docs/version-26.1/dashboards-and-widgets/LaunchesTable.mdx @@ -0,0 +1,26 @@ +--- +sidebar_position: 13 +sidebar_label: Launches table +description: View configurable launch data in table format. Click through to explore details, track progress, and analyze results using test automation reporting tools. +--- + +# Launches table + +The widget shows a configurable table of launches. + +**Widget's parameters:** + +- The widget criteria are as follows: Total, Passed, Failed, Skipped, Product Bug, Automation Bug, System Issue, To Investigate, Attributes, User, Description, Start time, Finish time. All criteria are selected by default. To specify them, uncheck unnecessary items in "Criteria for Widget". +- Items: 1-150. The default meaning is 50. + +**Widget view** + +The widget has a table view. + +The widget has clickable elements "launch name", "owner", "attributes", and "number of items"; when you click on specific elements in the widget, the system forwards you to the launch view for the appropriate selection. + + + +:::note +The widget doesn't contain "IN PROGRESS" launches. +::: diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/ManageWidgets.mdx b/versioned_docs/version-26.1/dashboards-and-widgets/ManageWidgets.mdx new file mode 100644 index 0000000000..48627d0ae8 --- /dev/null +++ b/versioned_docs/version-26.1/dashboards-and-widgets/ManageWidgets.mdx @@ -0,0 +1,65 @@ +--- +sidebar_position: 5 +sidebar_label: Manage Widgets +description: Customize, resize, edit, and delete widgets on your dashboard. Organize layout and manage widget settings for optimal test automation reporting and monitoring. +--- + +# Manage Widgets + +## Customize widget + +When you create a widget in our test automation dashboard, it has a basic size. Afterward, you may change the widget size. + +To resize widget the user can hover the mouse cursor over the widget. The system will show resizing arrows. + +Grab the arrow with the cursor and drag it to the desired width and height. + +You can maintain the existing aspect ratio or set a new one when resizing the widget. + +:::note +Widgets have a minimum and maximum mean of width and height defined within the application. +::: +Another way you can customize your dashboard is by changing the widgets' placement within the dashboard canvas area. + +To change a widget placement on the dashboard, perform the following: grab a widget with the cursor by clicking and dragging it to the selected position, holding down the mouse button. + +When you move the widget to the area with sufficient space, the system highlights this place. +The widgets located in this space, are moved to the relocatable widget place. Using this option the user can configure the desired location of the widgets on a dashboard. + + + +## Edit widget + +To create a new widget for data visualization, perform the following steps: + +1. Click the "Edit" icon in the right corner of the widget header. + +2. After the "Edit Widget" window is opened, you can edit any widget settings except the template itself. + +3. Make the necessary changes and click the "Save" button. The widget will be updated. + + + +## View widgets in full-screen mode + +To view widgets on the whole screen, click the 'Full Screen' button in the right top corner of the dashboard. + +Widgets are shown in the same order as for standard view. + +:::note +Clickable areas or elements are disabled for the full-screen mode selected, therefore it will not be possible to create a new widget, update, or delete available widgets in this mode. +::: + +The auto-refresh timeout for widgets in full-screen mode is 30 sec. + +## Delete widget + +To delete the widget: + +1. Click the "Delete" icon (X) in the right corner of the widget header. + +2. Click the "Delete" button on the confirmation popup. + +3. The widget will be deleted from the system. + + diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/MostFailedTestCasesTableTop50.mdx b/versioned_docs/version-26.1/dashboards-and-widgets/MostFailedTestCasesTableTop50.mdx new file mode 100644 index 0000000000..375e1da78f --- /dev/null +++ b/versioned_docs/version-26.1/dashboards-and-widgets/MostFailedTestCasesTableTop50.mdx @@ -0,0 +1,34 @@ +--- +sidebar_position: 15 +sidebar_label: Most failed test-cases table (TOP-50) +description: Identify top 50 most problematic test cases with failure statistics. Track the time since the last status change and detect flaky test cases. +--- + +# Most failed test-cases table (TOP-50) + +The widget contains a table with statistical information about the TOP-50 most problematic test cases. + +**Widget's parameters:** + +- The widget criteria are as follows: Failed, Skipped, Product Bug, Automation Bug, System Issue, No Defect. Failed is selected by default. + +- Launches count: 2-150. By default, "Launches count" is 30. The number of launch last executions you want to analyze. + +- Launch name: Is required. The name of the launch which executions will be analyzed. + +- Include /Exclude Before and After methods + +**Widget view** + +The widget has a table view with the following data displayed: + +- Test Item name - link to the Step level of the last launch +- Failed - count of found failed results +- Last failure - date and time of the last run, when the test item was failed, displayed in 'time ago' format (i.e. "10 minutes ago"). + On mouse hover, the system will display accurate start times. + + + +:::note +The widget contains statistics of the most problematic test cases in all launches, except "IN PROGRESS" and "INTERRUPTED" launches. +::: diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/MostPopularPatternTableTop20.mdx b/versioned_docs/version-26.1/dashboards-and-widgets/MostPopularPatternTableTop20.mdx new file mode 100644 index 0000000000..410da78ed8 --- /dev/null +++ b/versioned_docs/version-26.1/dashboards-and-widgets/MostPopularPatternTableTop20.mdx @@ -0,0 +1,36 @@ +--- +sidebar_position: 23 +sidebar_label: Most popular pattern table (TOP-20) +description: Explore the top 20 most popular patterns in dashboards and widgets to analyze trends and improve reporting insights effectively. +--- + +# Most popular pattern table (TOP-20) + +**Widget's parameters:** +- Filter +- Parameters: All launches/ Latest launches +- Number of shown patterns on the widget: 20 +- Attribute key for the first level (mandatory) + + +For this widget, the system chooses 600 last launches by start time from the filter. +Then it leaves only launches that have an attribute with mentioned key and group launches by attribute value. +The system leaves only the latest launches in each group (if the user has chosen option Latest launches in the widget wizard). +For each group of launches, a list with pattern aggregated. + + + +**Widget view** + +On the widget a user can view a table which shows: + +* 20 patterns with the biggest number of test cases in each defined group. + +Via drop-down user can transit from group to group. +A pattern name is clickable. By clicking on pattern name a user is redirected to a list with all test cases which have clicked pattern. A list of test cases includes test cases from different launches. + + + +:::note +The widget doesn't contain 'IN PROGRESS" launches. +::: diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/MostTimeConsumingTestCasesWidgetTop20.mdx b/versioned_docs/version-26.1/dashboards-and-widgets/MostTimeConsumingTestCasesWidgetTop20.mdx new file mode 100644 index 0000000000..561d84ae05 --- /dev/null +++ b/versioned_docs/version-26.1/dashboards-and-widgets/MostTimeConsumingTestCasesWidgetTop20.mdx @@ -0,0 +1,49 @@ +--- +sidebar_position: 26 +sidebar_label: Most time-consuming test cases widget (TOP-20) +description: Identify the slowest test cases with duration analysis. View top 20 time-consuming tests in table or bar format using QA dashboard tool. +--- + +# Most time-consuming test cases widget (TOP-20) + +Show the TOP 20 test cases with the highest duration in the last execution of the specified launch. + +**Widget's parameters:** + +- Test Status. Default value - Passed, Failed + +- Launch name. Is required + +- Include /Exclude Before and After methods + +- View options: Bar view, Table view + +**Widget view** + +Table View + +The widget has a table view with the following data displayed: + +- Test Item name - link to the log of the last launch + +- Test Status + +- Test Duration + +- Test Start Time - date and time of the last run, displayed in 'time ago' format (i.e. "10 minutes ago"). + +On mouse hover, the system will display accurate start times. + +Bar View + +Bar chart where: + +- axis OY - Tests +- axsic OX - Duration + +Bar color specifies a color of execution. +On mouse hover, the system will display accurate start times. + + + + diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/NonPassedTestCasesTrendChart.mdx b/versioned_docs/version-26.1/dashboards-and-widgets/NonPassedTestCasesTrendChart.mdx new file mode 100644 index 0000000000..369e38cbec --- /dev/null +++ b/versioned_docs/version-26.1/dashboards-and-widgets/NonPassedTestCasesTrendChart.mdx @@ -0,0 +1,33 @@ +--- +sidebar_position: 17 +sidebar_label: Non-passed test-cases trend chart +description: Track non-passed test trends over time to identify quality issues. Monitor failed and skipped test percentages using QA dashboard tool. + + +--- + +# Non-passed test-cases trend chart + +The widget shows the percent ratio of non-passed test cases "Failed + Skipped" and "Total" cases from run to run. + +**Widget's parameters:** + +To configure the widget, click the "Add New Widget" button on the dashboard header, then select a template and specify the following settings on the second step: + +- Filter. +- Items: 1-150. Default meaning is 50 + +**Widget view** + +The widget contains agenda: % (Failed + Skipped) / Total. + +- The X-axis shows launches numbers and launches names on hover. +- Y-axis shows the percent of sum Failed + Skipped test cases to Total. + +The tooltip on mouse hover over the chart area shows launch details: launch name and number, launch start time and percentage of non-passed cases. + + + +:::note +The widget doesn't contain "IN PROGRESS" launches. +::: diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/OverallStatistics.mdx b/versioned_docs/version-26.1/dashboards-and-widgets/OverallStatistics.mdx new file mode 100644 index 0000000000..0d58ff4321 --- /dev/null +++ b/versioned_docs/version-26.1/dashboards-and-widgets/OverallStatistics.mdx @@ -0,0 +1,41 @@ +--- +sidebar_position: 7 +sidebar_label: Overall statistics +description: Visualize passed, failed, skipped, and defect types across launches. Track trends and drill into details on your test automation reporting dashboard. +--- + +# Overall statistics + +The panel shows a summary of test cases with each status for each selected launch. + +**Widget's parameters:** + +- Filter: At least one filter is required +- Items: 1-150. The default meaning is 50. +- Widget Criteria: All criteria are selected by default. +- Type of view: Panel view/ Donut view +- Mode All launches/ Latest launches + + +**Widget view** + +The widget shows statistics of the All launches/or Latest launches for the chosen filter. Statistics are divided into the following sections: +- Skipped, Passed, Failed +- Product Bug, System Issue, Automation Bug, No Defect and To Investigate. + +The statistics for every type are shown in percentages. On hover, the exact number is shown for each type. +The Widget has clickable sections when you click on a specified section in the widget, the system forwards you to launch view for appropriate selection. + +If you chose *All launches* mode, the widget will show the statistics about all launches in the filter. To view only the latest executions of each launch, you should choose *Latest launches*. + +The widget can be viewed in two options as shown on pictures: Panel view + + + +or Donut view. + + + +:::note +The widget doesn't contain "IN PROGRESS" launches. +::: diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/PassingRatePerLaunch.mdx b/versioned_docs/version-26.1/dashboards-and-widgets/PassingRatePerLaunch.mdx new file mode 100644 index 0000000000..fd78bcd92c --- /dev/null +++ b/versioned_docs/version-26.1/dashboards-and-widgets/PassingRatePerLaunch.mdx @@ -0,0 +1,63 @@ +--- +sidebar_position: 19 +sidebar_label: Passing rate per launch +description: See passed vs total per launch with bar or pie views. Toggle skipped items, explore details, and drill down into tests on your test execution dashboard. +--- + +# Passing rate per launch + +Shows the percentage ratio of Passed test cases to Total test cases including or excluding Skipped ones of the selected launch. + +**Widget's parameters:** + +- Launch Name: the name of any finished launch +- Mode: Bar View/Pie View +- Ratio based on: Total test cases (Passed/Failed/Skipped) / Total test cases excluding Skipped +- Widget name: any text +- Description: any text + +:::note +During the setup process, you can choose whether to consider Skipped items using the radio button. +::: + +**Passing rate calculation including Skipped items** + +* Total test cases = Passed + Not Passed, while Not Passed = Failed + Skipped + Interrupted. +* Thus, Passing rate = Passed / (Passed + Failed + Skipped + Interrupted). + +**Passing rate calculation excluding Skipped items** + +* Total test cases = Passed +Failed, while Failed= Failed +Interrupted. +* Thus, Passing rate = Passed / (Passed + Failed + Interrupted). + +Please find below an example of configuration: + + + + + +The widget can be displayed in two options as shown on the pictures below: + +**Bar View** + + + +**Pie View** + + + +As you can see, this widget was built based on the test results of the last run of the Daily Smoke Suite. + +An example of Passing rate per launch widget including Skipped items: + + + +An example of Passing rate per launch widget excluding Skipped items: + + + +The tooltip on mouse hover over chart area shows the number of test cases and ratio of Passed/Not Passed to Total test cases (Passed, Failed, Skipped) or the number of test cases and ratio of Passed/Not Passed to Total test cases excluding Skipped. + +The Passing rate per launch widget has clickable sections. When you click on not Passed pie/bar element, system redirects to the test item view. If the widget was built with the option “Total test cases (Passed/Failed/Skipped)”, then tests with statuses Failed, Interrupted, Skipped are displayed. If the widget was built with the option “Total test cases excluding Skipped”, then tests with statuses Failed and Interrupted are displayed. + + diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/PassingRateSummary.mdx b/versioned_docs/version-26.1/dashboards-and-widgets/PassingRateSummary.mdx new file mode 100644 index 0000000000..2d5545df55 --- /dev/null +++ b/versioned_docs/version-26.1/dashboards-and-widgets/PassingRateSummary.mdx @@ -0,0 +1,66 @@ +--- +sidebar_position: 20 +sidebar_label: Passing rate summary +description: Analyze passing rates across multiple launches with bar or pie views. Toggle skipped items and drill down for detailed test execution reporting insight. +--- + +# Passing rate summary + +Shows the percentage ratio of Passed test cases to Total test cases including or excluding Skipped ones for set of launches. + +**Widget's parameters:** + +* Filter: At least one filter is required +* Items: 1-600. The default meaning is 50. +* Mode: Bar View/Pie View +* Ratio based on: Total test cases (Passed/Failed/Skipped) / Total test cases excluding Skipped +* Widget name: any text +* Description: any text + +:::note +During the setup process, you can choose whether to consider Skipped items using the radio button. +::: + +**Passing rate calculation including Skipped items** + +* Total test cases = Passed + Not Passed, while Not Passed = Failed + Skipped + Interrupted. +* Thus, Passing rate = Passed / (Passed + Failed + Skipped + Interrupted). + +**Passing rate calculation excluding Skipped items** + +* Total test cases = Passed +Failed, while Failed= Failed +Interrupted. +* Thus, Passing rate = Passed / (Passed + Failed + Interrupted). + +Please find below an example of configuration: + + + + + +The widget can be displayed in two options as shown on the pictures below: + +**Bar View** + + + +**Pie view** + + + +As you can see, this widget was built based on the “Daily Smoke” filter. + + + +An example of Passing rate summary widget including Skipped items: + + + +An example of Passing rate summary widget excluding Skipped items: + + + +The tooltip on mouse hover over chart area shows the number of test cases and ratio of Passed/Not Passed to Total test cases (Passed, Failed, Skipped) or the number of test cases and ratio of Passed/Not Passed to Total test cases excluding Skipped. + +The Passing rate summary widget has clickable sections. When you click on not Passed pie/bar element, system redirects to the test item view. If the widget was built with the option **“Total test cases (Passed/Failed/Skipped)”**, then tests with statuses Failed, Interrupted, Skipped are displayed. If the widget was built with the option **“Total test cases excluding Skipped”**, then tests with statuses Failed and Interrupted are displayed. + +Thanks to “Passing rate summary” widget, it is no longer needed to spend time on calculating Passing rate of the specified set of launches. ReportPortal provides these statistics as a visualization – it is a quick and convenient decision. You can take the screenshot of widget and use it in the test results report. diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/PossibleDashboardsInReportPortal.mdx b/versioned_docs/version-26.1/dashboards-and-widgets/PossibleDashboardsInReportPortal.mdx new file mode 100644 index 0000000000..ac31bbd62e --- /dev/null +++ b/versioned_docs/version-26.1/dashboards-and-widgets/PossibleDashboardsInReportPortal.mdx @@ -0,0 +1,88 @@ +--- +sidebar_position: 1 +sidebar_label: Possible Dashboards in ReportPortal +description: Explore the possible dashboards and widgets in ReportPortal to visualize your test results, monitor progress, and gain actionable insights. +--- + +# Possible Dashboards in ReportPortal + +ReportPortal.io is a powerful test automation reporting dashboard that acquires a lot of analytics. With this manual, we are wanting to help you to configure simple and understandable reports for your teams. + +Let's look on 2 examples of dashboards which you can generate: +* Report for one Launch +* Report for Build (Version, Release, Sprint) + +> **Precondition** +> Let's assume that we have a Regression suite which contains: +> +> - a suite with API test cases +> - a suite with UI test cases +> - a suite with integration test cases +> +> The whole Regression is running against nightly build every day. +> Different teams are responsible for different suites. +> +> Which dashboard I can create in such conditions? + +## Report for one tests run (A dashboard for an engineer) + +The goal for this test results dashboard to show the status of the latest test run. For instance to see the latest results for launch with an API suite. + + + +You can configure: +[**Passing rate widget**](/dashboards-and-widgets/PassingRateSummary) that shows a passing rate for a latest launch "API suite' + +[**Most popular pattern**](/dashboards-and-widgets/MostPopularPatternTableTop20) tracks TOP-20 problems in the last and previous runs of this suite. + +:::note +For Most popular pattern table, you should you create a set of rules and run Pattern Analysis +::: + +With [**Investigated percentage of launches**](/dashboards-and-widgets/InvestigatedPercentageOfLaunches) you can find out the status of failure investigations. You will be able to evaluate team performance and consistency of results. + +[**Failed cases trend chart**](/dashboards-and-widgets/FailedCasesTrendChart) shows the history of failures in previous runs. + +[**Duration chart**](/dashboards-and-widgets/LaunchesDurationChart) will be very helpful for those who track duration KPI and want to increase the speed of tests run. + +[**Test growth trend chart**](/dashboards-and-widgets/TestCasesGrowthTrendChart) shows you the speed of new test cases creation. + +Also, you can create [**"Most flaky test cases"**](/dashboards-and-widgets/FlakyTestCasesTableTop50) and [**"Most failed test case"**](/dashboards-and-widgets/MostFailedTestCasesTableTop50) and find the most unstable items which should be taken into account. + +Let's assume that you have a lot of test results and a lot of teams. + +You can create [**Overall statistics**](/dashboards-and-widgets/OverallStatistics) and [**Launches table**](/dashboards-and-widgets/LaunchesTable), and now a team who is responsible for API suite has no need to go to the test results. It can use only this dashboard which gives enough information for test failure management. + +## Build / Release/ Sprint Report (A dashboard for a Team leads, PM, DM) + +The goal of this report to show status for the whole version. It means for this report we want to see the latest results of aggregated statistics for several lanches. + +In our example, I want to see the latest results for the whole Regression (latest results for API suite + latest results for UI + latest results for Integration tests). + +Also, it is very useful to compare the results of the Regression on the current version with the Regression on previous versions and to see details about business metrics. + + + +On this dashboard you can see different metrics: + +- A passing rate for the whole Regression +- With [**Cumulative trend chart**](/dashboards-and-widgets/CumulativeTrendChart) you will be able to compare different versions on one chart, to compare different runs for the current regression +- [**Component Health Check Widget**](/dashboards-and-widgets/ComponentHealthCheck) would show you product: + +* on different env +* on a different dimension +* by business metrics / by features/ by user roles / by etc + +Also with a help of [**Component Health Check Widget**](/dashboards-and-widgets/ComponentHealthCheck) you can create a Test Pyramid. + +:::note +You need to report test executions with attributes which specified needed metrics or envs +::: + +- [**Unique bugs table**](/dashboards-and-widgets/UniqueBugsTable) helps you collect and analyze new bugs in the system + +:::note +Component Health Check Widget and Cumulative trend chart are very configurable and you can create your own widget based on project needs. +::: + + diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/ProjectActivityPanel.mdx b/versioned_docs/version-26.1/dashboards-and-widgets/ProjectActivityPanel.mdx new file mode 100644 index 0000000000..adc66c7ba3 --- /dev/null +++ b/versioned_docs/version-26.1/dashboards-and-widgets/ProjectActivityPanel.mdx @@ -0,0 +1,28 @@ +--- +sidebar_position: 10 +sidebar_label: Project activity panel +description: Monitor all project activities and user actions in real-time. Track launches, user management, and system changes using qa metrics dashboard. +--- + +# Project activity panel + +The widget shows all activities occurring on the project. + +**Widget's parameters:** + +- **The actions for the widget:** Start launch, Finish launch, Delete launch, Actions with issues, Assign/Invite users, Unassign user, Change role, Update Dashboard, Update widget, Update Filter, Update integration, Update project settings, Update Auto-Analysis settings, Update defect types, Import, Update Pattern-Analysis settings, Create pattern, Update pattern, Delete pattern, Pattern matched, Create project. + +- **Items:** 1-150. The default value is 50. + +- **Criteria for widget:** By default, all user's activities. + +**Widget view** + +The actions on the widget are present in a table, separated by days. Action messages have the following format: + +> *Member (name) did action.* +> *Time - displayed in 'time ago' format (i.e. "10 minutes ago"). On mouse hover, the system should display accurate action time.* + + + + diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/ReportingAndMetricsInReportPortal.md b/versioned_docs/version-26.1/dashboards-and-widgets/ReportingAndMetricsInReportPortal.md new file mode 100644 index 0000000000..f43d299ca3 --- /dev/null +++ b/versioned_docs/version-26.1/dashboards-and-widgets/ReportingAndMetricsInReportPortal.md @@ -0,0 +1,33 @@ +--- +sidebar_position: 2 +sidebar_label: Reporting and metrics in ReportPortal +description: With ReportPortal, you can boost your software quality by obtaining detailed test automation reports to monitor test execution, identify issues, and analyze trends for continuous enhancement. +--- + +# Reporting and metrics in ReportPortal + +## Test automation reports in ReportPortal + +With ReportPortal, you can boost your software quality by obtaining detailed +test automation reports to monitor test execution, identify issues, and analyze trends for continuous enhancement through collaborative dashboards in test reporting. + +| Report | Description | Widget | +|-------------------------------| --|-------------| +| **Summary report** | An overview of test execution: tests run, passed, and failed. | [Overall statistics](/dashboards-and-widgets/OverallStatistics)

[Launches table](/dashboards-and-widgets/LaunchesTable)

[Passing rate summary](/dashboards-and-widgets/PassingRateSummary) | +| **Detailed test case report** | Specific details about individual test cases: status (Passed/Failed), execution time, and associated issues/errors. | [Most failed test-cases table (TOP-50)](/dashboards-and-widgets/MostFailedTestCasesTableTop50/)

[Flaky test cases table (TOP-50)](/dashboards-and-widgets/FlakyTestCasesTableTop50/)

[Unique bugs table](/dashboards-and-widgets/UniqueBugsTable/) | +| **Trend analysis report** | The trends in test results over time. | [Most failed test-cases table (TOP-50)](/dashboards-and-widgets/MostFailedTestCasesTableTop50/)

[Flaky test cases table (TOP-50)](/dashboards-and-widgets/FlakyTestCasesTableTop50/)

[Failed cases trend chart](/dashboards-and-widgets/FailedCasesTrendChart/)

[Passing rate summary](/dashboards-and-widgets/PassingRateSummary) | +| **Failure analysis report** | The failed test cases and their details. | [Most failed test-cases table (TOP-50)](/dashboards-and-widgets/MostFailedTestCasesTableTop50/)

[Flaky test cases table (TOP-50)](/dashboards-and-widgets/FlakyTestCasesTableTop50/)

[Failed cases trend chart](/dashboards-and-widgets/FailedCasesTrendChart/)

[Most popular pattern table (TOP-20)](/dashboards-and-widgets/MostPopularPatternTableTop20/) | +| **Execution history report** | The historical data of test runs. | [Passing rate summary](/dashboards-and-widgets/PassingRateSummary)

[Launches duration chart](/dashboards-and-widgets/LaunchesDurationChart/)

[Investigated percentage of launches](/dashboards-and-widgets/InvestigatedPercentageOfLaunches/)

[Test-cases growth trend chart](/dashboards-and-widgets/TestCasesGrowthTrendChart/) | + +## QA and test automation metrics in ReportPortal + +ReportPortal provides various metrics for improving quality assurance and the overall effectiveness of the testing process. + +| Metric | Description | Widget | +|-----------------------------------| --|------------| +| **Passed/Failed rates** | The percentage of test cases that are passing or failing during test execution. | [Passing rate per launch](/dashboards-and-widgets/PassingRatePerLaunch/)

[Passing rate summary](/dashboards-and-widgets/PassingRateSummary/)

[Launch statistics chart](/dashboards-and-widgets/LaunchStatisticsChart/)

[Overall statistics](/dashboards-and-widgets/OverallStatistics/)

[Launch execution and issue statistic](/dashboards-and-widgets/LaunchExecutionAndIssueStatistic/) | +| **Execution time** | The time it takes to execute test suites or individual test cases. | [Launches duration chart](/dashboards-and-widgets/LaunchesDurationChart/)

[Most time-consuming test cases widget (TOP-20)](/dashboards-and-widgets/MostTimeConsumingTestCasesWidgetTop20/) | +| **Defect density** | The number of defects found per unit of code or test case provides a quantitative perspective on the software quality of a given system under test. | [Component health check](/dashboards-and-widgets/ComponentHealthCheck/) | +| **Test case success rate** | The percentage of successful test cases out of the total executed highlights the reliability of the test. | [Passing rate per launch](/dashboards-and-widgets/PassingRatePerLaunch/)

[Passing rate summary](/dashboards-and-widgets/PassingRateSummary/)

[Launch statistics chart](/dashboards-and-widgets/LaunchStatisticsChart/)

[Overall statistics](/dashboards-and-widgets/OverallStatistics/)

[Launch execution and issue statistic](/dashboards-and-widgets/LaunchExecutionAndIssueStatistic/) | +| **Regression test effectiveness** | The capability of regression tests to detect new defects or issues. | [Overall statistics](/dashboards-and-widgets/OverallStatistics/), with special defect type for issues found in regression.

[Unique bugs table](/dashboards-and-widgets/UniqueBugsTable/), with special defect type for issues found in regression. | +| **Error/failure distribution** | The frequency and distribution of test failures across defined components or modules within a given system under test. | [Component health check](/dashboards-and-widgets/ComponentHealthCheck/) | diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/TableComponentHealthCheck.mdx b/versioned_docs/version-26.1/dashboards-and-widgets/TableComponentHealthCheck.mdx new file mode 100644 index 0000000000..25fece9c4d --- /dev/null +++ b/versioned_docs/version-26.1/dashboards-and-widgets/TableComponentHealthCheck.mdx @@ -0,0 +1,111 @@ +--- +sidebar_position: 25 +sidebar_label: Table Component health check +description: See which components need attention, compare metrics across builds, and quickly investigate failures to keep your system running smoothly. +--- + +# Table Component health check + +Shows the detailed statistics of the application components which are indicated by the specified attributes with an ability to exclude Skipped tests from the statistics. +As far as the widget contains complicated queries, the widget can be rendering some time (~10 min). + +:::note +To use this widget, you need to report (or manually add) attributes to test items. +::: + +## Widget's parameters: + +- Filter +- Parameters: All Launches/Latest Launches +- Checkbox 'Exclude Skipped Tests from Statistics' +- The minimum allowable passing rate for the component: possible values range from 50 - 100%. The default value is 100%. +- Attribute key for the first level (mandatory) +- Attribute key for the 2nd to 10th levels (optional) +- Custom column (enter an attribute key - optional) +- Sorting: 'Sort By' dropdown with the options 'Custom Column', 'Total', 'Passing Rate', 'Failed Items'. The default value is 'Passing Rate'. + + + +When the **checkbox 'Exclude Skipped tests from statistics' is selected**, the passing rate is calculated based on the total number of test cases, excluding the skipped tests. + +When the **checkbox 'Exclude Skipped tests from statistics' is not selected**, the passing rate is calculated based on the total number of test cases, including the skipped tests. + +## Widget View + +The widget has a table view. Each line contains information about one component (one unique attribute value): + +- Component name +- Component passing rate +- Statistics: Total/Passed/Failed/Skipped/Product bugs/ Automation bugs/System issues/To investigate +- Information about attribute value in the custom column + +The total line presents a summary of all components. + + + +When you click on **'Total'** test cases for the component and checkbox 'Exclude Skipped tests from statistics' is not selected, system redirects you to the test item view. Test items with statuses Passed, Failed, Interrupted, Skipped are displayed. + +When you click on **'Total'** test cases for the component and checkbox 'Exclude Skipped tests from statistics' is selected, system redirects you to the test item view. Test items with statuses Passed, Failed and Interrupted are displayed. + +When you click on **'Passed'** test cases for the component (if any) and checkbox 'Exclude Skipped tests from statistics' is not selected, system redirects you to the test item view. Test items with statuses Passed are displayed. + +When you click on **'Passed'** test cases for the component (if any) and checkbox 'Exclude Skipped tests from statistics' is selected, system redirects you to the test item view. Test items with statuses Passed are displayed. + +When you click on **'Failed'** test cases for the component (if any) and checkbox 'Exclude Skipped tests from statistics' is not selected, system redirects you to the test item view. Test items with statuses Failed, Interrupted are displayed. + +When you click on **'Failed'** test cases for the component (if any) and checkbox 'Exclude Skipped tests from statistics' is selected system redirects you to the test item view. Test items with statuses Failed, Interrupted are displayed. + +When you click on **Skipped** test cases for the component (if any) and checkbox 'Exclude Skipped tests from statistics' is not selected, system redirects you to the test item view. Test items with statuses Skipped are displayed. + +**Custom Column** + +Why might you need a custom column? Let's explore this through an example. + +## Use case #1 + +**Use Case:** You need to understand the impact of failed test cases. + +**Problem:** You have created a Component Health Check widget and can view a list of features along with their passing rate. However, you cannot ascertain the significance of the failed features. + +**Solution:** For all test executions, add attributes with the attribute key 'priority: XXX'. For instance: + +- priority: low +- priority: major +- priority: critical + +Then, in the widget wizard, add the attribute key 'priority' in the custom column field. This action enables the system to include information regarding the priority of each feature in the widget view. + +**Custom Sorting** + +You can select how components should be sorted in the table. Possible criteria include: + +- Total +- Passing Rate +- Custom Column +- Failed Items + +## Use case #2 + +**Use Case:** To track information about the latest version without updating the filter. + +**Problem:** As a test lead, you want to track information about the latest results without having to make additional adjustments. Your version contains several launches: a launch with API test cases, a launch with UI test cases, and a launch with Integration test cases. You aim to track the summary statistics of the latest results for the API launch, UI launch, and Integration launch. For this, you've added an attribute 'version: XXX' to all the necessary launches, denoting the number of versions. You've also created a filter including all launches with the respective attribute. Now, you can create an Overall Statistics widget which will show you a summary of the latest results for version: xxx. But whenever you run a new version (for instance, version: xxx+1), you have to repeatedly carry out the previous steps - creating the filter and updating the widget. + +**Solution:** To avoid these redundant steps, create a filter that includes three launches: API, UI, and Integration. Subsequently, create a Component Health Check widget (table view) with this filter and add the attribute key 'version' for grouping. Now, you will see a summary for the latest version every day. Whenever a new version enters the system, the widget automatically updates to remove information about the previous version and adds information about the latest version. + + + +## Use case #3 + +**Use Case:** To track information about components such as features, browsers, platforms, etc. + +**Problem:** You are running different launches: API launch, UI launch, and Integration launch. These three launches include test cases that belong to different features. You need to track overall statistics for features, not for launches. + +**Solution:** Create a filter that includes the three launches: API launch, UI launch, and Integration launch. Then, create a Component Health Check widget (table view) with this filter and add the attribute key 'feature' for grouping. As a result, you will see a summary of all features across various launches. + + + + + +:::important +The Component Health Check widget (table view) is the first widget to use a materialized view in PostgreSQL. The creation of this view takes time. As a result, information about new launches in the filter is added dynamically. Therefore, users should manually update the widget by clicking on the update button. The time of the last update is displayed on the widget. +::: diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/TestCaseSearch.mdx b/versioned_docs/version-26.1/dashboards-and-widgets/TestCaseSearch.mdx new file mode 100644 index 0000000000..1d1aeb4b3a --- /dev/null +++ b/versioned_docs/version-26.1/dashboards-and-widgets/TestCaseSearch.mdx @@ -0,0 +1,123 @@ +--- +sidebar_position: 27 +sidebar_label: Test Case Search widget +description: Find specific test cases by name or attributes across all launches. Search, filter, and drill down into test details using qa metrics dashboard. +--- + +# Test case search + +Allows finding a test case by name or attribute throughout all launch executions within the same project. + +## Widget's parameters: + +- Widget name +- Description + +## Widget view + +### Refine section: + +- "Test name" text field. Condition dropdown is disabled. By default – cnt (contains) +- "Attribute" text field – key and value options +- "Display launches" toggle – default state: OFF +- "Edit" icon +- "Update" icon +- "Cross" icon + +### Table section: + +- Name – name of the test +- Status – status of the test +- Start Time – start time of the test +- Defect type + +:::note +The widget data is displayed in view mode. Navigate to the step level of the launch by clicking on the test name to make the changes under the test case. +::: + +***Default state*** + + + +***Widget data*** + + + +:::important +The search in the "Test name" field is performed for test items of type "Step". +::: + +When the "Test name" is provided, "attribute" field is disabled. + + + +When "Attribute" is added, "Test name" field is disabled. + +You can filter test cases by full match of key and value fields, or by attribute "value" only (when step item has empty "key"). Only one attribute can be specified. + +***Attribute with key and value*** + + + +***Attribute with value only*** + + + +:::tip +To ensure optimal search performance, avoid using special characters in search queries. Instead, use only Latin alphabetic and numeric characters.
+ +**Reason:** PostgreSQL does not index special characters, meaning queries containing them trigger a full-table scan. This can noticeably impact search performance, particularly for large datasets or when no matching results are found.
+ +**Wildcard Behavior:** +Certain special characters, such as ```_``` and ```%```, function as wildcard symbols when placed at the beginning or end of a query.
+ +**Example:** The query ```_atch``` will return results like patch, since ```_``` acts as a placeholder for any single character. +::: + +The search results display the first 10 items found, sorted by start time in descending order. + +Besides attribute and test name, you can also filter the data based on test status. + + + +If more than one page exists for the specified search criteria, a "Load more" button appears at the bottom of the widget. + + + +By clicking "Load more", additional 10 results (or less if available) appear. Previously loaded results remain visible and are supplemented with new data. If at least one more page is available, the "Load more" button continues to appear at the bottom of the widget. + +If more than 30 pages exist for the specified search criteria, the "Load more" button becomes disabled after loading the 30th page. The limit for the widget is 300 latest test cases. + + + +When the "Display launches" toggle is ON, the displayed results are grouped by launch execution and parent items (Launch/suite/test). + + + +By clicking on the "Update" icon the page is refreshed a new request with specified in the widget parameters is sent. Only the first page is displayed. + + + +By clicking on the test name, the user is redirected to the test's log level in a new tab (the same action occurs when clicking the icon next to the test name). + + + +If a test item has a long description, an arrow appears to expand it. + + + + + +When hovering over the Start Time field, the format changes while hovering; clicking changes it per application settings. + + + +Sorting is available by the Start Time field, with descending order set by default. Users can switch between ascending and descending order. + +By clicking the link to the bug tracking system, the ticket in the BTS opens. + + + + + + diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/TestCasesGrowthTrendChart.mdx b/versioned_docs/version-26.1/dashboards-and-widgets/TestCasesGrowthTrendChart.mdx new file mode 100644 index 0000000000..3dc3c23287 --- /dev/null +++ b/versioned_docs/version-26.1/dashboards-and-widgets/TestCasesGrowthTrendChart.mdx @@ -0,0 +1,44 @@ +--- +sidebar_position: 11 +sidebar_label: Test-cases growth trend chart +description: Monitor the addition of new test cases in each launch, identify growth patterns, and assess testing coverage to optimize your test strategy. +--- + +# Test-cases growth trend chart + +The widget can be used in two modes - Launch mode and Timeline mode: + +- The widget in the Launch mode shows the increment of test-cases from run to run, +- The widget in the Timeline mode shows the increment of test-cases distributed by dates (in launches with the largest number of test-cases per day). + +**Widget's parameters:** + +- Filter: At least one filter is required +- Items: 1-150. The default meaning is 50. +- Mode: Launch or Timeline. + +**Widget view** + +The widget view in Launch mode: + +- The X-axis shows launches numbers and launches names on hover. +- Y-axis shows the increment of test-cases. + +The tooltip on mouse hover over the chart area shows launch details: launch name and number, launch start time and launch statistics - total number of test cases and test cases growth. + + + +The widget view in Timeline mode: + +- The X-axis shows dates and weekdays. +- Y-axis shows the increment of test-cases in launches with the largest number of test-cases per day. + +The tooltip on mouse hover over the chart area shows launch details: date and launch statistics - total number of test cases and test cases growth. + +The widget has clickable sections when you click on a specific section in the widget, the system forwards you to the launch view for the appropriate selection. + + + +:::note +The widget doesn't contain "IN PROGRESS" launches. +::: diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/UniqueBugsTable.mdx b/versioned_docs/version-26.1/dashboards-and-widgets/UniqueBugsTable.mdx new file mode 100644 index 0000000000..1136204322 --- /dev/null +++ b/versioned_docs/version-26.1/dashboards-and-widgets/UniqueBugsTable.mdx @@ -0,0 +1,32 @@ +--- +sidebar_position: 14 +sidebar_label: Unique bugs table +description: Track unique bugs posted to bug tracking systems. View bug details, submission dates, and linked test items using QA dashboard tool. +--- + +# Unique bugs table + +The widget shows real identified bugs, posted to the Bug Tracking System from ReportPortal, and existing bugs, that were added to the items on ReportPortal. + +**Widget's parameters:** + +- Filter: At least one filter is required +- Items: 1-150. The default meaning is 10. + +**Widget view** + +The widget has a table view and bugs that are found are then sorted by the date they were posted or added. + +The widget has the following data displayed: + +- Bug ID - links to the issue in Bug Tracking System. +- Found in - links to the test item, to which the bug was posted/added. +- Submit date - the date the bug was submitted/added. Time is displayed in 'time ago' format (i.e. "10 minutes ago"). On mouse hover, the system should display accurate action time. +- Submitter - user, who submitted/added the bug. + + + +:::note +The bugs from launches "IN PROGRESS" are not shown on the widget. +In case a bug is found in multiple items, all of the items will be listed in the "Found in" column. +::: diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/WidgetCreation.mdx b/versioned_docs/version-26.1/dashboards-and-widgets/WidgetCreation.mdx new file mode 100644 index 0000000000..b136a102e2 --- /dev/null +++ b/versioned_docs/version-26.1/dashboards-and-widgets/WidgetCreation.mdx @@ -0,0 +1,68 @@ +--- +sidebar_position: 4 +sidebar_label: Widget Creation +description: Create widgets to visualize trends, failures, and KPIs. Use templates and filters to build a clear test automation metrics dashboard tailored to your needs. +--- + +# Widget Creation + +In our test automation dashboard widgets contain special graphical control elements that were designed to provide a simple and +easy-to-use way of displaying and analyzing your automation trends and data. + +:::note +Fullscreen widgets auto-refresh every 30 seconds. +::: + +The widgets can be added to dashboards on the "Dashboards" tab. Widgets will be visible within the project, they are created. + +## Create widget + +To create a new widget, perform the following steps: + +1. Navigate to the "All Dashboards" page and create a new dashboard or choose the existing one. + +2. Click the "Add New Widget" button. + +3. The Widget Wizard will be opened. To add a new widget, you need to pass all the required steps. + + • Step 1. Select the template of the widget (detailed description is below). + + • Step 2. Select a filter from the list below or create a new filter. Search functionality helps to find the filter quicker. Select other widget options: Criteria, Items, Launch or Timeline mode (if applicable for selected widget template) + + • Step 3. Enter a widget name and description. + A widget name should be unique for a user on the project. + +4. After you have completed all steps, click the "Save" button. The new widget will be added to the dashboard on the top. + +Widgets are automatically refreshed every minute. + + + +## Predefined widgets types + +There are 15 widget templates in ReportPortal for tracking different KPI: + +| KPI | Widget template | +|----------------------------------------------------------------------------------|------------------------------------------------------------------------| +| Track the reasons of failures | [Launch statistics chart](/dashboards-and-widgets/LaunchStatisticsChart) | +| Passing rate for filter summary, and structure of problems | [Overall statistics](/dashboards-and-widgets/OverallStatistics) | +| Track the longest launch in the filter | [Launches duration chart](/dashboards-and-widgets/LaunchesDurationChart) | +| Track the passing rate and structure of problems of the latest run in the system | [Launch execution and issue statistic](/dashboards-and-widgets/LaunchExecutionAndIssueStatistic) | +| Track the activity of your QA team | [Project activity panel](/dashboards-and-widgets/ProjectActivityPanel) | +| Track the growth of new test cases in your build | [Test-cases growth trend chart](/dashboards-and-widgets/TestCasesGrowthTrendChart) | +| Track the speed of test failure analysis | [Investigated percentage of launches](/dashboards-and-widgets/InvestigatedPercentageOfLaunches) | +| Follow up information about only important launches for your team | [Launches table](/dashboards-and-widgets/LaunchesTable) | +| Track new BTS issues in your run | [Unique bugs table](/dashboards-and-widgets/UniqueBugsTable) | +| Track the most unstable test cases in the build | [Most failed test-cases table](/dashboards-and-widgets/MostFailedTestCasesTableTop50) | +| See the trend of the number of failed test cases from build to build | [Failed cases trend chart](/dashboards-and-widgets/FailedCasesTrendChart) | +| See the trend of the number of failed and skipped test cases from build to build | [Non-passed test-cases trend chart](/dashboards-and-widgets/NonPassedTestCasesTrendChart) | +| Compare two launches together | [Different launches comparison chart](/dashboards-and-widgets/DifferentLaunchesComparisonChart) | +| Track passing rate for one launch | [Passing rate per launch](/dashboards-and-widgets/PassingRatePerLaunch) | +| Track passing rate for the build | [Passing rate summary](/dashboards-and-widgets/PassingRateSummary) | +| Find the most flakiest test in the build | [Flaky test cases table (TOP-50)](/dashboards-and-widgets/FlakyTestCasesTableTop50) | +| Compare statistics for different builds on one graph | [Cumulative trend chart](/dashboards-and-widgets/CumulativeTrendChart) | +| Track the most popular failure reasons in the build | [Most popular pattern table (TOP-20)](/dashboards-and-widgets/MostPopularPatternTableTop20) | +| Track the passing rate of different components of your application | [Component health check](/dashboards-and-widgets/ComponentHealthCheck) | +| Track the statistics of different components of your application | [Component health check (table)](/dashboards-and-widgets/TableComponentHealthCheck) | +| Track the top-20 tests with longest execution time | [Most time-consuming test cases widget (TOP-20)](/dashboards-and-widgets/MostTimeConsumingTestCasesWidgetTop20) | +| Find test case by name and/or attribute through out all launches executions | [Test case search](/dashboards-and-widgets/TestCaseSearch) | diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/WorkWithDashboards.mdx b/versioned_docs/version-26.1/dashboards-and-widgets/WorkWithDashboards.mdx new file mode 100644 index 0000000000..726edf1823 --- /dev/null +++ b/versioned_docs/version-26.1/dashboards-and-widgets/WorkWithDashboards.mdx @@ -0,0 +1,204 @@ +--- +sidebar_position: 3 +sidebar_label: Work with dashboards +description: Create, edit, clone, and manage dashboards in ReportPortal. Build focused views with widgets and videos to monitor releases on a live test results dashboard. +--- + +# Work with dashboards + +Dashboards on our continuous testing platform are special containers, where users can create widgets. + +To create and use dashboards, navigate to the "Dashboards" tab. + +You can create a dashboard that will be visible on the current project. + +:::note +Up to 3,000 dashboards per project (since v24.2).
+Names must be 3–55 characters and unique per user per project. +::: + +## Create dashboard + +To create a new dashboard, perform the following steps: + +1. Navigate to the "Dashboards" page and click "Add New +Dashboard" button in the top right corner of the page. + +2. The "Add New Dashboard" popup will be opened. + +3. Enter a name for a new dashboard. The +name should be between 3 to 55 characters long and unique for the user per the +project. You can add the description for your dashboard as well. + +4. Click "Add" button. The new dashboard will be created. + +Now you can add widgets to the dashboard. + + + +## Edit dashboard + +To edit a dashboard, perform the following steps: + +1. Navigate to "All Dashboards" page. + +2. Click the "Edit" icon in the top corner of the dashboard or +click the name of the dashboard and click 'Edit' button in the header of the dashboard. + +3. The "Edit Dashboard" popup will be opened. + +4. Make the necessary changes and click "Update" button. The dashboard will +be displayed with updates. + + + +## Delete dashboard + +To remove a dashboard from the project, perform the following steps: + +1. Click the "Delete" button in the top right corner of the dashboard. + +2. Click the "Delete" button on confirmation pop-up. + +The dashboard and related widgets will be deleted from the system. + + + +## Dashboard cloning + +Dashboards simplify tracking key metrics and project performance. However, manually recreating the same dashboard for multiple projects can be time-consuming and inefficient. + +With the dashboard cloning feature, you only need to create a reference dashboard once you have an instance deployed for your organization. You can then replicate this dashboard across projects without wasting effort on manually recreating the same sequence of widgets from scratch. + +ReportPortal offers two ways to clone dashboards: +- through the UI +- via API + +**Permissions:**
+Any user in a project, regardless of their role, can use the dashboard cloning feature.
+If a user has access to multiple projects, they can clone a dashboard to any of them.
+An admin can perform dashboard cloning without being assigned to a specific project. + +### Dashboard cloning via UI + +#### Within a single project + +To duplicate dashboard via the UI within the same project: + +1. Log in to ReportPortal. +2. Open Dashboards page. +3. Click ‘Copy’ icon next to the desired dashboard. +4. Select ‘Duplicate’ option from the dropdown menu. + + + +5. In the modal window, update the duplicated dashboard's name if necessary. + + + +6. Click ‘Duplicate’ button. + +As a result: + +1. The dashboard will be copied along with all its widgets, maintaining the same order as in the initial dashboard. +2. If you haven't specified a new name for the duplicated dashboard, the word ‘copy’ will be added to the name. + + + +3. The ‘Owner’ field will display the name of the user who duplicated the dashboard, rather than the name of the original creator. +4. New filters will appear on the filters page. + + + +#### From one project to another + +To copy dashboard configuration to another project: + +1. Log in to ReportPortal. +2. Open Dashboards page. +3. Click ‘Copy’ icon next to the desired dashboard. +4. Select ‘Copy dashboard configuration to clipboard’ option from the dropdown menu. + + + +5. Open Dashboards page on another project. +6. Click ‘Add New Dashboard’ button at the top of the page. + + + +7. Enter the name of a new dashboard. +8. Click ‘Show dashboard configuration’ link. + + + +9. Click ‘Paste configuration’ button. + + + +10. Click ‘Add’ button. + + + +As a result: + +1. The dashboard will be copied along with all its widgets, maintaining the same order as in the initial dashboard. + + + +2. If you haven't specified a new name for the dashboard, the word ‘copy’ will be added to the name. +3. The ‘Owner’ field will display the name of the user who performed the dashboard configuration copying, rather than the name of the original dashboard creator. +4. New filters will appear on the filters page. + +### Dashboard cloning via API + +To clone the dashboard configuration via API: + +1. Log in to ReportPortal. +2. Open the API section on the bottom menu. + + + +3. Click on ‘Dashboard’ controller link. + + + +4. Expand ```/v1/{projectName}/dashboard/{dashboardId}/config``` endpoint. +5. Click ‘Try it out’ button. + + + +6. Fill dashboard ID and project name fields. + + + + + +7. Click ‘Execute’ button. +8. Copy dashboard configuration. + + + +To add the copied dashboard configuration to another project via API: + +1. Expand ```/v1/{projectName}/dashboard/preconfigured``` endpoint. +2. Click ‘Try it out’ button. + + + +3. Fill project name field. +4. Specify new dashboard name in the Request body field. + + + +5. Paste copied dashboard configuration the Request body field instead of sample widgets. +6. Click ‘Execute’ button. + +:::important +Be careful with the JSON syntax. +::: + +Dashboard ID in the response corresponds to cloned dashboard. + + + + diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/_category_.json b/versioned_docs/version-26.1/dashboards-and-widgets/_category_.json new file mode 100644 index 0000000000..7d80f4985e --- /dev/null +++ b/versioned_docs/version-26.1/dashboards-and-widgets/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Dashboards and widgets", + "position": "15", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning1.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning1.png new file mode 100644 index 0000000000..db280535b5 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning1.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning10.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning10.png new file mode 100644 index 0000000000..5bdcf586e9 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning10.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning11.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning11.png new file mode 100644 index 0000000000..105d81176e Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning11.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning12.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning12.png new file mode 100644 index 0000000000..db06cd59a9 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning12.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning13.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning13.png new file mode 100644 index 0000000000..5ff50a0321 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning13.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning14.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning14.png new file mode 100644 index 0000000000..221a18067e Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning14.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning15.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning15.png new file mode 100644 index 0000000000..7e63c2b5b0 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning15.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning16.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning16.png new file mode 100644 index 0000000000..64480d59a4 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning16.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning17.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning17.png new file mode 100644 index 0000000000..caa9d3b00b Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning17.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning18.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning18.png new file mode 100644 index 0000000000..8e8a839598 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning18.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning19.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning19.png new file mode 100644 index 0000000000..cf9d580353 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning19.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning2.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning2.png new file mode 100644 index 0000000000..ce46f4d46c Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning2.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning20.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning20.png new file mode 100644 index 0000000000..d877bdc890 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning20.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning3.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning3.png new file mode 100644 index 0000000000..9f453a96d2 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning3.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning4.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning4.png new file mode 100644 index 0000000000..cb9246c33f Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning4.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning5.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning5.png new file mode 100644 index 0000000000..f836df6714 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning5.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning6.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning6.png new file mode 100644 index 0000000000..bb789e951a Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning6.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning7.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning7.png new file mode 100644 index 0000000000..995c92cc14 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning7.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning8.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning8.png new file mode 100644 index 0000000000..b07dadd46d Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning8.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning9.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning9.png new file mode 100644 index 0000000000..1231123e02 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning9.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboards/BuildReport.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboards/BuildReport.png new file mode 100644 index 0000000000..073627bc58 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboards/BuildReport.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboards/LaunchReport.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboards/LaunchReport.png new file mode 100644 index 0000000000..f502a7824b Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/dashboards/LaunchReport.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckArrow.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckArrow.png new file mode 100644 index 0000000000..2c890e177c Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckArrow.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckCreation.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckCreation.png new file mode 100644 index 0000000000..684136be1b Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckCreation.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckFirstLevel.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckFirstLevel.png new file mode 100644 index 0000000000..58cbf06295 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckFirstLevel.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckPassedFailed.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckPassedFailed.png new file mode 100644 index 0000000000..a214740e89 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckPassedFailed.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme1.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme1.png new file mode 100644 index 0000000000..af792433e3 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme1.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme2.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme2.png new file mode 100644 index 0000000000..fab7e50602 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme2.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme3.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme3.png new file mode 100644 index 0000000000..66a488bd42 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme3.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme4.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme4.png new file mode 100644 index 0000000000..701f5957e6 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme4.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme5.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme5.png new file mode 100644 index 0000000000..e1b4390a4e Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme5.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme6.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme6.png new file mode 100644 index 0000000000..b40fb4bfca Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme6.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme7.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme7.png new file mode 100644 index 0000000000..933945559a Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme7.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme8.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme8.png new file mode 100644 index 0000000000..1b122dbebb Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme8.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme9.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme9.png new file mode 100644 index 0000000000..289ab4976a Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme9.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckSecondLevel.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckSecondLevel.png new file mode 100644 index 0000000000..8edd182fc3 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckSecondLevel.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTableBuild.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTableBuild.png new file mode 100644 index 0000000000..a0a0508974 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTableBuild.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTableCreate.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTableCreate.png new file mode 100644 index 0000000000..a4e57429c1 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTableCreate.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTableFeature.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTableFeature.png new file mode 100644 index 0000000000..b395ec9cbe Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTableFeature.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTableView.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTableView.png new file mode 100644 index 0000000000..5c9bb6303f Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTableView.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTests1.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTests1.png new file mode 100644 index 0000000000..e2fce1fc26 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTests1.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTests2.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTests2.png new file mode 100644 index 0000000000..b7683e0959 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTests2.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/CumulativeCreation.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/CumulativeCreation.png new file mode 100644 index 0000000000..6737843aeb Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/CumulativeCreation.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/CumulativeFirstLevelNumberOfTestCases.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/CumulativeFirstLevelNumberOfTestCases.png new file mode 100644 index 0000000000..39fe7c05b2 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/CumulativeFirstLevelNumberOfTestCases.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/CumulativeScheme1.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/CumulativeScheme1.png new file mode 100644 index 0000000000..afee3bb7cd Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/CumulativeScheme1.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/CumulativeScheme2.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/CumulativeScheme2.png new file mode 100644 index 0000000000..29c8b73feb Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/CumulativeScheme2.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/CumulativeScheme3.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/CumulativeScheme3.png new file mode 100644 index 0000000000..b20e647bdb Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/CumulativeScheme3.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/CumulativeScheme4.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/CumulativeScheme4.png new file mode 100644 index 0000000000..36b3bdf238 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/CumulativeScheme4.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/CumulativeScheme5.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/CumulativeScheme5.png new file mode 100644 index 0000000000..c76a751bd1 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/CumulativeScheme5.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/CumulativeTrendChart.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/CumulativeTrendChart.png new file mode 100644 index 0000000000..dd6fc9635f Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/CumulativeTrendChart.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/DifferentLaunchesComparisonChart.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/DifferentLaunchesComparisonChart.png new file mode 100644 index 0000000000..678e285590 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/DifferentLaunchesComparisonChart.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/FailedCasesTrendChart.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/FailedCasesTrendChart.png new file mode 100644 index 0000000000..5ad00460f6 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/FailedCasesTrendChart.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/FlakyTestCasesTableWidget.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/FlakyTestCasesTableWidget.png new file mode 100644 index 0000000000..cb0bc77b32 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/FlakyTestCasesTableWidget.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/InvestigatedPercentageOfLaunches.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/InvestigatedPercentageOfLaunches.png new file mode 100644 index 0000000000..e27bfab99f Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/InvestigatedPercentageOfLaunches.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchExecutionAndIssueStatistic.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchExecutionAndIssueStatistic.png new file mode 100644 index 0000000000..b3cfe13333 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchExecutionAndIssueStatistic.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchStatisticsChart1.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchStatisticsChart1.png new file mode 100644 index 0000000000..7f560dd3a8 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchStatisticsChart1.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchStatisticsChart2.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchStatisticsChart2.png new file mode 100644 index 0000000000..2ea11c1eaf Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchStatisticsChart2.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchStatisticsChart3.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchStatisticsChart3.png new file mode 100644 index 0000000000..dc3d926d34 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchStatisticsChart3.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchStatisticsChart4.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchStatisticsChart4.png new file mode 100644 index 0000000000..5f449b61c0 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchStatisticsChart4.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchStatisticsChart5.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchStatisticsChart5.png new file mode 100644 index 0000000000..c8b1eddf4b Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchStatisticsChart5.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchStatisticsLineChart.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchStatisticsLineChart.png new file mode 100644 index 0000000000..9a14aa2333 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchStatisticsLineChart.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchStatisticsLineChartTimeline.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchStatisticsLineChartTimeline.png new file mode 100644 index 0000000000..7141c90a8d Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchStatisticsLineChartTimeline.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchStatisticsTrendChart.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchStatisticsTrendChart.png new file mode 100644 index 0000000000..5f964b38df Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchStatisticsTrendChart.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchStatisticsTrendChartTimeline.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchStatisticsTrendChartTimeline.png new file mode 100644 index 0000000000..85d2cde659 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchStatisticsTrendChartTimeline.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchesDurationChart.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchesDurationChart.png new file mode 100644 index 0000000000..4f48587618 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchesDurationChart.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchesTable.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchesTable.png new file mode 100644 index 0000000000..378a4fa8b7 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/LaunchesTable.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/MostFailedTestCases.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/MostFailedTestCases.png new file mode 100644 index 0000000000..23834b3a1b Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/MostFailedTestCases.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/MostPopularPatternTable1.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/MostPopularPatternTable1.png new file mode 100644 index 0000000000..3b16f31c20 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/MostPopularPatternTable1.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/MostPopularPatternTable2.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/MostPopularPatternTable2.png new file mode 100644 index 0000000000..d947ae38c6 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/MostPopularPatternTable2.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/MostTimeConsumingTestCasesWidget.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/MostTimeConsumingTestCasesWidget.png new file mode 100644 index 0000000000..785e30d6ac Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/MostTimeConsumingTestCasesWidget.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/NonPassedTestCasesTrendChart.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/NonPassedTestCasesTrendChart.png new file mode 100644 index 0000000000..0ecd5d5455 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/NonPassedTestCasesTrendChart.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/OverallStatistics1.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/OverallStatistics1.png new file mode 100644 index 0000000000..9bde45a77a Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/OverallStatistics1.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/OverallStatistics2.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/OverallStatistics2.png new file mode 100644 index 0000000000..0492099f2e Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/OverallStatistics2.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch1.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch1.png new file mode 100644 index 0000000000..cf33afb00d Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch1.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch2.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch2.png new file mode 100644 index 0000000000..badf9949ba Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch2.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch3.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch3.png new file mode 100644 index 0000000000..fdabace16a Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch3.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch4.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch4.png new file mode 100644 index 0000000000..22637970a3 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch4.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch5.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch5.png new file mode 100644 index 0000000000..a24495807f Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch5.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch6.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch6.png new file mode 100644 index 0000000000..d0422d1970 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch6.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch7.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch7.png new file mode 100644 index 0000000000..cc32648daa Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch7.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRateSummary1.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRateSummary1.png new file mode 100644 index 0000000000..06ee3b82a4 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRateSummary1.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRateSummary2.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRateSummary2.png new file mode 100644 index 0000000000..f06d870b2e Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRateSummary2.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRateSummary3.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRateSummary3.png new file mode 100644 index 0000000000..f1a03c936f Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRateSummary3.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRateSummary4.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRateSummary4.png new file mode 100644 index 0000000000..1364737efd Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRateSummary4.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRateSummary5.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRateSummary5.png new file mode 100644 index 0000000000..8adb0967fd Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRateSummary5.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRateSummary6.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRateSummary6.png new file mode 100644 index 0000000000..7173e605bf Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRateSummary6.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRateSummary7.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRateSummary7.png new file mode 100644 index 0000000000..649f906722 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/PassingRateSummary7.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ProductStatusWidget.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ProductStatusWidget.png new file mode 100644 index 0000000000..f275d6c087 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ProductStatusWidget.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ProjectActivityPanel.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ProjectActivityPanel.png new file mode 100644 index 0000000000..bacb5beb9c Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/ProjectActivityPanel.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch1.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch1.png new file mode 100644 index 0000000000..5cb86e6371 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch1.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch10.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch10.png new file mode 100644 index 0000000000..97b3653301 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch10.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch11.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch11.png new file mode 100644 index 0000000000..63fc85a05e Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch11.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch12.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch12.png new file mode 100644 index 0000000000..ba0e78a413 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch12.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch13.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch13.png new file mode 100644 index 0000000000..2b46e41243 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch13.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch14.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch14.png new file mode 100644 index 0000000000..b83197445c Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch14.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch15.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch15.png new file mode 100644 index 0000000000..6f95e921e0 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch15.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch16.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch16.png new file mode 100644 index 0000000000..b64c5aff2a Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch16.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch2.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch2.png new file mode 100644 index 0000000000..bcb2b6f280 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch2.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch3.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch3.png new file mode 100644 index 0000000000..885455e308 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch3.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch4.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch4.png new file mode 100644 index 0000000000..181c69de9c Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch4.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch5.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch5.png new file mode 100644 index 0000000000..d085d2565e Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch5.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch6.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch6.png new file mode 100644 index 0000000000..8e5ed94f5b Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch6.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch7.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch7.png new file mode 100644 index 0000000000..baf5472956 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch7.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch8.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch8.png new file mode 100644 index 0000000000..d9bc52ded6 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch8.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch9.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch9.png new file mode 100644 index 0000000000..ae239c9e9f Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCaseSearch9.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCasesGrowthTrendChart.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCasesGrowthTrendChart.png new file mode 100644 index 0000000000..6d7819431f Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCasesGrowthTrendChart.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCasesGrowthTrendChartTimeline.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCasesGrowthTrendChartTimeline.png new file mode 100644 index 0000000000..30697e0cc4 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TestCasesGrowthTrendChartTimeline.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TheMostTimeConsumingTestCasesWidgetTable.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TheMostTimeConsumingTestCasesWidgetTable.png new file mode 100644 index 0000000000..c4088293d7 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/TheMostTimeConsumingTestCasesWidgetTable.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/UniqueBugsTable.png b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/UniqueBugsTable.png new file mode 100644 index 0000000000..2b5ac105a9 Binary files /dev/null and b/versioned_docs/version-26.1/dashboards-and-widgets/img/widget-types/UniqueBugsTable.png differ diff --git a/versioned_docs/version-26.1/dashboards-and-widgets/index.md b/versioned_docs/version-26.1/dashboards-and-widgets/index.md new file mode 100644 index 0000000000..172119b5d1 --- /dev/null +++ b/versioned_docs/version-26.1/dashboards-and-widgets/index.md @@ -0,0 +1,18 @@ +--- +title: Dashboards and widgets +description: Explore guides for dashboard & widget management, aiding effective, real-time test failure analytics. +--- + +# Dashboards and widgets + +The **Dashboards and widgets** section is designed to help users create a powerful, customized test automation results dashboard that visualizes essential test automation metrics in real-time. Dashboards in ReportPortal serve as central hubs for tracking and analyzing your project’s quality, providing an accessible way to understand complex test data. Here, you’ll find guidance on creating dashboards to consolidate your test automation report data, allowing you to present critical insights effectively to your team or stakeholders and promote collaborative dashboards in test reporting. + +Using widgets, you can customize your dashboard to display specific metrics that matter most to your project. Widgets enable you to view real-time data on test results, defect trends, launch statistics, and much more. From tracking project health to identifying areas for improvement, widgets offer granular insights that are essential for optimizing test automation processes. + +Each widget type is designed to display different aspects of your testing data, from passing rates and error patterns to execution times. You’ll learn how to configure each widget, add them to your dashboard, and arrange them for maximum clarity and usability. These visualizations not only make it easier to monitor ongoing test results but also streamline the process of creating and sharing test automation reports with your team. + +By leveraging dashboards and widgets effectively, you can enhance your testing workflows, keep your team informed, and ensure data-driven decisions are at the heart of your QA process. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.1/developers-guides/APIDifferencesBetweenV4AndV5.md b/versioned_docs/version-26.1/developers-guides/APIDifferencesBetweenV4AndV5.md new file mode 100644 index 0000000000..5defb09949 --- /dev/null +++ b/versioned_docs/version-26.1/developers-guides/APIDifferencesBetweenV4AndV5.md @@ -0,0 +1,269 @@ +--- +sidebar_label: API differences between v4 and v5 +description: Compare API changes between ReportPortal v4 and v5 versions for seamless migration and integration with test automation reporting tool. +--- + +# API differences between v4 and v5 + +## New endpoints + +### Activity controller + +GET `/v1/{projectName}/activity/{activityId}` - Get activity by id. + +--- + +### Dashboard controller + +PUT `/v1/{projectName}/dashboard/{dashboardId}/{widgetId}}` - Add specified widget to dashboard. + +DELETE `/v1/{projectName}/dashboard/{dashboardId}/{widgetId}` - Delete specified widget from dashboard. + +--- + +### Launch controller + +:::note +Tags from v4 was replaced by attributes in v5. +Attribute contains key and value. It may have null key, but non-null value. +Attribute with null value is analog for v4 tag. +::: +GET `/v1/{projectName}/launch/attribute/keys` - Retrieve all unique attribute keys of project launches. + +GET `/v1/{projectName}/launch/attribute/values` - Retrieve all unique attribute values of project launches. + +GET `/v1/{projectName}/launch/status` - Get launches statuses. + +GET `/v1/{projectName}/launch/uuid/{launchUuid}` - Get launch by uuid. + +:::note +Response from start(create) launch request contains object with key `id` and string value (example: `id="33fa80b9-8ec9-4d52-8cb7-68b7bb4070f1"`). +It is not physical `id` in database. It is UUID (virtual id of launch, part of asynchronous reporting implementation). +Using request above you can retrieve physical `id` from database of just reported launch and use it in next queries for items, filters etc. +::: +PUT `/v1/{projectName}/launch/info` - Bulk update launches attributes and descriptions. + +--- + +### Log controller + +New functionality in v5 - [nested steps](https://github.com/reportportal/client-java/wiki/Nested-steps). + +GET `/v1/{projectName}/log/nested/{parentId}` - Get nested steps with logs for the parent test item. + +GET `/v1/{projectName}/log/uuid/{logUuid}` - Get log by uuid. + +POST `/v1/{projectName}/log/search/{itemId}` - Search test items with similar error logs. + +--- + +### Plugin controller + +GET `/v1/plugin` - Get all available plugins. + +POST `/v1/plugin` - Upload new plugin. + +PUT `/v1/plugin/{pluginId}` - update specified plugin. + +DELETE `/v1/plugin/{pluginId}` - delete specified plugin. + +--- + +### Project controller + +GET `/v1/project/analyzer/status` - Get indexing logs status for project. + +GET `/v1/project/export` - Export information about all projects. + +GET `/v1/project/list` - Retrieve info about all projects by filer. + +GET `/v1/project/names` - Get all project names. + +GET `/v1/project/names/search` - Search project names. + +GET `/v1/project/{projectName}/widget/{widgetCode}` - Get project widget by code. + +PUT `/v1/project/{projectName}/notification` - Update project notifications configuration. + +PUT `/v1/project/{projectName}/preference/{login}/{filterId}` - Add specified filter to user preference. + +DELETE `/v1/project/{projectName}/preference/{login}/{filerId}` - Remove specified filter from user preference. + +--- + +### Project setting controller + +POST `/v1/{projectName}/settings/pattern` - Create pattern template for item's log messages pattern analysis. + +PUT `/v1/{projectName}/settings/pattern/{id}` - Update specified pattern template for item's log messages pattern analysis. + +DELETE `/v1/{projectName}/settings/pattern/{id}` - Delete specified pattern template for item's log messages pattern analysis. + +--- + +### Test item controller + +:::note +Tags from v4 was replaced by attributes in v5.
+Attribute contains key and value. It may have null key, but non-null value.
+Attribute with null value is analog for v4 tag. +::: + +GET `/v1/{projectName}/item/attribute/keys` - Retrieve all unique attributes keys of specified launch. + +GET `/v1/{projectName}/item/attribute/keys/all` - Retrieve all unique attributes keys of specified launch. + +GET `/v1/{projectName}/item/attribute/values` - Retrieve all unique attributes values of specified launch. + +GET `/v1/{projectName}/item/ticket/ids` - Get tickets that contains a term as a part inside for specified launch. + +GET `/v1/{projectName}/item/uuid/{itemId}` - Get test item by uuid. + +:::note +Response from start(create) test item request contains object with key `id` and string value (example: `id="1f8233b0-6a2d-4a82-989b-a33463287130"`). +It is not physical `id` in database. It is UUID (virtual id of test item, part of asynchronous reporting implementation). +Using request above you can retrieve physical `id` from database of just reported test item and use it in next queries for items, logs etc. +::: +PUT `/v1/{projectName}/item/info` - Bulk update items attributes and descriptions. + +PUT `/v1/{projectName}/item/issue/link` - Link external issue for specified test items. + +PUT `/v1/{projectName}/item/issue/unlink` - Unlink external issue for specified test items. + +--- + +### User controller + +GET `/v1/user/export` - Export information about all users. + +GET `/v1/user/registration` - Get user bid info. + +GET `/v1/user/registration/info` - Validate user login and/or email. + +GET `/v1/user/search` - Search users by term. + +GET `/v1/user/{userName}/projects` - Retrieve all user projects. + +DELETE `/v1/user` - Delete specified users by ids. + +--- + +### Widget controller + +New group of widgets that may have few levels + +GET `/v1/{projectName}/widget/multilevel/{widgetId}` - Get multilevel widget by id. + +--- + +## New controllers + +#### Bug tracking system controller - replacement of external system controller. + +GET `/v1/bts/{integrationId}/fields-set` - Get list of fields required for posting ticket. + +GET `/v1/bts/{integrationId}/issue_types` - Get list of allowable issue types for bug tracking system. + +GET `/v1/bts/{projectName}/ticket/{ticketId}` - Get ticket from the bts integration. + +GET `/v1/bts/{projectName}/{integrationId}/fields-set` - Get list of fields required for posting ticket (project integration). + +GET `/v1/bts/{projectName}/{integrationId}/issue_types` - Get list of allowable issue types for bug tracking system (project integration). + +POST - `/v1/bts/{projectName}/{integrationId}/ticket` - Post ticket to the bts integration. + +--- + +#### Integration controller + +GET `/v1/integration/global/all` - Get available global integrations. + +GET `/v1/integration/global/all/{pluginName}` - Get available global integrations for plugin. + +GET `/v1/integration/project/{projectName}/all` - Get available project integrations. + +GET `/v1/integration/project/{projectName}/all/{pluginName}` - Get available project integrations for plugin. + +GET `/v1/integration/{integrationId}` - Get specified global integration by id. + +GET `/v1/integration/{integrationId}/connection/test` - Test connection to the global integration. + +GET `/v1/integration/{projectName}/{integrationId}/connection/test` - Test connection to the integration through the project config. + +GET `/v1/integration/{projectName}/{integrationId}` - Get specified project integration by id. + +PUT `/v1/integration/{projectName}/{integrationId}` - Update specified project integration by id. + +PUT `/v1/integration/{integrationId}` - Update specified global integration by id. + +PUT `/v1/integration/{projectName}/{integrationId}/{command}` - Execute command to the integration instance. + +POST `/v1/integration/{pluginName}` - Create global integration. + +POST `/v1/integration/{projectName}/{pluginName}` - Create project integration instance. + +DELETE `/v1/integration/all/{type}` - Delete all global integrations by type. + +DELETE `/v1/integration/{projectName}/all/{type}` - Delete all project integrations by type. + +DELETE `/v1/integration/{integrationId}` - Delete specified global integration by id. + +DELETE `/v1/integration/{projectName}/{integrationId}` - Delete specified project integration by id. + +--- + +#### Launch asynchronous controller + +POST `/v2/{projectName}/launch` - Start launch for specified project. + +POST `/v2/{projectName}/launch/merge` - Merge set of specified launches in common one. + +PUT `/v2/{projectName}/launch/{launchId}/finish` - Finish launch for specified project. + +--- + +#### Test item asynchronous controller + +POST `/v2/{projectName}/item` - Start root test item. + +POST `/v2/{projectName}/item/{parentItem}` - Start child test item. + +PUT `/v2/{projectName}/item/{testItemId}` - Finish test item. + +--- + +#### Log asynchronous controller + +POST `/v2/{projectName}/log` - Create log. + +--- + +## Differences in reporting + +### Launch rerun +[Rerun developers guide](/developers-guides/RerunDevelopersGuide) + +### Nested steps +[Nested steps wiki](https://github.com/reportportal/client-java/wiki/Nested-steps) + +### Launch logs + +Create log request contains fields `launchUuid` and `itemUuid`. At least one of them should not be null. + +```json +{ + "itemUuid": "7f32fb6a-fcc2-4ecb-a4f7-780c559a37ca", + "launchUuid": "6fd4638d-90e2-4f52-a9bd-bf433ebfb0f3" +} +``` + +If they both are present - log will be saved as test item log. +If only `itemUuid` is present - log will be saved as test item log. +If only `launchUuid` is present - log will be saved as launch log. + +Java client has static methods for launch log reporting: + +- [emitLaunchLog(Function<String, SaveLogRQ> logSupplier)](https://github.com/reportportal/client-java/blob/20b1dda7681301acd86d2d9c9dbcbd7991890cdc/src/main/java/com/epam/reportportal/service/ReportPortal.java#L160) +- [emitLaunchLog(final String message, final String level, final Date time)](https://github.com/reportportal/client-java/blob/20b1dda7681301acd86d2d9c9dbcbd7991890cdc/src/main/java/com/epam/reportportal/service/ReportPortal.java#L192) +- [emitLaunchLog(final String message, final String level, final Date time, final File file)](https://github.com/reportportal/client-java/blob/20b1dda7681301acd86d2d9c9dbcbd7991890cdc/src/main/java/com/epam/reportportal/service/ReportPortal.java#L233) +- [emitLaunchLog(final ReportPortalMessage message, final String level, final Date time)](https://github.com/reportportal/client-java/blob/20b1dda7681301acd86d2d9c9dbcbd7991890cdc/src/main/java/com/epam/reportportal/service/ReportPortal.java#L288) diff --git a/versioned_docs/version-26.1/developers-guides/AsynchronousReporting.mdx b/versioned_docs/version-26.1/developers-guides/AsynchronousReporting.mdx new file mode 100644 index 0000000000..b74dc9e5eb --- /dev/null +++ b/versioned_docs/version-26.1/developers-guides/AsynchronousReporting.mdx @@ -0,0 +1,153 @@ +--- +sidebar_label: Asynchronous reporting +description: Implement asynchronous reporting using AMQP and RabbitMQ for high-performance test automation reporting tools with load balancing. +--- + +# Asynchronous reporting + +### Overview + +Asynchronous reporting is set up using the [AMQP 0-9-1](https://www.rabbitmq.com/tutorials/amqp-concepts.html) protocol with +[RabbitMq](https://www.rabbitmq.com) as the message broker. +The main idea is to respond to the client immediately after the server receives a request. This way, the client isn't blocked and doesn't have to wait for the server to process the request. +Additionally, it acts as a requests load balancer, storing it in queues until the backend is free to process them. + +### Scheme of interactions between RabbitMq and API + +***Difference between ID and UUID*** + +`ID` is a numerical identifier for an entity, automatically generated by the database at the moment of saving. +`UUID` is a string virtual identifier for an entity. `UUID` can be generated on the client side and provided with a request. If it is not provided, +it is generated automatically when the `API` accepts the request. +Each entity has both `ID` and `UUID`. `ID` is used to perform the CRUD operations on an entity that is ***already saved in db***. +`UUID` is used to build the child-parent relationships between entities on the client side during reporting. +In case of synchronous reporting, any response from `API` is returned ***after*** the request is handled and the entity is saved in the database. +In case of asynchronous reporting, any response from `API` is returned ***before*** the request is handled and the entity is saved in the database and ***after*** the request is published to the queue. +The responses in both modes look the same: +```json +{ + "id": "cd64d5eb-fea1-4e7e-8a5a-69998ac5620f" +} +``` +The `id` property in the response is actually an `UUID`. This is for backward compatibility. +Therefore, when you have this `UUID` and want to update or delete the entity, you need to first retrieve the physical `ID`. +It can be done via `API`: +* [Get specified launch by UUID](https://developers.reportportal.io/api-docs/service-api/get-launch-by-uuid-old-timestamp) + +***Asynchronous reporting scheme*** + + +* **Step 1** +`API` receives HTTP request from `client` to the reporting controller. The `Controller` verifies permissions and call the `producer` logic. +* **Step 2** +`Producer` validates business rules if necessary, generates UUID (virtual id) if it is not provided in request, +builds a message for `RabbitMq` and sends it to the exchange with x-consistent-hash type. +After message is sent, the `controller` returns HTTP response to the `client` with UUID. **At the moment, the physical entity in database may not be created yet!** +* **Step 3** +`Consumer` starts processing the message as soon as it is received from `RabbitMq`. +After a successful processing, the entity will be stored in a database and obtain a physical id. +In case of an exception, it is logged and the entity is not saved. + + + +### Enable asynchronous reporting in agents + +Async reporting is supported only by agents since version 5.0.0. +To enable it you should set `rp.reporting.async=true` in `reportportal.properties`. +By default (if property `rp.reporting.async` is not specified) agents work in a synchronous mode. + +```properties +rp.endpoint=https://example.com +rp.api.key=xxx +rp.launch=launch-name +rp.project=project-name +rp.reporting.async=true +``` + +(*) Listed above is an example for Java-based client. For another platforms please see corresponding documentation. + +### Asynchronous API + +Async controllers have `/api/v2` prefix. +Requests and responses have no differences with sync ones but there are some specific distinctions in the behavior that is described in +[reporting guide](/developers-guides/ReportingDevelopersGuide). + +* [Start launch](/developers-guides/ReportingDevelopersGuide#start-launch) +* [Start root(suite) item](/developers-guides/ReportingDevelopersGuide#start-rootsuite-item) +* [Start child(container) item](/developers-guides/ReportingDevelopersGuide#start-childcontainer-item) +* [Start child(step) item](/developers-guides/ReportingDevelopersGuide#start-childstep-item) +* [Finish child item](/developers-guides/ReportingDevelopersGuide#finish-child-item) +* [Finish parent(container) item](/developers-guides/ReportingDevelopersGuide#finish-parentcontainer-item) +* [Save single log without attachment](/developers-guides/ReportingDevelopersGuide#save-single-log-without-attachment) +* [Batch save logs](/developers-guides/ReportingDevelopersGuide#batch-save-logs) +* [Save launch log](/developers-guides/ReportingDevelopersGuide#save-launch-log) +* [Finish root(suite) item](/developers-guides/ReportingDevelopersGuide#finish-rootsuite-item) +* [Finish launch](/developers-guides/ReportingDevelopersGuide#finish-launch) + +### Detailed scheme of interactions between RabbitMq and API + +#### API properties + +`API` has the following properties for connection to RabbitMq service: + +| Name | Environment variable name | Default value | +|----------------------|---------------------------|----------------------------------------| +| rp.amqp.host | RP_AMQP_HOST | rabbitmq | +| rp.amqp.port | RP_AMQP_PORT | 5672 | +| rp.amqp.user | RP_AMQP_USER | rabbitmq | +| rp.amqp.pass | RP_AMQP_PASS | rabbitmq | +| rp.amqp.addresses | RP_AMQP_ADDRESSES | amqp://rabbitmq:rabbitmq@rabbitmq:5672 | +| reporting.queues.count | REPORTING_QUEUES_COUNT | 10 | + + +`rp.amqp.host` - Hostname of RabbitMq service. +`rp.amqp.port` - Port of RabbitMq service. +`rp.amqp.user` - Username to connect to RabbitMq service. +`rp.amqp.pass` - User password to connect to RabbitMq service. +`rp.amqp.addresses` - Full address to connect to RabbitMq service. +`reporting.queues.count` - Number of queues to be processed by this service-api. + +#### Exchanges and queues for reporting + +The `API` creates two exchanges: `e.reporting` and `e.reporting.retry`. The `e.reporting` exchange is linked to queues that handle messages from requests, while the `e.reporting.retry` exchange is linked to retry queue and manages rejected from the main reporting queues. +The number of queues in these exchanges depends on the `REPORTING_QUEUES_COUNT` env variable. The `e.reporting` exchange has `N` queues named `q.reporting.id.0` to `q.reporting.id.N`. The `e.reporting.retry` exchange has 1 queue named `q.retry.reporting.ttl`. +If a message from `e.reporting.retry` is consumed and throws an exception more than 20 times, it will be moved to a separate queue named `q.parkingLot.reporting`, where it will be stored for 7 days for manual error analysis. +The retry message will be stored in `q.retry.reporting.ttl` with progressive TTL. It means that ttl will be increase each time. The whole ttl of the retry message is about 2 hours. + + + +#### Scheme + +All requests (items, logs) related to the same launch will be stored in the same RabbitMQ queue. +This is achieved by using an exchange that maps messages to queues using the `Consistent Hashing` algorithm. + +Messages in the queue don't have a strict order but they are stored mostly in the same order as they arrive from `client`. +This ensures a minimal amount of exceptions (causing the sending of such messages to the retry queue) caused by cases when a child is handled before its own parent. + +Consuming scheme: + + + +`(!)` All not managed exceptions will be moved to the `q.parkingLot.reporting` for manual analysis. +Possible exceptions that may be thrown and lead to moving the message to the retry queue: +* On start launch/test item: + * Entity not found. Parent entity not found. +* On finish launch/test item: + * Entity not found. Entity that has to be finished not found in database or parent entity not found (for test items). +* On log creation: + * Entity not found. Trying to create log for not existing launch/test item + +#### Finishing launch + +If the order is not broken, launch finish request will be handled when there are no more child item requests in the queue. + + + +`(!)` It is a main difference in reporting mechanism between ReportPortal version 4 and 5. +If the launch finish request is not the last in the queue, the launch will be finished anyway. +However, all subsequent requests related to that launch will be handled as they reach the consumer, and the launch statistics will be updated accordingly. +This means it is possible to report items under an already finished launch. +Events associated with the launch finish will be processed as soon as the launch finish is handled. +Items processed after the launch finish will not be included in post-launch handling processes such as 'Auto Analysis' and 'Quality Gates.' + + diff --git a/versioned_docs/version-26.1/developers-guides/AttachmentsGuide.mdx b/versioned_docs/version-26.1/developers-guides/AttachmentsGuide.mdx new file mode 100644 index 0000000000..278becc57b --- /dev/null +++ b/versioned_docs/version-26.1/developers-guides/AttachmentsGuide.mdx @@ -0,0 +1,113 @@ +--- +sidebar_label: Attachments Guide +description: Add screenshots and file attachments to test logs for comprehensive test failure analysis and debugging in ReportPortal. +--- + +# Attachments (Screenshots) Guide + +The Attachments feature allows you to add any file or screenshot to the test case logs. It can be useful for further test failure analysis. + +An example of image attachment: + + + +An example of file attachment: + + + + + +## How to log attachments (Screenshots) on Java agents? + +Java agents have numerous methods to log attachments, the easiest one is calling `ReportPortal#emitLog` static method: + +```java +import com.epam.reportportal.listeners.LogLevel; +import com.epam.reportportal.service.ReportPortal; + +import java.util.Date; +import java.io.File; + +class Test { + public static void log(String message, File file) { + ReportPortal.emitLog(message, LogLevel.INFO.name(), new Date(), file); + } +} +``` + +If you don't want to put ReportPortal dependencies in your code, there is a way to pass attachments through your logger. + +Check out our loggers' documentation: + +* [Log4j](https://github.com/reportportal/logger-java-log4j#attaching-files-screenshots-videos-archives-reports-etc) +* [Logback](https://github.com/reportportal/logger-java-logback#attaching-files-screenshots-videos-archives-reports-etc) + +## How to log attachments (Screenshots) on Python agents? + +To log attachments in Python you first need to configure a logger, depending on your current test framework. These are the instructions: + +* [Pytest](https://github.com/reportportal/agent-python-pytest#examples) +* [Robot Framework](https://github.com/reportportal/agent-Python-RobotFramework#logging) +* [Behave](https://github.com/reportportal/agent-python-behave#logging) + +Then you can use common method to attach any files to logs which is described [here](https://github.com/reportportal/client-Python#send-attachment-screenshots). + +## How to log attachments (Screenshots) on JavaScript agents? + +Attachment reports are supported by our [client-javascript](https://github.com/reportportal/client-javascript). The attachment file can be added as a part of a log request, see the [link](https://github.com/reportportal/client-javascript#sendlog) for details. + +The implementation of attachments reporting varies from agent to agent. + +[agent-js-playwright](https://github.com/reportportal/agent-js-playwright): +The attachment can be added via built-in [playwright testInfo attachments](https://playwright.dev/docs/api/class-testinfo#test-info-attachments) or [ReportingAPI](https://github.com/reportportal/agent-js-playwright#log). + +[agent-js-webdriverio](https://github.com/reportportal/agent-js-webdriverio): +The attachment can be added via ReportingAPI, follow [docs](https://github.com/reportportal/agent-js-webdriverio#log) for details. + +[agent-js-testcafe](https://github.com/reportportal/agent-js-testcafe): +The attachment can be added via ReportingAPI, follow [docs](https://github.com/reportportal/agent-js-testcafe#log) for details. + +[agent-js-codecept](https://github.com/reportportal/agent-js-codecept): +The attachment can be added via ReportPortal plugin reportPortal.addLog, captured screenshots will be also attached to the report, see [add-log-message](https://github.com/reportportal/agent-js-codecept#add-log-message). + +[agent-js-cucumber](https://github.com/reportportal/agent-js-cucumber): +The attachment can be added via this.attach Cucumber feature, captured screenshots will be also attached to the report, see [attachments](https://github.com/reportportal/agent-js-cucumber#attachments). + +[agent-js-cypress](https://github.com/reportportal/agent-js-cypress): +The attachment can be added via ReportPortal logging custom commands for Cypress, see [logging](https://github.com/reportportal/agent-js-cypress#logging). + +[agent-js-mocha](https://github.com/reportportal/agent-js-mocha): +The attachment can be added via PublicReportingAPI, follow [docs](https://github.com/reportportal/agent-js-mocha#report-logs-and-attachments) for details. + +[agent-js-jasmine](https://github.com/reportportal/agent-js-jasmine): +The attachment can be added via PublicReportingAPI, follow [docs](https://github.com/reportportal/agent-js-jasmine#report-logs-and-attachments) for details. + +[agent-js-jest](https://github.com/reportportal/agent-js-jest): +There is no built-in capability to send attachments during test execution as the Jest Reporter works post-factum and does not allow to provide specific data to the report. + +[agent-js-postman](https://github.com/reportportal/agent-js-postman): +There is no built-in capability at the moment to send attachments during test execution due to the specifics of postman nature. + +[agent-js-nightwatch](https://github.com/reportportal/agent-js-nightwatch): +The attachment can be added via ReportingAPI, follow [docs](https://github.com/reportportal/agent-js-nightwatch#log) for details. + +An example for each agent can be found [here](https://github.com/reportportal/examples-js). + +## How to log attachments (Screenshots) on .Net agents? + +General documentation on this in .net-commons: https://github.com/reportportal/commons-net/blob/develop/docs/Logging.md + +You can attach any binary content: + +``` +Context.Current.Log.Info("my binary", "image/png", bytes); +// where bytes is byte[] and image/png is mime type of content +``` + +Or use file instead: + +``` +Context.Current.Log.Info("my file", new FileInfo(filePath)); +// where filePath is relative/absolute path to your file +// mime type is determined automatically +``` diff --git a/versioned_docs/version-26.1/developers-guides/BackEndJavaContributionGuide.mdx b/versioned_docs/version-26.1/developers-guides/BackEndJavaContributionGuide.mdx new file mode 100644 index 0000000000..2f14b7311b --- /dev/null +++ b/versioned_docs/version-26.1/developers-guides/BackEndJavaContributionGuide.mdx @@ -0,0 +1,476 @@ +--- +sidebar_label: Back-end Java contribution guide +description: Contribute to ReportPortal's Java backend with comprehensive development guidelines, setup instructions, and coding standards. +--- + +# Back-end Java contribution guide + +## Useful links + +[Landing page](https://reportportal.io) + +[Official documentation](https://reportportal.io/docs) + +[Contribution notes on GitHub](https://github.com/reportportal/reportportal/wiki/Contribution) + +## Deployment components description + +- [Traefik](https://traefik.io) as reversed proxy and application entry point +- Data analysis + - [OpenSearch](https://opensearch.org/) as logs analysis data storage + - [Service Analyzer](https://github.com/reportportal/service-auto-analyzer) as log messages analysis tool + - [Service Analyzer Train](https://github.com/reportportal/service-auto-analyzer) is a `Service Analyzer` running in training mode to increase analysis quality + +- Database + - [Postgresql](https://www.postgresql.org) + - [Service Migrations](https://github.com/reportportal/migrations) - service for DB schema and data updates +- [RabbitMQ](https://www.rabbitmq.com) - message broker for inter-service communication +- [Minio](https://min.io) - binary data storage (alternative to plain filesystem storage) +- [Service Index](https://github.com/reportportal/service-index) - gateway service with services metadata resolving mechanism +- [Service UI](https://github.com/reportportal/service-ui) - ReportPortal web UI + +There are three Java repositories that are part of the whole RP deployment: +- [Service API](https://github.com/reportportal/service-api) - REST API service as ReportPortal functionality provider +- [Service Authorization](https://github.com/reportportal/service-authorization) - REST Authorization service for users authentication +- [Service Jobs](https://github.com/reportportal/service-jobs) - Service with jobs to process data in the back-ground + +## Code conventions + +### IDE Formatter + +[Settings file](https://github.com/reportportal/reportportal/blob/master/idea_formatting_profile.xml) + +Steps to import: +- Click on IDEA "Preferences" +- Choose "Editor" section +- Click on "Code style" +- In "Scheme" section click on settings wheel → Import Scheme → IntelliJ IDEA code style XML + + + +### Code style + +This document is aimed at improving aspects of our existing code base and synchronizing implementation/design approaches within the team. It serves as a blueprint for now but will be continually updated and improved. + +- Code should be as simple and readable as possible. +- Avoid unnecessary interfaces. In our case, if we aren't planning to extend functionality and can easily refactor, we should avoid creating an interface unless there is a distinct need (e.g., for testing, code auto-generation, etc.). +- Methods and classes should be named according to their responsibilities. If a name isn't self-explanatory, provide a description. +- Overloaded or overridden methods with the same name should perform similar operations. +- Keep parameter order consistent across methods with the same name. +- Parameter names should be clear and indicative of their function. For example, instead of using a generic "id", specify the `entity` it's related to, like "userId" or "projectId." +- The same principle applies to return parameters. +- It's advisable to use a suitable structure to avoid unnecessary conversions. +- Commonly used flows (checks, structure processing, etc.) should be moved to utilities. +- Manually working with threads should be avoided unless necessary (utilize defined `TaskExecutor` or create a new one). +- `Optional` and `Stream` should be used primarily when they enhance readability. Always return `Optional` instead of `null`. +- Avoid using two terminal operations in a Stream. + +### Git branch requirements + +- Working branch names should start with the Jira-id (EPMRPP-DDD) and an optional description, e.g., `PMRPP-444` or `EPMRPP-443-fix-some-bugs`. All Jira branches must be related to a Jira ticket. +- All commit messages in `master`, `develop`, and `release` branches must start with a Jira-id as well: EPMRPP-445 Some important fix. +- It is better to divide commits into small, logically complete parts within the branch, for clarity during code review. +- When merging a PR into the main branch (`master`, `develop`, `release`), all commits should be squashed and provided with a suitable description with the Jira-id by the person who performs the merge. + +**For contributors who do not have access to our Jira tasks**, the branch name prefix should be the GitHub issue name. It is highly recommended to create an issue that doesn't already exist and then fix it within your PR, even if it's a new function. The issue will remain there, a record of your ideas and comments from other contributors. Additionally, ReportPortal users who are not developers might prefer to look through issues rather than PRs to verify if a specific issue has been addressed in a new version of ReportPortal. This is a crucial component in maintaining a transparent, efficient test automation reporting dashboard for all users. + +## Open-source contribution workflow + +All features fixes should be added to `develop` branch only, exclusions: hot-fixes + +Changes applying workflow: + +- Clone repository or fork from it +- Checkout `develop` branch +- Create branch according to name policy +- Push branch to the remote +- Create PR according to name policy into the `develop` branch of the RP repository +- Review and merge/reject PR (squash commits in one during merge) + +## Dev environment setup + +### Pre requirements + +- Postgresql should be deployed +- Service Migration should fill/update DB data +- Binary data storage should be configured + +To deploy DB with the latest schema we need the `docker-compose.yml` that looks like this: + +```yaml +version: '2.4' +services: + + postgres: + image: postgres:12-alpine + shm_size: '512m' + environment: + POSTGRES_USER: rpuser + POSTGRES_PASSWORD: rppass + POSTGRES_DB: reportportal + volumes: + # For unix host + - ./data/postgres:/var/lib/postgresql/data + # For windows host + # - postgres:/var/lib/postgresql/data + ports: + - "5432:5432" + command: + -c checkpoint_completion_target=0.9 + -c work_mem=96MB + -c wal_writer_delay=20ms + -c synchronous_commit=off + -c wal_buffers=32MB + -c min_wal_size=2GB + -c max_wal_size=4GB + healthcheck: + test: ["CMD-SHELL", "pg_isready -d $$POSTGRES_DB -U $$POSTGRES_USER"] + interval: 10s + timeout: 120s + retries: 10 + restart: always + + db-scripts: + image: reportportal/migrations:5.6.0 + depends_on: + postgres: + condition: service_healthy + environment: + POSTGRES_SERVER: postgres + POSTGRES_PORT: 5432 + POSTGRES_DB: reportportal + POSTGRES_USER: rpuser + POSTGRES_PASSWORD: rppass + restart: on-failure +``` + +#### How to keep DB data up-to-date + +Maintaining an up-to-date database (DB) schema is an important aspect of efficient test automation reporting tools management. + +`image: reportportal/migrations:5.6.0` is the released version of the migrations service. However, if any changes were made in the develop branch after the release, the migrated DB schema may be outdated. To prevent this and ensure your DB data remains current, follow the steps outlined below: + +- clone/update [Migrations Repository](https://github.com/reportportal/migrations) +- checkout `develop` branch +- run the following command: +```shell +docker-compose run --rm migrations +``` + +This process leverages all SQL scripts present in the develop branch to update your locally running DB instance. + +By default, filesystem storage is employed for binary data; meaning all data will be stored on your local filesystem. If you prefer to store binaries using Minio (as we do in our production), you need to deploy it as well. You can do this by adding the necessary pieces to the existing `docker-compose.yml`: + +```yaml + minio: + image: minio/minio:RELEASE.2020-10-27T04-03-55Z + ports: + - '9000:9000' + volumes: + # For unix host + - ./data/storage:/data + # For windows host + # - minio:/data + environment: + MINIO_ACCESS_KEY: minio + MINIO_SECRET_KEY: minio123 + command: server /data + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] + interval: 30s + timeout: 20s + retries: 3 + restart: always +``` + +Please be aware of the comments directed towards `Windows` - if you are developing on Windows, uncomment the sections for `Windows` and comment out any `Linux`-related sections, applicable to both Postgres and Minio. Then, add the following statement to the `docker-compose.yml`: + +```yaml +volumes: + postgres: + minio: +``` + +As the result we have the `docker-compose.yml`: +```yaml +version: '2.4' +services: + + postgres: + image: postgres:12-alpine + shm_size: '512m' + environment: + POSTGRES_USER: rpuser + POSTGRES_PASSWORD: rppass + POSTGRES_DB: reportportal + volumes: + # For unix host + - ./data/postgres:/var/lib/postgresql/data + # For windows host + # - postgres:/var/lib/postgresql/data + ports: + - "5432:5432" + command: + -c checkpoint_completion_target=0.9 + -c work_mem=96MB + -c wal_writer_delay=20ms + -c synchronous_commit=off + -c wal_buffers=32MB + -c min_wal_size=2GB + -c max_wal_size=4GB + healthcheck: + test: ["CMD-SHELL", "pg_isready -d $$POSTGRES_DB -U $$POSTGRES_USER"] + interval: 10s + timeout: 120s + retries: 10 + restart: always + + db-scripts: + image: reportportal/migrations:5.6.0 + depends_on: + postgres: + condition: service_healthy + environment: + POSTGRES_SERVER: postgres + POSTGRES_PORT: 5432 + POSTGRES_DB: reportportal + POSTGRES_USER: rpuser + POSTGRES_PASSWORD: rppass + restart: on-failure + + minio: + image: minio/minio:RELEASE.2020-10-27T04-03-55Z + ports: + - '9000:9000' + volumes: + # For unix host + - ./data/storage:/data + # For windows host + # - minio:/data + environment: + MINIO_ACCESS_KEY: minio + MINIO_SECRET_KEY: minio123 + command: server /data + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] + interval: 30s + timeout: 20s + retries: 3 + restart: always + +volumes: + postgres: + minio: +``` + +This file will be updated in the subsequent sections, but we can already initiate the development of our first service. + +### Service Authorization + +To start up Service Authorization, you should populate the marked values in the `application.yaml file`: + + + + + +(Optional) Adjust the `context-path` value from `/` to `/uat` if you plan to deploy Service UI locally (described in a later section). + +### Service API + +Prior to initiating the Service API, RabbitMQ needs to be included in our deployment. + +In ReportPortal, RabbitMQ serves three key functions: + +- Inter-service communication between Service API and Service Analyzer. +- Asynchronous reporting feature. +- User activity event publishing. + +To add RabbitMQ to our deployment, the following should be incorporated into our existing `docker-compose.yml`: + +```yaml + rabbitmq: + image: rabbitmq:3.7.16-management + ports: + - "5672:5672" + - "15672:15672" + environment: + RABBITMQ_DEFAULT_USER: "rabbitmq" + RABBITMQ_DEFAULT_PASS: "rabbitmq" + healthcheck: + test: ["CMD", "rabbitmqctl", "status"] + retries: 5 + restart: always +``` + +We can now begin deploying the Service API without encountering any issues. However, it's important to note that all Analyzer-related interactions (such as publishing to analyzer queues and receiving responses) will not be successful. To rectify this, we need to deploy the Service Analyzer and all its required services. To achieve this, we add the following to our `docker-compose.yml`: + +```yaml + opensearch: + image: opensearchproject/opensearch:2.11.0 + container_name: opensearch + environment: + discovery.type: single-node + plugins.security.disabled: "true" + bootstrap.memory_lock: "true" + OPENSEARCH_JAVA_OPTS: -Xms512m -Xmx512m + DISABLE_INSTALL_DEMO_CONFIG: "true" + ulimits: + memlock: + soft: -1 + hard: -1 + ports: + - "9200:9200" + - "9600:9600" + volumes: + - opensearch:/usr/share/opensearch/data + healthcheck: + test: ["CMD", "curl","-s" ,"-f", "http://0.0.0.0:9200/_cat/health"] + restart: always + + analyzer: + image: reportportal/service-auto-analyzer:5.6.0 + environment: + LOGGING_LEVEL: info + AMQP_EXCHANGE_NAME: analyzer-default + AMQP_URL: amqp://rabbitmq:rabbitmq@rabbitmq:5672 + ES_HOSTS: http://opensearch:9200 + # ES_USER: + # ES_PASSWORD: + # MINIO_SHORT_HOST: minio:9000 + # MINIO_ACCESS_KEY: minio + # MINIO_SECRET_KEY: minio123 + depends_on: + opensearch: + condition: service_started + rabbitmq: + condition: service_healthy + restart: always +``` + +As a result of these additions, your `docker-compose.yml` should look something like [this](pathname:///files/DockerCompose.yml). + +To start the Service API, populate the marked values in your `application.yaml` file: + + + + + + + +Alternatively, you may need to change the `context-path` value from `/` to `/api` should you plan to deploy Service UI locally (detailed instructions will be provided at a later stage). + +### Service Jobs + +To start Service Jobs, fill in the marked values in your `application.yaml` file: + + + + + + + +### Service UI + +After all back-end services deployed you may want to interact with them not only using tool like Postman but use ReportPortal UI too. +Once all back-end services are deployed, you may want to interface with them beyond using a tool like Postman and use ReportPortal UI. To accomplish this, follow these steps: + +- Clone or update the [Service UI repository](https://github.com/reportportal/service-ui). +- Checkout the `develop` branch. +- Make changes to the `dev.config.js` file. + +Before: + +```javascript +proxy: [ + { + context: ['/composite', '/api/', '/uat/'], + target: process.env.PROXY_PATH, + bypass(req) { + console.log(`proxy url: ${req.url}`); + }, + }, + ] +``` + +After: +```javascript +proxy: [ + { + context: ['/composite', '/api/'], + target: 'http://localhost:8585', + bypass(req) { + console.log(`proxy url: ${req.url}`); + }, + }, + { + context: ['/uat/'], + target: 'http://localhost:9999', + bypass(req) { + console.log(`proxy url: ${req.url}`); + }, + }, + ] +``` + +- If NodeJs is not already installed, install it (version 20 is recommended). +- From the root folder(service-ui), run Service UI using the following commands: +```shell +cd app +npm install +npm run dev +``` + +- Open the Service UI page on `localhost` using port `3000` and try to login using the default credentials. + +This will allow you to view your test automation dashboard and interact with the reported test results. + +## Development workflow + +### Introduction to dependencies + +In addition to common dependencies such as `spring-...`, our Java services also have ReportPortal libraries distributed across different repositories. Here is a list of these dependencies: +- [Commons DAO](https://github.com/reportportal/commons-dao) - Data layer dependency with domain model configuration +- [Commons Model](https://github.com/reportportal/commons-model) - REST models dependency +- [Commons](https://github.com/reportportal/commons) - Some common utils for multiple usage purposes +- [Commons Rules](https://github.com/reportportal/commons-rules) - Business rules validation dependency +- [Plugin API](https://github.com/reportportal/plugin-api) - ReportPortal plugin API +- [Commons BOM](https://github.com/reportportal/commons-bom) - POM config for releases + +### Updates in dependencies + +Let's assume you found a bug when trying to retrieve a user from the DB. The logic is invoked within Service API, but the buggy code is in the Commons DAO dependency. To apply a fix and validate its effectiveness, follow these steps: + +- Clone or update the `Commons DAO` repository. +- Checkout the `develop` branch. +- Implement the necessary changes. +- Create a branch according to naming policy. +- Push the changes to the remote. +- Create a pull request (PR) to the `develop` branch. Now, you can see your branch and the `commit hash` on the GitHub page: + + + +- Go to the service where your changes need to be applied (Service API in our instance). +- Copy the `commit hash` and replace the existing one in the `build.gradle` of the required service (Service API in our instance): + + + +- After rebuilding the project using `Gradle`, the dependency will be resolved and downloaded using the [Jitpack tool](https://jitpack.io). +- Generate a branch according to the naming policy. +- Push the changes to the remote. +- Create a PR to the `develop` branch. + +## Summary notes + +This documentation should assist you in configuring the ReportPortal local development environment and provide an understanding of the standards and conventions we adhere to. + +The simplified development workflow should look as follows: + +- Always [maintain the latest schema and data](#how-to-keep-db-data-up-to-date) in your local DB instance. +- Checkout the `develop` branch in the required repository. +- Implement changes. +- If changes in dependencies are necessary: + - Go to the dependency repository, apply changes, and create a branch and PR according to conventions. + - Using the `commit hash`, update the dependency in the `build.gradle`. +- Create a branch according to the name policy. +- Push to the remote. +- Create a PR following the name policy. diff --git a/versioned_docs/version-26.1/developers-guides/InteractionsBetweenAPIAndAnalyzer.mdx b/versioned_docs/version-26.1/developers-guides/InteractionsBetweenAPIAndAnalyzer.mdx new file mode 100644 index 0000000000..3b1378f40a --- /dev/null +++ b/versioned_docs/version-26.1/developers-guides/InteractionsBetweenAPIAndAnalyzer.mdx @@ -0,0 +1,183 @@ +--- +sidebar_label: Interactions between API and Analyzer +description: Understand API and Analyzer service communication using AMQP and RabbitMQ for test failure analytics and ML processing. +--- + +# Interactions between API and Analyzer + +## Overview + +Communication between `API service` and `analyzer service` is carried out using [AMQP 0-9-1](http://www.amqp.org/specification/0-9-1/amqp-org-download) and [RabbitMQ](https://www.rabbitmq.com) as message broker. `API service` creates [virtual host](https://www.rabbitmq.com/vhosts.html) inside RabbitMQ with name `analyzer` on start. Analyzers in theirs turn connect to the virtual host and declare exchange with name and arguments. Any type of request from `API` and response from `analyzer` stores in the same queue. Request and response messages is presented as JSON. + + + +## Declaring exchange + +Each analyzer has to declare direct exchange with the following arguments: + +- `analyzer` - Name of analyzer (string) +- `version` - Analyzer version (string) +- `analyzer_index` - Is indexing supported (boolean, false by default) +- `analyzer_log_search` - Is log searching supported (boolean, false by default) +- `analyzer_priority` - Priority of analyzer (number). The lower the number, the higher the priority. + + + +## Declaring queues + +Each analyzer has to declare 5 queues with names: `analyze`, `search`, `index`, `clean`, `delete`. + + + +## Indexing + +Index request can be used to store info about logs and then analysis will be proceed based on the info. Requests and responses use `index` queue. + +Index request structure from `API`: + +IndexLaunch: + +| Attribute | Description | Example | +|----------------|------------------------|------------| +| launchId | Id of launch | 101 | +| launchName | Name of launch | Smoke Test | +| project | Id of project | 12 | +| analyzerConfig | Analyzer configuration | | +| testItems | Array of test items | | + +AnalyzerConfig: + +| Attribute | Description | Example | +|-----------------------|------------------------------------------------------------------------------|---------| +| minDocFreq | The minimum frequency of the saved logs | 1 | +| minTermFreq | The minimum frequency of the word in the analyzed log | 1 | +| minShouldMatch | Percent of words equality between analyzed log and particular log from index | 95 | +| numberOfLogLines | The number of first lines of log message that should be considered in indeT | -1 | +| isAutoAnalyzerEnabled | Is auto analysis enabled | true | +| analyzerMode | Analysis mode. Allowable values: "all", "launch_name", "current_launch" | all | +| indexingRunning | Is indexing running | false | + +IndexTestItem: + +| Attribute | Description | Example | +|----------------|----------------------------|---------------------------------------| +| testItemId | Id of test item | 123 | +| issueType | Issue type locator | pb001 | +| isAutoAnalyzed | Is test item auto analyzed | false | +| logs | Array of test item logs | | + +IndexLog: + +| Attribute | Descrioption | Example | +|-----------|--------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| logId | Id of log | 125 | +| logLevel | Log level | 40000 | +| message | Log message | java.lang.AssertionError: 1 expectation failed. Expected status code <200> but was <400>. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) | + +`API` send array of IndexLaunch entities that have to be indexed. + +Example in json : + +```json +[ + { + "launchId":110, + "launchName":"Smoke Test", + "project":11, + "analyzerConfig":{ + "minDocFreq":1, + "minTermFreq":1, + "minShouldMatch":95, + "numberOfLogLines":-1, + "isAutoAnalyzerEnabled":true, + "analyzerMode":"all", + "indexingRunning":false + }, + "testItems":[ + { + "testItemId":101, + "issueType":"pb001", + "uniqueId":"auto:c6edafc24a03c6f69b6ec070d1fd0089", + "isAutoAnalyzed":false, + "logs":[ + { + "logId":111, + "logLevel":40000, + "message":"java.lang.AssertionError: 1 expectation failed. Expected status code <200> but was <400>." + }, + { + "logId":112, + "logLevel":40000, + "message":"java.lang.AssertionError: 1 expectation failed. Expected status code <200> but was <500>." + } + ] + } + ] + } +] +``` + +Analyzer should return response with number of indexed logs. + +## Analyze + +Analyze request can be used to find matches from request in indexed data. Requests and responses use `analyze` queue. + +Analyze request is the same as IndexLaunch entity used for indexing. It contains info about test items and logs thad have to be analyzed. + +Response from analyzer should contain array of the following entities (info about analyzed test items): + +AnalyzedItemRs: + +| Attribute | Description | Example | +|----------------|--------------------------|---------| +| itemId | Id of analyzed test item | 111 | +| relevantItemId | Id of relevant test item | 123 | +| issueType | Issue type locator | pb001 | + +## Search logs + +Search request can be used to find similar logs from test items with `to_investigate` type. Requests and responses use `search` queue. + +Search logs request from `API`: + +SearchRq: + +| Attribute | Description | Example | +|-------------------|---------------------------------------------------------|-------------------------------------| +| launchId | Id of launch | 111 | +| launchName | Name of launch | Smoke Test | +| itemId | Id of test item | 112 | +| projectId | Id of project | 10 | +| filteredLaunchIds | Array of launch ids, among with search would be applied | [1,2,3] | +| logMessages | Array of log messages looking for | ["first message", "second message"] | +| logLines | Number of logs lines that will be used in comparison | 5 | + +Analyzer should return array of log ids that matches as a response. + +## Clean + +Clean request can be used to remove stored log from index. Requests use `clean` queue. + +Clean logs request from `API`: + +CleanIndexRq: + +| Attribute | Description | Example | +|-----------|---------------------------------|-----------------| +| project | Id of project | 10 | +| ids | Array of log ids to be removed | [111, 122, 123] | + +Analyzer do not send response on the request. + +## Delete + +Delete request can be used to delete entire index. Requests use `delete` queue. + +Request message from `API` contains only id of index. + +Analyzer do not send response on the request. + +## Examples + +Custom [analyzer](https://github.com/ihar-kahadouski/custom-analyzer) written in java using [Spring AMQP](https://spring.io/projects/spring-amqp). diff --git a/versioned_docs/version-26.1/developers-guides/PluginDevelopersGuide/DevelopACustomImportPlugin.md b/versioned_docs/version-26.1/developers-guides/PluginDevelopersGuide/DevelopACustomImportPlugin.md new file mode 100644 index 0000000000..a8477aa225 --- /dev/null +++ b/versioned_docs/version-26.1/developers-guides/PluginDevelopersGuide/DevelopACustomImportPlugin.md @@ -0,0 +1,109 @@ +--- +sidebar_label: Develop a custom import plugin +description: Learn how to develop custom import plugins for ReportPortal test automation reporting tools using PF4J framework. +--- + +# Develop a custom import plugin + +This documentation guides on creating a custom import plugin for ReportPortal, using the PF4J plugin framework. + +## Prerequisites +Before starting the development of a new import plugin, ensure you review these essential resources: + +1. **PF4J Plugin Framework**: Learn about PF4J, which is the core framework for ReportPortal plugins system at [pf4j.org](https://pf4j.org). +2. **Plugin Template**: Start with the standard plugin template available on [GitHub](https://github.com/reportportal/plugin-template). +3. **Examples**: Examine existing plugins for importing: + - JUnit: [GitHub repo](https://github.com/reportportal/plugin-import-junit) + - RobotFramework: [GitHub repo](https://github.com/reportportal/plugin-import-robot). +4. **Event-Based Reporting**: Understand event-based interactions in ReportPortal through [service-api](https://github.com/reportportal/service-api/blob/develop/src/main/java/com/epam/ta/reportportal/reporting/event/EventBasedReporting.java). +5. **Event Objects**: Familiarize with event objects used in reporting at [GitHub](https://github.com/reportportal/commons/tree/develop/src/main/java/com/epam/reportportal/events). +6. **Start Import Endpoint**: Learn how to initiate importing through the UI at [GitHub](https://github.com/reportportal/service-api/blob/6d40590d21fef3299ed5b7e009b1cc7130863c21/src/main/java/com/epam/ta/reportportal/ws/controller/PluginController.java#L140). + +## Step-by-Step Plugin Development Guide + +### Step 1: Clone the Plugin Template +Begin by using the [plugin template](https://github.com/new?template_name=plugin-template&template_owner=reportportal) to create a new repository and get the required boilerplate code. + +### Step 2: Rename and Configure the Template +Update the naming from 'template' to something specific to your plugin need. Modify the `gradle.properties` to set your `pluginId`, which should be a key word without special symbols. Update the manifest appropriately [here](https://github.com/reportportal/plugin-template/blob/698a17a862eb4a8d52274242a9f8e4ec9e6ab799/plugin/build.gradle#L101). + +### Step 3: Implement the Plugin EntryPoint +Create your main class (or use from the template) annotated with `@Extension` that implements `ReportPortalExtensionPoint` ([TemplatePluginExtension](https://github.com/reportportal/plugin-template/blob/main/plugin/src/main/java/com/epam/reportportal/extension/template/TemplatePluginExtension.java)). +This class should contain all logic for integrating the new plugin with the ReportPortal system. Implement the necessary methods as shown in the earlier example snippet. + +For correct representation on the UI, there should be added specific parameters to the plugin: + +```java + @Override + public Map getPluginParams() { + Map params = new HashMap<>(); + params.put(ALLOWED_COMMANDS, new ArrayList<>(pluginCommandMapping.get().keySet())); + params.put(COMMON_COMMANDS, new ArrayList<>(commonPluginCommandMapping.get().keySet())); + params.put(DESCRIPTION_KEY, DESCRIPTION); + params.put(METADATA, Map.of(IS_INTEGRATIONS_ALLOWED, false)); + params.put("maxFileSize", MAX_FILE_SIZE); + params.put("acceptFileMimeTypes", "List of acceptFileMimeTypes")); + return params; + } + + @Override + public IntegrationGroupEnum getIntegrationGroup() { + return IntegrationGroupEnum.IMPORT; + } +``` + +### Step 4: Define the Import Command +Create a class for the 'import' command that must implement the [CommonPluginCommand](https://github.com/reportportal/plugin-api/blob/develop/src/main/java/com/epam/reportportal/extension/CommonPluginCommand.java) interface. This should: +- Specify the command name in the `getName()` method, which must return "import". +```java + @Override + public String getName() { + return "import"; + } +``` + +- Handle the import logic in the `executeCommand(Map params)` method that includes file parsing and publishing launch reporting events. +```java + @Override + public OperationCompletionRS executeCommand(Map params) {} +``` + +When working with a loaded file, it's necessary to trigger events in ReportPortal. For instance, if the report contains specific step information, you need to generate a StartTestItemRQ and publish a StartChildItemRqEvent: + +```java + private String startTestItem(ItemInfo itemInfo) { + StartTestItemRQ rq = buildStartItemRq(itemInfo); + eventPublisher.publishEvent( + new StartChildItemRqEvent(this, projectName, items.peek().getUuid(), rq)); + return rq.getUuid(); + } +``` + +The same approach used for other requests as well. + +### Step 5: Build plugin jar + +Build plugin executable jar using standard gradle commands after implementation of the plugin is finished. +``` +gradle clean build +``` +More information about the assembling of plugins can be found in [PluginDevelopersGuide](./PluginAPIDevelopersGuide.mdx#assemble-plugin) + +### Step 6: Verify the plugin UI + +Provide the info, mentioned in [step 3](#step-3-implement-the-plugin-entrypoint). This will help the ReportPortal UI understand the plugin's capabilities and limitations. +Once the step is completed, the plugin will be available for selection in the ReportPortal UI Launch import modal. No further actions required from the plugin UI to make the import process work. + +#### Add custom UI extensions if needed + +The plugin template also provides a way to add custom extensions to the ReportPortal UI via plugin. +This setup isn't required for import process work, but can be used to provide additional pages/sections in the ReportPortal UI via React components. +For more information, see the [Plugin Developers Guide](./PluginUIDevelopersGuide.md). + +## Events to Manage +- **StartLaunchRqEvent**: To start a new launch. +- **StartRootItemRqEvent**: To begin a root item just below the launch. +- **StartChildItemRqEvent**: For starting a child item, requiring a parent UUID. +- **SaveLogRqEvent**: For saving logs which may include file attachments. + +By following these steps and using the available resources, you can build an import plugin that is customized to your reporting requirements and integrates smoothly with ReportPortal. diff --git a/versioned_docs/version-26.1/developers-guides/PluginDevelopersGuide/PluginAPIDevelopersGuide.mdx b/versioned_docs/version-26.1/developers-guides/PluginDevelopersGuide/PluginAPIDevelopersGuide.mdx new file mode 100644 index 0000000000..d1712a9158 --- /dev/null +++ b/versioned_docs/version-26.1/developers-guides/PluginDevelopersGuide/PluginAPIDevelopersGuide.mdx @@ -0,0 +1,488 @@ +--- +sidebar_label: Plugin API development guide +description: Develop custom plugins for ReportPortal using APIs and microservices architecture for enhanced test automation reporting tools functionality. +--- + +# Plugin API development guide + +## Introduction + +ReportPortal as a microservice application had services that integrate with external systems like JIRA or RALLY. These are problems of this +approach: + +- every service will run as a separate application consuming additional amount of resources for environment; +- user may not need all the integrations at the moment but need some (or a new one) later, so he should modify deployment configuration + every time; +- every service modification requires re-deployment. + +To solve these problems and support dynamic integrations ReportPortal implements plugin system on top +of [PF4J](https://github.com/pf4j/pf4j). + +:::note +Documentation for the UI plugins can be found [here](./PluginUIDevelopersGuide.md) +::: +## How does it work + + + +## Creating your first plugin + +Result of the following steps can be found here - [Plugin template](https://github.com/reportportal/plugin-template). +This is fully configured and ready-to-use plugin. + +### Base plugin configuration + +We configure our build.gradle file as follows: + +```groovy +plugins { + id "io.spring.dependency-management" version "1.0.9.RELEASE" + id 'java' +} + +repositories { + mavenCentral() +} + +dependencies { + implementation 'com.epam.reportportal:plugin-api:5.4.0' + annotationProcessor 'com.epam.reportportal:plugin-api:5.4.0' +} + +task plugin(type: Jar) { + getArchiveBaseName().set("plugin-${pluginId}") + into('classes') { + with jar + } + into('lib') { + from configurations.compile + } + extension('zip') +} + +task assemblePlugin(type: Copy) { + from plugin + into pluginsDir +} + +task assemblePlugins(type: Copy) { + dependsOn subprojects.assemblePlugin +} +``` + +This base configuration with `plugin-api` dependency grants access to extension points and core ReportPortal dependencies. + +
+ +### Create extension + +Firstly we create our plugin representation (we also can override `start()` and `stop()` methods) that will be managed by `pf4j` plugin +manager. + +```java +package com.epam.reportportal.extension.example; + +import org.pf4j.Plugin; +import org.pf4j.PluginWrapper; + +public class ExamplePlugin extends Plugin { + public ExamplePlugin(PluginWrapper wrapper) { + super(wrapper); + } +} +``` + +Then we create our plugin entry point. We start with `ReportPortalExtensionPoint` implementation: + +```java + +@Extension +public class ExampleExtension implements ReportPortalExtensionPoint { + + private final Supplier>> pluginCommandMapping = new MemoizingSupplier<>(this::getCommands); + + public ExampleExtension(Map initParams) { + + } + + @Override + public Map getPluginParams() { + Map params = new HashMap<>(); + params.put(ALLOWED_COMMANDS, new ArrayList<>(pluginCommandMapping.get().keySet())); + return params; + } + + @Override + public PluginCommand getCommandToExecute(String commandName) { + return pluginCommandMapping.get().get(commandName); + } + + private Map> getCommands() { + Map> pluginCommandMapping = new HashMap<>(); + pluginCommandMapping.put("testConnection", (integration, params) -> true); + return pluginCommandMapping; + } +} +``` + +We implement `getPluginParams()` to get list of supported plugin `commands` from the client side. We implement `getCommandToExecute()` to +get command from mapping to execute. As for now we only have `testConnection` command that implements base command interface: + +```java +public interface PluginCommand { + /** + * Executes plugin command + * + * @param integration Configured ReportPortal integration + * @param params Plugin Command parameters + * @return Result + */ + T executeCommand(Integration integration, Map params); +} +``` + +Command `testConnection` is mandatory and should either always return `true` or execute logic of connection test with external system. + +
+ +### Autowire dependencies + +Being loaded in runtime plugin extension can be handled as `Spring bean`. That's why we can autowire dependencies just as we do in core +application: + +```java + +@Extension +public class ExampleExtension implements ReportPortalExtensionPoint { + ... + @Autowired + private ApplicationContext applicationContext; + + @Autowired + private IntegrationTypeRepository integrationTypeRepository; + + @Autowired + private IntegrationRepository integrationRepository; + + public ExampleExtension(Map initParams) { + } + ... +} +``` + +
+ +### Get file command + +We can store in `resources` folder files that can be loaded from the client side later. During plugin installation `plugin manager` provides +directory in the file system to store plugin resources. This directory passed through the constructor (with Map parameter) and can be +accessed as follows: + +```java + +@Extension +public class ExampleExtension implements ReportPortalExtensionPoint { + + private final String resourcesDir; + + ... + + public ExampleExtension(Map initParams) { + resourcesDir = IntegrationTypeProperties.RESOURCES_DIRECTORY.getValue(initParams).map(String::valueOf).orElse(""); + } + + ... +} +``` + +`GetFileCommand` accepts `resourcesDir` and `propertyFile` as constructor parameters. Property file should be stored in `resources` folder +of the plugin. It contains *key-value* mapping that represents files allowed to be loaded from the client side: + +```properties +icon=plugin-icon.svg +``` + +We created `example-binary-data.properties` file with these contents and now can access `plugin-icon.svg` file by passing `icon` key +to `getFileCommand`. + +That's how our extension looks now: + +```java + +@Extension +public class ExampleExtension implements ReportPortalExtensionPoint { + + public static final String BINARY_DATA_PROPERTIES_FILE_ID = "example-binary-data.properties"; + private final String resourcesDir; + + private final Supplier>> pluginCommandMapping = new MemoizingSupplier<>(this::getCommands); + + @Autowired + private ApplicationContext applicationContext; + + @Autowired + private IntegrationTypeRepository integrationTypeRepository; + + @Autowired + private IntegrationRepository integrationRepository; + + public ExampleExtension(Map initParams) { + resourcesDir = IntegrationTypeProperties.RESOURCES_DIRECTORY.getValue(initParams).map(String::valueOf).orElse(""); + } + + @Override + public Map getPluginParams() { + Map params = new HashMap<>(); + params.put(ALLOWED_COMMANDS, new ArrayList<>(pluginCommandMapping.get().keySet())); + return params; + } + + @Override + public PluginCommand getCommandToExecute(String commandName) { + return pluginCommandMapping.get().get(commandName); + } + + private Map> getCommands() { + Map> pluginCommandMapping = new HashMap<>(); + pluginCommandMapping.put("getFile", new GetFileCommand(resourcesDir, BINARY_DATA_PROPERTIES_FILE_ID)); + pluginCommandMapping.put("testConnection", (integration, params) -> true); + return pluginCommandMapping; + } +} +``` + +
+ +### Assemble plugin + +Our plugin can be built either as: + - simple jar (without external dependencies) and use dependencies from core application; + - shadow jar (with external dependencies) and still use dependencies from core application. + +We should configure plugin jar manifest with mandatory properties: + - id + - version + - plugin class (class marked with @Extension - our entry point) + +We should configure `resource` folder contents handling. + +As we load api plugin contents in runtime we can do so with ui contents too. To make it possible we should modify our configuration. +We provide new `ui.gradle` config: + +```groovy +node { + version = '10.14.1' + npmVersion = '6.4.1' + download = true + workDir = file("${project.buildDir}/ui") + nodeModulesDir = file("${project.rootDir}/ui") +} + +npm_run_build { + inputs.files fileTree("ui/src") + inputs.file 'ui/package.json' + inputs.file 'ui/package-lock.json' + outputs.dir 'ui/build' +} +``` + +Load it to the main configuration as a dependency and make some changes to include generated `main.js` file to `resources` folder that +allows us to load it using `GetFileCommand`. + +That's how our `build.gradle` looks now: + +```groovy +import com.github.spotbugs.SpotBugsTask + +plugins { + id "io.spring.dependency-management" version "1.0.9.RELEASE" + id 'java' + id 'com.github.johnrengelman.shadow' version '5.2.0' + id "com.moowork.node" version "1.3.1" +} + +apply from: 'ui.gradle' + +repositories { + mavenCentral() +} + +dependencies { + implementation 'com.epam.reportportal:plugin-api:5.4.0' + annotationProcessor 'com.epam.reportportal:plugin-api:5.4.0' +} + +artifacts { + archives shadowJar +} + +sourceSets { + main { + resources + { + exclude '**' + } + } +} + +jar { + from("src/main/resources") { + into("/resources") + } + from("ui/build") { + into("/resources") + } + manifest { + attributes( + "Class-Path": configurations.compile.collect { it.getName() }.join(' '), + "Plugin-Id": "${pluginId}", + "Plugin-Version": "${project.version}", + "Plugin-Provider": "Report Portal", + "Plugin-Class": "com.epam.reportportal.extension.example.ExamplePlugin", + "Plugin-Service": "api" + ) + } +} + +shadowJar { + from("src/main/resources") { + into("/resources") + } + from("ui/build") { + into("/resources") + } + configurations = [project.configurations.compile] + zip64 true + dependencies { + } +} + +task plugin(type: Jar) { + getArchiveBaseName().set("plugin-${pluginId}") + into('classes') { + with jar + } + into('lib') { + from configurations.compile + } + extension('zip') +} + +task assemblePlugin(type: Copy) { + from plugin + into pluginsDir +} + +task assemblePlugins(type: Copy) { + dependsOn subprojects.assemblePlugin +} + +compileJava.dependsOn npm_run_build +``` + +Now we can just execute *./gradlew build* and get plugin binaries (as jar and as shadowJar) that can be loaded to the application. + +### Event listeners + +All plugin commands are executed through the core application end-point with mapping: + +`https://host:port/v1/integration/{projectName}/{integrationId}/{command}` + +As we can see `integrationId` is a mandatory parameter that specifies integration to be used in the command execution. + +We can affect logic executed in core application from the plugin by handling predefined set of events. As for now we will use +mandatory `PluginLoadedEventHandler` as an example. + +This handler creates the very first integration and uses `PluginInfoProvider` to update plugin data in the database. + +To add a new listener we should use `ApplicationContext` after plugin was loaded - so we do it in the method marked by `@PostConstruct`. + +Also, we should remove listeners when we unload plugin - so we implement `DisposableBean` interface and provide this logic in the `preDestroy()` method. + +That's how our extension looks now: + +```java + +@Extension +public class ExampleExtension implements ReportPortalExtensionPoint, DisposableBean { + + public static final String BINARY_DATA_PROPERTIES_FILE_ID = "example-binary-data.properties"; + private static final String PLUGIN_ID = "example"; + private final String resourcesDir; + + private final Supplier>> pluginCommandMapping = new MemoizingSupplier<>(this::getCommands); + private final Supplier> pluginLoadedListenerSupplier; + + @Autowired + private ApplicationContext applicationContext; + + @Autowired + private IntegrationTypeRepository integrationTypeRepository; + + @Autowired + private IntegrationRepository integrationRepository; + + public ExampleExtension(Map initParams) { + resourcesDir = IntegrationTypeProperties.RESOURCES_DIRECTORY.getValue(initParams).map(String::valueOf).orElse(""); + + pluginLoadedListenerSupplier = new MemoizingSupplier<>(() -> new ExamplePluginEventListener(PLUGIN_ID, + new PluginEventHandlerFactory(integrationTypeRepository, + integrationRepository, + new PluginInfoProviderImpl(resourcesDir, BINARY_DATA_PROPERTIES_FILE_ID) + ) + )); + } + + @Override + public Map getPluginParams() { + Map params = new HashMap<>(); + params.put(ALLOWED_COMMANDS, new ArrayList<>(pluginCommandMapping.get().keySet())); + return params; + } + + @Override + public PluginCommand getCommandToExecute(String commandName) { + return pluginCommandMapping.get().get(commandName); + } + + @PostConstruct + public void createIntegration() throws IOException { + initListeners(); + } + + private void initListeners() { + ApplicationEventMulticaster applicationEventMulticaster = applicationContext.getBean(AbstractApplicationContext.APPLICATION_EVENT_MULTICASTER_BEAN_NAME, + ApplicationEventMulticaster.class + ); + applicationEventMulticaster.addApplicationListener(pluginLoadedListenerSupplier.get()); + } + + @Override + public void destroy() { + removeListeners(); + } + + private void removeListeners() { + ApplicationEventMulticaster applicationEventMulticaster = applicationContext.getBean(AbstractApplicationContext.APPLICATION_EVENT_MULTICASTER_BEAN_NAME, + ApplicationEventMulticaster.class + ); + applicationEventMulticaster.removeApplicationListener(pluginLoadedListenerSupplier.get()); + } + + private Map> getCommands() { + Map> pluginCommandMapping = new HashMap<>(); + pluginCommandMapping.put("getFile", new GetFileCommand(resourcesDir, BINARY_DATA_PROPERTIES_FILE_ID)); + pluginCommandMapping.put("testConnection", (integration, params) -> true); + return pluginCommandMapping; + } +} +``` + +## Lazy initialization + +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: +:::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` +::: diff --git a/versioned_docs/version-26.1/developers-guides/PluginDevelopersGuide/PluginUIDevelopersGuide.md b/versioned_docs/version-26.1/developers-guides/PluginDevelopersGuide/PluginUIDevelopersGuide.md new file mode 100644 index 0000000000..7d6a6e3787 --- /dev/null +++ b/versioned_docs/version-26.1/developers-guides/PluginDevelopersGuide/PluginUIDevelopersGuide.md @@ -0,0 +1,54 @@ +--- +sidebar_label: Plugin UI development guide +description: Learn how to develop plugin UI components for ReportPortal test automation reporting tools with modern frontend technologies. +--- + +# Plugin UI development guide + +The described approach cover the UI part of the plugin engine starting from ReportPortal version 24.1. + +To learn how deal with ReportPortal plugins from the Backend side, follow the [separate guide](./PluginAPIDevelopersGuide.mdx). + +## The concept + +The Service UI and Plugin UI are integrated in runtime using JavaScript and share the common dependencies via [Webpack Module Federation](https://webpack.js.org/concepts/module-federation/). + +### From Service UI side + +The ReportPortal Service UI (the core UI - further in the text) is built with the React library and uses Redux for state management. +It has a list with extension points that can be used to extend the core UI with custom React components come from plugins. Extension points are described [here](#). +The context (e.g. current user, project) from core UI is shared via Redux state and can be accessed in plugins. In addition to this, the core UI provides a set of common components and utils that can be used in plugins as well. + +After uploading the plugin to the ReportPortal (see [how](#)) and opening the application in browser, the core UI will load the descriptors file (`metadata.json`) from plugin to define the extension points implemented there. + +Once the place with particular extension point opened in the application (e.g. Settings page), the core UI loads the React component from the Plugin UI files and render it in the appropriate place in application. + +#### Libs sharing + +The core UI shares its major dependencies via Webpack Module Federation plugin. +That means that libs can be safely reused in plugin without loading their duplicate to the browser if the version of the lib satisfies the plugin needs. + +The list with shared libs from core UI: + +Create table. + +##### Shared extension props + +After embedding into the core UI, each Plugin UI extension component receives the rich set of components and utils via props. +The complete set of such a props can be found [in the core UI](https://github.com/reportportal/service-ui/blob/develop/app/src/controllers/plugins/uiExtensions/createImportProps.js), some of them are described via TS definitions in the [plugin template repo](https://github.com/reportportal/plugin-template/tree/main/plugin/ui/src/types/extensionProps). + +#### Extension points + +The list with supported extension points by core UI: + +| Extension type | Description | +| --------------------- |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| settingsTab | Adds the new tab on project settings page (_https://your_server/ui/#(projectName)/settings/(tabName)_). | +| modal | Adds the new modal component to the system (can be shown by calling `showModalAction` with corresponding modal `name`). | +| adminPage | Adds the new page to the _administrate_ section. | +| integrationFormFields | Provides the fields to the integration creation modal on project integrations page (_https://your_server/ui/#(projectName)/settings/integrations_).
`IntegrationFormField` component from Core UI can be used here to simplify form building process.
**Note:** Integration settings for the plugin will be available only if plugin provides `embedded` property in its `details`. | +| integrationSettings | Provides the integration settings component on project integrations page (_https://your_server/ui/#(projectName)/settings/integrations_).
`IntegrationSettings` component from Core UI can be used here to reduce the time for building communication with API and follow common design and UX patterns as in other integrations.
**Note:** Integration settings for the plugin will be available only if plugin provides `embedded` property in its `details`. | +| sidebarComponent | Adds a component to the application sidebar. | +| launchItemComponent | Adds a component to the every launch entity on launches page (component will be displayed under the launch name). | + +projectPage (if `icon` property exists, the link will be automatically added to the sidebar). Right now only SVG icons supported. diff --git a/versioned_docs/version-26.1/developers-guides/PluginDevelopersGuide/index.md b/versioned_docs/version-26.1/developers-guides/PluginDevelopersGuide/index.md new file mode 100644 index 0000000000..e69d9a3971 --- /dev/null +++ b/versioned_docs/version-26.1/developers-guides/PluginDevelopersGuide/index.md @@ -0,0 +1,10 @@ +--- +sidebar_label: Plugin developers guide +description: Build custom plugins for ReportPortal. Learn APIs and UI hooks to extend reporting, streamline workflows, and tailor your test automation dashboard. +--- + +# Plugin developers guide + +From version 5 the ReportPortal supports custom plugins that can be uploaded to the system as `.jar` files on _plugins_ page or via API. + +There are guides for Plugin development from API and UI perspective. diff --git a/versioned_docs/version-26.1/developers-guides/ReportPortalAPI.mdx b/versioned_docs/version-26.1/developers-guides/ReportPortalAPI.mdx new file mode 100644 index 0000000000..40dea8c8bb --- /dev/null +++ b/versioned_docs/version-26.1/developers-guides/ReportPortalAPI.mdx @@ -0,0 +1,14 @@ +--- +sidebar_label: ReportPortal API +description: Explore ReportPortal's REST API to automate test reporting, manage projects, and integrate with CI/CD pipelines, enhancing your testing workflow efficiency. +--- + +# ReportPortal API + +To find API documentation for our test automation reporting platform, log in to the ReportPortal application and open the API section in the left menu. + + + +The API documentation for different versions can also be accessed from the [link](https://developers.reportportal.io/api-docs/) at the top of the page. + + diff --git a/versioned_docs/version-26.1/developers-guides/ReportingDevelopersGuide.md b/versioned_docs/version-26.1/developers-guides/ReportingDevelopersGuide.md new file mode 100644 index 0000000000..18d8b12cd2 --- /dev/null +++ b/versioned_docs/version-26.1/developers-guides/ReportingDevelopersGuide.md @@ -0,0 +1,651 @@ +--- +sidebar_label: Reporting developers guide +description: Learn how to integrate test results into ReportPortal using HTTP requests, manage launches, and handle logs for effective test reporting. +--- + +# Reporting developers guide + +## Preconditions + +Let's imagine we have the following tests structure: + +``` +(Suite) Services + (Test) PluginServiceTest + (Step) uploadPlugin + (Step) updatePlugin + (Step) removePlugin + (Test) UserServiceTest + (Step) createUser + (Step) updateUser + (Step) deleteUser +``` + +So our goal is run the tests and send results to ReportPortal. +We can interact with ReportPortal API instance trough HTTP requests. + +The main flow is set of HTTP requests: +1. Start launch +2. Start test item +3. Save log with attachment if necessary +4. Finish test item +5. Finish launch + +Steps 2-4 should execute for each test item in structure. + +Let's assume that our ReportPortal instance deployed at `http://rp.com`. And our project name is `rp_project`. + +Also we need token to get access to API. There are two ways to retrieve it. + +## Retrieving api token + +#### Using UI + +You can find it in profile (`http://rp.com/ui/#user-profile`). + +#### Using UAT service + +First of all you need UI-token. You can get it sending POST request to `http://rp.com/uat/sso/oauth/token` with user credentials. + +```shell +curl --header "Content-Type: application/x-www-form-urlencoded" \ + --request POST \ + --data "grant_type=password&username=default&password=1q2w3e" \ + --user "ui:uiman" \ + http://rp.com/uat/sso/oauth/token +``` + +Response will contain `access_token` field which is UI-token + +```json +{ + "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NzU5MDA0NDgsInVzZXJfbmFtZSI6ImRlZmF1bHQiLCJhdXRob3JpdGllcyI6WyJST0xFX1VTRVIiXSwianRpIjoiOGQxZmUxOGUtNWY4NC00YTcwLWEwMTctNDBmZTU4ZmY3MjU3IiwiY2xpZW50X2lkIjoidWkiLCJzY29wZSI6WyJ1aSJdfQ.-5INLZnYJhNLwU5BTBuEDd0SBPoRGLBX6uX03kaEwLs", + "token_type": "bearer", + "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJkZWZhdWx0Iiwic2NvcGUiOlsidWkiXSwiYXRpIjoiOGQxZmUxOGUtNWY4NC00YTcwLWEwMTctNDBmZTU4ZmY3MjU3IiwiZXhwIjoxNTc4NDg4ODQ4LCJhdXRob3JpdGllcyI6WyJST0xFX1VTRVIiXSwianRpIjoiMGQyZDdiNTEtNGE3Mi00NjEwLTgxYmUtY2JmYjZhODhjNTgxIiwiY2xpZW50X2lkIjoidWkifQ.YOcpWlQSgF3LuskIqXgasjKvawbM_XP_I2oNJcgt9mM", + "expires_in": 3600, + "scope": "ui", + "jti": "8d1fe18e-5f84-4a70-a017-40fe58ff7257" +} +``` + +Next step is retrieve API Key that lives longer that UI-token. + +```shell +curl http://localhost:8080/api/users/{user_id}/api-keys \ + --request POST \ + --header "Content-Type: application/json" \ + --header "Authorization: Bearer {token}" \ + --data '{"name": "Token name"}' +``` + +Use `api_key` from response as a bearer token in the `Authorization` header. + +## Start launch + +To start launch you should send request to the following endpoint: +POST `/api/{version}/{projectName}/launch` + +Start launch request model contains the following attributes: + +| Attribute | Required | Description | Default value | Examples | +|:-----------:|----------|--------------------------------------------------------------------------|-------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| name | Yes | Name of launch | - | AutomationRun | +| startTime | Yes | Launch start time | - | 2019-11-22T11:47:01+00:00 (ISO 8601); Fri, 22 Nov 2019 11:47:01 +0000 (RFC 822, 1036, 1123, 2822); 2019-11-22T11:47:01+00:00 (RFC 3339); 1574423221000 (Unix Timestamp) | +| description | No | Description of launch | empty | Services tests | +| uuid | No | Launch uuid (string identificator) | auto generated(if not present in request) | 69dc75cd-4522-44b9-9015-7685ec0e1abb | +| attributes | No | Launch attributes. Pairs of key and value | empty | build:3.0.1, os:bionic | +| mode | No | Launch mode. Allowable values 'default' or 'debug' | default | DEFAULT | +| rerun | No | Rerun mode. Allowable values 'true' of 'false' | false | false | +| rerunOf | No | Rerun mode. Specifies launch to be reruned. Uses with 'rerun' attribute. | empty | 694e1549-b8ab-4f20-b7d8-8550c92431b0 | + +Start launch response contains the following attributes: + +| Attribute | Required | Description | Examples | +|------------|----------|--------------------------|--------------------------------------| +| id | Yes | UUID of created launch | 1d1fb22e-01f7-4ac9-9ebc-f020d8fe93ff | +| number (*) | No | Number of created launch | 1 | + +`(*)` Field is not present in case using async endpoints + +So full request to start our launch looks like + +```shell +curl --header "Content-Type: application/json" \ + --header "Authorization: Bearer 039eda00-b397-4a6b-bab1-b1a9a90376d1" \ + --request POST \ + --data '{"name":"rp_launch","description":"My first launch on RP","startTime":"1574423221000","mode":"DEFAULT","attributes":[{"key":"build","value":"0.1"},{"value":"test"}]}' \ + http://rp.com/api/v1/rp_project/launch +``` + +Where body is the following json: + +```json +{ + "name": "rp_launch", + "description": "My first launch on RP", + "startTime": "1574423221000", + "mode": "DEFAULT", + "attributes": [ + { + "key": "build", + "value": "0.1" + }, + { + "value": "test" + } + ] +} +``` + +In the response we can see `id` and `number` if launch started successfully or an error if something went wrong. + +```json +{ + "id": "96d1bc02-6a3f-451e-b706-719149d51ce4", + "number": 1 +} +``` +Value of `id` field should save somewhere. It is obligatory for report test items under this launch and will be used later. + +## Start root(suite) item + +Now we have created launch and can report items under it. +To start root item you should send request to the following endpoint: +POST `/api/{version}/{projectName}/item` + +Start test item request model contains the following attributes: + +| Attribute | Required | Description | Default value | Examples | +|-------------|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| name | Yes | Name of test item | - | Logging Tests | +| startTime | Yes | Test item start time | - | 2019-11-22T11:47:01+00:00 (ISO 8601); Fri, 22 Nov 2019 11:47:01 +0000 (RFC 822, 1036, 1123, 2822); 2019-11-22T11:47:01+00:00 (RFC 3339); 1574423221000 (Unix Timestamp) | +| type | Yes | Type of test item. Allowable values: "suite", "story", "test", "scenario", "step", "before_class", "before_groups", "before_method", "before_suite", "before_test", "after_class", "after_groups", "after_method", "after_suite", "after_test" | - | suite | +| launchUuid | Yes | Parent launch UUID | - | 96d1bc02-6a3f-451e-b706-719149d51ce4 | +| description | No | Test item description | empty | Tests of loggers | +| attributes | No | Test item attributes. Pairs of key and value | empty | most failed, os:android | +| uuid | No | Test item UUID | auto generated | e9ca837e-966c-412e-bf8b-e879510d99d5 | +| codeRef | No | Physical location of test item | empty | com.rpproject.tests.LoggingTests | +| parameters | No | Set of parameters (for parametrized tests) | empty | logger:logback | +| uniqueId | No | | auto generated | auto:cd5a6c616d412b6739738951c922377f | +| retry | No | Used to report retry of test. Allowable values: 'true' or 'false' | false | false | +| hasStats | No | | true | true | + +Start test item response contains the following attributes: + +| Attribute | Required | Example | +|-----------|----------|--------------------------------------| +| id | Yes | 7189ec02-4c36-4e36-9f90-5a9b31dcbdba | + +So full request to start suite test looks like + + ```shell +curl --header "Content-Type: application/json" \ + --header "Authorization: Bearer 039eda00-b397-4a6b-bab1-b1a9a90376d1" \ + --request POST \ + --data '{"name":"Services","startTime":"1574423234000","type":"suite","launchUuid":"96d1bc02-6a3f-451e-b706-719149d51ce4","description":"Services tests"}' \ + http://rp.com/api/v1/rp_project/item +``` + +Where body is the following json: + +```json +{ + "name": "Services", + "startTime": "1574423234000", + "type": "suite", + "launchUuid": "96d1bc02-6a3f-451e-b706-719149d51ce4", + "description": "Services tests" +} +``` + +And in the response we get `id` of created test item: + +```json +{ + "id": "1e183148-c79f-493a-a615-2c9a888cb441" +} +``` + +Also we should save it to report child items under this one + +## Start child(container) item + +Next test item will be child for suite test item and it also will be parent for few step items. +It will be container item. +To start child item we need know launch UUID and parent test item UUID. +We should call the following endpoint: +POST `/api/{version}/{projectName}/item/{parentItemUuid}` + +Request and response model the same as for parent item. + +Full request: + +```shell +curl --header "Content-Type: application/json" \ + --header "Authorization: Bearer 039eda00-b397-4a6b-bab1-b1a9a90376d1" \ + --request POST \ + --data '{"name":"PluginServiceTest","startTime":"1574423236000","type":"test","launchUuid":"96d1bc02-6a3f-451e-b706-719149d51ce4","description":"Plugin tests"}' \ + http://rp.com/api/v1/rp_project/item/1e183148-c79f-493a-a615-2c9a888cb441 +``` + +Where body is: + +```json +{ + "name": "PluginServiceTest", + "startTime": "1574423236000", + "type": "test", + "launchUuid": "96d1bc02-6a3f-451e-b706-719149d51ce4", + "description": "Plugin tests" +} +``` + +And we have a response: + +```json +{ + "id": "bb237b98-22b0-4289-9490-9bb29215fe5e" +} +``` + +## Start child(step) item + +Now we are going to start another final test item in our structure. + +```shell +curl --header "Content-Type: application/json" \ + --header "Authorization: Bearer 039eda00-b397-4a6b-bab1-b1a9a90376d1" \ + --request POST \ + --data '{"name":"uploadPlugin","startTime":"1574423237000","type":"step","launchUuid":"96d1bc02-6a3f-451e-b706-719149d51ce4","description":"Uploading plugin"}' \ + http://rp.com/api/v1/rp_project/item/bb237b98-22b0-4289-9490-9bb29215fe5e +``` + +With body: + +```json +{ + "name": "uploadPlugin", + "startTime": "1574423237000", + "type": "step", + "launchUuid": "96d1bc02-6a3f-451e-b706-719149d51ce4", + "description": "Uploading plugin" +} +``` + +And response: + +```json +{ + "id": "22e55c62-d028-4b49-840f-195d7a48b114" +} +``` + +## Start child(nested step) item + +Test item without statistics is called `Nested step` and required for grouping logs and other `nested steps`(can be expanded and collapsed on the UI-view). `Nested step` has the same body request as common test item and defined only by additional field `hasStats=false`. + +```shell +curl --header "Content-Type: application/json" \ + --header "Authorization: Bearer 039eda00-b397-4a6b-bab1-b1a9a90376d1" \ + --request POST \ + --data '{"name":"nestedItem","startTime":"1574423237000","type":"step","hasStats":false,"launchUuid":"96d1bc02-6a3f-451e-b706-719149d51ce4"}' \ + http://rp.com/api/v1/rp_project/item/22e55c62-d028-4b49-840f-195d7a48b114 +``` + +With body: + +```json +{ + "name": "nestedItem", + "startTime": "1574423237000", + "type": "step", + "hasStats": false, + "launchUuid": "96d1bc02-6a3f-451e-b706-719149d51ce4" +} +``` + +And response: + +```json +{ + "id": "37b77h32-t028-7b49-842f-195d7b48s114" +} +``` + +See Nested Step usage implementation and visual appearance ([Java based example](https://github.com/reportportal/client-java/wiki/Nested-steps)) + +## Finish child(nested step) item + +We can finish `Nested step`. +To do that we should send the following request: +PUT `/api/{version}/{projectName}/item/{itemUuid}` + +Finish `Nested step` request model: + +| Attribute | Required | Description | Default value | Example | +|-------------|----------|-----------------------------------------------------------------------------------------------------------|---------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| endTime | Yes | Test item end time | - | 2019-11-22T11:47:01+00:00 (ISO 8601); Fri, 22 Nov 2019 11:47:01 +0000 (RFC 822, 1036, 1123, 2822); 2019-11-22T11:47:01+00:00 (RFC 3339); 1574423221000 (Unix Timestamp) | +| launchUuid | Yes | Parent launch UUID | - | 48ecc273-032f-44d4-822a-66e494e9b1e8 | +| status | No | Test item status. Allowable values: "passed", "failed", "stopped", "skipped", "interrupted", "cancelled". | - | failed | +| description | No | Test item description. Overrides description from start request. Not displayed on the UI-view for Nested Steps | empty | Test item description on finish | + +If item finished successfully in the response will be message with item uuid. + +Full request: + + ```shell +curl --header "Content-Type: application/json" \ + --header "Authorization: Bearer 039eda00-b397-4a6b-bab1-b1a9a90376d1" \ + --request PUT \ + --data '{"endTime":"1574423239000","status":"failed","launchUuid":"96d1bc02-6a3f-451e-b706-719149d51ce4"}' \ + http://rp.com/api/v1/rp_project/item/37b77h32-t028-7b49-842f-195d7b48s114 +``` + +With body: + +```json +{ + "endTime": "1574423239000", + "status": "failed", + "launchUuid": "96d1bc02-6a3f-451e-b706-719149d51ce4" +} +``` + +## Finish child item + +We are not going to report more test items under this one, so we can finish it. +To do that we should send the following request: +PUT `/api/{version}/{projectName}/item/{itemUuid}` + +Finish test item request model: + +| Attribute | Required | Description | Default value | Example | +|-------------|----------|-----------------------------------------------------------------------------------------------------|---------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| endTime | Yes | Test item end time | - | 2019-11-22T11:47:01+00:00 (ISO 8601); Fri, 22 Nov 2019 11:47:01 +0000 (RFC 822, 1036, 1123, 2822); 2019-11-22T11:47:01+00:00 (RFC 3339); 1574423221000 (Unix Timestamp) | +| launchUuid | Yes | Parent launch UUID | - | 48ecc273-032f-44d4-822a-66e494e9b1e8 | +| status | No | Test item status. Allowable values: "passed", "failed", "stopped", "skipped", "interrupted", "cancelled". | - | failed | +| description | No | Test item description. Overrides description from start request. | empty | Test item description on finish | +| attributes | No | Test item attributes. Pairs of key and value. Overrides attributes on start | empty | most failed, os:android | +| retry | No | Used to report retry of test. Allowable values: 'true' or 'false' | false | false | +| issue | No | Issue of current test item | empty | Will be described below in separate table | + +Issue part for finish test item model: + +| Attribute | Required | Description | Default value | Example | +|----------------------|----------|-------------------------------------------------------------------------------------------------------------|---------------|-------------------------------------------| +| issueType | Yes | Issue type locator. Allowable values: "pb***", "ab***", "si***", "ti***", "nd001" or "NOT_ISSUE". Where *** is locator id. | - | pb001 | +| comment | No | Issue comment | empty | Framework issue. Script outdated | +| autoAnalyzed | No | Is issue was submitted by auto analyzer | false | false | +| ignoreAnalyzer | No | Is issue should be ignored during auto analysis | false | false | +| externalSystemIssues | No | Set of external system issues | empty | Will be described in separate table below | + +External system issue: + +| Attribute | Required | Description | Default value | Example | +|------------|----------|----------------------------------------|---------------|-----------------------------| +| ticketId | No | Id of ticket in external system | empty | ABCD1234 | +| submitDate | No | Ticket submit date as timestamp | empty | 1574696194000 | +| brsUrl | No | URL of external system | empty | http://example.com | +| btsProject | No | Project name in external system | empty | ABCD | +| url | No | URL of ticket in external system issue | empty | http://example.com/ABCD1234 | + +If item finished successfully in the response will be message with item uuid. + +Full request: + + ```shell +curl --header "Content-Type: application/json" \ + --header "Authorization: Bearer 039eda00-b397-4a6b-bab1-b1a9a90376d1" \ + --request PUT \ + --data '{"endTime":"1574423239000","status":"failed","launchUuid":"96d1bc02-6a3f-451e-b706-719149d51ce4","issue":{"issueType":"pb001","comment":"Some critical issue"}}' \ + http://rp.com/api/v1/rp_project/item/22e55c62-d028-4b49-840f-195d7a48b114 +``` + +With body: + +```json +{ + "endTime": "1574423239000", + "status": "failed", + "launchUuid": "96d1bc02-6a3f-451e-b706-719149d51ce4", + "issue": { + "issueType": "pb001", + "comment": "Some critical issue" + } +} +``` + +We can report other child items (`updatePlugin`, `removePlugin`) the same way as described above. +All skipped and failed items are marked as `To Investigate` by default. To mark them as not issue just send a special issue type: +`"issue": {"issueType": "NOT_ISSUE"}`. + +## Finish parent(container) item + +After that we should finish their parent item. +We can do it the same way as for child items. + +```shell +curl --header "Content-Type: application/json" \ + --header "Authorization: Bearer 039eda00-b397-4a6b-bab1-b1a9a90376d1" \ + --request PUT \ + --data '{"endTime":"1574423241000","launchUuid":"96d1bc02-6a3f-451e-b706-719149d51ce4"}' \ + http://rp.com/api/v1/rp_project/item/bb237b98-22b0-4289-9490-9bb29215fe5e +``` + +With body: + +```json +{ + "endTime": "1574423241000", + "launchUuid": "96d1bc02-6a3f-451e-b706-719149d51ce4" +} +``` + +## Save single log without attachment + +We can save logs for test items. +For example let's try to save log for `uploadPlugin` test item. +It is not necessary to save log when test item already finished. +We can create log for test item with `in_progress` status. + +Common endpoint: POST `/api/{version}/{projectName}/log` + +And it has the following request model: + +| Attribute | Required | Description | Default value | Example | +|------------|----------|--------------------------------------------------------------------------------------------------------------------------------|---------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| launchUuid | Yes | Launch UUID | - | e80b62e1-b297-47a0-be22-5a4a25920c0a | +| time | Yes | Log time | - | 2019-11-22T11:47:01+00:00 (ISO 8601); Fri, 22 Nov 2019 11:47:01 +0000 (RFC 822, 1036, 1123, 2822); 2019-11-22T11:47:01+00:00 (RFC 3339); 1574423221000 (Unix Timestamp) | +| itemUuid | No | Test item UUID | empty | fb2a012f-5996-45a0-b3bb-d8210b4fb980 | +| message | No | Log message | empty | [Forwarding findElement on session 477bee808ca0c415a7aae2de2edc5cc9 to remote] DEBUG o.a.h.c.protocol.RequestAddCookies - CookieSpec selected: default | +| level | No | Log level. Allowable values: error(40000), warn(30000), info(20000), debug(10000), trace(5000), fatal(50000), unknown(60000). You can create a custom log type with any log level. | ? | error | + +Response model: + +| Attribute | Required | Example | +|-----------|----------|--------------------------------------| +| id | Yes | 43f80000-7ca8-4fed-9da3-0759867a847c | + +Full request: + +```shell +curl --header "Content-Type: application/json" \ + --header "Authorization: Bearer 039eda00-b397-4a6b-bab1-b1a9a90376d1" \ + --request POST \ + --data '{"launchUuid":"96d1bc02-6a3f-451e-b706-719149d51ce4","itemUuid":"22e55c62-d028-4b49-840f-195d7a48b114","time":"1574423245000","message":"An error occurred while connecting to the server [Nested exception is java.lang.NoClassDefFoundError]","level":"error"}' \ + http://rp.com/api/v1/rp_project/log +``` + +Where body is: + +```json +{ + "launchUuid": "96d1bc02-6a3f-451e-b706-719149d51ce4", + "itemUuid": "22e55c62-d028-4b49-840f-195d7a48b114", + "time": "1574423245000", + "message": "An error occurred while connecting to the server [Nested exception is java.lang.NoClassDefFoundError]", + "level": "error" +} +``` + +## Batch save logs + +It is convenient to send all logs with attachments using only one request. +Let's assume we want to save two logs with attachments (file1.pdf and file2.txt) + +To the request model adds one more complex attribute `file` with the following parameters: + +| Attribute | Required | Description | Default value | Example | +|-------------|----------|-------------------|---------------|-----------------| +| name | No | File name | - | report.pdf | +| content | No | Byte array | - | - | +| contentType | No | File content type | - | application/pdf | + +Response model contains an array of the following objects: + +| Attribute | Required | Description | Example | +|----------------|----------|-------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| id | No | UUID of created log | 77542c07-970c-481d-ad5a-b4ccd15ae178 | +| message (*) | No | Exception message if error occurrs | ReportPortalException: Binary data cannot be saved. There is no request part or file with name lin_av.png | +| stackTrace (*) | No | Stack trace of exception if error occurrs | com.epam.ta.reportportal.exception.ReportPortalException: Binary data cannot be saved. There is no request part or file with name lin_av.png\r\n\tat com.epam.ta.reportportal.commons.validation.ErrorTypeBasedRuleValidator.verify(ErrorTypeBasedRuleValidator.java:37)\r\n\tat com.epam.ta.reportportal.ws.controller.LogController.createLog(LogController.java:133) | + +`(*)` Fields are present only if error occurred. + +Full request: + +```shell script +curl --header "Content-Type: multipart/form-data" \ + --header "Authorization: Bearer 039eda00-b397-4a6b-bab1-b1a9a90376d1" \ + --request POST \ + --form 'json_request_part=[{"itemUuid":"9c7632a2-272e-4c24-9627-d7d509de7620","launchUuid":"96d1bc02-6a3f-451e-b706-719149d51ce4","time":"2019-11-06T15:50:53.187Z","message":"Some critical exception","level": "info","file":{"name":"file1.pdf"}},{"itemUuid":"16fb3d7f-ddce-407a-8e52-464a596e6da1","launchUuid":"96d1bc02-6a3f-451e-b706-719149d51ce4","time":"2019-11-06T15:50:53.187Z","message":"java.lang.NullPointerException","level": "info","file":{"name":"file2.txt"}}]; type=application/json' \ + --form "file=@/path/to/file1.pdf" \ + --form "file=@/path/to/file2.txt" \ + http://rp.com/api/v1/rp_project/log +``` + +With json body: + +```json +[ + { + "itemUuid": "9c7632a2-272e-4c24-9627-d7d509de7620", + "launchUuid": "96d1bc02-6a3f-451e-b706-719149d51ce4", + "time": "2019-11-06T15:50:53.187Z", + "message": "Some critical exception", + "level": 40000, + "file": { + "name": "file1.pdf" + } + }, + { + "itemUuid": "16fb3d7f-ddce-407a-8e52-464a596e6da1", + "launchUuid": "96d1bc02-6a3f-451e-b706-719149d51ce4", + "time": "2019-11-06T15:50:53.187Z", + "message": "java.lang.NullPointerException", + "level": 40000, + "file": { + "name": "file2.txt" + } + } +] +``` + +So we successfully reported logs with file attachments and can see in response: + +```json +{ + "responses": [ + { + "id": "ec1b0153-a00e-4c61-b6bf-ac0578c2ed43" + }, + { + "id": "b7661cb6-7e1a-40e2-8b96-59de41aa96e8" + } + ] +} +``` + +## Save launch log + +It is possible to report log attached to launch. +To do that use the same log endpoint, but in body do not send `itemUuid` + +```json +{ + "launchUuid": "96d1bc02-6a3f-451e-b706-719149d51ce4", + "time": "2019-11-06T15:50:53.187Z", + "message": "java.lang.NullPointerException", + "level": 40000, + "file": { + "name": "file2.txt" + } +} +``` + +The same way we can report all the rest test items. + +## Finish root(suite) item + +Finishing root item can be done the same way as [finish parent item](#finish-parentcontainer-item) and [finish child item](#finish-child-item). +But we should specify its uuid in request parameter. + +```shell script +curl --header "Content-Type: application/json" \ + --header "Authorization: Bearer 039eda00-b397-4a6b-bab1-b1a9a90376d1" \ + --request PUT \ + --data '{"endTime":"1574423247000","launchUuid":"96d1bc02-6a3f-451e-b706-719149d51ce4"}' \ + http://rp.com/api/v1/rp_project/item/1e183148-c79f-493a-a615-2c9a888cb441 +``` + +```json +{ + "endTime": "1574423247000", + "launchUuid": "96d1bc02-6a3f-451e-b706-719149d51ce4" +} +``` + +## Finish launch + +When we finished all test items, it's time to finish launch. +Endpoint: + +PUT `/api/{version}/{projectName}/launch/{launchUuid}/finish` + +Finish request model: + +| Attribute | Required | Description | Default value | Examples | +|-------------|----------|-------------------------------------------------------------------------------------------------|-------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| endTime | Yes | Launch end time | - | 2019-11-22T11:47:01+00:00 (ISO 8601); Fri, 22 Nov 2019 11:47:01 +0000 (RFC 822, 1036, 1123, 2822); 2019-11-22T11:47:01+00:00 (RFC 3339); 1574423221000 (Unix Timestamp) | +| status | No | Launch status. Allowable values: "passed", "failed", "stopped", "skipped", "interrupted", "cancelled" | calculated from children test items | failed | +| description | No | Launch description. Overrides description on start | empty | service test | +| attributes | No | Launch attributes. Pairs of key and value. Overrides attributes on start | empty | | + +Finish response model + +| Attribute | Required | Description | Example | +|-----------|----------|-------------------|-------------------------------------------------| +| id | Yes | Launch UUID | 6f084c4d-edb5-4691-90ba-d9e819ba61ba | +| number (*)| No | Launch number | 1 | +| link (*) | No | UI link to launch | http://rp.com/ui/#rp_project/launches/all/73336 | + +`(*)` - In case async endpoint field is missing or empty + +Full request: + +```shell script +curl --header "Content-Type: application/json" \ + --header "Authorization: Bearer 039eda00-b397-4a6b-bab1-b1a9a90376d1" \ + --request PUT \ + --data '{"endTime":"1574423255000"}' \ + http://rp.com/api/v1/rp_project/launch/96d1bc02-6a3f-451e-b706-719149d51ce4/finish +``` + +Where body is: + +```json +{ + "endTime": "1574423255000" +} +``` + +## [Example](https://github.com/ihar-kahadouski/dev-guide/tree/master/bash-example) diff --git a/versioned_docs/version-26.1/developers-guides/RerunDevelopersGuide.mdx b/versioned_docs/version-26.1/developers-guides/RerunDevelopersGuide.mdx new file mode 100644 index 0000000000..ec350cc863 --- /dev/null +++ b/versioned_docs/version-26.1/developers-guides/RerunDevelopersGuide.mdx @@ -0,0 +1,173 @@ +--- +sidebar_label: Rerun developers guide +description: Implement test rerun functionality in ReportPortal for selective test execution reporting and failure investigation workflows. +--- + +# Rerun developers guide + +## What is rerun + +Let's imagine we have some set of tests: + + + +After run we can see few failed items: + + + + + +We are fixing issues and want to launch tests again. But running all the tests can take a lot of time. So it would be better to run only failed tests from previous launch. + +Now we have the following: + + + + + +So what do we have here? Two launches with the same tests that was just be started again, but they are have difference in passed and failed items. And it is hard to find which test was fixed and which was not. + +The main idea of reruns is to restart the same launch and trace changes between them not creating new launch every time. + +Let's try to report the same launches using rerun. + + + +We have only one launch with last run data + + + +On the step view we can see that items with names `getActivitiesForProject`, `getActivityPositive` and `getTestITemActivitiesPositive` have retries. Items `getActivityPositive` and `getTestITemActivitiesPositive` was fixed and `getActivitiesForProject` is still failing. + +## How to start rerun + +### Latest launch + +#### Using API + +To start launch rerun you should call [default start launch endpoint](/developers-guides/ReportingDevelopersGuide#start-launch) adding `"rerun"=true` parameter in the request body. + +```json +{ + "name": "launch_name", + "description": "some description", + "mode": "DEFAULT", + "rerun": true +} +``` +And response will contain found launch `id` for asynchronous endpoint or `id` and `number` for synchronous. + +```json +{ + "id": "89f6d409-bee0-428e-baca-4848f86c06e7", + "number": 4 +} +``` + +#### Using agent + +To start launch rerun add `rp.rerun=true` to `reportportal.properties` file. No need to change anything else(name, project, etc.). + +```properties +rp.endpoint=https://rp.com +rp.apiKey=caccb4bd-f6e7-48f2-af3a-eca0f566b3bd +rp.launch=rerun_test_example +rp.project=reporting-test +rp.reporting.async=true +rp.rerun=true +``` + +#### Handling + +System tries to find the latest launch on the project with same name as in request. + +If launch found - system updates the following attributes (if they are present in request and they are different from stored): +- Mode +- Description +- Attributes +- UUID +- Status = `IN_PROGRESS` + +If system cannot find launch with the same name - system throws error with `404` code. + +### Specified launch + +#### Using API + +To start launch rerun you should call [default start launch endpoint](/developers-guides/ReportingDevelopersGuide#start-launch) adding `"rerun"=true` and `"rerunOf"=launch_uuid` parameters in the request body. Where `launch_uuid` is UUID of launch that have to be reruned. + +```json +{ + "name": "launch_name", + "description": "some description", + "mode": "DEFAULT", + "rerun": true, + "rerunOf": "79446272-a439-45f9-8073-5ca7869f140b" +} +``` + +And response will contain found launch `id` for asynchronous endpoint or `id` and `number` for synchronous. + +```json +{ + "id": "79446272-a439-45f9-8073-5ca7869f140b", + "number": 4 +} +``` + +#### Using agent + +To start a launch rerun using the agent, set `rp.rerun=true` and `rp.rerun.of=launch_uuid` in the `reportportal.properties` file. In the latest versions of ReportPortal server always returns the same launch UUID in the response for rerun launch, so no need to set anything else if you want to preserve it. + +Here's an example of what your `reportportal.properties` file might look like: + +```properties +rp.endpoint=https://rp.com +rp.apiKey=caccb4bd-f6e7-48f2-af3a-eca0f566b3bd +rp.launch=rerun_test_example +rp.project=reporting-test +rp.reporting.async=true +rp.rerun=true +rp.rerun.of=79446272-a439-45f9-8073-5ca7869f140b +``` + +In this example, `79446272-a439-45f9-8073-5ca7869f140b` is the UUID of the launch you want to rerun. + +#### Handling + +The same as for [specified launch](#specified-launch). + +## Test Items behavior + +There are no differences in API calls for starting and finishing items inside rerun launch. But such items handling is different. + +### Container types (has children) + +System tries to find item with the same name, set of parameters and under the same path. + +If such item found - the following attributes will be updated: + +- Description +- UUID +- Status = `IN_PROGRESS` + +If not - new item will be created. + +### Step types (without children) + +System tries to find item with the same name, set of parameters and under the same path. + +If such item found - retry of the item will be created. + +If not - new item will be created. + +## [Example](https://github.com/reportportal/examples-java) + + + + + + + + + diff --git a/versioned_docs/version-26.1/developers-guides/RetriesReporting.mdx b/versioned_docs/version-26.1/developers-guides/RetriesReporting.mdx new file mode 100644 index 0000000000..95256e22f0 --- /dev/null +++ b/versioned_docs/version-26.1/developers-guides/RetriesReporting.mdx @@ -0,0 +1,111 @@ +--- +sidebar_label: Retries reporting +description: Report test retries and retry attempts in ReportPortal for comprehensive test execution reporting and failure analysis. +--- + +# Retries reporting + +Some frameworks allow to retry `Test` execution according to provided conditions (TestNG) or just retry it predefined number of times. +First execution is a simple `TestItem` and next ones are called `Retries`. +In ReportPortal these items are grouped and displayed as a sequence of executions for the same `Test`: + + + +To find retries in ReportPortal, first click the launch that contains retries. + + + +Then, go to the Step level. + + + +When you click on the `retries` link you can switch between `Retries` and see their logs: + + + +On the Log page of test item you can also switch between `Retries`: + + + + + +## Retries reporting + +Common child `Test item` request ([check reporting dev guide](/developers-guides/ReportingDevelopersGuide)) looks like: + +```shell +curl --header "Content-Type: application/json" \ + --header "Authorization: Bearer 039eda00-b397-4a6b-bab1-b1a9a90376d1" \ + --request POST \ + --data '{"name":"example step","startTime":"1574423237000","type":"step","launchUuid":"","description":"Item that should be retried"}' \ + http://rp.com/api/v1/rp_project/item/ +``` + +With body: + +```json +{ + "name": "example step", + "startTime": "1574423237000", + "type": "step", + "launchUuid": "", + "description": "Item that should be retried" +} +``` + +And response: + +```json +{ + "id": "uuid-of-the-first-step" +} +``` + +Request for a `retry` looks the same, but has field `retry=true`: + +```json +{ + "name": "example step", + "startTime": "1574423237100", + "type": "step", + "launchUuid": "", + "description": "Item that should be retried", + "retry": true +} +``` + +To be displayed as a `retry` reported `Test item` should have the same `name`, `parentUuid`, `launchUuid` and `uniqueId` (if you provided it explicitly). +If one of mentioned fields is not matched (for example `Test item` with the same `name` but different `uniqueId` and vise versa) `Test item`s won't be grouped as retries. +Also `Test item` with type `Suite` cannot be reported as a `retry`. + +Retries handling triggered only if `Test item` has `retry=true` flag in the request. For example: + +First request will trigger retries handling, but if it's the first reported `Test item` it won't be a `retry`: +```json +{ + "name": "example step", + "startTime": "1574423237100", + "type": "step", + "launchUuid": "", + "description": "Item that should be retried", + "retry": true +} +``` + +Second request won't trigger retries handling, because `retry=false` is specified (or this field isn't provided) in the request: +```json +{ + "name": "example step", + "startTime": "1574423237100", + "type": "step", + "launchUuid": "", + "description": "Item that should be retried", + "retry": false +} +``` + +As a result 2 separate `Test items` will be displayed, so ORDER of sent requests matters (if send this items in reversed order they will be grouped as `retries`). + +In ReportPortal the only `Test item` from the `Retries` group that has statistics and can have an `issue` attached is the one with max `startTime`. +In previous requests `startTime` was `1574423237000` for the first one and `1574423237100` for the second one, so the second one is a 'main' `Test Item` +with statistics and `issue` (if attached). diff --git a/versioned_docs/version-26.1/developers-guides/_category_.json b/versioned_docs/version-26.1/developers-guides/_category_.json new file mode 100644 index 0000000000..2bac6d2c22 --- /dev/null +++ b/versioned_docs/version-26.1/developers-guides/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Developers guides", + "position": "10", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.1/developers-guides/img/analyzer/ApiAnalyzer.png b/versioned_docs/version-26.1/developers-guides/img/analyzer/ApiAnalyzer.png new file mode 100644 index 0000000000..729f142db8 Binary files /dev/null and b/versioned_docs/version-26.1/developers-guides/img/analyzer/ApiAnalyzer.png differ diff --git a/versioned_docs/version-26.1/developers-guides/img/analyzer/Exchange.png b/versioned_docs/version-26.1/developers-guides/img/analyzer/Exchange.png new file mode 100644 index 0000000000..4815f96722 Binary files /dev/null and b/versioned_docs/version-26.1/developers-guides/img/analyzer/Exchange.png differ diff --git a/versioned_docs/version-26.1/developers-guides/img/analyzer/Queues.png b/versioned_docs/version-26.1/developers-guides/img/analyzer/Queues.png new file mode 100644 index 0000000000..b0be0205ed Binary files /dev/null and b/versioned_docs/version-26.1/developers-guides/img/analyzer/Queues.png differ diff --git a/versioned_docs/version-26.1/developers-guides/img/api/ApiDocs.png b/versioned_docs/version-26.1/developers-guides/img/api/ApiDocs.png new file mode 100644 index 0000000000..484108adaf Binary files /dev/null and b/versioned_docs/version-26.1/developers-guides/img/api/ApiDocs.png differ diff --git a/versioned_docs/version-26.1/developers-guides/img/api/ApiDocumentation.png b/versioned_docs/version-26.1/developers-guides/img/api/ApiDocumentation.png new file mode 100644 index 0000000000..9c35acbf51 Binary files /dev/null and b/versioned_docs/version-26.1/developers-guides/img/api/ApiDocumentation.png differ diff --git a/versioned_docs/version-26.1/developers-guides/img/async/Consuming.png b/versioned_docs/version-26.1/developers-guides/img/async/Consuming.png new file mode 100644 index 0000000000..ab49374a88 Binary files /dev/null and b/versioned_docs/version-26.1/developers-guides/img/async/Consuming.png differ diff --git a/versioned_docs/version-26.1/developers-guides/img/async/ExchangesQueues.png b/versioned_docs/version-26.1/developers-guides/img/async/ExchangesQueues.png new file mode 100644 index 0000000000..e5ef3a9f40 Binary files /dev/null and b/versioned_docs/version-26.1/developers-guides/img/async/ExchangesQueues.png differ diff --git a/versioned_docs/version-26.1/developers-guides/img/async/FinishLaunch.png b/versioned_docs/version-26.1/developers-guides/img/async/FinishLaunch.png new file mode 100644 index 0000000000..4f6c1b7bf9 Binary files /dev/null and b/versioned_docs/version-26.1/developers-guides/img/async/FinishLaunch.png differ diff --git a/versioned_docs/version-26.1/developers-guides/img/async/SimpleScheme.png b/versioned_docs/version-26.1/developers-guides/img/async/SimpleScheme.png new file mode 100644 index 0000000000..6044151c75 Binary files /dev/null and b/versioned_docs/version-26.1/developers-guides/img/async/SimpleScheme.png differ diff --git a/versioned_docs/version-26.1/developers-guides/img/attachments/AttachmentsGuide1.png b/versioned_docs/version-26.1/developers-guides/img/attachments/AttachmentsGuide1.png new file mode 100644 index 0000000000..692d2b281f Binary files /dev/null and b/versioned_docs/version-26.1/developers-guides/img/attachments/AttachmentsGuide1.png differ diff --git a/versioned_docs/version-26.1/developers-guides/img/attachments/AttachmentsGuide2.png b/versioned_docs/version-26.1/developers-guides/img/attachments/AttachmentsGuide2.png new file mode 100644 index 0000000000..fd0123103f Binary files /dev/null and b/versioned_docs/version-26.1/developers-guides/img/attachments/AttachmentsGuide2.png differ diff --git a/versioned_docs/version-26.1/developers-guides/img/attachments/AttachmentsGuide3.png b/versioned_docs/version-26.1/developers-guides/img/attachments/AttachmentsGuide3.png new file mode 100644 index 0000000000..f3807fbc33 Binary files /dev/null and b/versioned_docs/version-26.1/developers-guides/img/attachments/AttachmentsGuide3.png differ diff --git a/versioned_docs/version-26.1/developers-guides/img/backend/AuthBinaryConfig.png b/versioned_docs/version-26.1/developers-guides/img/backend/AuthBinaryConfig.png new file mode 100644 index 0000000000..a2d8491147 Binary files /dev/null and b/versioned_docs/version-26.1/developers-guides/img/backend/AuthBinaryConfig.png differ diff --git a/versioned_docs/version-26.1/developers-guides/img/backend/AuthDbConfig.png b/versioned_docs/version-26.1/developers-guides/img/backend/AuthDbConfig.png new file mode 100644 index 0000000000..76e372deb1 Binary files /dev/null and b/versioned_docs/version-26.1/developers-guides/img/backend/AuthDbConfig.png differ diff --git a/versioned_docs/version-26.1/developers-guides/img/backend/BuildGradleUpdated.png b/versioned_docs/version-26.1/developers-guides/img/backend/BuildGradleUpdated.png new file mode 100644 index 0000000000..2479312d9e Binary files /dev/null and b/versioned_docs/version-26.1/developers-guides/img/backend/BuildGradleUpdated.png differ diff --git a/versioned_docs/version-26.1/developers-guides/img/backend/CommitHash.png b/versioned_docs/version-26.1/developers-guides/img/backend/CommitHash.png new file mode 100644 index 0000000000..564cd7f7f8 Binary files /dev/null and b/versioned_docs/version-26.1/developers-guides/img/backend/CommitHash.png differ diff --git a/versioned_docs/version-26.1/developers-guides/img/backend/IdeaFormatter.png b/versioned_docs/version-26.1/developers-guides/img/backend/IdeaFormatter.png new file mode 100644 index 0000000000..32e384b388 Binary files /dev/null and b/versioned_docs/version-26.1/developers-guides/img/backend/IdeaFormatter.png differ diff --git a/versioned_docs/version-26.1/developers-guides/img/backend/RabbitmqConfig.png b/versioned_docs/version-26.1/developers-guides/img/backend/RabbitmqConfig.png new file mode 100644 index 0000000000..1f10dc4c76 Binary files /dev/null and b/versioned_docs/version-26.1/developers-guides/img/backend/RabbitmqConfig.png differ diff --git a/versioned_docs/version-26.1/developers-guides/img/plugin/InstallPlugin.png b/versioned_docs/version-26.1/developers-guides/img/plugin/InstallPlugin.png new file mode 100644 index 0000000000..db18f7a9f9 Binary files /dev/null and b/versioned_docs/version-26.1/developers-guides/img/plugin/InstallPlugin.png differ diff --git a/versioned_docs/version-26.1/developers-guides/img/rerun/LaunchFailed1.png b/versioned_docs/version-26.1/developers-guides/img/rerun/LaunchFailed1.png new file mode 100644 index 0000000000..b35b4d963d Binary files /dev/null and b/versioned_docs/version-26.1/developers-guides/img/rerun/LaunchFailed1.png differ diff --git a/versioned_docs/version-26.1/developers-guides/img/rerun/LaunchFailed2.png b/versioned_docs/version-26.1/developers-guides/img/rerun/LaunchFailed2.png new file mode 100644 index 0000000000..e4108e6a78 Binary files /dev/null and b/versioned_docs/version-26.1/developers-guides/img/rerun/LaunchFailed2.png differ diff --git a/versioned_docs/version-26.1/developers-guides/img/rerun/LaunchFailedRp1.png b/versioned_docs/version-26.1/developers-guides/img/rerun/LaunchFailedRp1.png new file mode 100644 index 0000000000..d199e30088 Binary files /dev/null and b/versioned_docs/version-26.1/developers-guides/img/rerun/LaunchFailedRp1.png differ diff --git a/versioned_docs/version-26.1/developers-guides/img/rerun/LaunchFailedRp2.png b/versioned_docs/version-26.1/developers-guides/img/rerun/LaunchFailedRp2.png new file mode 100644 index 0000000000..0ea1aa1d8d Binary files /dev/null and b/versioned_docs/version-26.1/developers-guides/img/rerun/LaunchFailedRp2.png differ diff --git a/versioned_docs/version-26.1/developers-guides/img/rerun/RpRerun1.png b/versioned_docs/version-26.1/developers-guides/img/rerun/RpRerun1.png new file mode 100644 index 0000000000..de69e95e51 Binary files /dev/null and b/versioned_docs/version-26.1/developers-guides/img/rerun/RpRerun1.png differ diff --git a/versioned_docs/version-26.1/developers-guides/img/rerun/RpRerunStepView.png b/versioned_docs/version-26.1/developers-guides/img/rerun/RpRerunStepView.png new file mode 100644 index 0000000000..5bb4ea9b3f Binary files /dev/null and b/versioned_docs/version-26.1/developers-guides/img/rerun/RpRerunStepView.png differ diff --git a/versioned_docs/version-26.1/developers-guides/img/rerun/Tests.png b/versioned_docs/version-26.1/developers-guides/img/rerun/Tests.png new file mode 100644 index 0000000000..d9480f4ee7 Binary files /dev/null and b/versioned_docs/version-26.1/developers-guides/img/rerun/Tests.png differ diff --git a/versioned_docs/version-26.1/developers-guides/img/retry/LaunchRetries.png b/versioned_docs/version-26.1/developers-guides/img/retry/LaunchRetries.png new file mode 100644 index 0000000000..7738168caa Binary files /dev/null and b/versioned_docs/version-26.1/developers-guides/img/retry/LaunchRetries.png differ diff --git a/versioned_docs/version-26.1/developers-guides/img/retry/LogPage.png b/versioned_docs/version-26.1/developers-guides/img/retry/LogPage.png new file mode 100644 index 0000000000..9257d6157d Binary files /dev/null and b/versioned_docs/version-26.1/developers-guides/img/retry/LogPage.png differ diff --git a/versioned_docs/version-26.1/developers-guides/img/retry/Retry.png b/versioned_docs/version-26.1/developers-guides/img/retry/Retry.png new file mode 100644 index 0000000000..87198065eb Binary files /dev/null and b/versioned_docs/version-26.1/developers-guides/img/retry/Retry.png differ diff --git a/versioned_docs/version-26.1/developers-guides/img/retry/RetrySwitch.png b/versioned_docs/version-26.1/developers-guides/img/retry/RetrySwitch.png new file mode 100644 index 0000000000..48721acc28 Binary files /dev/null and b/versioned_docs/version-26.1/developers-guides/img/retry/RetrySwitch.png differ diff --git a/versioned_docs/version-26.1/developers-guides/img/retry/RetryView.png b/versioned_docs/version-26.1/developers-guides/img/retry/RetryView.png new file mode 100644 index 0000000000..6d2de56808 Binary files /dev/null and b/versioned_docs/version-26.1/developers-guides/img/retry/RetryView.png differ diff --git a/versioned_docs/version-26.1/developers-guides/img/retry/StepLevelRetries.png b/versioned_docs/version-26.1/developers-guides/img/retry/StepLevelRetries.png new file mode 100644 index 0000000000..2be8979515 Binary files /dev/null and b/versioned_docs/version-26.1/developers-guides/img/retry/StepLevelRetries.png differ diff --git a/versioned_docs/version-26.1/developers-guides/index.md b/versioned_docs/version-26.1/developers-guides/index.md new file mode 100644 index 0000000000..9bacd7607a --- /dev/null +++ b/versioned_docs/version-26.1/developers-guides/index.md @@ -0,0 +1,18 @@ +--- +title: Developers guides +description: Enhance your test results dashboard with ReportPortal's comprehensive Developers' guides. +--- + +# Developers guides + +The **Developers guides** section is designed to provide comprehensive resources for developers who want to expand and enhance the functionality of ReportPortal. This section is essential for those who wish to customize our test automation reporting dashboard to meet their specific needs, offering a wealth of knowledge and practical tools to get the most out of ReportPortal, making your testing processes more efficient and effective. + +Here, you will find step-by-step tutorials that guide you through the process of building custom plugins and extending existing features. For instance, we offer a guide for developing a custom import plugin. These tutorials are crafted to help developers at any level - whether you're just starting with ReportPortal customization or you're an experienced developer looking to optimize the platform for more complex use cases. + +The API references available in this section provide detailed documentation on how to interact with ReportPortal programmatically. Alongside API documentation, you’ll also find practical examples and best practices to help you customize ReportPortal to fit your specific needs, ensuring optimal performance and functionality. + +Whether you’re looking to modify user interfaces, extend test reporting capabilities, or build custom integrations with other software development tools, the Developers guides section offers everything you need to fully leverage the power of ReportPortal for your project’s unique requirements and technical goals. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.1/external-integrations/MCPServer.mdx b/versioned_docs/version-26.1/external-integrations/MCPServer.mdx new file mode 100644 index 0000000000..73d37e2bbe --- /dev/null +++ b/versioned_docs/version-26.1/external-integrations/MCPServer.mdx @@ -0,0 +1,162 @@ +--- +sidebar_position: 1 +sidebar_label: MCP Server +description: Automate test analysis with MCP Server, use AI to detect issues, summarize results, and streamline QA workflows for faster, smarter decision-making. +--- + +# MCP Server + +To work with ReportPortal, users typically need to interact through its web UI. With our MCP Server, you can connect ReportPortal to your preferred AI tool — for example, Claude, Copilot, or Cursor. + +## What is MCP? + +MCP (Model Context Protocol) is a lightweight middleware protocol (and server) that facilitates structured communication between AI tools and external platforms, such as our test results dashboard. It provides a context-aware interface for language models to query, analyze, and manipulate data without direct UI access. + +ReportPortal MCP Server allows to receive summaries of launches and perform various operations without manually opening the UI. The actions that can be performed through the MCP Server are called Tools. + +Available tools: + +1. Run Unique Error Analysis +2. Run Quality Gate +3. Run Auto-Analysis +4. Get Test Items by Filter +5. Get Launches +6. Launch Force Finish +7. Launch Delete +8. Get Test Item Logs by Filter +9. Get Test Item by ID +10. Get Test Item Attachments +11. Get Last Launch by Name +12. Get Project Defect Types +13. Update defect types by item IDs + +## Usage with your favorite AI tools + +Below are brief setup instructions for configuring the ReportPortal MCP Server with Cursor, Copilot, and Claude Desktop. + +### Cursor IDE + +#### Local installation + +To configure ReportPortal MCP Server with Cursor: + +1. Log in to Cursor. +2. Open Settings. +3. Select "Tools & Integrations" section. +4. Click "New MCP Server". + + + +5. Fill in the required fields in the Config file. + + + +6. The list of available tools appears. + + + +#### Remote server + +This setup allows Cursor to communicate with a remote ReportPortal MCP Server. + +```json +{ + "mcpServers": { + "reportportal": { + "url": "http://your-mcp-server-host:port/mcp/", + "headers": { + "Authorization": "Bearer your-api-token", + "X-Project": "YourProjectInReportPortal" + } + } + } +} +``` + +### GitHub Copilot + +#### Local installation + +To configure ReportPortal MCP Server with Copilot: + +1. Log in to Copilot. +2. Type ">mcp" in the search bar. +3. Select "MCP: Open User Configuration" option. + + + +4. Fill in the required fields in the Config file. + + + +#### Remote server + +Use this configuration to connect Copilot to a remote ReportPortal MCP Server. + +```json +{ + "servers": { + "reportportal": { + "url": "http://your-mcp-server-host:port/mcp/", + "requestInit": { + "headers": { + "Authorization": "Bearer your-api-token", + "X-Project": "YourProjectInReportPortal" + } + } + } + } +} +``` + +### Claude Desktop + +To configure ReportPortal MCP Server with Claude: + +1. Log in to Claude. +2. Open Settings. + + + +3. Select "Developer" section. +4. Click "Edit Config" button. + + + +5. Open Config file. + + + +6. Fill in the required fields: token, host, project. + + + +:::note +Token is API Key the user's Profile page. +::: + +7. Open the list of available tools. + + + +8. Enable the tools you want to use and disable those you don't. + + + +9. Create a prompt. + + + +10. Allow Claude to use ReportPortal MCP Server. + + + +11. Check your AI's output based on the data from ReportPortal. + + + + + +Refer to the detailed user guide for the [full setup instructions](https://github.com/reportportal/reportportal-mcp-server) of the MCP Server. + +Whether you're aiming to optimize test analysis or simplify routine QA tasks, MCP empowers your AI tools to act with clarity and precision. diff --git a/versioned_docs/version-26.1/external-integrations/UserProvisioning/Scim/_category_.json b/versioned_docs/version-26.1/external-integrations/UserProvisioning/Scim/_category_.json new file mode 100644 index 0000000000..127da1bae1 --- /dev/null +++ b/versioned_docs/version-26.1/external-integrations/UserProvisioning/Scim/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "SCIM", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.1/external-integrations/UserProvisioning/Scim/azure.mdx b/versioned_docs/version-26.1/external-integrations/UserProvisioning/Scim/azure.mdx new file mode 100644 index 0000000000..dcaa7ad83c --- /dev/null +++ b/versioned_docs/version-26.1/external-integrations/UserProvisioning/Scim/azure.mdx @@ -0,0 +1,125 @@ +--- +sidebar_label: SCIM Azure +description: Configure SCIM to sync Azure Entra ID users and groups automatically to ReportPortal, map attributes, and sync admin roles to streamline access control and user management. +--- + +# SCIM Azure + +:::important +This feature is available in ReportPortal with a [managed services subscription](https://reportportal.io/pricing/on-premises). +::: + +ReportPortal allows you to synchronize users and groups from Azure Microsoft Entra ID +to ReportPortal via SCIM. + +## Creating a SCIM provisioning + +1. Log in to [Azure portal](https://portal.azure.com). + +2. Go to the `Azure Enterprise Applications` section and click `New application`. + + + +3. Click `Create your own application`. + + + +4. Enter the name of your application. +Choose the `Integrate any other application you don't find in the gallery (Non-gallery)` bullet +and click the `Create` button. + + + +5. After creating an application, go to the `Provisioning` section and click `New configuration`. + + + + + +6. Fill in the following fields: + - Tenant URL: `https://{your_scim_server_host}?aadOptscim062020` + - Secret Token: `your_admin_api_key` + +:::note +`?aadOptscim062020` is a special parameter that allows you to use the a [SCIM compatible protocol](https://learn.microsoft.com/en-us/entra/identity/app-provisioning/application-provisioning-config-problem-scim-compatibility#flags-to-alter-the-scim-behavior). +::: + + + +7. Click `Test Connection` to check the connection and click `Create`. + + + +## Set up Attribute mapping + +1. Go to the `Attribute mapping` section and click `Provision Microsoft Entra ID Users`. + + + +2. In the `Attribute Mappings` section, find and delete the `urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:manager` attribute. +For some reason, Azure sends this attribute with the wrong SCIM format. This attribute is not used in ReportPortal. + + + +3. Click `Save` to save the changes. + +## Admin role synchronization + +For proper synchronization of the admin role, you need to create a new `App-role` in Azure. + +1. Go to the `Provisioning` -> `Users and groups` section and click `application registration`. + + + +2. Click to `Create app role`. + + + +3. Fill in the following fields: + - Display name: `Administrator` + - Value: `Administrator` + - Description: `Administrator role` + + + +4. Click `Apply`. + +5. Select the `User` role and fill the Value field with `User`. + +6. Click `Apply`. + +7. Return to the configured enterprise application and go to the `Provisioning` -> `Attribute mapping` -> `Provision Microsoft Entra ID Users` section. + + + +8. Select the `Show advanced options` checkbox at the bottom and click the `Edit attribute list for customappsso` link. + + + +9. You will see the `Edit Attribute List`. At the bottom of the list, fill in the empty fields with the name `roles` and type `String`. + + + +10. Click `Save`. + +11. Return to the `Provision Microsoft Entra ID Users` and click `Add New Mapping`. + + + +12. Fill in the following fields: + - Mapping type: `Expression` + - Expression: `AppRoleAssignmentsComplex([appRoleAssignments])` + - Target attribute: `roles` + + Keep default values for other fields. + + + +13. Click `Ok` and then `Save`. + +After these steps, when you add users or groups to the Azure project you can select +an application role for them: `User` or `Administrator`. + + + +This role will be synchronized with the ReportPortal user instance role. diff --git a/versioned_docs/version-26.1/external-integrations/UserProvisioning/Scim/index.md b/versioned_docs/version-26.1/external-integrations/UserProvisioning/Scim/index.md new file mode 100644 index 0000000000..b1c15c9660 --- /dev/null +++ b/versioned_docs/version-26.1/external-integrations/UserProvisioning/Scim/index.md @@ -0,0 +1,21 @@ +--- +sidebar_label: System for Cross-domain Identity Management (SCIM) +description: Use SCIM in ReportPortal to auto-provision users and groups from Okta or Azure, keeping roles, access, and attributes always up to date and secure. +--- + +# System for Cross-domain Identity Management (SCIM) + +The **SCIM (System for Cross-domain Identity Management)** category covers the process of synchronizing users and groups between external identity providers and ReportPortal. SCIM provisioning automates user management, ensuring that accounts are created, updated, and deactivated based on identity provider changes. + +SCIM is an industry-standard protocol that enables seamless integration with **SCIM 2.0-compliant identity providers**, such as **Okta** and **Azure Microsoft Entra ID**. This allows organizations to centralize user administration and streamline access management. + +**Key Features of SCIM Provisioning:** + +* Automated User Management – Users and groups are created, updated, and deleted automatically. +* Group-Based Access Control – Users can be assigned to ReportPortal projects via identity provider groups. +* Real-Time Synchronization – User attributes, roles, and group memberships remain up to date. +* Secure and Scalable – Reduces manual account management while improving security. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.1/external-integrations/UserProvisioning/Scim/okta.mdx b/versioned_docs/version-26.1/external-integrations/UserProvisioning/Scim/okta.mdx new file mode 100644 index 0000000000..f0ca1e0291 --- /dev/null +++ b/versioned_docs/version-26.1/external-integrations/UserProvisioning/Scim/okta.mdx @@ -0,0 +1,48 @@ +--- +sidebar_label: SCIM Okta +description: Configure SCIM integration with Okta for automated user provisioning in ReportPortal test automation reporting tools. +--- + +# SCIM Okta + +:::important +This feature is available in ReportPortal with a [managed services subscription](https://reportportal.io/pricing/on-premises). +::: + +# Prerequisites + +- You have an Okta application. +- You have SAML Okta integration. For more information, see [SAML Okta](/plugins/authorization/SamlProviders/OktaSaml). + +# Configuration + +1. Go to your Okta account. + +2. Go to the `Applications` tab. + +3. Select the application you want to configure. + +4. Go to the `General` tab. + +5. In the `App Settings` section, click `Edit`. + + + +6. Select `Enable SCIM provisioning` and click `Save` to apply the changes. + + + +7. Go to the `Provisioning` tab and click `Edit`. + + + +8. Fill in the following fields: +- SCIM connector base URL: `https://` +- Unique identifier field for users: `userName` +- Supported provisioning actions: `Push New Users`, `Push Profile Updates`, `Push Groups`. +- Authentication Mode: `HTTP Header` +- Authorization: `{your-admin-api-key}` + + + +9. Click `Test connection configuration` and then `Save` the changes. diff --git a/versioned_docs/version-26.1/external-integrations/UserProvisioning/Scim/overview.mdx b/versioned_docs/version-26.1/external-integrations/UserProvisioning/Scim/overview.mdx new file mode 100644 index 0000000000..d3155310e2 --- /dev/null +++ b/versioned_docs/version-26.1/external-integrations/UserProvisioning/Scim/overview.mdx @@ -0,0 +1,31 @@ +--- +sidebar_label: Overview +sidebar_position: 1 +description: Use SCIM protocol for automated user provisioning and management in ReportPortal with identity providers. +--- + +# SCIM Overview + +:::important +This feature is available in ReportPortal with a [managed services subscription](https://reportportal.io/pricing/on-premises). +::: + +The System for Cross-domain Identity Management (SCIM) is a standard for synchronizing +Users and Groups between identity providers and service providers over REST APIs calls. + +ReportPortal allows you to create, update and delete users and groups in ReportPortal. + +## User provisioning + +SCIM synchronizes users from external identity providers that support SCIM. +If users already were created via SAML JIT they will be synchronized with SCIM. + +All users synchronized via SCIM will be created with the `SCIM` type. +Users who already exist in ReportPortal with an `Internal` role will not be updated. + +## Group provisioning + +SCIM Groups are a way of assigning users to ReportPortal projects. + +We match groups by the `displayName` attribute to ReportPortal project names and role +according to the group pattern. diff --git a/versioned_docs/version-26.1/external-integrations/UserProvisioning/_category_.json b/versioned_docs/version-26.1/external-integrations/UserProvisioning/_category_.json new file mode 100644 index 0000000000..0b1e7b1dc6 --- /dev/null +++ b/versioned_docs/version-26.1/external-integrations/UserProvisioning/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "User Provisioning", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.1/external-integrations/UserProvisioning/index.md b/versioned_docs/version-26.1/external-integrations/UserProvisioning/index.md new file mode 100644 index 0000000000..664e57992a --- /dev/null +++ b/versioned_docs/version-26.1/external-integrations/UserProvisioning/index.md @@ -0,0 +1,23 @@ +--- +sidebar_label: User Provisioning +description: Set up JIT and SCIM user provisioning to automate account creation, updates, and roles in ReportPortal for secure, scalable access management. +--- + +# User Provisioning + +The **User Provisioning** category describes the process of creating, updating, and managing user accounts and groups in ReportPortal through external identity providers. It includes **Just-in-Time (JIT) provisioning**, which creates users on first login via SAML, and **SCIM provisioning**, which syncs users and groups from SCIM-compliant identity providers. + +Proper user provisioning ensures seamless access management, enhances security, and simplifies identity administration across multiple platforms. + +**Configuration Overview** + +To enable user provisioning, organizations need to: + +1. **For JIT provisioning:** Configure SAML authentication in ReportPortal. +2. **For SCIM provisioning:** Enable SCIM in the identity provider, set up the SCIM API connection, and configure attribute mappings. +3. **Test the connection** to ensure proper synchronization. +4. **Manage roles and groups** to streamline user access. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.1/external-integrations/UserProvisioning/overview.mdx b/versioned_docs/version-26.1/external-integrations/UserProvisioning/overview.mdx new file mode 100644 index 0000000000..df962cd595 --- /dev/null +++ b/versioned_docs/version-26.1/external-integrations/UserProvisioning/overview.mdx @@ -0,0 +1,44 @@ +--- +sidebar_label: Overview +sidebar_position: 1 +description: Configure user provisioning from external identity providers for automated user management in ReportPortal test automation reporting tools. +--- + +# User provisioning overview + +ReportPortal supports user provisioning from external identity providers. This +feature allows you to create and manage user accounts in ReportPortal using +external identity providers. ReportPortal supports the following user +provisioning methods: + +- [Just-in-Time (JIT) provisioning](#jit-provisioning) via the SAML plugin. +- [System for Cross-domain Identity Management (SCIM) provisioning](#scim-provisioning) via the SCIM service. + + +## JIT provisioning + +Just-in-time (JIT) provisioning is a feature that creates a user account in +ReportPortal when a user logs in for the first time. This feature is available +for SAML integrations. + +However, you cannot provision a user from SAML Provider to ReportPortal if you +already have a pre-created internal user in ReportPortal with the same email +but a different login. The login must be the email name without the domain part. +For instance, if the email is `john_weak@babayaga.com` the login should be +`john_weak`. +Otherwise, the user will not be able to log in to ReportPortal. +You can fix it by changing the login name or email or by deleting the user from ReportPortal. + +## SCIM provisioning + +:::important +This feature is available in ReportPortal with a [managed services subscription](https://reportportal.io/pricing/on-premises). +::: + +System for Cross-domain Identity Management (SCIM) is a standard for synchronizing users and groups +between identity providers and service providers over REST API calls. + +SCIM provisioning enables you to create and manage user accounts in ReportPortal +from external identity providers that support SCIM. + +Moreover, SCIM provisioning allows you to assign users to ReportPortal via groups. diff --git a/versioned_docs/version-26.1/external-integrations/_category_.json b/versioned_docs/version-26.1/external-integrations/_category_.json new file mode 100644 index 0000000000..c4e2b651ec --- /dev/null +++ b/versioned_docs/version-26.1/external-integrations/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "External Integrations", + "position": "18", + "link": {"type": "doc", "id": "index"} +} + diff --git a/versioned_docs/version-26.1/external-integrations/img/mcp-server/Copilot1.jpg b/versioned_docs/version-26.1/external-integrations/img/mcp-server/Copilot1.jpg new file mode 100644 index 0000000000..208728a41e Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/mcp-server/Copilot1.jpg differ diff --git a/versioned_docs/version-26.1/external-integrations/img/mcp-server/Copilot2.JPG b/versioned_docs/version-26.1/external-integrations/img/mcp-server/Copilot2.JPG new file mode 100644 index 0000000000..9f75fff89f Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/mcp-server/Copilot2.JPG differ diff --git a/versioned_docs/version-26.1/external-integrations/img/mcp-server/Cursor1.JPG b/versioned_docs/version-26.1/external-integrations/img/mcp-server/Cursor1.JPG new file mode 100644 index 0000000000..b876017831 Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/mcp-server/Cursor1.JPG differ diff --git a/versioned_docs/version-26.1/external-integrations/img/mcp-server/Cursor2.JPG b/versioned_docs/version-26.1/external-integrations/img/mcp-server/Cursor2.JPG new file mode 100644 index 0000000000..1ada2c52d0 Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/mcp-server/Cursor2.JPG differ diff --git a/versioned_docs/version-26.1/external-integrations/img/mcp-server/Cursor3.JPG b/versioned_docs/version-26.1/external-integrations/img/mcp-server/Cursor3.JPG new file mode 100644 index 0000000000..27d54680bb Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/mcp-server/Cursor3.JPG differ diff --git a/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP1.png b/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP1.png new file mode 100644 index 0000000000..7886debbd6 Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP1.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP10.png b/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP10.png new file mode 100644 index 0000000000..7cd5784279 Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP10.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP2.png b/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP2.png new file mode 100644 index 0000000000..d78aa9a2e3 Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP2.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP3.png b/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP3.png new file mode 100644 index 0000000000..89de2d6c4c Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP3.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP4.png b/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP4.png new file mode 100644 index 0000000000..6389d45905 Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP4.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP5.png b/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP5.png new file mode 100644 index 0000000000..28d6b07501 Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP5.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP6.png b/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP6.png new file mode 100644 index 0000000000..be5858429c Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP6.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP7.png b/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP7.png new file mode 100644 index 0000000000..4e321248a4 Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP7.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP8.png b/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP8.png new file mode 100644 index 0000000000..eb6b1d1346 Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP8.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP9-1.png b/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP9-1.png new file mode 100644 index 0000000000..246dfaca1e Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP9-1.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP9-2.png b/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP9-2.png new file mode 100644 index 0000000000..e4c60a08f7 Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/mcp-server/MCP9-2.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/scimAzure/1.png b/versioned_docs/version-26.1/external-integrations/img/scimAzure/1.png new file mode 100644 index 0000000000..6e8429dd92 Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/scimAzure/1.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/scimAzure/10.png b/versioned_docs/version-26.1/external-integrations/img/scimAzure/10.png new file mode 100644 index 0000000000..1e256c2e6b Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/scimAzure/10.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/scimAzure/11.png b/versioned_docs/version-26.1/external-integrations/img/scimAzure/11.png new file mode 100644 index 0000000000..91d7a9dc3e Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/scimAzure/11.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/scimAzure/12.png b/versioned_docs/version-26.1/external-integrations/img/scimAzure/12.png new file mode 100644 index 0000000000..72e9807061 Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/scimAzure/12.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/scimAzure/13.png b/versioned_docs/version-26.1/external-integrations/img/scimAzure/13.png new file mode 100644 index 0000000000..904d5fe58f Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/scimAzure/13.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/scimAzure/14.png b/versioned_docs/version-26.1/external-integrations/img/scimAzure/14.png new file mode 100644 index 0000000000..cf4b9a328a Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/scimAzure/14.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/scimAzure/15.png b/versioned_docs/version-26.1/external-integrations/img/scimAzure/15.png new file mode 100644 index 0000000000..4091dd9891 Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/scimAzure/15.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/scimAzure/16.png b/versioned_docs/version-26.1/external-integrations/img/scimAzure/16.png new file mode 100644 index 0000000000..d218e1894d Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/scimAzure/16.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/scimAzure/17.png b/versioned_docs/version-26.1/external-integrations/img/scimAzure/17.png new file mode 100644 index 0000000000..70f6ef9344 Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/scimAzure/17.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/scimAzure/18.png b/versioned_docs/version-26.1/external-integrations/img/scimAzure/18.png new file mode 100644 index 0000000000..db582c8636 Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/scimAzure/18.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/scimAzure/2.png b/versioned_docs/version-26.1/external-integrations/img/scimAzure/2.png new file mode 100644 index 0000000000..e825405e0f Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/scimAzure/2.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/scimAzure/3.png b/versioned_docs/version-26.1/external-integrations/img/scimAzure/3.png new file mode 100644 index 0000000000..208a38a7fe Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/scimAzure/3.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/scimAzure/4.png b/versioned_docs/version-26.1/external-integrations/img/scimAzure/4.png new file mode 100644 index 0000000000..8a308149be Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/scimAzure/4.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/scimAzure/5.png b/versioned_docs/version-26.1/external-integrations/img/scimAzure/5.png new file mode 100644 index 0000000000..9358da57f0 Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/scimAzure/5.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/scimAzure/6.png b/versioned_docs/version-26.1/external-integrations/img/scimAzure/6.png new file mode 100644 index 0000000000..8e17248aa8 Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/scimAzure/6.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/scimAzure/7.png b/versioned_docs/version-26.1/external-integrations/img/scimAzure/7.png new file mode 100644 index 0000000000..5ed315db51 Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/scimAzure/7.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/scimAzure/8.png b/versioned_docs/version-26.1/external-integrations/img/scimAzure/8.png new file mode 100644 index 0000000000..adce21ce88 Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/scimAzure/8.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/scimAzure/9.png b/versioned_docs/version-26.1/external-integrations/img/scimAzure/9.png new file mode 100644 index 0000000000..306e6e41f1 Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/scimAzure/9.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/scimOkta/1.png b/versioned_docs/version-26.1/external-integrations/img/scimOkta/1.png new file mode 100644 index 0000000000..2bc8d3f03b Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/scimOkta/1.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/scimOkta/2.png b/versioned_docs/version-26.1/external-integrations/img/scimOkta/2.png new file mode 100644 index 0000000000..9f83d0b6cf Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/scimOkta/2.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/scimOkta/3.png b/versioned_docs/version-26.1/external-integrations/img/scimOkta/3.png new file mode 100644 index 0000000000..3025d98930 Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/scimOkta/3.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/scimOkta/4.png b/versioned_docs/version-26.1/external-integrations/img/scimOkta/4.png new file mode 100644 index 0000000000..50507db26a Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/scimOkta/4.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor1.png b/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor1.png new file mode 100644 index 0000000000..7224b96ddd Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor1.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor10.png b/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor10.png new file mode 100644 index 0000000000..4be1cd8ad1 Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor10.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor11.png b/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor11.png new file mode 100644 index 0000000000..94ef57cac8 Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor11.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor2.png b/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor2.png new file mode 100644 index 0000000000..236aede301 Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor2.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor3.png b/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor3.png new file mode 100644 index 0000000000..f746eb73e7 Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor3.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor4.png b/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor4.png new file mode 100644 index 0000000000..0f6de8314d Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor4.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor5.png b/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor5.png new file mode 100644 index 0000000000..891df44eee Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor5.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor6.png b/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor6.png new file mode 100644 index 0000000000..4e7ac81b96 Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor6.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor7.png b/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor7.png new file mode 100644 index 0000000000..5344a8bf36 Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor7.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor8.png b/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor8.png new file mode 100644 index 0000000000..b6d710444d Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor8.png differ diff --git a/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor9.png b/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor9.png new file mode 100644 index 0000000000..a5c58f1d12 Binary files /dev/null and b/versioned_docs/version-26.1/external-integrations/img/testRigor/testRigor9.png differ diff --git a/versioned_docs/version-26.1/external-integrations/index.md b/versioned_docs/version-26.1/external-integrations/index.md new file mode 100644 index 0000000000..28c0352241 --- /dev/null +++ b/versioned_docs/version-26.1/external-integrations/index.md @@ -0,0 +1,20 @@ +--- +title: External Integrations +description: Enhance collaboration with our External Integrations section. Integrate with tools for end to end testing reporting tools. +--- + +# External Integrations + +The **External Integrations** section of ReportPortal is designed to help you extend the capabilities of your test automation processes and enhance overall efficiency. By integrating external tools and identity management systems, you can streamline workflows, improve data synchronization, and better manage both testing activities and user access. This section provides essential information on how to connect and configure external systems. + +Thу integration with **testRigor** enables seamless data synchronization between the two systems, allowing for better test management and more efficient collaboration across teams. By linking ReportPortal with testRigor, you can automatically import test results, track performance, and manage test data in one centralized location. This ensures that your team can focus on improving software quality without the manually handling test information. + +Beyond test automation, ReportPortal also offers identity and access management integrations, including **user provisioning via SAML and SCIM**, to help teams efficiently manage user provisioning and authentication. + +To simplify user management, our test automation reporting dashboard supports automated user provisioning from external identity providers. This allows organizations to efficiently create and manage user accounts without manual intervention. + +By using the External Integrations section, you can not only enhance your test automation processes with tools like testRigor but also streamline user access management through SCIM and JIT provisioning. Whether you're handling complex test cases or managing large-scale projects, these integrations ensure a seamless, efficient, and well-organized workflow within ReportPortal. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.1/external-integrations/testRigor.mdx b/versioned_docs/version-26.1/external-integrations/testRigor.mdx new file mode 100644 index 0000000000..c2193b56ec --- /dev/null +++ b/versioned_docs/version-26.1/external-integrations/testRigor.mdx @@ -0,0 +1,78 @@ +--- +sidebar_position: 2 +sidebar_label: Integration with testRigor +description: Integrate testRigor with ReportPortal for seamless test case reporting and automated test result analysis workflows. +--- + +# Integration with testRigor + +Establish integration with the testRigor application to enable you to send your test cases directly to ReportPortal each time they are created and executed. + +:::note +Please be aware that this integration has been carried out by the testRigor team. +::: + +1. Open the [testRigor](https://testrigor.com) application. + +2. Initiate integration with ReportPortal. + +- If you have already created Test Suites, enable integration by clicking on the necessary Test Suite name to navigate to the Test Cases page. +- For Test Suites that are newly created, avoid generating the tests at the Test Suites level. Instead, proceed to the Test Cases. + + + +3. On the Test Cases page, locate and click on 'Settings' in the left sidebar. + +4. On the Settings page, select the Integrations tab. + + + +5. Find ReportPortal in the list. + +6. Enable the checkmark “Enable ReportPortal”. Additional fields will become available. + + + +***Web address:*** enter the web address of the ReportPortal instance you are working with. + +***Project name:*** specify the name of the RP project where your tests should run. + + + +***API Key:*** generate your API Key on the ReportPortal application, accessible via Profile page > API Keys tab, and input it here. + + + +***Launch name:*** Provide a launch name to ensure your tests are properly identified. Otherwise, it will be displayed in the format 'appName Run #ID'. + + + +By selecting the *"Ignore SSL Errors"* checkbox, you will avoid recording any additional SSL logs. + +Tick the checkbox for *"Collect step statistics"* if you want to view Steps level on ReportPortal. + + + +Keep the checkbox for *"Collect step statistics"* unchecked to generate Nested Steps level in ReportPortal. + + + +7. Scroll to the bottom of the page and click on the "Save" button. + +8. Switch to the Test Cases Page using the left sidebar menu and create Test Cases. + + + +9. Switch to the Test Suite Details tab. + +10. Execute the Test Suite with the pre-created test cases. + + + +11. Open ReportPortal -> the project specified in the integration. + +12. Verify that Launch is available. + + + +If you need to perform new executions, simply replicate the steps, and rerun the Test Suite, ensuring that the *"Do not update ReportPortal"* checkbox remains unchecked. diff --git a/versioned_docs/version-26.1/features/AIFailureReasonDetection.md b/versioned_docs/version-26.1/features/AIFailureReasonDetection.md new file mode 100644 index 0000000000..96560e2dd0 --- /dev/null +++ b/versioned_docs/version-26.1/features/AIFailureReasonDetection.md @@ -0,0 +1,33 @@ +--- +sidebar_position: 3 +sidebar_label: AI failure reason detection +description: Use AI to auto-categorize failures, reduce manual triage, and speed bug discovery. ReportPortal automates test failure analytics for faster, accurate results. +--- + +# 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/versioned_docs/version-26.1/features/CategorisationOfFailures.md b/versioned_docs/version-26.1/features/CategorisationOfFailures.md new file mode 100644 index 0000000000..71ed21e451 --- /dev/null +++ b/versioned_docs/version-26.1/features/CategorisationOfFailures.md @@ -0,0 +1,32 @@ +--- +sidebar_position: 2 +sidebar_label: Categorisation of failures +description: Learn how ReportPortal streamlines defect triage with clear categories, root cause insights, and faster resolution across teams for more reliable testing outcomes. +--- + +# 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/versioned_docs/version-26.1/features/QualityGates.md b/versioned_docs/version-26.1/features/QualityGates.md new file mode 100644 index 0000000000..0b740bbb94 --- /dev/null +++ b/versioned_docs/version-26.1/features/QualityGates.md @@ -0,0 +1,25 @@ +--- +sidebar_position: 7 +sidebar_label: Quality Gates +description: Automate GO/NO-GO checks with Quality Gates in ReportPortal. Enforce standards, speed releases, and ensure reliability using aggregated test execution data. +--- + +# 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/versioned_docs/version-26.1/features/RESTAPI.md b/versioned_docs/version-26.1/features/RESTAPI.md new file mode 100644 index 0000000000..b7889fb897 --- /dev/null +++ b/versioned_docs/version-26.1/features/RESTAPI.md @@ -0,0 +1,31 @@ +--- +sidebar_position: 7 +sidebar_label: REST API +description: Extend and integrate ReportPortal using a powerful REST API to push results, fetch analytics, and build custom reports and dashboards across your tooling. +--- + +# 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/versioned_docs/version-26.1/features/RealTimeReporting.md b/versioned_docs/version-26.1/features/RealTimeReporting.md new file mode 100644 index 0000000000..52ae3934f7 --- /dev/null +++ b/versioned_docs/version-26.1/features/RealTimeReporting.md @@ -0,0 +1,27 @@ +--- +sidebar_position: 5 +sidebar_label: Real-time reporting +description: Get live test results as executions run. Start triage early, shorten feedback loops, and improve release speed with a real-time test results dashboard. +--- + +# 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/versioned_docs/version-26.1/features/RichArtifactsInTestReports.md b/versioned_docs/version-26.1/features/RichArtifactsInTestReports.md new file mode 100644 index 0000000000..f59750675c --- /dev/null +++ b/versioned_docs/version-26.1/features/RichArtifactsInTestReports.md @@ -0,0 +1,31 @@ +--- +sidebar_position: 4 +sidebar_label: Rich artifacts in test reports +description: Enrich your automation test report with logs, screenshots, videos, and network data. Simplify debugging, defect triage, and test failure analysis in one place. +--- + +# 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/versioned_docs/version-26.1/features/SCIMServerFeature.md b/versioned_docs/version-26.1/features/SCIMServerFeature.md new file mode 100644 index 0000000000..9ee70a05d9 --- /dev/null +++ b/versioned_docs/version-26.1/features/SCIMServerFeature.md @@ -0,0 +1,36 @@ +--- +sidebar_position: 8 +sidebar_label: SCIM Server feature +description: Automate user provisioning and access with SCIM in ReportPortal. Sync roles and projects from your IdP to simplify identity management and improve security. +--- + +# SCIM Server feature + +SCIM is a protocol that simplifies how you manage user identities and access across various applications and services. It automates the sharing of user identity information between your identity provider (like Azure AD or Okta) and service providers, such as ReportPortal. + +ReportPortal includes a SCIM Server that acts as a bridge between your identity provider and ReportPortal, streamlining the management of user accounts. + +**Benefits** + +* Reduced administrative work: Automating the creation and removal of user accounts helps eliminate manual errors and saves time. +* Enhanced security: SCIM ensures that security policies and access controls are consistently applied across different systems. +* Improved user experience: Users are automatically assigned to projects and roles based on their group memberships in the identity provider. + +**Key Features** + +* Automated Account Setup: SCIM allows for the automatic creation of user accounts in ReportPortal, complete with project and role assignments. +* Flexible Account Types: Users can be designated as Admins or Regular Users in ReportPortal. +* Dynamic Updates: Changes in the identity provider trigger updates in account type and project assignments in ReportPortal. +* Account De-provisioning: Supports both "soft" delete (disabling accounts) and "hard" delete (removing accounts). + +**Group Management** + +Both user and application groups are recognized as sources for project membership. Group names in the identity provider must follow a specific pattern set on the SCIM Server to correctly update project and role assignments in ReportPortal. This involves a regular expression pattern that identifies the project name and role from the group name. + +**Default Roles** + +A default project role can be assigned to users who don't have a specific role pattern in their group membership on the Identity Provider side. + +:::note +The SCIM server feature is a premium offering from ReportPortal, available as part of our paid support services. We provide assistance with both the identity provider settings and the SCIM Server configuration.
+If you're interested in enabling SCIM for your setup, please [contact us](https://reportportal.io/contact-us/general) for more information. diff --git a/versioned_docs/version-26.1/features/TestExecutions.md b/versioned_docs/version-26.1/features/TestExecutions.md new file mode 100644 index 0000000000..ae519d79d0 --- /dev/null +++ b/versioned_docs/version-26.1/features/TestExecutions.md @@ -0,0 +1,49 @@ +--- +sidebar_position: 9 +sidebar_label: Test Executions +description: View all test executions in one place with powerful filters and a customizable layout for faster analysis and easier troubleshooting. +--- + +# Test Executions + +The Test Executions page gives you a simple, unified view of all test cases from multiple launches. Instead of navigating complex structures, you see all executed tests in one clean list, making daily analysis faster and simpler. + +Key benefits: + +**1. Easier Test Navigation** + +See all executed tests in one simple list – no more clicking through folders. You can quickly spot failures, check patterns, and compare launches without searching through scattered data. + + + +**2. Powerful and Flexible Filtering** + +* **Launch-level filters**: Filter by launch time, name, or attributes to focus on the right results. + + + +* **Test-level filters**: Narrow down by status, defect type, or test attributes. +Use both together to find exactly the tests you need. + + + +**3. Customizable View** + +Adjust the page to fit your workflow: + +* Add or remove columns +* Create custom attribute columns +* Reorder columns + +This helps you see your data the way you prefer. + + + +**4. Faster and Clearer Analysis** + +Test Executions removes extra navigation, speeds up daily checks, and makes troubleshooting easier – whether you’re managing a few tests or thousands.
+ +:::note +The Test Executions feature is a premium offering from ReportPortal, available as part of our paid support services. +If you're interested in enabling Test Executions for your setup, please [contact us](https://reportportal.io/contact-us/general) for more information. +::: diff --git a/versioned_docs/version-26.1/features/UnifiedTestReporting.md b/versioned_docs/version-26.1/features/UnifiedTestReporting.md new file mode 100644 index 0000000000..86c25fdc55 --- /dev/null +++ b/versioned_docs/version-26.1/features/UnifiedTestReporting.md @@ -0,0 +1,26 @@ +--- +sidebar_position: 1 +sidebar_label: Unified test reporting +description: Unify results from all test frameworks in one place. Streamline collaboration, real-time insights, and quality gates in a single test automation dashboard. +--- + +# 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/versioned_docs/version-26.1/features/VisualisationOfTestResults.md b/versioned_docs/version-26.1/features/VisualisationOfTestResults.md new file mode 100644 index 0000000000..b6bc59258f --- /dev/null +++ b/versioned_docs/version-26.1/features/VisualisationOfTestResults.md @@ -0,0 +1,27 @@ +--- +sidebar_position: 6 +sidebar_label: Visualisation of test results +description: Track key metrics with real-time widgets and charts. Visualize trends, failures, and ROI on a flexible test automation metrics dashboard for faster decisions. +--- + +# 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 failure trends, test execution time, passing rate, 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/versioned_docs/version-26.1/features/_category_.json b/versioned_docs/version-26.1/features/_category_.json new file mode 100644 index 0000000000..71bdd07bfd --- /dev/null +++ b/versioned_docs/version-26.1/features/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Features", + "position": "2", + "link": {"type": "doc", "id": "index"} + } diff --git a/versioned_docs/version-26.1/features/img/TestExecutions1.png b/versioned_docs/version-26.1/features/img/TestExecutions1.png new file mode 100644 index 0000000000..d6b4df1a30 Binary files /dev/null and b/versioned_docs/version-26.1/features/img/TestExecutions1.png differ diff --git a/versioned_docs/version-26.1/features/img/TestExecutions2.png b/versioned_docs/version-26.1/features/img/TestExecutions2.png new file mode 100644 index 0000000000..eaed565ea4 Binary files /dev/null and b/versioned_docs/version-26.1/features/img/TestExecutions2.png differ diff --git a/versioned_docs/version-26.1/features/img/TestExecutions3.png b/versioned_docs/version-26.1/features/img/TestExecutions3.png new file mode 100644 index 0000000000..a3c859c28c Binary files /dev/null and b/versioned_docs/version-26.1/features/img/TestExecutions3.png differ diff --git a/versioned_docs/version-26.1/features/img/TestExecutions4.png b/versioned_docs/version-26.1/features/img/TestExecutions4.png new file mode 100644 index 0000000000..924aa7380c Binary files /dev/null and b/versioned_docs/version-26.1/features/img/TestExecutions4.png differ diff --git a/versioned_docs/version-26.1/features/index.md b/versioned_docs/version-26.1/features/index.md new file mode 100644 index 0000000000..545dd09e1f --- /dev/null +++ b/versioned_docs/version-26.1/features/index.md @@ -0,0 +1,18 @@ +--- +title: Features +description: Discover ReportPortal's features like real-time reporting, AI-based defects triage, visualization of test data and more. +--- + +# Features + +The **Features** section of ReportPortal outlines the powerful capabilities that make it one of the essential automation testing reporting tools for modern software development teams. ReportPortal is designed to simplify testing workflows, provide insights into test performance, and ensure higher-quality software through its diverse functionality. Each feature addresses key challenges in test automation, from organizing and categorizing test data to delivering real-time test reports and visual summaries. + +With ReportPortal, teams gain access to unified reporting that consolidates all test results in one place, making it easier to track trends and monitor project health. Intelligent categorization and AI-driven analysis help identify root causes of failures, streamlining the process of spotting bugs and prioritizing issues for faster resolution. In addition to improved tracking capabilities, users benefit from features that facilitate collaboration, allowing for easier issue management across teams and stakeholders. Real-time reporting and customizable dashboards offer immediate feedback, supporting agile workflows and informed decision-making. + +Moreover, ReportPortal’s flexibility allows teams to tailor the platform to their unique project requirements, from setting quality standards to automating integrations with existing tools through its REST API. These features help teams boost testing efficiency and reliability, making ReportPortal a complete solution for taking test automation to the next level with collaborative dashboards in test reporting. + +To see ReportPortal’s features in practice, check out our [demo instance](https://demo.reportportal.io/). + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.1/glossary/img/Glossary1.png b/versioned_docs/version-26.1/glossary/img/Glossary1.png new file mode 100644 index 0000000000..fc40e2f5b1 Binary files /dev/null and b/versioned_docs/version-26.1/glossary/img/Glossary1.png differ diff --git a/versioned_docs/version-26.1/glossary/img/Glossary2.png b/versioned_docs/version-26.1/glossary/img/Glossary2.png new file mode 100644 index 0000000000..0473ba8ea3 Binary files /dev/null and b/versioned_docs/version-26.1/glossary/img/Glossary2.png differ diff --git a/versioned_docs/version-26.1/glossary/img/Glossary3.png b/versioned_docs/version-26.1/glossary/img/Glossary3.png new file mode 100644 index 0000000000..c6c54b7c90 Binary files /dev/null and b/versioned_docs/version-26.1/glossary/img/Glossary3.png differ diff --git a/versioned_docs/version-26.1/glossary/img/Glossary4.png b/versioned_docs/version-26.1/glossary/img/Glossary4.png new file mode 100644 index 0000000000..47158611c0 Binary files /dev/null and b/versioned_docs/version-26.1/glossary/img/Glossary4.png differ diff --git a/versioned_docs/version-26.1/glossary/img/Glossary5.png b/versioned_docs/version-26.1/glossary/img/Glossary5.png new file mode 100644 index 0000000000..a696362792 Binary files /dev/null and b/versioned_docs/version-26.1/glossary/img/Glossary5.png differ diff --git a/versioned_docs/version-26.1/glossary/img/Glossary6.png b/versioned_docs/version-26.1/glossary/img/Glossary6.png new file mode 100644 index 0000000000..8ac01c0670 Binary files /dev/null and b/versioned_docs/version-26.1/glossary/img/Glossary6.png differ diff --git a/versioned_docs/version-26.1/glossary/img/Glossary7.png b/versioned_docs/version-26.1/glossary/img/Glossary7.png new file mode 100644 index 0000000000..7539f5e746 Binary files /dev/null and b/versioned_docs/version-26.1/glossary/img/Glossary7.png differ diff --git a/versioned_docs/version-26.1/glossary/img/Glossary8.png b/versioned_docs/version-26.1/glossary/img/Glossary8.png new file mode 100644 index 0000000000..4e4a2c11ff Binary files /dev/null and b/versioned_docs/version-26.1/glossary/img/Glossary8.png differ diff --git a/versioned_docs/version-26.1/glossary/img/Glossary9.png b/versioned_docs/version-26.1/glossary/img/Glossary9.png new file mode 100644 index 0000000000..63dfe11b6b Binary files /dev/null and b/versioned_docs/version-26.1/glossary/img/Glossary9.png differ diff --git a/versioned_docs/version-26.1/glossary/index.mdx b/versioned_docs/version-26.1/glossary/index.mdx new file mode 100644 index 0000000000..464502184d --- /dev/null +++ b/versioned_docs/version-26.1/glossary/index.mdx @@ -0,0 +1,89 @@ +--- +sidebar_position: 23 +sidebar_label: Glossary +description: Explore ReportPortal terminology like agents, clients, loggers, launches, and widgets to understand how test reporting and analysis work across the platform. +--- + +# Glossary + +## Agent + +Agents are direct test framework integrations. If you integrate your tests with an agent then you don’t need to do anything, except adding properties and test metadata. Basically, each agent has the same naming convention: agent-{ language }-{ framework }. E.G. “agent-python-pytest”. The best way to see which agents we do have and check out the latest documentation for them is to go on ReportPortal organization page on GitHub and start searching. + + + +Each agent project contains a README with the latest installation instructions. Agent pages usually are being updated along with the agent code. If you found any issue with the documentation you are free to correct it with a PR or post an issue. + +Agents are complete and self-sufficient integrations, all you need is to provide correct properties and optionally test metadata (like attributes and steps). + +## Client + +Clients are basically interfaces for our Rest API, like agents they have its naming convention: client-{ language }. E.G. “client-java”. And, like Agents, the best way to find the latest library version and documentation is to find it on GitHub. + + + +Unlike agents, Clients are not self-sufficient. They provide convenient way to call ReportPortal API, but you must do this in your code. It is also your part of responsibility which metadata you send to ReportPortal if you decided to use a Client. + +## Logger + +Loggers are special type of libraries which a responsible for saving logs into ReportPortal. They can be attached to logging framework or a test tool, E.G. Selenide, to report steps and log records. Basically, you can report logs yourself with certain methods inside Clients, but Loggers do this for you. + +Here is an example of how OkHttp3 logger works: + + + +Like agents and clients, loggers have their own naming pattern: logger-{ language }-{ framework / tool }. + +## Plugin + +Plugins are co-applications which add additional functionality to ReportPortal. We have separate examples and development guide for our users. You are free to extend our test automation results dashboard as you wish, we don’t limit or obligate our users with any clauses. ReportPortal provides some plugins for free like Jira and Rally integrations but also has closed plugins, which we provide only with our paid plans, e.g., “Quality Gates” plugin: + + + +## Launch + +The first reporting-related word in our list. The Launch is a collection of all reported tests which were run at single test execution. Launches allows you to monitor your application-under-test state. The idea is that you take certain number of tests and test suites and run them periodically on different environments and our widgets draws you the picture of your application health from launch to launch. You are not obligated to stop adding new test reports into a launch after the launch finish, you are free to add more data. Or, for example, you can create several Launches and merge them into one. Or run your tests in a distributed way and report everything into a single Launch. The key concept here is that Launch is the biggest data point on our widgets, everything else is up to you. + + + +## Suite + +For the convenience of locating and navigating data, you can put your tests into test suites. Features, Stories, Suites, Test Classes, Test (sic!), etc., they are all Suites from ReportPortal view, just with different names. Suites are hierarchical, to put one Suite inside another you should specify Parent Suite UUID. Also, as a limitation, child Suite and Items start time should not be earlier than Parent Suite start time due to Database limitations, please keep that in mind. + + + +## Step + +Step is the only entity with statistics in our centralized test automation tool. Every time you report a step, ReportPortal adds 1 to test count and every time a Step fails it counts it as a test failure. + + + +## Nested step + +Nested steps are like suites but located as child step elements. They are like containers for test logs and represented as dropdown lists inside Log View. On the screen below Nested step is the first entity. + + + +## Log + +Logs are textual data necessary for debugging and problem solving. Our Analyzer uses them in the same way. Logs should be neat and informative, but not too much verbose. Tons of logs usually the same problem as their full absence. + + + +## Test Case ID + +The ID which is used along with Steps. It is unique signature of tests by which we build test history. In general, you don’t need to manipulate these IDs, since every agent usually generates them with Code reference and parameters. But if you want to customize your history view this is the first point where to look. Agents usually generate Test Case IDs based on code reference and have a way to customize it. + + + +## Before Method + +A lifecycle hook or method provided by test frameworks that is executed before a test case or test suite starts. In the context of ReportPortal, it is used to initialize test data, set up configurations, or send a "start test" event to ReportPortal to log the beginning of a test execution. + +## After Method + +A lifecycle hook or method provided by test frameworks that is executed after a test case or test suite finishes. In the context of ReportPortal, it is used to clean up resources, log results, or send a "finish test" event to ReportPortal to log the completion of a test execution along with its status (e.g., passed, failed, skipped). + +## Test Executions + +Test Executions is a unified space in ReportPortal where you can view and analyze all executed tests from multiple launches in one convenient, flat view. It lets you quickly find and review any test without navigating through launch hierarchies, making it easier to understand what passed, failed, or needs attention. With simple filtering and customizable columns, Test Executions help teams work faster, spot issues sooner, and keep testing results organized — even when dealing with many automated runs. diff --git a/versioned_docs/version-26.1/installation-steps-advanced/AdditionalConfigurationParameters.md b/versioned_docs/version-26.1/installation-steps-advanced/AdditionalConfigurationParameters.md new file mode 100644 index 0000000000..5488600a5f --- /dev/null +++ b/versioned_docs/version-26.1/installation-steps-advanced/AdditionalConfigurationParameters.md @@ -0,0 +1,22 @@ +--- +sidebar_position: 9 +sidebar_label: Additional configuration parameters +description: Optimize ReportPortal setup with customizable parameters - ports, session timeouts, database and API settings via Docker-friendly environment variables. +--- + +# Additional configuration parameters + +| Configuration parameter | Default Value | Service | Description | +|-------------------------| ------------- | --------|-------------| +| RP_PROFILES | - | API,UAT | Specifies application settings profiles. Should be set to 'docker' | +| RP_SESSION_LIVE | 3600 | UAT | Session token live time in seconds| +| RP_SERVER_PORT | 8080 | UI | UI service port | +| POSTGRES_SERVER | postgres | API,UAT,MIGRATIONS | PostgreSQL host | +| POSTGRES_PORT | 5432 | API,UAT,MIGRATIONS | PostgreSQL port | +| POSTGRES_USER | rpuser | API,UAT,MIGRATIONS | PostgreSQL user name | +| POSTGRES_PASSWORD | rppass | API,UAT,MIGRATIONS | PostgreSQL user password | +| POSTGRES_DB | reportportal | API,UAT,MIGRATIONS | PostgreSQL database name | +| RABBITMQ_DEFAULT_USER | rabbitmq | API,ANALYZER | PostgreSQL database name | +| RABBITMQ_DEFAULT_PASS | rabbitmq | API,ANALYZER | PostgreSQL database name | + +[Example of docker compose](https://github.com/reportportal/reportportal/blob/master/docker-compose.yml) with filled out configuration parameters. diff --git a/versioned_docs/version-26.1/installation-steps-advanced/AmazonALBNGINXIngressController.md b/versioned_docs/version-26.1/installation-steps-advanced/AmazonALBNGINXIngressController.md new file mode 100644 index 0000000000..520c1876d5 --- /dev/null +++ b/versioned_docs/version-26.1/installation-steps-advanced/AmazonALBNGINXIngressController.md @@ -0,0 +1,113 @@ +--- +sidebar_label: Amazon Application Load Balancer Configuration Guide +description: Configure Amazon ALB and NGINX Ingress Controller for ReportPortal test automation reporting tools on AWS EKS. +--- + +# Amazon Application Load Balancer Configuration Guide + +This article describe how to deploy Amazon Application Load Balancer & NGINX Ingress Controller in Amazon EKS. + +## Deploy NGINX Ingress Helm Chart with specific configuration + +Before get started, ensure NGINX Ingress is not yet deployed on your Amazon EKS cluster. + +First, add and update the [Bitnami Helm chart](https://github.com/bitnami/charts/tree/main/bitnami/nginx-ingress-controller/) repository: + +```bash +helm repo add bitnami https://charts.bitnami.com/bitnami +helm repo update bitnami +``` + +Now, deploy the NGINX Ingress controller with the following configuration: + + +```bash +helm install gateway \ + --set service.type=NodePort \ + --set defaultBackend.enabled=false \ + --set service.nodePorts.http="30080" \ + --set service.nodePorts.https="30443" \ + -n nginx-ingress \ + --create-namespace \ + bitnami/nginx-ingress-controller \ + --wait +``` + +This will set up the NGINX Ingress controller with NodePort service type, using ports 30080 for HTTP and 30443 for HTTPS. The deployment will be named "gateway" in the "nginx-ingress" namespace. + +## Request/Import SSL certificate in AWS Certificate Manager + +:::note +Before requesting the certificate, you probably need to create a domain name in AWS. If you haven't done this before, follow this guide to create a Hosted Zone in Route 53: [Creating a public hosted zone](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/CreatingHostedZone.html) +::: + +To request a certificate provided by ACM for a domain name: + +1. Sign in to the [AWS Certificate Manager console](https://console.aws.amazon.com/acm). +2. Select **Request a certificate**. +3. Enter your API's custom domain name, for example, `reportporta.k8s.com`, in the **Domain name** field. +4. Optionally, you can add another name to this certificate. +5. Click **Review and request**. +6. Click **Confirm and request**. +7. To ensure a valid request, a registered owner of the internet domain must consent to the request before ACM issues the certificate. + +To import a certificate into ACM for a domain name, follow the official guide: [Getting certificates ready in AWS Certificate Manager](https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains-prerequisites.html). + +## Create Target Group for NGINX Ingress + +After requesting certificate in AWS Certificate Manager, the next step is to create a Target Group to route traffic to your NGINX Ingress controller. + +Follow these steps to create a target group: + +1. Sign in to the [EC2 console](https://eu-central-1.console.aws.amazon.com/ec2/home?region) and choose Target Groups at the bottom of the left panel. +2. Click on **Create Target Groups**. +3. Fill in required data: + - Target type: **Instances**. + - Target group name: **rp-k8s-tg**. + - Protocol: **HTTPS: 30443**. + - IP address type: **IPv4**. + - Choose your VPC. + - Protocol version: **HTTP1**. + - Health check protocol: **HTTPS**. + - Health check path: **/healthz**. +4. Click on **Next**. +5. Add your Amazon EKS Nodes as pending. +6. **Create**. + +This target group will allow you to route traffic to your NGINX Ingress controller efficiently + +## Create Application Load Balancer form Amazon Console + +Now, let's create an Application Load Balancer (ALB) to route traffic to our NGINX Ingress controller: + +1. Open [EC2 console](https://eu-central-1.console.aws.amazon.com/ec2/home?region) and choose Load Balancer at the bottom of the left pane +2. Click on **Create Load Balancer**. +3. Choose Application Load Balancer and click **Create**. +4. Fill in required data: + - Load balancer name: **rp-k8s-alb**. + - Scheme: depends on your requirements it may be **internet-facing** or **internal**. + - IP address type: **IPv4**. + - Network mapping: Choose your VPC and **public** subnets if you choose internet-facing or **private** if you choose internal scheme. + - Security groups: Choose the **Cluster security group** that allows traffic from/to the EKS cluster and the security group that allows traffic from the internet or your VPC. + - Listeners and routing: **HTTPS: 443**, Forward to the aready created Target group **rp-k8s-tg**. + - Secure listener settings: Choose Security policy depends on your requirements. + - Choose the certificate you requested/imported in ACM. +5. Click on **Create load balancer**. + +This will create an ALB that routes traffic to the NGINX Ingress controller. + +## Deploy ReportPortal Helm Chart to Amazon EKS + +Before deploying ReportPortal to your Amazon EKS cluster, make sure to update the Ingress Nginx configuration in your `values.yaml` file as follows: + +```yaml +<...> +ingress: + enable: true + hosts: + - reportporta.k8s.com + class: nginx +<...> +``` + +Follow the official guide [Deploy ReportPortal with Kubernetes](/installation-steps/DeployWithKubernetes) to complete the deployment. diff --git a/versioned_docs/version-26.1/installation-steps-advanced/BackupRestoreGuide.md b/versioned_docs/version-26.1/installation-steps-advanced/BackupRestoreGuide.md new file mode 100644 index 0000000000..8590431df4 --- /dev/null +++ b/versioned_docs/version-26.1/installation-steps-advanced/BackupRestoreGuide.md @@ -0,0 +1,231 @@ +--- +sidebar_position: 7 +sidebar_label: Backup & Restore Guide +description: Safeguard your ReportPortal data by learning how to back up and restore its PostgreSQL database and binary storage quickly and reliably. +--- + +# Backup & Restore Guide + +## Introduction + +In this article, we delve into the essential elements of ReportPortal that require meticulous backup procedures. **The two critical components under scrutiny are the database, which relies on PostgreSQL, and the binary storage, represented as Docker volume or Persistent Volume Claims (PVC) for Kubernetes**. Understanding the significance of safeguarding these components is paramount for maintaining the integrity and reliability of your ReportPortal. + +:::note + It is important to understand that there are various options available for both backing up and restoring ReportPortal database and binary storage. This article provides an illustrative example of one such option. +::: + +## Docker-based Backup and Restore Processes +### PostgreSQL Backup Process + +Create a backup of the PostgreSQL database using the `pg_dump` command: + +```bash +DB_USER=rpuser +DB_NAME=reportportal +DB_CONTAINER=postgres + + +docker exec -t $DB_CONTAINER pg_dump -U $DB_USER -d $DB_NAME > reportportal_docker_db_backup.sql +``` + +Explanation: +- `docker exec -t $DB_CONTAINER`: Executes a command inside the specified Docker container (Pod). +- `pg_dump -U $DB_USER -d $DB_NAME`: Initiates the PostgreSQL dump, specifying the username and database name. +- `> reportportal_db_backup.sql`: Redirects the dump output to a file named `backup.sql`. + +Make sure to replace placeholders like `DB_CONTAINER`, `DB_USER`, and `DB_NAME` with your container pod name, PostgreSQL username, and database name. + +### PostgreSQL Restore Process + +:::important +Ensure that PostgreSQL is running as a standalone service before starting ReportPortal. Deploy ReportPortal only after the database has been successfully restored +::: + +#### 1. Deploy PostgreSQL as a Standalone Service + +Start the PostgreSQL container using Docker Compose: + +```bash +docker compose up -d postgres +``` + +> This brings up only the `postgres` service defined in your `docker-compose.yml`. + +#### 2. Restore the PostgreSQL Database Backup + +Set the required environment variables: + +```bash +DB_CONTAINER=postgres +DB_USER=rpuser +DB_NAME=reportportal +``` + +Restore the database from your backup file: + +```bash +docker exec -i $DB_CONTAINER psql -U $DB_USER -d $DB_NAME < reportportal_docker_db_backup.sql +``` + +> Ensure the backup file `reportportal_docker_db_backup.sql` is in your current working directory. + +#### 3. Deploy ReportPortal + +Once the database is restored, bring up the full ReportPortal stack: + +```bash +docker compose up -d +``` + +This command launches all remaining services, including all the ReportPortal services and components. + +### Binary Storage Backup Process + +The simple way to back up binary storage is to back up the volume’s directory (by default, the path is /var/lib/docker/volumes/volume_hash). + +:::important +The following method is available from ReportPortal version 24.1. +::: + +```bash +VOLUME_NAME=reportportal_storage + +docker run --rm -v "$VOLUME_NAME":/data -v "$(pwd)":/backup busybox tar -zcvf /backup/reportportal_storage_backup.tar.gz /data +``` + +Explanation: +* `docker run`: This command runs a Docker container. +* `--rm`: This flag removes the container once it has completed its execution. This is useful for temporary containers, such as when performing a one-off task like creating a backup. +* `-v "$VOLUME_NAME":/storage_backup`: This option creates a volume mount between the host machine and the container. It mounts the Docker volume named by the `reportportal_storage` variable to the path `/storage_backup` inside the container. +* `-v "$(pwd)":/backup`: This option mounts the current working directory (`$(pwd)`) on the host machine to the path `/backup` inside the container. This is where the backup file will be stored. +* `busybox`: This specifies the Docker image to be used for the container. In this case, it uses the BusyBox image, which is a lightweight and minimalistic Linux distribution often used for simple tasks. +* `tar -zcvf /backup/reportportal_storage_backup.tar.gz /storage_backup`: This part of the command runs the `tar` command inside the container to create a compressed tar archive (`reportportal_storage_backup.tar.gz`). + +### Binary Storage Restore Process + +Restore the backup using the following command: + +```bash +VOLUME_NAME=reportportal_storage + +docker run --rm -v $VOLUME_NAME:/data -v $(pwd):/backup busybox tar -xzvf /backup/reportportal_storage_backup.tar.gz -C / +``` + +## Kubernetes-based Backup and Restore Processes + +### Backup Processes + +:::note +Kubernetes Private Volume Claim backups is made easier with your managed system (e.g. VMWare or Cloud-based tools). You can create snapshots from volumes and attach them to the new environment. This approach is more simpler than the commands described below. +::: + +If you don't have any high-level managed systems for your Kubernetes cluster, you can use `VolumeSnapshot`. This API resource is designed to create volume snapshots for both users and administrators within the Kubernetes cluster. + +This article uses the official Kubernetes documentation [Volume Snapshots](https://kubernetes.io/docs/concepts/storage/volume-snapshots/) and [Restore Volume from Snapshot Support](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#volume-snapshot-and-restore-volume-from-snapshot-suppot) + +:::info +The following example tested on **Kubernetes version 1.28** + +Choosing the correct version of CSI is crucial. Make sure to consult the documentation to ensure you select the appropriate version: [Volume Snapshots](https://kubernetes.io/docs/concepts/storage/volume-snapshots/), [CSI Driver](https://kubernetes-csi.github.io/docs/drivers.html), [CSI Introduction](https://kubernetes-csi.github.io/docs/introduction.html), [CSI Driver Host Path (On-Premise)](https://github.com/kubernetes-csi/csi-driver-host-path#deployment) +::: + +1. Install the CRD first. Be sure to pay attention to the version `snapshotter/v6.3.3/client` and adjust it based on your Kubernetes version: + +```bash +kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v6.3.3/client/config/crd/snapshot.storage.k8s.io_volumesnapshotclasses.yaml +``` + +```bash +kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v6.3.3/client/config/crd/snapshot.storage.k8s.io_volumesnapshotcontents.yaml +``` + +```bash +kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v6.3.3/client/config/crd/snapshot.storage.k8s.io_volumesnapshots.yaml +``` + +2. Install the Snapshot Controller `v6.3.3` for Kubernetes `1.28` + +```bash +kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v6.3.3/deploy/kubernetes/snapshot-controller/setup-snapshot-controller.yaml +``` + +```bash +kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v6.3.3/deploy/kubernetes/snapshot-controller/rbac-snapshot-controller.yaml +``` + +3. Create VolumeSnapshotClass resource: + +```bash +kubectl apply -f - <:8086"] + database = "telegraf" +``` + +Search for the "inputs.docker" and update next configs(should be uncommented each value which you need to add to the monitoring): + +```yaml + [[inputs.docker]] + endpoint = "unix://var/run/docker.sock" + perdevice_include = ["cpu"] + total_include = ["cpu", "blkio", "network"] +``` + +Search for the "inputs.net" for adding the network metrics to the monitoring. Uncomment only the plugin name: + +```yaml + [[inputs.net]] +``` + +Save changes, close "telegraf.conf" and start telegraf service: + +```yaml + sudo systemctl enable --now telegraf +``` + +Check the status(should be green and in active running status): + +```yaml + sudo systemctl status telegraf +``` + +In case of errors _"E! [inputs.docker] Error in plugin: Got permission denied while trying to connect to the Docker daemon socket at unix://var/run/docker.sock Permission denied"_ + +Need to add permissions to the _/var/run/docker.sock_: + +```yaml + sudo chmod 666 /var/run/docker.sock +``` + +### PGHero - simple monitoring dashboard for PostgreSQL + +#### Functionality + +- requests statistic: number of calls, average and total execution time (with the ability to store history); +- currently active queries; +- information about tables: disk space occupied, dates of the last **VACUUM** and **ANALYSE** launches; +- information about indexes: disk space occupied, presence of duplicated / unused indexes; +- recommendations regarding adding an index on complex queries with **Seq Scan**; +- statistics on open connections to the database; +- displaying basic database settings that affect performance (**shared_buffers**, **work_mem**, **maintenance_work_mem**, etc.). + +#### Installation + +**How to enable query stats** + +In the database settings(for RDS database - in parameter group) add/change the following parameters: + +```yaml + shared_preload_libraries = 'pg_stat_statements' + pg_stat_statements.track = all + pg_stat_statements.max = 10000 + track_activity_query_size = 2048 +``` + +Restart the database or reboot the RDS instance. +As a superuser from the psql console, run: + +```yaml + CREATE extension pg_stat_statements; +``` + +**How to configure historical query stats** + +To track query stats over time, create a table to store them. + +Execute the following query for table creation: + +```yaml + CREATE TABLE "pghero_query_stats" ( + "id" bigserial primary key, + "database" text, + "user" text, + "query" text, + "query_hash" bigint, + "total_time" float, + "calls" bigint, + "captured_at" timestamp + ); +``` + +Build index on the created table: + +```yaml + CREATE INDEX ON "pghero_query_stats" ("database", "captured_at"); +``` + +Include the following to the installation string to schedule the task to run every 5 minutes: + +```yaml + bin/rake pghero:capture_query_stats +``` + +The query stats table can grow large over time. Remove old stats with: + +```yaml + bin/rake pghero:clean_query_stats +``` + + + + diff --git a/versioned_docs/version-26.1/installation-steps-advanced/ComponentsOverview.md b/versioned_docs/version-26.1/installation-steps-advanced/ComponentsOverview.md new file mode 100644 index 0000000000..6a02922f54 --- /dev/null +++ b/versioned_docs/version-26.1/installation-steps-advanced/ComponentsOverview.md @@ -0,0 +1,41 @@ +--- +sidebar_position: 1 +sidebar_label: Components Overview +description: ReportPortal Components Overview page explains each service - Gateway, API, UAT, Analyzer, Migrations, Index, UI - to help you configure and scale your system effectively. +--- + +# Components Overview + +## Gateway +Gateway is a main entry point to application services. It is in-charge of routing requests to appropriate service and load balancing. +There are two options proposed: +* [Traefik](https://traefik.io) for Docker installation +* [NGINX Ingress Controller](https://www.nginx.com/products/nginx/kubernetes-ingress-controller) for Kubernetes + +## API Service +The API service is the core of ReportPortal TestOps tool. It is in-charge of handling incoming requests from agents and UI. + +## UAT Service +The UAT (Unified Authorization Trap) service is module that authenticate users and creates/revokes user tokens. +It supports various types of authentication mechanisms: +* Basic Auth +* GitHub Auth (OAuth2) +* LDAP Auth +The UAT service itself is a OAuth2 server that authenticates a user using mechanisms mentioned +below and creates internal OAuth2 token which is used by UI and agents. There are two types of tokens: +* UI (expiring token) +* API - non-expiring token, intended to use on agent side + +## Analyzer Service +Keeps index of user logs per project and provides ability to perform search by that index. Used by auto-analysis functionality. +Collects and processes the information, then sends it to OpenSearch. + +## Migrations Service +Database migrations written in Go. Migrate reads migrations from sources and applies them in correct order to a database. + +## Index Service +The Index services handle requests that do not match any pattern of other services. +It also aggregates some information/health data from other services to provide UI with that information. + +## UI Service +All statics for user interface. diff --git a/versioned_docs/version-26.1/installation-steps-advanced/DeployWithAWSECSFargate.md b/versioned_docs/version-26.1/installation-steps-advanced/DeployWithAWSECSFargate.md new file mode 100644 index 0000000000..5b540dfb61 --- /dev/null +++ b/versioned_docs/version-26.1/installation-steps-advanced/DeployWithAWSECSFargate.md @@ -0,0 +1,193 @@ +--- +sidebar_position: 14 +sidebar_label: Deploy with AWS ECS Fargate +description: Deploy ReportPortal on AWS ECS Fargate for scalable test automation reporting with serverless container management. +--- + +# Deploy with AWS ECS Fargate + +***This guide is for version RP 23.1 and earlier.*** + +***Provided by contributor, not verified by RP team, please use with caution.*** + +ReportPortal can be deployed using AWS ECS Fargate by interpreting the [docker-compose.yml](https://raw.githubusercontent.com/reportportal/reportportal/master/docker-compose.yml) + +### Prerequisites +Ensure following services are available in the chosen AWS region & you have permissions to create/modify the resources. + +1. Elastic File System +2. Aurora PostgreSQL Serverless RDS instance +3. AWS EC2 +4. AWS Secrets Manager +5. AWS Lambda +6. AWS ECS +7. AWS Cloudwatch +8. AWS IAM +9. AWS KMS +10. Route53 + +### Deployment + +#### Elastic File System +Create Elastic FileSystem with 2 access points i.e., for minio & elasticsearch. +#### PostreSQL database +Create Aurora Serverless RDS PostgreSQL instance (Engine Version: 13.6) with minimum 2 ACUs and maximum 16 ACUs +#### Load Balancer +Create Elastic Application LoadBalancer - internal OR internet facing (based on your requirement) with following target groups +1. Traefik with target as IP, port 8080 and health-check path `/ping`. +2. Index with target as Lambda & health checks disabled. + +Also, create following rules on the listener of load-balancer +1. Default rule should forward requests to Traefik target group. +2. Paths matching pattern `/composite/info`, `/composite/health`, `/ui` & `/` should be forwarded to Index target group. + +#### KMS Key +Create a symmetric encryption KMS key with relevant permissions to manage & access key. + +#### Secrets +Create Secrets to store the credentials & config of the components & refer the values in ECS task definition environment variables section. For the encryption key choose the custom KMS key created above. + +Secret Structure: +```json +{ + "app_username": "foo", + "app_password: "bar" +} +``` + +During the ECS Task Definition creation choose valueFrom by referring the SecretsManager ARN in the environment variables section as follows +Eg: + +```json + { + "name": "RABBITMQ_DEFAULT_PASS", + "valueFrom": "arn:aws:secretsmanager:us-east-1:XXXXXXXXX:secret:report-portal-rmq-zBcd:app_password::" + } +``` + +#### IAM Role +Create an IAM role with following permissions +1. KMS encryption & decryption +2. SecretsManager Read access +3. ECS Task creation +4. EFS access +5. Write access to CloudWatch log groups + +#### Security Groups +Create Security Groups for +1. Access to application - attach to Load Balancer +2. Access to RP components (with the default ports of apps) & EFS mount (inbound rule to port 2049) - attach to all ECS task definitions. + +#### RP Applications +Most of the configuration remains same for the applications as per the docker-compose.yml file except few overrides as per cloud provider. Ensure the components are deployed within VPC scope & disable public IP assignment where ever applicable. + +**Migrations:** +Create Task Def for migrations & just run the task to apply the database schema. Since it's a one time task there's no need to create service. + +**Minio & Elasticsearch:** +Create Task Def for these components by adding Elastic File System mountpoints & launch the services. + +**RabbitMQ** +Create Task Def for RabbitMQ by mapping the credentials from SecretsManager in the environment variables. + +**API, jobs, analyzer, analyzer-train & ui:** + +Create Task Def for each of these components & add dockerlabel with `@ecs` suffix as per the provider. +Eg: "traefik.http.routers.api.middlewares": "api-strip-prefix@ecs" + +**Traefik:** + +a. Create Task Def with following configuration (Launch Type as Fargate) + - image: "traefik:v2.4", + - entryPoint: "traefik" + - command: "--providers.ecs=true", "--ping=true", "--ping.entrypoint=web", "--providers.ecs.region=AWS_REGION","--providers.ecs.clusters=report-portal","--providers.ecs.exposedByDefault=false","--providers.ecs.refreshSeconds=60","--entrypoints.web.address=:8080","--entrypoints.traefik.address=:8081","--api.dashboard=true","--api.insecure=true","--log.level=DEBUG","--accesslog=true","--accesslog.format=json" + +b. Create ECS Service mapping to the Traefik Target Group +c. Now inspect the logs of traefik service to see if all RP components are being picked up in the configuration from ECS provider. + +**Index:** +For some obvious reasons the index (with Ruby runtime) service couldn't run on ECS - hence ported to Lambda with Python runtime. +Create a lambda function with 128M memory & 120s timeout with following code. + +Add environment variable `TRAEFIK_SERVICES_URL` with the IP address of Traefik endpoint (it can be fetched from the task details. Eg: http://192.168.2.120:8081) + +mureq can be obtained from [mureq.py](https://github.com/slingamn/mureq/blob/master/mureq.py) - place it beside the `lamda_function.py` file. + +```python +import os +import json +import mureq + + +def lambda_handler(event, context): + print("-------------------EVENT BEGIN-------------------------------") + print(event) + print("-------------------EVENT END-------------------------------") + traefik_services= mureq.get(os.environ['TRAEFIK_SERVICES_URL']) + + if event['path'] == '/composite/info': + rp_status = {} + for service in traefik_services.json(): + if "loadBalancer" in service: + app_name = service['name'].replace('@ecs','') + app_info = mureq.get(service['loadBalancer']['servers'][0]['url'] + '/info') + rp_status.update({app_name: app_info.json()}) + return{ + "statusCode": 200, + "statusDescription": "200 OK", + "isBase64Encoded": False, + "headers": { + "Content-Type": "application/json" + }, + "body": json.dumps(rp_status) + } + if event['path'] == '/composite/health': + rp_health = {} + for service in traefik_services.json(): + if "loadBalancer" in service: + app_name = service['name'].replace('@ecs','') + app_health = list(service['serverStatus'].values())[0] + rp_health.update({app_name: app_health}) + return{ + "statusCode": 200, + "statusDescription": "200 OK", + "isBase64Encoded": False, + "headers": { + "Content-Type": "application/json" + }, + "body": json.dumps(rp_health) + } + if event['path'] == '/': + redirect_url= event['headers']['x-forwarded-proto'] + "://" + event['headers']['host'] + '/ui' + print(redirect_url) + return{ + "statusCode": 301, + "statusDescription": "301 Found", + "isBase64Encoded": False, + "headers": { + "Location": redirect_url + }, + "body": "" + } + + if event['path'] == '/ui': + redirect_url= event['headers']['x-forwarded-proto'] + "://" + event['headers']['host'] + '/ui/' + print(redirect_url) + return{ + "statusCode": 301, + "statusDescription": "301 Found", + "isBase64Encoded": False, + "headers": { + "Location": redirect_url + }, + "body": "" + } +``` + +Now, add this lambda to the Index TargetGroup created earlier. + +#### DNS +Add relevant DNS records in the Route53 hostedzone. + +### Validation +Access the application with default credentials once the DNS record addition is propagated & validate if all sections are loading without errors. diff --git a/versioned_docs/version-26.1/installation-steps-advanced/JobsConfiguration.md b/versioned_docs/version-26.1/installation-steps-advanced/JobsConfiguration.md new file mode 100644 index 0000000000..af5c28c418 --- /dev/null +++ b/versioned_docs/version-26.1/installation-steps-advanced/JobsConfiguration.md @@ -0,0 +1,53 @@ +--- +sidebar_position: 4 +sidebar_label: Jobs configuration +description: Configure ReportPortal jobs for automated data retention and cleanup to keep your system running efficiently and organized. +--- + +# Jobs configuration + +Currently, ReportPortal has 5 configurable jobs for data removing: +* Clean launches +* Clean logs +* Clean attachments info +* Clean attachments binaries +* Project binary storage size recalculation + +Job execution period can be configured using environment variables, where period value should be provided as [**spring cron**](https://www.baeldung.com/cron-syntax-linux-vs-spring) expression: +* `*/30 * * * * *` - every 30 seconds +* `0 */2 * * * *` - every 2 minutes +* `0 0 */24 * * *` - every 24 hours (every day) + +[Job environment variables example for docker](https://github.com/reportportal/reportportal/blob/2b22c61f87674aaf2efc7a973af38004c2517680/docker-compose.yml#L237-L241) + +## Clean launches job + +Clean launches job removes launches, their test items and logs. +Environment variables for configuration with default values: +* `RP_ENVIRONMENT_VARIABLE_CLEAN_LAUNCH_CRON=0 */10 * * * *` - specifies how often job will be started (every 10 minutes) + +## Clean logs job + +Clean logs job removes logs. +Environment variables for configuration with default values: +* `RP_ENVIRONMENT_VARIABLE_CLEAN_LOG_CRON=0 */5 * * * *` - specifies how often job will be started (every 5 minutes) + +## Clean attachments info job + +Clean attachments info job removes attachments data from main **database** storage and puts into **temporary table** to remove binaries from the **file storage** +Environment variables for configuration with default values: +* `RP_ENVIRONMENT_VARIABLE_CLEAN_ATTACHMENT_CRON=0 */2 * * * *` - specifies how often job will be started (every 2 minutes) + +## Clean attachments binaries job + +Clean attachments binaries job uses data from the **temporary table** (filled by previous job) +and removes binaries from the **file storage** +Environment variables for configuration with default values: +* `RP_ENVIRONMENT_VARIABLE_CLEAN_STORAGE_CRON=*/30 * * * * *` - specifies how often job will be started (every 30 seconds) +* `RP_ENVIRONMENT_VARIABLE_CLEAN_STORAGE_CHUNKSIZE=1000` - specifies the size of the batch to be selected from the **temporary table** to be removed + +## Project binary storage size recalculation job + +Project binary storage size recalculation job updates **allocated storage** value of the **project** based on the existing attachments at the moment. +Environment variables for configuration with default values: +* `RP_ENVIRONMENT_VARIABLE_STORAGE_PROJECT_CRON=0 */1 * * * *` - specifies how often job will be started (every minute) diff --git a/versioned_docs/version-26.1/installation-steps-advanced/MaintainCommandsCheatSheet.md b/versioned_docs/version-26.1/installation-steps-advanced/MaintainCommandsCheatSheet.md new file mode 100644 index 0000000000..8639524a30 --- /dev/null +++ b/versioned_docs/version-26.1/installation-steps-advanced/MaintainCommandsCheatSheet.md @@ -0,0 +1,65 @@ +--- +sidebar_position: 8 +sidebar_label: Maintain commands Cheat sheet +description: Quickly manage and troubleshoot your ReportPortal instance with essential Docker commands for installation, backup, cleanup, and service monitoring. +--- + +# Maintain commands Cheat sheet + +**Export as env var:**  + +``` +export RP_PRJ=$(docker ps --filter="name=api" --format="\{{.Names}}" | sed 's/\(.*\)_api_[0-9]*/\1/') +``` + +**Install/restart ReportPortal:**  + +```javascript +docker-compose -p $RP_PRJ up -d --force-recreate +``` + +**Show all logs:**  + +```javascript +docker-compose -p $RP_PRJ logs +``` + +**Show specific logs:**  + +```javascript +docker-compose -p $RP_PRJ logs +``` + +**Delete everything except data:**  + +```javascript +docker-compose -p $RP_PRJ down --rmi -v --remove-orphans +``` + +**Backup / Dump the data:**  + +``` +docker exec pg_dump -U > backup.sql +``` + +**Clean up the data:**  + +``` +docker exec -it psql -U -d +``` + +``` + DROP TABLE schema_migrations; + DROP SCHEMA quartz CASCADE; + DROP SCHEMA public CASCADE; CREATE SCHEMA public; + \q +``` + +**Restore the data:**  + +``` +docker exec -i psql -U -d < backup.sql +``` + + +You can download [PDF file](../installation-steps/resources/CheatSheet.pdf) with commands. diff --git a/versioned_docs/version-26.1/installation-steps-advanced/MigrateOneInstanceToAnother.md b/versioned_docs/version-26.1/installation-steps-advanced/MigrateOneInstanceToAnother.md new file mode 100644 index 0000000000..3cc9e7a2c5 --- /dev/null +++ b/versioned_docs/version-26.1/installation-steps-advanced/MigrateOneInstanceToAnother.md @@ -0,0 +1,41 @@ +--- +sidebar_position: 11 +sidebar_label: Migrate one instance to another +description: Efficiently migrate your ReportPortal instance to AWS by backing up and restoring PostgreSQL, MinIO, and OpenSearch data, ensuring seamless continuity. +--- + +# Migrate one instance to another + +When migrating the ReportPortal to AWS, you'll need to consider the types of storage required to save the data. Here are some storage components that need to be migrated: + +1. PostgreSQL Database Storage (main test data storage). +2. MinIO Storage (test attachments/binaries storage, integrations/plugins storage). +3. OpenSearch (AI indices storage for Auto-Analysis feature). + +Here's a general outline of the steps you should follow for the migration: + +1. **PostgreSQL database backup.**
+ Perform a database backup using the [pg_dump tool](https://www.postgresql.org/docs/current/backup-dump.html#BACKUP-DUMP) or other commands to export the data to a file. +2. **MinIO or binary storage volume backup.**
+ If you have the attachments in the tests and it’s crucial to transfer them to the new instance - you need to migrate MinIO storage to AWS (for example, we recommend using Amazon S3 (Simple Storage Service) for scalable object storage.
+ Perform a backup of the MinIO data directory to ensure that all objects stored in MinIO are included in the backup. Identify the MinIO data directory within your local Docker environment where MinIO stores its objects. In general, it should be the “/data” directory. Transfer the MinIO data directory backup to any appropriate storage solution in the AWS environment. This may involve using Amazon S3 or Amazon EBS. +3. **OpenSearch backup.**
+ It’s needed to save the indices used for AI purposes and the Auto-Analysis feature. However, this step can be omitted in case of successful PostgreSQL backup restoration into the new ReportPortal instance.
+ All you need to do to save your base for the Auto-Analysis feature to keep it working is regenerate index for the project in the Project Settings Tab: + *Project Settings -> Analyzer -> Index Settings -> Actions with index -> Generate index.*
+ Otherwise, backing up OpenSearch may involve using its built-in snapshot and restore functionality to create a backup of the OpenSearch data. +4. **Backup Configuration Files:**
+ a. Identify where the docker-compose and other configuration files are located within the existing ReportPortal environment.
+ b. Make copies of these configuration files for use in the new AWS environment. +5. **Restore PostgreSQL Database.**
+ Once the database is in place, restore the backup into the RDS instance. +6. **Deploy ReportPortal.**
+ It can be a new AWS EC2 instance for Docker installation or AWS Elastic Kubernetes Service. Ensure the configuration files are updated for the new environment as it’s crucial if you have the SAML or other SSO providers. After the deployment, all integrations/plugins may need to be reconfigured to update the links, check the connectivity to the third-party services from the new ReportPortal, etc. +7. **Test the Migration.**
+ Verify that ReportPortal is functioning as expected in the AWS environment. Test all functionalities, including user access and reporting data. +8. **Point DNS.**
+ Once testing is successful, update the DNS records to point to the new location of ReportPortal. + +Please consider referring to the official documentation for PostgreSQL, MinIO, and OpenSearch to make sure that the backup and migration processes are carried out appropriately. + +It's important to note that migrating local ReportPortal to the cloud also involves [infrastructure considerations](/installation-steps/HardwareRequirements), security configurations, and networking setup that need to be in place for a smooth migration. diff --git a/versioned_docs/version-26.1/installation-steps-advanced/QuickStartWithGCPGKE.md b/versioned_docs/version-26.1/installation-steps-advanced/QuickStartWithGCPGKE.md new file mode 100644 index 0000000000..f5524ab454 --- /dev/null +++ b/versioned_docs/version-26.1/installation-steps-advanced/QuickStartWithGCPGKE.md @@ -0,0 +1,374 @@ +--- +sidebar_label: Quick Start Guide for Google Cloud Platform GKE +description: Deploy ReportPortal on Google Cloud Platform GKE for scalable test automation reporting tools with Kubernetes orchestration. +--- + +# Quick Start Guide for Google Cloud Platform GKE + +## Prerequisites + +Before you begin, you need to have a Google Cloud account, a project and install the following +tools: + +- [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) 1.28 or later +- [Helm](https://helm.sh/docs/intro/install/) 3.11 or later +- [google-cloud-cli](https://cloud.google.com/sdk/docs/install-sdk) +- [gke-gcloud-auth-plugin](https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl#install_plugin) + +:::note +For some operation systems we recommend install `google-cloud-sdk` package instead of `google-cloud-cli`. +::: + +## Initialize the gcloud CLI + +[Perform initial setup tasks](https://cloud.google.com/sdk/docs/initializing) and set up your default project: + +```bash +gcloud init +``` + +## Set up Environment Variables + +Set up environment variables: + +```bash +export REPO_LOCATION=us-central1 +export CLUSTER_LOCATION=us-central1-a +export PROJECT_ID={your_project_id} +export CLUSTER_NAME={reportportal_cluster_name} +export REPO_NAME={reportportal_helm_repo_name} +export RELEASE_NAME={reportportal_release_name} +export VERSION={current_chart_version} +export SUPERADMIN_PASSWORD={your_superadmin_password} +``` + +:::note +Here and below we use `us-central1` region as a location for GKE cluster.
+However, you can use any other region. +::: + +## Set up gcloud credential helper + +If you have Docker, you can use the Docker credential helper to authenticate to Artifact Registry. + +Just perform the following commands: + +```bash +gcloud auth login +gcloud auth configure-docker ${REPO_LOCATION}-docker.pkg.dev +``` + +You can find more information about [gcloud credential helper](https://cloud.google.com/artifact-registry/docs/docker/authentication#gcloud-helper). + +## Adjust Google Cloud IAM + +Installation of ReportPortal requires setting up access to your GKE cluster for creating +a service account in GKE and providing permissions for some services to access Kubernetes API. + +For adjusting access, you can do it using [both Identity and Access Management (IAM) +and Kubernetes RBAC](https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control#iam-interaction). + +You can use [Predefined GKE Roles](https://cloud.google.com/kubernetes-engine/docs/how-to/iam#predefined) and update +your account role. To set a service account on nodes, you must also have the Service Account User role (roles/iam.serviceAccountUser). + +:::important +We recommend to create a separate [IAM Service Account](https://cloud.google.com/iam/docs/service-accounts-create) for working with GKE cluster. +::: + +## Create a GKE cluster + +:::important +All GKE clusters are created as public clusters by default. +::: + +You can create [two types](https://cloud.google.com/kubernetes-engine/docs/concepts/types-of-clusters#modes) +of GKE clusters: + +- [Autopilot](https://cloud.google.com/kubernetes-engine/docs/concepts/autopilot-overview) +- [Standard](https://cloud.google.com/kubernetes-engine/docs/concepts/choose-cluster-mode#why-standard) + +:::note +We recommend to use Autopilot mode.
+It is a managed Kubernetes environment that reduces the operational cost. +::: + +### Create a cluster in Autopilot mode + +It's pretty simple to create a cluster in Autopilot mode: + +```bash +gcloud container clusters create-auto ${CLUSTER_NAME} \ + --location=${REPO_LOCATION} +``` + +:::note +You can use the Google Filestore CSI driver for the Autopilot cluster.
+It is enabled by default.
+Minimal storage size for Google Filestore is 1 TB.
+Check the [pricing](https://cloud.google.com/filestore/pricing). +::: + +More information about [creating a cluster in Autopilot mode](https://cloud.google.com/kubernetes-engine/docs/how-to/creating-an-autopilot-cluster). + +### Create a cluster in Standard mode + +For a standard cluster you need to specify a machine type and a number of nodes. + +ReportPortal requires at least 3 nodes with 4 vCPU and 6 GB memory for each in +the Kubernetes with infrastructure dependencies. +We recommend using `custom-4-6144` machine type with 4 vCPU and 6 GB memory +as a minimal configuration. + +If you want avoid using MinIO or Google Cloud Storage, you can use a filesystem storage type +and Google Filestore as a storage class. + +For this, you need to enable the `Google Filestore CSI driver` when creating a cluster: + +```bash +export MACHINE_TYPE=custom-4-6144 + +gcloud container clusters create ${CLUSTER_NAME} \ + --addons=GcpFilestoreCsiDriver \ + --zone=${ZONE} \ + --machine-type=${MACHINE_TYPE} +``` + +or you can enable it after the cluster creation: + +```bash +gcloud container clusters update ${CLUSTER_NAME} \ + --update-addons=GcpFilestoreCsiDriver=ENABLED +``` + +:::note +Minimal storage size for Google Filestore is 1 TB.
+Check the [pricing](https://cloud.google.com/filestore/pricing). +::: + +More information about creating a [cluster in Standard mode](https://cloud.google.com/kubernetes-engine/docs/how-to/creating-a-zonal-cluster#gcloud). + +### Get cluster credentials for kubectl + +```bash +gcloud container clusters get-credentials ${CLUSTER_NAME} \ + --location=${CLUSTER_LOCATION} +``` + +### Verify the cluster mode + +You can verify the cluster: + +```bash +gcloud container clusters describe ${CLUSTER_NAME} \ + --location=${CLUSTER_LOCATION} +``` + +## Prepare Helm package for installation + +At the current moment, you can install ReportPortal on GKE cluster via Helm chart only from +develop branch. + +### Create a repository + +Create a repository in Artifact Registry for ReportPortal Helm charts: + +```bash +gcloud artifacts repositories create ${REPO_NAME} --repository-format=docker \ + --location=${REPO_LOCATION} --description="ReportPortal Helm repository" +``` + +More information about [Store Helm charts in the Artifact Registry](https://cloud.google.com/artifact-registry/docs/helm/store-helm-charts). + +Verify that the repository was created: + +```bash +gcloud artifacts repositories list +``` + +### Authenticate with the repository + +```bash +gcloud auth print-access-token | helm registry login -u oauth2accesstoken \ + --password-stdin https://${REPO_LOCATION}-docker.pkg.dev +``` + +### Build and push Helm chart + +Add GitHub repository on your local machine: + +```bash +git clone https://github.com/reportportal/kubernetes.git +``` + +Build and push the Helm chart to Artifact Registry using actual helm chart version +and your project id: + +```bash +cd kubernetes/reportportal +helm dependency update +helm package . +helm push reportportal-${VERSION}.tgz oci://${REPO_LOCATION}-docker.pkg.dev/${PROJECT_ID}/${REPO_NAME} +``` + +## Install ReportPortal from Artifact Registry + +### Install Helm chart on GKE Autopilot Cluster + +By default, ReportPortal Helm chart install with infrastructure dependencies in GKE Autopilot Cluster: + +- PostgreSQL +- OpenSearch +- RabbitMQ +- MinIO + +You can disable an installation of some components via Helm chart values, but you have to provide +new credentials for your standalone components. + +More information about [Installing the chart with dependencies](https://github.com/reportportal/kubernetes#install-the-chart-with-dependencies). + +For installing ReportPortal on GKE Autopilot Cluster, you need to set the: + +- ingress controller as a `gce` +- superadmin password +- resources requests for api, uat, and analyzer services + +```bash +helm install \ + --set ingress.class="gce" \ + --set uat.superadminInitPasswd.password=${SUPERADMIN_PASSWORD} \ + --set uat.resources.requests.memory="1Gi" \ + --set serviceapi.resources.requests.cpu="1000m" \ + --set serviceapi.resources.requests.memory="2Gi" \ + --set serviceanalyzer.resources.requests.memory="1Gi" \ + ${RELEASE_NAME} \ + oci://${REPO_LOCATION}-docker.pkg.dev/${PROJECT_ID}/${REPO_NAME}/reportportal \ + --version ${VERSION} +``` + +If you want to use Google Filestore instead of MinIO, you need to set +the `storage.type` to `filesystem`, `storage.volume.storageClassName` +to `standard-rwx`, and disable MinIO installation: + +```bash +helm install \ + --set ingress.class="gce" \ + --set uat.superadminInitPasswd.password=${SUPERADMIN_PASSWORD} \ + --set uat.resources.requests.memory="1Gi" \ + --set serviceapi.resources.requests.cpu="1000m" \ + --set serviceapi.resources.requests.memory="2Gi" \ + --set serviceanalyzer.resources.requests.memory="1Gi" \ + --set storage.type="filesystem" \ + --set storage.volume.storageClassName="standard-rwx" \ + --set minio.install=false \ + ${RELEASE_NAME} \ + oci://${REPO_LOCATION}-docker.pkg.dev/${PROJECT_ID}/${REPO_NAME}/reportportal \ + --version ${VERSION} +``` + +:::note +Minimal storage size for Google Filestore is 1 TB.
+Check the [pricing](https://cloud.google.com/filestore/pricing). +::: +> +### Install Helm chart on GKE Standard Cluster + +For installing ReportPortal on GKE Standard Cluster you need to set: + +- ingress controller as a `gce` +- superadmin password + +```bash +helm install \ + --set ingress.class="gce" \ + --set uat.superadminInitPasswd.password=${SUPERADMIN_PASSWORD} \ + ${RELEASE_NAME} \ + oci://${REPO_LOCATION}-docker.pkg.dev/${PROJECT_ID}/${REPO_NAME}/reportportal \ + --version ${VERSION} +``` + +If you want to use Google Filestore instead of MinIO, you need to set +the `storage.type` to `filesystem`, `storage.volume.storageClassName` +to `standard-rwx`, and disable MinIO installation: + +```bash +helm install \ + --set ingress.class="gce" \ + --set uat.superadminInitPasswd.password=${SUPERADMIN_PASSWORD} \ + --set storage.type="filesystem" \ + --set storage.volume.storageClassName="standard-rwx" \ + --set minio.install=false \ + ${RELEASE_NAME} \ + oci://${REPO_LOCATION}-docker.pkg.dev/${PROJECT_ID}/${REPO_NAME}/reportportal \ + --version ${VERSION} +``` + +:::note +Minimal storage size for Google Filestore is 1 TB.
+Check the [pricing](https://cloud.google.com/filestore/pricing). +::: + +## Ingress configuration + +You can add custom gce ingress annotations via `ingress.annotations.gce` parameter: + +```bash +helm install \ +... + --set-json='ingress.annotations.gce={"key1":"value1","key2":"value2"}' +... +``` + +If you have some domain name, set this FQDN to `ingress.hosts`: + +```bash +helm install \ +... + --set ingress.hosts[0].reportportal.k8.com +... +``` + +## Certificate Management + +### Google-managed SSL certificates + +:::note +This is recommended approach for using SSL certificates in GKE. +::: + +You can use Google-managed SSL certificates for your domain name: + +```bash +helm install \ +... + --set ingress.tls.certificate.gcpManaged=true + --set ingress.hosts\[0\]="example.com" +... + +``` + +### Cert-Manager + +You can use [Cert-Manager](https://github.com/reportportal/kubernetes/blob/master/docs/cert-manager-config.md) to manage certificates for your domain name. + +## Clean up + +To delete the cluster: + +```bash +gcloud container clusters delete ${CLUSTER_NAME} --location=${CLUSTER_LOCATION} +``` + +To delete the artifacts repository: + +```bash +gcloud artifacts repositories delete ${CLUSTER_NAME} --location=${REPO_LOCATION} +``` + +### Disable HTTP Load Balancing + +If you want to disable HTTP Load Balancing, you can do it after the certificate +is attached to the Ingress resource: + +```bash +kubectl annotate ingress ${APP_NAME}-gateway-ingress kubernetes.io/ingress.allow-http: "false" +``` diff --git a/versioned_docs/version-26.1/installation-steps-advanced/ScalingReportPortalServices.md b/versioned_docs/version-26.1/installation-steps-advanced/ScalingReportPortalServices.md new file mode 100644 index 0000000000..145bf65c24 --- /dev/null +++ b/versioned_docs/version-26.1/installation-steps-advanced/ScalingReportPortalServices.md @@ -0,0 +1,42 @@ +--- +sidebar_position: 13 +sidebar_label: Scaling ReportPortal services +description: Learn how to dynamically scale ReportPortal services using Docker or Kubernetes, ensuring optimal performance and reliability for your testing infrastructure. +--- + +# Scaling ReportPortal services + +ReportPortal supports dynamic scaling of its API service during runtime to efficiently manage varying loads. This guide provides instructions on how to scale the API service up or down and discusses the implications of asynchronous reporting and queue management in RabbitMQ while scaling. + + ReportPortal also supports the scaling of UAT and UI services. However, it's not recommended to scale the Jobs service due to potential conflicts with cleaning cron jobs, which may lead to database locking issues. + +To effectively scale ReportPortal, you need to follow these steps: + +1. **Additional resources**: Increase capacity by deploying more instances or by enhancing the resources (CPU and memory) of existing ones. +2. **Load Balancing**: The Traefik (for Docker) and Ingress Controller (for Kubernetes) are already set up to automatically distribute incoming requests among all active services. +3. **AMQP settings:** Performance improvements can be achieved by increasing the queue count and adjusting the prefetch count per consumer. These adjustments allow for more efficient processing and resolution of messages within the queues. For more detailed information, refer to the article [Asynchronous Reporting](/developers-guides/AsynchronousReporting/#exchanges-and-queues-for-reporting). + +## Kubernetes Configuration + +1. **Scaling Services**: To scale your [ReportPortal services in Kubernetes](https://github.com/reportportal/kubernetes), you need to increase the replica count parameter in the `values.yaml` file for the required services. For example, to scale the API service, adjust the `replicaCount` as shown below: + + ```yaml + serviceapi: + replicaCount: 2 + ``` + +2. **Load Balancing**: The Ingress Controller is already set up to automatically distribute incoming requests among all active services. However, to enhance control over idle TCP connections adjust the IDLE Timeout value to `300`. + +## Docker Configuration + +1. **Scaling Services**: To scale your [ReportPortal services in Docker](https://github.com/reportportal/reportportal/blob/master/docker-compose.yml), you need to add a replica parameter in the `docker-compose.yml` file for the required services. For example, to scale the API service, adjust the `replicas` as shown below: + + ```yaml + services: + + api: + deploy: + replicas: 2 + ``` + +2. **Load Balancing**: The Traefik is already set up to automatically distribute incoming requests among all active services. diff --git a/versioned_docs/version-26.1/installation-steps-advanced/SetupTLSHTTPSDockerComposeTraefikV2.md b/versioned_docs/version-26.1/installation-steps-advanced/SetupTLSHTTPSDockerComposeTraefikV2.md new file mode 100644 index 0000000000..77349399e5 --- /dev/null +++ b/versioned_docs/version-26.1/installation-steps-advanced/SetupTLSHTTPSDockerComposeTraefikV2.md @@ -0,0 +1,248 @@ +--- +sidebar_position: 10 +sidebar_label: Setup TLS / HTTPS Docker Compose + Traefik v2 +description: Practical guide to setting up TLS/HTTPS in our test results dashboard +--- + +# Setup TLS / HTTPS Docker Compose + Traefik v2 + +This guide documents how to enable HTTPS for a ReportPortal Docker Compose deployment using **Traefik v2** as the reverse proxy. It covers both **self-signed certificates** (for local or internal testing) and **Let’s Encrypt certificates** (for publicly trusted TLS). + +## 1. Supported TLS Scenarios + +| **Certificate Type** | **Environment** | **Public Internet Required** | +| ----------- | ----- | ------------ | +| Self-signed (OpenSSL) | Localhost / Internal VPC | No | +| Let’s Encrypt (HTTP-01) | Public EC2 + Route 53 | Yes | +| Let’s Encrypt (DNS-01) | Private VPC | No | + +:::important +Let’s Encrypt HTTP-01 validation requires **public internet reachability**.
+Deployments in private subnets without an Internet Gateway **must use DNS-01** instead. +::: + +## 2. Test Environment (Reference) + +**AWS Infrastructure (HTTP-01 scenario)** + +| **Component** | **Specification** | +| ----------- |----------------------------------| +| EC2 | t3.medium (2 vCPU, 4 GB RAM) / +| OS | Ubuntu 24.04 / Amazon Linux 2023 | +| Subnet | Public subnet with IGW | +| DNS | Route 53 public hosted zone | +| Domain | tls-docker.example.com | + +Using a public subnet removes ambiguity during troubleshooting. + +**Required Security Group Rules** + +| **Type** | **Port** | **Source** | **Purpose** | +| ----------- | ----- | ------------ | ----- | +| HTTP | 80 | 0.0.0.0/0 | ACME HTTP-01 | +| HTTPS | 443 | 0.0.0.0/0 | HTTPS access | +| TCP | 8081 | Your IP | Traefik dashboard | +| SSH | 22 | Your IP | Management | + +## 3. Scenario 1 — Self-Signed Certificates (OpenSSL) + +### 3.1 Generate Certificates + +``` +mkdir -p certs + +openssl genrsa -out certs/reportportal.key 2048 + +openssl req -new -x509 \ + -key certs/reportportal.key \ + -out certs/reportportal.crt \ + -days 365 \ + -subj "/CN=localhost" \ + -addext "subjectAltName=DNS:localhost,IP:127.0.0.1" +``` + +### 3.2 Traefik File Provider (TLS) + +Create ```certs/tls.yml```: + +``` +tls: +certificates: +- certFile: /certs/reportportal.crt +keyFile: /certs/reportportal.key +``` + +### 3.3 Validation — Self-Signed TLS + +**Verify key matches certificate** + +``` +openssl x509 -noout -modulus -in certs/reportportal.crt | openssl md5 +openssl rsa -noout -modulus -in certs/reportportal.key | openssl md5 +``` + +**Trust validation** + +``` +curl -v --cacert certs/reportportal.crt https://localhost +``` + +**Fingerprint comparison** + +``` +oopenssl x509 -in certs/reportportal.crt -noout -fingerprint -sha256 + +openssl s_client -connect localhost:443 /dev/null \ +| openssl x509 -noout -fingerprint -sha256 +``` + +**Subject and validity** + +``` +openssl s_client -connect localhost:443 /dev/null \ +| openssl x509 -noout -subject -issuer -dates +``` + +## 4. Scenario 2 — Let’s Encrypt (HTTP-01) + +### 4.1 Prerequisites (Mandatory) + +* Domain resolves to a **public IP** +* EC2 subnet has route: + +``` +0.0.0.0/0 → Internet Gateway +``` + +* Ports **80** and **443** reachable from the internet + +### 4.2 Prepare ACME Storage + +``` +touch acme.json +chmod 600 acme.json +``` + +### 4.3 Docker Compose — Traefik Gateway + +``` +services: +gateway: +image: traefik:v2.11.32 +restart: unless-stopped +ports: +- "80:80" +- "443:443" +- "8081:8081" +volumes: +- /var/run/docker.sock:/var/run/docker.sock:ro +- ./acme.json:/acme.json +command: +- --providers.docker=true +- --providers.docker.exposedbydefault=false + + - --entrypoints.web.address=:80 + - --entrypoints.websecure.address=:443 + - --entrypoints.traefik.address=:8081 + + - --entrypoints.web.http.redirections.entrypoint.to=websecure + - --entrypoints.web.http.redirections.entrypoint.scheme=https + + - --certificatesresolvers.letsencrypt.acme.email=admin@example.com + - --certificatesresolvers.letsencrypt.acme.storage=/acme.json + - --certificatesresolvers.letsencrypt.acme.httpchallenge=true + - --certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web + + - --api.dashboard=true + - --api.insecure=true +``` + +### 4.4 Service TLS Labels + +``` +labels: +- "traefik.enable=true" +- "traefik.http.routers.app.rule=Host(`tls-docker.example.com`)" +- "traefik.http.routers.app.entrypoints=websecure" +- "traefik.http.routers.app.tls=true" +- "traefik.http.routers.app.tls.certresolver=letsencrypt" +- "traefik.http.services.app.loadbalancer.server.port=8080" +``` + +## 5. Validation — Let’s Encrypt (HTTP-01) + +**DNS resolution** + +``` +dig +short tls-docker.example.com +dig @8.8.8.8 +short tls-docker.example.com +``` + +**TCP reachability** + +``` +nc -vz tls-docker.example.com 80 +``` + +**HTTP reachability** + +``` +curl -v http://tls-docker.example.com +``` + +**ACME challenge path** + +``` +404 Not Found is expected and correct +``` + +**HTTPS validation** + +``` +curl -v https://tls-docker.example.com +``` + +**Certificate issuer verification** + +``` +echo | openssl s_client \ +-connect tls-docker.example.com:443 \ +-servername tls-docker.example.com \ +2>/dev/null | openssl x509 -noout -issuer -subject -dates +``` + +Expected issuer: + +``` +CN = Let's Encrypt +``` + +## 6. Private Subnets — Important Limitation + +If the domain resolves to a **private IP (RFC1918)** or the subnet routes traffic via **NAT Gateway only**, Let’s Encrypt **HTTP-01 will fail**. + +**Symptoms** + +* DNS resolves internally but not publicly +* ACME challenge never triggered +* Traefik serves default certificate + +**Solution**
+Use **DNS-01 validation** with Route 53. + +## 7. Troubleshooting + +| **Issue** | **Cause** | **Resolution** | +|-----------------|------------------|--| +| ACME never triggers | No public ingress | Use DNS-01 | +| Default Traefik cert | No issued cert | Check ACME logs | +| example.com email error | Invalid ACME email | Use real domain | +| Permission denied acme.json | Wrong file mode | chmod 600 | +| 404 from HTTPS | Host rule mismatch | Verify router rule | + +## 8. Summary + +* Self-signed TLS works for **local and internal environments** +* Let’s Encrypt HTTP-01 works **only with public ingress** +* DNS-01 is required for **private VPC deployments** +* Traefik configuration remains identical; only the ACME method changes diff --git a/versioned_docs/version-26.1/installation-steps-advanced/UpgradingPostgreSQLForReportPortalV24.2AndLater.md b/versioned_docs/version-26.1/installation-steps-advanced/UpgradingPostgreSQLForReportPortalV24.2AndLater.md new file mode 100644 index 0000000000..0f5191dd48 --- /dev/null +++ b/versioned_docs/version-26.1/installation-steps-advanced/UpgradingPostgreSQLForReportPortalV24.2AndLater.md @@ -0,0 +1,69 @@ +--- +sidebar_label: Upgrading PostgreSQL for ReportPortal v24.2 and later +description: Upgrade PostgreSQL database for ReportPortal v24.2 and later versions with data preservation. +--- + +# Upgrading PostgreSQL for ReportPortal v24.2 and later + +:::important +This guide is intended for users planning to upgrade from Postgres 12 to a newer version, starting with ReportPortal version 24.2. +::: + +This guide will walk you through backing up your current PostgreSQL database, removing existing containers and volumes, downloading the latest release, and restoring the PostgreSQL dump. + +## Step 0: Backup Postgres and Storage +Before proceeding, ensure you have a complete Postgres database and Storage backup. + +## Step 1: Create a Dump of Database +Run the following command to create a dump of your current PostgreSQL database: + +```bash +docker exec -t postgres pg_dump -U rpuser -d reportportal > reportportal24_1_postgres12_dump.sql +``` + +## Step 2: Remove All Containers +Shut down and remove all containers: + +```bash +docker compose -p reportportal down +``` + +## Step 3: Remove Postgres Volume +Remove the Postgres volume to ensure a clean state for the new database: + +```bash +docker volume rm reportportal_postgres +``` + +## Step 4: Download Latest Release +Fetch the latest `docker-compose.yml` file to get the most recent version of ReportPortal: + +```bash +curl -LO https://raw.githubusercontent.com/reportportal/reportportal/refs/heads/master/docker-compose.yml +``` + +## Step 5: Run Postgres Container +Start only the Postgres container to prepare for database restoration: + +```bash +docker compose -p reportportal up -d postgres +``` + +## Step 6: Restore Postgres Dump +Restore the database dump into the new Postgres container: + +```bash +docker exec -i -e PGPASSWORD=rppass postgres psql -U rpuser -d reportportal < reportportal24_1_postgres12_dump.sql > upgrade_db.log 2>&1 +``` + +## Step 7: Run ReportPortal +Bring up all the services for ReportPortal: + +```bash +docker compose -p reportportal up -d +``` + +## Final Notes +- Verify that all services are running correctly using `docker ps` or checking the logs. +- Keep the log file `upgrade_db.log` for any potential troubleshooting. +- Regular backups are essential. Make sure to have a reliable strategy in place. diff --git a/versioned_docs/version-26.1/installation-steps-advanced/_category_.json b/versioned_docs/version-26.1/installation-steps-advanced/_category_.json new file mode 100644 index 0000000000..b9fd1ed173 --- /dev/null +++ b/versioned_docs/version-26.1/installation-steps-advanced/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "Installation Steps Advanced", + "position": "5", + "link": {"type": "doc", "id": "index"} +} + diff --git a/versioned_docs/version-26.1/installation-steps-advanced/file-storage-options/S3CloudStorage.md b/versioned_docs/version-26.1/installation-steps-advanced/file-storage-options/S3CloudStorage.md new file mode 100644 index 0000000000..1f2465e4a0 --- /dev/null +++ b/versioned_docs/version-26.1/installation-steps-advanced/file-storage-options/S3CloudStorage.md @@ -0,0 +1,363 @@ +--- +sidebar_position: 1 +sidebar_label: S3 Cloud Storage +description: Configure S3 cloud storage for the ReportPortal Flaky Test Detection tool using AWS, MinIO, or other S3-compatible providers. +--- + +# S3 Cloud Storage + +## Access and Secret Keys authentication + +### Docker-based + +ReportPortal supports cloud storage options through the Java library [JCLOUDS](https://jclouds.apache.org/). + +To configure storage using Amazon S3, ReportPortal uses the following environment variables for the services **API**, **Jobs**, and **Authorization**: + +```bash +RP_FEATURE_FLAGS: singleBucket # Enable single-bucket storage (recommended) +DATASTORE_TYPE: aws-s3 +DATASTORE_REGION: us-standard # Region of the bucket (JCloud ref. to `us-east-1`) +DATASTORE_ACCESSKEY: +DATASTORE_SECRETKEY: +DATASTORE_DEFAULTBUCKETNAME: my-bucket # Name of the bucket +``` + +## IAM Role-based authentication + +### Amazon EKS-based + +- [S3 Bucket](#1-s3-bucket) +- [AWS IAM Role](#2-aws-iam-role) + - [Step 1: Define the Trust Policy](#step-1-define-the-trust-policy) + - [Step 2: Create the IAM Role](#step-2-create-the-iam-role) + - [Step 3: Define the Permissions Policy](#step-3-define-the-permissions-policy) + - [Step 4: Attach the Permissions Policy](#step-4-attach-the-permissions-policy) +- [EKS-based Installation](#3-eks-based-installation) + +#### 1. S3 Bucket + +Create an Amazon S3 bucket to store your data. Replace `my-rp-bucket` with a unique bucket name and specify the desired AWS region. + +```bash +aws s3api create-bucket --bucket my-rp-bucket --region us-east-1 +``` + +> To create a bucket outside of the `us-east-1` region, add the following flag: `--create-bucket-configuration LocationConstraint=`, replacing `` with your desired AWS region. + +Ensure that the bucket name adheres to [Amazon S3 bucket naming rules](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). + +#### 2. AWS IAM Role + +To enable secure access to your S3 bucket, you need to create an AWS IAM role with the appropriate trust and permissions policies. + +##### Step 1: Define the Trust Policy + +The trust policy specifies which AWS service or entity is allowed to assume the role. Save the following JSON content to a file named `trust-policy.json`: + +```json +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Federated": "arn:aws:iam::ACCOUNT_ID:oidc-provider/oidc.eks.REGION.amazonaws.com/id/OIDC_ID" + }, + "Action": "sts:AssumeRoleWithWebIdentity", + "Condition": { + "StringEquals": { + "oidc.eks.REGION.amazonaws.com/id/OIDC_ID:aud": "sts.amazonaws.com", + "oidc.eks.REGION.amazonaws.com/id/OIDC_ID:sub": "system:serviceaccount:NAMESPACE:reportportal" + } + } + } + ] +} +``` + +Replace the placeholders with the appropriate values: +- `ACCOUNT_ID`: Your AWS account ID. +- `REGION`: The AWS region where your EKS cluster is deployed. +- `OIDC_ID`: The unique identifier of your OIDC provider. [How to create an IAM OIDC provider for your cluster](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html) +- `NAMESPACE`: The Kubernetes namespace of the service account. +- `reportportal`: The name of the Kubernetes service account. + +This trust policy ensures that only the specified Kubernetes service account can assume the IAM role via the OIDC provider. + +##### Step 2: Create the IAM Role + +Use the AWS CLI to create the IAM role with the trust policy: + +```bash +aws iam create-role --role-name my-rp-s3-role \ + --assume-role-policy-document file://trust-policy.json +``` + +##### Step 3: Define the Permissions Policy + +The permissions policy specifies the actions the IAM role can perform on the S3 bucket. Save the following JSON content to a file named `s3-rw-policy.json`: + +```json +{ + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "AllowListAndLocation", + "Effect": "Allow", + "Action": [ + "s3:ListBucket", + "s3:GetBucketLocation" + ], + "Resource": "arn:aws:s3:::my-rp-bucket" + }, + { + "Sid": "AllowObjectOpsAnywhere", + "Effect": "Allow", + "Action": [ + "s3:PutObject", + "s3:GetObject", + "s3:DeleteObject", + "s3:GetObjectAcl", + "s3:GetObjectVersion" + ], + "Resource": "arn:aws:s3:::my-rp-bucket/*" + } + ] +} +``` + +##### Step 4: Attach the Permissions Policy + +Attach the permissions policy to the IAM role using the AWS CLI: + +```bash +aws iam put-role-policy --role-name my-rp-s3-role \ + --policy-name S3AccessPolicy \ + --policy-document file://s3-rw-policy.json +``` + +By completing these steps, the IAM role will have the necessary permissions to interact with the specified S3 bucket securely. + +#### 3. EKS-based Installation + +To grant a Kubernetes pod on EKS read/write access to S3, use IAM Roles for Service Accounts (IRSA). This approach issues temporary credentials by having the pod assume an IAM role via OIDC + +Update the `values.yaml` file with the appropriate storage configuration: + +```yaml +# Activate Service Account for the ReportPortal application +global: + serviceAccount: + create: true + name: reportportal + annotations: + eks.amazonaws.com/role-arn: "arn:aws:iam::ACCOUNT_ID:role/my-rp-s3-role" + + +storage: + # Ref.: https://reportportal.io/docs/installation-steps-advanced/file-storage-options/ + type: s3 + # Leave `accesskey` and `secretkey` empty for IAM role-based access + accesskey: + secretkey: + # Specify the AWS region. Ref.: https://jclouds.apache.org/reference/javadoc/2.6.x/org/jclouds/aws/domain/Region.html + region: "us-standard" # JCloud ref. to `us-east-1` + bucket: + type: single + bucketDefaultName: "my-rp-bucket" # Bucket created from step 1 + +# Disable the MinIO dependency +minio: + enable: false +``` + +Install ReportPortal using Helm: + +```bash +helm install my-release \ + --set uat.superadminInitPasswd.password="MyPassword" \ + -f values.yaml \ + reportportal/reportportal +``` + +This configuration ensures that ReportPortal uses Amazon S3 for storage with IAM role-based access, while disabling the default MinIO dependency. + +### EC2 Docker-based + +- [S3 Bucket](#1-s3-bucket) +- [AWS IAM Role](#2-aws-iam-role) + - [Step 1: Define the Trust Policy](#step-1-define-the-trust-policy) + - [Step 2: Create the IAM Role](#step-2-create-the-iam-role) + - [Step 3: Define the Permissions Policy](#step-3-define-the-permissions-policy) + - [Step 4: Attach the Permissions Policy](#step-4-attach-the-permissions-policy) +- [IAM Instance Profile](#3-iam-instance-profile) + - [Step 1: Create an Instance Profile](#step-1-create-an-instance-profile) + - [Step 2: Attach the Role to the Instance Profile](#step-2-attach-the-role-to-the-instance-profile) + - [Step 3: Associate the Profile with the EC2 Instance](#step-3-associate-the-profile-with-the-ec2-instance) + - [Step 4: Enable Instance Metadata Access](#step-4-enable-instance-metadata-access) +- [ReportPortal Configuration](#4-reportportal-configuration) +- [Docker-Based Installation](#5-docker-based-installation) + +#### 1. S3 Bucket + +Create an Amazon S3 bucket to store ReportPortal data: + +```bash +aws s3api create-bucket --bucket my-rp-docker-bucket --region us-east-1 +``` + +> 💡 To create a bucket outside `us-east-1`, add the following option: +> +> ```bash +> --create-bucket-configuration LocationConstraint= +> ``` + +Ensure your bucket name complies with [S3 bucket naming rules](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). + +#### 2. AWS IAM Role + +The IAM role enables the EC2 instance to assume identity and access S3 using instance metadata. + +##### Step 1: Define the Trust Policy + +Save the following to a file named `trust-policy.json`: + +```json +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "sts:AssumeRole" + ], + "Principal": { + "Service": [ + "ec2.amazonaws.com" + ] + } + } + ] +} +``` + +##### Step 2: Create the IAM Role + +Create the role using the trust policy: + +```bash +aws iam create-role --role-name my-ec2-rp-s3-role \ + --assume-role-policy-document file://trust-policy.json +``` + +##### Step 3: Define the Permissions Policy + +Save the following to `s3-rw-policy.json`, replacing `my-rp-docker-bucket` with your bucket name: + +```json +{ + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "AllowListAndLocation", + "Effect": "Allow", + "Action": [ + "s3:ListBucket", + "s3:GetBucketLocation" + ], + "Resource": "arn:aws:s3:::my-rp-docker-bucket" + }, + { + "Sid": "AllowObjectOpsAnywhere", + "Effect": "Allow", + "Action": [ + "s3:PutObject", + "s3:GetObject", + "s3:DeleteObject", + "s3:GetObjectAcl", + "s3:GetObjectVersion" + ], + "Resource": "arn:aws:s3:::my-rp-docker-bucket/*" + } + ] +} +``` + +##### Step 4: Attach the Permissions Policy + +Attach the inline policy to the role: + +```bash +aws iam put-role-policy --role-name my-ec2-rp-s3-role \ + --policy-name S3AccessPolicy \ + --policy-document file://s3-rw-policy.json +``` + +#### 3. IAM Instance Profile + +##### Step 1: Create an Instance Profile + +```bash +aws iam create-instance-profile --instance-profile-name my-ec2-rp-s3-profile +``` + +##### Step 2: Attach the Role to the Instance Profile + +```bash +aws iam add-role-to-instance-profile \ + --instance-profile-name my-ec2-rp-s3-profile \ + --role-name my-ec2-rp-s3-role +``` + +##### Step 3: Associate the Profile with the EC2 Instance + +Replace `INSTANCE_ID` with your EC2 instance ID: + +```bash +aws ec2 associate-iam-instance-profile \ + --region us-east-1 \ + --instance-id \ + --iam-instance-profile Name=my-ec2-rp-s3-profile +``` + +##### Step 4: Enable Instance Metadata Access + +To allow a Docker container to access IMDSv2 metadata, you must increase the instance metadata service (IMDS) hop limit in the EC2 instance configuration: + +```bash +aws ec2 modify-instance-metadata-options \ + --instance-id \ + --http-put-response-hop-limit 2 \ + --http-endpoint enabled \ + --region us-east-1 +``` +Ref.: [Access instance metadata for an EC2 instance (AWS Docs)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html) + +#### 4. ReportPortal Configuration + +In your `docker-compose.yml`, configure ReportPortal to use IAM-based S3 access: + +```yaml +x-environment: &common-environment + # IAM Role-Based S3 Access - Leave credentials empty + DATASTORE_ACCESSKEY: "" + DATASTORE_SECRETKEY: "" + DATASTORE_TYPE: aws-s3 + DATASTORE_REGION: us-standard # JClouds alias for us-east-1 + DATASTORE_DEFAULTBUCKETNAME: my-rp-docker-bucket +``` + +:::note +For full configuration options, see the [ReportPortal S3 integration guide](/installation-steps-advanced/file-storage-options/). +::: + +#### 5. Docker-Based Installation + +Launch ReportPortal with Docker Compose: + +```bash +docker-compose -p reportportal up -d --force-recreate +``` + +This step brings up all ReportPortal services configured to use S3 as the storage backend with IAM role-based credentials via EC2 instance metadata. diff --git a/versioned_docs/version-26.1/installation-steps-advanced/file-storage-options/_category_.json b/versioned_docs/version-26.1/installation-steps-advanced/file-storage-options/_category_.json new file mode 100644 index 0000000000..a918bdc88e --- /dev/null +++ b/versioned_docs/version-26.1/installation-steps-advanced/file-storage-options/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "File Storage Options", + "position": "12", + "link": {"type": "doc", "id": "index"} +} + diff --git a/versioned_docs/version-26.1/installation-steps-advanced/file-storage-options/index.md b/versioned_docs/version-26.1/installation-steps-advanced/file-storage-options/index.md new file mode 100644 index 0000000000..f20879246d --- /dev/null +++ b/versioned_docs/version-26.1/installation-steps-advanced/file-storage-options/index.md @@ -0,0 +1,88 @@ +--- +sidebar_label: File storage options +description: Configure file storage options for ReportPortal including filesystem, MinIO, and cloud storage solutions. +--- + +# File storage options + +ReportPortal supports two types of storage structures: +* Multi-bucket +* Single-bucket + +Additionally, ReportPortal can store data in various locations: + +1. Filesystem (default for Docker) +2. MinIO (default for Kubernetes) +3. Cloud Storage + +## Storage Types + +### 1. Multi-bucket (default) + +Each project has its own bucket. This is the default option; however, it is not recommended for environments using Cloud Object Storage such as Amazon S3. It has a list structure. + +```bash +integration-secrets # Authorization bucket +prj-1 # Project buckets +prj-2 +rp-bucket # Plugins bucket +user-data # Users bucket +``` + +### 2. Single-bucket + +All projects share the same bucket. This is the recommended option for environments using Cloud Object Storage such as Amazon S3. It has a tree-like structure. + +```bash +rp-bucket # Main bucket + ├── integration-secrets # Authorization sub-directory + ├── plugins # Plugins sub-directory + ├── project-data # Projects sub-directory + │ ├── 1 + │ └── 2 + └── user-data # Users sub-directory +``` + +:::important +Migration from Multi-bucket to Single-bucket is required. Please refer to the [Complex Migration Guide](https://github.com/reportportal/migrations-complex/tree/develop/charts) for more information. A fresh start from Single-bucket is recommended. +::: + +To configure the storage to Single-bucket, ReportPortal uses the following environment variables for the services **API**, **Jobs**, and **Authorization**: + +```bash +RP_FEATURE_FLAGS: singleBucket # Enable single-bucket storage +DATASTORE_DEFAULTBUCKETNAME: my-bucket # Name of the bucket +``` + +## Filesystem + +The local filesystem is the default storage option for the Docker-based ReportPortal solution. It is simple to configure and use but is not recommended for production environments because it is not scalable and does not provide shareability between multiple instances or nodes. + +To configure filesystem storage, ReportPortal uses the following environment variables for the services **API**, **Jobs**, and **Authorization**: + +```bash +DATASTORE_TYPE: filesystem +``` + +Additionally, you can specify the path to the storage directory: + +```bash +DATASTORE_PATH: /data/storage +``` + +## MinIO + +MinIO is an open-source object storage server that is compatible with Amazon S3. It is designed for cloud-native workloads and optimized for high performance and scalability. + +To configure storage using MinIO, ReportPortal uses the following environment variables for the services **API**, **Jobs**, and **Authorization**: + +```bash +DATASTORE_TYPE: s3-compatible +DATASTORE_ACCESSKEY: +DATASTORE_SECRETKEY: +DATASTORE_ENDPOINT: http://minio:9000 +``` + +## Cloud Storage + +To set up Amazon S3 Cloud Storage with IAM user (secret keys) or IAM role, follow our [Advanced S3 Integration Guide](/installation-steps-advanced/file-storage-options/S3CloudStorage). diff --git a/versioned_docs/version-26.1/installation-steps-advanced/index.md b/versioned_docs/version-26.1/installation-steps-advanced/index.md new file mode 100644 index 0000000000..03e23bd025 --- /dev/null +++ b/versioned_docs/version-26.1/installation-steps-advanced/index.md @@ -0,0 +1,18 @@ +--- +title: Installation Steps Advanced +description: Explore advanced installation capabilities to optimize your test automation dashboard. +--- + +# Installation Steps Advanced + +The **Installation Steps Advanced** section is invaluable for those looking to go beyond basic installation, providing the knowledge and tools needed to maintain a stable, efficient, and high-performing environment for test management and reporting. + +In addition to system requirements, this section highlights the importance of performing regular maintenance. Keeping your instance updated with the latest patches and fixes will ensure you can avoid potential security vulnerabilities and performance issues. **The monitoring setup is equally important**, as it allows you to track the health and performance of your ReportPortal instance in real time. By setting up monitoring, you can quickly identify and resolve any issues that may arise, such as resource exhaustion or unexpected downtime. + +Installation Steps Advanced section offers valuable **insights into optimizing system configurations** to better handle large-scale projects or complex testing environments. It provides clear, actionable advice on managing tasks, safeguarding data, and scaling services to meet the growing demands of your project. Whether you're concerned with security, storage, or cloud integration, these advanced steps will guide you through the process of creating a more robust and adaptable ReportPortal instance. + +This section also covers other advanced configurations that help you maintain the efficiency and reliability of your test reporting environment. By following these advanced installation steps, you ensure that your ReportPortal instance is optimized for long-term success and can continue to support your growing test automation needs. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.1/installation-steps/DeployOnUbuntuOS.md b/versioned_docs/version-26.1/installation-steps/DeployOnUbuntuOS.md new file mode 100644 index 0000000000..eca411eab5 --- /dev/null +++ b/versioned_docs/version-26.1/installation-steps/DeployOnUbuntuOS.md @@ -0,0 +1,114 @@ +--- +sidebar_position: 15 +sidebar_label: Deploy on Ubuntu OS +description: Deploy ReportPortal on Ubuntu with Docker and Docker Compose. Follow step-by-step instructions to launch your test reporting environment efficiently. +--- + +# Deploy on Ubuntu OS + +***Provided by @Tset Noitamotuahe. The article might be outdated. +Do not hesitate to contribute and send us a pull request with updates. We appreciate your help!*** + +Follow below steps if you like to have ReportPortal running on Ubuntu Zesty (17.04) with the latest Docker-CE version 17.05 and Docker-Compose 1.14 + +1. Enable apt transport over HTTPS +```shell + sudo apt-get install \ + apt-transport-https \ + ca-certificates \ + curl \ + software-properties-common +``` + +2. Get apt-key for Docker repo +```shell + curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - +``` + +3. Add Docker's repo to sources.list +```shell + sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu zesty edge" +``` +> ToDo: 3. check if there is a stable version of Docker-CE for Zesty +> ```shell +> sudo add-apt-repository \ +> "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ +> $(lsb_release -cs) \ +> stable" +> ``` + +4. Install Docker-CE +```shell + sudo apt update + sudo apt install docker-ce +``` + +PROXY SETTINGS for Docker (you'll probably need this @work) +```shell + mkdir -p /etc/systemd/system/docker.service.d + sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf +``` +http-proxy.conf content +```txt + [Service] + Environment="HTTP_PROXY=http://proxyhost:port/" "NO_PROXY=localhost,127.0.0.1" + # ALTERNATIV - if you are behind HTTPS proxy instead of just HTTP: + # https-proxy.conf + # Environment="HTTPS_PROXY=http://proxyhost:port/" +``` + +5. Restart Docker +```shell + sudo systemctl daemon-reload + sudo systemctl restart docker + # TEST: systemctl show --property=Environment docker + # >>> Environment=HTTP_PROXY=http://proxyhost:port/ +``` + +6. Check that Docker is installed correctly +```shell + sudo docker run hello-world + # hello-world images will be download and run + # your will see output e.g. "Hello from Docker! ... " +``` + +7. DOCKER-COMPOSE installation from PIP v3.x (Python PIP 2.7 is deprecated 01/01/2020) +```shell + sudo apt install python3-pip + sudo pip3 install docker-compose +``` +Also you can use the [official installation guide](https://docs.docker.com/compose/install/) + +8. REPORTPORTAL INSTALLATION +```shell + mkdir reportportal + cd reportportal + # get the docker-compose file + wget https://raw.githubusercontent.com/reportportal/reportportal/master/docker-compose.yml + docker-compose up +``` +This will take some time cause several images will be downloaded ... go grab a coffee :) +After download is completed and containers started open another terminal and run +`docker ps` to check that all containers from previous step are up and running. + +9. Check that ReportPortal is running +In the VM opten browser to `0.0.0.0:8080` --> ReportPortal login page will open. + +:::note +If you are behind a proxy you need to add `0.0.0.0` to the `NO_PROXY` (no_proxy) ENV.
+After setting the port forwarding like explained in video PART 2 (link below) open browser on your host machine to `localhost:8080` or `127.0.0.1:8080` --> ReportPortal loginpage will open +::: +OPTIONAL + +If you don't like to write 'sudo' before each docker-command do this but be aware of possible security issue with that! +```shell + sudo groupadd docker + sudo usermod -aG docker $USER +``` +**>>> RESTART VM!** + +Helpful links (video tutorial) + +> [Part 1](https://raw.githubusercontent.com/reportportal/reportportal/master/docker-compose.yml) + +> [Part 2](https://raw.githubusercontent.com/reportportal/reportportal/master/docker-compose.yml) diff --git a/versioned_docs/version-26.1/installation-steps/DeployViaGoogleCloudMarketplace.mdx b/versioned_docs/version-26.1/installation-steps/DeployViaGoogleCloudMarketplace.mdx new file mode 100644 index 0000000000..1c3ae30217 --- /dev/null +++ b/versioned_docs/version-26.1/installation-steps/DeployViaGoogleCloudMarketplace.mdx @@ -0,0 +1,167 @@ +--- +sidebar_position: 6 +sidebar_label: Deploy via Google Cloud Marketplace +description: Deploy ReportPortal quickly via Google Cloud Marketplace with one-click installation for scalable test automation reporting tools. +--- + +# Deploy via Google Cloud Marketplace + +Starting from December 2023, the ReportPortal application is available in the Google Cloud Marketplace. Now, users can literally deploy our test reporting tool in just a few clicks. + +Any engineer, even those not well-versed in DevOps, can go to the Google Cloud Marketplace, select the required resource size, and install a ReportPortal instance. This not only streamlines the procurement process, but also eliminates the need to wait for a contract to be finalized before beginning to work with ReportPortal. + +Next, you will find a step-by-step guide on deploying ReportPortal via the Google Cloud Marketplace. + +**Prerequisites** + +A [Cloud Billing account](https://cloud.google.com/billing/docs/how-to/create-billing-account) needs to be created beforehand. + +## Installation + +### Get started + +1. [Open ReportPortal](https://console.cloud.google.com/marketplace/product/epam-mp-rp/reportportal?project=epam-mp-rp&pli=1) +in Google Cloud Marketplace. + + + +2. Click ‘Get started’ button. + + + +### Initial setup of billing and API (optional) + +:::important +These steps are executed once, provided that this is not configured. +::: + +1. Select a project and accept terms and agreements. + + + +2. Enable billing and set the billing account. + +:::note +You will see this screen if you have not enabled billing or set up the billing account before. +::: + + + + + +After that, accept terms and agreements again. + +3. Click ‘Deploy’ button. + + + +4. Enable API. + +:::note +You will see this screen if you have not enabled API before. +::: + + + +### Configure deployment + +Fill necessary fields and create cluster. By default, a cluster with three nodes is created, but once the application is installed, +the number of nodes reduces to 1. Subsequently, depending on the project's needs, the number of nodes can be increased to 5. + +There is also an option to specify the domain name to which ReportPortal will be linked. You have the ability to enable support for +an auto-generated certificate that will be linked to this domain. Subsequently, a certificate valid in all browsers will be issued. + +:::note +While enabling the 'Enable GCP Managed Certificate' option, it is mandatory to specify the hostname. +::: + + + +### Deploy + + + + + +### Post-installation with hostname + +After the deployment is completed, you will be directed to a page with application information. + + + +1. Next, if you have specified a hostname, you will need to navigate to your domain hosting control panel and create a record +for your hostname with the provided `IP address`. For instance, here is how you can do it in AWS Route 53: + + + +2. [Ensure](https://console.cloud.google.com/net-services/loadbalancing/advanced/sslCertificates/list) that your auto-generated certificate has the status Active.
+ + + +:::note +The process of transferring the certificate from `Provisioning` to `Active` status can take up to 30 minutes. +::: + +3. Follow your hostname in a browser. + + + +4. On the opened Sign In page, enter 'superadmin' as the login. + +5. Enter initial password. + + + +Let's get your ReportPortal instance up! + +### Post-installation without hostname + +After the deployment is completed, if you did not specify a hostname, you will be directed to a page with application information. + +1. Click the `IP address` link. + + + +But after clicking the `IP address` link, the user receives a browser warning that the connection is not private. In reality, there is no risk because you are accessing your server, launched via an IP address. + +So why does a warning pop up? During deployment, Google Marketplace creates a Self-signed temporary certificate, which is used for data encryption. However, during the deployment process, ReportPortal is not tied to any domain, and this certificate is also not tied to any domain. Therefore, when following the link, the user receives a browser warning because the browser considers this certificate invalid as it cannot verify it. + +2. For the Chrome browser, click on 'Advanced' -> then click on 'Proceed to XXXXX (unsafe)' link. + + + + + +3. On the opened Sign In page, enter 'superadmin' as the login. + +4. Enter initial password. + + + + + +:::note +It may take Google Kubernetes Engine a few minutes before the application becomes accessible via the link. +::: + +Let's get your ReportPortal instance up! + +## Clean Up + +After you have installed ReportPortal, further interactions with the application are conducted in the Google Kubernetes Engine service. + +If you need to delete the application, this can be accomplished either from the Applications page. + + + +Upon deleting the application, all associated resources, such as Workloads, Secrets & ConfigMaps, and Ingress will be deleted, except for the application‘s persistent volumes. + +:::note +The deletion process can take a few minutes. Workloads, and Secrets&ConfigMaps tied to the cluster will remain. +::: + +If you wish to eliminate all costs, you will also need to delete the cluster, as certain resources reserved for our needs will continue to be billed. + +Multiple applications can run within a cluster. However, if the cluster is no longer needed, it should also be deleted as illustrated in the image below. + + diff --git a/versioned_docs/version-26.1/installation-steps/DeployWithDocker.md b/versioned_docs/version-26.1/installation-steps/DeployWithDocker.md new file mode 100644 index 0000000000..a4ac4129ec --- /dev/null +++ b/versioned_docs/version-26.1/installation-steps/DeployWithDocker.md @@ -0,0 +1,110 @@ +--- +sidebar_position: 3 +sidebar_label: Deploy with Docker +description: Make your test automation reporting more portable. Reduce the risk of configuration issues with your test reporting tool using Docker. +--- + +# Deploy with Docker + +## Installation Guide for ReportPortal + +This concise, step-by-step guide will help you deploy ReportPortal using Docker Compose (version ≥2.2). It covers prerequisites, configuration, deployment, and verification to ensure anyone can set up the application quickly. + +### Prerequisites + +1. **Operating System** + + * **Linux** (Ubuntu 20.04+ or equivalent). + * **macOS** (Apple Silicon and Intel-based supported). + * **Windows** (64-bit Windows 11 Pro or higher) + +2. **Docker & Docker Compose**. [Install the latest Docker Engine](https://docs.docker.com/engine/install/) and Docker Compose plugin + +3. **System Resources** + + * At least 2 CPU cores + * Minimum 6GB RAM allocated to Docker + * Swap or storage: ≥20GB free space for Docker images and data + +:::note +For production, deploy on a Linux-based server or cloud instance. Adjust resource limits according to expected load. +[See advanced deployment recommendations](/installation-steps/HardwareRequirements). +::: + +### Step 1: Prepare the Environment + +1. **Verify Docker & Compose Installation** + + ```bash + docker --version + docker compose version + ``` + +2. **Adjust Docker Resources (Desktop Users)** + + * Open Docker Desktop settings. + * Allocate at least 2 CPUs and 6GB RAM under **Resources**. + +### Step 2: Obtain the Docker Compose File + +1. **Download the Official `docker-compose.yml`** + + ```bash + curl -LO https://raw.githubusercontent.com/reportportal/reportportal/master/docker-compose.yml + ``` + +2. **Review and Customize Environment Variables** + + * Open `docker-compose.yml` in your editor. + * Locate the `RP_INITIAL_ADMIN_PASSWORD` variable under the `uat-service` (or equivalent) section. + + ```yaml + services: + uat: + environment: + RP_INITIAL_ADMIN_PASSWORD: "ChangeMe123" + ``` + * Replace `ChangeMe123` with a secure password of your choice. + * (Optional) Adjust other variables such as database credentials or ports if needed. + +### Step 3: Deploy ReportPortal + +1. **Launch Containers** + + ```bash + docker compose -p reportportal up -d --force-recreate + ``` + + * `-p reportportal`: Prefixes container names with `reportportal_`. + * `up -d`: Creates and starts services in detached mode. + * `--force-recreate`: Ensures containers are recreated, applying any changes. + +2. **Monitor Startup Logs** + + * View combined logs: + + ```bash + docker compose logs -f + ``` + + * View logs for a specific container: + + ```bash + docker logs reportportal_uat + ``` + +3. **Cleanup** + + * To stop and remove all ReportPortal containers: + + ```bash + docker compose down --volumes --remove-orphans + ``` + +## Tips and Best Practices + +* **Use External Volumes**: Mount host volumes for data persistence (`/var/lib/reportportal`). +* **Secure Secrets**: Store sensitive environment variables (e.g., DB passwords) in a `.env` file and reference them in `docker-compose.yml`. +* **Use Docker Networks**: Isolate ReportPortal on its own network for enhanced security. +* **Scale Services**: For high availability, consider using [Kubernetes](https://github.com/reportportal/kubernetes) with multiple replicas. +* **Backups**: Schedule periodic backups of the PostgreSQL database and Storage. [How to backup ReportPortal guide](/installation-steps-advanced/BackupRestoreGuide/) diff --git a/versioned_docs/version-26.1/installation-steps/DeployWithKubernetes.md b/versioned_docs/version-26.1/installation-steps/DeployWithKubernetes.md new file mode 100644 index 0000000000..17f25386af --- /dev/null +++ b/versioned_docs/version-26.1/installation-steps/DeployWithKubernetes.md @@ -0,0 +1,103 @@ +--- +sidebar_position: 5 +sidebar_label: Deploy with Kubernetes +description: Deploy ReportPortal on Kubernetes using Helm to streamline test reporting and analysis with scalable, containerized infrastructure. +--- + +# Deploy with Kubernetes + +## Prerequisites + +:::note +The minimal requirements for a ReportPortal 1-node solution are 2 CPUs and 6Gi of memory. +::: +* Kubernetes v1.26+ +* Helm Package Manager v3.4+ + +## Installing the Helm Chart + +Add the official ReportPortal Helm Chart repository: + +```bash +helm repo add reportportal https://reportportal.io/kubernetes && helm repo update reportportal +``` + +Install the chart: + +```bash +helm install my-release --set uat.superadminInitPasswd.password="MyPassword" reportportal/reportportal +``` +:::note +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. +::: +## Uninstalling the Helm Chart + +```bash +helm uninstall my-release +``` + +## Configuration + +### Install the chart with dependencies + +ReportPortal relies on several essential dependencies, without which it cannot function properly. It is feasible to substitute these dependencies with available On-Premise or Cloud alternatives. + +The following table lists the configurable parameters of the chart and their default values + +|Parameter|Description|Default| +|-|-|-| +|`postgresql.install`|Allow PostgreSQL Bitnami Helm Chart to be installed as a dependency|`true`| +|`rabbitmq.install`|Allow RabbitmQ Helm Bitnami Chart to be installed as a dependency|`true`| +|`opensearch.install`|Allow Open Search Helm Chart to be installed as a dependency|`true`| +|`minio.install`|Allow MinIO Helm Chart to be installed as a dependency|`true`| + +These dependencies are integrated into the distribution by default. To deactivate them, specify each parameter using the --set key=value[,key=value] argument to helm install. For example: + +```bash +helm install my-release \ + --set postgresql.install=false \ + --set database.endpoint=my-postgresql.host.local \ + --set database.port=5432 \ + --set database.user=my-user \ + --set database.password=my-password \ + reportportal/reportportal +``` +:::note +If you disable install dependencies, you must provide new values (e.g., host, port, username, etc) for your predeployed dependencies. +::: +All configuration variables are presented in the [value.yaml](https://github.com/reportportal/kubernetes/blob/master/reportportal/values.yaml) file. + +### Install from sources + +For fetching chart dependencies, use the command: + +```bash +helm dependency build . +``` + +> This command fetches all the dependencies [required](https://github.com/reportportal/kubernetes/blob/master/reportportal/Chart.yaml) by the chart. + +To install the chart directly from local sources, use: + + +```bash +helm install my-release --set uat.superadminInitPasswd.password="MyPassword" ./reportportal +``` + +### Install specific version + +To search for available versions of a chart, use: + +```bash +helm search repo reportportal --versions +``` + +To install a specific version of a chart, use: + +```bash +helm install my-release \ + --set uat.superadminInitPasswd.password="MyPassword" \ + reportportal/reportportal \ + --version 23.2 +``` + diff --git a/versioned_docs/version-26.1/installation-steps/DeployWithMinikube.md b/versioned_docs/version-26.1/installation-steps/DeployWithMinikube.md new file mode 100644 index 0000000000..33236f6eaa --- /dev/null +++ b/versioned_docs/version-26.1/installation-steps/DeployWithMinikube.md @@ -0,0 +1,109 @@ +--- +sidebar_position: 7 +sidebar_label: Deploy with Minikube +description: Deploy ReportPortal on Minikube for local Kubernetes testing and development. +--- + +## Prerequisites + +- [Minikube](https://kubernetes.io/docs/tasks/tools/install-minikube/) +- [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) +- [Helm](https://helm.sh/docs/intro/install/) + +## Installation + +### Overview + +In this guide, we will install ReportPortal on Minikube using Helm with +ReportPortal's services and the following dependencies: + +- PostgreSQL +- OpenSearch +- RabbitMQ + +Instead of Minio, we will use a Persistent Volume as a filesystem storage. + +### Start Minikube + +```bash +minikube start --cpus 4 --memory 8192 --addons ingress +``` + +### Set up hostnames + +Add the following line to your `/etc/hosts` file: + +```bash +echo "$(minikube ip) minikube.local" | sudo tee -a /etc/hosts +``` + +### Install ReportPortal + +#### Install from Helm repo + +```bash +helm repo add reportportal https://reportportal.io/kubernetes && helm repo update reportportal +``` + +```bash +export SUPERADMIN_PASSWORD=superadmin + +helm install reportportal \ + reportportal/reportportal \ + --set uat.superadminInitPasswd.password=${SUPERADMIN_PASSWORD} \ + --set storage.type=filesystem \ + --set minio.install=false +``` + +If you want to use Minio as a storage: + +```bash +export SUPERADMIN_PASSWORD=superadmin + +helm install reportportal \ + reportportal/reportportal \ + --set uat.superadminInitPasswd.password=${SUPERADMIN_PASSWORD} +``` + +#### Install from GitHub repo + +Call the following commands from the downloaded +[kubernetes](https://github.com/reportportal/kubernetes/) repository. + +```bash +# Download the chart dependencies +helm dependency build ./reportportal +``` + +```bash +# Install ReportPortal from ./reportportal/Chart.yaml +export SUPERADMIN_PASSWORD=superadmin + +helm install reportportal \ + ./reportportal \ + --set uat.superadminInitPasswd.password=${SUPERADMIN_PASSWORD} \ + --set storage.type=filesystem \ + --set minio.install=false +``` + +If you want to use Minio as a storage: + +```bash +helm install reportportal \ + ./reportportal \ + --set uat.superadminInitPasswd.password=${SUPERADMIN_PASSWORD} +``` + +### Access ReportPortal + +Open your browser and navigate to [http://reportportal.local](http://minikube.local). + +## Clean up + +```bash +helm uninstall reportportal +``` + +```bash +minikube stop && minikube delete +``` diff --git a/versioned_docs/version-26.1/installation-steps/DeployWithoutDocker.md b/versioned_docs/version-26.1/installation-steps/DeployWithoutDocker.md new file mode 100644 index 0000000000..dfa2e80ab7 --- /dev/null +++ b/versioned_docs/version-26.1/installation-steps/DeployWithoutDocker.md @@ -0,0 +1,40 @@ +--- +sidebar_position: 4 +sidebar_label: Deploy without Docker +description: Deploy ReportPortal without Docker for traditional server installations and custom test automation reporting tools configurations. +--- + +# Deploy without Docker + +***The instruction designed for the version 5.3.5 and might be outdated for the latest versions. +Do not hesitate to contribute and send us a pull request with updates. We appreciate your help!*** + +In order to get started with ReportPortal on Red Hat Family and Ubuntu Linux distributions non-Docker/Kubernetes usage, please use the following links + +### 1. [[Outdated] ReportPortal 5.3.5](https://github.com/reportportal/linux-installation) +[ReportPortal 5.3.5 installation guide](https://github.com/reportportal/linux-installation) + +#### Supported OS + +Ubuntu LTS `18.04`, `20.04` / Red Hat family `6`, `7`, `8` (RHEL, CentOS, etc) + +#### Required service +* PSQL `12.6` +* RabbitMQ `3.8.14` +* ElasticSearch `7.12` +* Traefik `1.7.29` + +In addition, these services are compatible with earlier versions. + +### 2. [[Outdated] ReportPortal 5.0.0](https://github.com/reportportal/shell-installation) +[ReportPortal 5.0.0 installation guide](https://github.com/reportportal/shell-installation) + +#### Supported OS + +Ubuntu LTS `16.04`, `18.04` / Red Hat family `6`, `7` (RHEL, CentOS, etc) + +#### Required service +* PSQL `11` +* RabbitMQ `3.6.10` +* ElasticSearch `6.7.0"` +* Traefik `1.7.19` diff --git a/versioned_docs/version-26.1/installation-steps/HardwareRequirements.mdx b/versioned_docs/version-26.1/installation-steps/HardwareRequirements.mdx new file mode 100644 index 0000000000..daf86a3492 --- /dev/null +++ b/versioned_docs/version-26.1/installation-steps/HardwareRequirements.mdx @@ -0,0 +1,260 @@ +--- +sidebar_position: 1 +sidebar_label: Hardware Requirements +description: Boost performance with expert-backed configuration tips for your test automation dashboard. +--- + +# Hardware Requirements + +Find below the recommended hardware configuration to set up ReportPortal and have good performance using our centralized test automation tool. + +## 1. Disk I/O + + To speed up PostgreSQL database performance, on instance strongly recommended use **SSD disk** hardware. + +## 2. CPU utilization + + Consider choosing the **CPU optimized** instances to reduce high CPU utilization of the ReportPortal service-API and speed up ReportPortal overall. + + For example: + + * **Azure**: Fsv2-series instances, + * **AWS**: c5 instances. + + The instance capacity(4 CPUs/8Gb RAM or 8 CPUs/16Gb RAM etc.) should be selected regarding average reporting test-cases/day and average CPU/RAM utilization. If the CPU/RAM utilization of the ReportPortal instance up to 100% a long time daily, consider scale up the VM x2. + +**System hardware requirements** + + Simple Docker installation from the box: + +| Server type | CPU's | RAM size, Gb | Disk space, Gb | Disk type | AWS Shape | +| ----------- | ----- | ------------ | -------------- | ------------- | --------- | +| Small | 4 | 8 | 300 | gp2 | c5.xlarge | +| Middle | 8 | 16 | 500 | gp2 | c5.2xlarge | +| Middle+ | 16 | 32 | 1000 | gp2 | c5.4xlarge | +| Large | 32 | 64 | 2000 | gp2 | c5a.8xlarge | +
+ + Kubernetes: + +| Server | EKS Nodes (Count) | EKS Nodes (Instance Type) | EKS Nodes (Disk Size GB) | EKS Nodes (Disk Type) | Amazon RDS (Instance Type) | Amazon RDS (Disk Size GB) | Amazon RDS (Disk Type) | Additional Volumes (RabbitMQ) | S3 Binary storage | Monthly Cost | Yearly Cost | +| ----------- | ----------- | ------------ | ------------- | ------------- | --------- | --------- | --------- | --------- | --------- | --------- | --------- | +| Small | 3 | m5.large | 50 | gp2 | db.m6g.large | 300 | gp3 | 50 | 200 | $544.48 | $6,533.76 | +| Middle | 3 | c5.xlarge | 50 | gp2 | db.m6g.xlarge | 500 | gp3 | 50 | 300 | $892.04 | $10,704.48 | +| Middle+ | 3 | c5.xlarge | 50 | gp2 | db.m6g.2xlarge | 1000 | gp3 | 50 | 500 | $1,241.38 | $14,896.56 | +| Large | 3 | c5.2xlarge | 50 | gp2 | db.m6g.4xlarge | 2500 | gp3 | 50 | 1000 | $2,497.28 | $29,967.36 | +
+ +:::note + +The approximate server's cost is relevant for the current cost of infrastructure on AWS. The estimated server cost is the current cost of the AWS infrastructure. When changing any cost of resources, costs need to be recalculated.

+These costs are calculated for the Frankfurt eu-central-1 region, including $73.00 for the EKS cluster and $29.71 for Elastic Load Balancing (Application). The costs for EBS volumes related to OpenSearch are not included, as the amount can vary for small and large instances, and we support both single-node and multi-node OpenSearch setups. Additionally, the costs do not cover the VPC or other network infrastructure components. +::: + +## 3. Which scale I need? Configuration testing results and saturation points + +**What does Saturation and vUser means? How to transform it into test cases?** + +**RPS** means _Requests Per Second_. Any request to server to upload, create, read the data. In ReportPortal terms it can be request to create Launch (execution), Test Suite, Test case, log line. Read data or update data. + +**Saturation** (in RPS) can be assumed as maximum capacity of your configuration (app deployed on specifics instance type) which can procced requests without significant response time degradation. Let's say `upper limit` + +**vUser** means _Virtual user_ which describes regular model of behaviour of user (API client) which interacts with your system. Under vUser we assume test framework integration which will generate: + +◾️ 3 Launches with + +◾️◾️ 3 suites inside, with + +◾️◾️◾️ 3 test classes inside, with + +◾️◾️◾️◾️ 3 test cases inside, with + +◾️◾️◾️◾️◾️ 5 steps inside, with + +◾️◾️◾️◾️◾️◾️ 10 logs inside for each step. + +Which practically will generate: +- `10 * 5 * 3 * 3 * 3 * 3 = (4050)` `createLog` requests. +- `5 * 3 * 3 * 3 * 3 = (405)` `startStep` requests and equal amount of `finishStep` requests. Total 810 +- `3 * 3 * 3 * 3 = (81)` `startTest` requests and equal amount of `finishTest` requests (inclluding all precondition methods, as `@After` and `@Before` in Java). Total 162 +- `3 * 3 * 3 = (27)` `startTestClass` requests and equal amount of `finishTestClass` requests. Total 54 +- `3 * 3 = (9)` `startSuite` requests and equal amount of `finishSuite` requests. Total 18 +- `3 = (3)` `startLaunch` requests and equal amount of `finishLaunch` requests. Total 6 + +Default configuration of integration sends logs in batches (`rp.batch.size.logs = 20`) which combines 20 requests at once into 1 batch request for `createLog`. And minimize count of `createLog` requests from 4050 to 203. +In grand total such a structure creates 3 Launches with 243 test case inside and produces 1253 requests. + +Now we can divide their number by the duration in seconds, and get the RPS result. if it runs for 6 minutes (2 minutes each lunch), then: 60s * 6 = 360 and 1253 / 360 ~=4.5 requests per second. + +If launches will be executed in parallel, 3 at the time, then RPS will be equal to 4.5*3 = 13.5 rps. + +
+ +**Summary** + +Having information regarding number of test cases in your framework, average number of logs, number of parallel threads and durations, you can calculate system capacity according to the tables below. + +
+ +**Configuration testing results** + +The purpose of the configuration performance testing is to determine saturation points and overall system capacity for different instance sizes and specifications. Testing was conducted on the С5 instances which are optimized for compute-intensive workloads and deliver cost-effective high performance at a low price per compute ratio(Compute Optimized Instances) with Up to 3.4GHz, and single core turbo frequency of up to 3.5 GHz 2nd generation Intel Xeon Scalable Processors (Cascade Lake) or 1st generation Intel Xeon Platinum 8000 series (Skylake-SP) processor with a sustained all core Turbo frequency. + +**Application and Database are deployed on separate VMs** + +| **Instance Type** | **Saturation point, rps** | **vUsers count** | **Disk IOPS** | **Java Options** | +| ----------------- | ------------------------- | ---------------- | ------------- | ---------------- | +| с5.xlarge | 640 | 60 | up to 3000 | \-Xmx1g | +| c5.2xlarge | 1374 | 115 | up to 4000 | \-Xmx2g | +| c5.4xlarge | 3104 | 356 | up to 8000 | \-Xmx3g | +| с5.9xlarge | 5700 | 489 | up to 10000 | \-Xmx4g | + +**Application and Database are deployed on single VM** + +| **Instance Type** | **Saturation point, rps** | **vUsers count** | **Disk IOPS** | **Java Options** | +| ----------------- | ------------------------- | ---------------- | ------------- | ---------------- | +| с5.xlarge | 521 | 50 | up to 3000 | \-Xmx1g | +| c5.2xlarge | 1078 | 83 | up to 4000 | \-Xmx2g | +| c5.4xlarge | 2940 | 305 | up to 8000 | \-Xmx3g | +| с5.9xlarge | 5227 | 440 | up to 10000 | \-Xmx4g | + +## 4. The database separately from other services + +Consider deploying the database separately from other RP services. It allows increasing throughput of the server and performance of the ReportPortal overall. This can be, for example, AWS RDS PostgreSQL Database or a separate VM only for the PostgreSQL database. + +The separate database instance should be the same by CPU's and RAM, but started from middle+ server type, the database instance may need to have doubled CPU's and RAM size in comparison with the application instance. +This is explained by the fact that with an increase in the size of the database and the number of concurrent users, the load is distributed more on the database server: increased volume of resources(CPU, memory, IOPS number, etc.) required to performing each DB query since it handles / can handle more data volume and/or can handle of a greater number of concurrent users. + +Example for the middle+ server: + +| Instance type | CPU's | RAM size, Gb | Disk space, Gb | AWS Shape | +| ------------- | ----- | ------------ | -------------- | --------- | +| Application instance | 16 | 32 | 200 | c5.4xlarge | +| Database instance | 16 | 32 | 1000 | c5.4xlarge | + +## 5. PostgreSQL Performance Tuning + + Since PostgreSQL Database is used, it needs some set of special configs for the best performance. These set contains two categories: + + * general and universal for any capacity of the instance hardware: + + ```yaml + effective_io_concurrency=200 + random_page_cost=0.1 + seq_page_cost=1 + min_wal_size=1GB + max_wal_size=4GB + wal_buffers=16MB + default_statistics_target=100 + synchronous_commit=off + wal_writer_delay=10ms + checkpoint_completion_target=0.9 + ``` + + * based on CPU/RAM size at the instance(example for 4 CPUs/8GB RAM; the database is deployed on the separate VM): + + ```yaml + shared_buffers=2GB + effective_cache_size=6GB + maintenance_work_mem=512MB + work_mem=96MB + max_worker_processes=4 + max_parallel_workers_per_gather=2 + max_parallel_workers=4 + max_parallel_maintenance_workers=2 + ``` + + Recommendations regarding **PostgreSQL server tuning** for the instance with 8 CPUs/16GB RAM(where all RP services are deployed): + + ```yaml + shared_buffers=4GB + effective_cache_size=8GB + wal_buffers=16MB + default_statistics_target=100 + effective_io_concurrency=200 + work_mem=96MB + min_wal_size=1GB + synchronous_commit=off + wal_writer_delay=10ms + maintenance_work_mem=1GB + seq_page_cost=1 + checkpoint_completion_target=0.9 + random_page_cost=0.1 + max_wal_size=4GB + max_worker_processes=8 + max_parallel_workers_per_gather=4 + max_parallel_workers=8 + max_parallel_maintenance_workers=4 + ``` + + If the PostgreSQL database and services are deployed on the separate VM’s, the "effective_cache_size" parameter should be changed to "12GB"(total RAM size - shared_buffers size). + +
+ **Simple ways to set these parameters:** + + CPU’s count related: + + ```yaml + max_worker_processes = + max_parallel_workers_per_gather = + max_parallel_workers = + max_parallel_maintenance_workers = + ``` + + RAM size related: + ```yaml + shared_buffers = + effective_cache_size = + maintenance_work_mem = < if total RAM size > 16 Gb – 2Gb; under 16Gb – 1Gb and less> + ``` + + For the **docker-compose:** add the following lines to the *command* section by the “-c” option to *“postgres”* service. + + **Example:** + + ```yaml + postgres: + image: postgres:12-alpine + shm_size: '512m' + ... + command: + -c effective_io_concurrency=200 + -c random_page_cost=0.1 + -c seq_page_cost=1 + ... + # Some another configs + ``` + + For the **AWS RDS:** create new parameter group(*Services -> RDS -> Parameter groups -> Create parameter group*), search config by the name and set up the following values, then apply created parameter group to the RDS DB. + + The following parameters can be scaled and depends on CPU’s number and RAM size of the instance. For example, for the instance 16 CPUs/32GB RAM(the database is deployed on the separate VM) this parameters should be: + + ```yaml + shared_buffers = '8GB' + effective_cache_size = '24GB' + max_worker_processes = '16' + max_parallel_workers = '16' + ``` + +## 6. Application connections pool tuning + +By default, ReportPortal has 27 connections on service-api and 27 connections in pool on service-authorization. +In general these values are valid for the small and middle servers. But from the middle+ server type, the connection pool may be increased if it's not enough for your server load. + +It can be detected as periodic freezes and the "Loading" message when opening any page, and/or slowing down the work with RP after a certain period of time during active reporting and use with UI. Restarts of API and UAT services can also be observed. + +To increasing the connection pool on both services, need to add next environment variables to the service-api and to the service-authorization: + +```yaml +RP_DATASOURCE_MAXIMUMPOOLSIZE=100 +``` + +After increasing the connection pool from the application side, do not forget increase the max_connections from the Database side, using following DB configuration paramether: + +```yaml +max_connections=500 +``` + +*The values of these parameters are given for example only, but in general, can be valid for all types of loads for servers middle+ and large.* + +Please note, that the max_connections paramether must be more than the sum of the RP_DATASOURCE_MAXIMUMPOOLSIZE for the API and the UAT services + several connections for connecting to the database from outside. diff --git a/versioned_docs/version-26.1/installation-steps/_category_.json b/versioned_docs/version-26.1/installation-steps/_category_.json new file mode 100644 index 0000000000..2d13e50cbb --- /dev/null +++ b/versioned_docs/version-26.1/installation-steps/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "Installation Steps", + "position": "4", + "link": {"type": "doc", "id": "index"} +} + diff --git a/versioned_docs/version-26.1/installation-steps/img/DockerConfigMacosNew.png b/versioned_docs/version-26.1/installation-steps/img/DockerConfigMacosNew.png new file mode 100644 index 0000000000..9c9eb8b306 Binary files /dev/null and b/versioned_docs/version-26.1/installation-steps/img/DockerConfigMacosNew.png differ diff --git a/versioned_docs/version-26.1/installation-steps/img/DockerConfigWin.png b/versioned_docs/version-26.1/installation-steps/img/DockerConfigWin.png new file mode 100644 index 0000000000..670139a240 Binary files /dev/null and b/versioned_docs/version-26.1/installation-steps/img/DockerConfigWin.png differ diff --git a/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/CleanUp1.png b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/CleanUp1.png new file mode 100644 index 0000000000..ed9bda8bbc Binary files /dev/null and b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/CleanUp1.png differ diff --git a/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/CleanUp2.png b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/CleanUp2.png new file mode 100644 index 0000000000..d7e1ac3931 Binary files /dev/null and b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/CleanUp2.png differ diff --git a/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace1.png b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace1.png new file mode 100644 index 0000000000..38508e9b8d Binary files /dev/null and b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace1.png differ diff --git a/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace10.png b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace10.png new file mode 100644 index 0000000000..798944f32a Binary files /dev/null and b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace10.png differ diff --git a/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace11.png b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace11.png new file mode 100644 index 0000000000..b68cafe788 Binary files /dev/null and b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace11.png differ diff --git a/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace12.png b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace12.png new file mode 100644 index 0000000000..2d2a87aa63 Binary files /dev/null and b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace12.png differ diff --git a/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace13.png b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace13.png new file mode 100644 index 0000000000..0dbce46f85 Binary files /dev/null and b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace13.png differ diff --git a/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace14.png b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace14.png new file mode 100644 index 0000000000..57dadd5058 Binary files /dev/null and b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace14.png differ diff --git a/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace15.png b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace15.png new file mode 100644 index 0000000000..047bd92ef8 Binary files /dev/null and b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace15.png differ diff --git a/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace16.png b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace16.png new file mode 100644 index 0000000000..d367b1b806 Binary files /dev/null and b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace16.png differ diff --git a/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace17.png b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace17.png new file mode 100644 index 0000000000..e938e9e442 Binary files /dev/null and b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace17.png differ diff --git a/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace18.png b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace18.png new file mode 100644 index 0000000000..dc75d11a65 Binary files /dev/null and b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace18.png differ diff --git a/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace2.png b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace2.png new file mode 100644 index 0000000000..a0341f4eed Binary files /dev/null and b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace2.png differ diff --git a/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace3.png b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace3.png new file mode 100644 index 0000000000..7813c93d82 Binary files /dev/null and b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace3.png differ diff --git a/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace4.png b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace4.png new file mode 100644 index 0000000000..0ebeef74e8 Binary files /dev/null and b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace4.png differ diff --git a/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace5.png b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace5.png new file mode 100644 index 0000000000..9992535589 Binary files /dev/null and b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace5.png differ diff --git a/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace6.png b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace6.png new file mode 100644 index 0000000000..768a773baf Binary files /dev/null and b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace6.png differ diff --git a/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace7.png b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace7.png new file mode 100644 index 0000000000..702e49e369 Binary files /dev/null and b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace7.png differ diff --git a/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace8.png b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace8.png new file mode 100644 index 0000000000..2b61d390f0 Binary files /dev/null and b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace8.png differ diff --git a/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace9.png b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace9.png new file mode 100644 index 0000000000..accdd099c4 Binary files /dev/null and b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/GCPmarketplace9.png differ diff --git a/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/password1.png b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/password1.png new file mode 100644 index 0000000000..8546fdfc15 Binary files /dev/null and b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/password1.png differ diff --git a/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/password2.png b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/password2.png new file mode 100644 index 0000000000..42129527d6 Binary files /dev/null and b/versioned_docs/version-26.1/installation-steps/img/google-cloud-marketplace/password2.png differ diff --git a/versioned_docs/version-26.1/installation-steps/index.md b/versioned_docs/version-26.1/installation-steps/index.md new file mode 100644 index 0000000000..6f74c450c6 --- /dev/null +++ b/versioned_docs/version-26.1/installation-steps/index.md @@ -0,0 +1,20 @@ +--- +title: Installation Steps +description: Explore step-by-step instructions for deploying ReportPortal, a powerful, centralized test automation tool. +--- + +# Installation Steps + +The **Installation Steps** section provides a detailed guide on how to install ReportPortal, ensuring a smooth and efficient setup process for using our powerful test results reporting service. Whether you are new to ReportPortal or setting up a new instance, following these steps will help you get the platform up and running without any issues. + +Before proceeding with the installation, it is important to select a hardware configuration that meets the needs of your specific use case. To ensure optimal performance, your hardware should have sufficient processing power, memory, and storage. Insufficient hardware capacity is one of the main causes of performance issues or slow operation, so it’s critical to plan accordingly. + +ReportPortal offers **several installation methods** to accommodate different environments and requirements. **The primary methods** include installation via Docker, Kubernetes. Each method is adapted to different levels of expertise and infrastructure setups, giving you flexibility based on your team’s technical requirements. + +This section outlines the installation process for each method step-by-step, providing clear instructions to help you through the configuration. If you need assistance with installation, you can take advantage of our [professional services](https://reportportal.io/pricing/on-premises/). + +By following the instructions in this section, you can ensure a successful and efficient deployment of ReportPortal, allowing you to begin automating your test reporting with ease. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.1/installation-steps/resources/CheatSheet.pdf b/versioned_docs/version-26.1/installation-steps/resources/CheatSheet.pdf new file mode 100644 index 0000000000..90097f8548 Binary files /dev/null and b/versioned_docs/version-26.1/installation-steps/resources/CheatSheet.pdf differ diff --git a/versioned_docs/version-26.1/intro.md b/versioned_docs/version-26.1/intro.md new file mode 100644 index 0000000000..6fcae181cd --- /dev/null +++ b/versioned_docs/version-26.1/intro.md @@ -0,0 +1,77 @@ +--- +title: What is ReportPortal? +sidebar_position: 1 +slug: / +description: "Get started with ReportPortal: real-time results, ML triage, and collaborative analysis to speed decisions and improve quality with a clear test report dashboard." +--- + +# What is ReportPortal? + +ReportPortal is a TestOps service, that provides increased capabilities to speed up results analysis and reporting through the use of built-in analytic features. + +ReportPortal is a great addition to Continuous Integration and Continuous +Testing process. + +ReportPortal is distributed under the Apache v2.0 license, and it is free to use and modify, even for commercial purposes. We offer two paid premium features – [Quality Gates](/26.1/quality-gates) and [SCIM Server feature](/features/SCIMServerFeature). + +If a company is interested in our services, we can provide support hours to deploy, integrate, configure, or customize the tool, as well as [SaaS options](https://reportportal.io/pricing/saas). + +To explore our capabilities, you can try [ReportPortal demo](https://demo.reportportal.io/). + +## What ReportPortal can do? + +- ***Mainstream platforms integration*** + +ReportPortal seamlessly integrates with mainstream platforms such as Jenkins, Jira, BDD process, majority of Functional and Unit testing frameworks. + +- ***Real-time results*** + +Real-time integration provides businesses the ability to manage and track execution status directly from the ReportPortal. + +- ***Test case execution results structure*** + +Test case execution results are stored following the same structure you have in your reporting suites and test plan. The test cases are shown together with all related data in one place, right where you need it: logs, screenshots, binary data. The execution pipeline of certain test cases are also available for you, so one can see previous test execution report in one click. + +- ***Collaborative analysis*** + +Our test report dashboard also gives you the ability to collaboratively analyze the test automation results and quickly get automation test report. Particular test cases can be associated with a product bug, an automation issue, a system issue or can be submitted as an issue ticket directly from the execution result. + +- ***Historical data of test execution*** + +ReportPortal provides enhanced capabilities along with auto-results analysis by + leveraging historical data of test execution. + +- ***Automatic Analysis*** + +With each execution, ReportPortal automatically figures out the root cause of a fail. As a result of AI-based defects triage, ReportPortal is marking a test result with a flag. Engineers will be alerted about this issue to provide further analysis: if it has been resolved already or which test results require actual human analysis. + +## What technologies are used? + +Considering a high load rate and performance requirements, we use +cutting edge technologies such as: + +- PostgreSQL - The World's Most Advanced Open Source Relational Database. + +- REST Web Service - lightweight requests, industry standard. + +- Mobile responsive UI - check it at any mobile device with the default browser. + +## Benefits of report automation with ReportPortal + +Report automation is the procedure by which reports are routinely and automatically refreshed. + +- ***Speedy decision-making*** + +Report automation is an effective technique to provide information that is essential to business operations. Delivering crucial information to the appropriate people at the appropriate time becomes considerably quicker and simpler by automatically generated reports. It allows to get business faster insights and drive better decisions. + +- ***Accurate data*** + +In ReportPortal, you have fully real-time analytic report automation. Since the reports are automatically generated, you are insured against human error when reports are generated manually. + +- ***Advanced reporting*** + +ReportPortal offers widgets with a user-friendly visual interface to create interactive reports for all your needs. For example, you can build qa metrics dashboard using [Overall statistics](/dashboards-and-widgets/OverallStatistics), [Unique bugs table](/dashboards-and-widgets/UniqueBugsTable), [Passing rate summary](/dashboards-and-widgets/PassingRateSummary) widgets. + +- ***Easily running CI/CD tests*** + +ReportPortal is CI/CD agnostic tool solution. You can use [any CI environment](/log-data-in-reportportal/HowToRunYourTests) to run automated tests to improve quality of product by catching issues early in development lifecycle. diff --git a/versioned_docs/version-26.1/issues-troubleshooting/EmailNotificationIssues.md b/versioned_docs/version-26.1/issues-troubleshooting/EmailNotificationIssues.md new file mode 100644 index 0000000000..e16b2a6996 --- /dev/null +++ b/versioned_docs/version-26.1/issues-troubleshooting/EmailNotificationIssues.md @@ -0,0 +1,25 @@ +--- +sidebar_label: Email Notification Issues +description: Troubleshoot email notification issues in ReportPortal QA metric dashboard with ThreadPool and SMTP configuration solutions. +--- + +# Email Notification Issues + +In case of observing issues with email notifications when email service stopped processing messages, RP administrators should be aware of some kinds of known issue types: + +1. ThreadPoolTaskExecutor capacity is too small for handling large number of queued users to be notified. + +**Solution:**
+Update environment variable rp_environment_variable_executor_pool_user-email_queue with bigger value (default: 1000). + +2. The number of ThreadPoolTaskExecutor active threads is bigger than the number of simultaneous connections allowed by SMTP server (e.g., 10 maximum connections for gmail). That makes email server consider such heavy load as DDoS attack and refuse to establish new connections. + +**Solution:**
+Decrease number of active threads by updating environment variable rp_environment_variable_executor_pool_user-email_max (default: 10) + +In order to update environment variables, you should edit your docker-compose.yml file.
+[Job environment variables example for docker](https://github.com/reportportal/reportportal/blob/2b22c61f87674aaf2efc7a973af38004c2517680/docker-compose.yml#L201) + +:::note +In addition, there are daily limits on sending emails from one account. Different email servers have their own restrictions (e.g. 2000 max messages for gmail). +::: diff --git a/versioned_docs/version-26.1/issues-troubleshooting/HowToAddATestStackTraceToADescriptionAutomatically.mdx b/versioned_docs/version-26.1/issues-troubleshooting/HowToAddATestStackTraceToADescriptionAutomatically.mdx new file mode 100644 index 0000000000..cd62c0307b --- /dev/null +++ b/versioned_docs/version-26.1/issues-troubleshooting/HowToAddATestStackTraceToADescriptionAutomatically.mdx @@ -0,0 +1,77 @@ +--- +sidebar_position: 4 +sidebar_label: How to add a test stack trace to a description automatically +description: Automatically add test stack traces to descriptions for faster test failure analysis in ReportPortal. +--- + +# How to add a test stack trace to a description automatically + +You can make your process of a test analysis more convenient and quick by adding a description for failed tests that will include a last error message from the test log. + +You will not need to open an every single test to see the failure reason. With this new functionality you will see test failures reasons right in a table on All launches (step level), so that you can perform group actions to items. + +**How to activate this option:** + +Change your listener to wrap log messages on error level with special text: + +```error + +``` + + + +We have prepared an example how to extend a TestNG agent, and you can find it below: + +**An extend agent service:** +```java + public static class ParamTaggingTestNgService extends TestNGService { + + public ParamTaggingTestNgService(ListenerParameters parameters, ReportPortalClient reportPortalClient) { + super(parameters, reportPortalClient); + } + + @Override + protected StartTestItemRQ buildStartStepRq(ITestResult testResult) { + final StartTestItemRQ rq = super.buildStartStepRq(testResult); + if (testResult.getParameters() != null && testResult.getParameters().length != 0) { + final Set tags = Optional.fromNullable(rq.getTags()).or(new HashSet<>()); + for (Object param : testResult.getParameters()) { + tags.add(param.toString()); + } + rq.setTags(tags); + + } + return rq; + } + + @Override + protected FinishTestItemRQ buildFinishTestMethodRq(String status, ITestResult testResult) { + FinishTestItemRQ finishTestItemRQ = super.buildFinishTestMethodRq(status, testResult); + if (testResult.getThrowable() != null) { + String description = + "```error\n" + + Throwables.getStackTraceAsString(testResult.getThrowable()) + + "\n```"; + description = description + Throwables.getStackTraceAsString(testResult.getThrowable()); + finishTestItemRQ.setDescription(description); + } + return finishTestItemRQ; + } + } +``` + +**An extend listener with your extended service:** +```java + public static class ExtendedListener extends BaseTestNGListener { + public ExtendedListener() { + super(override(new TestNGAgentModule()).with((Module) binder -> binder.bind(ITestNGService.class) + .toProvider(new TestNGProvider() { + @Override + protected TestNGService createTestNgService(ListenerParameters listenerParameters, + ReportPortalClient reportPortalClient) { + return new ParamTaggingTestNgService(listenerParameters, reportPortalClient); + } + }))); + } + } +``` diff --git a/versioned_docs/version-26.1/issues-troubleshooting/HowToAvoidLocalExecutionReportedIntoProjectSpace.md b/versioned_docs/version-26.1/issues-troubleshooting/HowToAvoidLocalExecutionReportedIntoProjectSpace.md new file mode 100644 index 0000000000..1fb35be40e --- /dev/null +++ b/versioned_docs/version-26.1/issues-troubleshooting/HowToAvoidLocalExecutionReportedIntoProjectSpace.md @@ -0,0 +1,56 @@ +--- +sidebar_position: 3 +sidebar_label: How to avoid local execution reported into project space +description: Learn how to prevent local test executions from appearing in your ReportPortal project space by configuring launch attributes and user roles effectively. +--- + +# How to avoid local execution reported into project space + +**Option 1:** + +Use a specific attribute for launches, which should represent the state. + +Create filters using those attributes. Build widgets and dashboards, based on those attributes. + +You can add those additional attributes via the CI command line. + +So, only Jenkins will generate launches with those attributes. + +**Option 2:** + +Put `rp.mode=debug` in all `reportportal.properties` files. + +For Jenkins executions, overload this param via the command line as `rp.mode=default`, + +so that all local launches will be in debug, all Jenkins – in launches. + +**Option 3:** + +Combine _option #2_ and _option #3_, in the launch name. + +`rp.launch=xxx` saved in all `reportportal.properties` files. + +For Jenkins executions, overload this param via the command line as `rp.launch=yyy` + +The auto-analysis will use only `yyy` launches for review. + +Use filter, based on your `yyy` name for widgets. + +**Option 4:** + +The same like _option 2_, but with `rp.enable=false|true` + +This will turn off reporting for local launches + +**Option 5:** + +Set all users on the project with the Role `Operator`. This role can’t report data into RP. + +Create an internal user for Jenkins executions, set him/her as a PROJECT MANAGER role. + +This will make it possible to create launches only for Jenkins users + +:::note +It is also possible to combine all those options at the same time. +::: + diff --git a/versioned_docs/version-26.1/issues-troubleshooting/HowToCheckLDAPConnection.md b/versioned_docs/version-26.1/issues-troubleshooting/HowToCheckLDAPConnection.md new file mode 100644 index 0000000000..154716a99b --- /dev/null +++ b/versioned_docs/version-26.1/issues-troubleshooting/HowToCheckLDAPConnection.md @@ -0,0 +1,45 @@ +--- +sidebar_position: 7 +sidebar_label: How to check LDAP connection +description: Learn how to check LDAP connection for ReportPortal authentication troubleshooting. +--- + +# How to check LDAP connection + +Firstly, check the availability of your LDAP server from the server when ReportPortal is installed. For example, use the command ldapsearch. + +```bash +ldapsearch -x -h -p -D "" -w "" -b "" "uid=user1" +``` + +Output will be: +``` +# extended LDIF +# +# LDAPv3 +# base with scope subtree +# filter: uid=user1 +# requesting: ALL +# + +# user1, people, rp.com +dn: cn=tester,ou=people,dc=rp,dc=com +objectClass: inetOrgPerson +cn: user1 +sn: user1 +uid: user1 +userPassword:: PASSWORD +mail: user1@rp.com +description: user1 for experiments + +# search result +search: 2 +result: 0 Success + +# numResponses: 2 +# numEntries: 1 +``` + +**Hints** + +If you are using docker you can also use the internal container IP `docker inspect -f '\{{range .NetworkSettings.Networks}}\{{.IPAddress}}\{{end}}' ` diff --git a/versioned_docs/version-26.1/issues-troubleshooting/HowToCleanUpTheReportPortalDatabaseUsingPGRepack.md b/versioned_docs/version-26.1/issues-troubleshooting/HowToCleanUpTheReportPortalDatabaseUsingPGRepack.md new file mode 100644 index 0000000000..b9a53bb02d --- /dev/null +++ b/versioned_docs/version-26.1/issues-troubleshooting/HowToCleanUpTheReportPortalDatabaseUsingPGRepack.md @@ -0,0 +1,127 @@ +--- +sidebar_position: 8 +sidebar_label: How to clean up the ReportPortal database using PG_REPACK +description: Optimize ReportPortal performance by removing database bloat using PG_REPACK - an online, efficient method that minimizes downtime and system impact. +--- + +# How to clean up the ReportPortal database using PG_REPACK + +## Description + +[pg_repack](https://reorg.github.io/pg_repack/) is a PostgreSQL extension that lets you remove bloat from tables and indexes, and optionally restore the physical order of clustered indexes. Unlike CLUSTER and VACUUM FULL it works online, without holding an exclusive lock on the processed tables during processing. pg_repack is efficient to boot, with performance comparable to using CLUSTER directly. + +## Performance + +|Initial Database Size|Final Database Size|Repack duration|Duration| +|---------------------|-------------------|---------------|--------| +|1500 Gb |251 Gb |1200 Gb |7 hours | + +Overall pg_repack performance has been tested during load tests running and without. The database load during pg_repack is pretty good by capacity and instance   +High DB RAM Utilization faced at the pr_repack starting, but then the overall RAM Usage becomes normal. During reporting(load tests running) faced small response times and throughput degradation around 10 minutes, but then they became a regular performance. Also, no KO requests during reporting and pg_repack run in parallel, so that all Staging pg_repack configuration can be safely porting to Production. + +### Detailed DB Resource Utilization Stats + +|Resources |Used | +|------------------|---------------| +|CPU utilization |13 % | +|CPU IOwait |7% | +|Disk IO Read/Write|1800/30000 IOPS| + +## PG_REPACK installation + +To install PG_REPACK use the guide from the official [GitHub page](https://reorg.github.io/pg_repack/). If you use Amazon RDS follow the [link](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.html#Appendix.PostgreSQL.CommonDBATasks.pg_repack) + +## PG_REPACK usage + +* Attach to Screen session: + +```bash +screen +``` + +For more information about the Screen read this [guide](https://linux.die.net/man/1/screen). + +* You need to add the path to the PG_REPACK executable file. The PATH variable is an environment variable that contains an ordered list of paths that Unix will search for executables when running a command. Run the following command: + +```bash +export PATH=$PATH:/usr/pgsql-12/bin/ +``` + +* Create **.pgpass** file and fill your data. The file **.pgpass** the file referenced by PGPASSFILE contain passwords to be used if the connection requires a password. [Documentation](https://www.postgresql.org/docs/9.3/libpq-pgpass.html). + +```bash +cat << EOF | tee -a /.pgpass +:::: +EOF +``` + +For example, **.pgpass** file should look like this: + +```bash +reportportal-cdufjldqrau0.eu-west-3.rds.amazonaws.com:5432:reportportal:rpuser:strongpassword +``` + +* Change permissions to .pgpasss file: + +```bash +chmod 600 /.pgpass +``` + +* Set PGPASSFILE environment variable: + +```bash +export PGPASSFILE='/.pgpass' +``` + +* Fill your data and run PG_REPACK: + +```bash +pg_repack -h -U -k &>> /pg_repack-rpdb.log +``` + +No password is needed for the database because you are using **.pgpass**. + +When you run the command, you will get artifact pg_repack-rpdb.log, where PG_REPACK will storage the logs. The pg_repack-rpdb.log file is stored in your root directory `/`. + +* To detach from the Screen session type **Control+a+d** (on OSX and Linux). The result will be similar to: + +```bash +[detached from 22556.pts-0.ip-10-68-38-165] +``` + +22556 is ID of you screen session. You will get a different ID. Save it. + +* Attach to the Screen session: + +```bash +screen -r +``` + +If you have one Screen session, you will join it. If you have two or more of them, you will get the following result: + +```bash +There are several suitable screens on: + 22556.pts-0.ip-10-68-38-165 (Detached) + 8175.pts-0.ip-10-68-38-165 (Detached) +Type "screen [-d] -r [pid.]tty.host" to resume one of them. +``` + +To join the PG_REPACK Screen session fill your Screen ID that you saved in step 4 and run the following command: + +```bash +screen -r +``` + +* To view the process of running the command you can read pg_repack-rpdb.log with command: + +```bash +cat /pg_repack-rpdb.log +``` + +In addition, you can stream log with the command: + +```bash +tail -F /pg_repack-rpdb.log +``` + +Type Control+c (on OSX and Linux) to exit from Tail diff --git a/versioned_docs/version-26.1/issues-troubleshooting/HowToCleanUpTheReportPortalDatabaseUsingVacuumFull.md b/versioned_docs/version-26.1/issues-troubleshooting/HowToCleanUpTheReportPortalDatabaseUsingVacuumFull.md new file mode 100644 index 0000000000..966dc219b8 --- /dev/null +++ b/versioned_docs/version-26.1/issues-troubleshooting/HowToCleanUpTheReportPortalDatabaseUsingVacuumFull.md @@ -0,0 +1,126 @@ +--- +sidebar_position: 9 +sidebar_label: How to clean up the ReportPortal database using VACUUM FULL +description: Learn how to clean up ReportPortal database using VACUUM FULL for optimal performance. +--- + +# How to clean up the ReportPortal database using VACUUM FULL + +## General information + +`VACUUM` reclaims storage occupied by dead tuples. In normal PostgreSQL operation, tuples that are deleted or obsoleted by an update are not physically removed from their table; they remain present until a `VACUUM` is done. Therefore it's necessary to do `VACUUM` periodically, especially on frequently-updated tables. +`VACUUM ANALYZE` performs a `VACUUM` and then an `ANALYZE` for each selected table. This is a handy combination form for routine maintenance scripts. See [PostgreSQL documentation](https://www.postgresql.org/docs/12/sql-vacuum.html) for more details about those operations. +Plain `VACUUM` (**without FULL**) simply reclaims space and makes it available for re-use. This form of the command can operate in parallel with normal reading and writing of the table, as an exclusive lock is not obtained. However, extra space is not returned to the operating system (in most cases); it's just kept available for re-use within the same table. +`VACUUM FULL` rewrites the entire contents of the table into a new disk file with no extra space, allowing unused space to be returned to the operating system. This form is much slower and requires an exclusive lock on each table while it is being processed. + +The main goals for performing `VACUUM FULL` at the ReportPoral database: +- improve DB queries performance by removing dead tuples and updating statistics; +- reclaim storage space occupied by dead tuples; +- prevent bloating tables. + +## Parameters + +| Parameter | Description | +| ----------- | ----- | +| FULL | Selects "full" vacuum, which can reclaim more space, but takes much longer and exclusively locks the table. This method also requires extra disk space, since it writes a new copy of the table and doesn't release the old copy until the operation is complete. Usually this should only be used when a significant amount of space needs to be reclaimed from within the table. | +| FREEZE | Selects aggressive "freezing" of tuples. Specifying FREEZE is equivalent to performing VACUUM with the vacuum_freeze_min_age and vacuum_freeze_table_age parameters set to zero. Aggressive freezing is always performed when the table is rewritten, so this option is redundant when FULL is specified. | +| VERBOSE | Prints a detailed vacuum activity report for each table. | +| ANALYZE | Updates statistics used by the planner to determine the most efficient way to execute a query. | + +⚠️ **Important notes** + +1. Assuming that `VACUUM FULL` required exclusive locks on the tables and required high time-consuming on the large databases, the suggestions are: + + - conduct testing of the `VACUUM FULL` execution at Staging/Dev/Non-Prod environment; + - schedule the particular downtime for the Production database and shut down the application services except for the database. + +2. Сheck that the database disk has free space equal to or greater than the size of the largest table(with its indexes) in the database. + +The main suggestion is to perform `VACUUM FULL` operation periodically not for the whole database, but only for the particular tables defined below, which helps increase overall SQL queries performance. `VACUUM FULL` frequency for the databases more than 1Tb with high reporting amount - at least once per 3 months. + +Tables list and it's operations duration on our database(AWS RDS PostgreSQL Database spec: db.m5.4xlarge 16CPUs, 64Gb RAM):
+ +| Table |Rows count| VACUUM Operation | Duration| +|-|-|-|-| +|log|614 372 224|FULL|14h 30m| +|log|614 372 224|ANALYZE|1h 30m| +|test_item|207 311 552|FULL|1h 50m| +|test_item|207 311 552|ANALYZE|21m| +|statistics|299 341 024|FULL|10m| +|statistics|299 341 024|ANALYZE|3m 49s| +|test_item_results|450 264 992|FULL|9m| +|test_item_results|450 264 992|ANALYZE|4m 12s| + +## VACUUM FULL execution + +**Preconditions:** +Apply next configuration to PostgreSQL Parameter Group(database restart not needed after applying): + +```yaml +maintenance_work_mem=8000000 +max_parallel_maintenance_workers=16 +``` + +* Configuration examples are defined for the database shape 16CPU, 64Gb RAM. The suggestion for other database shapes are: for maintenance_work_mem - 1/4 part of the total database RAM size; max_parallel_maintenance_workers - database CPUs count. + +Perform `VACUUM FULL` and `ANALYZE` on the each database table using the query: + +```yaml +VACUUM (FULL, ANALYZE) my_table +``` + +Or perform `VACUUM FULL` and `VACUUM ANALYZE` on all tables in the database using commands sequentially: + +```yaml +VACUUM FULL +VACUUM ANALYZE +``` + +**Postconditions:** +Apply regular configuration to PostgreSQL Parameter Group(database restart not needed after applying): + +```yaml +maintenance_work_mem=2000000 +max_parallel_maintenance_workers=8 +``` + +## Useful PostgreSQL queries + +Total database size: + +```yaml +SELECT pg_size_pretty(pg_database_size('reportportal')); +``` + +Show autovacuum stats: + +```yaml +SELECT relname, last_vacuum, last_autovacuum FROM pg_stat_user_tables; +``` + +Detailed statistic by each table and indexes: + +```yaml +SELECT *, pg_size_pretty(total_bytes) AS total + , pg_size_pretty(index_bytes) AS index + , pg_size_pretty(toast_bytes) AS toast + , pg_size_pretty(table_bytes) AS table + FROM ( + SELECT *, total_bytes-index_bytes-coalesce(toast_bytes,0) AS table_bytes FROM ( + SELECT c.oid,nspname AS table_schema, relname AS table_name + , c.reltuples AS row_estimate + , pg_total_relation_size(c.oid) AS total_bytes + , pg_indexes_size(c.oid) AS index_bytes + , pg_total_relation_size(reltoastrelid) AS toast_bytes + FROM pg_class c + LEFT JOIN pg_namespace n ON n.oid = c.relnamespace + WHERE relkind = 'r' + ) a +) a; +``` + +Dead tuples amount per table: + +```yaml +SELECT relname, n_dead_tup FROM pg_stat_user_tables order by n_dead_tup desc; +``` \ No newline at end of file diff --git a/versioned_docs/version-26.1/issues-troubleshooting/HowToResolveIssuesWithMigrationToTheNewVersion.md b/versioned_docs/version-26.1/issues-troubleshooting/HowToResolveIssuesWithMigrationToTheNewVersion.md new file mode 100644 index 0000000000..db2e98c685 --- /dev/null +++ b/versioned_docs/version-26.1/issues-troubleshooting/HowToResolveIssuesWithMigrationToTheNewVersion.md @@ -0,0 +1,47 @@ +--- +sidebar_position: 10 +sidebar_label: How to resolve issues with migration to the new version +description: Learn how to resolve migration issues when upgrading ReportPortal to new versions. +--- + +# How to resolve issues with migration to the new version + +## Error: Dirty database version XX. Fix and force version. + +That means, migration process has been interrupted during XX migration (migration has been started but not finished) +1. At first, you need to check the logs of migration (service itselft and database), it can be helpful, if yes, make some actions based on logs, if not then move next. +2. You need to rollback all applied (if any) migration XX parts. + +The format for url is the next: + +``` +https://github.com/reportportal/migrations/blob/develop/migrations/XX_some_name.up.sql +``` + +(Usually nothing to rollback, but need check) + +3. Change in schema_migrations table, change values in this table to version=XX-1 (previous successful migration number), and dirty flag set to true. +4. Restart migration. + +For instance, if you have "Error: Dirty database version 10. Fix and force version." +1. Check the logs(service itselft and database), in case we've found nothing, move next. +2. You need to check 10 migration (https://github.com/reportportal/migrations/blob/develop/migrations/10_attachment_size.up.sql) and rollback if you have some partly migration. +3. Then execute #update schema_migrations set version=9, dirty=f +4. Redeploy RP based on docker-composer for example (migration should be started automatically, if you followed by instructions of installation for this way.) + +## Error: org.jasypt.exceptions.EncryptionOperationNotPossibleException: null. API doesn't start. ReportPortal unavailable. + +Minio files are used during migration to change integration passwords encryption. +Files in Minio may be corrupted and deleted somehow before migration during Reportportal usage. + +Removing existing integrations from db before deploying can help. Creation of a new integration will use a new encryption type. + +1. Execute the next script in database to remove existing integrations before deploy: + +```sql +DELETE FROM integration WHERE type IN (SELECT id FROM integration_type WHERE name IN ('email', 'jira', 'ldap', 'ad')); + +``` +2. Deploy Reportportal +3. Create integrations again + diff --git a/versioned_docs/version-26.1/issues-troubleshooting/IssuesWithJIRABugTrackingSystemHowToResolve.md b/versioned_docs/version-26.1/issues-troubleshooting/IssuesWithJIRABugTrackingSystemHowToResolve.md new file mode 100644 index 0000000000..6ed153c550 --- /dev/null +++ b/versioned_docs/version-26.1/issues-troubleshooting/IssuesWithJIRABugTrackingSystemHowToResolve.md @@ -0,0 +1,91 @@ +--- +sidebar_position: 2 +sidebar_label: 'Issues with JIRA bug tracking system: how to resolve' +description: Resolve JIRA integration issues in ReportPortal by verifying URLs, project keys, credentials, and importing necessary certificates for seamless connectivity. +--- + +# Issues with JIRA bug tracking system: how to resolve + +In case user is connecting to JIRA system and gets the error like +"Impossible interact with external system.<name of current user's project>", there +are some reasons could cause the issue: + +* verify that the link to JIRA system is correct +* verify the project name is correct +* verify username and password data + +**First**, verify that the link to JIRA system is correct. There are some variants +are possible, for instance: + +``` +https://jira.company.com/jira +https://jiraeu.company.com +``` + +**Second**, verify the project name is correct. Please fill in Project name field with +project key value, e.g. project ABC-DEF has key ABCDEF. + +**Third**, verify username and password data. Make sure, that login name and not email +is in the username field. In case all the data above is correct, but the error +appears again, check whether user's credentials to JIRA are not expired. +As far as JIRA sends the request in html format, we are not able to display the real +reason of error. +To check and/or resolve the issue, please do the next steps: +1. Open JIRA page +2. Login JIRA with domain credentials using basic authorization (i.e., fill in user's +login name and password into the fields) +3. Submit the login form +Screen with CAPTCHA should appears +4. Enter the symbols +5. Submit the credentials again +6. Now try to establish the connection to JIRA on ReportPortal project. + +**Fourth**, the connection to the JIRA instance might require a certificate. If that's the case, the certificate needs to be imported inside the API container. Follow these steps: + +```sh +# 1. Access the shell of the API Docker container +docker exec -it reportportal_api_1 /bin/sh + +# 2. Change the directory to point to the 'security' directory +cd /usr/lib/jvm/jre/lib/security/ +# Or use this command if the 'security' directory is in another folder: +# cd /usr/lib/jvm/java-11-amazon-corretto/jre/lib/security/ + +Note: Replace 'java-11-amazon-corretto' with the version in the latest API Docker image. + +# 3. Get the certificate file +curl -O url://to/your/foo.cert + +# 4. Import the certificate +keytool -importcert -noprompt -file foo.cert -alias "JIRA CERT" -keystore cacerts -storepass abc123 # note: the default password for the keystore is 'changeit' + +# 5. Exit the shell and restart the docker API. +exit + +# 6. Try to establish the connection to JIRA on the ReportPortal project again. +``` +Or use this alternative method: + +```sh +# 1. Copy the certificate into the Docker container +docker cp cert.der reportportal_api_1:/cert.der + +# 2. Import the certificate +docker exec -t -i reportportal_api_1 ./usr/lib/jvm/jre/bin/keytool -import -alias rootcert -keystore /usr/lib/jvm/jre/lib/security/cacerts -file /cert.der +# If the 'jre' folder is inside another folder, use the following command instead: +# docker exec -t -i reportportal_api_1 ./usr/lib/jvm/java-11-amazon-corretto/jre/bin/keytool -import -alias rootcert -keystore /usr/lib/jvm/java-11-amazon-corretto/jre/lib/security/cacerts -file /cert.der + +Note: Replace 'java-11-amazon-corretto' with the version in the latest API Docker image. + +# 3. Exit and restart the Docker API. +exit + +# 4. Attempt the connection to JIRA on ReportPortal project again. +``` +Both methods should allow you to import the necessary certificate for your JIRA connection inside the ReportPortal API container. + +:::note +SSL instance of JIRA (even cloud version) can be accessed by JIRA API token, used instead of password. +::: + +If these didn't resolve your issues, please contact us. diff --git a/versioned_docs/version-26.1/issues-troubleshooting/IssuesWithLDAPSHowToResolve.md b/versioned_docs/version-26.1/issues-troubleshooting/IssuesWithLDAPSHowToResolve.md new file mode 100644 index 0000000000..f4f806395b --- /dev/null +++ b/versioned_docs/version-26.1/issues-troubleshooting/IssuesWithLDAPSHowToResolve.md @@ -0,0 +1,30 @@ +--- +sidebar_position: 5 +sidebar_label: 'Issues with LDAPS: how to resolve' +description: Troubleshoot LDAPS authentication issues in ReportPortal with SSL certificate solutions. +--- + +# Issues with LDAPS: how to resolve + +When configuring LDAP to work with ldaps:// users may see the following error when trying to log in: +``` +sun.security.validator.ValidatorException: PKIX path building failed: +sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target. +``` + +This error can be solved by importing the needed certificate within the authorization container: + +```sh +# Enter service-authorization container as root +docker exec -u 0 -it reportportal_uat_1 sh + +# Download certificates +cd /usr/local/share/ca-certificates/ +wget url://to/your/foo.cert + +# Import the cert to keytool. if password is required the default should be "changeit" +$JAVA_HOME/bin/keytool -import -alias ldap_cert -keystore $JAVA_HOME/lib/security/cacerts -file /usr/local/share/ca-certificates/foo.cert + +# exit container and restart it +docker restart reportportal_uat_1 +``` diff --git a/versioned_docs/version-26.1/issues-troubleshooting/ResolveAnalyzerKnownIssues.mdx b/versioned_docs/version-26.1/issues-troubleshooting/ResolveAnalyzerKnownIssues.mdx new file mode 100644 index 0000000000..b1584ae6e0 --- /dev/null +++ b/versioned_docs/version-26.1/issues-troubleshooting/ResolveAnalyzerKnownIssues.mdx @@ -0,0 +1,93 @@ +--- +sidebar_position: 6 +sidebar_label: Resolve Analyzer Known Issues +description: Troubleshoot and resolve common Analyzer issues in ReportPortal, including OpenSearch health, AMQP connections, and performance optimizations. +--- + +# Resolve Analyzer Known Issues + +## Problem 1. Auto-Analyser doesn't work. Analyzer health check status failed: OpenSearch is not healthy + +### Problem Description + +Analyzer log: + +``` +2021-09-09 11:34:47,927 - analyzerApp - ERROR - Analyzer health check status failed: OpenSearch is not healthy; +[pid: 10|app: 0|req: 1/3] 127.0.0.1 () {28 vars in 294 bytes} [Thu Sep 9 11:34:46 2021] GET / => generated 43 bytes in 1643 msecs (HTTP/1.1 503) 3 headers in 120 bytes (1 switches on core 0) +2021-09-09 11:35:48,737 - analyzerApp.utils - ERROR - Error with loading url: http://opensearch:9200/_cluster/health +2021-09-09 11:35:48,752 - analyzerApp.utils - ERROR - HTTPConnectionPool(host='opensearch', port=9200): Max retries exceeded with url: /_cluster/health (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) +2021-09-09 11:35:48,753 - analyzerApp.esclient - ERROR - OpenSearch is not healthy +2021-09-09 11:35:48,753 - analyzerApp.esclient - ERROR - list indices must be integers or slices, not str +``` + +OpenSearch container restarting all the time: + +``` +STATUS NAMES +Up Less than a second (health: starting) reportportal_opensearch_1 +``` + +### Solution + +Create a directory for OpenSearch and assign permissions with the following commands + +```bash +mkdir -p data/opensearch +chmod 777 data/opensearch +chgrp 1000 data/opensearch +``` + +Recreate ReportPortal services. + +## Problem 2. Auto-Analyser doesn't work. KeyError: 'found_test_and_methods' not found + +### Problem Description + +``` +2021-09-09 11:35:48,737 - analyzerApp.utils - ERROR - KeyError: 'found_test_and_methods' not found +``` + +### Solution + +Regenerate index in the OpenSearch. Project settings -> Auto-Analysis -> Genetate Index + + + +## Problem 3. Amqp connection was not established + +### Problem Description + +``` +2021-09-09 11:32:00,579 - analyzerApp - INFO - Starting waiting for AMQP connection +2021-09-09 11:32:00,586 - analyzerApp.amqp - INFO - Try connect to amqp://rabbitmq:5672/analyzer?heartbeat=600 +2021-09-09 11:32:00,595 - analyzerApp - ERROR - Amqp connection was not established +``` + +### Solution + +RabbitMQ container is not running. Wait for status `running` or recreate the RabbitMQ container. + +## Problem 4. Performance + +### Problem Description + +Slowing down analysis or waiting for a long time fore responce. + +Analyzer logs: + +``` +DAMN ! worker 1 (pid: 9191) died, killed by signal 9 :( trying respawn ... +Respawned uWSGI worker 1 (new pid: 9490) +``` + +### Solution + +Increase VM stats. We recommend using the minimum memory: +* [Analyzer](https://github.com/reportportal/reportportal/blob/master/docker-compose.yml#L56) - 1024 Mb +* [Analyzer train](https://github.com/reportportal/reportportal/blob/master/docker-compose.yml#L69) - 512 Mb + +Also you can reduce the number of Analyzer processes with processing environment variable `UWSGI_WORKERS: 2` (default `4`), then: +* [Analyzer](https://github.com/reportportal/reportportal/blob/master/docker-compose.yml#L56) - 768 Mb + +However, `UWSGI_WORKERS` will slow down the Analyzer. diff --git a/versioned_docs/version-26.1/issues-troubleshooting/TuningCITool.mdx b/versioned_docs/version-26.1/issues-troubleshooting/TuningCITool.mdx new file mode 100644 index 0000000000..7346ca224e --- /dev/null +++ b/versioned_docs/version-26.1/issues-troubleshooting/TuningCITool.mdx @@ -0,0 +1,43 @@ +--- +sidebar_position: 1 +sidebar_label: Tuning CI tool +description: Optimize your CI pipeline by passing parameters via system variables in Jenkins, enhancing test execution flexibility and integration with ReportPortal. +--- + +# Tuning CI tool + +How to provide parameters via system variables in the CI tool (for example - Jenkins) for our continuous testing platform. + +In order to provide specific parameters (Such as attributes) for different +executions that are based on the parameters loading order, you can provide them as system +variables. + +To do so, follow the steps below: + +1. Open the Job configuration in Jenkins. + + + +2. Select the "This build is parameterized" check-box. + +3. Click the "Add Parameter" and select "Text Parameter". + + + +4. Define any name for the parameter and set the default value (note that attributes should have semicolon-separated values, with no spaces). + + + +5. Update the execution command at the "Build" section: add ReportPortal parameters using –D for a system variable parameters. For attributes it is "rp.tags": + + + +6. Click the "Build with Parameters" button. + + + +7. In the opened dialog, specify the needed parameters, using semicolons to separate values. + + + +8. Then Click the "Build" button. diff --git a/versioned_docs/version-26.1/issues-troubleshooting/_category_.json b/versioned_docs/version-26.1/issues-troubleshooting/_category_.json new file mode 100644 index 0000000000..42c604c5d7 --- /dev/null +++ b/versioned_docs/version-26.1/issues-troubleshooting/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Issues Troubleshooting", + "position": "21", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.1/issues-troubleshooting/img/AnalysisConfigurations.png b/versioned_docs/version-26.1/issues-troubleshooting/img/AnalysisConfigurations.png new file mode 100644 index 0000000000..90597bfbeb Binary files /dev/null and b/versioned_docs/version-26.1/issues-troubleshooting/img/AnalysisConfigurations.png differ diff --git a/versioned_docs/version-26.1/issues-troubleshooting/img/AutoanalyzerGenerateIndex.gif b/versioned_docs/version-26.1/issues-troubleshooting/img/AutoanalyzerGenerateIndex.gif new file mode 100644 index 0000000000..cb24e3bb57 Binary files /dev/null and b/versioned_docs/version-26.1/issues-troubleshooting/img/AutoanalyzerGenerateIndex.gif differ diff --git a/versioned_docs/version-26.1/issues-troubleshooting/img/TipAndTricksStackTrace.png b/versioned_docs/version-26.1/issues-troubleshooting/img/TipAndTricksStackTrace.png new file mode 100644 index 0000000000..ba7f5b60ac Binary files /dev/null and b/versioned_docs/version-26.1/issues-troubleshooting/img/TipAndTricksStackTrace.png differ diff --git a/versioned_docs/version-26.1/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool1.png b/versioned_docs/version-26.1/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool1.png new file mode 100644 index 0000000000..6bfd1118e3 Binary files /dev/null and b/versioned_docs/version-26.1/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool1.png differ diff --git a/versioned_docs/version-26.1/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool2.png b/versioned_docs/version-26.1/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool2.png new file mode 100644 index 0000000000..f83208e7a6 Binary files /dev/null and b/versioned_docs/version-26.1/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool2.png differ diff --git a/versioned_docs/version-26.1/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool3.png b/versioned_docs/version-26.1/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool3.png new file mode 100644 index 0000000000..0950fa30b5 Binary files /dev/null and b/versioned_docs/version-26.1/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool3.png differ diff --git a/versioned_docs/version-26.1/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool4.png b/versioned_docs/version-26.1/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool4.png new file mode 100644 index 0000000000..7eec52bcd3 Binary files /dev/null and b/versioned_docs/version-26.1/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool4.png differ diff --git a/versioned_docs/version-26.1/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool5.png b/versioned_docs/version-26.1/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool5.png new file mode 100644 index 0000000000..e6a07d9119 Binary files /dev/null and b/versioned_docs/version-26.1/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool5.png differ diff --git a/versioned_docs/version-26.1/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool6.png b/versioned_docs/version-26.1/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool6.png new file mode 100644 index 0000000000..5b28d8f623 Binary files /dev/null and b/versioned_docs/version-26.1/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool6.png differ diff --git a/versioned_docs/version-26.1/issues-troubleshooting/index.md b/versioned_docs/version-26.1/issues-troubleshooting/index.md new file mode 100644 index 0000000000..1bcf7a6dce --- /dev/null +++ b/versioned_docs/version-26.1/issues-troubleshooting/index.md @@ -0,0 +1,16 @@ +--- +title: Issues Troubleshooting +description: Utilize ReportPortal's Issues Troubleshooting guide for improved test report generation and effective bug triage. +--- + +# Issues Troubleshooting + +The **Issues Troubleshooting** section is dedicated to helping testing teams identify and resolve common issues that may arise while using ReportPortal. This section provides targeted, practical guidance for understanding potential system challenges that can impact test automation processes. Here, you’ll find practical advice and step-by-step troubleshooting techniques for tackling various errors and system alerts, designed to ensure that your workflows run smoothly, minimizing disruptions and maximizing productivity. + +Each guide focuses on **a range of frequent issues that teams encounter and offers clear solutions** that can be implemented quickly. By using these troubleshooting resources, you’ll gain the insight and skills needed to assess problems effectively and take corrective actions before they escalate. This proactive approach can save valuable time and resources, allowing your team to concentrate on improving efficiency, optimizing test coverage, and improving software quality. + +Additionally, this section covers advanced tips for recognizing patterns in recurring issues, enabling you to adjust configurations and workflows for greater reliability. Whether you're managing large volumes of test data or troubleshooting integration issues, the Issues Troubleshooting section equips you with the skills and techniques to enhance stability and resilience across your test automation processes. By staying prepared and knowledgeable, you can ensure a smoother, more efficient testing experience with ReportPortal. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/HowToGetAnAccessTokenInReportPortal.mdx b/versioned_docs/version-26.1/log-data-in-reportportal/HowToGetAnAccessTokenInReportPortal.mdx new file mode 100644 index 0000000000..57c0993e7a --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/HowToGetAnAccessTokenInReportPortal.mdx @@ -0,0 +1,98 @@ +--- +sidebar_position: 6 +sidebar_label: How to get an access token in ReportPortal +description: Learn how to obtain an access token in ReportPortal using your login credentials or API key, enabling secure interactions with the ReportPortal REST API. +--- + +# How to get an access token in ReportPortal + +There are two ways to authorize in the ReportPortal API: + +## 1. Authorization with user’s login and password + +This is the main and **recommended way** to get access to ReportPortal API. + +Make the following HTTP request to get user's access token using login and password: + +``` +POST /uat/sso/oauth/token + +BODY with parameters: +grant_type: password +username: +password: +``` + + +Or you can use the following curl request: + +```curl +curl --header "Content-Type: application/x-www-form-urlencoded" \ + --request POST \ + --data "grant_type=password&username=&password=" \ + --user "ui:uiman" \ + /uat/sso/oauth/token +``` + +Then you will receive a response with an access token: + +```json +{ + "access_token": , + "token_type": "bearer", + "expires_in": , + "refresh_token": , + ... +} +``` +Now you can use “access_token” with any request to API by sending it as HTTP Authorization header: + +```http +HTTP Header: +Authorization: Bearer + +``` + +## 2. Authorization with user's API Key (for agents) + +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 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. +::: + +Thus, you can use several API keys at the same time. And revoke unused, expired or publicly exposed keys. + + + +To generate a new API key in the ReportPortal app, click on the "Generate API Key" button. + +You are free to assign any name to this API key, as long as it is unique and consists of 1 to 40 characters. Keep in mind that duplicate API key names are not allowed. + +The system will automatically prefix the generated API key with its assigned name for easy identification. If the API key name contains spaces or underscores, these will be replaced by hyphens in the API key prefix. + +It's crucial to understand that the API key will be visible only at the point of creation. We strongly recommend copying and securely storing it for future use, as it will be impossible to retrieve later. This practice aligns with stringent security measures and standards. + + + +You have the ability to create multiple API keys for various purposes, such as for automation or for integration with third-party services. However, it's important to note that all API keys generated from the user's Profile page are functionally equivalent from the permissions standpoint. + +Users can also revoke an API key at any time. Upon revocation, all related information will be removed from the database, and the revoked API key will no longer be usable. + +An API key functions similarly to a regular token. When making requests to the ReportPortal API, simply include it in the HTTP Authorization header as follows: + +```http +HTTP Header:
+Authorization: Bearer +``` + + + + +:::note +Please be aware that this type of token is specifically designed for use by ReportPortal client tools (agents). We do not recommend using it to provide direct access to API endpoints. +::: diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/HowToReportAttributesToReportPortal.mdx b/versioned_docs/version-26.1/log-data-in-reportportal/HowToReportAttributesToReportPortal.mdx new file mode 100644 index 0000000000..06b7f79706 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/HowToReportAttributesToReportPortal.mdx @@ -0,0 +1,144 @@ +--- +sidebar_label: How to report attributes to ReportPortal +description: Learn how to report attributes to ReportPortal to categorize, filter, and analyze test data effectively, enhancing your test management process. +--- + +# How to report attributes to ReportPortal + +Attributes are essential for categorizing, filtering, and analyzing test data. This article will guide you through the process of reporting attributes to our test results reporting service. + +Be sure to check out our dedicated article for [best practices on using attributes](/work-with-reports/LaunchesTestItemsAttributes) effectively. + +## Parameters of attributes + +* Format – Key : Value +* Key – any string value, optional field +* Value – any string value, mandatory field +* The maximum limit is 512 symbols each for both key and value + +Multiple values can be associated with a single key. For example, if we have a `jira_id` key, the value can differ based on the Jira ticket. + + + +:::important +The only valid use of the colon is to split the key and value.
+When a colon is present in the key or in the value, it breaks the string into two parts. +::: + +### Colon scenarios + +**1.** Key and value reported, colon used in key only. + +**Example:**
+```{"key": "la:bel", "value": "smoke"}``` + +**Behavior on UI:**
+Key: la
+Value: bel + +The original value "smoke" is not transmitted at all. + +**2.** Key and value reported, colon used in both key and value. + +**Example:**
+```{"key": "la:bel", "value": "smo:ke"}``` + +**Behavior on UI:**
+Key: la
+Value: bel + +The original value "smoke" is not transmitted at all. + +**3.** Key and value reported, colon used in value only. + +**Example:**
+```{"key": "label", "value": "smo:ke"}``` + +**Behavior on UI:**
+Key: label
+Value: smo + +The value is truncated at the colon, and only the part before the colon is transmitted. + +**4.** Value reported, colon used in value only. + +**Example:**
+```{"value": "smo:ke"}``` + +**Behavior on UI:**
+Value: smo + +The value is truncated at the colon, and only the part before the colon is transmitted. + +## Adding attributes via test framework integration + +### JavaScript + +Here is an example of adding attributes for a Playwright agent. + +You can add attributes for the Launch in ReportPortal [agent config](https://github.com/reportportal/examples-js/blob/main/example-playwright/playwright.config.ts#L8): + + + +You can add attributes for the test item in your [test file](https://github.com/reportportal/examples-js/blob/main/example-playwright/tests/rp-features/attributes-and-description.spec.ts#L33): + + + +### .NET + +Attributes in .NET agents can be added declaratively or at runtime. To add launch attributes via standard [ReportPortal.json config file](https://github.com/reportportal/example-net-nunit/blob/68f596712e153fd67e45cbd479a9aa40a7d5423a/src/Example/ReportPortal.config.json#L15): + +```json +{ + "launch": { + "attributes": ["platform:unix", "arch:x64" ] + } +} +``` + +And to add test attributes ([sample for NUnit](https://github.com/reportportal/example-net-nunit/blob/68f596712e153fd67e45cbd479a9aa40a7d5423a/src/Example/Tests/Class1.cs#L142)): + +```csharp +[Test, Category("browser:chrome")] +public void Test1() +{ + ReportPortal.Shared.Context.Current.Metadata.Attributes.Add("browser", "chrome"); +} +``` + +In Gherkin: + +``` +@browser:chrome +Scenario: Scenario1 +``` + +## Adding attributes via API + +You can initiate (launch, suite, test, or step) with one set of attributes and finish with a different set. + +Importantly, the new attributes do not overwrite the old ones; instead, they are added. + + + +## System attributes + +In the ReportPortal, there is an opportunity to influence specific processes and data processing rules. To this end, ReportPortal supports system attributes. These attributes can be applied to the selected test items and trigger ReportPortal to take certain actions. System attributes are not visible on the UI (for that, the attribute should be sent with `system: true`). + +### immediateAutoAnalysis + +If `immediateAutoAnalysis=true`, then each test item will be analyzed right after it is completed, without waiting for the whole launch to finish. + + + +### immediatePatternAnalysis + +When `immediatePatternAnalysis=true`, then each test item will be analyzed right after it is completed, without waiting for the whole launch to finish. + + + +### skippedIsNotIssue + +If `skippedIsNotIssue=true` during launch import, then all test items with the SKIPPED status will be processed without applying a `To Investigate` defect type. + + diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/HowToRunYourTests.md b/versioned_docs/version-26.1/log-data-in-reportportal/HowToRunYourTests.md new file mode 100644 index 0000000000..0b4bf9164b --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/HowToRunYourTests.md @@ -0,0 +1,11 @@ +--- +sidebar_label: How to run your tests +description: Learn how to run your tests with ReportPortal test automation reporting tools integration in any CI/CD pipeline. +--- + +# How to run your tests + +Automated tests can be executed in the any CI tool you are using on the project (Jenkins, Bamboo, Azure DevOps, GitHub Actions, CircleCI, TeamCity, GitLab, Travis CI, Codeship, Buddy, GoCD, Wercker and more). +It doesn't require any settings from ReportPortal. + +So that the test results get into the ReportPortal, you need to perform [test framework integration](/log-data-in-reportportal/test-framework-integration/) or [implement own integration](/log-data-in-reportportal/ImplementOwnIntegration). diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/ImplementOwnIntegration.md b/versioned_docs/version-26.1/log-data-in-reportportal/ImplementOwnIntegration.md new file mode 100644 index 0000000000..2c2a38d5c0 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/ImplementOwnIntegration.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 2 +sidebar_label: Implement own integration +description: Learn how to implement custom integration with ReportPortal using the developer guide. +--- + +# Implement own integration + +You can find a detailed description of how report results to ReportPortal in our [developers` guide](/developers-guides/ReportingDevelopersGuide). + +Based on this information you can create your integration with a test framework. + +:::note +We can propose a paid support for integration with a new framework or supporting an existing one. If you need more details, please drop a letter on support@reportportal.io. +::: diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/ImportDataToReportPortal.mdx b/versioned_docs/version-26.1/log-data-in-reportportal/ImportDataToReportPortal.mdx new file mode 100644 index 0000000000..c345228a38 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/ImportDataToReportPortal.mdx @@ -0,0 +1,169 @@ +--- +sidebar_position: 4 +sidebar_label: Import data to ReportPortal +description: Import test logs into ReportPortal using the UI or API, supporting JUnit and RobotFramework formats for streamlined test data integration. +--- + +# Import data to ReportPortal + +## Import via UI + +Import functionality gives the opportunity to upload log files via UI. + +To start the import process, you should have at least one import plugin enabled: either [JUnit](/plugins/import/JUnit) or [RobotFramework](/plugins/import/RobotFramework). + +To import launch via UI: + +1. Log in to ReportPortal. + +2. Go to the Launches page. + +3. Click ‘Import’ button. + +4. Select appropriate option in the ‘Report Type’ dropdown on the ‘Import launch’ modal window. + +5. Click the drag-and-drop area to add .xml or .zip file under 32MB. + +6. Click ‘Import’ button and then ‘OK’ button on the ‘Import launch’ modal window. + +ReportPortal checks file size and format first. Imported files should meet the following requirements: + +* File format is zip archive or XML file. +* File size is up to 32Mb. +* Timestamp format is 2022-11-17T10:15:43 + +If the file format is incorrect, it is marked in red, and the reason is shown in the tooltip on hovering over the file in the pop-up window. This is to prevent any incorrect files from being run through the import process. + +If all the files added are correct you may click the 'Import' or 'Cancel' buttons: + +* The Cancel button closes the pop-up window without any operation under log files. +* The Import button starts copying files into the RP file storage. + +The System will start copying files into the RP file storage if the files meet the following requirements: + +* The File format is a zip archive or XML file. +* The File size is up to 32Mb. +* The XML files must have the JUnit or RobotFramework structure in the zip archive and in XML files depend on Report Type you have chosen. + +The system copies valid XML files into RP file storage and marked them in green in the ‘Import launches’ pop-up window. + +If files from the zip archive have formats other than XML, the system will skip them. + +If the XML file is not in the correct structure (depend on Report Type – JUnit or RobotFramework), the system will interrupt the process of copying and mark the file in red. The reason is then shown on the tooltip when hovering the file in the pop-up window. + +:::note +Files that were copied earlier stay in the RP file storage. +::: + +When all valid log files are downloaded and processed, the 'OK' button is enabled. The 'OK' button closes the ‘Import launches’ pop-up window. + + + +You can only interrupt the import in UI when files are being downloaded into the RP file storage. In this case, you should click the 'Cancel' button (or X button in the pop-up window) and confirm the cancellation of import and then click the 'Cancel' button again. + + + +## Import via API + +The details about import via API you can find on the ReportPortal menu at the bottom: API -> Plugin Controller -> Send report to the specified plugin for importing + + + +You can configure parameters (name, description, attributes) for the imported launch by specifying these values in your API request. + +The endpoint ```POST /v1/plugin/{projectName}/{pluginName}/import``` allows importing a launch into the specified project using an XML or ZIP file. + +**Permissions:** Admin, PM, Member, Customer, Operator. + +Here's an example of a request to the endpoint: + +```yaml +curl -L -X POST 'http://localhost:8080/api/v1/plugin/superadmin_personal/junit/import' \ +-H 'Content-Type: multipart/form-data' \ +-H 'Authorization: Bearer {token}' \ +-F 'file=@"file_path.zip";type=application/x-zip-compressed' \ +-F 'launchImportRq="{ + \"attributes\": [ + { + \"key\": \"skippedIsNotIssue\", + \"system\": true, + \"value\": \"true\" + } + ], + \"description\": \"Custom launch description\", + \"mode\": \"DEFAULT\", + \"name\": \"Custom launch name\", + \"startTime\": \"2023-11-08T10:23:34.259Z\" +}";type=application/json' +``` + +**Query parameters:** + +**pluginName** – mandatory field to specify import plugin + +**projectName** – mandatory field to specify project name + +**file** – mandatory area to upload file for import + +**launchImportRq** is application/json part of the request where you can specify needed custom information about launch. + +**attributes** – array of attributes + +**description** – custom launch description + +**name** – custom launch name + +**startTime** – if launch start time needed, or will be used first time in imported report + + + +If the array of attributes contains the next "skippedIsNotIssue" attribute marked as system, then all test items with SKIPPED status will be processed without applying a "To Investigate" defect type. + +```yaml + "attributes": [ + { + "key": "skippedIsNotIssue", + "system": true, + "value": "true" + } + ] +``` + +When set to "false", test items with SKIPPED status will be processed and marked with the defect type "To Investigate". If the parameter is not set, the default behavior is equivalent to "false". + +**Scenario 1** (Test items with SKIPPED status have "To Investigate" status): + +```yaml +curl -L -X POST 'http://localhost:8080/api/v1/plugin/superadmin_personal/junit/import' \ +-H 'Content-Type: multipart/form-data' \ +-H 'Authorization: Bearer {token}' \ +-F 'file=@Launch.zip;type=application/x-zip-compressed' \ +-F 'launchImportRq="{ + \"description\": \"Launch description\", + \"mode\": \"DEFAULT\", + \"name\": \"Launch\" +}";type=application/json' +``` + +**Scenario 2** (Test items with SKIPPED status don't have "To Investigate" status) + +```yaml +curl -L -X POST 'http://localhost:8080/api/v1/plugin/superadmin_personal/junit/import' \ +-H 'Content-Type: multipart/form-data' \ +-H 'Authorization: Bearer {token}' \ +-F 'file=@Launch.zip;type=application/x-zip-compressed' \ +-F 'launchImportRq="{ + \"attributes\": [ + { + \"key\": \"skippedIsNotIssue\", + \"system\": true, + \"value\": \"true\" + } + ], + \"description\": \"Launch description\", + \"mode\": \"DEFAULT\", + \"name\": \"Launch\" +}";type=application/json' +``` + + diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/ReportingSDK.md b/versioned_docs/version-26.1/log-data-in-reportportal/ReportingSDK.md new file mode 100644 index 0000000000..edd21cf87c --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/ReportingSDK.md @@ -0,0 +1,21 @@ +--- +sidebar_position: 3 +sidebar_label: Reporting SDK +description: Integrate your test framework with ReportPortal using the Reporting SDK to log detailed test data, including nested steps and test case IDs, for enhanced reporting. +--- + +# Reporting SDK + +How to report tests with nested steps? + +**JAVA** +* https://github.com/reportportal/client-java/wiki/Nested-steps +* https://github.com/reportportal/client-java/wiki/Step-template-and-step-template-config + +**.NET** +* https://github.com/reportportal/commons-net/blob/master/docs/Logging.md + +How to report tests with Test case ID. How to add TestID from your Test Management System to reported execution. + + * https://github.com/reportportal/client-java/wiki/Test-case-ID + * https://github.com/reportportal/client-java/wiki/Test-case-ID-Key diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/_category_.json b/versioned_docs/version-26.1/log-data-in-reportportal/_category_.json new file mode 100644 index 0000000000..02c28977dc --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Log data in ReportPortal", + "position": "9", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/img/APISection.png b/versioned_docs/version-26.1/log-data-in-reportportal/img/APISection.png new file mode 100644 index 0000000000..b662f69cf6 Binary files /dev/null and b/versioned_docs/version-26.1/log-data-in-reportportal/img/APISection.png differ diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/img/AccessToken/APIKeyUsing.png b/versioned_docs/version-26.1/log-data-in-reportportal/img/AccessToken/APIKeyUsing.png new file mode 100644 index 0000000000..6bee8fe8d4 Binary files /dev/null and b/versioned_docs/version-26.1/log-data-in-reportportal/img/AccessToken/APIKeyUsing.png differ diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/img/AccessToken/AccessToken1.png b/versioned_docs/version-26.1/log-data-in-reportportal/img/AccessToken/AccessToken1.png new file mode 100644 index 0000000000..7189f1882b Binary files /dev/null and b/versioned_docs/version-26.1/log-data-in-reportportal/img/AccessToken/AccessToken1.png differ diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/img/AccessToken/LegacyAPIKey.png b/versioned_docs/version-26.1/log-data-in-reportportal/img/AccessToken/LegacyAPIKey.png new file mode 100644 index 0000000000..905bffd418 Binary files /dev/null and b/versioned_docs/version-26.1/log-data-in-reportportal/img/AccessToken/LegacyAPIKey.png differ diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/img/AccessToken/NewAPIKeys.png b/versioned_docs/version-26.1/log-data-in-reportportal/img/AccessToken/NewAPIKeys.png new file mode 100644 index 0000000000..5d451a9b5a Binary files /dev/null and b/versioned_docs/version-26.1/log-data-in-reportportal/img/AccessToken/NewAPIKeys.png differ diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/img/ImportViaAPI.png b/versioned_docs/version-26.1/log-data-in-reportportal/img/ImportViaAPI.png new file mode 100644 index 0000000000..af6ae2c995 Binary files /dev/null and b/versioned_docs/version-26.1/log-data-in-reportportal/img/ImportViaAPI.png differ diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/img/parameters.png b/versioned_docs/version-26.1/log-data-in-reportportal/img/parameters.png new file mode 100644 index 0000000000..6e1f624ebe Binary files /dev/null and b/versioned_docs/version-26.1/log-data-in-reportportal/img/parameters.png differ diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/img/report-attributes/ReportAttributes1.png b/versioned_docs/version-26.1/log-data-in-reportportal/img/report-attributes/ReportAttributes1.png new file mode 100644 index 0000000000..a4604b2cd0 Binary files /dev/null and b/versioned_docs/version-26.1/log-data-in-reportportal/img/report-attributes/ReportAttributes1.png differ diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/img/report-attributes/ReportAttributes2.png b/versioned_docs/version-26.1/log-data-in-reportportal/img/report-attributes/ReportAttributes2.png new file mode 100644 index 0000000000..e041b08837 Binary files /dev/null and b/versioned_docs/version-26.1/log-data-in-reportportal/img/report-attributes/ReportAttributes2.png differ diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/img/report-attributes/ReportAttributes3.png b/versioned_docs/version-26.1/log-data-in-reportportal/img/report-attributes/ReportAttributes3.png new file mode 100644 index 0000000000..e5a41e2586 Binary files /dev/null and b/versioned_docs/version-26.1/log-data-in-reportportal/img/report-attributes/ReportAttributes3.png differ diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/img/report-attributes/ReportAttributes4.png b/versioned_docs/version-26.1/log-data-in-reportportal/img/report-attributes/ReportAttributes4.png new file mode 100644 index 0000000000..c4b9ba47ba Binary files /dev/null and b/versioned_docs/version-26.1/log-data-in-reportportal/img/report-attributes/ReportAttributes4.png differ diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/img/report-attributes/ReportAttributes5.png b/versioned_docs/version-26.1/log-data-in-reportportal/img/report-attributes/ReportAttributes5.png new file mode 100644 index 0000000000..793ae90a88 Binary files /dev/null and b/versioned_docs/version-26.1/log-data-in-reportportal/img/report-attributes/ReportAttributes5.png differ diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/img/report-attributes/ReportAttributes6.png b/versioned_docs/version-26.1/log-data-in-reportportal/img/report-attributes/ReportAttributes6.png new file mode 100644 index 0000000000..80264abe61 Binary files /dev/null and b/versioned_docs/version-26.1/log-data-in-reportportal/img/report-attributes/ReportAttributes6.png differ diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/img/report-attributes/ReportAttributes7.png b/versioned_docs/version-26.1/log-data-in-reportportal/img/report-attributes/ReportAttributes7.png new file mode 100644 index 0000000000..af24849df1 Binary files /dev/null and b/versioned_docs/version-26.1/log-data-in-reportportal/img/report-attributes/ReportAttributes7.png differ diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/index.md b/versioned_docs/version-26.1/log-data-in-reportportal/index.md new file mode 100644 index 0000000000..487f1500a5 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/index.md @@ -0,0 +1,26 @@ +--- +title: Log data in ReportPortal +description: Discover how to efficiently import data, integrate test frameworks, and run your tests with our test reporting tool. +--- + +# Log data in ReportPortal + +ReportPortal is a CI/CD agnostic tool. Therefore, you can continue using your favorite CI/CD tool (GitLab, Jenkins, GitHub, Azure DevOps, Bamboo) to send data to ReportPortal and get test results of execution. + +The data transmission is regulated not by the CI/CD process, but by the test framework. The only requirement is to ensure that the machine where your CI/CD is located has access to the ReportPortal instance to which you are trying to send the data. + +As for test frameworks, a generic approach is to set the address of ReportPortal and other data in your test framework via properties or a configuration file, and your test framework will start reporting data to ReportPortal. + +ReportPortal supports various frameworks: +* [Java frameworks](/log-data-in-reportportal/test-framework-integration/Java/) ([TestNG](/log-data-in-reportportal/test-framework-integration/Java/TestNG), [Jbehave](/log-data-in-reportportal/test-framework-integration/Java/JBehave), etc.) +* [Python frameworks](/log-data-in-reportportal/test-framework-integration/Python/) ([Pytest](/log-data-in-reportportal/test-framework-integration/Python/pytest), [Robot Framework](/log-data-in-reportportal/test-framework-integration/Python/RobotFramework), etc.) +* [JavaScript frameworks](/log-data-in-reportportal/test-framework-integration/JavaScript/) ([Playwright](/log-data-in-reportportal/test-framework-integration/JavaScript/Playwright), [Postman](/log-data-in-reportportal/test-framework-integration/JavaScript/Postman), etc.) +* [.NET frameworks](/log-data-in-reportportal/test-framework-integration/Net/) ([NUnit](/log-data-in-reportportal/test-framework-integration/Net/NUnit), [VSTest](/log-data-in-reportportal/test-framework-integration/Net/VSTest), etc.). + +Integration with ReportPortal is not dependent on the type of tests you run. It can be API tests, integration tests, or UI tests such as Selenium, Cypress, so, you can run different types of tests and get test results. + +ReportPortal can be integrated with external services, enabling you to report test results from platforms like Browserstack, Sauce Labs, and other third-party services. For Sauce Labs integration, we have a [plugin](/plugins/other/SauceLabs). + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/Cucumber.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/Cucumber.md new file mode 100644 index 0000000000..0706089046 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/Cucumber.md @@ -0,0 +1,27 @@ +--- +sidebar_position: 4 +sidebar_label: Cucumber +description: Integrate Cucumber BDD framework with ReportPortal for comprehensive test automation reporting tools and behavior-driven testing analysis. +--- + +# ReportPortal Cucumber Integration + +There is an agent to integrate [Cucumber](https://cucumber.io/) (Cucumber-JVM) with ReportPortal. + +Cucumber is a popular open-source framework for behavior-driven development (BDD) which based on Gherkin language and allows developers, testers, and business stakeholders to work together and define an application's behavior. + +## Compatibility matrix for cucumber agents + +| Version(s) of cucumber java and cucumber junit | Gherkin's version(s) | Link to agent's github | +| - | - | - | +| 1.2.5 | 2.12.2 | [sources/cucumber1](https://github.com/reportportal/agent-java-cucumber) | +| 2.0.0 - 2.4.0 | 3.2.0 - 5.1.0 | [sources/cucumber2](https://github.com/reportportal/agent-java-cucumber2) | +| 3.0.0 - 3.0.2 | _ | [sources/cucumber3](https://github.com/reportportal/agent-java-cucumber3) | +| 4.4.0 - 4.8.1 | 3.2.0 - 5.1.0 | [sources/cucumber4](https://github.com/reportportal/agent-java-cucumber4) | +| 5.0.0 - 5.7.0 | _ | [sources/cucumber5](https://github.com/reportportal/agent-java-cucumber5) | +| 6.0.0 - 7.0.0 | 6.0.0 - 7.0.0 | [sources/cucumber6](https://github.com/reportportal/agent-java-cucumber6) | +| 6.0.0 - 7.0.0 | 6.0.0 - 7.0.0 | [sources/cucumber7](https://github.com/reportportal/agent-java-cucumber7) | + +[Installation guide](https://github.com/reportportal/agent-java-cucumber#readme) + +[Examples](https://github.com/reportportal/examples-java/tree/master/example-cucumber) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/JBehave.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/JBehave.md new file mode 100644 index 0000000000..027e4e2c09 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/JBehave.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 5 +sidebar_label: JBehave +description: Integrate JBehave with ReportPortal to automate acceptance testing, enhance BDD workflows, and gain real-time insights into test results. +--- + +# ReportPortal JBehave Integration + +There is an agent to integrate [JBehave](https://jbehave.org/) with ReportPortal. + +JBehave is a Java framework which can be used for creating clear and readable automated acceptance tests in behavior-driven development (BDD) style. The agent supports both JBehave story syntax and Gherkin. + +[Installation guide](https://github.com/reportportal/agent-java-jbehave#readme) + +[Examples](https://github.com/reportportal/examples-java/tree/master/example-jbehave) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/JUnit4.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/JUnit4.md new file mode 100644 index 0000000000..909297d375 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/JUnit4.md @@ -0,0 +1,17 @@ +--- +sidebar_position: 2 +sidebar_label: JUnit4 +description: Integrate JUnit4 with ReportPortal to automate test execution, track results in real-time, and enhance your QA workflow with detailed analytics. +--- + +# ReportPortal JUnit4 Integration + +There is an agent to integrate [JUnit4](https://junit.org/junit4/) with ReportPortal. + +JUnit4 is one of the most popular unit testing framework which has a significant role in the test-driven development process. + +Using JUnit4 developers can write and execute automated tests to ensure that their applications are reliable and function as expected. + +[Installation guide](https://github.com/reportportal/agent-java-junit#readme) + +[Examples](https://github.com/reportportal/examples-java/tree/master/example-junit) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/JUnit5.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/JUnit5.md new file mode 100644 index 0000000000..024a94f1d8 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/JUnit5.md @@ -0,0 +1,17 @@ +--- +sidebar_position: 1 +sidebar_label: JUnit5 +description: Integrate JUnit5 testing framework with ReportPortal for comprehensive test automation reporting and modern Java testing analysis. +--- + +# ReportPortal JUnit5 Integration + +There is an agent to integrate [JUnit5](https://junit.org/junit5/docs/current/user-guide/#extensions) with ReportPortal. + +The most recent JUnit testing framework for Java-based applications is JUnit5. + +Compared to JUnit4, it offers a number of additional features and enhancements, such as enhanced support for dynamic and parameterized tests and an improved extension model. + +[Installation guide](https://github.com/reportportal/agent-java-junit5#readme) + +[Examples](https://github.com/reportportal/examples-java/tree/master/example-junit5) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/Karate.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/Karate.md new file mode 100644 index 0000000000..c8db90de9c --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/Karate.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 7 +sidebar_label: Karate +description: Integrate Karate BDD framework with ReportPortal to automate API, UI, and performance tests, enhancing reporting and API testing analysis. +--- + +# ReportPortal Karate Integration + +There is an agent to integrate [Karate](https://www.karatelabs.io) with ReportPortal. + +Karate is a BDD-based open-source framework that allows for the testing of complex scenarios in a user-friendly language called Gherkin. + +Karate enables the writing of API tests by combining API test automation, mocking, performance testing, and even UI automation into a single framework. + +[Installation guide](https://github.com/reportportal/agent-java-karate#readme) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/Loggers/ApacheHttpComponents.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/Loggers/ApacheHttpComponents.md new file mode 100644 index 0000000000..76b2dce8a4 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/Loggers/ApacheHttpComponents.md @@ -0,0 +1,11 @@ +--- +sidebar_position: 6 +sidebar_label: Apache HttpComponents +description: Integrate Apache HttpComponents with ReportPortal for comprehensive test automation reporting tools and HTTP request/response logging. +--- + +# ReportPortal Apache HttpComponents Integration + +The logger intercept and logs all Requests and Responses issued by [Apache HttpComponents](https://hc.apache.org/) into ReportPortal in Markdown format, including multipart requests. It recognizes payload types and attach them in corresponding manner: image types will be logged as images with thumbnails, binary types will be logged as entry attachments, text types will be formatted and logged in Markdown code blocks. + +[Installation guide](https://github.com/reportportal/logger-java-httpcomponents#readme) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/Loggers/Log4J.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/Loggers/Log4J.md new file mode 100644 index 0000000000..ad4e96fe66 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/Loggers/Log4J.md @@ -0,0 +1,13 @@ +--- +sidebar_position: 2 +sidebar_label: Log4J +description: Integrate Log4J with ReportPortal to capture and manage application logs efficiently, enhancing test analysis and reporting in your Java projects. +--- + +# ReportPortal Log4J Integration + +[Log4j](https://logging.apache.org/log4j/2.x/index.html) is one of several Java logging frameworks that provides a flexible and configurable way to capture and manage application logs. + +[Installation guide](https://github.com/reportportal/logger-java-log4j#readme) + +[Examples](https://github.com/reportportal/examples-java/tree/master/example-testng-log4j) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/Loggers/Logback.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/Loggers/Logback.md new file mode 100644 index 0000000000..6b091d57dd --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/Loggers/Logback.md @@ -0,0 +1,13 @@ +--- +sidebar_position: 1 +sidebar_label: Logback +description: Integrate Logback with ReportPortal to automatically capture and send application logs for real-time analysis, enhancing test reporting and debugging efficiency. +--- + +# ReportPortal Logback Integration + +Using the [Logback appender](https://logback.qos.ch/) for ReportPortal, developers can collect and send the logs generated by their application to ReportPortal for additional analysis and reporting. Using this appender, developers can configure Logback to send logs directly to ReportPortal, where they can be examined alongside other testing data to understand the behavior of the application and identify any issues. + +[Installation guide](https://github.com/reportportal/logger-java-logback#readme) + +[Examples](https://github.com/reportportal/examples-java/tree/master/example-testng-logback) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/Loggers/OkHttp3.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/Loggers/OkHttp3.md new file mode 100644 index 0000000000..c8423074f0 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/Loggers/OkHttp3.md @@ -0,0 +1,11 @@ +--- +sidebar_position: 5 +sidebar_label: OkHttp3 +description: Integrate OkHttp3 with ReportPortal to automatically log HTTP requests and responses, including images and binary data, for enhanced test analysis. +--- + +# ReportPortal OkHttp3 Integration + +The logger intercept and logs all Requests and Responses issued by OkHttp into ReportPortal in Markdown format, including multipart requests. It recognizes payload types and attach them in corresponding manner: image types will be logged as images with thumbnails, binary types will be logged as entry attachments, text types will be formatted and logged in Markdown code blocks. + +[Installation guide](https://github.com/reportportal/logger-java-okhttp3#readme) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/Loggers/RestAssured.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/Loggers/RestAssured.md new file mode 100644 index 0000000000..0ae256bf3a --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/Loggers/RestAssured.md @@ -0,0 +1,13 @@ +--- +sidebar_position: 3 +sidebar_label: Rest Assured +description: Integrate REST Assured with ReportPortal for comprehensive test automation reporting and API testing request/response logging. +--- + +# ReportPortal Rest Assured Integration + +The logger intercept and logs all Requests and Responses issued by [REST Assured](https://rest-assured.io/) into ReportPortal in Markdown format, including multipart +requests. It recognizes payload types and attach them in corresponding manner: image types will be logged as images with thumbnails, binary +types will be logged as entry attachments, text types will be formatted and logged in Markdown code blocks. + +[Installation guide](https://github.com/reportportal/logger-java-rest-assured#readme) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/Loggers/Selenide.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/Loggers/Selenide.md new file mode 100644 index 0000000000..d0abdd43c0 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/Loggers/Selenide.md @@ -0,0 +1,11 @@ +--- +sidebar_position: 4 +sidebar_label: Selenide +description: Integrate Selenide with ReportPortal to automatically log test steps, capture screenshots on failure, and attach WebDriver logs for enhanced test analysis. +--- + +# ReportPortal Selenide Integration + +[Selenide](https://selenide.org/) step logging listener for ReportPortal. The listener listen for Selenide log events and send them to Report Portal as steps. It has ability to log screenshots and page sources on failure, this is enabled by default. Also, it is possible to attach different types of WebDriver logs on failure. + +[Installation guide](https://github.com/reportportal/logger-java-selenide#readme) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/Loggers/_category_.json b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/Loggers/_category_.json new file mode 100644 index 0000000000..645a8343db --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/Loggers/_category_.json @@ -0,0 +1,5 @@ +{ + "link": { + "type": "generated-index" + } +} diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/SoapUI.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/SoapUI.md new file mode 100644 index 0000000000..832fa58c5c --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/SoapUI.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 8 +sidebar_label: SoapUI (outdated) +description: Integrate SoapUI API testing with ReportPortal for test automation reporting and SOAP/REST API analysis. +--- + +# ReportPortal SoapUI Integration + +There is an agent to integrate [SoapUI](https://www.soapui.org/) with ReportPortal. + +SoapUI is the most popular testing tool for SOAP and REST APIs. It offers clear interface for the creation and execution of automated functional, regression, and load tests. + +[Installation guide](https://github.com/reportportal/agent-java-soapui#readme) + +[Examples](https://github.com/reportportal/examples-java/tree/master/example-soapui/project) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/Spock.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/Spock.md new file mode 100644 index 0000000000..e6113dc080 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/Spock.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 6 +sidebar_label: Spock +description: Integrate Spock testing framework with ReportPortal for test execution reporting and Java/Groovy testing analysis. +--- + +# ReportPortal Spock Integration + +There is an agent to integrate [Spock](https://spockframework.org/) with ReportPortal. + +Spock is an open-source testing framework for Java and Groovy applications. It allows to write automated tests and specifications using a simple and intuitive syntax. + +[Installation guide](https://github.com/reportportal/agent-java-spock#readme) + +[Examples](https://github.com/reportportal/examples-java/tree/master/example-spock) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/TestNG.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/TestNG.md new file mode 100644 index 0000000000..8e4a331e89 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/TestNG.md @@ -0,0 +1,34 @@ +--- +sidebar_position: 3 +sidebar_label: TestNG +description: Integrating TestNG test results with ReportPortal provides comprehensive analysis and insights. +--- + +# ReportPortal TestNG Integration + +There is an agent to integrate [TestNG](https://testng.org/#_testng_documentation) with ReportPortal. + +TestNG provides support for attaching custom listeners, reporters, annotation transformers and method interceptors to your tests. + +TestNG agent can handle next events: + +- Start launch +- Finish launch +- Start suite +- Finish suite +- Start test +- Finish test +- Start test step +- Successful finish of test step +- Fail of test step +- Skip of test step +- Start configuration (All «before» and «after» methods) +- Fail of configuration +- Successful finish of configuration +- Skip configuration + +Elevate your TestNG test automation reporting with ReportPortal! + +[Installation guide](https://github.com/reportportal/agent-java-testNG#readme) + +[Examples](https://github.com/reportportal/examples-java/tree/master/example-testng-fork-execution) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/index.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/index.md new file mode 100644 index 0000000000..8a053cea93 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Java/index.md @@ -0,0 +1,43 @@ +--- +sidebar_label: Java +sidebar_position: 1 +description: Enhance your test automation with advanced Java reporting in ReportPortal. +--- + +# Java + +To integrate your Java test framework with ReportPortal, you need to create a file named `reportportal.properties` in your in your Java project in a source folder `src/main/resources` or `src/test/resources` (depending on where your tests are located): + +**reportportal.properties** + +``` +rp.endpoint={RP_SERVER_URL} + +rp.api.key={YOUR_TOKEN} + +rp.project={YOUR_PROJECT} + +rp.launch={NAME_OF_YOUR_LAUNCH} +``` + +**Property description** + +`rp.endpoint` - the URL for the report portal server (actual link). + +`rp.api.key` - an access token for Report Portal which is used for user identification. It can be found on your report portal user profile page. + +`rp.project` - a project code on which the agent will report test launches. Must be set to one of your assigned projects. + +`rp.launch` - a user-selected identifier of test launches. + +:::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](https://github.com/reportportal/client-java#property-file) available for fine grain tuning of integration. + +If you need a sophisticated and full-featured integration with a test framework, you can configure it by your self. + +All agents use [client-java](https://github.com/reportportal/client-java) to communicate with ReportPortal API and as common code library. Also you can use any combination of agent and logger. + +Advance your Java reporting with ReportPortal! diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/Codecept.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/Codecept.md new file mode 100644 index 0000000000..8a30b4c0a0 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/Codecept.md @@ -0,0 +1,13 @@ +--- +sidebar_position: 3 +sidebar_label: Codecept +description: Use ReportPortal with CodeceptJS to send test results, logs, and screenshots automatically to a centralized dashboard for easier debugging and analysis. +--- + +# ReportPortal Codecept Integration + +There is an agent to integrate [Codecept](https://codecept.io/) with ReportPortal. + +Codecept is a testing framework for Node.js applications that provides a unified API for end-to-end testing. Codecept can be used to write and run acceptance tests, functional tests, and end-to-end tests. + +[Installation guide](https://github.com/reportportal/agent-js-codecept#readme) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/CucumberJS.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/CucumberJS.md new file mode 100644 index 0000000000..fb6ec782cc --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/CucumberJS.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 2 +sidebar_label: CucumberJS +description: Integrate CucumberJS BDD framework with ReportPortal for comprehensive test automation reporting and JavaScript behavior-driven testing. +--- + +# ReportPortal CucumberJS Integration + +There is an agent to integrate [CucumberJS](https://cucumber.io/docs/installation/javascript/) with ReportPortal. + +CucumberJS is an open-source JavaScript testing framework for writing and running automated tests in plain language. + +[Installation guide](https://github.com/reportportal/agent-js-cucumber#readme) + +[Examples](https://github.com/reportportal/examples-js/tree/master/example-cucumber) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/Cypress.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/Cypress.md new file mode 100644 index 0000000000..ba14f28c2f --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/Cypress.md @@ -0,0 +1,19 @@ +--- +sidebar_position: 6 +sidebar_label: Cypress +description: Effortlessly monitor test execution using Cypress test reporting with ReportPortal. +--- + +# ReportPortal Cypress Integration + +There is an agent to integrate [Cypress](https://www.cypress.io/) with ReportPortal. + +Cypress is a testing framework for web applications. + +Using Cypress, it is possible to write and run automated tests with simulation of user interactions with their application (clicking buttons, filling forms, navigating between pages). + +Examine your Cypress reporting with ReportPortal! + +[Installation guide](https://github.com/reportportal/agent-js-cypress#readme) + +[Examples](https://github.com/reportportal/examples-js/tree/master/example-cypress) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/Jasmine.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/Jasmine.md new file mode 100644 index 0000000000..727ea3627d --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/Jasmine.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 10 +sidebar_label: Jasmine +description: Integrate Jasmine testing framework with ReportPortal for testing analysis. +--- + +# ReportPortal Jasmine Integration + +There is an agent to integrate [Jasmine](https://jasmine.github.io/) with ReportPortal. + +Jasmine is a testing framework for JavaScript with intuitive way to write and run tests for web applications. + +[Installation guide](https://github.com/reportportal/agent-js-jasmine#readme) + +[Examples](https://github.com/reportportal/examples-js/tree/master/example-jasmine) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/Jest.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/Jest.md new file mode 100644 index 0000000000..83f9c8c534 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/Jest.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 8 +sidebar_label: Jest +description: Integrate Jest with ReportPortal to log test results, capture failures and trace details, and improve debugging and insight into your test runs. +--- + +# ReportPortal Jest Integration + +There is an agent to integrate [Jest](https://jestjs.io/) with ReportPortal. + +Jest is a flexible JavaScript testing framework with a focus on simplicity. + +[Installation guide](https://github.com/reportportal/agent-js-jest#readme) + +[Examples](https://github.com/reportportal/examples-js/tree/master/example-jest) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/Mocha.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/Mocha.md new file mode 100644 index 0000000000..c64d627883 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/Mocha.md @@ -0,0 +1,17 @@ +--- +sidebar_position: 7 +sidebar_label: Mocha +description: Mocha reporting with ReportPortal provides detailed insights and seamless test result management for JavaScript applications. +--- + +# ReportPortal Mocha Integration + +There is an agent to integrate [Mocha](https://mochajs.org/) with ReportPortal. It was designed to work with mocha programmatically, in order to be able to parametrize each test run. + +Mocha is a popular JavaScript testing framework for both front-end and back-end applications. + +Analyze your Mocha test results with ReportPortal! + +[Installation guide](https://github.com/reportportal/agent-js-mocha#readme) + +[Examples](https://github.com/reportportal/examples-js/tree/master/example-mocha) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/Nightwatch.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/Nightwatch.md new file mode 100644 index 0000000000..8adeddde16 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/Nightwatch.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 11 +sidebar_label: Nightwatch +description: Integrate Nightwatch testing framework web/mobile testing analysis. +--- + +# ReportPortal Nightwatch Integration + +There is an agent to integrate [Nightwatch](https://nightwatchjs.org/) with ReportPortal. + +Nightwatch is a testing framework to automate tests for web applications, supports testing on mobile browsers and native apps as well. + +[Installation guide](https://github.com/reportportal/agent-js-nightwatch#readme) + +[Examples](https://github.com/reportportal/examples-js/tree/master/example-nightwatch) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/Playwright.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/Playwright.md new file mode 100644 index 0000000000..49b8d7d551 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/Playwright.md @@ -0,0 +1,19 @@ +--- +sidebar_position: 1 +sidebar_label: Playwright +description: Integrate Playwright test reporting with ReportPortal to track automation results and optimize testing workflows. +--- + +# ReportPortal Playwright Integration + +There is an agent to integrate [Playwright](https://playwright.dev/) with ReportPortal. + +Playwright is an open-source JavaScript framework for web testing. + +It offers a high-level API for automating web browser actions, including page navigation, element interaction, and more. + +Improve your Playwright reporting with ReportPortal! + +[Installation guide](https://github.com/reportportal/agent-js-playwright#readme) + +[Examples](https://github.com/reportportal/examples-js/tree/master/example-playwright) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/Postman.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/Postman.md new file mode 100644 index 0000000000..2bd48d5be5 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/Postman.md @@ -0,0 +1,17 @@ +--- +sidebar_position: 5 +sidebar_label: Postman +description: Postman reporting with ReportPortal streamlines API testing and development workflows. +--- + +# ReportPortal Postman Integration + +There is an agent to integrate [Postman](https://www.postman.com/) (based on Newman collection runner) with ReportPortal. + +Postman is a popular API development tool for the building, testing and documenting APIs. + +Optimize your Postman test reporting with ReportPortal! + +[Installation guide](https://github.com/reportportal/agent-js-postman#readme) + +[Examples](https://github.com/reportportal/examples-js/tree/master/example-postman) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/TestCafe.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/TestCafe.md new file mode 100644 index 0000000000..f08def9365 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/TestCafe.md @@ -0,0 +1,17 @@ +--- +sidebar_position: 9 +sidebar_label: TestCafe +description: Simplify TestCafe test reporting with ReportPortal. +--- + +# ReportPortal TestCafe Integration + +There is an agent to integrate [TestCafe](https://testcafe.io/) with ReportPortal. + +TestCafe is a popular end-to-end testing framework for web applications that provides simplified way to automate tests in modern web browsers. + +Review your TestCafe test results with ReportPortal! + +[Installation guide](https://github.com/reportportal/agent-js-testcafe#readme) + +[Examples](https://github.com/reportportal/examples-js/tree/master/example-testcafe) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/Vitest.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/Vitest.md new file mode 100644 index 0000000000..c0b02ee820 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/Vitest.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 12 +sidebar_label: Vitest +description: Integrate Vitest with ReportPortal to capture logs, analyze failed tests, and gain clear insights into JavaScript test execution and quality. +--- + +# ReportPortal Vitest Integration + +There is an agent to integrate [Vitest](https://vitest.dev/) with ReportPortal. + +Vitest is fast open-source Vite-native testing framework. + +With Vitest, developers can execute tests within Node.js to speed up the testing process. + +[Installation guide](https://github.com/reportportal/agent-js-vitest#readme) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/WebdriverIO.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/WebdriverIO.md new file mode 100644 index 0000000000..41ac5f7bd1 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/WebdriverIO.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 4 +sidebar_label: WebdriverIO +description: Use WebdriverIO to send detailed test logs, screenshots, and steps to ReportPortal, so failures are clear and debugging is faster. +--- + +# ReportPortal WebdriverIO Integration + +There is an agent to integrate [Webdriver.io](https://webdriver.io/) with ReportPortal. + +WebdriverIO is a JavaScript test automation framework for browser and mobile automation. + +[Installation guide](https://github.com/reportportal/agent-js-webdriverio#readme) + +[Examples](https://github.com/reportportal/examples-js/tree/master/example-webdriverio) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/index.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/index.md new file mode 100644 index 0000000000..8e69afe082 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/JavaScript/index.md @@ -0,0 +1,55 @@ +--- +sidebar_label: JavaScript +sidebar_position: 2 +description: ReportPortal integrates with JavaScript frameworks, enabling better test management with a real-time test results dashboard. +--- + +# JavaScript + +ReportPortal provides robust integration with many JavaScript testing frameworks, helping you manage tests better with real-time test results dashboard. By connecting ReportPortal to your test frameworks, you can collect all your test results in one place to track issues, see patterns, and improve test performance. + +ReportPortal supports seamless integration with the following JavaScript test frameworks: + +- [Playwright](/log-data-in-reportportal/test-framework-integration/JavaScript/Playwright)
+An advanced testing framework for web applications, Playwright offers comprehensive end-to-end testing. Playwright integration with ReportPortal enhances the clarity and tracking of your test results. + +- [CucumberJS](/log-data-in-reportportal/test-framework-integration/JavaScript/CucumberJS)
+A behavior-driven development (BDD) framework that emphasizes collaboration between developers and non-developers. By integrating with ReportPortal, CucumberJS allows you to track your Gherkin test scenarios and their results in real time. + +- [CodeceptJS](/log-data-in-reportportal/test-framework-integration/JavaScript/Codecept)
+A modern end-to-end testing framework with an easy-to-use syntax. CodeceptJS integration with ReportPortal centralizes all your test execution data, providing detailed analytics and reporting for better test management. + +- [WebdriverIO](/log-data-in-reportportal/test-framework-integration/JavaScript/WebdriverIO)
+A robust automation framework. This integration enables seamless reporting of UI test executions, complete with logs and screenshots, which are sent directly to ReportPortal for real-time analysis. + +- [Cypress](/log-data-in-reportportal/test-framework-integration/JavaScript/Cypress)
+An open-source, front-end testing tool designed for the modern web. Cypress integration with ReportPortal enhances test management by providing detailed logging of test executions and real-time analytics for efficient debugging and insights. + +- [Mocha](/log-data-in-reportportal/test-framework-integration/JavaScript/Mocha)
+A flexible testing framework ideal for unit and integration tests. ReportPortal integration with Mocha captures test execution logs and generates comprehensive reports. + +- [Jest](/log-data-in-reportportal/test-framework-integration/JavaScript/Jest)
+A feature-rich testing framework. Jest’s integration with ReportPortal allows for the reporting of unit test results, tracking of errors, and monitoring of test automation metrics. + +- [Vitest](/log-data-in-reportportal/test-framework-integration/JavaScript/Vitest)
+A modern unit testing framework designed specifically for Vite projects. Thanks to this integration, Vitest sends detailed test execution results to ReportPortal, enabling automated defect triaging and test failure analytics. + +- [Nightwatch](/log-data-in-reportportal/test-framework-integration/JavaScript/Nightwatch)
+A browser automation framework. With integration with ReportPortal, you can get the results of Nightwatch UI test executions immediately for analysis. + +- [Jasmine](/log-data-in-reportportal/test-framework-integration/JavaScript/Jasmine)
+A behavior-driven development (BDD) testing framework. Jasmine’s integration with ReportPortal logs test results and enables you to track test performance and failures. + +- [TestCafe](/log-data-in-reportportal/test-framework-integration/JavaScript/TestCafe)
+An open-source, end-to-end testing framework for web applications. TestCafe’s integration with ReportPortal ensures test results are automatically sent for reporting, providing a clear overview of test performance across browsers. + +- [Postman](/log-data-in-reportportal/test-framework-integration/JavaScript/Postman)
+Widely used for API testing, Postman’s integration with ReportPortal helps track and log API test results for enhanced analytics and real-time reporting. + +If you need a sophisticated and full-featured integration with a test framework, you can configure it by your self. + +Choose which combination of agent and client you need, and then follow the instructions provided for each agent. + +All agents use [client-javascript](https://github.com/reportportal/client-javascript) to communicate with ReportPortal API. + +Each agent can be installed from [npm](https://www.npmjs.com/settings/reportportal/packages?page=1&perPage=10) or [GitHub packages](https://github.com/orgs/reportportal/packages?ecosystem=npm) registry. diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/Loggers/Log4Net.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/Loggers/Log4Net.md new file mode 100644 index 0000000000..9d7804dd41 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/Loggers/Log4Net.md @@ -0,0 +1,13 @@ +--- +sidebar_position: 2 +sidebar_label: Log4Net +description: Learn how to set up Log4Net in .NET tests to capture detailed logs, track issues, and centralize reporting for faster troubleshooting and quality assurance. +--- + +# ReportPortal Log4Net Integration + +[Log4net](https://logging.apache.org/log4net/) is a logging library for .NET applications. It offers a versatile and customizable architecture for recording application events to a number of locations, including files, databases, and remote servers. + +[Installation guide](https://github.com/reportportal/logger-net-log4net#readme) + +[Examples](https://github.com/reportportal/example-net-specflow-nunit2-log4net) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/Loggers/NLog.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/Loggers/NLog.md new file mode 100644 index 0000000000..8b9424de9e --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/Loggers/NLog.md @@ -0,0 +1,11 @@ +--- +sidebar_position: 3 +sidebar_label: NLog +description: Integrate NLog with .NET tests to record detailed logs, monitor application health, and enhance debugging workflows for more efficient issue resolution. +--- + +# ReportPortal NLog Integration + +[NLog](https://nlog-project.org/) is a logging platform for .NET platforms. It supports a range of logging formats, including plain text and JSON. + +[Installation guide](https://github.com/reportportal/logger-net-nlog#readme) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/Loggers/Serilog.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/Loggers/Serilog.md new file mode 100644 index 0000000000..499e79ee63 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/Loggers/Serilog.md @@ -0,0 +1,11 @@ +--- +sidebar_position: 1 +sidebar_label: Serilog +description: Integrate Serilog with .NET to log structured events, capture detailed test information, and enhance debugging and analysis in your testing workflows. +--- + +# ReportPortal Serilog Integration + +[Serilog](https://serilog.net/) is a logging library for .Net. Serilog was created with powerful organized event data in mind, unlike other logging libraries. + +[Installation guide](https://github.com/reportportal/logger-net-serilog#readme) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/Loggers/TraceListener.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/Loggers/TraceListener.md new file mode 100644 index 0000000000..9b520fd8b3 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/Loggers/TraceListener.md @@ -0,0 +1,11 @@ +--- +sidebar_position: 4 +sidebar_label: TraceListener +description: Capture .NET TraceListener logs to track application behavior, monitor test execution, and gain actionable insights for faster and more efficient QA. +--- + +# ReportPortal TraceListener Integration + +[TraceListener](https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.tracelistener?view=net-8.0) is a component of the .NET Framework's logging system. Provides receiving and handling trace messages and forwarding them to the appropriate destination. + +[Installation guide](https://github.com/reportportal/logger-net-tracelistener#readme) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/Loggers/_category_.json b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/Loggers/_category_.json new file mode 100644 index 0000000000..645a8343db --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/Loggers/_category_.json @@ -0,0 +1,5 @@ +{ + "link": { + "type": "generated-index" + } +} diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/NUnit.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/NUnit.md new file mode 100644 index 0000000000..cae9728238 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/NUnit.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 1 +sidebar_label: NUnit +description: Monitor NUnit tests in real time, record failures with screenshots, and gain actionable insights to speed up .NET application testing. +--- + +# ReportPortal NUnit Integration + +There is an agent to integrate [NUnit](https://nunit.org/) with ReportPortal. + +NUnit is a testing framework to write and run unit tests for .NET applications. Supports all .Net languages. + +[Installation guide](https://github.com/reportportal/agent-net-nunit#readme) + +[Examples](https://github.com/reportportal/example-net-nunit) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/Reqnroll.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/Reqnroll.md new file mode 100644 index 0000000000..7c17bd1309 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/Reqnroll.md @@ -0,0 +1,17 @@ +--- +sidebar_position: 5 +sidebar_label: Reqnroll +description: Track, analyze, and manage your Reqnroll test results with structured Given-When-Then scenarios. +--- + +# ReportPortal Reqnroll Integration + +There is an agent to integrate [Reqnroll](https://reqnroll.net/) with ReportPortal. + +Reqnroll is an open-source Cucumber-style BDD test automation framework for .NET. + +It allows to outline your requirements using simple Given-When-Then scenarios and then transform them into automated tests to confirm they've been carried out correctly. + +Enhance your Reqnroll test automation reporting with ReportPortal! + +[Installation guide](https://github.com/reportportal/agent-dotnet-reqnroll#readme) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/SpecFlow.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/SpecFlow.md new file mode 100644 index 0000000000..361209c088 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/SpecFlow.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 3 +sidebar_label: SpecFlow +description: Integrate SpecFlow BDD framework for test automation reporting. +--- + +# ReportPortal SpecFlow Integration + +There is an agent to integrate [SpecFlow](https://specflow.org/) with ReportPortal. + +Can be integrated with popular development tools (for example, Visual Studio). Thus, developers can write and execute acceptance tests directly from their development environment. + +[Installation guide](https://github.com/reportportal/agent-net-specflow#readme) + +[Examples](https://github.com/reportportal/example-net-specflow) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/VSTest.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/VSTest.md new file mode 100644 index 0000000000..de58018d3f --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/VSTest.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 2 +sidebar_label: VSTest +description: Integrate VSTest with ReportPortal to centralize .NET test results, monitor execution trends, and enhance test analysis across platforms like Windows and Linux. +--- + +# ReportPortal VSTest Integration + +There is an agent to integrate [VSTest](https://github.com/microsoft/vstest) with ReportPortal. + +VSTest is a cross-platform testing framework for writing and running unit tests, integration tests, and functional tests for .NET applications on various platforms, including Windows, Linux, and macOS. + +[Installation guide](https://github.com/reportportal/agent-net-vstest#readme) + +[Examples](https://github.com/reportportal/example-net-vstest) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/index.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/index.md new file mode 100644 index 0000000000..e8e150bfc0 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/index.md @@ -0,0 +1,32 @@ +--- +sidebar_label: .Net +sidebar_position: 3 +description: Use .NET frameworks with ReportPortal for real-time test monitoring, trend tracking, failure management, result analysis, and test automation reports. +--- + +# .Net + +By integrating .NET frameworks with ReportPortal, you can monitor test executions in real-time, identify trends, manage test failures, analyze test results and create test automation report. + +ReportPortal supports seamless integration with the following dotnet testing test frameworks: + +- [NUnit](/log-data-in-reportportal/test-framework-integration/Net/NUnit)
+One of the most popular unit testing frameworks in net projects, NUnit is highly customizable and supports a variety of test cases. With ReportPortal integration, NUnit test results can be visualized in real-time. This allows you to monitor the progress of your unit tests and quickly identify issues. + +- [VSTest](/log-data-in-reportportal/test-framework-integration/Net/VSTest)
+The built-in test runner for Visual Studio, VSTest, is commonly used for running unit tests, integration tests, and functional tests. Integration VSTest with ReportPortal allows you to centralize test execution data, ensuring you have a complete view of your test suite. + +- [SpecFlow](/log-data-in-reportportal/test-framework-integration/Net/SpecFlow)
+SpecFlow is a behavior-driven development (BDD) framework for .NET that enables collaboration between developers, testers, and business stakeholders by using Gherkin syntax for writing test scenarios. By integrating SpecFlow with ReportPortal, you can track and report on your BDD scenarios and feature files in real-time. + +- [xUnit](/log-data-in-reportportal/test-framework-integration/Net/xUnit)
+A widely used unit testing framework in the .NET ecosystem, xUnit is favored for its flexibility and extensibility. With ReportPortal, you can capture real-time xUnit test execution results, visualize test trends, and quickly identify failure patterns, all within ReportPortal’s interactive test automation metrics dashboard. + +- [Reqnroll](/log-data-in-reportportal/test-framework-integration/Net/Reqnroll)
+A relatively newer test automation framework for .NET, Reqnroll focuses on automation and reliability. ReportPortal integration with Reqnroll helps centralize test execution data, enabling comprehensive reporting and analysis for automation test cases, which improves test management and traceability. + +If you need a sophisticated and full-featured integration with a test framework, you can configure it by your self. + +Choose which combination of agent, client, and logger you need, and then follow the instructions provided for each agent. + +All agents use [Rest api client](https://github.com/reportportal/client-net) or [Multi-threaded client](https://github.com/reportportal/commons-net). diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/xUnit.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/xUnit.md new file mode 100644 index 0000000000..25bd1e14b9 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Net/xUnit.md @@ -0,0 +1,21 @@ +--- +sidebar_position: 4 +sidebar_label: xUnit +description: Integrate xUnit with ReportPortal to capture real-time test results, visualize trends, and identify failures efficiently, enhancing your .NET test automation. +--- + +# ReportPortal xUnit Integration + +There is an agent to integrate [xUnit](https://xunit.net/) with ReportPortal. + +xUnit is a testing framework for .NET applications. The "Arrange, Act, Assert" (AAA) pattern, which is a systematic method of designing test cases, is the foundation of xUnit. The AAA pattern places emphasis on how each test should clearly distinguish between how the test environment and data are set up, how the test code is executed, and how the test result is verified (Assert). + +Currently, we have 2 xUnit agents: + +* [agent-net-xunit](https://github.com/reportportal/agent-net-xunit#readme)
+Old version. It supports xUnit v2 and earlier .NET frameworks. + +* [agent-dotnet-xunit.v3](https://github.com/reportportal/agent-dotnet-xunit.v3#readme)
+New version. It aligns with xUnit v3. + +[Examples](https://github.com/reportportal/example-net-xunit) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Other/gauge.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Other/gauge.md new file mode 100644 index 0000000000..037eaf0e17 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Other/gauge.md @@ -0,0 +1,14 @@ +--- +sidebar_position: 3 +sidebar_label: Gauge +description: Connect Gauge test results with ReportPortal to monitor specifications execution, analyze automation outcomes, and enhance testing efficiency. +--- + +# Gauge + +There is an agent to integrate [Gauge](https://gauge.org/) with ReportPortal. + +Gauge is an open-source test automation framework by ThoughtWorks that focuses on readable, specification-style tests written in Markdown. +It supports multiple programming languages and helps teams create maintainable tests that align closely with business requirements. + +[Installation guide](https://github.com/reportportal/agent-net-gauge#readme) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Other/index.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Other/index.md new file mode 100644 index 0000000000..a2c8293c61 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Other/index.md @@ -0,0 +1,17 @@ +--- +sidebar_label: Other +sidebar_position: 6 +description: Integrate unsupported or custom test frameworks by implementing your own integration with ReportPortal, enabling centralized test result visualization. +--- + +# Other + +ReportPortal is an open-source test automation reporting tool with a public API. + +Some integrations with test frameworks are developed and maintained by the ReportPortal team, while others are created and supported by external contributors. If you don’t see your test framework listed in our documentation or repositories, try searching on GitHub. Additionally, you can ask within your framework’s community - someone there might be able to guide you on integrating it with ReportPortal. + +What can you do if you cannot find your test framework? You can create custom integrations! To get started, please visit our [Implement own integration page](/log-data-in-reportportal/ImplementOwnIntegration/). + +:::note +We offer paid support for new or existing integrations. For more details, please [contact us](https://reportportal.io/contact-us/general/). +::: diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Other/silktest.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Other/silktest.md new file mode 100644 index 0000000000..464dac2323 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Other/silktest.md @@ -0,0 +1,14 @@ +--- +sidebar_position: 1 +sidebar_label: SilkTest +description: Track and analyze SilkTest automation results in one place, get clear insights into test execution. +--- + +# SilkTest + +There is an agent to integrate [SilkTest](https://www.microfocus.com/documentation/silk-test/200/en/silk4j-help-en/SILKTEST-4C899BC5-SILKTESTPRODUCTSUITE-CON.html) with ReportPortal. + +SilkTest is a functional test automation framework for web, mobile, and enterprise applications. +It supports multiple technologies and allows creating robust, maintainable automated tests across different platforms. + +[Installation guide](https://github.com/reportportal/agent-silktest) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Other/xctest.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Other/xctest.md new file mode 100644 index 0000000000..91320f2c55 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Other/xctest.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 2 +sidebar_label: XCTest Agent +description: Collect, analyze, and visualize XCTest execution results in our test automation reporting dashboard. +--- + +# XCTest Agent + +There is an agent to integrate [XCTest Agent](https://developer.apple.com/documentation/xctest) with ReportPortal. + +XCTest is Apple’s native testing framework for iOS, iPadOS, macOS, watchOS, and tvOS applications. +XCTest Agent enables collecting and sending test execution results from XCTest-based tests to ReportPortal. + +[Installation guide](https://github.com/reportportal/agent-swift-XCTest#readme) + diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/PHP/Behat.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/PHP/Behat.md new file mode 100644 index 0000000000..ccb1889692 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/PHP/Behat.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 2 +sidebar_label: Behat +description: Integrate Behat with ReportPortal to log Gherkin scenarios, track feature execution, and streamline test reporting for PHP applications. +--- + +# ReportPortal Behat Integration + +There is an agent to integrate [Behat](https://docs.behat.org/en/latest/) with ReportPortal. + +Behat is a test framework for PHP. + +Behat uses domain-specific language (DSL) Gherkin to describe the application behavior in a human-readable format. + +[Installation guide](https://github.com/reportportal/agent-php-Behat#readme) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/PHP/Codeception.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/PHP/Codeception.md new file mode 100644 index 0000000000..23b0e9fe8d --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/PHP/Codeception.md @@ -0,0 +1,14 @@ +--- +sidebar_position: 3 +sidebar_label: Codeception +description: Integrate Codeception for PHP test execution analysis. +--- + +# ReportPortal Codeception Integration + +There is an agent to integrate [Codeception](https://codeception.com/)-based test framework with ReportPortal. + +Codeception is a modern PHP testing framework for web applications. One of its primary advantages is ability to integrate with various testing tools. So, developers can write tests in different environments. + +[Installation guide](https://github.com/reportportal/agent-php-Codeception#readme) + diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/PHP/PHPUnit.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/PHP/PHPUnit.md new file mode 100644 index 0000000000..689f7b04a4 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/PHP/PHPUnit.md @@ -0,0 +1,13 @@ +--- +sidebar_position: 1 +sidebar_label: PHPUnit +description: Integrate PHPUnit with ReportPortal for comprehensive test automation reporting. +--- + +# ReportPortal PHPUnit Integration + +There is an agent to integrate [PHPUnit](https://phpunit.de/) with ReportPortal. + +PHPUnit is a programmer-oriented testing framework for PHP. Support for testing PHP code in isolation is one of PHPUnit's core capabilities. + +[Installation guide](https://github.com/reportportal/agent-php-PHPUnit#readme) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/PHP/index.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/PHP/index.md new file mode 100644 index 0000000000..b4996eebbc --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/PHP/index.md @@ -0,0 +1,26 @@ +--- +sidebar_label: PHP +sidebar_position: 5 +description: ReportPortal integrates with popular PHP frameworks, helping teams manage test results, visualize trends, and optimize testing efficiently. +--- + +# PHP + +ReportPortal provides smooth integration with the most popular PHP testing frameworks, enabling teams to efficiently manage their test execution results, visualize trends, and optimize the testing process. + +ReportPortal supports seamless integration with the following PHP test frameworks: + +- [PHPUnit](/log-data-in-reportportal/test-framework-integration/PHP/PHPUnit)
+As the de facto standard testing framework for PHP, PHPUnit is widely used for unit testing and test-driven development (TDD). Integrating PHPUnit with ReportPortal allows you to capture detailed test execution data. This real-time reporting gives you immediate feedback on test results and enables tracking of test trends, which improves the overall quality and stability of your application. + +- [Behat](/log-data-in-reportportal/test-framework-integration/PHP/Behat)
+A behavior-driven development (BDD) framework. Behat is used to test the behavior of your PHP application through scenarios written in Gherkin syntax. With Behat integration, ReportPortal logs and displays results for each feature and scenario, allowing both developers and non-technical stakeholders to collaborate more effectively. This integration helps teams track scenario execution, understand application behavior, and identify issues early in the development cycle. + +- [Codeception](/log-data-in-reportportal/test-framework-integration/PHP/Codeception)
+Codeception supports multiple testing types, including unit, functional, and acceptance testing. By integrating Codeception with ReportPortal, you can centralize all test results from different types of tests, improving overall visibility into the testing process. ReportPortal captures detailed test execution data, screenshots, logs, and failure reports, allowing for comprehensive analysis and debugging. + +If you need a sophisticated and full-featured integration with a test framework, you can configure it by your self. + +Choose which combination of agent and client you need, and then follow the instructions provided for each agent. + +All agents use [client-php](https://github.com/reportportal/client-php). diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Python/RobotFramework.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Python/RobotFramework.md new file mode 100644 index 0000000000..2d0110aaea --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Python/RobotFramework.md @@ -0,0 +1,17 @@ +--- +sidebar_position: 2 +sidebar_label: Robot Framework +description: Enable seamless result tracking and analysis using Robot Framework reporting in ReportPortal. +--- + +# ReportPortal Robot Framework Integration + +There is a Listener for [RobotFramework](https://robotframework.org/) to report results to ReportPortal. + +Robot Framework is a generic test automation framework for test automation and robotic process automation (RPA). Robot has a simple syntax with keywords that are easy to understand. + +Boost your Robot Framework test reporting with ReportPortal! + +[Installation guide](https://github.com/reportportal/agent-Python-RobotFramework#readme) + +[Examples](https://github.com/reportportal/examples-python/tree/master/robotframework) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Python/behave.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Python/behave.md new file mode 100644 index 0000000000..716c7561d3 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Python/behave.md @@ -0,0 +1,16 @@ +--- +sidebar_position: 3 +sidebar_label: behave +description: Track and visualize Behave test results automatically, view Gherkin scenario outcomes, and streamline team collaboration for faster issue resolution. +--- + +# ReportPortal behave Integration + +There is [behave](https://behave.readthedocs.io/en/stable/) extension for reporting test results of behave to the ReportalPortal. + +Behave is a popular Python-based testing framework. It can be used for testing different types of applications: web applications, APIs, desktop. Behave has a syntax which is easy to understand even for non-technical users. + +[Installation guide](https://github.com/reportportal/agent-python-behave#readme) + +[Examples](https://github.com/reportportal/examples-python/tree/master/behave) + diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Python/index.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Python/index.md new file mode 100644 index 0000000000..439077d64b --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Python/index.md @@ -0,0 +1,29 @@ +--- +sidebar_label: Python +sidebar_position: 4 +description: Use Python test frameworks with automation testing reporting tools to centralize results, analyze failures, and improve test management and QA processes. +--- + +# Python + +By integrating Python test frameworks with automation testing reporting tools, you can centralize test results, track trends, and analyze failures across all your tests, which enhances overall test management and quality assurance processes. + +ReportPortal supports integration with the following Python testing frameworks: + +- [pytest](/log-data-in-reportportal/test-framework-integration/Python/pytest)
+One of the most widely used Python testing frameworks, pytest is known for its simplicity and flexibility in writing both unit and functional tests. Integrating pytest with ReportPortal allows you to capture detailed logs, test results, and execution data. With real-time reporting, you can monitor test outcomes and get insights into test failures. + +- [Robot Framework](/log-data-in-reportportal/test-framework-integration/Python/RobotFramework)
+A keyword-driven test automation framework, Robot Framework is popular for acceptance testing and behavior-driven development (BDD). By integrating Robot Framework with ReportPortal, you can track keyword-driven test results in real-time to obtain visibility into each test case and scenario. The detailed reporting helps non-technical stakeholders and developers collaborate effectively, improving communication and test failure analysis. + +- [behave](/log-data-in-reportportal/test-framework-integration/Python/behave)
+A behavior-driven development (BDD) framework for Python, behave allows teams to write tests in Gherkin syntax to describe application behavior. When integrated with ReportPortal, behave provides real-time insights into test scenarios and their results. + +- [nosetests](/log-data-in-reportportal/test-framework-integration/Python/nosetests)
+A Python testing framework designed to make writing and running tests easy, nosetests can handle both unit and functional testing. By integrating nosetests with ReportPortal, you can capture comprehensive detailed test execution report. The real-time reporting capabilities of ReportPortal provide visibility into test execution and allow you to track trends and improve software quality by identifying issues early in the development cycle. + +If you need a sophisticated and full-featured integration with a test framework, you can configure it by your self. + +Choose which combination of agent and client you need, and then follow the instructions provided for each agent. + +All agents use [client-python](https://github.com/reportportal/client-Python). diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Python/nosetests.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Python/nosetests.md new file mode 100644 index 0000000000..9d34e6d707 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Python/nosetests.md @@ -0,0 +1,13 @@ +--- +sidebar_position: 4 +sidebar_label: nosetests +description: Integrate nosetests with ReportPortal to capture detailed test results, monitor trends, and enhance test analysis for improved software quality. +--- + +# ReportPortal nosetests Integration + +There is [Nose](https://nose.readthedocs.io/en/latest/) plugin for reporting test results of Nose to the ReportalPortal. + +nosetests is the command-line tool used for running tests with the Nose testing framework. It makes it simple to run all tests with a single command. + +[Installation guide](https://github.com/reportportal/agent-python-nosetests#readme) diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Python/pytest.md b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Python/pytest.md new file mode 100644 index 0000000000..ce7b7d5bdb --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/Python/pytest.md @@ -0,0 +1,215 @@ +--- +sidebar_position: 1 +sidebar_label: pytest +description: Automatically log pytest test steps, capture failures with screenshots, and attach detailed logs to simplify test analysis and improve debugging efficiency. +--- + +# ReportPortal pytest Integration + +There is an [agent](https://github.com/reportportal/agent-python-pytest) to integrate [pytest](https://docs.pytest.org/en/7.3.x/) with ReportPortal. + +Pytest is a popular testing framework for Python applications. One of its advantages is the ability to run tests automatically without the manual configuration. + +## Installation + +To install the pytest plugin, run the following command in the terminal: + +```python + pip install pytest-reportportal +``` + +Look through the [CONTRIBUTING.rst](https://github.com/reportportal/agent-python-pytest/blob/develop/CONTRIBUTING.rst) for contribution guidelines. + +## Configuration + +Create the configuration file `pytest.ini` in the root directory of tests, or alternatively, specify one using a pytest command line option: + +```python + py.test -c config.cfg +``` + +The `pytest.ini` file should have next mandatory fields: + +- `rp_project` - name of project in ReportPortal +- `rp_endpoint` - address of ReportPortal Server + +And one type of authorization: API Key or OAuth 2.0 Password grant. You can do this by setting: +- `rp_api_key` or `RP_API_KEY` environment variable. You can get it in the User Profile section on the UI. + +Or: +- `rp_oauth_uri` - OAuth 2.0 token endpoint URL for password grant authentication. **Required** if API key is not used. +- `rp_oauth_username` - OAuth 2.0 username for password grant authentication. **Required** if OAuth 2.0 is used. +- `rp_oauth_password` - OAuth 2.0 password for password grant authentication. **Required** if OAuth 2.0 is used. +- `rp_oauth_client_id` - OAuth 2.0 client identifier. **Required** if OAuth 2.0 is used. +- `rp_oauth_client_secret` - OAuth 2.0 client secret. **Optional** for OAuth 2.0 authentication. +- `rp_oauth_scope` - OAuth 2.0 access token scope. **Optional** for OAuth 2.0 authentication. + +Example of `pytest.ini`: + +```python + [pytest] + rp_api_key = fb586627-32be-47dd-93c1-678873458a5f + rp_endpoint = http://192.168.1.10:8080 + rp_project = user_personal + rp_launch = AnyLaunchName + rp_launch_attributes = 'PyTest' 'Smoke' + rp_launch_description = 'Smoke test' + rp_ignore_attributes = 'xfail' 'usefixture' +``` + +The following parameters are optional: + +- `rp_client_type = SYNC` - Type of the under-the-hood ReportPortal client implementation. Possible values: [SYNC, ASYNC_THREAD, ASYNC_BATCHED]. +- `rp_launch = AnyLaunchName` - launch name (could be overridden by pytest --rp-launch option, default value is 'Pytest Launch'). +- `rp_launch_id = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` - id of the existing launch (the session will not handle the lifecycle of the given launch). +- `rp_launch_attributes = 'PyTest' 'Smoke' 'Env:Python3'` - list of attributes for launch. +- `rp_launch_description = 'Smoke test'` - launch description (could be overridden by pytest --rp-launch-description option, default value is ''). +- `rp_launch_timeout = 86400` - Maximum time to wait for child processes finish, default value: 86400 seconds (1 day). +- `rp_launch_uuid_print = True` - Enables printing Launch UUID on test run start. Default `False`. +- `rp_launch_uuid_print_output = stderr` - Launch UUID print output. Default `stdout`. Possible values: [stderr, stdout]. +- `rp_parent_item_id = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` - id of the existing test item for session to use as parent item for the tests (the session will not handle the lifecycle of the given test item). +- `rp_tests_attributes = 'PyTest' 'Smoke'` - list of attributes that will be added for each item in the launch. +- `rp_report_fixtures = False` - Enable reporting fixtures as test items. Possible values: [True, False]. +- `rp_connect_timeout = 15` - Connection timeout to ReportPortal server. Default value is "10.0". +- `rp_read_timeout = 15` - Response read timeout for ReportPortal connection. Default value is "10.0". +- `rp_log_batch_size = 20` - size of batch log request. +- `rp_log_batch_payload_limit = 65000000` - maximum payload size in bytes of async batch log requests. +- `rp_log_level = INFO` - The log level that will be reported. +- `rp_log_format = [%(levelname)7s] (%(name)s) %(message)s (%(filename)s:%(lineno)s)` - Format string to be used for logs sent to the service. +- `rp_log_custom_levels = 35:ASSUMPTION 37:ASSERTION` - Custom log levels specified as 'int level:string'. Overrides existing level if int level matches. +- `rp_ignore_attributes = 'xfail' 'usefixture'` - Ignore specified pytest markers. +- `rp_is_skipped_an_issue = False` - Treat skipped tests as required investigation. Default `True`. +- `rp_hierarchy_dirs_level = 0` - Directory starting hierarchy level (from pytest.ini level) (default `0`). +- `rp_hierarchy_dirs = True` - Enables hierarchy for tests directories, default `False`. Doesn't support 'xdist' plugin. +- `rp_hierarchy_dir_path_separator` - Path separator to display directories in test hierarchy. In case of empty value current system path separator will be used (os.path.sep). +- `rp_hierarchy_code` - Enables hierarchy for inner classes and parametrized tests, default `False`. Doesn't support 'xdist' plugin. +- `rp_hierarchy_test_file` - Controls display of test file name in the hierarchy and Item Name, default `True`. +- `rp_bts_issue_url = https://bugzilla.some.com/show_bug.cgi?id={issue_id}` - issue URL (issue_id will be filled by parameter from `@pytest.mark.issue` decorator). Fill this parameter if you want to automatically link failed test with an external issue or put a comment into ReportPortal defect. +- `rp_bts_project = PROJECT` - Bug Tracking System Project name to use along with `@pytest.mark.issue` decorator. Fill this parameter if you want to automatically link failed test with an external issue. Should be the same as in corresponding integration. +- `rp_bts_url = https://bugzilla.some.com/` - Bug Tracking System base URL to use along with `@pytest.mark.issue` decorator. Fill this parameter if you want to automatically link failed test with an external issue. Should be the same as in corresponding integration. +- `rp_issue_id_marks = True` - Enables adding marks for issue ids (e.g. "issue:123456"). +- `rp_verify_ssl = True` - Verify SSL when connecting to the server. +- `rp_mode = DEFAULT` - DEBUG or DEFAULT launch mode. DEBUG launches are displayed in a separate tab and not visible to anyone except owner. +- `rp_thread_logging` - EXPERIMENTAL - Enables support for reporting logs from threads by patching the builtin Thread class. Use with caution. +- `rp_api_retries = 0` - Amount of retries for performing REST calls to RP server. + +If you like to override the above parameters from command line, or from CI environment based on your build, then pass `-o "rp_launch_attributes=Smoke Tests"` during invocation. + +## Examples + +To log the test item flow to ReportPortal, use the Python logging handler provided by the plugin, as shown below: + +in conftest.py: + +```python + import logging + import sys + + import pytest + + from reportportal_client import RPLogger + + + @pytest.fixture(scope="session") + def rp_logger(): + logger = logging.getLogger(__name__) + logger.setLevel(logging.DEBUG) + logging.setLoggerClass(RPLogger) + return logger +``` + +in tests: + +```python + + # In this case only INFO messages will be sent to the ReportPortal. + def test_one(rp_logger): + rp_logger.info("Case1. Step1") + x = "this" + rp_logger.info("x is: %s", x) + assert 'h' in x + + # Message with an attachment. + import subprocess + free_memory = subprocess.check_output("free -h".split()) + rp_logger.info( + "Case1. Memory consumption", + attachment={ + "name": "free_memory.txt", + "data": free_memory, + "mime": "application/octet-stream", + }, + ) + + # This debug message will not be sent to the ReportPortal. + rp_logger.debug("Case1. Debug message") +``` + +Plugin can report doc-strings of tests as `descriptions`: + +```python + def test_one(): + """ + Description of the test case which will be sent to ReportPortal + """ + pass +``` + +Pytest markers will be attached as `attributes` to ReportPortal items. +In the following example attributes 'linux' and 'win32' will be used: + +```python + import pytest + + @pytest.mark.win32 + @pytest.mark.linux + def test_one(): + pass +``` + +If you don't want to attach specific markers, list them in `rp_ignore_attributes` parameter. + +## Launching + +To execute a test with ReportPortal, you need to include the '--reportportal' flag: + +```python + py.test ./tests --reportportal +``` + +## Test issue info + +Some pytest marks could be used to specify information about skipped or failed test result. + +The following mark fields are used to get information about test issue: + +- `issue_id` - issue id (or list) in tracking system. This id will be added as comment to test fail result. If URL is specified in pytest ini file (see `rp_issue_system_url`), id will added as link to tracking system. +- `reason` - some comment that will be added to test fail description. +- `issue_type` - short name of RP issue type that should be assigned to failed or skipped test. + +Example: + +```python + @pytest.mark.issue(issue_id="111111", reason="Some bug", issue_type="PB") + def test(): + assert False +``` + +## Send attachment (screenshots) + +Screenshots [can be added](https://github.com/reportportal/client-Python#send-attachment-screenshots) to pytest tests for better debugging and visualization. + +## Test internal steps, aka "Nested steps" + +To implement Nested steps reporting please follow [our guide](https://github.com/reportportal/client-Python/wiki/Nested-steps). + +Also, there are examples of usage: [example 1](https://github.com/reportportal/examples-python/blob/master/pytest/tests/test_nested_steps.py) and [example 2](https://github.com/reportportal/examples-python/blob/master/pytest/tests/test_nested_steps_ui.py). + +## Troubleshooting + +If you would like to temporary disable integrations with ReportPortal just +deactivate `pytest_reportportal` plugin with command like: + +```python + py.test -p no:pytest_reportportal ./tests +``` diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/img/Integrations.png b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/img/Integrations.png new file mode 100644 index 0000000000..0698e3918d Binary files /dev/null and b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/img/Integrations.png differ diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/img/LoggingDiagram.png b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/img/LoggingDiagram.png new file mode 100644 index 0000000000..c623d6608c Binary files /dev/null and b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/img/LoggingDiagram.png differ diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/img/Pic234.jpg b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/img/Pic234.jpg new file mode 100644 index 0000000000..5639ffb7fe Binary files /dev/null and b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/img/Pic234.jpg differ diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/img/SoapuiProperties.png b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/img/SoapuiProperties.png new file mode 100644 index 0000000000..c127827a5f Binary files /dev/null and b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/img/SoapuiProperties.png differ diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/img/UserProfilePage.png b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/img/UserProfilePage.png new file mode 100644 index 0000000000..01a9fb6475 Binary files /dev/null and b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/img/UserProfilePage.png differ diff --git a/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/index.mdx b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/index.mdx new file mode 100644 index 0000000000..45466a3cb9 --- /dev/null +++ b/versioned_docs/version-26.1/log-data-in-reportportal/test-framework-integration/index.mdx @@ -0,0 +1,66 @@ +--- +sidebar_label: Test Framework Integration +description: Integrate your test framework with ReportPortal. Configure agents, send results, and enrich logs, attachments, and attributes for a clear automation test report. +--- + +# Test Framework Integration + +ReportPortal is a system that **integrates with your Test Framework**, listens for events and visualizes test results. You cannot execute results right from ReportPortal. + +**[Agent](/glossary/#agent)** is a self-sufficient integration with a test framework that automatically sends test results and metadata after minimal configuration. + +**[Client](/glossary/#client)** is a REST API library that helps send data programmatically, but requires you to implement the logic and manage metadata yourself. + + + + +How can ReportPortal be integrated with Test Framework? + +:::tip +Check out our useful resources for ReportPortal integration and test result visualization.
+**Blog posts:**
+[ReportPortal integration with Playwright](https://reportportal.io/blog/reportportal-integration-with-playwright)
+[Reporting Cypress test results to ReportPortal](https://reportportal.io/blog/reporting-cypress-test-results-to-reportportal)
+[Test results visualization](https://reportportal.io/blog/test-results-visualization)
+**Video guides:**
+[Integrating Playwright with ReportPortal](https://www.youtube.com/watch?v=UdeRKqFVcuU)
+[Integrating Cypress with ReportPortal](https://www.youtube.com/watch?v=BNQpsVDMQ4E)
+[From Reporting to Insights: Visualize Your Test Results with ReportPortal](https://www.youtube.com/watch?v=CMDa5ZUUOh0) +::: + +## Integration steps + +To do this, you need to follow a few simple steps. + +1. Installation
+Add an agent to your project that corresponds to the Test Framework you use. +2. Configuration
+Provide parameters such as ReportPortal URL, API key/token, project, launch name, etc. + +:::tip +After completing these two steps, the report will be available on the ReportPortal side.
+But if you want to use all the features of ReportPortal, you need to take one more step. +::: + +3. Update tests with additional data
+Fill your reports with valuable attributes, descriptions, logs, attachments, and more. + +:::note +Each step may differ depending on the language and Test Framework.
+For specific tool details, select your language and Test Framework in the sections below. +::: + +## Examples + +If you do not know anything about ReportPortal. +If you just want to integrate ReportPortal with your Test Framework and view info about test case executions: a name, a status, a duration, parameters, attachments (files, screenshots, video and other), logs and others. +So this section for you. + +You can review and mimic the following examples to start your integration with the ReportPortal. + +| **Test frameworks** | **Examples**| +|----------------------------------| ------------- | +| Java Test Frameworks |https://github.com/reportportal/examples-java | +| JavaScript based Test Frameworks | https://github.com/reportportal/examples-js | +| .Net based Test Frameworks | https://github.com/reportportal?q=example-net&type=&language=&sort=| +| Python based Test Frameworks | https://github.com/reportportal/examples-python| diff --git a/versioned_docs/version-26.1/plugins/ManagePlugins.mdx b/versioned_docs/version-26.1/plugins/ManagePlugins.mdx new file mode 100644 index 0000000000..68b163a050 --- /dev/null +++ b/versioned_docs/version-26.1/plugins/ManagePlugins.mdx @@ -0,0 +1,151 @@ +--- +sidebar_position: 1 +sidebar_label: Manage plugins +description: Install, configure, and manage plugins to extend ReportPortal functionality for enhanced test execution reporting capabilities. +--- + +# Manage plugins + +ReportPortal as a test management system can be reinforced by uploading plugins. For now, you can install the next plugins from the box: + +* Bug Tracking Systems plugins: Jira Server, Jira Cloud, Azure DevOps, GitLab, Monday and Rally +* Notification plugins: E-mail server, Slack, Telegram +* Authorization plugins: LDAP, Active directory, SAML +* Import plugins: JUnit, RobotFramework +* Sauce Labs + +| **Plugin** | **Features** | +|---|---| +| Jira Server/Jira Cloud/Azure DevOps/GitLab/Monday/Rally | This plugin can be required for projects that collect defects in a separate tracking tool. The integration provides an exchange of information between ReportPortal and Jira or Rally, for example: posting new issues to BTS, linking test failures with the existing issue in BTS, track issue statuses.| +|E-mail server/Slack/Telegram| 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.| +|JUnit/RobotFramework | This plugin is essential for importing tests into ReportPortal.| +| Implement your own plugin |[Plugin developers guide](/developers-guides/PluginDevelopersGuide)| + +## Upload plugin + +**Permissions:** +Only ADMINISTRATOR can upload plugin. + +You can find the latest version of all ReportPortal plugins by the [link](https://search.maven.org/search?q=g:com.epam.reportportal%20plugin). Then you should download the latest version of a needed plugin. Or you can use a direct link to the needed plugin from the table below. + +|Plugin | Link to download | +| ------------- | ------------- | +| JIRA Server | https://search.maven.org/artifact/com.epam.reportportal/plugin-bts-jira or https://github.com/reportportal/plugin-bts-jira/packages | +| JIRA Cloud | https://github.com/reportportal/plugin-bts-jira-cloud/packages | +| Azure DevOps | https://github.com/reportportal/plugin-bts-azure/packages | +| GitLab | https://github.com/reportportal/plugin-bts-gitlab/packages | +| Monday | https://github.com/reportportal/plugin-bts-monday/packages | +| Rally | https://search.maven.org/artifact/com.epam.reportportal/plugin-bts-rally or https://github.com/reportportal/plugin-bts-rally/packages | +| SauceLabs | https://search.maven.org/artifact/com.epam.reportportal/plugin-saucelabs or https://github.com/reportportal/plugin-saucelabs/packages | +| Slack | https://github.com/reportportal/plugin-slack/packages | +| Telegram | https://github.com/reportportal/plugin-telegram/packages | +| JUnit | https://github.com/reportportal/plugin-import-junit/packages | +| RobotFramework | https://github.com/reportportal/plugin-import-robot/packages | +|E-mail/LDAP/Active directory/SAML| You do not need to download these plugins, there are already available on the Plugin page| + + + +For a plugin uploading please perform the following actions: +* log in to ReportPortal as administrator +* go to Administrate -> Plugins section +* click on Upload button +* choose .jar file which should be uploaded +* and click Upload + +> **Technical requirements for the plugin:** +> +>* a plugin should have the format: .jar +>* a plugin file size is up to 128Mb +>* a plugin should have a version +>* a plugin should have a Manifest +>* a plugin should have a plugin Extensions +>* Admin cannot upload a plugin with existing ID and existing version to the system + +## Update a plugin + +**Permissions:** +Only ADMINISTRATOR can update the plugin. +It is the same procedure as for Uploading. You can upload a plugin with the latest version to the ReportPortal, and an existing version will be updated to the latest one. + +## Enable / Disable a plugin + +**Permissions:** +Only ADMINISTRATOR can enable / disable plugin. + + + +If you do not want to remove a plugin from project settings, but want to save plugin configurations, you can use an enable/disable function. +For that: +* log in to ReportPortal as administrator +* go to Administrate -> Plugins section -> find plugin +* click a switcher to disable + +The plugin will be removed from Project Settings on the project spaces. But all plugin configurations will be saved in the DataBase and you can return them back if you need by clicking on the switcher enable the plugin. + +## Uninstall a plugin + +**Permissions:** +Only ADMINISTRATOR can uninstall the plugin. + +Users can remove a plugin from the system. For that you should: +* log in to ReportPortal as administrator +* go to Administrate > Plugins tab > click on Plugin +* click Uninstall button + +The plugin will be successfully deleted. All plugin configurations will be deleted from the DataBase. +E-mail plugin can not be uninstalled. + + + +## Configure a plugin + +**Permissions:** +Only ADMINISTRATOR can make global configurations of a plugin. +ADMINISTRATOR and PROJECT MANAGER can make project configurations of a plugin. + +Users can configure a plugin on the **instance-level** (global configuration) and also on the **project level** (project configuration). The configuration is the same for both levels. + +If a user configures plugin on the **global level**, then these configurations will be applied to all projects on the instance, which do not have their own configurations. + +If the user configures a plugin on the **project level**, then these configurations will be applied to only this project and replace global configurations, in case they are. + +Details on how to configure a specific plugin please find in the [Integration section](/configuration/IntegrationViaPlugin): + +* [integration with Jira Server](/plugins/bug-tracking/AtlassianJiraServer) +* [integration with Jira Cloud](/plugins/bug-tracking/AtlassianJiraCloud) +* [integration with Azure DevOps](/plugins/bug-tracking/AzureDevOps) +* [integration with GitLab](/plugins/bug-tracking/GitLab) +* [integration with Monday](/plugins/bug-tracking/Monday) +* [integration with Rally](/plugins/bug-tracking/Rally) +* [integration with SauceLabs](/plugins/other/SauceLabs) +* [integration with E-mail server](/plugins/notifications/EmailServer) +* [integration with Slack](/plugins/notifications/Slack) +* [integration with Telegram](/plugins/notifications/Telegram) +* [integration with LDAP](/plugins/authorization/LDAP) +* [integration with Active directory](/plugins/authorization/ActiveDirectory) +* [integration with Okta SAML](/plugins/authorization/SamlProviders/OktaSaml) +* [integration with Azure SAML](/plugins/authorization/SamlProviders/AzureSaml) +* [integration with JUnit](/plugins/import/JUnit) +* [integration with RobotFramework](/plugins/import/RobotFramework) + +> **Use case 1:** +> +> **Situation:** A small team, on ReportPortal instance there are several projects. Separate projects are added for different test types (UI, API, Unit and other). The team works with one project in Jira (or Rally). Different projects post new bugs in the same Jira (or Rally) project. +> **Solution:** configure global integration for Jira (or Rally) plugin on the "Administrate" section. +>**Pros:** Administrator configures integration once, and should not perform the same action several times. If the integration requires some changes, the Administrator can easily edit an integration, and the changes will apply to all projects on the instance. + + +> **Use case 2:** +> +> **Situation:** On ReportPortal instance there are several projects. Separate projects are added for different teams. Each team works with its project in Jira (or Rally) and posts new bugs in different Jira (or Rally) projects. Each team should not have access to the Jira (or Rally) project of other teams. +> **Solution:** configure project integrations for Jira (or Rally) plugin on the Project settings. +>**Pros:** Project Manager or Administrator configures integrations per project, team members from different projects can not see configurations of each other. + + +> **Use case 3:** +> +> **Situation:** On ReportPortal instance there are several projects. Separate projects are added for different teams. But for one team has been added several projects. So several projects on ReportPortal have connections with one Jira (or Rally) project and several projects have a connection with different Jira (or Rally) projects. +> **Solution:** configure global integrations on the Management board, and configure project integrations for Jira (or Rally) plugin on the Project settings. +>**Pros:** Administrator configures integration once for those who need the same settings, and Project Manager or Administrator configures integrations per project, for those projects who need to limit access. diff --git a/versioned_docs/version-26.1/plugins/_category_.json b/versioned_docs/version-26.1/plugins/_category_.json new file mode 100644 index 0000000000..acf497d517 --- /dev/null +++ b/versioned_docs/version-26.1/plugins/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Plugins", + "position": "17", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.1/plugins/authorization/ActiveDirectory.md b/versioned_docs/version-26.1/plugins/authorization/ActiveDirectory.md new file mode 100644 index 0000000000..df353a03ea --- /dev/null +++ b/versioned_docs/version-26.1/plugins/authorization/ActiveDirectory.md @@ -0,0 +1,54 @@ +--- +sidebar_label: Active Directory +description: Configure Active Directory integration for secure authentication in ReportPortal with enterprise SSO. +--- + +# Active Directory + +The Active Directory plugin is available in ReportPortal on the Plugins page, enhancing the efficiency of our test report dashboard. + +To set up access with Active Directory, follow these steps: + +1. Log in to ReportPortal as an ADMIN user. + +2. Click on the dropdown menu located to the right of the user's image. + +3. Select the 'Administrative' link. + +4. From the left-hand sidebar, click on 'Plugins'. + +5. Navigate to the 'Active Directory' tab. + +6. Click on 'Add new integration'. + +At this point, several fields should be displayed. + +```javascript +'Domain*': text +'URL*': text +'Base DN*': text +'Email attribute*': text +'Full name attribute' : text +'Photo attribute' : text +'UserSearchFilter' (the same as for LDAP): text + ``` + +Fields marked in red are mandatory. Once filled, click the 'Submit' button. Completing this process grants all Active Directory users access to the ReportPortal instance. + +To access ReportPortal, users should utilize their domain credentials (Login and password). + +Refer to the example provided below featuring configurations for Microsoft Active Directory that have been successfully utilized by our users: + +**Table with properties and values for LDAP Microsoft Active Directory** + +| Property | Value | +|:---------------------:|:----------------------------------------------------------------------------------------------------------------------:| +| Url | `auth-servers.domain.org.int:3358` | +| Base DN | `OU=MAIN,DC=DOMAIN,DC=ORG,DC=INT` | +| Manager DN | `cn=Service UserBind,ou=Service Accounts,ou=Colombia,ou=America,ou=ServiceAccounts,dc=DOMAIN,dc=ORG,dc=INT` | +| User search filter | `(&(objectClass=user)(sAMAccountName={0}))` | +| Password encoder type | `NO` | +| Email attribute | `mail` | +| Full name attribute | `displayName` | +| Photo attribute | `thumbnailPhoto` | + diff --git a/versioned_docs/version-26.1/plugins/authorization/GitHub.md b/versioned_docs/version-26.1/plugins/authorization/GitHub.md new file mode 100644 index 0000000000..2c5b968d88 --- /dev/null +++ b/versioned_docs/version-26.1/plugins/authorization/GitHub.md @@ -0,0 +1,67 @@ +--- +sidebar_label: GitHub +description: Enable GitHub OAuth login in ReportPortal to streamline access management, allowing developers to sign in using their GitHub credentials for seamless authentication. +--- + +# GitHub + +Our open source test reporting tool allows logging in via GitHub OAuth Web Application Flow. + +### Presequences + +To enable this feature you need to [register new application in Github](https://github.com/settings/applications/new) + +Fill the following fields: + +| Name | Value | Description | +|----------------------------|--------------------------------------------|-------------------------------------------------------| +| Application name | `Report Portal` | Just something which allow you recognize what's this. | +| Homepage URL | `https://{HOST}:{PORT}/uat/sso/user` | Replace with `{HOST}` and `{PORT}` with appropriate values of your instance. Naturally you can omit `:{PORT}` if it's default port for HTTPS protocol. | +| Authorization callback URL | `https://{HOST}:{PORT}/uat/sso/login/github` | As in the previous field replace with `{HOST}` and `{PORT}` with your appropriate values. | + +Once new application is created, you will have Client ID. Click on "Generate a new client secret" to get Client Secret, but do not close the window until you configure the Authorization on RP, since it will never show you the Secret again. + +### ReportPortal configuration + +To setup access with GitHub auth on ReportPortal: +1. Log in to the ReportPortal as an ADMIN user +2. Open the list on the right of the user's image. +3. Click the 'Administrative' link +4. Click the 'Server Settings' from the left-hand sidebar +5. Go to the 'Authorization Configuration' tab +6. Then change the switcher position of 'Activate GitHub Authorization' to ON +7. The Next fields should appear: + +```javascript +'Client ID': +'Client Secret': +'Add GitHub Organization' button-link: (optional) + ``` + +:::note +In case the 'Organization Name' is not added, all GitHub users will have access to the ReportPortal instance.
+If the 'Organization Name' is specified, only users of this organization will have an access to ReportPortal instance.
+If the Name of GitHub organization is not validated, verify that the name is correct. +::: +Example of GitHub auth configuration: +Fill in the form: + + ```javascript +'Client Id': 8767988c424a0e7a2640 +'Client Secret': ef22c9f804257afaf399a2dada7c8f22dee5fd1b +'Organization Name': reportportal + ``` +Click on 'Submit' button. +A confirmation message in status bar should be shown. +A 'Login with GitHub' button will appear on login form. + +### Resolving organization restrictions for OAuth Apps + +If you’ve specified an **Organization Name** in your configuration, ensure the organization allows access to your OAuth app. + +To do this: + +1. Navigate to your organization’s **Settings → Third-party access → OAuth app policy**. +2. Choose one of the following actions:
+ * **Remove restrictions** to allow all verified OAuth apps, **OR**
+ * **Transfer ownership** of your OAuth app to the organization, **or create a new OAuth app** directly under the organization via **Developer Settings**. diff --git a/versioned_docs/version-26.1/plugins/authorization/LDAP.mdx b/versioned_docs/version-26.1/plugins/authorization/LDAP.mdx new file mode 100644 index 0000000000..fc323ef8b4 --- /dev/null +++ b/versioned_docs/version-26.1/plugins/authorization/LDAP.mdx @@ -0,0 +1,92 @@ +--- +sidebar_label: LDAP +description: Configure LDAP integration in your test automation results dashboard with secure encryption. +--- + +# LDAP + +LDAP plugin is available in ReportPortal on the Plugins page. + +In a version 24.2, two step flow of adding LDAP integration is implemented. + +To set up access with LDAP: + +1. Log in to the ReportPortal as an ADMIN user. +2. Open the menu at the bottom by clicking on the user’s icon. +3. Click the 'Administrate' link. +4. Click the 'Plugins' from the left-hand sidebar. +5. Click on the 'LDAP' tab. +6. Click on 'Add new integration'. +7. Fill in the necessary fields: + +**1. Server settings** + +```javascript +'URL' (mandatory field): text +'Base DN' (mandatory field): text +'Manager DN': text +'Manager password': text +'User DN pattern': text +'User search filter': text +'Group search base': text +'Group search filter': text +'Password encoder type': dropdown +``` + +In a version 24.2, PBKDF2 encryption type has been added to the list of possible encryptions for LDAP integration. +Now have the following options for password encoding type: + +- No - the password is not encoded +- PLAIN +- SHA +- LDAP_SHA +- MD4 +- MD5 +- PBKDF2_SHA1 +- PBKDF2_SHA256 +- PBKDF2_SHA512 + +On the LDAP provider side, we encrypt the password using one of the selected types. +When we enter the password, we encrypt it using the same method and then compare it with the encrypted password +stored by the LDAP provider. + + + +**2. Field settings** + +```javascript +'Email attribute' (mandatory field): text +'Name attributes mode': dropdown +'Full name attribute / First name & Last name': options +'Photo attribute': text +``` + +You can create LDAP integration either with **'Full name attribute'** +(if you select 'Full name' option in the 'Name attributes mode' dropdown) or with separate fields for **'First name'** +and **'Last name'** (if you select 'First & last name' option in the 'Name attributes mode' dropdown). + + + + + +You can provide a valid attribute for 'First name' and 'Last name'. +When the user logs in with LDAP for the first time, their full name will be saved as the combination of the First name and Last name. + +:::important +Old integrations will work correctly. +You can change the 'Name attributes mode' for old integrations from Full name to First & Last name. +::: + +8. Click the 'Create' button. + +Now, all users of LDAP will have access to the ReportPortal instance. + +To access ReportPortal, users should use their domain credentials (login and password). + +You can edit your LDAP integration by clicking pencil icon: + + + + + +If you are experiencing issues, [check the LDAP connection](/issues-troubleshooting/HowToCheckLDAPConnection/). diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/AzureSaml.mdx b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/AzureSaml.mdx new file mode 100644 index 0000000000..f21b2fd2fa --- /dev/null +++ b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/AzureSaml.mdx @@ -0,0 +1,109 @@ +--- +sidebar_position: 2 +sidebar_label: Azure SAML +description: Seamlessly integrate Azure SAML with ReportPortal for secure single sign-on, automatic user synchronization, and simplified access management in enterprise environments. +--- + +# Azure SAML + +SAML plugin is available in ReportPortal on the Plugins page. + +***If you have a pre-created Internal user, you can't log in by SAML using their credentials (Email or Name).*** + +Login to ReportPortal via Azure SAML is available starting from version 5.7 (SAML Okta was implemented in versions before 5.7). + +Azure SAML is a useful authorization method for big companies with 100+ employees, especially if this organization is already presented in Azure service. The main benefit here is no need for manual account creation. Users can log in to the ReportPortal using Azure SAML in an uncomplicated way: select login with SAML, then choose Azure, and upon login users’ data is synchronized with ReportPortal automatically. + +If your organization is using Azure SAML and some employees left, there is no need to remove their accounts from ReportPortal and from other Azure applications – just clearing their accounts in Azure will be enough. + +To configure authorization via Azure SAML we need to synchronize Azure and ReportPortal. + +Firstly, configure SAML on Azure side. + +## Configure SAML on Azure side + +1. Log in to [Azure portal](https://portal.azure.com) using your organization creds. +2. Click ```App Services```. + +3. Click ```View``` in the ```Manage Azure Active Directory``` section. + +4. Click ```Manage Tenants```. + + +### Create organization in Azure + +5. If you haven’t configured organization in Azure yet, click ```Create```. + :::note + if you have configured organization in Azure, please, go to step 9. + ::: + +6. Select a tenant type (```Azure Active Directory```) and click ```Next: Configuration >``` button. + +7. Fill in the necessary fields and click ```Next: Review + create >``` button. + +8. Pass the Captcha verification and click the ```Create``` button. + + +### Create your application in Azure + +9. After the creation of an organization go to the ```Enterprise Applications``` section. + +10. Click ```New application```. + +11. Click ```Create your own application```. + +12. Enter the name of your application, choose ```Integrate any other application you don't find in the gallery (Non-gallery)``` bullet and click ```Create``` button. + + +### Assign users to the application in Azure + +13. Assign users (e.g., yourself) to this application. Please, follow the next screenshots: + + + + +### Configure Single sign-on on Azure + +14. Go to the ```Single sign-on``` section. + +15. Choose SAML. + + +### Basic SAML Configuration + +16. Configure ```Basic SAML Configuration``` settings as follows: + + +### Add Azure attributes + +17. Edit ```Attributes & Claims``` settings and add ***email***, ***firstName*** and ***lastName*** attributes (default Azure attributes have ugly format). Please follow the next screenshots: + + + + +SAML configuration is completed on Azure side after adding these attributes. + +Ensure that your Advanced SAML claims options match those shown in the screenshots below. + + + +Lastly, configure SAML on ReportPortal side. + +## Configure SAML on ReportPortal side + +1. Log in to **ReportPortal** as Admin. +2. Open Menu at the bottom and choose ```Administrate``` section. + +3. Select ```Plugins```. + +4. Open ```SAML```. + +5. Click the ```Add integration``` button. + + +## Synchronize Azure SAML and ReportPortal + +6. Synchronize Azure SAML and ReportPortal as follows: + + +Finally, you can log in to ReportPortal using Azure SAML. diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/GoogleWorkspaceSso.mdx b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/GoogleWorkspaceSso.mdx new file mode 100644 index 0000000000..7115118ec1 --- /dev/null +++ b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/GoogleWorkspaceSso.mdx @@ -0,0 +1,59 @@ +--- +sidebar_position: 4 +sidebar_label: Google Workspace SSO +description: Simplify user access to ReportPortal by configuring Google Workspace SSO, enabling secure, seamless login and centralized identity management. +--- + +# Google Workspace SSO + +:::note +This guide was provided by a [contributor](https://github.com/reportportal/reportportal/issues/2598).
+This integration has not been tested by our team. +::: + +## Configuration on Google side + +1. Open Google Workspace Admin panel. +2. Navigate to Apps -> Web and mobile apps. +3. Select Add app -> Add custom SAML App. + + + +4. Enter App Name (for example, `ReportPortal`). +5. Enter Description (optional field). +6. Upload icon. +7. Click "Download Metadata" button. + + + +8. Host the metadata somewhere so that it is accessible to ReportPortal via HTTPS. +9. Enter the ACS URL: `https:///uat/login/saml2/sso/GoogleSSO` + +:::note +GoogleSSO will be used as the ReportPortal SAML Provider name.
+::: + +10. Enter the Entity ID: `report.portal.sp.id` +11. Leave the bottom part untouched. + +## Configuration on ReportPortal side + +1. Log in to ReportPortal as Admin. +2. Open the menu at the bottom by clicking on the user’s icon. +3. Click the "Administrate" link. +4. Click the "Plugins" from the left-hand sidebar. +5. Click on the "SAML" tab. +6. Click on "Add integration" button. +7. Fill in the fields: + +* Identity provider name ID: `urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified` +* Provider name: `GoogleSSO` (same as in ACS URL) +* Metadata URL: URL with the hosted metadata file +* Email: `email` +* Name attributes mode: `First and last name` +* First name: `firstname` +* Last name: `lastname` + +## SAML attribute mapping + + diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/OktaSaml.mdx b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/OktaSaml.mdx new file mode 100644 index 0000000000..278ea77a4f --- /dev/null +++ b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/OktaSaml.mdx @@ -0,0 +1,207 @@ +--- +sidebar_position: 3 +sidebar_label: Okta SAML +description: Enable secure single sign-on (SSO) in ReportPortal by integrating with Okta SAML, streamlining user authentication and enhancing access management. +--- + +# Okta SAML + +:::important +Before starting, please read about the [SAML provider](/plugins/authorization/SamlProviders/Overview). +::: + +This guide will help you to configure the connection between ReportPortal and Okta. + +You can use it as high-level steps for reference. To get more information about Okta configuration, read the [official documentation](https://developer.okta.com/docs/guides/saml-application-setup/overview/). + +SAML plugin is available in ReportPortal on the Plugins page. + +## Requirements + +1. Okta account +2. ReportPortal instance +3. Access to the ReportPortal instance and Okta account +4. Available connection between Okta and ReportPortal + +## Configuration Okta + +### Step 1: Create a new App Integration + +#### Go to the Okta dashboard + + + +Click on the `Applications` in the sidebar menu and click on the +`Create App Integration` button. + +#### Choose integration type + + + +Pick `SAML 2.0` and click `Next`. + +#### Fill the general settings + + + +In the `App name` field, enter the application's name. Click `Next`. + +### Step 2: Configure SAML + +#### Fill in the SAML settings + + + +In the `Single sign-on URL` field, enter the following URL: + +```url +https:///uat/login/saml2/sso/{providerName} +``` +In the example below, ReportPortal was deployed on the local machine using the following URL: + +```url +http://localhost:8080/uat/login/saml2/sso/Okta +``` + +for ReportPortal version older than 25.1, you can use the following URL: + +```url +https:///uat/saml/sp/SSO/alias/report-portal-sp +``` + +More details about the ACS URL you can find in the [SAML Overview](/plugins/authorization/SamlProviders/Overview#identity-provider-configuration). + +In the `Audience URI (SP Entity ID)` field, enter the following identifier: + +``` +report.portal.sp.id +``` + +You can change this identifier when you deploy ReportPortal. More information +about the identifier you can find in the [SAML Overview](/plugins/authorization/SamlProviders/Overview#identifier). + +In the `Name ID format` field, select `EmailAddress`. You can use the UNSPECIFIED format as well. +More information about the Name ID format you can find in the [SAML Overview](/plugins/authorization/SamlProviders/Overview#reportportal-configuration). + +#### Fill in the Attribute Statements + + + +Add the following attributes: + +- `email` with the value `user.email` +- `firstName` with the value `user.firstName` +- `lastName` with the value `user.lastName` + +Click `Next`. + +#### Provide feedback + + + +In this case, the 'I'm an Okta customer adding an internal app' option was selected, along with the 'This is an internal app that we have created' option in the `App type` field. + +Click `Finish`. + + +#### Copy metadata URL + + + +After the App Integration is created, you will see the `Settings` tab with the +`Sign on methods` section. + +Copy the ' Metadata URL ' in the `SAML 2.0` section. You will need it to +configure the ReportPortal SAML plugin. + +### Step 3: Assign users + + + +:::note +You can't provision a user from Okta to ReportPortal if you already have +a pre-created internal user in ReportPortal with the same email and a different +login. Read more about [JIT provisioning](/plugins/authorization/SamlProviders/Overview#user-jit-provisioning) +::: + +You can add a user by clicking on the `Assignments` tab and then clicking on +the `Assign` button. + +In the case above, a user with the email baba_yaga@continental.com doesn't exist in the deployed ReportPortal instance. + +## ReportPortal configuration + +### Step 1: Open the SAML plugin + + + +Log-in to the ReportPortal by Admin account and go to the `Administrate` -> `Plugins` -> `SAML`. + +### Step 2: Add a new integration + + + +Click on the `Add integration` button. + +### Step 3: Fill in the form + + + +#### Identity provider name ID + +In the `Identity provider name ID` field, enter the +`urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress` if you chose the +`EmailAddress` format for the `Name ID format` in the Okta configuration. +If you choose the `UNSPECIFIED` format, keep this field empty. + +You can find more information about the Name ID format in the +[SAML Overview](/plugins/authorization/SamlProviders/Overview#reportportal-configuration) + +#### Provider name + +In the `Provider name` field, enter any name you want, for example `Okta`. + +#### Metadata URL + +In the `Metadata URL` field, paste the copied Okta metadata URL. + +#### Attribute mapping + +You need to map the attributes from the Okta configuration to the ReportPortal. + +1. Enter the `email` attribute name in the 'Email' field. +2. In the `First name` field, enter the `firstName` attribute name. +3. In the `Last name` field, enter the `lastName` attribute name. + +#### RP callback URL + +In the `RP callback URL` field, enter the URL: + +```url +https:///uat +``` + +In the case below, the following URL was used: `http://192.168.49.2/uat`. + +#### Create the integration + + + +After you fill in the form and clicked on the `Create` button, you will see the +new integration in the list. + +### Step 4: Test the integration + + + +Log-out from the ReportPortal and go to login page. You will see the +`Login with SAML` button. + + + +Click on the button, and you will be redirected to the Okta login page. + + + +After successful login, SAML plugin will create the user to the ReportPortal +and you can see the user in the `Users` section on the `Administrate` page. diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/Overview.mdx b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/Overview.mdx new file mode 100644 index 0000000000..86d59798cf --- /dev/null +++ b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/Overview.mdx @@ -0,0 +1,196 @@ +--- +sidebar_label: Overview +sidebar_position: 1 +description: Enable secure SSO in ReportPortal with SAML providers, streamline user authentication, support Just-in-Time provisioning, and simplify access management. +--- + +# SAML Overview + +This plugin allows you to configure a connection with a SAML provider. + +Integration with SAML will allow you to log in to ReportPortal using SSO +instead of tedious manual user creation. + +The plugin provides a mechanism for exchanging information between ReportPortal +and the SAML provider, such as the possibility of logging in to ReportPortal +with SAML credentials. + +## User JIT provisioning + +:::note +If you have a pre-created Internal user, you can't login by SAML using their +credentials (Email or Name). +::: + +Just-in-time (JIT) provisioning is a feature that creates a user account in +ReportPortal when a user logs in for the first time. This feature is available +for SAML integrations. + +However, you can't provision a user from SAML Provider to ReportPortal if you +already have a pre-created internal user in ReportPortal with the same email +and different login. The login must be the email name without the domain part. +For instance, if the email is `john_weak@babayaga.com` the login should be +`john_weak`. +In the opposite case, the user cannot log in to ReportPortal. +You can fix it by changing the login name or email or deleting the user from +the ReportPortal. + +## SAML provider requirements + +:::tip +There are detailed manuals for the configuration of +[Azure SAML](/plugins/authorization/SamlProviders/AzureSaml) +and [Okta SAML](/plugins/authorization/SamlProviders/OktaSaml). +::: + +- SAML 2.0 version +- HTTP-POST Binding +- URL to download [SAML IdP Metadata](https://en.wikipedia.org/wiki/SAML_metadata#Identity_provider_metadata) +- HTTPS connection for SAML Metadata +- Support SAML attributes: + - email + - first name + - last name + - full name (instead of first and last name) + +## Add integration + +ReportPortal contains the SAML Plugin by default. + +1. Go to `Administration` -> `Plugins` -> `SAML` +2. Select `Add integration`. + +## Set up connection + +### Identity provider configuration + +#### ReportPortal Assertion Consumer Service URL + +You have to provide a URL for a SAML provider to deliver SAML data to the +identity federation. + +For ReportPortal version 25.1 with Service authorization 5.14.0 and newer, the ACS URL is: + +```url +https:///uat/login/saml2/sso/{your-provider-name} +``` + +You can find the `{your-provider-name}` in the ReportPortal SAML plugin configuration. +The field is called **Provider name**. + + + +:::note +The provider name must not contain spaces. +Use only alphanumeric characters, dashes, and underscores. +::: + +For ReportPortal version 25.0.6 with Service authorization 5.13.2 and older, the ACS URL is: + +```url +https:///uat/saml/sp/SSO/alias/report-portal-sp +``` + +#### Identifier + +Set up identifier (aka Audience Restriction, aka Entity ID) for application as +`report.portal.sp.id`. +When you deploy the authorization service, you can specify your entity ID using +the environment variable `RP_AUTH_SAML_ENTITYID`. + +#### Custom attributes + +The IDp app user profile must provide attributes like this: + +``` +- user.email +- user.firstName +- user.lastName +``` + +Also, Make sure there is a mapping created according to the values that you use +in the ReportPortal SAML plugin like this: + +``` +- user.email -> Email +- user.firstName -> FirstName +- user.lastName -> LastName +``` + +#### Service provider initial URL (SP-Initiated SSO) + +Some Identity Providers can request a URL for the initial login page. You can +provide the URL to the ReportPortal login page. + +```url +https:///ui/#login +``` + +### ReportPortal configuration + + + +***Identity provider name ID (Optional)*** + +**Identity provider name ID** (aka name identifier formats) controls how the +users at identity providers are mapped to users at service providers. + +We support the following formats: + +1. `UNSPECIFIED` - used by default + +```urn +urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified +``` + +2. `EMAIL` + +```urn +urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress +``` + +***Provider name*** - Provider name associated with IDP. + +***Metadata URL*** - URL that provides data with information about SAML Provider. + +***Email*** - Attribute name from SAML metadata which contains an user email. + +```xml + + neuromancer@cyberspace.net + +``` + +***ReportPortal Callback URL*** - This field provides a redirect base path. + +Once you submit an integration with the "RP callback URL," the URL will be +applied to all SAML integrations. + +```url +https:///uat +``` + +***First name*** - Attribute name from SAML metadata which contains an user first/given name. + +```xml + +William + +``` + +***Last name*** - Attribute name from SAML metadata which contains an user last/family name. + +```xml + +Gibson + +``` + +***Full name*** - Attribute name from SAML metadata which contains a full user name. You can use either two separate attributes for first name and last name or a combined first and last name attribute. This solely depends on your SAML provider. + +```xml + +William Gibson + +``` diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/_category_.json b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/_category_.json new file mode 100644 index 0000000000..a61c8fdfc6 --- /dev/null +++ b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "SAML Providers", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/OktaSAML.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/OktaSAML.png new file mode 100644 index 0000000000..09db098bb4 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/OktaSAML.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/OktaSide.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/OktaSide.png new file mode 100644 index 0000000000..6918a68996 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/OktaSide.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/SAMLPlugin.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/SAMLPlugin.png new file mode 100644 index 0000000000..e9211162d5 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/SAMLPlugin.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML1.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML1.png new file mode 100644 index 0000000000..fea53ffe30 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML1.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML10.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML10.png new file mode 100644 index 0000000000..1cde6fe939 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML10.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML11.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML11.png new file mode 100644 index 0000000000..e0466ddcc3 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML11.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML12.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML12.png new file mode 100644 index 0000000000..3dfaaa4db5 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML12.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML13.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML13.png new file mode 100644 index 0000000000..870f3ee7e2 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML13.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML14.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML14.png new file mode 100644 index 0000000000..76dd465e6d Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML14.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML15.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML15.png new file mode 100644 index 0000000000..3c98043dad Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML15.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML16.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML16.png new file mode 100644 index 0000000000..9d0852ea00 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML16.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML17.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML17.png new file mode 100644 index 0000000000..b56461743e Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML17.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML18.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML18.png new file mode 100644 index 0000000000..5123bfe1ca Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML18.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML19.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML19.png new file mode 100644 index 0000000000..966dea270f Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML19.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML2.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML2.png new file mode 100644 index 0000000000..c815f9ab54 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML2.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML20.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML20.png new file mode 100644 index 0000000000..090f8b3bd8 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML20.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML21.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML21.png new file mode 100644 index 0000000000..132df2b0ad Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML21.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML22.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML22.png new file mode 100644 index 0000000000..0f49af8fe1 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML22.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML23.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML23.png new file mode 100644 index 0000000000..4dd27ea2e8 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML23.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML24.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML24.png new file mode 100644 index 0000000000..1a7a7aeb3f Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML24.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML3.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML3.png new file mode 100644 index 0000000000..7210c1a327 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML3.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML4.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML4.png new file mode 100644 index 0000000000..73cbd14e2e Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML4.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML5.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML5.png new file mode 100644 index 0000000000..a4d169de1d Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML5.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML6.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML6.png new file mode 100644 index 0000000000..3b1b7327fd Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML6.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML7.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML7.png new file mode 100644 index 0000000000..7c78df7326 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML7.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML8.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML8.png new file mode 100644 index 0000000000..475b74face Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML8.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML9.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML9.png new file mode 100644 index 0000000000..fad07f87c8 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML9.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAMLadvanced.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAMLadvanced.png new file mode 100644 index 0000000000..b9d878b0ba Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/AzureSAMLadvanced.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/SAMLIntegration.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/SAMLIntegration.png new file mode 100644 index 0000000000..aeabe628c4 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/azure-saml/SAMLIntegration.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/google-workspace-sso/GoogleWorkspaceSSO1.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/google-workspace-sso/GoogleWorkspaceSSO1.png new file mode 100644 index 0000000000..4274b8ebfb Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/google-workspace-sso/GoogleWorkspaceSSO1.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/google-workspace-sso/GoogleWorkspaceSSO2.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/google-workspace-sso/GoogleWorkspaceSSO2.png new file mode 100644 index 0000000000..a9208e17fb Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/google-workspace-sso/GoogleWorkspaceSSO2.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/google-workspace-sso/GoogleWorkspaceSSO3.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/google-workspace-sso/GoogleWorkspaceSSO3.png new file mode 100644 index 0000000000..da8f1b422c Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/google-workspace-sso/GoogleWorkspaceSSO3.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-1.0.jpg b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-1.0.jpg new file mode 100644 index 0000000000..8744da3347 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-1.0.jpg differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-1.1.jpg b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-1.1.jpg new file mode 100644 index 0000000000..db15f50fde Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-1.1.jpg differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-1.2.jpg b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-1.2.jpg new file mode 100644 index 0000000000..a439962b0d Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-1.2.jpg differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-2.0.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-2.0.png new file mode 100644 index 0000000000..036e6fb70f Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-2.0.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-2.1.jpg b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-2.1.jpg new file mode 100644 index 0000000000..68275c0e6d Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-2.1.jpg differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-2.2.jpg b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-2.2.jpg new file mode 100644 index 0000000000..444ab57133 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-2.2.jpg differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-2.3.jpg b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-2.3.jpg new file mode 100644 index 0000000000..b82f6786d8 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-2.3.jpg differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-3.0.jpg b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-3.0.jpg new file mode 100644 index 0000000000..1d2eeb2adf Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-3.0.jpg differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.0.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.0.png new file mode 100644 index 0000000000..a6edd85830 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.0.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.1.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.1.png new file mode 100644 index 0000000000..9dba9c4912 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.1.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.2.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.2.png new file mode 100644 index 0000000000..eb5a7fab16 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.2.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.3.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.3.png new file mode 100644 index 0000000000..c6e34700fb Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.3.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.4.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.4.png new file mode 100644 index 0000000000..6906c61d98 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.4.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.5.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.5.png new file mode 100644 index 0000000000..daf308bf3b Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.5.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.6.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.6.png new file mode 100644 index 0000000000..850e6b8493 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.6.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/saml-provider-name.png b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/saml-provider-name.png new file mode 100644 index 0000000000..b611c704dc Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/img/saml-provider-name.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/SamlProviders/index.md b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/index.md new file mode 100644 index 0000000000..150c947cee --- /dev/null +++ b/versioned_docs/version-26.1/plugins/authorization/SamlProviders/index.md @@ -0,0 +1,18 @@ +--- +sidebar_label: SAML Providers +description: Use SAML SSO with Azure or Okta to securely access your test automation metrics dashboard and simplify user login. +--- + +# SAML Providers + +The **SAML Providers** category in ReportPortal enables efficient and secure user authentication using popular SAML providers like Azure SAML and Okta SAML. These services allow ReportPortal to connect seamlessly with existing identity management frameworks, making login processes faster and more reliable while meeting enterprise-grade security standards. + +When using Azure SAML as an authentication provider, users can log in with the credentials they already use within their organization. This setup offers a single sign-on (SSO) experience, making access management more efficient and reducing the need for password resets. Similarly, Okta SAML leverages Okta’s identity management platform to facilitate secure and simple login. With Okta SAML, ReportPortal users can also enjoy SSO functionality, boosting productivity and providing robust identity verification for consistent security. + +Setting up SAML-based authentication in ReportPortal is simple, with dedicated configuration options for Azure and Okta in the settings menu. Each guide offers step-by-step instructions to ensure a quick and accurate setup, allowing teams to link their ReportPortal accounts with their chosen provider easily. This flexibility in choosing an SSO provider simplifies access to the platform and reduces administrative overhead. + +By using SAML Providers like Azure SAML and Okta SAML, organizations can ensure that access to their test reporting and analytics remains secure, streamlined, and aligned with existing identity management policies, ultimately providing a more cohesive and productive user experience. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.1/plugins/authorization/_category_.json b/versioned_docs/version-26.1/plugins/authorization/_category_.json new file mode 100644 index 0000000000..8a8b5918cb --- /dev/null +++ b/versioned_docs/version-26.1/plugins/authorization/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Authorization", + "position": "2", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.1/plugins/authorization/img/LDAP1.png b/versioned_docs/version-26.1/plugins/authorization/img/LDAP1.png new file mode 100644 index 0000000000..95fdef1297 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/img/LDAP1.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/img/LDAP2.png b/versioned_docs/version-26.1/plugins/authorization/img/LDAP2.png new file mode 100644 index 0000000000..27f97b90b8 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/img/LDAP2.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/img/LDAP3.png b/versioned_docs/version-26.1/plugins/authorization/img/LDAP3.png new file mode 100644 index 0000000000..2baa006261 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/img/LDAP3.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/img/LDAP4.png b/versioned_docs/version-26.1/plugins/authorization/img/LDAP4.png new file mode 100644 index 0000000000..4e9a34c8ea Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/img/LDAP4.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/img/LDAP5.png b/versioned_docs/version-26.1/plugins/authorization/img/LDAP5.png new file mode 100644 index 0000000000..15e041098c Binary files /dev/null and b/versioned_docs/version-26.1/plugins/authorization/img/LDAP5.png differ diff --git a/versioned_docs/version-26.1/plugins/authorization/index.md b/versioned_docs/version-26.1/plugins/authorization/index.md new file mode 100644 index 0000000000..3f9d41263d --- /dev/null +++ b/versioned_docs/version-26.1/plugins/authorization/index.md @@ -0,0 +1,28 @@ +--- +sidebar_label: Authorization +description: Set up secure logins with Active Directory, GitHub, LDAP, and SAML. Manage authentication to keep ReportPortal access safe and simple for every role. +--- + +# Authorization + +The **Authorization section** in ReportPortal provides detailed guidance on supported methods for user authentication, offering secure and streamlined access management within your test automation reporting dashboard. ReportPortal supports multiple authorization options, including Active Directory, GitHub, LDAP, and SAML providers like Azure SAML and Okta SAML, allowing teams to choose the method that best integrates with their existing security infrastructure. + +**Active Directory** + +For organizations using Microsoft’s Active Directory (AD), ReportPortal provides an integration that allows users to authenticate using their AD credentials. This method leverages the organization’s current user management system, ensuring secure access control and reducing the need for additional login information. By logging in with their AD credentials, users can access ReportPortal in alignment with the organization’s security policies. + +**GitHub** + +ReportPortal also supports GitHub-based authentication, allowing users to sign in with their GitHub credentials. This is particularly useful for teams managing code repositories and workflows on GitHub, providing a seamless login experience and reducing the need for separate credentials. GitHub authentication simplifies access management for developers, enabling quick, direct entry into the test report dashboard. + +**LDAP** + +ReportPortal’s LDAP integration enables authentication through an organization’s existing directory, making it ideal for teams with established LDAP setups. This method links ReportPortal to company directory services, providing centralized user management and enhanced security by allowing users to sign in quickly with their directory credentials. + +**SAML Providers** + +ReportPortal supports SAML authentication through Azure SAML and Okta SAML. These integrations enable users to authenticate via a central identity provider, which simplifies access control across multiple platforms. Azure SAML and Okta SAML provide single-click access to ReportPortal through an organization’s SSO setup, which both reduces password fatigue and aligns with enterprise security standards. This method is particularly valuable for larger teams managing numerous tools and applications within their tech ecosystem. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/AtlassianJiraCloud.mdx b/versioned_docs/version-26.1/plugins/bug-tracking/AtlassianJiraCloud.mdx new file mode 100644 index 0000000000..3ad085c724 --- /dev/null +++ b/versioned_docs/version-26.1/plugins/bug-tracking/AtlassianJiraCloud.mdx @@ -0,0 +1,251 @@ +--- +sidebar_position: 4 +sidebar_label: Jira Cloud +description: Integrate Jira Cloud with your test reporting tool to streamline issue tracking, link defects, and sync updates across your QA process. +--- + +# Atlassian Jira Cloud + +To install the Jira Cloud plugin, see [Upload plugin](/plugins/ManagePlugins#upload-plugin) section. + +Integration with the JIRA Cloud can be required for projects that collect defects in a separate tracking tool. The integration provides an exchange of information between our centralized test automation tool and the JIRA Cloud, such as posting issues and linking issues, getting updates on their statuses. + + +## Global JIRA Cloud integration + +### Add new global Jira Cloud integration + +If all projects on your instance are using the same Jira projects, you will be able to configure **global integrations** which will be applied on all projects. + +1. Log in as ADMIN + +2. Go to Administrative > Plugins + +3. Click on JIRA Cloud plugin panel + +4. Click on "Add integration" button + +5. Fill and confirm the authorization form + +```javascript +'Integration Name': - should be unique +'Link to BTS': +'Project key in BTS': +'Email': +'API Token': +``` + +After you have created a connection with the JIRA project, you can choose predefined JIRA ticket fields. These fields will be shown to you all the time when you post the issue in Jira Cloud. + +This feature gives you the ability to choose which type you will post a ticket. + +To choose a needed issue type and predefined field for the chosen issue, you should perform the following actions: + +1. Click on "Configure" button + +2. Choose issue type from the drop-down + +3. Check the needed fields and fill them in if necessary + +4. Click on "Submit" button + + +Now team members on all your projects will be able to submit issues in Jira Cloud. Options for Post Issue / Link issue are activated. + + + +You can add more integrations by clicking on "Add integration" button. + +User can add several integrations, but with a different name to the **one JIRA project**. + + +>**Use case:** +> +> **Situation:** User wants to post to JIRA Cloud issues with type **Defect** and **Task** to the project NNN-MMM in Jira. Is it possible? +> Yes! +> +> **Solution:** Add two integrations to the project NNN-MMM in Jira with names f.e. "Project -1" and "Project -2". +> Add to the "Project -1" issue type **Defect** and for "Project -2" - issue type **Task**. +> While posing issue procedure, choose integration with needed type. + + +### Update global Jira Cloud integration + +If you need to edit Jira Cloud integration authorization parameters, please perform actions: + +1. Log in as ADMIN + +2. Go to Administrative > Plugins + +3. Click on JIRA Cloud plugin panel + +4. Click on a tab with existing integration + +5. Click on "Edit authorization" link + +6. Change "Integration name" + +7. Submit the form + +:::note +You can edit the "Integration name" only. If you need other changes, please submit new integration. +::: + +If you need to edit fields which should be posted in Jira Cloud, please perform actions: + +1. Log in as ADMIN + +2. Go to Administrative > Plugins + +3. Click on JIRA Cloud plugin panel + +4. Click on a tab with existing integration + +5. Click on "Configure" button + +6. Choose issue type from the drop-down + +7. Check the needed fields and fill them in if necessary + +8. Click on "Submit" button + +### Remove global Jira Cloud integration + +If you need to remove Jira Cloud integration, please perform actions: + +1. Log in as ADMIN + +2. Go to Administrative > Plugins + +3. Click on JIRA Cloud plugin panel + +4. Click on a tab with existing integration + +5. Click on "Remove integration" + +6. Submit the action + +## Project JIRA Cloud integration + +### Add new project Jira Cloud integration + +If any project needs different Jira Cloud configurations, you should unlink a project from Global configurations and add a project configuration. It means that now when a new global integration is added to our test automation results dashboard, it won't be applied to the unlinked project. + +For that, + +1. Log in as an ADMIN or Project Manager + +2. Go to Project Settings > Integrations + +3. Click on the JIRA Cloud integration panel + +4. Click on "Unlink and setup manually" button + +5. Fill and confirm the authorization form + +```javascript +'Integration Name': - should be unique +'Link to BTS': +'Project key in BTS': +'Email': +'API Token': +``` + +After you have created a connection with the JIRA project, you can choose predefined JIRA ticket fields. These fields will be shown to you all the time when you post the issue in Jira Cloud. + +This feature gives you the ability to choose which type you will post a ticket. + +To choose a needed issue type and predefined field for the chosen issue, you should perform the following actions: + +1. Click on "Configure" button + +2. Choose issue type from the drop-down + +3. Check the needed fields and fill them in if necessary + +4. Click on "Submit" button + +Now team members on **this project** will be able to submit issues in Jira Cloud. Options for Post Issue / Link issue are activated. + +You can add more integrations by clicking on "Add integration" button. + +### Reset to project Jira Cloud Integrations + +If you want to delete project integrations with Jira Cloud and link your project with global configurations, please perform actions described below: + +1. Log in as an ADMIN or Project Manager + +2. Go to Project Settings > Integrations + +3. Click on the JIRA Cloud integration panel + +4. Click on "Reset to global settings" button + +5. Confirm the action + +## Post issue to Jira Cloud + +Posting an issue to Jira Cloud means to create a new issue in Jira from ReportPortal and upload logs and attachments from an execution. + +If you want to post a new issue to Jira, you need to have a project or global integration with Jira Cloud. + + + +Post issue via Step view + +1. Log in to ReportPortal as Admin, PM, Member, Customer or Operator + +2. Go to a Step view + +3. Choose a needed item + +4. Click on "Actions" button + +5. Choose "Post issue" option + +6. Fill in the "Post issue" form with valid data + +```javascript +`BTS`: if you have configured BTS integrations, you will be able to choose between them +`Integration name`: from the drop-down, you can choose any of integrations for chosen earlier BTS +`Predefined fields`: fields which you choose on Project Settings/ or Plugins +`Included data`: which data should be posted to BTS (attachments, logs, comments) +``` + +7. Submit the form + +8. A new issue will be posted in BTS with information from ReportPortal + +9. A label with issue ID will be added to the test item + + +## Link an issue with an issue in Jira Cloud + +Linking an issue with an issue in Jira Cloud means adding a clickable link to an existing issue in Jira from ReportPortal that will show a status of this issue. + + + +Link issue via Step view + +1. Log in to ReportPortal as Admin, PM, Member, Customer or Operator + +2. Go to a Step view + +3. Choose a needed item + +4. Click on "Actions" button + +5. Choose "Link issue" option + +6. Fill in the "Link issue" form with valid data + +```javascript +`BTS`: if you have configured BTS integrations, you will be able to choose between them +`Integration name`: from the drop-down, you can choose any of integrations for chosen earlier BTS +`Link to issue`: a full link to the item in BTS +`Issue ID`: information which will be displayed on the label in ReportPortal +``` + +7. Submit the form + +8. A label with issue ID will be added to the test item diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/AtlassianJiraServer.mdx b/versioned_docs/version-26.1/plugins/bug-tracking/AtlassianJiraServer.mdx new file mode 100644 index 0000000000..f35e5b448c --- /dev/null +++ b/versioned_docs/version-26.1/plugins/bug-tracking/AtlassianJiraServer.mdx @@ -0,0 +1,294 @@ +--- +sidebar_position: 3 +sidebar_label: Jira Server +description: Integrate Jira Server with your test automation reporting tool to track defects, sync statuses, and streamline bug reporting. +--- + +# Atlassian Jira Server + +To install the Jira Server plugin, see [Upload plugin](/plugins/ManagePlugins#upload-plugin) section. + +Integration with the JIRA Server can be required for projects that collect defects in a separate tracking tool. The integration provides an exchange of information between our test automation reporting dashboard and the JIRA Server, such as posting issues and linking issues, getting updates on their statuses. + +:::important +The Administrator can upload Jira Server plugin and create global integrations on the Plugins tab in the Administrate section.
+The Project Manager can work only on the project level. He can unlink and re-write global configuration with project ones on Project Settings > Integrations. +::: + +## Global JIRA Server integration + +### Add new global Jira Server integration + +If all projects on your instance are using the same Jira projects, you will be able to configure **global integrations** which will be applied on all projects. + +1. Log in as ADMIN. + +2. Go to Administrate > Plugins. + +3. Click on JIRA Server plugin panel. + +4. Click on "Add integration" button. + + + +5. Fill in required parameters for integration. + + + +```javascript +'Integration Name': - should be unique +'Link to BTS': +'Project key in BTS': +'Authorization Type': Basic (predefined) +'BTS Username': +'BTS Password or API Token': +``` + +Depending on how Jira Server is configured, it's either allowed to integrate with it using password or API Token. While Jira Server does not natively support API tokens like Jira Cloud, there are third-party plugins that can add this functionality, for example **API Token Authentication for Jira**, which allows users to generate API tokens for Jira Server. + +After you have created a connection with the JIRA project, you can choose predefined JIRA ticket fields. These fields will be shown to you all the time when you post the issue in Jira. + +This feature gives you the ability to choose which type you will post a ticket. + +To select a needed issue type and predefined fields for the chosen issue, you should perform the following actions: + +1. In the Configuration section, choose issue type from the drop-down. + +2. Check the required fields and fill them in if necessary (if you want them to be prepopulated). + +3. Click on "Submit" button. + + + +Now team members on all your projects will be able to submit issues in Jira. Options for Post Issue / Link issue are activated. + +You can add more integrations by clicking on "Add integration" button. + +Users can add several integrations, but with a different name to the **one JIRA project**. + +>**Use case:** +> +> **Situation:** User wants to post to JIRA Server issues with type **Defect** and **Task** to the project NNN-MMM in Jira. Is it possible? +> Yes! +> +> **Solution:** Add two integrations to the project NNN-MMM in Jira with names e.g. "Project -1" and "Project -2". +> Add to the "Project -1" issue type **Defect** and for "Project -2" - issue type **Task**. +> While posing issue procedure, choose integration with needed type. + +### Update global Jira Server integration + +If you need to edit Jira Server integration parameters, please perform actions: + +1. Log in as ADMIN. + +2. Go to Administrate > Plugins. + +3. Click on Jira Server plugin panel. + +4. Click on the tab with existing integration. + +5. Click on "Edit" icon. + + + +6. Change "Integration name". + +7. Type your BTS password or API Token. + +8. Click on "Save" button. + + + +If you need to edit fields which should be posted in Jira Server, please perform actions: + +1. Log in as ADMIN. + +2. Go to Administrate > Plugins. + +3. Click on Jira Server plugin panel. + +4. Click on the tab with existing integration. + +5. Click on "Edit" button in Configuration section. + + + +6. Choose issue type from the drop-down. + +7. Check the needed fields and fill them in if necessary. + +8. Click on "Submit" button. + +### Remove global Jira Server integration + +If you need to remove Jira Server integration, please perform actions: + +1. Log in as ADMIN. + +2. Go to Administrate > Plugins. + +3. Click on Jira Server plugin panel. + +4. Click on the tab with existing integration. + +5. Click on "Remove" icon. + +6. Click "Delete" button. + + + + + +## Project JIRA Server integration + +### Add new project Jira Server integration + +If any project needs different Jira Server configurations, you should unlink a project from Global configurations and add a project configuration. It means that now when a new global integration is added to our centralized test automation tool, it won't be applied to the unlinked project. + +For that, + +1. Log in as an ADMIN or Project Manager. + +2. Go to Project Settings > Integrations. + +3. Click on the Jira Server integration panel. + +4. Click on "Add Project integration" button. + + + +5. Fill in the necessary fields. + +6. Click "Create" button. + + + +```javascript +'Integration Name': - should be unique +'Link to BTS': +'Project key in BTS': +'Authorization Type': Basic (predefined) +'BTS Username': +'BTS Password or API Token': +``` + +After you have created a connection with the JIRA project, you can choose predefined JIRA ticket fields. These fields will be shown to you all the time when you post the issue in Jira. + +This feature gives you the ability to choose which type you will post a ticket. + +To choose a needed issue type and predefined field for the chosen issue, you should perform the following actions: + +1. In the Configuration section, choose issue type from the drop-down. + +2. Check the needed fields and fill them in if necessary. + +3. Click on "Submit" button. + + + +Now team members on **this project** will be able to submit issues in Jira. Options for Post issue / Link issue are activated. + +You can add more integrations by clicking on "Add integration" button. + +### Reset to global Jira Server Integrations + +If you want to delete project integrations with Jira Server and link your project with global configurations, please perform actions described below: + +1. Log in as an ADMIN or Project Manager. + +2. Go to Project Settings > Integrations. + +3. Click on the JIRA Server integration panel. + +4. Click on "Reset to Global Integrations" button. + +5. Confirm the action. + + + + + +## Some tricks when you create a new connection: + +1. Verify that the link to the JIRA Server system is correct. There are several possible variants are possible, for instance: + +``` +https://jira.company.com/jira +https://jiraeu.company.com +``` + +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. + +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. To do this, log in to the JIRA Server using the same credentials that you are trying to use for the integration with ReportPortal. If the user is valid, you should be able to log in through the UI without any issues. + +4. In some cases, Jira API token is required instead of the user’s password. This depends on the Jira configuration, as the use of a password is often not permitted for third-party system integrations. In such cases, API token should work. + +## Post issue to Jira Server + +Posting an issue to Jira Server means to create a new issue in Jira from ReportPortal and upload logs and attachments from an execution. + +If you want to post a new issue to Jira, you need to have a project or global integration with Jira Server. + +1. Log in to ReportPortal as Admin, Project Manager, Member, Customer or Operator. + +2. Go to a Test view. + +3. Click on the pencil icon near a needed item to open "Make decision" modal. + + + +4. Select "Post issue" option and then "Apply & Continue". + + + +5. Fill in the "Post issue" form with valid data. + +6. Click "Post issue" button. + + + +A new issue will be posted in Jira with information from ReportPortal. + +As a result, a ticket of the selected issue type was created in the Jira project specified in the integration, including logs, screenshots, a link to ReportPortal, and other details. + + + +A label with Jira Issue ID will be added to the test item. Details of the created Jira ticket (summary and status) are also visible. + + + +## Link an issue with an issue in Jira Server + +You can also link ReportPortal item to already existing issue in Jira. + +1. Log in to ReportPortal as Admin, Project Manager, Member, Customer or Operator. + +2. Go to a Test view. + +3. Click on the pencil icon near a needed item to open "Make decision" modal. + +4. Select "Link issue" option and then "Apply & Continue". + +5. Fill in the "Link issue" form with valid data. + +6. Click "Link issue" button. + + + +A label with issue ID will be added to the test item. + + + +## Unlink an issue in Jira Server + +You can also unlink an issue. + +1. Click on the "remove" icon near issue ID. + + + +2. Click on "Unlink Issue" button. + + + +The link to the issue in Jira Server is removed. diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/AzureDevOps.mdx b/versioned_docs/version-26.1/plugins/bug-tracking/AzureDevOps.mdx new file mode 100644 index 0000000000..d125e98fd0 --- /dev/null +++ b/versioned_docs/version-26.1/plugins/bug-tracking/AzureDevOps.mdx @@ -0,0 +1,321 @@ +--- +sidebar_position: 5 +sidebar_label: Azure DevOps +description: Connect Azure DevOps with your test report dashboard to post, link, and manage issue in just a few clicks. +--- + +# Azure DevOps + +To install the Azure DevOps (ADO) plugin, see [Upload plugin](/plugins/ManagePlugins#upload-plugin) section. + +Integration with our centralized test automation tool can be helpful for projects which are already using Azure DevOps BTS (Bug Tracking System) as a tracking tool. This feature allows posting issues and linking/unlinking issues, getting updates on their statuses. For example, just a few clicks – and bug with detailed logs is created! + +Azure DevOps BTS integration can be configured on the global level (for all projects on the instance) or on the project level (only for one project). + +## Global Azure DevOps BTS integration + +### Add new global Azure DevOps BTS integration + +You might want to configure **global integrations** which will be applied on all projects if all projects on your instance are using the same Azure DevOps BTS projects. + +1. Log in as ADMIN. + +2. Go to Administrate > Plugins. + +3. Click on Azure DevOps plugin. + +4. Click on the “Add integration” button. + + + +5. Fill and Save the authorization form. + + + +Please, follow the steps below to get a token for Azure DevOps integration: + + + + + + + + + +You can choose predefined Azure DevOps ticket fields after you have created a connection with the Azure DevOps BTS project. These fields will be shown to you all the time when you post an issue to the Azure DevOps BTS. + +This feature also gives you the ability to choose proper issue type for newly created issues in Azure DevOps BTS. + +To choose a needed issue type and predefined field for the chosen issue, you should perform the following actions on the opened **Configuration** form: + +1. Choose issue type from the drop-down. + +2. 2.Check the fields needed and fill them in if necessary. + +3. Click on “Submit” button. + + + +Now team members on all your projects will be able to submit issues in Azure DevOps BTS. Options for Post Issue/Link issue are activated. + +You can add more integrations by clicking on “Add integration”. + + + +User can add several integrations, but with a different name to the **one Azure DevOps BTS project**. + +**Use case:** + +**Situation:** User wants to post to Azure DevOps BTS issues with type **Issue** and **Task** to the project NNN-MMM in Azure DevOps BTS. Is it possible? Yes! + +**Solution:** Add two integrations to the project NNN-MMM in Azure DevOps BTS with names e.g., “Project -1” and “Project -2”. Add to the “Project -1” issue type **Issue** and for “Project -2” - issue type **Task**. While posing issue procedure, choose integration with needed type. + +### Update global Azure DevOps BTS integration + +If you need to edit Azure DevOps BTS integration authorization parameters, please perform actions: + +1. Log in as ADMIN. + +2. Go to Administrate > Plugins. + +3. Click on Azure DevOps plugin. + +4. Click on a tab with existing integration. + +5. Click on “Edit authorization” link. + + + +6. Change “Integration name”. + +7. Type your Azure DevOps credentials. + +8. Submit the form. + +:::note +You can edit only “Integration name”. If you need other changes, please submit new integration. +::: +If you need to edit fields which should be posted in Azure DevOps BTS, please perform actions: + +1. Log in as ADMIN. + +2. Go to Administrate > Plugins. + +3. Click on Azure DevOps plugin. + +4. Click on the tab with existing integration. + +5. Click on “Configure” button. + + + +6. Choose issue type from the drop-down. + +7. Check the fields needed and fill them in if necessary. + +8. Click on “Submit” button. + +### Remove global Azure DevOps BTS integration + +If you need to remove Azure DevOps BTS integration, please perform actions: + +1. Log in as ADMIN. + +2. Go to Administrate > Plugins. + +3. Click on Azure DevOps plugin. + +4. Click on the tab with existing integration. + +5. Click on “Remove integration”. + + + +6. Submit the action. + +## Project Azure DevOps BTS integration + +### Add new project Azure DevOps BTS integration + +If any project needs different Azure DevOps BTS configurations, you should unlink a project from Global configurations and add a Project configuration. It means that now when a new global integration is added to the ReportPortal, it won't be applied to the unlinked project. + +For that, + +1. Log in as an ADMIN or Project Manager. + +2. Go to Project Settings > Integrations. + +3. Click on the Azure DevOps integration panel. + +4. Click on “Unlink and setup manually” button. + + + +5. Fill and confirm the authorization form. + + + +:::note +Please, have a look at **Global Azure DevOps BTS** integration for detailed configuration steps. +::: +You can choose predefined Azure DevOps ticket fields after you have created a connection with the Azure DevOps BTS project. These fields will be shown to you all the time when you post an issue to the Azure DevOps BTS. + +This feature also gives you the ability to choose proper issue type for newly created issues in Azure DevOps BTS. + +To choose a needed issue type and predefined field for the chosen issue, you should perform the following actions on the opened **Configuration** form: + +1. Choose issue type from the drop-down. + +2. Check the needed fields and fill them in if necessary. + +3. Click on “Submit” button. + +Now team members on this project will be able to submit issues in Azure DevOps BTS. Options for Post Issue/Link issue are activated. + +You can add more integrations by clicking on “Add integration” button. + +### Reset to project Azure DevOps BTS Integrations + +If you want to delete project integrations with Azure DevOps BTS and link your project with global configurations, please perform actions described below: + +1. Log in as an ADMIN or Project Manager. + +2. Go to Project Settings > Integrations. + +3. Click on the Azure DevOps integration panel. + +4. Click on “Reset to global settings” button. + +5. Confirm the action. + + + +## Post issue to Azure DevOps BTS + +Posting an issue to Azure DevOps BTS means creating a new issue in Azure DevOps BTS from ReportPortal and uploading logs and attachments from an execution. + +If you want to post a new issue to Azure DevOps BTS, you need to have a project or global integration with Azure DevOps BTS. + +1. Log in to ReportPortal as Admin, PM, Member, Customer or Operator. + +2. Go to Launches. + +3. Choose a needed item. + + + +4. Click on the pencil icon to open “Make decision” modal. + + + +5. Choose “Post issue” option and then “Apply & Continue”. + + + +6. Fill in the “Post Issue” form with valid data and submit the form. + + + +7. A new issue will be posted in Azure DevOps BTS with information from ReportPortal. + + + +8. A label with issue ID will be added to the test item. + + + +## Link an issue with an issue in Azure DevOps BTS + +Linking an issue with an issue in Azure DevOps BTS means adding a clickable link to an existing issue in Azure DevOps BTS from ReportPortal that will show a status of this issue. + +1. Log in to ReportPortal as Admin, PM, Member, Customer or Operator. + +2. Go to Launches. + +3. Choose a needed item. + + + +4. Click on the pencil icon to open “Make decision” modal. + + + +5. Choose “Link issue” option and then “Apply & Continue”. + + + +6. Fill in the “Link issue” form with valid data and submit the form. + + + +7. A label with issue ID will be added to the test item. + + + +8. Link is redirected to this issue in Azure DevOps BTS. + + + +## Unlink an issue in Azure DevOps BTS + +You can also unlink an issue. + +1. Click on the “remove” icon. + + + +2. Click “Unlink Issue”. + + + +3. Link to the issue in Azure DevOps BTS is removed. + +## Custom issue type in Azure DevOps BTS + +You can configure any custom issue type (e.g., Bug for Adam) in Azure DevOps BTS and then choose it as predefined Azure DevOps ticket field. So, developer Adam will see on the Azure DevOps BTS all issues from ReporPortal which assigned to him. + +Follow the steps below to configure custom issue type: + +1. Log in to [Azure portal](https://dev.azure.com). + +2. Go to Organization settings. + + + +3. Click on the “Process” menu item. + + + +4. Select three dots near the current process and create a new one. + + + + + +5. Click on the name of the just created process. + + + +6. Create custom issue type. + + + + + +7. Click on the project quantity and change the process for your project. + + + + + + + +8. Change Issue Type for Azure DevOps BTS integration on ReportPortal. + + + +9. Post issues to Azure DevOps BTS. + +10. Now you can see issues with custom issue type on Azure DevOps BTS. + + diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/GitLab.mdx b/versioned_docs/version-26.1/plugins/bug-tracking/GitLab.mdx new file mode 100644 index 0000000000..c865942cf4 --- /dev/null +++ b/versioned_docs/version-26.1/plugins/bug-tracking/GitLab.mdx @@ -0,0 +1,299 @@ +--- +sidebar_position: 6 +sidebar_label: GitLab +description: Integrate GitLab to post issues, link defects, and sync status updates seamlessly. +--- + +# GitLab + +To install the GitLab plugin, see [Upload plugin](/plugins/ManagePlugins#upload-plugin) section. + +Integration with the GitLab Bug Tracking System (BTS) can be helpful for projects which are already using GitLab BTS as a tracking tool. The integration provides an exchange of information between our test automation reporting dashboard and the GitLab Server, such as posting issues and linking issues, getting updates on their statuses. + +**Permission:** + +The Administrator can upload a plugin and create global integrations on the Plugin tab in the Administrate section. The Project Manager can work only on the project level. He can unlink and re-write global configuration with project ones on Project Settings > Integrations. + +GitLab BTS integration can be configured on the global level (for all projects on the instance) or on the project level (only for one project). + +## Global GitLab BTS integration + +### Add new global GitLab BTS integration + +You might want to configure global integrations which will be applied on all projects if all projects on your instance are using the same GitLab BTS projects. + +1. Log in as ADMIN. + +2. Go to Administrate > Plugins. + +3. Click on GitLab plugin panel. + +4. Click on "Add integration" button. + + + +5. Fill and confirm the authorization form. + +```javascript +'Integration Name': - should be unique +'Link to BTS': +'Project ID in BTS': +'Access Token': +``` + + + +How to find Access Token in Gitlab? Please, see the image below. + + + +After you have created a connection with the GitLab project, you can choose predefined GitLab ticket fields. These fields will be shown to you all the time when you post the issue in GitLab. + +* Issue type: dropdown with options "issue" (default) or "incident" +* Title (required) +* Description +* Confidential: dropdown with options "Yes" or "No" +* Assignee(s) +* Due date +* Labels +* Milestone +* Epic – **GitLab Enterprise Version** +* Weight – **GitLab Enterprise Version** + +:::important +You can fill in the fields marked as 'GitLab Enterprise Version,' but this data will only appear in GitLab if you have the Paid Enterprise version. + +In the free version of GitLab, you can only enter one Assignee. +::: + +:::note +The Assignee(s) field searches both by login and by name. + +The Milestone, Epic, Assignee(s), Label fields work through autocomplete. +::: + + + +Now team members on all your projects will be able to submit issues in GitLab. Options for Post Issue/Link issue are activated. + +You can add more integrations by clicking on "Add integration" button. + + + +### Update global GitLab BTS integration + +If you need to edit GitLab BTS integration authorization parameters, perform actions described below: + +1. Log in as ADMIN. + +2. Go to Administrative > Plugins. + +3. Click on GitLab plugin panel. + +4. Click on a tab with existing integration. + +5. Click on "Edit" icon. + +6. Change "Integration name". + +7. Type your Access Token. + +8. Click "Save" button. + + + +If you need to edit fields which should be posted in GitLab BTS, perform actions described below: + +1. Log in as ADMIN. + +2. Go to Administrative > Plugins. + +3. Click on GitLab plugin panel. + +4. Click on a tab with existing integration. + +5. Click on "Edit" button in Configuration section. + +6. Check the needed fields and fill them in if necessary. + +7. Click on "Submit" button. + + + +### Remove global GitLab BTS integration + +If you need to remove GitLab BTS integration, perform actions described below: + +1. Log in as ADMIN. + +2. Go to Administrative > Plugins. + +3. Click on GitLab plugin panel. + +4. Click on a tab with existing integration. + +5. Click on "Remove" icon. + +6. Click "Delete" button. + + + +## Project GitLab BTS integration + +### Add new project GitLab BTS integration + +If any project needs different GitLab BTS configurations, you should unlink a project from Global configurations and add a project configuration. It means that now when a new global integration is added to our test automation results dashboard tool, it won't be applied to the unlinked project. + +For that, + +1. Log in as an ADMIN or Project Manager. + +2. Go to Project Settings > Integrations. + +3. Click on the GitLab integration panel. + +4. Click on "Add Project Integration" button. + +5. Fill necessary fields and click "Create" button. + +```javascript +'Integration Name': - should be unique +'Link to BTS': +' Project ID in BTS': +'Access Token': +``` + + + +After you have created a connection with the GitLab project, you can choose predefined GitLab ticket fields. These fields will be shown to you all the time when you post the issue in GitLab. + +* Issue type: dropdown with options "issue" (default) or "incident" +* Title (required) +* Description +* Confidential: dropdown with options "Yes" or "No" +* Assignee(s) +* Due date +* Labels +* Milestone +* Epic – **GitLab Enterprise Version** +* Weight – **GitLab Enterprise Version** + +:::important +You can fill in the fields marked as 'GitLab Enterprise Version,' but this data will only appear in GitLab if you have the Paid Enterprise version. + +In the free version of GitLab, you can only enter one Assignee. +::: + +:::note +The Assignee(s) field searches both by login and by name. + +The Milestone, Epic, Assignee(s), Label fields work through autocomplete. +::: + + + +You can add more integrations by clicking on "Add Project Integration" button. + + + +### Reset to global GitLab BTS Integration + +If you want to delete project integrations with GitLab BTS and link your project with global configurations, perform actions described below: + +1. Log in as an ADMIN or Project Manager. + +2. Go to Project Settings > Integrations. + +3. Click on the GitLab integration panel. + +4. Click on "Reset to Global Integrations" button. + + + +5. Click "Reset" button. + + + +## Post issue to GitLab BTS + +Posting an issue to GitLab BTS means to create a new issue in GitLab BTS from ReportPortal. + +If you want to post a new issue to GitLab BTS, you need to have a project or global integration with GitLab. + +**Post issue via Step view** + +1. Log in to ReportPortal as Admin, Project Manager, Member, Customer or Operator + +2. Go to a Step view. + +3. Click on the pencil icon near a needed item to open “Make decision” modal. + + + +4. Set defect type, add comment, select “Post issue” option and then “Apply & Continue”. + + + +5. Fill in the “Post issue” form with valid data and submit the form. + + + +:::note +You can add labels from the dropdown while configuring GitLab integration and during the issue posting. Labels lift from the project in GitLab. +::: + + + +6. Click “Post issue” button. + +A new issue will be posted in GitLab BTS with information from ReportPortal. + + + +A label with issue ID will be added to the test item. + + + + + +## Link an issue with an issue in GitLab BTS + +Linking an issue with an issue in GitLab BTS means adding a clickable link to an existing issue in GitLab BTS from ReportPortal that will show a status of this issue. + +**Link issue via Step view** + +1. Log in to ReportPortal as Admin, Project Manager, Member, Customer or Operator. + +2. Go to a Step view. + +3. Click on the pencil icon near a needed item to open “Make decision” modal. + +4. Set defect type, select “Link issue” option and then “Apply & Continue”. + + + +5. Fill in the “Link issue” form with valid data and submit the form. + + + +6. Click “Link issue” button. + +A label with issue ID will be added to the test item. + + + +## Unlink an issue in GitLab BTS + +You can also unlink an issue. + +1. Click on the “remove” icon. + + + +2. Click “Unlink Issue”. + + + +Link to the issue in GitLab BTS is removed. + + diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/Monday.mdx b/versioned_docs/version-26.1/plugins/bug-tracking/Monday.mdx new file mode 100644 index 0000000000..f5fc41f7c8 --- /dev/null +++ b/versioned_docs/version-26.1/plugins/bug-tracking/Monday.mdx @@ -0,0 +1,256 @@ +--- +sidebar_position: 7 +sidebar_label: Monday +description: Integrate ReportPortal with Monday to streamline issue reporting, link test failures, and synchronize statuses between your test results and Monday boards. +--- + +# Monday + +To install the Monday plugin, see [Upload plugin](/plugins/ManagePlugins#upload-plugin) section. + +Integration with the Monday Bug Tracking System (BTS) can be helpful for projects which are already using Monday BTS as a tracking tool. The integration provides an exchange of information between our test results reporting service and the Monday Server, such as posting issues and linking issues, getting updates on their statuses. + +:::important +The Administrator can upload a plugin and create global integrations on the Plugin tab in the Administrate section.
+The Project Manager can work only on the project level. He can unlink and re-write global configuration with project ones on Project Settings > Integrations. +::: + +Monday BTS integration can be configured on the global level (for all projects on the instance) or on the project level (only for one project). + +## Global Monday BTS integration + +### Add new global Monday BTS integration + +You might want to configure global integrations which will be applied on all projects if all projects in your instance are using the same Monday BTS projects. + +1. Log in as ADMIN. + +2. Go to Administrate > Plugins. + +3. Click on Monday plugin panel. + +4. Click on ‘Add integration’ button. + + + +5. Fill and confirm the authorization form. + + + +```javascript +'Integration Name': - should be unique +'Link to BTS': +'Board ID in BTS': +'API Token': +``` + +How to find API Token in Monday: + +1. Click on the user icon at the top right corner. + +2. Open ‘Developers’ section. + +3. Open ‘My access tokens’ tab. + + + +After you have created a connection with the Monday project, you can choose predefined Monday ticket fields. These fields will be shown to you all the time when you post the issue in Monday. + + + +Now team members on all your projects will be able to submit issues in Monday. Options for Post Issue/Link issue are activated. + +You can add more integrations by clicking on ‘Add integration’ button. + +### Update global Monday BTS integration + +If you need to edit Monday BTS integration parameters, perform actions described below: + +1. Log in as ADMIN. + +2. Go to Administrative > Plugins. + +3. Click on Monday plugin panel. + +4. Click on the tab with existing integration. + +5. Click on ‘Edit’ icon. + +6. Change ‘Integration name’. + +7. Type your API Token. + +8. Click ‘Save’ button. + + + +If you need to edit fields which should be posted in Monday BTS, perform actions described below: + +1. Log in as ADMIN. + +2. Go to Administrative > Plugins. + +3. Click on Monday plugin panel. + +4. Click on the tab with existing integration. + +5. Click on ‘Edit’ button in Configuration section. + +6. Check the needed fields and fill them in if necessary. + +7. Click on ‘Submit’ button. + + + +### Remove global Monday BTS integration + +If you need to remove Monday BTS integration, perform actions described below: + +1. Log in as ADMIN. + +2. Go to Administrative > Plugins. + +3. Click on Monday plugin panel. + +4. Click on the tab with existing integration. + +5. Click on ‘Remove’ icon. + +6. Click ‘Delete’ button. + + + + + +## Project Monday BTS integration + +### Add new project Monday BTS integration + +If any project needs different Monday BTS configurations, you should unlink a project from Global configurations and add a project configuration. It means that now when a new global integration is added, it won't be applied to the unlinked project. + +For that, + +1. Log in as an ADMIN or Project Manager. + +2. Go to Project Settings > Integrations. + +3. Click on the Monday integration panel. + +4. Click on ‘Add Project Integration’ button. + +5. Fill in the necessary fields and click ‘Create’ button. + + + +```javascript +'Integration Name': - should be unique +'Link to BTS': +'Board ID in BTS': +'API Token': +``` + +After you have created a connection with the Monday project, you can choose predefined Monday ticket fields. These fields will be shown to you all the time when you post the issue in Monday. + + + +Now team members on this project will be able to submit issues in Monday. Options for Post Issue/Link issue are activated. + +You can add more integrations by clicking on ‘Add Project Integration’ button. + +### Reset to global Monday BTS Integration + +If you want to delete project integrations with Monday BTS and link your project with global configurations, perform actions described below: + +1. Log in as an ADMIN or Project Manager. + +2. Go to Project Settings > Integrations. + +3. Click on the Monday integration panel. + +4. Click on ‘Reset to Global Integrations’ button. + +5. Click ‘Reset’ button. + + + + + +### Post issue to Monday BTS + +Posting an issue to Monday BTS means creating a new issue in Monday BTS from ReportPortal. + +If you want to post a new issue to Monday BTS, you need to have a project or global integration with Monday. + +**Post issue via Step view** + +1. Log in to ReportPortal as Admin, Project Manager, Member, Customer or Operator. + +2. Go to a Step view. + +3. Click on the pencil icon near a needed item to open ‘Make decision’ modal. + + + +4. Set defect type, add comment, select ‘Post issue’ option and then ‘Apply & Continue’. + + + +5. Fill in the ‘Post issue’ form with valid data. + +6. Click ‘Post issue’ button. + + + +A new issue will be posted in Monday BTS with information from ReportPortal. + + + +A label with issue ID will be added to the test item. + + + + + +### Link an issue with an issue in Monday BTS + +Linking an issue with an issue in Monday BTS means adding a clickable link to an existing issue in Monday BTS from ReportPortal that will show a status of this issue. + +**Link issue via Step view** + +1. Log in to ReportPortal as Admin, Project Manager, Member, Customer or Operator. + +2. Go to a Step view. + +3. Click on the pencil icon near a needed item to open ‘Make decision’ modal. + +4. Select ‘Link issue’ option and then ‘Apply & Continue’. + + + +5. Fill in the ‘Link issue’ form with valid data. + +6. Click ‘Link issue’ button. + + + +A label with issue ID will be added to the test item. + + + + + +### Unlink an issue in Monday BTS + +You can also unlink an issue. + +1. Click on the ‘remove’ icon. + + + +2. Click ‘Unlink Issue’. + + + +The link to the issue in Monday BTS is removed. + + diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/Rally.mdx b/versioned_docs/version-26.1/plugins/bug-tracking/Rally.mdx new file mode 100644 index 0000000000..cfac1efa4a --- /dev/null +++ b/versioned_docs/version-26.1/plugins/bug-tracking/Rally.mdx @@ -0,0 +1,251 @@ +--- +sidebar_position: 8 +sidebar_label: Rally +description: Integrate Rally with your QA automation dashboard to track, post, and manage defects efficiently from test results. +--- + +# Rally + +To install the Rally plugin, see [Upload plugin](/plugins/ManagePlugins#upload-plugin) section. + +## Global RALLY integration + +### Add new global RALLY integration + +If all projects on your instance are using the same RALLY projects, you will be able to configure **global integrations** which will be applied on all projects. + +1. Log in as ADMIN + +2. Go to Administrative > Plugins + +3. Click on RALLY plugin panel + +4. Click on "Add integration" button + +5. Fill and confirm the authorization form + +```javascript +'Integration Name': - should be unique +'Link to BTS': +'Project ID in BTS': +'Authorization Type': ApiKey (predefined) +'ApiKey': +``` + +After you have created a connection with the RALLY project, you can choose predefined RALLY ticket fields. These fields will be shown to you all the time when you post the issue in the RALLY. + +This feature gives you the ability to choose which type you will post a ticket. + +To choose a needed issue type and predefined field for the chosen issue, you should perform the following actions: + +1. Click on "Configure" button + +2. Choose issue type from the drop-down + +3. Check the needed fields and fill them in if necessary + +4. Click on "Submit" button + + +Now team members on all your projects will be able to submit issues in RALLY. Options for Post Issue / Link issue are activated. + +You can add more integrations by clicking on "Add integration" + +User can add several integrations, but with a different name to the **one RALLY project**. + + +>**Use case:** +> +> **Situation:** User wants to post to RALLY issues with type **Defect** and **Task** to the project NNN-MMM in RALLY. Is it possible? +> Yes! +> +> **Solution:** Add two integrations to the project NNN-MMM in RALLY with names f.e. "Project -1" and "Project -2". +> Add to the "Project -1" issue type **Defect** and for "Project -2" - issue type **Task**. +> While posing issue procedure, choose integration with needed type. + + +### Update global RALLY integration + +If you need to edit RALLY integration authorization parameters, please perform actions: + +1. Log in as ADMIN + +2. Go to Administrative > Plugins + +3. Click on RALLY plugin panel + +4. Click on a tab with existing integration + +5. Click on "Edit authorization" link + +6. Change "Integration name" + +7. Type your RALLY credentials + +8. Submit the form + +:::note +You can edit only "Integration name". If you need other changes, please submit new integration. +::: + +If you need to edit fields which should be posted in RALLY, please perform actions: + +1. Log in as ADMIN + +2. Go to Administrative > Plugins + +3. Click on RALLY plugin panel + +4. Click on a tab with existing integration + +5. Click on "Configure" button + +6. Choose issue type from the drop-down + +7. Check the needed fields and fill them in if necessary + +8. Click on "Submit" button + + +### Remove global RALLY integration + +If you need to remove RALLY integration, please perform actions: + +1. Log in as ADMIN + +2. Go to Administrative > Plugins + +3. Click on RALLY plugin panel + +4. Click on a tab with existing integration + +5. Click on "Remove integration" + +6. Submit the action + +## Project RALLY integration + +### Add new project RALLY integration + +If any project needs different RALLY configurations, you should unlink a project from Global configurations and add a project configuration. It means that now when a new global integration is added to the ReportPortal, it won't be applied to the unlinked project. + +For that, + +1. Log in as an ADMIN or Project Manager + +2. Go to Project Settings > Integrations + +3. Click on the RALLY integration panel + +4. Click on "Unlink and setup manually" button + +5. Fill and confirm the authorization form + +```javascript +'Integration Name ': - should be unique +'Link to BTS': +'Project ID in BTS': +'Authorization Type': Basic (predefined) +'BTS Username': +'BTS Password': +``` + +After you have created a connection with the RALLY project, you can choose predefined RALLY ticket fields. These fields will be shown to you all the time when you post the issue in the RALLY. + +This feature gives you the ability to choose which type you will post a ticket with. + +To choose a needed issue type and predefined field for the chosen issue, you should perform the following actions: + +1. Click on "Configure" button + +2. Choose issue type from the drop-down + +3. Check the needed fields and fill them in if necessary + +4. Click on "Submit" button + + +Now team members on **this project** will be able to submit issues in RALLY. Options for Post Issue / Link issue are activated. + +You can add more integrations by clicking on "Add integration" button. + +### Reset to project RALLY Integrations + +If you want to delete project integrations with RALLY and link your project with global configurations, please perform actions described below: + +1. Log in as an ADMIN or Project Manager + +2. Go to Project Settings > Integrations + +3. Click on the RALLY integration panel + +4. Click on "Reset to global settings" button + +5. Confirm the action + +## Post issue to Rally + +Posting an issue to Rally means to create a new issue in Rally from ReportPortal and upload logs and attachments from an execution. + +If you want to post a new issue to Rally, you need to have a project or global integration with Rally. + + + +Post issue via Step view + +1. Log in to ReportPortal as Admin, PM, Member, Customer or Operator + +2. Go to a Step view + +3. Choose a needed item + +4. Click on "Actions" button + +5. Choose "Post issue" option + +6. Fill in the "Post issue" form with valid data + +```javascript +`BTS`: if you have configured BTS integrations, you will be able to choose between them +`Integration name`: from the drop-down, you can choose any of integrations for chosen earlier BTS +`Predefined fields`: fields which you choose on Project Settings/ or Plugins +`Included data`: which data should be posted to BTS (attachments, logs, comments) +`ApiKey`: user apikey +``` + +7. Submit the form + +8. A new issue will be posted in BTS with information from ReportPortal + +9. A label with issue ID will be added to the test item + +## Link an issue with an issue in Rally + +Linking an issue with an issue in Rally means adding a clickable link to an existing issue in Rally from ReportPortal that will show a status of this issue. + + + +Link issue via Step view + +1. Log in to ReportPortal as Admin, PM, Member, Customer or Operator + +2. Go to a Step view + +3. Choose a needed item + +4. Click on "Actions" button + +5. Choose "Link issue" option + +6. Fill in the "Link issue" form with valid data + +```javascript +`BTS`: if you have configured BTS integrations, you will be able to choose between them +`Integration name`: from the drop-down, you can choose any of integrations for chosen earlier BTS +`Link to issue`: a full link to the item in BTS +`Issue ID`: information which will be displayed on the label in ReportPortal +``` + +7. Submit the form + +8. A label with issue ID will be added to the test item diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/_category_.json b/versioned_docs/version-26.1/plugins/bug-tracking/_category_.json new file mode 100644 index 0000000000..60b833471e --- /dev/null +++ b/versioned_docs/version-26.1/plugins/bug-tracking/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Bug Tracking", + "position": "3", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps1.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps1.png new file mode 100644 index 0000000000..6e3a38460d Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps1.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps10.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps10.png new file mode 100644 index 0000000000..46900f63ab Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps10.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps11.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps11.png new file mode 100644 index 0000000000..052e737c30 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps11.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps12.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps12.png new file mode 100644 index 0000000000..b4a406faf0 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps12.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps13.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps13.png new file mode 100644 index 0000000000..be84bcb32c Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps13.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps14.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps14.png new file mode 100644 index 0000000000..972cccce1f Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps14.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps15.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps15.png new file mode 100644 index 0000000000..d9ff3bcca1 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps15.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps16.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps16.png new file mode 100644 index 0000000000..652d6c6f82 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps16.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps17.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps17.png new file mode 100644 index 0000000000..6106feac2e Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps17.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps18.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps18.png new file mode 100644 index 0000000000..a9996162da Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps18.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps19.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps19.png new file mode 100644 index 0000000000..04140002c8 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps19.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps2.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps2.png new file mode 100644 index 0000000000..63fe8abd5d Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps2.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps20.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps20.png new file mode 100644 index 0000000000..34a1ad7e00 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps20.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps21.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps21.png new file mode 100644 index 0000000000..63c8900ab4 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps21.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps22.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps22.png new file mode 100644 index 0000000000..38940e7b29 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps22.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps23.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps23.png new file mode 100644 index 0000000000..b8a54a910f Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps23.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps24.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps24.png new file mode 100644 index 0000000000..34ca8b7cf4 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps24.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps25.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps25.png new file mode 100644 index 0000000000..9b76774292 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps25.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps26.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps26.png new file mode 100644 index 0000000000..ebe662ee46 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps26.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps27.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps27.png new file mode 100644 index 0000000000..47786d7a6c Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps27.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps28.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps28.png new file mode 100644 index 0000000000..3df20b5fd1 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps28.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps29.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps29.png new file mode 100644 index 0000000000..27cf509714 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps29.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps3.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps3.png new file mode 100644 index 0000000000..0b7ce03faa Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps3.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps30.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps30.png new file mode 100644 index 0000000000..97966af9ae Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps30.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps31.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps31.png new file mode 100644 index 0000000000..c837fe2bba Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps31.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps32.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps32.png new file mode 100644 index 0000000000..b0703b54d5 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps32.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps33.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps33.png new file mode 100644 index 0000000000..67de1e4200 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps33.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps34.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps34.png new file mode 100644 index 0000000000..aaf541728f Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps34.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps35.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps35.png new file mode 100644 index 0000000000..6c6f6103d0 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps35.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps36.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps36.png new file mode 100644 index 0000000000..ab88d53086 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps36.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps37.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps37.png new file mode 100644 index 0000000000..d551ad29c6 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps37.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps38.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps38.png new file mode 100644 index 0000000000..43b976a7fa Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps38.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps39.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps39.png new file mode 100644 index 0000000000..d2edaad75a Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps39.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps4.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps4.png new file mode 100644 index 0000000000..100454680f Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps4.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps40.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps40.png new file mode 100644 index 0000000000..5e2dc16abe Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps40.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps5.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps5.png new file mode 100644 index 0000000000..d9c83fa4ff Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps5.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps6.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps6.png new file mode 100644 index 0000000000..20795264cb Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps6.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps7.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps7.png new file mode 100644 index 0000000000..50546d9217 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps7.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps8.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps8.png new file mode 100644 index 0000000000..10c5a5faa5 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps8.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps9.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps9.png new file mode 100644 index 0000000000..1bb8a68d99 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps9.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab1.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab1.png new file mode 100644 index 0000000000..cf10796b6d Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab1.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab10.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab10.png new file mode 100644 index 0000000000..1f4ad47e0c Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab10.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab11.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab11.png new file mode 100644 index 0000000000..98f715261d Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab11.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab12.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab12.png new file mode 100644 index 0000000000..5aae443410 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab12.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab13.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab13.png new file mode 100644 index 0000000000..41af12ec6c Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab13.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab14.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab14.png new file mode 100644 index 0000000000..75c1f07e0b Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab14.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab15.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab15.png new file mode 100644 index 0000000000..344114a56f Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab15.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab16.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab16.png new file mode 100644 index 0000000000..00785b00ed Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab16.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab17.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab17.png new file mode 100644 index 0000000000..f3aab7f7f4 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab17.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab18.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab18.png new file mode 100644 index 0000000000..a1fedd5b93 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab18.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab19.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab19.png new file mode 100644 index 0000000000..d134d3ed9d Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab19.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab2.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab2.png new file mode 100644 index 0000000000..d198d0a824 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab2.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab20.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab20.png new file mode 100644 index 0000000000..0c8fa7ba5b Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab20.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab21.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab21.png new file mode 100644 index 0000000000..e4ef708de3 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab21.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab3.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab3.png new file mode 100644 index 0000000000..86710f0691 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab3.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab4.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab4.png new file mode 100644 index 0000000000..210a4dc56e Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab4.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab5.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab5.png new file mode 100644 index 0000000000..7dcbcd2ff6 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab5.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab6.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab6.png new file mode 100644 index 0000000000..b4fd9638b8 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab6.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab7.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab7.png new file mode 100644 index 0000000000..becb383e4b Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab7.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab8.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab8.png new file mode 100644 index 0000000000..bb0a1ae96c Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab8.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab9.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab9.png new file mode 100644 index 0000000000..43c07fe24a Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/gitlab/GitLab9.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraCloudIntegrationCreation.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraCloudIntegrationCreation.png new file mode 100644 index 0000000000..3567c1de94 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraCloudIntegrationCreation.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer1.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer1.png new file mode 100644 index 0000000000..bbf3e52e10 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer1.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer10.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer10.png new file mode 100644 index 0000000000..8c109a59da Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer10.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer11.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer11.png new file mode 100644 index 0000000000..7ad36ab912 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer11.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer12.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer12.png new file mode 100644 index 0000000000..ae145073ff Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer12.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer13.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer13.png new file mode 100644 index 0000000000..d082c11d6f Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer13.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer14.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer14.png new file mode 100644 index 0000000000..23f5a804b6 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer14.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer15.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer15.png new file mode 100644 index 0000000000..8a709abb25 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer15.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer16.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer16.png new file mode 100644 index 0000000000..9748ce4bfc Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer16.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer17.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer17.png new file mode 100644 index 0000000000..e935c4df29 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer17.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer18.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer18.png new file mode 100644 index 0000000000..a50eceaf9a Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer18.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer19.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer19.png new file mode 100644 index 0000000000..01522049ef Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer19.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer2.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer2.png new file mode 100644 index 0000000000..1f5cbdcbbf Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer2.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer20.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer20.png new file mode 100644 index 0000000000..3d9ed9b37b Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer20.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer3.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer3.png new file mode 100644 index 0000000000..b11eff4f81 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer3.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer4.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer4.png new file mode 100644 index 0000000000..5cffdbb3e0 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer4.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer5.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer5.png new file mode 100644 index 0000000000..6663774636 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer5.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer6.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer6.png new file mode 100644 index 0000000000..49c2d65f53 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer6.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer7.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer7.png new file mode 100644 index 0000000000..6e6726ba97 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer7.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer8.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer8.png new file mode 100644 index 0000000000..aed56411d3 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer8.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer9.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer9.png new file mode 100644 index 0000000000..20a574240a Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/JiraServer9.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/LinkIssueJiraCloud.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/LinkIssueJiraCloud.png new file mode 100644 index 0000000000..6fa17cdbdd Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/LinkIssueJiraCloud.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/PostIssueJiraCloud.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/PostIssueJiraCloud.png new file mode 100644 index 0000000000..1a8f60661f Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/jira/PostIssueJiraCloud.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday1.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday1.png new file mode 100644 index 0000000000..8e6fee981a Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday1.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday10.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday10.png new file mode 100644 index 0000000000..9589401086 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday10.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday11.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday11.png new file mode 100644 index 0000000000..d888b325dc Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday11.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday12.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday12.png new file mode 100644 index 0000000000..14410d59a6 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday12.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday13.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday13.png new file mode 100644 index 0000000000..bf88a83828 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday13.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday14.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday14.png new file mode 100644 index 0000000000..c8d14d03fa Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday14.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday15.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday15.png new file mode 100644 index 0000000000..63ecf7d212 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday15.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday16.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday16.png new file mode 100644 index 0000000000..578d11f28d Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday16.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday17.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday17.png new file mode 100644 index 0000000000..6b41253f07 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday17.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday18.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday18.png new file mode 100644 index 0000000000..3ff896b948 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday18.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday19.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday19.png new file mode 100644 index 0000000000..495692d680 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday19.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday2.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday2.png new file mode 100644 index 0000000000..8d558223cd Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday2.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday20.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday20.png new file mode 100644 index 0000000000..b8e076f34b Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday20.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday3.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday3.png new file mode 100644 index 0000000000..91ef9476f9 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday3.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday4.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday4.png new file mode 100644 index 0000000000..781f2212eb Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday4.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday5.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday5.png new file mode 100644 index 0000000000..adc159ff62 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday5.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday6.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday6.png new file mode 100644 index 0000000000..0962882f66 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday6.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday7.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday7.png new file mode 100644 index 0000000000..f1fdc68f2a Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday7.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday8.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday8.png new file mode 100644 index 0000000000..ecc4b11deb Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday8.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday9.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday9.png new file mode 100644 index 0000000000..63b7547237 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/monday/Monday9.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/rally/LinkIssueRally.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/rally/LinkIssueRally.png new file mode 100644 index 0000000000..2eee2504f5 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/rally/LinkIssueRally.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/img/rally/PostIssueRally.png b/versioned_docs/version-26.1/plugins/bug-tracking/img/rally/PostIssueRally.png new file mode 100644 index 0000000000..098c33c235 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/bug-tracking/img/rally/PostIssueRally.png differ diff --git a/versioned_docs/version-26.1/plugins/bug-tracking/index.md b/versioned_docs/version-26.1/plugins/bug-tracking/index.md new file mode 100644 index 0000000000..e5f26a106e --- /dev/null +++ b/versioned_docs/version-26.1/plugins/bug-tracking/index.md @@ -0,0 +1,20 @@ +--- +sidebar_label: Bug tracking +description: Integrate Jira, Azure DevOps, GitLab, Monday, and Rally to link, post, and sync issues from ReportPortal for faster defect triage and clearer ownership. +--- + +# Bug tracking + +Our bug tracking plugins are useful for projects that already use one of the following systems: **Jira Server**, **Jira Cloud**, **Azure DevOps**, **GitLab**, **Monday**, or **Rally**. + +They allow you to post issues, link and unlink them, and get updates on their statuses in a simple and efficient way. + +These plugins streamline communication between developers, testers, and project managers by automating the flow of data between systems. Instead of manually copying issue details from one platform to another, the plugins keep everything in sync and up to date in real time. + +They also improve visibility across teams, making it easier to see the status of an issue, and who's working on it. + +No matter which bug tracking system you use on your project, our plugins help you stay connected, keep your data synchronized, and make sure no issue is missed. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.1/plugins/import/JUnit.mdx b/versioned_docs/version-26.1/plugins/import/JUnit.mdx new file mode 100644 index 0000000000..f28621257f --- /dev/null +++ b/versioned_docs/version-26.1/plugins/import/JUnit.mdx @@ -0,0 +1,113 @@ +--- +sidebar_position: 13 +sidebar_label: JUnit +description: Easily import JUnit test results into ReportPortal via UI or API, enabling streamlined test analysis and enhanced reporting capabilities. +--- + +# JUnit + +The JUnit plugin is essential for importing JUnit tests into ReportPortal. + +The JUnit plugin is pre-installed automatically. However, if for any reason you have removed it, you can upload it again. + +## Upload plugin + +1. Log in to ReportPortal as administrator. + +2. Go to Administrate -> Plugins section. + +3. Click ‘Upload’ button at the top of the page. + +4. Add [.jar file](https://github.com/reportportal/plugin-import-junit/packages) and click ‘Upload’ button. + + + +## Launch import via UI with JUnit plugin + +:::important +JUnit plugin should be enabled. +::: + +1. Log in to ReportPortal. + +2. Go to the Launches page. + +3. Click ‘Import’ button. + +4. Select ‘JUnit’ in the ‘Report type’ dropdown on the ‘Import launch’ modal window. + +5. Click the drug-and-drop area to add .xml or .zip file under 32MB. + +6. Click ‘Import’ button and then ‘OK’ button on the ‘Import launch’ modal window. + + + + + +:::note +Make sure to select JUnit file for the 'JUnit' Report type.
+If you attempt to upload a file of any other agent for the 'JUnit' Report type, an error will occur. +::: + +If files from the zip archive have formats other than XML, the system will skip them. + +If the XML file is not in the JUnit structure, the system will interrupt the process of copying and mark the file in red. The reason is then shown on the tooltip when hovering the file in the pop-up window. + + + +## Launch import via API with JUnit plugin + +:::important +JUnit plugin should be enabled. +::: + +The endpoint ```POST /v1/plugin/{projectName}/junit/import``` allows importing a launch into the specified project using an XML or ZIP file. + +You can configure parameters (name, description, attributes) for the imported launch by specifying these values in your API request. + + + +There is the ability to read attributes and descriptions for Suite and Test level from XUnit reports while importing. + +**Description and attributes:** + +``` + + Lorem ipsum … + + +``` + + + + + + + + + +## Disable plugin + +1. Log in to ReportPortal as administrator. + +2. Go to Administrate -> Plugins section -> Import Launches tab. + +3. Find JUnit plugin and click on it. + +4. Click toggle OFF. + + + +## Uninstall plugin + +1. Log in to ReportPortal as administrator. + +2. Go to Administrate -> Plugins section -> Import Launches tab. + +3. Find JUnit plugin and click on it. + +4. Click ‘Uninstall’ button and confirm your choice. + + + +Following these steps, you can easily import JUnit test results into ReportPortal for further analysis and enhanced test automation reporting capabilities. diff --git a/versioned_docs/version-26.1/plugins/import/RobotFramework.mdx b/versioned_docs/version-26.1/plugins/import/RobotFramework.mdx new file mode 100644 index 0000000000..45f83066ab --- /dev/null +++ b/versioned_docs/version-26.1/plugins/import/RobotFramework.mdx @@ -0,0 +1,114 @@ +--- +sidebar_position: 14 +sidebar_label: RobotFramework +description: Import RobotFramework test results into ReportPortal for comprehensive test execution reporting integration and analysis. +--- + +# RobotFramework + +The RobotFramework plugin is essential for integrating RobotFramework test results into ReportPortal. + +To install the RobotFramework plugin, see [Upload plugin](/plugins/ManagePlugins#upload-plugin) section. + +## Upload plugin + +1. Log in to ReportPortal as administrator. + +2. Go to Administrate -> Plugins section. + +3. Click ‘Upload’ button at the top of the page. + +4. Add [.jar file](https://github.com/reportportal/plugin-import-robot/packages) and click ‘Upload’ button. + + + +## Launch import via UI with RobotFramework plugin + +:::important +RobotFramework plugin should be enabled. +::: + +1. Log in to ReportPortal. + +2. Go to the Launches page. + +3. Click ‘Import’ button. + +4. Select ‘RobotFramework’ in the ‘Report Type’ dropdown on the ‘Import launch’ modal window. + +5. Click the drug-and-drop area to add .xml or .zip file under 32MB. + +6. Click ‘Import’ button and then ‘OK’ button on the ‘Import launch’ modal window. + + + + + +:::note +Make sure to select RobotFramework file for the 'RobotFramework' Report type.
+If you attempt to upload a file of any other agent for the 'RobotFramework' Report type, an error will occur. +::: + +If files from the zip archive have formats other than XML, the system will skip them. + +If the XML file is not in the RobotFramework structure, the system will interrupt the process of copying and mark the file in red. The reason is then shown on the tooltip when hovering the file in the pop-up window. + + + +## Launch import via API with RobotFramework plugin + +:::important +RobotFramework plugin should be enabled. +::: + +The endpoint ```POST /v1/plugin/{projectName}/RobotFramework/import``` allows importing a launch into the specified project using XML file or ZIP archive with the report file. + +You can configure parameters (name, description, attributes) for the imported launch by specifying these values in your API request. + + + +There is the ability to add description for the Suite level and attributes and descriptions for the Test level while importing RobotFramework XML report. + +**Description:** + +```Example of setting test tags in runtime``` + +**Attributes:** + +```dynamic_tag``` + + + + + + + + + + + +## Disable plugin + +1. Log in to ReportPortal as administrator. + +2. Go to Administrate -> Plugins section -> Import Launches tab. + +3. Find RobotFramework plugin and click on it. + +4. Click toggle OFF. + + + +## Uninstall plugin + +1. Log in to ReportPortal as administrator. + +2. Go to Administrate -> Plugins section -> Import Launches tab. + +3. Find RobotFramework plugin and click on it. + +4. Click ‘Uninstall’ button and confirm your choice. + + + +Therefore, by following these step-by-step guidelines, you can import RobotFramework test results into ReportPortal for effective test failure analysis. diff --git a/versioned_docs/version-26.1/plugins/import/_category_.json b/versioned_docs/version-26.1/plugins/import/_category_.json new file mode 100644 index 0000000000..ba077a8010 --- /dev/null +++ b/versioned_docs/version-26.1/plugins/import/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Import", + "position": "5", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.1/plugins/import/img/junit/JUnit1.png b/versioned_docs/version-26.1/plugins/import/img/junit/JUnit1.png new file mode 100644 index 0000000000..83c27b0d44 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/import/img/junit/JUnit1.png differ diff --git a/versioned_docs/version-26.1/plugins/import/img/junit/JUnit2.png b/versioned_docs/version-26.1/plugins/import/img/junit/JUnit2.png new file mode 100644 index 0000000000..830b80a376 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/import/img/junit/JUnit2.png differ diff --git a/versioned_docs/version-26.1/plugins/import/img/junit/JUnit3.png b/versioned_docs/version-26.1/plugins/import/img/junit/JUnit3.png new file mode 100644 index 0000000000..fa8f40b26a Binary files /dev/null and b/versioned_docs/version-26.1/plugins/import/img/junit/JUnit3.png differ diff --git a/versioned_docs/version-26.1/plugins/import/img/junit/JUnit4.png b/versioned_docs/version-26.1/plugins/import/img/junit/JUnit4.png new file mode 100644 index 0000000000..1f60ee2bb7 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/import/img/junit/JUnit4.png differ diff --git a/versioned_docs/version-26.1/plugins/import/img/junit/JUnit5.png b/versioned_docs/version-26.1/plugins/import/img/junit/JUnit5.png new file mode 100644 index 0000000000..e482784514 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/import/img/junit/JUnit5.png differ diff --git a/versioned_docs/version-26.1/plugins/import/img/junit/JUnit6.png b/versioned_docs/version-26.1/plugins/import/img/junit/JUnit6.png new file mode 100644 index 0000000000..5f81984826 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/import/img/junit/JUnit6.png differ diff --git a/versioned_docs/version-26.1/plugins/import/img/junit/JUnit7.png b/versioned_docs/version-26.1/plugins/import/img/junit/JUnit7.png new file mode 100644 index 0000000000..85e9078df0 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/import/img/junit/JUnit7.png differ diff --git a/versioned_docs/version-26.1/plugins/import/img/junit/JUnit8.png b/versioned_docs/version-26.1/plugins/import/img/junit/JUnit8.png new file mode 100644 index 0000000000..dacaf84f4f Binary files /dev/null and b/versioned_docs/version-26.1/plugins/import/img/junit/JUnit8.png differ diff --git a/versioned_docs/version-26.1/plugins/import/img/junit/JUnit9.png b/versioned_docs/version-26.1/plugins/import/img/junit/JUnit9.png new file mode 100644 index 0000000000..f456d3fd37 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/import/img/junit/JUnit9.png differ diff --git a/versioned_docs/version-26.1/plugins/import/img/robot-framework/RobotFramework1.png b/versioned_docs/version-26.1/plugins/import/img/robot-framework/RobotFramework1.png new file mode 100644 index 0000000000..973bba33a8 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/import/img/robot-framework/RobotFramework1.png differ diff --git a/versioned_docs/version-26.1/plugins/import/img/robot-framework/RobotFramework10.png b/versioned_docs/version-26.1/plugins/import/img/robot-framework/RobotFramework10.png new file mode 100644 index 0000000000..0a0d284d95 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/import/img/robot-framework/RobotFramework10.png differ diff --git a/versioned_docs/version-26.1/plugins/import/img/robot-framework/RobotFramework2.png b/versioned_docs/version-26.1/plugins/import/img/robot-framework/RobotFramework2.png new file mode 100644 index 0000000000..441269c69f Binary files /dev/null and b/versioned_docs/version-26.1/plugins/import/img/robot-framework/RobotFramework2.png differ diff --git a/versioned_docs/version-26.1/plugins/import/img/robot-framework/RobotFramework3.png b/versioned_docs/version-26.1/plugins/import/img/robot-framework/RobotFramework3.png new file mode 100644 index 0000000000..3145920b76 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/import/img/robot-framework/RobotFramework3.png differ diff --git a/versioned_docs/version-26.1/plugins/import/img/robot-framework/RobotFramework4.png b/versioned_docs/version-26.1/plugins/import/img/robot-framework/RobotFramework4.png new file mode 100644 index 0000000000..4040272360 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/import/img/robot-framework/RobotFramework4.png differ diff --git a/versioned_docs/version-26.1/plugins/import/img/robot-framework/RobotFramework5.png b/versioned_docs/version-26.1/plugins/import/img/robot-framework/RobotFramework5.png new file mode 100644 index 0000000000..aaba73f107 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/import/img/robot-framework/RobotFramework5.png differ diff --git a/versioned_docs/version-26.1/plugins/import/img/robot-framework/RobotFramework6.png b/versioned_docs/version-26.1/plugins/import/img/robot-framework/RobotFramework6.png new file mode 100644 index 0000000000..53b7766dda Binary files /dev/null and b/versioned_docs/version-26.1/plugins/import/img/robot-framework/RobotFramework6.png differ diff --git a/versioned_docs/version-26.1/plugins/import/img/robot-framework/RobotFramework7.png b/versioned_docs/version-26.1/plugins/import/img/robot-framework/RobotFramework7.png new file mode 100644 index 0000000000..67bc35a2f3 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/import/img/robot-framework/RobotFramework7.png differ diff --git a/versioned_docs/version-26.1/plugins/import/img/robot-framework/RobotFramework8.png b/versioned_docs/version-26.1/plugins/import/img/robot-framework/RobotFramework8.png new file mode 100644 index 0000000000..75696b1c2e Binary files /dev/null and b/versioned_docs/version-26.1/plugins/import/img/robot-framework/RobotFramework8.png differ diff --git a/versioned_docs/version-26.1/plugins/import/img/robot-framework/RobotFramework9.png b/versioned_docs/version-26.1/plugins/import/img/robot-framework/RobotFramework9.png new file mode 100644 index 0000000000..b9bf56fff3 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/import/img/robot-framework/RobotFramework9.png differ diff --git a/versioned_docs/version-26.1/plugins/import/index.md b/versioned_docs/version-26.1/plugins/import/index.md new file mode 100644 index 0000000000..ddaa6ea4f3 --- /dev/null +++ b/versioned_docs/version-26.1/plugins/import/index.md @@ -0,0 +1,25 @@ +--- +sidebar_label: Import +description: Import JUnit and RobotFramework results to centralize analysis in ReportPortal. Simplify reporting, reduce manual work, and keep your automation test report current. +--- + +# Import + +Import plugins are designed to help you bring test results from testing frameworks into your reporting system quickly and easily. They support popular formats like **JUnit XML** and **Robot Framework** output files, making it simple to centralize your test data. + +This feature can be useful if: + +* there is no agent available for your test framework +* your CI/CD system cannot send requests to the ReportPortal instance for some reason + +You can **import CI/CD results into ReportPortal** both manually or via API calls. + +With the **JUnit XML** import plugin, you can import results from unit and integration tests written in Java or other languages that use the JUnit XML format. The plugin reads the test report files and saves it as a launch in ReportPortal. + +The **RobotFramework** import plugin works in a similar way. You can upload RobotFramework output files, and the plugin will automatically extract the test results and make them available for reporting and analysis. + +These import plugins save time, reduce manual effort, and make it easier to track results from different sources in one place. Whether you’re using JUnit XML, RobotFramework, or both, the import plugins help you stay organized and keep your test data up to date. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.1/plugins/index.md b/versioned_docs/version-26.1/plugins/index.md new file mode 100644 index 0000000000..636ea535e6 --- /dev/null +++ b/versioned_docs/version-26.1/plugins/index.md @@ -0,0 +1,24 @@ +--- +title: Plugins +description: Explore seamless connections to Jira Server, Jira Cloud, E-mail server and other plugins for enhanced test reporting tool. +--- + +# Plugins + +The **Plugins** section provides comprehensive guides for integrating a variety of plugins with ReportPortal, grouped into four main categories: Bug Tracking Systems plugins, Notification plugins, Authorization plugins, Import plugins, plus integration with Sauce Labs. These plugins enhance and customize the ReportPortal experience to meet the specific needs of your project, helping to streamline test workflows and reporting processes. + +**Bug Tracking Systems plugins** allow you to automatically create tasks for detected defects directly from ReportPortal. This eliminates the need to manually log issues in a bug tracker, enabling teams to resolve defects faster and ensuring a smooth, continuous workflow. + +**Notification plugins** enable integration with popular notification services such as Slack, Telegram, and E-mail. With these plugins, you can receive instant updates on test results and critical events, helping teams stay connected and respond to issues promptly. + +**Authorization plugins** provide flexible access control and security management within our qa metrics dashboard. This section includes instructions on integrating with various authorization systems, ensuring users have the correct access levels while protecting sensitive project data. + +**Import plugins** make it possible to upload test data from different sources directly into ReportPortal, simplifying data migration and consolidating test reports from multiple tools. These plugins are invaluable for teams using diverse testing platforms that need a centralized reporting solution. + +Additionally, the **Sauce Labs plugin** allows for seamless integration with this cloud-based testing platform. Integrating Sauce Labs with ReportPortal expands your reporting capabilities and provides comprehensive insights into tests executed in the cloud. + +Using these plugins, you can tailor ReportPortal to your specific workflows, boosting testing efficiency and enhancing team collaboration. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.1/plugins/notifications/EmailServer.mdx b/versioned_docs/version-26.1/plugins/notifications/EmailServer.mdx new file mode 100644 index 0000000000..d100d1b6d5 --- /dev/null +++ b/versioned_docs/version-26.1/plugins/notifications/EmailServer.mdx @@ -0,0 +1,191 @@ +--- +sidebar_position: 10 +sidebar_label: Email Server +description: Configure email server settings for automated notifications in ReportPortal. +--- + +# Email Server + +Email Server plugin is available in ReportPortal on the Plugins page. + +You don't need to download. It is already available in ReportPortal on the Plugins page. + +## Add Email Server integration + +You can integrate our centralized test automation tool with an Email Server via the SMTP protocol. + +This integration enables you to perform functions such as: + +* inviting new users to the project +* configuring notification rules on launch finish +* receiving notifications about account deletion, creation of project Email Server integration, completion of index generation for the analyzer + +:::important +A user with the account role Administrator can configure email integration for the entire instance or on a per-project basis.
+A user with the account role Project Manager can configure email integration only for projects where they are assigned as the Project Manager. +::: + +## Global Email Server integration + +To configure the SMTP server for the whole instance: + +1. Log in as ADMIN. + +2. Go to Administrate > Plugins. + +3. Click on Email Server plugin panel. + +4. Click on "Add integration" button. + + + +5. Fill in required parameters for integration. + +6. Click "Create" button. + +```javascript +`Host`: (required) +`Protocol`: (predefined) +`From name`: (optional) +`From Email`: (required) +`Port`: (required) +`Authorization`: OFF/ON (dropdown) +`Username`: (required) +`Password`: (required) +`TLS` or `SSL`: (checkbox) +``` + +:::note +You can configure an Email Server using an email service provider (such as SendGrid) and enter a username in the `Username` field without including the @ symbol or undergoing additional validation. +::: + +Example of SMTP server configuration for Gmail email server (detailed info could be found [here](https://support.google.com/a/answer/176600?hl=en)). + +```javascript +`Host`: smtp.gmail.com +`Protocol`: SMTP +`From name`: reportportal +`From Email`: reportportal1@gmail.com +`Port`: 587 +`Authorization`: ON +`Username`: reportportal1 +`Password`: +`TLS`: checkbox should be checked +``` + + + +After Email Server integration is added, the configuration will apply to all projects within the instance. + +## Project Email Server integration + +If email integration has not been added to the project, or if a Project Manager or Administrator wants to specify unique configurations for a specific project, they can configure the Email Server in the project settings. + +To configure an SMTP server for a single project instance: + +1. Log in as an ADMIN or Project Manager. + +2. Go to Project Settings > Integrations. + +3. Click on the Email Server integration panel. + +4. Click on "Add Project integration" button. + + + +5. Fill in required parameters for integration. + +6. Click "Create" button. + +```javascript +`Host`: (required) +`Protocol`: (predefined) +`From name`: (optional) +`From Email`: (required) +`Port`: (required) +`Authorization`: OFF/ON (dropdown) +`Username`: (required) +`Password`: (required) +`TLS` or `SSL`: (checkbox) +``` + +Example of SMTP server configuration for Gmail email server (detailed info could be found [here](https://support.google.com/a/answer/176600?hl=en)): + +```javascript +`Host`: smtp.gmail.com +`Protocol`: SMTP +`From name`: reportportal +`From Email`: reportportal1@gmail.com +`Port`: 587 +`Authorization`: ON +`Username`: reportportal1 +`Password`: +`TLS`: checkbox should be checked +``` + + + + +## Create Email notification rule + +1. Go to the Project settings -> [Notifications](/configuration/ProjectSettings/#email-notifications). + +2. Choose Email Notification Group. + +3. Click ‘Create Rule’ button. + +4. Fill the form: + +**Rule name** – from 1 to 55 characters, mandatory field + +**Recipients** - optional field, user name on the project or valid email + +**Launch owner** - optional checkbox, who launched - that receives + +:::note +When the `Launch owner` checkbox is unchecked, you must fill in the `Recipients` field. +::: + +**In case** – optional field, dropdown with the options: + +* Always – notification will be sent in any case. +* 10% of items have issues – notification will be sent, if more than 10% of items have issues. +* 20% of items have issues – notification will be sent, if more than 20% of items have issues. +* 50% of items have issues – notification will be sent, if more than 50% of items have issues. +* Launch has issues – notification will be sent, if at least 1 item has issues +* Launch has ‘To Investigate’ items – notification will be sent, if at least 1 item has ‘To Investigate’ + +**Launch names** – optional field + +You can select only existing launch name. The field allows multi select. + +**Attributes** – optional checkbox + +When the ‘Attributes’ checkbox is checked, you can provide key/value for attributes and select the necessary radio button: + +* ‘All attributes should match’ +* ‘Any attribute should match’ + +5. Click on ‘Create’ button. + + + +## Disable Email notifications + +1. Go to the Project settings -> Notifications. + +2. Turn OFF for Email. + + + +## Disable plugin + +1. Log in to ReportPortal as administrator. + +2. Go to Administrate -> Plugins section -> Notifications tab. + +3. Find Email plugin and click on it. + +4. Turn OFF. + + diff --git a/versioned_docs/version-26.1/plugins/notifications/Slack.mdx b/versioned_docs/version-26.1/plugins/notifications/Slack.mdx new file mode 100644 index 0000000000..c5e59e3037 --- /dev/null +++ b/versioned_docs/version-26.1/plugins/notifications/Slack.mdx @@ -0,0 +1,173 @@ +--- +sidebar_position: 11 +sidebar_label: Slack +description: Configure Slack notifications for real-time test execution reporting updates in ReportPortal. +--- + +# Slack + +Be informed about launch finish in real time in your Slack channel. + +To download the Slack plugin, see [Upload plugin](/plugins/ManagePlugins#upload-plugin) section. + +## Configuration on Slack side + +Create Slack workspace and channel + +1. Log in to your Slack account. + +2. Create Slack workspace and a channel in the workspace as shown on the screenshots below. + + + + + + + + + + + +### Create an application in Slack + +1. Go to https://api.slack.com/ to create an application in Slack. + +2. Click 'Your apps'. + +3. Click 'Create an App'. + + + +4. Select 'From scratch'. + + + +5. Input the app name and select the created workspace → click 'Create App'. + + + +6. Choose 'Incoming webhooks' in the left menu and verify that the webhooks are activated (toggle above). + + + +7. Go to the bottom of the page and click 'Add new Webhook to Workspace'. + + + +8. You will be redirected to the page where you need to choose from available channels in your workspace where you want to post notifications. + + + +9. Select a channel and click 'Allow' button. + + + +10. Your webhook is created and can be used to create notification rules in RP. + + + + + +## Configuration on ReportPortal side + +### Upload plugin + +1. Log in to ReportPortal as administrator. + +2. Go to Administrate -> Plugins section. + +3. Click ‘Upload’ button at the top of the page. + +4. Add Slack plugin [.jar file](https://github.com/reportportal/plugin-slack/packages) and click ‘Upload’ button. + + + +### Create notification rule + +1. Go to the Project settings -> [Notifications](/configuration/ProjectSettings#slack-notifications). + +2. Choose Slack Notification Group. + +3. Click ‘Create Rule’ button. + +4. Fill the form: + +**Rule name** – from 1 to 55 characters, mandatory field + +**Webhook URL** – mandatory field (it is configured on the [Slack side](/plugins/notifications/Slack#create-an-application-in-slack)) + +**In case** – optional field, dropdown with the options: + +* Always – notification will be sent in any case. +* 10% of items have issues – notification will be sent, if more than 10% of items have issues. +* 20% of items have issues – notification will be sent, if more than 20% of items have issues. +* 50% of items have issues – notification will be sent, if more than 50% of items have issues. +* Launch has issues – notification will be sent, if at least 1 item has issues +* Launch has ‘To Investigate’ items – notification will be sent, if at least 1 item has ‘To Investigate’ + +**Launch names** – optional field + +You can select only existing launch name. The field allows multi select. + +**Attributes** – optional checkbox + +When the ‘Attributes’ checkbox is checked, you can provide key/value for attributes and select the necessary radio button: + +* ‘All attributes should match’ +* ‘Any attribute should match’ + +5. Click on ‘Create’ button. + + + + + +### How to receive notifications in Slack + +When you have the plugin installed and Slack notification rules configured, you can start receiving notifications to the channel configured. For this you need to report a launch which matches the notification rule and after the launch is finished you will receive a corresponding message in the Slack channel with some details on the Launch results. Below you can find examples of how Passed and Failed launch notifications can look: + +**Passed Launch** + + + + + +**Failed Launch** + + + + + +### Disable Slack notifications + +1. Go to the Project settings -> Notifications. + +2. Turn OFF for Slack. + + + +### Disable plugin + +1. Log in to ReportPortal as administrator. + +2. Go to Administrate -> Plugins section -> Notifications tab. + +3. Find Slack plugin and click on it. + +4. Turn OFF. + + + +### Uninstall plugin + +1. Log in to ReportPortal as administrator. + +2. Go to Administrate -> Plugins section -> Notifications tab. + +3. Find Slack plugin and click on it. + +4. Click ‘Uninstall’ button and confirm your choice. + + + +Thanks to Slack plugin, you can ensure that everyone stays informed about project milestones. This real-time update mechanism helps to reduce the lag in communication, allowing teams to respond promptly to any issues. diff --git a/versioned_docs/version-26.1/plugins/notifications/Telegram.mdx b/versioned_docs/version-26.1/plugins/notifications/Telegram.mdx new file mode 100644 index 0000000000..0976c4f468 --- /dev/null +++ b/versioned_docs/version-26.1/plugins/notifications/Telegram.mdx @@ -0,0 +1,167 @@ +--- +sidebar_position: 12 +sidebar_label: Telegram +description: Integrate Telegram with ReportPortal to receive real-time test updates, failure alerts, and launch summaries directly in your Telegram group. +--- + +# Telegram + +Get real-time updates on the launch completion in your Telegram. + +With the Telegram plugin, everyone instantly knows about important test automation updates. This helps avoid delays in communication and allows teams to respond quickly to issues. + +To download the Telegram plugin, see [Upload plugin](/plugins/ManagePlugins#upload-plugin) section. + +## Configuration on Telegram side + +1. Create your chatbot. + +For that, run message @BotFather on Telegram to register your bot and receive its authentication token (Bot Api Key for notification rule). + + + +2. Run the chatbot. + + + +3. Create a Group in Telegram. + + + + + +4. Add the chatbot to your group. + + + +5. Copy chat ID + +You can find the chat ID in two ways: + +* In the URL of the web version of Telegram + + + +* In the Telegram app under Advanced settings. + + + + + + + + + + + +:::important +Chat id can be used to create notification rules in RP. +::: + +## Configuration on ReportPortal side + +### Upload plugin + +1. Log in to ReportPortal as administrator. + +2. Go to Administrate -> Plugins section. + +3. Click ‘Upload’ button at the top of the page. + +4. Add Telegram plugin [.jar file](https://github.com/reportportal/plugin-telegram/packages/) and click ‘Upload’ button. + + + +### Create notification rule + +1. Go to the Project settings -> [Notifications](/configuration/ProjectSettings#telegram-notifications). + +2. Choose Telegram Notifications Group. + +3. Click ‘Create Rule’ button. + +4. Fill the form: + +**Rule name** – from 1 to 55 characters, mandatory field + +**Chat id** – mandatory field, copied from group info in Telegram (step 5 of [configuration on Telegram side](/plugins/notifications/Telegram#configuration-on-telegram-side)) + +:::important +Add ‘-’ before the chat id. +::: + +**Bot Api Key** - mandatory field, copied from the [step 1](/plugins/notifications/Telegram#configuration-on-telegram-side) + +**In case** – optional field, dropdown with the options: + +* Always – notification will be sent in any case. +* 10% of items have issues – notification will be sent, if more than 10% of items have issues. +* 20% of items have issues – notification will be sent, if more than 20% of items have issues. +* 50% of items have issues – notification will be sent, if more than 50% of items have issues. +* Launch has issues – notification will be sent, if at least 1 item has issues +* Launch has ‘To Investigate’ items – notification will be sent, if at least 1 item has ‘To Investigate’ + +**Launch names** – optional field + +You can select only existing launch name. The field allows multi-selection. + +**Attributes** – optional checkbox + +When the ‘Attributes’ checkbox is checked, you can provide key/value for attributes and select the necessary radio button: + +* ‘All attributes should match’ +* ‘Any attribute should match’ + +5. Click on ‘Create’ button. + + + +### How to receive notifications in Telegram + +When you have the plugin installed and Telegram notification rules configured, you can start receiving notifications to the channel configured. For this you need to report a launch which matches the notification rule and after the launch is finished you will receive a corresponding message in the Telegram channel with some details on the Launch results. + + + +### Disable Telegram notifications + +1. Log in to ReportPortal as administrator. + +2. Go to Administrate -> Plugins -> Notifications tab. + +3. Turn OFF for Telegram. + + + +### Disable Telegram rules + +1. Go to the Project settings -> Notifications. + +2. Find Telegram Notifications Group. + +3. Turn OFF for the rule. + + + +### Disable plugin + +1. Log in to ReportPortal as administrator. + +2. Go to Administrate -> Plugins section -> Notifications tab. + +3. Find Telegram plugin. + +4. Turn OFF. + + + +### Uninstall plugin + +1. Log in to ReportPortal as administrator. + +2. Go to Administrate -> Plugins section -> Notifications tab. + +3. Find Telegram plugin and click on it. + +4. Click ‘Uninstall’ button and confirm your choice. + + diff --git a/versioned_docs/version-26.1/plugins/notifications/_category_.json b/versioned_docs/version-26.1/plugins/notifications/_category_.json new file mode 100644 index 0000000000..ba1dada343 --- /dev/null +++ b/versioned_docs/version-26.1/plugins/notifications/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Notifications", + "position": "4", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.1/plugins/notifications/img/email-server/EmailDisablePlugin.png b/versioned_docs/version-26.1/plugins/notifications/img/email-server/EmailDisablePlugin.png new file mode 100644 index 0000000000..8c17b6822b Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/email-server/EmailDisablePlugin.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/email-server/EmailDisableRule.png b/versioned_docs/version-26.1/plugins/notifications/img/email-server/EmailDisableRule.png new file mode 100644 index 0000000000..7c74e006e4 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/email-server/EmailDisableRule.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/email-server/EmailNotificationRule.png b/versioned_docs/version-26.1/plugins/notifications/img/email-server/EmailNotificationRule.png new file mode 100644 index 0000000000..85de166b8b Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/email-server/EmailNotificationRule.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/email-server/EmailServer1.png b/versioned_docs/version-26.1/plugins/notifications/img/email-server/EmailServer1.png new file mode 100644 index 0000000000..3ecfca1aa3 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/email-server/EmailServer1.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/email-server/EmailServer2.png b/versioned_docs/version-26.1/plugins/notifications/img/email-server/EmailServer2.png new file mode 100644 index 0000000000..580217ff5a Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/email-server/EmailServer2.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/email-server/EmailServer3.png b/versioned_docs/version-26.1/plugins/notifications/img/email-server/EmailServer3.png new file mode 100644 index 0000000000..e5097e247d Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/email-server/EmailServer3.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/email-server/EmailServer4.png b/versioned_docs/version-26.1/plugins/notifications/img/email-server/EmailServer4.png new file mode 100644 index 0000000000..62e6ca911c Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/email-server/EmailServer4.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack1.png b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack1.png new file mode 100644 index 0000000000..c50e152857 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack1.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack10.png b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack10.png new file mode 100644 index 0000000000..8acbe04746 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack10.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack11.png b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack11.png new file mode 100644 index 0000000000..8dba588dc8 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack11.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack12.png b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack12.png new file mode 100644 index 0000000000..0297c6dbf8 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack12.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack13.png b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack13.png new file mode 100644 index 0000000000..c786c1a952 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack13.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack14.png b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack14.png new file mode 100644 index 0000000000..164cb22669 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack14.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack15.png b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack15.png new file mode 100644 index 0000000000..c702e6cfca Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack15.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack16.png b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack16.png new file mode 100644 index 0000000000..8f11a2f00d Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack16.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack17.png b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack17.png new file mode 100644 index 0000000000..09ef931f9a Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack17.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack18.png b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack18.png new file mode 100644 index 0000000000..bf751e2eaf Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack18.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack19.png b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack19.png new file mode 100644 index 0000000000..2d359f0ffb Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack19.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack2.png b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack2.png new file mode 100644 index 0000000000..007a683ce5 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack2.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack20.png b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack20.png new file mode 100644 index 0000000000..85d271b9cf Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack20.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack21.png b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack21.png new file mode 100644 index 0000000000..5333278965 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack21.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack22.png b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack22.png new file mode 100644 index 0000000000..f31d8b29e6 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack22.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack3.png b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack3.png new file mode 100644 index 0000000000..168ca1b659 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack3.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack4.png b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack4.png new file mode 100644 index 0000000000..cc80df3ebb Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack4.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack5.png b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack5.png new file mode 100644 index 0000000000..0fb842f95a Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack5.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack6.png b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack6.png new file mode 100644 index 0000000000..c58afae23c Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack6.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack7.png b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack7.png new file mode 100644 index 0000000000..0eea2bf94f Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack7.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack8.png b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack8.png new file mode 100644 index 0000000000..f09c6892a2 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack8.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack9.png b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack9.png new file mode 100644 index 0000000000..f4cc2a82dd Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/slack/Slack9.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram0.png b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram0.png new file mode 100644 index 0000000000..86145c09ef Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram0.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram1.png b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram1.png new file mode 100644 index 0000000000..4352198bba Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram1.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram10.png b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram10.png new file mode 100644 index 0000000000..168952b8d1 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram10.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram11.png b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram11.png new file mode 100644 index 0000000000..161dad0623 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram11.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram12.png b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram12.png new file mode 100644 index 0000000000..24f91c4194 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram12.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram13.png b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram13.png new file mode 100644 index 0000000000..15c6d86ec7 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram13.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram14.png b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram14.png new file mode 100644 index 0000000000..9384a7d860 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram14.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram15.png b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram15.png new file mode 100644 index 0000000000..d6d03ea084 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram15.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram16.png b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram16.png new file mode 100644 index 0000000000..431ce07b7b Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram16.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram17.png b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram17.png new file mode 100644 index 0000000000..014d80f98d Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram17.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram2.png b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram2.png new file mode 100644 index 0000000000..6c4b3372c7 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram2.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram3.png b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram3.png new file mode 100644 index 0000000000..240c033a20 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram3.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram4.png b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram4.png new file mode 100644 index 0000000000..e936c1646b Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram4.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram5.png b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram5.png new file mode 100644 index 0000000000..78f367eb32 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram5.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram6.png b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram6.png new file mode 100644 index 0000000000..62abef650e Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram6.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram7.png b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram7.png new file mode 100644 index 0000000000..334f758c64 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram7.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram8.png b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram8.png new file mode 100644 index 0000000000..2ddd5ae481 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram8.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram9.png b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram9.png new file mode 100644 index 0000000000..e5ae2aae38 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/notifications/img/telegram/Telegram9.png differ diff --git a/versioned_docs/version-26.1/plugins/notifications/index.md b/versioned_docs/version-26.1/plugins/notifications/index.md new file mode 100644 index 0000000000..fe19fc769c --- /dev/null +++ b/versioned_docs/version-26.1/plugins/notifications/index.md @@ -0,0 +1,18 @@ +--- +sidebar_label: Notifications +description: Configure notification plugins for Email, Slack, and Telegram in ReportPortal for real-time alerts. +--- + +# Notifications + +Notifications plugins help teams stay informed about test results and project updates by sending messages directly to your preferred communication channels. These plugins support integration with **Email server**, **Slack**, and **Telegram**, allowing you to receive timely updates without constantly checking dashboards. + +You can set up notifications to be sent to a specific email address, Slack channel, or Telegram group. Once configured, the plugin will monitor your test launches and send a message when a launch matches a defined notification rule. After the launch is completed, you’ll receive a message with key details about the results. + +This setup helps teams react quickly to issues, stay in sync, and reduce delays in communication. Whether you're working from your inbox, chatting in Slack, or managing a remote team via Telegram, these plugins make sure you get the information you need, right when you need it. + +Notifications plugins are easy to configure and work well for both small teams and large-scale projects that require fast feedback and reliable alerts. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.1/plugins/other/SauceLabs.mdx b/versioned_docs/version-26.1/plugins/other/SauceLabs.mdx new file mode 100644 index 0000000000..4016895be8 --- /dev/null +++ b/versioned_docs/version-26.1/plugins/other/SauceLabs.mdx @@ -0,0 +1,67 @@ +--- +sidebar_position: 9 +sidebar_label: Sauce Labs +description: Integrate Sauce Labs with ReportPortal to view test execution videos directly in your logs, enhancing test analysis and streamlining your QA workflow. +--- + +# Sauce Labs + +To install the Sauce Labs plugin, see [Upload plugin](/plugins/ManagePlugins#upload-plugin) section. + +## Add the Sauce Labs integration + +Configure the integration with Sauce Labs to watch a video of test executions in the our centralized test automation tool. + + +**Permissions:** + +- User with account role *ADMINISTRATOR* can configure the integration for the whole instance or per project. +- User with account role *PROJECT MANAGER* can configure the integration only on a project where they are assigned on as Project Manager. + +## Global Sauce Labs integration + +To configure Sauce Labs for the whole instance: + +1. Log in to ReportPortal as an ADMIN user. + +2. Open the list on the right of the user's image. + +3. Click the 'Administrative' link. + +4. Click 'Plugins' from the left-hand sidebar. + +5. Click the 'Sauce Labs' tab. + +6. Click 'Add integration'. + +7. The following fields should be present: + + ```javascript + `User name`: + `Access token`: + `Data center`: + ``` + +8. Confirm data in the form. + +After you've added the Sauce Labs integration, you can use the Sauce Labs in ReportPortal. + +## Project Sauce Labs integration + +If the plugin is configured on the global level, then all projects at this instance will use this configuration by default. + +However, you can unlink the integration from the global level and use a project level configuration instead. + +To unlink the integration, click 'Unlink & Setup Manually', then follow the on-screen instructions. + + + +## How to use the Sauce Labs integration + +Before using this feature, you should report test results to ReportPortal with the attribute: `SLID: XXXXXXXX`. + +Where: SLID = `Sauce Labs ID` and XXXXXXXX = `# of job in Sauce Labs` + +The `SLID: XXXXXXXX` attribute links the execution in ReportPortal and a job in Sauce Labs. If a test item has attribute `SLID: XXXXXXXX`, and there is a global or project integration with Sauce Labs, a user will be able to view a video from Sauce Labs for the appropriate job in ReportPortal on a log view. + + diff --git a/versioned_docs/version-26.1/plugins/other/_category_.json b/versioned_docs/version-26.1/plugins/other/_category_.json new file mode 100644 index 0000000000..48c8d96607 --- /dev/null +++ b/versioned_docs/version-26.1/plugins/other/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Other", + "position": "6", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.1/plugins/other/img/SauceLabsUnlinkGlobal.png b/versioned_docs/version-26.1/plugins/other/img/SauceLabsUnlinkGlobal.png new file mode 100644 index 0000000000..1a94b28658 Binary files /dev/null and b/versioned_docs/version-26.1/plugins/other/img/SauceLabsUnlinkGlobal.png differ diff --git a/versioned_docs/version-26.1/plugins/other/index.md b/versioned_docs/version-26.1/plugins/other/index.md new file mode 100644 index 0000000000..5f53949d0f --- /dev/null +++ b/versioned_docs/version-26.1/plugins/other/index.md @@ -0,0 +1,18 @@ +--- +sidebar_label: Other +description: The Other plugins section showcases add-ons that extend our test automation results dashboard. +--- + +# Other + +The Other Plugins section highlights extra plugins that make ReportPortal more flexible and powerful. + +The [Sauce Labs](/plugins/other/SauceLabs) plugin connects ReportPortal with Sauce Labs, a cloud service widely used for automated testing. Thanks to this integration, teams can keep all their results in one place while gaining more context about each test run. When a test is linked with a Sauce Labs job and the integration is enabled at either the global or project level, users can open the log view in ReportPortal and watch the actual video recording of the execution stored in Sauce Labs. Instead of switching between platforms, the video appears directly alongside the test logs, making it much easier to investigate issues, confirm behavior, and understand what happened during execution. + +The [Test Executions](/test-executions/) plugin introduces a refreshed approach to exploring and managing test results in ReportPortal. Instead of focusing on individual launches, it displays all test cases in a unified, easily searchable list. Users can apply multi-level filters, adjust the view to match their workflow, and analyze execution details with greater precision. This feature simplifies navigation across large datasets, enhances visibility into test progress, and supports more efficient decision-making during the testing process. + +The [Quality Gates](/26.1/quality-gates/) plugin automates quality control in continuous testing pipelines, helping teams accelerate release cycles and ensure product reliability. It allows users to define customizable quality rules directly in ReportPortal and automatically evaluates each CI/CD build against them. Once a test run is completed, ReportPortal sends instant feedback to the CI/CD system, indicating whether the build meets predefined criteria or should be stopped for review. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/docs/quality-gates/AssessmentOfTestResultsUsingQualityGates.mdx b/versioned_docs/version-26.1/quality-gates/AssessmentOfTestResultsUsingQualityGates.mdx similarity index 97% rename from docs/quality-gates/AssessmentOfTestResultsUsingQualityGates.mdx rename to versioned_docs/version-26.1/quality-gates/AssessmentOfTestResultsUsingQualityGates.mdx index 2e9ada6ea8..88fa5d7d6f 100644 --- a/docs/quality-gates/AssessmentOfTestResultsUsingQualityGates.mdx +++ b/versioned_docs/version-26.1/quality-gates/AssessmentOfTestResultsUsingQualityGates.mdx @@ -71,7 +71,7 @@ How is status calculated: * For "Amount of issues" rule: if a number of To Investigate issues in the analyzed launch is more than allowable To Investigate level * For "New Failure": if a baseline is not found in the system -If you get this status, you can proceed with launch analysis (or choose another baseline) and rerun Quality Gates. For that check the section [How to recalculate Quality Gates](/quality-gates/AssessmentOfTestResultsUsingQualityGates#how-to-recalculate-quality-gates). +If you get this status, you can proceed with launch analysis (or choose another baseline) and rerun Quality Gates. For that check the section [How to recalculate Quality Gates](/26.1/quality-gates/AssessmentOfTestResultsUsingQualityGates#how-to-recalculate-quality-gates). ### Timeout Specially for integration with CI\CD, Quality Gates has parameter ```Timeout```. If a launch whose status should be sent to a pipeline, gets UNDEFINED status, the system uses a value from ```Timeout```. Default ```Timeout``` equals to 2 hours. It means, that after 2 hours after launch finish, the system force recaluculats Quality Gate Status and defined status. diff --git a/docs/quality-gates/DeleteQualityGates.md b/versioned_docs/version-26.1/quality-gates/DeleteQualityGates.md similarity index 100% rename from docs/quality-gates/DeleteQualityGates.md rename to versioned_docs/version-26.1/quality-gates/DeleteQualityGates.md diff --git a/docs/quality-gates/HowToInstallQualityGates.md b/versioned_docs/version-26.1/quality-gates/HowToInstallQualityGates.md similarity index 100% rename from docs/quality-gates/HowToInstallQualityGates.md rename to versioned_docs/version-26.1/quality-gates/HowToInstallQualityGates.md diff --git a/docs/quality-gates/IntegrationWithCICD/IntegrationWithAzureDevOps.md b/versioned_docs/version-26.1/quality-gates/IntegrationWithCICD/IntegrationWithAzureDevOps.md similarity index 100% rename from docs/quality-gates/IntegrationWithCICD/IntegrationWithAzureDevOps.md rename to versioned_docs/version-26.1/quality-gates/IntegrationWithCICD/IntegrationWithAzureDevOps.md diff --git a/docs/quality-gates/IntegrationWithCICD/IntegrationWithBitrise.md b/versioned_docs/version-26.1/quality-gates/IntegrationWithCICD/IntegrationWithBitrise.md similarity index 100% rename from docs/quality-gates/IntegrationWithCICD/IntegrationWithBitrise.md rename to versioned_docs/version-26.1/quality-gates/IntegrationWithCICD/IntegrationWithBitrise.md diff --git a/docs/quality-gates/IntegrationWithCICD/IntegrationWithCircleCI.md b/versioned_docs/version-26.1/quality-gates/IntegrationWithCICD/IntegrationWithCircleCI.md similarity index 100% rename from docs/quality-gates/IntegrationWithCICD/IntegrationWithCircleCI.md rename to versioned_docs/version-26.1/quality-gates/IntegrationWithCICD/IntegrationWithCircleCI.md diff --git a/docs/quality-gates/IntegrationWithCICD/IntegrationWithGitHubActions.md b/versioned_docs/version-26.1/quality-gates/IntegrationWithCICD/IntegrationWithGitHubActions.md similarity index 99% rename from docs/quality-gates/IntegrationWithCICD/IntegrationWithGitHubActions.md rename to versioned_docs/version-26.1/quality-gates/IntegrationWithCICD/IntegrationWithGitHubActions.md index e6962502d8..781cabc8de 100644 --- a/docs/quality-gates/IntegrationWithCICD/IntegrationWithGitHubActions.md +++ b/versioned_docs/version-26.1/quality-gates/IntegrationWithCICD/IntegrationWithGitHubActions.md @@ -216,7 +216,7 @@ will cut it off from the output. Enterprise users can utilize our Quality Gates plugin to get more control over application-under-test quality. To enable and configure Quality Gates plugin on -ReportPortal, please, refer to [corresponding documentation](/quality-gates). +ReportPortal, please, refer to [corresponding documentation](/26.1/quality-gates). ReportPortal's Quality Gates plugin doesn't have native integration with GitHub Actions, so we need to use a custom approach here. One way is polling ReportPortal Launch info API for diff --git a/docs/quality-gates/IntegrationWithCICD/IntegrationWithGitLabCI.md b/versioned_docs/version-26.1/quality-gates/IntegrationWithCICD/IntegrationWithGitLabCI.md similarity index 99% rename from docs/quality-gates/IntegrationWithCICD/IntegrationWithGitLabCI.md rename to versioned_docs/version-26.1/quality-gates/IntegrationWithCICD/IntegrationWithGitLabCI.md index fe913b9fdc..066a72d8cb 100644 --- a/docs/quality-gates/IntegrationWithCICD/IntegrationWithGitLabCI.md +++ b/versioned_docs/version-26.1/quality-gates/IntegrationWithCICD/IntegrationWithGitLabCI.md @@ -276,7 +276,7 @@ variable name in the logs. Enterprise users can utilize our Quality Gates plugin to get more control over application-under-test quality. To enable and configure Quality Gates plugin on -ReportPortal, please, refer to [corresponding documentation](/quality-gates). +ReportPortal, please, refer to [corresponding documentation](/26.1/quality-gates). ReportPortal the Quality Gates plugin doesn't have native integration with GitLab, so we need to use a custom approach here. One way is polling ReportPortal Launch info API for diff --git a/docs/quality-gates/IntegrationWithCICD/IntegrationWithJenkins.mdx b/versioned_docs/version-26.1/quality-gates/IntegrationWithCICD/IntegrationWithJenkins.mdx similarity index 100% rename from docs/quality-gates/IntegrationWithCICD/IntegrationWithJenkins.mdx rename to versioned_docs/version-26.1/quality-gates/IntegrationWithCICD/IntegrationWithJenkins.mdx diff --git a/docs/quality-gates/IntegrationWithCICD/_category_.json b/versioned_docs/version-26.1/quality-gates/IntegrationWithCICD/_category_.json similarity index 100% rename from docs/quality-gates/IntegrationWithCICD/_category_.json rename to versioned_docs/version-26.1/quality-gates/IntegrationWithCICD/_category_.json diff --git a/docs/quality-gates/IntegrationWithCICD/index.md b/versioned_docs/version-26.1/quality-gates/IntegrationWithCICD/index.md similarity index 86% rename from docs/quality-gates/IntegrationWithCICD/index.md rename to versioned_docs/version-26.1/quality-gates/IntegrationWithCICD/index.md index c6461cf3ce..1da7f4e3f9 100644 --- a/docs/quality-gates/IntegrationWithCICD/index.md +++ b/versioned_docs/version-26.1/quality-gates/IntegrationWithCICD/index.md @@ -9,22 +9,22 @@ The **Integration with CI/CD** section is designed to guide users through the pr ReportPortal can be integrated with popular CI/CD tools, including Azure DevOps, Bitrise CI/CD, CircleCI, GitHub Actions, GitLab CI, and Jenkins. These integrations enable continuous monitoring of your test executions, allowing for real-time insights into software quality and faster feedback loops for developers. -- [Azure DevOps](/quality-gates/IntegrationWithCICD/IntegrationWithAzureDevOps/)
+- [Azure DevOps](/26.1/quality-gates/IntegrationWithCICD/IntegrationWithAzureDevOps/)
A comprehensive CI/CD tool from Microsoft. Provides version control, project management, and automated pipelines. It’s widely used for building, testing, and deploying code in both cloud and on-premises environments. Integrating ReportPortal with Azure DevOps allows teams to automate test result reporting and gain real-time insights into the health of their projects. -- [Bitrise CI/CD](/quality-gates/IntegrationWithCICD/IntegrationWithBitrise/)
+- [Bitrise CI/CD](/26.1/quality-gates/IntegrationWithCICD/IntegrationWithBitrise/)
This CI/CD platform is specifically designed for mobile app development. It automates the building, testing, and deployment of apps for iOS and Android. By integrating ReportPortal with Bitrise, mobile teams can track test results from their mobile development pipelines, ensuring faster and more efficient testing processes across various devices and platforms. -- [CircleCI](/quality-gates/IntegrationWithCICD/IntegrationWithCircleCI/)
+- [CircleCI](/26.1/quality-gates/IntegrationWithCICD/IntegrationWithCircleCI/)
This is a flexible CI/CD tool that helps teams automate their development processes, allowing them to build, test, and deploy applications quickly. Integration with ReportPortal helps CircleCI users monitor and report test results in real-time, enabling quicker detection of defects and more streamlined test analysis. -- [GitHub Actions](/quality-gates/IntegrationWithCICD/IntegrationWithGitHubActions/)
+- [GitHub Actions](/26.1/quality-gates/IntegrationWithCICD/IntegrationWithGitHubActions/)
This is GitHub’s native CI/CD tool, allowing developers to automate workflows, including testing, directly in their GitHub repositories. With ReportPortal integration, teams can automate test result collection and analysis as part of their GitHub workflows, ensuring consistent reporting across all test runs. -- [GitLab CI](/quality-gates/IntegrationWithCICD/IntegrationWithGitLabCI/)
+- [GitLab CI](/26.1/quality-gates/IntegrationWithCICD/IntegrationWithGitLabCI/)
An integrated CI/CD tool within GitLab that automates the testing, building, and deployment of applications. ReportPortal’s integration with GitLab CI provides automatic reporting and analysis of test results, helping teams improve the quality of their applications and streamline their test processes. -- [Jenkins](/quality-gates/IntegrationWithCICD/IntegrationWithJenkins/)
+- [Jenkins](/26.1/quality-gates/IntegrationWithCICD/IntegrationWithJenkins/)
This is one of the most popular open-source CI/CD tools, known for its flexibility and extensibility. Integration ReportPortal with Jenkins enables automated test result reporting and real-time analysis, allowing teams to detect issues faster and enhance their test automation pipelines. In this section, you’ll find detailed guides and best practices for configuring ReportPortal with these popular CI/CD platforms. Whether you are running automated tests after every commit or triggering tests as part of a larger deployment process, ReportPortal’s integration capabilities will enhance your ability to manage and analyze test results. By incorporating ReportPortal into your CI/CD pipeline, you ensure higher-quality software releases. diff --git a/docs/quality-gates/QualityGateEdit.md b/versioned_docs/version-26.1/quality-gates/QualityGateEdit.md similarity index 75% rename from docs/quality-gates/QualityGateEdit.md rename to versioned_docs/version-26.1/quality-gates/QualityGateEdit.md index 7e35b892c2..928c16eaf3 100644 --- a/docs/quality-gates/QualityGateEdit.md +++ b/versioned_docs/version-26.1/quality-gates/QualityGateEdit.md @@ -12,4 +12,4 @@ This feature is available in ReportPortal with a [managed services subscription] If user edit Quality Gates, previous reports for these Quality Gates would not be recalculated. -If you want to recalculate Quality Gate with a new values, please check the section [How to recalculate Quality Gates](/quality-gates/AssessmentOfTestResultsUsingQualityGates#how-to-recalculate-quality-gates). +If you want to recalculate Quality Gate with a new values, please check the section [How to recalculate Quality Gates](/26.1/quality-gates/AssessmentOfTestResultsUsingQualityGates#how-to-recalculate-quality-gates). diff --git a/docs/quality-gates/QualityGatePurpose.mdx b/versioned_docs/version-26.1/quality-gates/QualityGatePurpose.mdx similarity index 100% rename from docs/quality-gates/QualityGatePurpose.mdx rename to versioned_docs/version-26.1/quality-gates/QualityGatePurpose.mdx diff --git a/docs/quality-gates/QualityRulesConfiguration.mdx b/versioned_docs/version-26.1/quality-gates/QualityRulesConfiguration.mdx similarity index 100% rename from docs/quality-gates/QualityRulesConfiguration.mdx rename to versioned_docs/version-26.1/quality-gates/QualityRulesConfiguration.mdx diff --git a/docs/quality-gates/UploadQualityGateToReportPortal.mdx b/versioned_docs/version-26.1/quality-gates/UploadQualityGateToReportPortal.mdx similarity index 92% rename from docs/quality-gates/UploadQualityGateToReportPortal.mdx rename to versioned_docs/version-26.1/quality-gates/UploadQualityGateToReportPortal.mdx index 21ac49f7b9..1800a39aa2 100644 --- a/docs/quality-gates/UploadQualityGateToReportPortal.mdx +++ b/versioned_docs/version-26.1/quality-gates/UploadQualityGateToReportPortal.mdx @@ -10,7 +10,7 @@ description: Upload Quality Gates to ReportPortal for quality control. This feature is available in ReportPortal with a [managed services subscription](https://reportportal.io/pricing/on-premises). ::: -The default configuration of our continuous testing platform doesn't contain Quality Gate. For adding this feature, you need to [receive a link to the .jar file from ReportPortal](/quality-gates/HowToInstallQualityGates). +The default configuration of our continuous testing platform doesn't contain Quality Gate. For adding this feature, you need to [receive a link to the .jar file from ReportPortal](/26.1/quality-gates/HowToInstallQualityGates). Download the .jar file and upload it to ReportPortal. For that, perform following actions: diff --git a/docs/quality-gates/_category_.json b/versioned_docs/version-26.1/quality-gates/_category_.json similarity index 100% rename from docs/quality-gates/_category_.json rename to versioned_docs/version-26.1/quality-gates/_category_.json diff --git a/docs/quality-gates/img/BaselineLatest.png b/versioned_docs/version-26.1/quality-gates/img/BaselineLatest.png similarity index 100% rename from docs/quality-gates/img/BaselineLatest.png rename to versioned_docs/version-26.1/quality-gates/img/BaselineLatest.png diff --git a/docs/quality-gates/img/CustomBaseline.png b/versioned_docs/version-26.1/quality-gates/img/CustomBaseline.png similarity index 100% rename from docs/quality-gates/img/CustomBaseline.png rename to versioned_docs/version-26.1/quality-gates/img/CustomBaseline.png diff --git a/docs/quality-gates/img/FailureAttributes.png b/versioned_docs/version-26.1/quality-gates/img/FailureAttributes.png similarity index 100% rename from docs/quality-gates/img/FailureAttributes.png rename to versioned_docs/version-26.1/quality-gates/img/FailureAttributes.png diff --git a/docs/quality-gates/img/NAQualityGateLabel.png b/versioned_docs/version-26.1/quality-gates/img/NAQualityGateLabel.png similarity index 100% rename from docs/quality-gates/img/NAQualityGateLabel.png rename to versioned_docs/version-26.1/quality-gates/img/NAQualityGateLabel.png diff --git a/docs/quality-gates/img/NewErrors/NewErrors1.png b/versioned_docs/version-26.1/quality-gates/img/NewErrors/NewErrors1.png similarity index 100% rename from docs/quality-gates/img/NewErrors/NewErrors1.png rename to versioned_docs/version-26.1/quality-gates/img/NewErrors/NewErrors1.png diff --git a/docs/quality-gates/img/NewErrors/NewErrors10.png b/versioned_docs/version-26.1/quality-gates/img/NewErrors/NewErrors10.png similarity index 100% rename from docs/quality-gates/img/NewErrors/NewErrors10.png rename to versioned_docs/version-26.1/quality-gates/img/NewErrors/NewErrors10.png diff --git a/docs/quality-gates/img/NewErrors/NewErrors11.png b/versioned_docs/version-26.1/quality-gates/img/NewErrors/NewErrors11.png similarity index 100% rename from docs/quality-gates/img/NewErrors/NewErrors11.png rename to versioned_docs/version-26.1/quality-gates/img/NewErrors/NewErrors11.png diff --git a/docs/quality-gates/img/NewErrors/NewErrors12.png b/versioned_docs/version-26.1/quality-gates/img/NewErrors/NewErrors12.png similarity index 100% rename from docs/quality-gates/img/NewErrors/NewErrors12.png rename to versioned_docs/version-26.1/quality-gates/img/NewErrors/NewErrors12.png diff --git a/docs/quality-gates/img/NewErrors/NewErrors13.png b/versioned_docs/version-26.1/quality-gates/img/NewErrors/NewErrors13.png similarity index 100% rename from docs/quality-gates/img/NewErrors/NewErrors13.png rename to versioned_docs/version-26.1/quality-gates/img/NewErrors/NewErrors13.png diff --git a/docs/quality-gates/img/NewErrors/NewErrors14.png b/versioned_docs/version-26.1/quality-gates/img/NewErrors/NewErrors14.png similarity index 100% rename from docs/quality-gates/img/NewErrors/NewErrors14.png rename to versioned_docs/version-26.1/quality-gates/img/NewErrors/NewErrors14.png diff --git a/docs/quality-gates/img/NewErrors/NewErrors2.png b/versioned_docs/version-26.1/quality-gates/img/NewErrors/NewErrors2.png similarity index 100% rename from docs/quality-gates/img/NewErrors/NewErrors2.png rename to versioned_docs/version-26.1/quality-gates/img/NewErrors/NewErrors2.png diff --git a/docs/quality-gates/img/NewErrors/NewErrors3.png b/versioned_docs/version-26.1/quality-gates/img/NewErrors/NewErrors3.png similarity index 100% rename from docs/quality-gates/img/NewErrors/NewErrors3.png rename to versioned_docs/version-26.1/quality-gates/img/NewErrors/NewErrors3.png diff --git a/docs/quality-gates/img/NewErrors/NewErrors4.png b/versioned_docs/version-26.1/quality-gates/img/NewErrors/NewErrors4.png similarity index 100% rename from docs/quality-gates/img/NewErrors/NewErrors4.png rename to versioned_docs/version-26.1/quality-gates/img/NewErrors/NewErrors4.png diff --git a/docs/quality-gates/img/NewErrors/NewErrors5.png b/versioned_docs/version-26.1/quality-gates/img/NewErrors/NewErrors5.png similarity index 100% rename from docs/quality-gates/img/NewErrors/NewErrors5.png rename to versioned_docs/version-26.1/quality-gates/img/NewErrors/NewErrors5.png diff --git a/docs/quality-gates/img/NewErrors/NewErrors6.png b/versioned_docs/version-26.1/quality-gates/img/NewErrors/NewErrors6.png similarity index 100% rename from docs/quality-gates/img/NewErrors/NewErrors6.png rename to versioned_docs/version-26.1/quality-gates/img/NewErrors/NewErrors6.png diff --git a/docs/quality-gates/img/NewErrors/NewErrors7.png b/versioned_docs/version-26.1/quality-gates/img/NewErrors/NewErrors7.png similarity index 100% rename from docs/quality-gates/img/NewErrors/NewErrors7.png rename to versioned_docs/version-26.1/quality-gates/img/NewErrors/NewErrors7.png diff --git a/docs/quality-gates/img/NewErrors/NewErrors8.png b/versioned_docs/version-26.1/quality-gates/img/NewErrors/NewErrors8.png similarity index 100% rename from docs/quality-gates/img/NewErrors/NewErrors8.png rename to versioned_docs/version-26.1/quality-gates/img/NewErrors/NewErrors8.png diff --git a/docs/quality-gates/img/NewErrors/NewErrors9.png b/versioned_docs/version-26.1/quality-gates/img/NewErrors/NewErrors9.png similarity index 100% rename from docs/quality-gates/img/NewErrors/NewErrors9.png rename to versioned_docs/version-26.1/quality-gates/img/NewErrors/NewErrors9.png diff --git a/docs/quality-gates/img/NoQualityGatesView.png b/versioned_docs/version-26.1/quality-gates/img/NoQualityGatesView.png similarity index 100% rename from docs/quality-gates/img/NoQualityGatesView.png rename to versioned_docs/version-26.1/quality-gates/img/NoQualityGatesView.png diff --git a/docs/quality-gates/img/QualityGatesAuto.png b/versioned_docs/version-26.1/quality-gates/img/QualityGatesAuto.png similarity index 100% rename from docs/quality-gates/img/QualityGatesAuto.png rename to versioned_docs/version-26.1/quality-gates/img/QualityGatesAuto.png diff --git a/docs/quality-gates/img/QualityGatesIntro.jpg b/versioned_docs/version-26.1/quality-gates/img/QualityGatesIntro.jpg similarity index 100% rename from docs/quality-gates/img/QualityGatesIntro.jpg rename to versioned_docs/version-26.1/quality-gates/img/QualityGatesIntro.jpg diff --git a/docs/quality-gates/img/QualityGatesReport.png b/versioned_docs/version-26.1/quality-gates/img/QualityGatesReport.png similarity index 100% rename from docs/quality-gates/img/QualityGatesReport.png rename to versioned_docs/version-26.1/quality-gates/img/QualityGatesReport.png diff --git a/docs/quality-gates/img/ReportThatIsAlreadySent.png b/versioned_docs/version-26.1/quality-gates/img/ReportThatIsAlreadySent.png similarity index 100% rename from docs/quality-gates/img/ReportThatIsAlreadySent.png rename to versioned_docs/version-26.1/quality-gates/img/ReportThatIsAlreadySent.png diff --git a/docs/quality-gates/index.md b/versioned_docs/version-26.1/quality-gates/index.md similarity index 100% rename from docs/quality-gates/index.md rename to versioned_docs/version-26.1/quality-gates/index.md diff --git a/versioned_docs/version-26.1/releases/Version24.1.md b/versioned_docs/version-26.1/releases/Version24.1.md new file mode 100644 index 0000000000..81eca5748f --- /dev/null +++ b/versioned_docs/version-26.1/releases/Version24.1.md @@ -0,0 +1,92 @@ +--- +sidebar_position: 23 +sidebar_label: Version 24.1 +description: ReportPortal v24.1 release notes with Immediate Auto-Analysis, Pattern Analysis, and features. +--- + +# Version 24.1 + +## 1. What's Changed: + +- **New feature – [Immediate Auto-Analysis](/analysis/ImmediateAutoAnalysis):**
+ This feature employs Auto-Analysis based on specific test cases immediately after their completion for proactive issue investigation. + +- **New feature – [Immediate Pattern-Analysis](/analysis/ImmediatePatternAnalysis):**
+ No more need to wait for the launch finish. Initiate Pattern Analysis immediately after completion of specific test cases. + +- **New Integration – [Gitlab Plugin](/plugins/bug-tracking/GitLab):**
+ New BTS plugin expanding ReportPortal BTS integration options for streamlined bugs reporting, issues. + +- **New feature – Retention Policy for Monitoring events**
+ Set a custom retention period for monitoring events via environmental variables to tailor data management to your organizational needs. + +- **Settings redesign**
+ Project Settings were redesigned completely, setting the stage for a whole new ReportPortal experience.
+ For an improved user experience, please ensure you are using the latest versions of ReportPortal plugins. + +- **New language introduced**
+ Users can now utilize the interface in Chinese and are encouraged to contribute to further translations or improve the existing ones. + +## 2. Small Updates: + +- Change in [Base for AA](/analysis/AutoAnalysisOfLaunches#base-for-analysis):
+ New options for Base for Auto Analysis have been introduced. + +- Enhanced Monitoring:
+ Improved Filtering on Monitoring page and expanded list of events being tracked + + +## 3. Technical Improvements: + +- ElasticSearch has been replaced with OpenSearch.
+ Following ElasticSearch's re-licensing in version 7.11, we've transitioned to OpenSearch to uphold our focus on open-source compatibility. + +:::important +Migration from ElasticSearch to OpenSearch is irrevocable. +::: + +:::note +Some of the environmental variables names are still ElasticSearch specific, but it will be corrected in the future versions. ` +::: + +- Service-api migration to Java 21 + +- Introduced JCloud provider for local file access, replacing the existing filesystem implementation. + +- Added support for providing a custom salt key using secret management tool to enhance security and flexibility. + +- A new engine for the frontend part of the plugins was created based on Webpack Module Federation to simplify the process of plugins development. + + +## 4. Enhancements Based on Community Feedback: + +- [#3132](https://github.com/reportportal/service-ui/issues/3132) Component Health Check widget improvements. + +- [#308](https://github.com/reportportal/reportportal/issues/308) Ability to specify filter parameters in the URL has been added. + +- [#2148](https://github.com/reportportal/reportportal/issues/2148) Duplicated error logs issue solved. + +- [#2159](https://github.com/reportportal/reportportal/issues/2159) Option to either include skipped test into Flaky test cases table (TOP 50) widget added. + +- [#520,](https://github.com/reportportal/reportportal/issues/520) [#2006](https://github.com/reportportal/reportportal/issues/2006) Launch import improvements. + +- [#64,](https://github.com/reportportal/service-jobs/issues/64) [#315](https://github.com/reportportal/kubernetes/issues/315) Service-jobs issue fix. + +- [#1841,](https://github.com/reportportal/service-api/pull/1841) [#1999](https://github.com/reportportal/reportportal/issues/1999) PR was rejected as it contained breaking changes. Instead new converter for openmetrics was added to configuration. + +## 5. CVE addressed: +[CVE-2023-44487](https://github.com/advisories/GHSA-qppj-fm5r-hxr3), [CVE-2023-3978](https://github.com/advisories/GHSA-2wrh-6pvc-2jm9), [CVE-2023-1436](https://github.com/advisories/GHSA-q6g2-g7f3-rr83), [CVE-2022-1471](https://github.com/advisories/GHSA-mjmj-j48q-9wg2), [CVE-2022-42003](https://github.com/advisories/GHSA-jjjh-jjxp-wpff), [CVE-2020-36518](https://github.com/advisories/GHSA-57j2-w4cx-62h2), [CVE-2022-45688](https://github.com/advisories/GHSA-3vqj-43w4-2q58), [CVE-2023-5072](https://github.com/advisories/GHSA-4jq9-2xhw-jpx7), [CVE-2022-22965](https://github.com/advisories/GHSA-36p3-wjmg-h94x), [CVE-2023-20863](https://github.com/advisories/GHSA-wxqc-pxw9-g2p8), [CVE-2022-1471](https://github.com/advisories/GHSA-mjmj-j48q-9wg2) + +## 6. Released versions +|Service Name|Repository|Tag| +|---|---| --- | +|Index|reportportal/service-index|5.11.0| +|Authorization|reportportal/service-authorization|5.11.0| +|UI|reportportal/service-ui|5.11.0| +|API|reportportal/service-api|5.11.0| +|Jobs|reportportal/service-jobs|5.11.0| +|Migrations|reportportal/migrations|5.11.0| +|Auto Analyzer|reportportal/service-auto-analyzer|5.11.0| +|Metrics Gatherer|reportportal/service-metrics-gatherer|5.11.0| + +## 7. [Migration Guide](https://github.com/reportportal/reportportal/wiki/Migration-to-ReportPortal-v.24.1) diff --git a/versioned_docs/version-26.1/releases/Version24.2.0.md b/versioned_docs/version-26.1/releases/Version24.2.0.md new file mode 100644 index 0000000000..03c5529cc3 --- /dev/null +++ b/versioned_docs/version-26.1/releases/Version24.2.0.md @@ -0,0 +1,157 @@ +--- +sidebar_position: 22 +sidebar_label: Version 24.2 +description: ReportPortal v24.2 release notes with PostgreSQL 15 support, enhanced test automation metrics dashboard, and improved performance. +--- + +# Version 24.2 + + + +:::important +To ensure that asynchronous reporting works correctly, please make sure the correct feature flag is enabled in RabbitMQ. +Open RabbitMQ Management, go to the Admin tab -> Feature Flags -> message_containers_deaths_v2. If it's disabled, enable it. +::: + +:::important +Due to the transition to a new plugin mechanism when updating ReportPortal to version 24.2, all the plugins need to be reinstalled manually. +Check out the updated plugins [UI development guides](/developers-guides/PluginDevelopersGuide/PluginUIDevelopersGuide). +::: + +:::important +Double entry removed. Review changes by comparing GitHub releases in [Docker]( +https://github.com/reportportal/reportportal/compare/v24.1...v24.2) or [Kubernetes](https://github.com/reportportal/kubernetes/compare/reportportal-24.1.0...reportportal-24.2.0). +::: + +## 1. What's Changed: + +1. **New features** - **[Extended launches retention policy](/configuration/LaunchesRetentionPolicy)**:
+ We've introduced an extended launches retention policy to allow important launches to be preserved beyond the existing retention periods. Previously, all launches were automatically deleted after a set time to save storage. With this update, you can now mark specific launches as important, ensuring they are never deleted, as long as there is sufficient storage available. This feature is useful for retaining critical data for compliance, auditing, or historical analysis. + +2. **New integrations** (Notifications) - **[Slack plugin](/plugins/notifications/Slack) and redesigned Notifications page**:
+ Teams using Slack can now set up Slack integration to receive ReportPortal notifications on launch event right in their Slack channel.
+ More details can be found in [Slack user guide](/plugins/notifications/Slack) and [blog post](https://reportportal.io/blog/report-test-results-in-real-time-to-slack). + +3. **New integrations** (Bug Tracking Systems) - **[Monday plugin](/plugins/bug-tracking/Monday)**:
+ Teams working with Monday as their BTS can now set up an integration to post and link issues from ReportPortal directly to Monday. + +4. **Import functionality moved to plugin**:
+ To provide more flexibility for launch import, the feature has been moved from the core application to a plugin. Users can now choose between the Robot and JUnit import plugins developed by the ReportPortal team, or create their own plugins to import results from other test frameworks.
+ More details about [JUnit import plugin](/plugins/import/JUnit).
+ More details about [Robot Framework import plugin](/plugins/import/RobotFramework).
+ [Guide on how to create import plugin](/developers-guides/PluginDevelopersGuide/DevelopACustomImportPlugin). + +5. **Microseconds added to timestamps** for better test items sequence tracking:
+ Microseconds have been added to timestamps to enable a more accurate sequence of logs, as some logs previously had identical timestamps at the millisecond level. + +6. **LDAP integration improvements**:
+- PBKDF2 encryption has been added to the list of possible encryptions for LDAP.
+- LDAP integration can now be created either with Full name attribute mode or with separate fields for First name and Last name. + +7. **Improved logic of [launch rerun](/developers-guides/RerunDevelopersGuide)**:
+ User can report rerun of the specified launch with no attributes and the attributes for the initial launch will remain. If user reports rerun of the specified launch with attributes, only new attributes will be added to the launch. + +8. **New language introduced:**
+ Users can now utilize the interface in Spanish, and we encourage everyone to contribute to further translations or improve the existing ones. + A special thank you to [@mg-diego](https://github.com/mg-diego) for his valuable contribution to the Spanish translation! + +## 2. Technical improvements: + +1. **Analyzer**:
+ **Added:**
+ Message-through logging with Correlation ID, to ease debugging and understanding of logs.
+ **Updated:**
+ Refactoring: data-preparation logic joined and put into common place.
+ Refactoring: model train logic standardised and prepared for future join.
+ Lots of type annotations added.
+ **Fixed**
+ Re-train logic. Custom re-trained models for big enough projects do not affect negatively auto-analysis now. + +2. **Asynchronous Reporting**:
+ ReportPortal now features 2x faster reporting under full load, thanks to a new asynchronous reporting approach. A key update includes switching from a Direct exchange to a Consistent-hashing exchange. The retry mechanism was also revamped to focus on handling messages related to the reporting order.
+ Read our latest [blog post](https://reportportal.io/blog/boost-asynchronous-test-reporting-speed-by-2x). + +:::important +To ensure that asynchronous reporting works correctly, please make sure the correct feature flag is enabled in RabbitMQ.
+Open RabbitMQ Management, go to the Admin tab -> Feature Flags -> message_containers_deaths_v2. If it's disabled, enable it. +::: + +3. Updated React to version 18. +4. PostgreSQL 16 support. +5. Updated Java to version 21 (Service-uat). + +## 3. Bugs fixed: + +1. **Saucelabs**: + +- Issue with Mobile tests videos (run on real devices in SauceLabs) is solved. +- Error when opening "Sauce Labs" tab from log view is fixed. + +2. **Jira Cloud**: + +- Functionality to add Assignee for issue by typing its name or email (in case of full match) has been added. +- Bug with posting issue with "Parent" field is fixed. +- Bug with saving multi-select field as empty is fixed. +- Bug with creating Integration without predefine Issue Type is fixed. +- Possibility to add "None" value for fields with predefined values has been added. + +3. **Quality Gates**: +- ‘'In progress' QG status doesn't change for merged launches, when 'New errors' rule is applied and no unique errors identified' is fixed. +- 'QG page is broken after editing Quality Gate, if it contains New failures/New error rules' is fixed. + +4. TypeError occurring when switching between "New errors" and "Known errors" options on "Unique errors" page is solved. +5. "Unique bugs table" widget is fixed. +6. Bug with Retry reported as a separate step is fixed. + +7. Issue with Resize widget functionality is solved. + +:::important +We made some changes in how we handle Unique Errors. Thus behaviour on some stack traces might change.
+We are going to review it in the upcoming updates to make sure that all cases are covered. +::: + +## 4. Enhancements Based on Community Feedback: + +- [#1914](https://github.com/reportportal/reportportal/issues/1914) Ability to exclude Skipped tests from statistics was added for Component health check widget (table view) and Component health check widget (table view). +- [#2168](https://github.com/reportportal/reportportal/issues/2168) The limit for the dashboards per project has been increased to 3000 dashboards. +- [#2219](https://github.com/reportportal/reportportal/issues/2219) On the Unique Errors page, error clusters have been introduced and sorted by size, allowing users to address the most impactful errors first. +- [#2249](https://github.com/reportportal/reportportal/issues/2249) Email configuration has been improved taking into account possible ReportPortal deployment to a specified path ensuring that the links in notifications and other emails are correct. +- [#2309](https://github.com/reportportal/reportportal/issues/2309), [#2245](https://github.com/reportportal/reportportal/issues/2245) Logics of importing empty suites has been adjusted: Launches with empty suites can now be imported successfully. Empty suite has status 'Passed’. +- [#1951](https://github.com/reportportal/reportportal/issues/1951) The issue with the launch description not being updated upon launch finish (when launch reporting started with no description and finished with any description) is fixed. +- [#2230](https://github.com/reportportal/reportportal/issues/2230) Issue with parent nested step turning in failed status if child nested step processed after it's finished and has status 'skipped' is solved. +- [#2120](https://github.com/reportportal/reportportal/issues/2120) Issue with broken links on filtered Launches page is solved. +- [#1020](https://github.com/reportportal/reportportal/issues/1020), [#36](https://github.com/reportportal/agent-js-jasmine/issues/36) Issue with logs sequence is solved. +## 5. CVE addressed: + +**Service auto-analyser:**
+[CVE-2023-45853](https://github.com/advisories/GHSA-mq29-j5xf-cjwr), [CVE-2023-6246](https://github.com/advisories/GHSA-p6rw-gvvh-q8v4), [CVE-2023-6779](https://github.com/advisories/GHSA-p5vr-h433-qhqr), [CVE-2023-6780](https://github.com/advisories/GHSA-jjr8-97p7-vmmg), [CVE-2023-49468](https://github.com/advisories/GHSA-6j48-hfg3-m4hg), [CVE-2023-49467](https://github.com/advisories/GHSA-x895-cm39-f6wq), [CVE-2023-49465](https://github.com/advisories/GHSA-xxjf-hhmr-jhmq) + +**Service-api:**
+[CVE-2024-1597](https://github.com/advisories/GHSA-24rp-q3w6-vc56), [CVE-2023-40827](https://github.com/advisories/GHSA-rvm8-j2cp-j592), [CVE-2023-40828](https://github.com/advisories/GHSA-cj8w-v588-p8wx), [CVE-2023-40826](https://github.com/advisories/GHSA-3r28-rgp9-qgv4), [CVE-2024-22243](https://github.com/advisories/GHSA-ccgv-vj62-xf9h), [CVE-2023-5072](https://github.com/advisories/GHSA-4jq9-2xhw-jpx7), [CVE-2022-45688](https://github.com/advisories/GHSA-3vqj-43w4-2q58), [CVE-2023-46589](https://github.com/advisories/GHSA-fccv-jmmp-qg76), [CVE-2024-24549](https://github.com/advisories/GHSA-7w75-32cg-r6g2), [CVE-2024-23672](https://github.com/advisories/GHSA-v682-8vv8-vpwr), [CVE-2024-25710](https://github.com/advisories/GHSA-4g9r-vxhx-9pgx), [CVE-2024-26308](https://github.com/advisories/GHSA-4265-ccf5-phj5), [CVE-2023-34050](https://github.com/advisories/GHSA-24f5-5fmf-pwmc), [CVE-2023-6378](https://github.com/advisories/GHSA-vmq6-5m68-f53m), [CVE-2023-6481](https://github.com/advisories/GHSA-gm62-rw4g-vrc4), [CVE-2023-6378](https://github.com/advisories/GHSA-vmq6-5m68-f53m), [CVE-2023-6481](https://github.com/advisories/GHSA-gm62-rw4g-vrc4), [CVE-2023-20883](https://github.com/advisories/GHSA-xf96-w227-r7c4) + +**Service-authorization:**
+[CVE-2023-20860](https://github.com/advisories/GHSA-7phw-cxx7-q9vq), [CVE-2024-1597](https://github.com/advisories/GHSA-24rp-q3w6-vc56), [CVE-2023-5072](https://github.com/advisories/GHSA-4jq9-2xhw-jpx7), [CVE-2022-45688](https://github.com/advisories/GHSA-3vqj-43w4-2q58), [CVE-2023-1370](https://github.com/advisories/GHSA-493p-pfq6-5258), [CVE-2023-46589](https://github.com/advisories/GHSA-fccv-jmmp-qg76), [CVE-2024-24549](https://github.com/advisories/GHSA-7w75-32cg-r6g2), [CVE-2024-23672](https://github.com/advisories/GHSA-v682-8vv8-vpwr), [CVE-2024-25710](https://github.com/advisories/GHSA-4g9r-vxhx-9pgx), [CVE-2024-26308](https://github.com/advisories/GHSA-4265-ccf5-phj5), [CVE-2023-34050](https://github.com/advisories/GHSA-24f5-5fmf-pwmc), [CVE-2023-6378](https://github.com/advisories/GHSA-vmq6-5m68-f53m), [CVE-2023-6481](https://github.com/advisories/GHSA-gm62-rw4g-vrc4), [CVE-2015-7501](https://github.com/advisories/GHSA-fjq5-5j5f-mvxh), [CVE-2015-4852](https://github.com/advisories/GHSA-7r6v-mxc2-pg49) + +**Service-metrics-gatherer:**
+[CVE-2023-45853](https://github.com/advisories/GHSA-mq29-j5xf-cjwr) + +**Service-jobs:**
+[CVE-2024-1597](https://github.com/advisories/GHSA-24rp-q3w6-vc56), [CVE-2023-46589](https://github.com/advisories/GHSA-fccv-jmmp-qg76), [CVE-2024-24549](https://github.com/advisories/GHSA-7w75-32cg-r6g2), [CVE-2024-23672](https://github.com/advisories/GHSA-v682-8vv8-vpwr), [CVE-2023-6378](https://github.com/advisories/GHSA-vmq6-5m68-f53m), [CVE-2023-6481](https://github.com/advisories/GHSA-gm62-rw4g-vrc4), [CVE-2024-22243](https://github.com/advisories/GHSA-ccgv-vj62-xf9h), [CVE-2024-25710](https://github.com/advisories/GHSA-4g9r-vxhx-9pgx), [CVE-2024-26308](https://github.com/advisories/GHSA-4265-ccf5-phj5), [CVE-2023-34050](https://github.com/advisories/GHSA-24f5-5fmf-pwmc), [CVE-2023-20883](https://github.com/advisories/GHSA-xf96-w227-r7c4) + +**Service-ui:**
+[CVE-2023-52425](https://github.com/advisories/GHSA-gh68-jm46-84rf), [CVE-2023-52426](https://github.com/advisories/GHSA-mp2w-hjcj-f5g9), [CVE-2024-25062](https://github.com/advisories/GHSA-x77r-6xxm-wjmx), [CVE-2023-45857](https://github.com/advisories/GHSA-wf5p-g6vw-rhxx) + +## 6. Released versions: + +|Service Name|Repository|Tag| +|---|---| --- | +|Index|reportportal/service-index|5.12.0| +|Authorization|reportportal/service-authorization|5.12.0| +|UI|reportportal/service-ui|5.12.0| +|API|reportportal/service-api|5.12.0| +|Jobs|reportportal/service-jobs|5.12.0| +|Migrations|reportportal/migrations|5.12.1| +|Auto Analyzer|reportportal/service-auto-analyzer|5.12.0-r1| +|Metrics Gatherer|reportportal/service-metrics-gatherer|5.12.0-r1| + +## 7. [Migration Guide](https://github.com/reportportal/reportportal/wiki/Migration-to-ReportPortal-v.24.2) diff --git a/versioned_docs/version-26.1/releases/Version24.2.2.md b/versioned_docs/version-26.1/releases/Version24.2.2.md new file mode 100644 index 0000000000..e0b5beb1e6 --- /dev/null +++ b/versioned_docs/version-26.1/releases/Version24.2.2.md @@ -0,0 +1,62 @@ +--- +sidebar_position: 21 +sidebar_label: Version 24.2.2 +description: ReportPortal v24.2.2 release notes with bug fixes and enhanced stability. +--- + +# Version 24.2.2 + +## 1. What's Changed: +1. **New Features - SCIM Server Integration:**
+ The [SCIM Server feature](https://reportportal.io/docs/features/SCIMServerFeature) has been introduced as part of our enterprise-level support services. If you're interested in enabling SCIM for your setup, please [reach out](https://reportportal.io/contact-us/general) to us for more information. + +2. **New Features - Instance Invitation Control:**
+ A new feature allows administrators to enable or disable [instance invitations](https://reportportal.io/docs/admin-panel/ServerSettings). You can now disable manual invitations for external users, ensuring that users can only access ReportPortal through an identity provider configured for the instance. + +3. **Minor Improvements - [Unique Errors Analysis](https://reportportal.io/docs/analysis/UniqueErrorAnalysis):**
+ Clusters with no tests are now filtered out and no longer displayed in the UI. + +## 2. Technical improvements: + +1. Service Jobs has been updated to Spring Boot 3. +2. Gitlab, Import plugin (RobotFramework), Import plugin (JUnit), Monday, Slack, Azure, Gitlab, Jira Cloud, Jira Server, Saucelabs, Rally plugins have been updated to Java 21. + +## 3. Bugs fixed: +1. Fixed an issue that caused an empty file to be downloaded when exporting a launch in PDF format. +2. Resolved an issue with log display in the Unique Error Analysis section. +3. Fixed a bug preventing users with a dot in their username from being added to the "Recipients" field in notification rules. + +## 4. Enhancements Based on Community Feedback: + +[#2389](https://github.com/reportportal/reportportal/issues/2389): Adjusted Email Server integration settings to support usernames (e.g., SendGrid and others).
+[#2381](https://github.com/reportportal/reportportal/issues/2381): Fixed incorrect sorting in the "Launch Statistics Chart" widget.
+[#2361](https://github.com/reportportal/reportportal/issues/2361): Enabled the "Show" button for fatal and error logs in nested steps.
+[#2405](https://github.com/reportportal/reportportal/issues/2405): Fixed issue with Time format support in .NET agents, and other agents. + +## 5. Released services and plugins: + +Released services: +|Service Name|Repository|Tag| +|---|---| --- | +|Authorization|reportportal/service-authorization|5.13.0| +|UI|reportportal/service-ui|5.12.1| +|API|reportportal/service-api|5.13.1| +|Index|reportportal/service-index|5.13.0| +|Jobs|reportportal/service-jobs|5.13.0| +|Migrations|reportportal/migrations|5.13.0| +|Auto Analyzer|reportportal/service-auto-analyzer|5.13.0| +|Metrics Gatherer|reportportal/service-metrics-gatherer|5.13.0| + +Released plugins: +|Plugin Name|Repository|Tag| +|---|---| --- | +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.12.1| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.0.1| +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.0.2| +|Monday|reportportal/plugin-bts-monday|1.0.1| +|Slack|reportportal/plugin-slack|1.0.1| +|Azure|reportportal/plugin-bts-azure|5.12.1| +|Jira|reportportal/plugin-bts-jira|5.12.1| +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.12.1| +|Saucelabs|reportportal/plugin-saucelabs|5.12.1| +|Rally|reportportal/plugin-bts-rally|5.12.2| diff --git a/versioned_docs/version-26.1/releases/Version24.2.3.md b/versioned_docs/version-26.1/releases/Version24.2.3.md new file mode 100644 index 0000000000..56e83b7483 --- /dev/null +++ b/versioned_docs/version-26.1/releases/Version24.2.3.md @@ -0,0 +1,21 @@ +--- +sidebar_position: 20 +sidebar_label: Version 24.2.3 +description: ReportPortal v24.2.3 release notes with bug fixes. +--- + +# Version 24.2.3 + +## 1. Bugs fixed: +1. Fixed an [issue](https://github.com/reportportal/service-auto-analyzer/issues/149) with bucket prefix in service-auto-analyzer. + +## 2. Other updates +1. Updated base image for service-auto-analyzer. + +## 3. Updated services and plugins: + +|Service Name|Repository|Tag| +|---|---| --- | +|Auto Analyzer|reportportal/service-auto-analyzer|5.13.1| + +Rest of services and plugins are the same version as in https://github.com/reportportal/reportportal/releases/tag/24.2.2 diff --git a/versioned_docs/version-26.1/releases/Version25.0.2.md b/versioned_docs/version-26.1/releases/Version25.0.2.md new file mode 100644 index 0000000000..f5e11045b4 --- /dev/null +++ b/versioned_docs/version-26.1/releases/Version25.0.2.md @@ -0,0 +1,46 @@ +--- +sidebar_position: 19 +sidebar_label: Version 25.0.2 +description: ReportPortal v25.0.2 release notes with bug fixes. +--- + +# Version 25.0.2 + +## 1. Enhancements Based on Community Feedback: +[#2402](https://github.com/reportportal/reportportal/issues/2402) Tests not reported correctly - V24.2, .Net (all dates in requests will now be truncated to microseconds precision)
+[#2424](https://github.com/reportportal/reportportal/issues/2424) Step duration is no longer displayed in ReportPortal 24.2 + +## 2. Technical updates: +The Axios library has been updated to version 1.7.9. + +## 3. Released services and plugins: + +**Released services:** +|Service Name|Repository|Tag| +|---|---| --- | +|UI|reportportal/service-ui|5.12.3| +|API|reportportal/service-api|5.13.2| + +**Rest of services and plugins have the same version as before:** +|Service Name|Repository|Tag| +|---|---| --- | +|Authorization|reportportal/service-authorization|5.13.0| +|Index|reportportal/service-index|5.13.0| +|Jobs|reportportal/service-jobs|5.13.0| +|Migrations|reportportal/migrations|5.13.0| +|Auto Analyzer|reportportal/service-auto-analyzer|5.13.1| +|Metrics Gatherer|reportportal/service-metrics-gatherer|5.13.0| + + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.12.1| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.0.1| +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.0.2| +|Monday|reportportal/plugin-bts-monday|1.0.1| +|Slack|reportportal/plugin-slack|1.0.1| +|Azure|reportportal/plugin-bts-azure|5.12.1| +|Jira|reportportal/plugin-bts-jira|5.12.1| +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.12.1| +|Saucelabs|reportportal/plugin-saucelabs|5.12.1| +|Rally|reportportal/plugin-bts-rally|5.12.2|| diff --git a/versioned_docs/version-26.1/releases/Version25.0.3.md b/versioned_docs/version-26.1/releases/Version25.0.3.md new file mode 100644 index 0000000000..72c4bf8404 --- /dev/null +++ b/versioned_docs/version-26.1/releases/Version25.0.3.md @@ -0,0 +1,41 @@ +--- +sidebar_position: 18 +sidebar_label: Version 25.0.3 +description: ReportPortal v25.0.3 release notes with bug fixes. +--- + +# Version 25.0.3 + +## 1. Technical updates: + +ReportPortal now supports M4-chip processors. + +## 2. Released services: +|Service Name|Repository|Tag| +|---|---| --- | +|API|reportportal/service-api|5.13.3| +|Authorization|reportportal/service-authorization|5.13.1| +|Jobs|reportportal/service-jobs|5.13.1| + +**Rest of services and plugins have the same version as before:** +|Service Name|Repository|Tag| +|---|---| --- | +|UI|reportportal/service-ui|5.12.3| +|Index|reportportal/service-index|5.13.0| +|Migrations|reportportal/migrations|5.13.0| +|Auto Analyzer|reportportal/service-auto-analyzer|5.13.1| +|Metrics Gatherer|reportportal/service-metrics-gatherer|5.13.0| + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.12.1| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.0.1| +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.0.2| +|Monday|reportportal/plugin-bts-monday|1.0.1| +|Slack|reportportal/plugin-slack|1.0.1| +|Azure|reportportal/plugin-bts-azure|5.12.1| +|Jira|reportportal/plugin-bts-jira|5.12.1| +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.12.1| +|Saucelabs|reportportal/plugin-saucelabs|5.12.1| +|Rally|reportportal/plugin-bts-rally|5.12.2|| + diff --git a/versioned_docs/version-26.1/releases/Version25.0.4.md b/versioned_docs/version-26.1/releases/Version25.0.4.md new file mode 100644 index 0000000000..ff4bbd22e7 --- /dev/null +++ b/versioned_docs/version-26.1/releases/Version25.0.4.md @@ -0,0 +1,40 @@ +--- +sidebar_position: 17 +sidebar_label: Version 25.0.4 +description: ReportPortal v25.0.4 release notes with bug fixes and enhanced test automation reporting tools stability. +--- + +# Version 25.0.4 + +## 1. New features: +**[Dashboard cloning feature](/dashboards-and-widgets/WorkWithDashboards#dashboard-cloning):**
+easily replicate dashboards across projects with the new Dashboard Cloning feature, saving time and effort when managing multiple projects. Clone via UI and API. + +## 2. Released services: +|Service Name|Repository|Tag| +|---|---| --- | +|API|reportportal/service-api|5.13.4| +|UI|reportportal/service-ui|5.12.4| +|Auto-Analyzer|reportportal/service-auto-analyzer|5.13.2| + +**Rest of services and plugins have the same version as before:** +|Service Name|Repository|Tag| +|---|---| --- | +|Jobs|reportportal/service-jobs|5.13.1| +|Authorization|reportportal/service-authorization|5.13.1| +|Index|reportportal/service-index|5.13.0| +|Migrations|reportportal/migrations|5.13.0| +|Metrics Gatherer|reportportal/service-metrics-gatherer|5.13.0| + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.12.1| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.0.1| +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.0.2| +|Monday|reportportal/plugin-bts-monday|1.0.1| +|Slack|reportportal/plugin-slack|1.0.1| +|Azure|reportportal/plugin-bts-azure|5.12.1| +|Jira|reportportal/plugin-bts-jira|5.12.1| +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.12.1| +|Saucelabs|reportportal/plugin-saucelabs|5.12.1| +|Rally|reportportal/plugin-bts-rally|5.12.2|| diff --git a/versioned_docs/version-26.1/releases/Version25.0.5.md b/versioned_docs/version-26.1/releases/Version25.0.5.md new file mode 100644 index 0000000000..318c3e2327 --- /dev/null +++ b/versioned_docs/version-26.1/releases/Version25.0.5.md @@ -0,0 +1,42 @@ +--- +sidebar_position: 16 +sidebar_label: Version 25.0.5 +description: ReportPortal v25.0.5 release notes with bug fixes. +--- + +# Version 25.0.5 + +## 1. New integrations: +**Telegram plugin** enabling real-time test execution updates and failure alerts within Telegram channels. +Learn more in our [documentation](/plugins/notifications/Telegram). + +## 2. Released services: +|Plugin Name|Repository|Tag| +|---|---| --- | +|Telegram|reportportal/plugin-telegram|1.0.0|| + + +**Rest of services and plugins have the same version as before:** +|Service Name|Repository|Tag| +|---|---| --- | +|Jobs|reportportal/service-jobs|5.13.1| +|Authorization|reportportal/service-authorization|5.13.1| +|Index|reportportal/service-index|5.13.0| +|Migrations|reportportal/migrations|5.13.0| +|Metrics Gatherer|reportportal/service-metrics-gatherer|5.13.0| +|API|reportportal/service-api|5.13.4| +|UI|reportportal/service-ui|5.12.4| +|Auto-Analyzer|reportportal/service-auto-analyzer|5.13.2| + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.12.1| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.0.1| +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.0.2| +|Monday|reportportal/plugin-bts-monday|1.0.1| +|Slack|reportportal/plugin-slack|1.0.1| +|Azure|reportportal/plugin-bts-azure|5.12.1| +|Jira|reportportal/plugin-bts-jira|5.12.1| +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.12.1| +|Saucelabs|reportportal/plugin-saucelabs|5.12.1| +|Rally|reportportal/plugin-bts-rally|5.12.2|| diff --git a/versioned_docs/version-26.1/releases/Version25.0.6.md b/versioned_docs/version-26.1/releases/Version25.0.6.md new file mode 100644 index 0000000000..fc68fc5bb0 --- /dev/null +++ b/versioned_docs/version-26.1/releases/Version25.0.6.md @@ -0,0 +1,61 @@ +--- +sidebar_position: 15 +sidebar_label: Version 25.0.6 +description: ReportPortal v25.0.6 release notes with bug fixes and enhanced stability. +--- + +# Version 25.0.6 + +## 1. New features: +- **[Test case search widget](/dashboards-and-widgets/TestCaseSearch):**
+ New widget enables searching test cases by name or attribute across all launches in a project. + +- **[Inactivity timeout](/admin-panel/ServerSettings/#inactivity-timeout):**
+ Admins can now set user session timeouts under Server Settings. Users will be logged out after inactivity timeout. + +## 2. Bugs fixed: +Resolved an issue where the "Slack" and "Telegram" notification toggles did not retain their state after page reload on a newly created project. + +## 3. Security updates: +- **Updates in password policy for user registration and password changes:**
+ New passwords must be at least 8 characters long and include at least one digit, one special character, one uppercase letter, and one lowercase letter. Existing users can continue logging in with their current passwords, but any password updates will need to comply with the new requirements. + +- **CVE addressed:**
+ + - Service-api:
+ [CVE-2024-50379](https://nvd.nist.gov/vuln/detail/cve-2024-50379), [CVE-2024-56337](https://nvd.nist.gov/vuln/detail/CVE-2024-56337), [CVE-2025-24813](https://nvd.nist.gov/vuln/detail/CVE-2025-24813) + + - Service-ui:
+ [CVE-2024-45296](https://www.cve.org/CVERecord?id=CVE-2024-45296), [CVE-2025-27152](https://www.cve.org/CVERecord?id=CVE-2025-27152), [CVE-2025-26791](https://www.cve.org/CVERecord?id=CVE-2025-26791), [CVE-2024-53382](https://www.cve.org/CVERecord?id=CVE-2024-53382) + +## 4. Technical updates: +Removed Service Metrics Gatherer. + +## 5. Released services: +|Plugin Name|Repository|Tag| +|---|---| --- | +|API|reportportal/service-api|5.13.5| +|UI|reportportal/service-ui|5.12.5| +|Jobs|reportportal/service-jobs|5.13.2| +|Authorization|reportportal/service-authorization|5.13.2| +|Migrations|reportportal/migrations|5.13.2| +|Index|reportportal/service-index|5.13.1| + +**Rest of services and plugins have the same version as before:** +|Service Name|Repository|Tag| +|---|---| --- | +|Auto-Analyzer|reportportal/service-auto-analyzer|5.13.2| + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.12.1| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.0.1| +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.0.2| +|Monday|reportportal/plugin-bts-monday|1.0.1| +|Slack|reportportal/plugin-slack|1.0.1| +|Azure|reportportal/plugin-bts-azure|5.12.1| +|Jira|reportportal/plugin-bts-jira|5.12.1| +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.12.1| +|Saucelabs|reportportal/plugin-saucelabs|5.12.1| +|Rally|reportportal/plugin-bts-rally|5.12.2|| +|Telegram|reportportal/plugin-telegram|1.0.0|| diff --git a/versioned_docs/version-26.1/releases/Version25.1.1.md b/versioned_docs/version-26.1/releases/Version25.1.1.md new file mode 100644 index 0000000000..a7ecbd539b --- /dev/null +++ b/versioned_docs/version-26.1/releases/Version25.1.1.md @@ -0,0 +1,41 @@ +--- +sidebar_position: 13 +sidebar_label: Version 25.1.1 +description: ReportPortal Version 25.1.1 addresses SAML reply URL generation issues, enhancing security and compatibility. +--- + +# Version 25.1.1 + +## 1. Bugs fixed: + +[#382](https://github.com/reportportal/service-authorization/issues/382) Fixed SAML reply URL generation. + +## 2. Released services: + +| Service Name |Repository|Tag| +|---------------|---| --- | +| Authorization |reportportal/service-authorization|5.14.1| + +**Rest of services and plugins have the same version as before:** +|Service Name|Repository|Tag| +|---|---| --- | +|Index|reportportal/service-index|5.14.0| +|UI|reportportal/service-ui|5.14.1| +|API|reportportal/service-api|5.14.0| +|Jobs|reportportal/service-jobs|5.14.0| +|Migrations|reportportal/migrations|5.14.0| +|Auto Analyzer|reportportal/service-auto-analyzer|5.14.1| + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.1.0| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.1.0| +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.13.1| +|Saucelabs|reportportal/plugin-saucelabs|5.13.0| +|Monday|reportportal/plugin-bts-monday|1.1.0| +|Rally|reportportal/plugin-bts-rally|5.13.0| +|Jira|reportportal/plugin-bts-jira|5.13.0| +|Telegram|reportportal/plugin-telegram|1.1.0| +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.13.0| +|Azure|reportportal/plugin-bts-azure|5.13.0| +|Slack|reportportal/plugin-slack|1.1.0| diff --git a/versioned_docs/version-26.1/releases/Version25.1.10.md b/versioned_docs/version-26.1/releases/Version25.1.10.md new file mode 100644 index 0000000000..f89efa8f6e --- /dev/null +++ b/versioned_docs/version-26.1/releases/Version25.1.10.md @@ -0,0 +1,38 @@ +--- +sidebar_position: 4 +sidebar_label: Version 25.1.10 +--- + +# Version 25.1.10 + +## 1. Bugs fixed: +Fixed IDOR in admin UI. + +## 2. Released services and plugins: +|Service Name|Repository|Tag| +|---|---| --- | +|Authorization|reportportal/service-authorization|5.14.7| + +## Rest of services and plugins have the same version as before: +|Service Name|Repository|Tag| +|---|---| --- | +|Api|reportportal/service-api|5.14.4| +|UI|reportportal/service-ui|5.14.5| +|Auto Analyzer|reportportal/service-auto-analyzer|5.14.5| +|Migrations|reportportal/migrations|5.14.2| +|Index|reportportal/service-index|5.14.0| +|Jobs|reportportal/service-jobs|5.14.0| + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Rally|reportportal/plugin-bts-rally|5.13.1| +|Monday|reportportal/plugin-bts-monday|1.1.1| +|Azure|reportportal/plugin-bts-azure|5.13.2| +|Jira|reportportal/plugin-bts-jira|5.13.1| +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.13.5| +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.1.0| +|Telegram|reportportal/plugin-telegram|1.1.0| +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.13.1| +|Sauce Labs|reportportal/plugin-saucelabs|5.13.1| +|Slack|reportportal/plugin-slack|1.1.1| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.1.1| diff --git a/versioned_docs/version-26.1/releases/Version25.1.11.md b/versioned_docs/version-26.1/releases/Version25.1.11.md new file mode 100644 index 0000000000..a850f99108 --- /dev/null +++ b/versioned_docs/version-26.1/releases/Version25.1.11.md @@ -0,0 +1,39 @@ +--- +sidebar_position: 3 +sidebar_label: Version 25.1.11 +--- + +# Version 25.1.11 + +## 1. Bugs fixed: +Jira Cloud Hover: Fixed 400 error on Issue ID hover — tooltip now shows SUMMARY / STATUS. +Jira Cloud Post Issue: Fixed 400 error when using Linked Issues or Affects version — issues post successfully with correct UI feedback. + +## 2. Released services and plugins: +|Plugin Name|Repository|Tag| +|---|---| --- | +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.13.6| + +## Rest of services and plugins have the same version as before: +|Service Name|Repository|Tag| +|---|---| --- | +|Authorization|reportportal/service-authorization|5.14.7| +|Api|reportportal/service-api|5.14.4| +|UI|reportportal/service-ui|5.14.5| +|Auto Analyzer|reportportal/service-auto-analyzer|5.14.5| +|Migrations|reportportal/migrations|5.14.2| +|Index|reportportal/service-index|5.14.0| +|Jobs|reportportal/service-jobs|5.14.0| + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Rally|reportportal/plugin-bts-rally|5.13.1| +|Monday|reportportal/plugin-bts-monday|1.1.1| +|Azure|reportportal/plugin-bts-azure|5.13.2| +|Jira|reportportal/plugin-bts-jira|5.13.1| +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.1.0| +|Telegram|reportportal/plugin-telegram|1.1.0| +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.13.1| +|Sauce Labs|reportportal/plugin-saucelabs|5.13.1| +|Slack|reportportal/plugin-slack|1.1.2| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.1.1| diff --git a/versioned_docs/version-26.1/releases/Version25.1.12.md b/versioned_docs/version-26.1/releases/Version25.1.12.md new file mode 100644 index 0000000000..6f6155864f --- /dev/null +++ b/versioned_docs/version-26.1/releases/Version25.1.12.md @@ -0,0 +1,44 @@ +--- +sidebar_position: 2 +sidebar_label: Version 25.1.12 +--- + +# Version 25.1.12 + +## 1. Bugs fixed: +- Jira Cloud: Fixed 400 error when posting with Linked Issues/Affects versions; added proper support for array-type fields. +- Core Jobs: cleanLaunch now batches deletions to avoid PostgreSQL’s param limit, restoring reliable retention cleanup. + +## 2. Released services and plugins: +|Service Name|Repository|Tag| +|---|---| --- | +|UI|reportportal/service-ui|5.14.6| +|Auto Analyzer|reportportal/service-auto-analyzer|5.14.6| +|Jobs|reportportal/service-jobs|5.14.1| + + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.13.7| + + +## Rest of services and plugins have the same version as before: +|Service Name|Repository|Tag| +|---|---| --- | +|Authorization|reportportal/service-authorization|5.14.7| +|Api|reportportal/service-api|5.14.4| +|Migrations|reportportal/migrations|5.14.2| +|Index|reportportal/service-index|5.14.0| + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Rally|reportportal/plugin-bts-rally|5.13.1| +|Monday|reportportal/plugin-bts-monday|1.1.1| +|Azure|reportportal/plugin-bts-azure|5.13.2| +|Jira|reportportal/plugin-bts-jira|5.13.1| +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.1.0| +|Telegram|reportportal/plugin-telegram|1.1.0| +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.13.1| +|Sauce Labs|reportportal/plugin-saucelabs|5.13.1| +|Slack|reportportal/plugin-slack|1.1.2| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.1.1| diff --git a/versioned_docs/version-26.1/releases/Version25.1.2.md b/versioned_docs/version-26.1/releases/Version25.1.2.md new file mode 100644 index 0000000000..c98ca36d76 --- /dev/null +++ b/versioned_docs/version-26.1/releases/Version25.1.2.md @@ -0,0 +1,44 @@ +--- +sidebar_position: 12 +sidebar_label: Version 25.1.2 +description: Explore ReportPortal Version 25.1.2 release notes detailing bug fixes for Jira Cloud integration and component health check widget enhancements. +--- + +# Version 25.1.2 + +## 1. Bugs fixed: +1. Fixed component health check widget (table view). +2. Fixed post priority field in Jira Cloud. + +## 2. Released services: +|Service Name|Repository|Tag| +|---|---| --- | +|API|reportportal/service-api|5.14.1| +|UI|reportportal/service-ui|5.14.2| + +**Released plugins:** +|Plugin Name|Repository|Tag| +|---|---| --- | +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.13.2| + +**Rest of services and plugins have the same version as before:** +|Service Name|Repository|Tag| +|---|---| --- | +|Index|reportportal/service-index|5.14.0| +|Jobs|reportportal/service-jobs|5.14.0| +|Migrations|reportportal/migrations|5.14.0| +|Authorization|reportportal/service-authorization|5.14.1| +|Auto Analyzer|reportportal/service-auto-analyzer|5.14.1| + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.1.0| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.1.0| +|Saucelabs|reportportal/plugin-saucelabs|5.13.0| +|Monday|reportportal/plugin-bts-monday|1.1.0| +|Rally|reportportal/plugin-bts-rally|5.13.0| +|Jira|reportportal/plugin-bts-jira|5.13.0| +|Telegram|reportportal/plugin-telegram|1.1.0| +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.13.0| +|Azure|reportportal/plugin-bts-azure|5.13.0| +|Slack|reportportal/plugin-slack|1.1.0| diff --git a/versioned_docs/version-26.1/releases/Version25.1.3.md b/versioned_docs/version-26.1/releases/Version25.1.3.md new file mode 100644 index 0000000000..cd3c056bb7 --- /dev/null +++ b/versioned_docs/version-26.1/releases/Version25.1.3.md @@ -0,0 +1,39 @@ +--- +sidebar_position: 11 +sidebar_label: Version 25.1.3 +description: Explore ReportPortal Version 25.1.3 release notes, featuring Jira Cloud integration fixes, plugin updates, and enhanced system stability for improved test management. +--- + +# Version 25.1.3 + +## 1.Bugs fixed: +Fixed Jira Cloud posting issue related to 'Component' field. + +## 2. Released plugins: +|Plugin Name|Repository|Tag| +|---|---| --- | +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.13.3| + +**Rest of services and plugins have the same version as before:** +|Service Name|Repository|Tag| +|---|---| --- | +|API|reportportal/service-api|5.14.1| +|UI|reportportal/service-ui|5.14.2| +|Index|reportportal/service-index|5.14.0| +|Jobs|reportportal/service-jobs|5.14.0| +|Migrations|reportportal/migrations|5.14.0| +|Authorization|reportportal/service-authorization|5.14.1| +|Auto Analyzer|reportportal/service-auto-analyzer|5.14.1| + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.1.0| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.1.0| +|Saucelabs|reportportal/plugin-saucelabs|5.13.0| +|Monday|reportportal/plugin-bts-monday|1.1.0| +|Rally|reportportal/plugin-bts-rally|5.13.0| +|Jira|reportportal/plugin-bts-jira|5.13.0| +|Telegram|reportportal/plugin-telegram|1.1.0| +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.13.0| +|Azure|reportportal/plugin-bts-azure|5.13.0| +|Slack|reportportal/plugin-slack|1.1.0| diff --git a/versioned_docs/version-26.1/releases/Version25.1.4.md b/versioned_docs/version-26.1/releases/Version25.1.4.md new file mode 100644 index 0000000000..c6a99a2663 --- /dev/null +++ b/versioned_docs/version-26.1/releases/Version25.1.4.md @@ -0,0 +1,40 @@ +--- +sidebar_position: 10 +sidebar_label: Version 25.1.4 +description: Explore ReportPortal Version 25.1.4 release notes detailing bug fixes, plugin updates, and improvements, including SAML login issue resolution. +--- + +# Version 25.1.4 + +## 1. Bugs fixed: +Fixed an issue with SAML login when the email address contains uppercase letters. + +## 2. Released plugins: +| Service Name |Repository|Tag| +|---------------|---| --- | +| Authorization |reportportal/service-authorization|5.14.2| + +**Rest of services and plugins have the same version as before:** +|Service Name|Repository|Tag| +|---|---| --- | +|Index|reportportal/service-index|5.14.0| +|Jobs|reportportal/service-jobs|5.14.0| +|Migrations|reportportal/migrations|5.14.0| +|Authorization|reportportal/service-authorization|5.14.2| +|Api|reportportal/service-api|5.14.1| +|UI|reportportal/service-ui|5.14.2| +|Auto Analyzer|reportportal/service-auto-analyzer|5.14.1| + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.1.0| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.1.0| +|Saucelabs|reportportal/plugin-saucelabs|5.13.0| +|Monday|reportportal/plugin-bts-monday|1.1.0| +|Rally|reportportal/plugin-bts-rally|5.13.0| +|Jira|reportportal/plugin-bts-jira|5.13.0| +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.13.3| +|Telegram|reportportal/plugin-telegram|1.1.0| +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.13.0| +|Azure|reportportal/plugin-bts-azure|5.13.0| +|Slack|reportportal/plugin-slack|1.1.0| diff --git a/versioned_docs/version-26.1/releases/Version25.1.5.md b/versioned_docs/version-26.1/releases/Version25.1.5.md new file mode 100644 index 0000000000..929d5a9325 --- /dev/null +++ b/versioned_docs/version-26.1/releases/Version25.1.5.md @@ -0,0 +1,39 @@ +--- +sidebar_position: 9 +sidebar_label: Version 25.1.5 +description: Explore ReportPortal Version 25.1.5 release notes detailing bug fixes, plugin updates, and improvements to enhance your test automation experience. +--- + +# Version 25.1.5 + +## 1. Bugs fixed: +Fixed an issue with login of new users via AD/LDAP authorizations. + +## 2. Released plugins: +|Service Name|Repository|Tag| +|---|---| --- | +|Authorization|reportportal/service-authorization|5.14.3| + +**Rest of services and plugins have the same version as before:** +|Service Name|Repository|Tag| +|---|---| --- | +|Index|reportportal/service-index|5.14.0| +|Jobs|reportportal/service-jobs|5.14.0| +|Migrations|reportportal/migrations|5.14.0| +|Api|reportportal/service-api|5.14.1| +|UI|reportportal/service-ui|5.14.2| +|Auto Analyzer|reportportal/service-auto-analyzer|5.14.1| + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.1.0| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.1.0| +|Saucelabs|reportportal/plugin-saucelabs|5.13.0| +|Monday|reportportal/plugin-bts-monday|1.1.0| +|Rally|reportportal/plugin-bts-rally|5.13.0| +|Jira|reportportal/plugin-bts-jira|5.13.0| +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.13.3| +|Telegram|reportportal/plugin-telegram|1.1.0| +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.13.0| +|Azure|reportportal/plugin-bts-azure|5.13.0| +|Slack|reportportal/plugin-slack|1.1.0| diff --git a/versioned_docs/version-26.1/releases/Version25.1.6.md b/versioned_docs/version-26.1/releases/Version25.1.6.md new file mode 100644 index 0000000000..39d4871cff --- /dev/null +++ b/versioned_docs/version-26.1/releases/Version25.1.6.md @@ -0,0 +1,110 @@ +--- +sidebar_position: 8 +sidebar_label: Version 25.1.6 +description: "Explore ReportPortal Version 25.1.6 release notes: PostgreSQL 17 upgrade, enhanced launch exports, improved RobotFramework imports, and analyzer updates." +--- + +# Version 25.1.6 + +:::important +**Action Required - Upgrade PostgreSQL:**
+We have upgraded PostgreSQL to version 17. +- Create a full database dump from the current PostgreSQL instance. +- Restore the dump into a PostgreSQL 17 instance. +- Follow the official [migration guide](https://github.com/reportportal/reportportal/wiki/Upgrading-PostgreSQL-for-ReportPortal). +::: + + +## 1. What's changed: +**1. [Launch export improvements](/work-with-reports/OperationsUnderLaunches#export-launches-reports):**
+We've improved the launch report export functionality with new attachment support, better user experience, and enhanced file formatting. These changes make it easier to share comprehensive test reports with stakeholders while providing better visibility into the export process. + +- **Export reports with attachments:**
+ Added the ability to include attachments when exporting launch reports +- **New export modal:**
+ Redesigned export interface with clear options for file format selection and attachment inclusion +- **Structured archive format:**
+ When attachments are included, reports are exported as ZIP files with organized folder structure matching the test hierarchy (Launch → Suite → Test → Step levels) +- **Flexible export formats:**
+ Choose from PDF, XLS, or HTML formats, with or without attachments +- **Real-time export progress notifications:**
+ Added notification banner and system notifications showing export generation status +- **Continuous layout:**
+ Removed page breaks from XLS and HTML export templates for better readability + +**2. [Important Launches feature management](/admin-panel/ServerSettings#features):**
+Administrators can now control the Important Launches functionality at the server level through a new toggle in Server Settings. When disabled, all launches are converted to regular launches and the 'Mark as Important' option is removed from launch menus across all projects. + +**3. RobotFramework import improvements:** +- Enhanced RobotFramework import to properly display HTML screenshots with security restrictions on file paths and attachment types. +- Added support for RobotFramework V7 XML reports with schema version 5, including ISO-8601 timestamps, start/elapsed time format, and updated attribute names (library → owner, timestamp → time). + +**4. Analyzer improvements:**
+Added:
+- Ability to use different ML models for Suggestions +- Ability to switch ML model for Suggestions with ML_MODEL_FOR_SUGGESTIONS environment variable + +Changed:
+- Handling of AMQP messages now moved to separate processes: "train" (only for model training) and "main" (for all other messages) +- Handling of AMQP messages now performed in two separate queues: train and all +- Handling of AMQP messages now performed in in strict order +- Analyzer exchange type is changed to fanout +- Many logging messages were refactored and improved +- Choosing custom/global ML model now performed by Launch ID hash only + +Fixed:
+- 11 Sonar issues + +Removed:
+- analyzer-train service, as it is no longer needed + + +## 2. Bugs fixed: +1. Fixed widget navigation issue where clicking on test items in the "Most failed test-cases table (TOP-50)" widget incorrectly redirected to the latest launch instead of the specific launch where the test item was last executed. +2. Fixed screenshot display issue for XML reports in RobotFramework import plugin. +3. Fixed Slack and Telegram notification toggle setting persistence issue where the enabled state would not save properly and would revert to disabled after page reload or navigation. +4. Fixed project assignment dialog scrolling issue where the "Project" field and "Role" dropdown were not visible when adding new projects to users with more than 5 existing project assignments. +6. Fixed missing "deleted_user" label issue where launches owned by deleted users would show no owner information instead of displaying the appropriate "deleted_user" label. +7. Fixed password validation issue where special symbols like underscore (_) and colon (:) were incorrectly rejected during user creation and password changes, despite being valid special characters. +8. Fixed unnecessary error display when importing empty (0 MB) RobotFramework XML files that would import successfully but show false error messages. +9. Fixed missing success notification when updating dashboard names. +10. Updated duplicate filter naming pattern to use consistent "_copy" and "_copy_N" suffixes, handling filters that already contain these suffixes in their names. +11. Fixed Safari browser error message when copying dashboard configuration to clipboard, now shows success notification instead of false permission error. +12. Added UI validation to prevent creating dashboards with duplicate names. +13. Fixed RobotFramework plugin date parsing error that prevented successful import of XML files. + +## 3. Enhancements Based on Community Feedback +[#2326](https://github.com/reportportal/service-api/issues/2326) Fixed Prometheus metrics export functionality restoring the /api/prometheus endpoint. + +## 4. Released services and plugins: +|Service Name|Repository|Tag| +|---|---| --- | +|Api|reportportal/service-api|5.14.2| +|UI|reportportal/service-ui|5.14.3| +|Migrations|reportportal/migrations|5.14.1| +|Authorization|reportportal/service-authorization|5.14.4| +|Auto Analyzer|reportportal/service-auto-analyzer|5.14.2| + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Azure|reportportal/plugin-bts-azure|5.13.1| +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.13.1| +|Sauce Labs|reportportal/plugin-saucelabs|5.13.1| +|Slack|reportportal/plugin-slack|1.1.1| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.1.1| + +**Rest of services and plugins have the same version as before:** +|Service Name|Repository|Tag| +|---|---| --- | +|Index|reportportal/service-index|5.14.0| +|Jobs|reportportal/service-jobs|5.14.0| + + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.1.0| +|Monday|reportportal/plugin-bts-monday|1.1.0| +|Rally|reportportal/plugin-bts-rally|5.13.0| +|Jira|reportportal/plugin-bts-jira|5.13.0| +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.13.3| +|Telegram|reportportal/plugin-telegram|1.1.0| diff --git a/versioned_docs/version-26.1/releases/Version25.1.7.md b/versioned_docs/version-26.1/releases/Version25.1.7.md new file mode 100644 index 0000000000..2746fdbb88 --- /dev/null +++ b/versioned_docs/version-26.1/releases/Version25.1.7.md @@ -0,0 +1,41 @@ +--- +sidebar_position: 7 +sidebar_label: Version 25.1.7 +description: Explore ReportPortal Version 25.1.7 release notes detailing bug fixes, updated services, and plugin versions to enhance your test automation experience. +--- + +# Version 25.1.7 + +## 1. Bugs fixed: +Fixed base URL generation with credentials for ES/OS healthcheck and indices endpoints. + +## 2. Released services and plugins: +|Service Name|Repository|Tag| +|---|---| --- | +|Auto Analyzer|reportportal/service-auto-analyzer|5.14.3| + + +**Rest of services and plugins have the same version as before:** +|Service Name|Repository|Tag| +|---|---| --- | +|Api|reportportal/service-api|5.14.2| +|UI|reportportal/service-ui|5.14.3| +|Migrations|reportportal/migrations|5.14.1| +|Authorization|reportportal/service-authorization|5.14.4| +|Index|reportportal/service-index|5.14.0| +|Jobs|reportportal/service-jobs|5.14.0| + + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.1.0| +|Monday|reportportal/plugin-bts-monday|1.1.0| +|Rally|reportportal/plugin-bts-rally|5.13.0| +|Jira|reportportal/plugin-bts-jira|5.13.0| +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.13.3| +|Telegram|reportportal/plugin-telegram|1.1.0| +|Azure|reportportal/plugin-bts-azure|5.13.1| +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.13.1| +|Sauce Labs|reportportal/plugin-saucelabs|5.13.1| +|Slack|reportportal/plugin-slack|1.1.1| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.1.1| diff --git a/versioned_docs/version-26.1/releases/Version25.1.8.md b/versioned_docs/version-26.1/releases/Version25.1.8.md new file mode 100644 index 0000000000..fd9467aa12 --- /dev/null +++ b/versioned_docs/version-26.1/releases/Version25.1.8.md @@ -0,0 +1,52 @@ +--- +sidebar_position: 6 +sidebar_label: Version 25.1.8 +description: "Explore ReportPortal Version 25.1.8 release notes: enhanced Auto-Analysis settings, improved retry handling, and updated service and plugin versions." +--- + +# Version 25.1.8 + +## 1. What's changed: +ReportPortal now lets you choose whether to analyze the latest retry or the longest retry for more accurate defect assignment. +Available in Auto-Analysis settings. Admins and Project Managers can modify; others can view. + +Docs updated: +- [Auto-Analysis Settings](/analysis/AutoAnalysisOfLaunches#defect-assignment-based-on-the-longest-retry) +- [Manual Auto-Analysis](/analysis/AutoAnalysisOfLaunches#manual-analysis) +- [Immediate Auto-Analysis](/analysis/ImmediateAutoAnalysis) + +## 2. Released services: +|Service Name|Repository|Tag| +|---|---| --- | +|Api|reportportal/service-api|5.14.3| +|UI|reportportal/service-ui|5.14.4| +|Authorization|reportportal/service-authorization|5.14.5| +|Migrations|reportportal/migrations|5.14.2| +|Auto Analyzer|reportportal/service-auto-analyzer|5.14.4| + + +**Released plugins:** +|Plugin Name|Repository|Tag| +|---|---| --- | +|Azure|reportportal/plugin-bts-azure|5.13.2| +|Jira|reportportal/plugin-bts-jira|5.13.1| +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.13.4| +|Rally|reportportal/plugin-bts-rally|5.13.1| +|Monday|reportportal/plugin-bts-monday|1.1.1| + + +**Rest of services and plugins have the same version as before:** +|Service Name|Repository|Tag| +|---|---| --- | +|Index|reportportal/service-index|5.14.0| +|Jobs|reportportal/service-jobs|5.14.0| + + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.1.0| +|Telegram|reportportal/plugin-telegram|1.1.0| +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.13.1| +|Sauce Labs|reportportal/plugin-saucelabs|5.13.1| +|Slack|reportportal/plugin-slack|1.1.1| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.1.1| diff --git a/versioned_docs/version-26.1/releases/Version25.1.9.md b/versioned_docs/version-26.1/releases/Version25.1.9.md new file mode 100644 index 0000000000..18c9364133 --- /dev/null +++ b/versioned_docs/version-26.1/releases/Version25.1.9.md @@ -0,0 +1,83 @@ +--- +sidebar_position: 5 +sidebar_label: Version 25.1.9 +--- + +# Version 25.1.9 + +## 1. What's changed: + +**1. Improved XLS Export Format**
+Redesigned XLS export template with removed merged cells and proper numeric data formatting. Numeric values are now exported as true numeric cell types, enabling proper calculations, sorting, and filtering operations while maintaining visual readability. + +**2. New Tab Navigation:**
+Test case links in the ["Most Failed Test-Cases (TOP-50)" widget](/dashboards-and-widgets/MostFailedTestCasesTableTop50) now open in new browser tabs with visual arrow indicators on hover, providing seamless navigation without losing your current context. + +**3. History Table Improvement - Cell Preview Options:**
+Introduced new monitoring capabilities in the History table with customizable cell preview options. Users can now: +- Monitor custom performance metrics and response rates +- Track any measurable attribute relevant to their workflow +- Set threshold-based highlighting to identify items that fall outside acceptable parameters +- Make data-driven decisions based on historical patterns and trend analysis + +Learn more about [cell preview improvements](/work-with-reports/HistoryOfLaunches#cell-preview-options). + +**4. Amazon Application Load Balancer (ALB) Support**
+We are excited to announce that our [Helm chart](https://github.com/reportportal/kubernetes) now supports deployment with Amazon Application Load Balancer (ALB). This enhancement makes it easier to integrate ReportPortal with AWS environments using ALB. For setup instructions, check out our [ALB deployment guide](https://github.com/reportportal/kubernetes/blob/master/docs/alb-deployment-guide.md) + +## 2. Bugs fixed: + +**1. Navigation improvements:**
+Fixed "Set up Own Integration" link to properly open in new browser tab instead of replacing current page. + +**2. Import & Export Fixes:** +- Fixed missing attachment file extensions in exported ZIP files, ensuring attachments can be opened correctly. +- Resolved issue where attachment names were missing from exported reports when including attachments +- Corrected export functionality for launches owned by deleted users - files now export properly with data instead of returning empty files with 500 errors. +- Resolved screenshot display issue for XML reports in RobotFramework import plugin. +- Fixed unnecessary error display when importing empty (0 MB) RobotFramework XML files. + +**3. User Authentication** +- Resolved password validation issue that incorrectly rejected valid special characters like underscore (_) and colon (:). +- Fixed API Key authentication issue for keys containing two dots in the name. + +**4. Performance & Integration Fixes:** +- Resolved Unique Errors Analysis failures for launches with large logs by addressing RabbitMQ message size limit constraints. +- Fixed JIRA Cloud integration issue preventing successful ticket posting (tickets are now created properly without error messages). + + +## 3. Released services and plugins: + +|Service Name|Repository|Tag| +|---|---| --- | +|Api|reportportal/service-api|5.14.4| +|UI|reportportal/service-ui|5.14.5| +|Authorization|reportportal/service-authorization|5.14.6| +|Auto Analyzer|reportportal/service-auto-analyzer|5.14.5| + + +|Plugin Name|Repository| Tag | +|---|---|--------| +|Jira Cloud|reportportal/plugin-bts-jira-cloud| 5.13.5 | + + +**Rest of services and plugins have the same version as before:** +|Service Name|Repository|Tag| +|---|---| --- | +|Migrations|reportportal/migrations|5.14.2| +|Index|reportportal/service-index|5.14.0| +|Jobs|reportportal/service-jobs|5.14.0| + + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Rally|reportportal/plugin-bts-rally|5.13.1| +|Monday|reportportal/plugin-bts-monday|1.1.1| +|Azure|reportportal/plugin-bts-azure|5.13.2| +|Jira|reportportal/plugin-bts-jira|5.13.1| +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.1.0| +|Telegram|reportportal/plugin-telegram|1.1.0| +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.13.1| +|Sauce Labs|reportportal/plugin-saucelabs|5.13.1| +|Slack|reportportal/plugin-slack|1.1.1| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.1.1| diff --git a/versioned_docs/version-26.1/releases/Version25.1.md b/versioned_docs/version-26.1/releases/Version25.1.md new file mode 100644 index 0000000000..8e778c0371 --- /dev/null +++ b/versioned_docs/version-26.1/releases/Version25.1.md @@ -0,0 +1,138 @@ +--- +sidebar_position: 14 +sidebar_label: Version 25.1 +description: ReportPortal v25.1 release notes with Spring Boot 3 upgrade, enhanced test execution reporting, and improved performance. +--- + +# Version 25.1 + +**Action Required 1 - Update all the plugins on the instance:**
+In ReportPortal 25.1, we've upgraded to Spring Boot 3. Starting with this version, only plugins built with Spring Boot 3 are supported. Please install the latest plugin versions specified in the 25.1 release notes. + +**Action Required 2 - Change API key format:**
+API keys containing special characters are no longer supported and will not function correctly.
+If your API keys contain special characters, please regenerate them to ensure continued access. The updated format supports only these characters: ```[a-zA-Z0-9-._~+/]``` + +**Action Required 3 - Update your SAML integration:**
+Please update your existing SAML integration to use the new standard callback URL format: ```/uat/login/saml2/sso/{saml-provider-name}```
+This ensures compatibility with the latest updates and improved security practices.
+More details can be found in our [SAML documentation](/plugins/authorization/SamlProviders/Overview/). + +**Important Compatibility Notice:**
+Java agents released prior to 2022 may experience compatibility issues with ReportPortal 25.1. Please verify agent compatibility and consider upgrading to newer agent versions to ensure full functionality. + +## 1. What's Changed: + +1. **[Footer link updates](/admin-panel/ServerSettings#links--branding)**:
+ Admin users can now customize footer links in ReportPortal by adding new links, naming them, and rearranging their order. This allows users to easily access important shortcuts relevant to their organization. + +2. **Dashboard sorting**:
+ Dashboards are now sorted by creation date (newest first) in the UI. You can also sort the dashboard list by creation date via the API. + +3. **New system notifications**:
+ System notifications no longer overlap actionable items or block other elements. We've reworked them to be shorter (not full width) and added an 'x' button for easy dismissal. + +4. **Project Activity Panel update**:
A new criteria "Update test item" has been added to the Project Activity Panel widget. This displays activity when a user changes an item's defect type or status, or when Auto Analysis changes an item's defect type. + +6. **SCIM user filtering:**
+ For users of our enterprise "[SCIM server](/features/SCIMServerFeature)" feature, we've added the ability to filter SCIM-type users. + + +## 2. Technical improvements: + +1. **Spring Boot 3:**
+ ReportPortal and all plugins have migrated to Spring Boot 3. +2. **Improved launch importing mechanism for RobotFramework and JUnit:**
+ Now the launch import is handling like a regular launch reporting using the asynchronous endpoints, that increases stability and durability of the service-API and speeds up the import processing. +3. **New environment variable for JUnit import plugin:**
+ Introduced a new environment variable to regulate the loading of the default import plugin (JUnit import plugin) at startup. +4. **Analyzer updates:**
+ +Added: +- AMQP_MAX_RETRY_TIME, AMQP_INITIAL_RETRY_INTERVAL, AMQP_BACKOFF_FACTOR, AMQP_HEARTBEAT_INTERVAL environment variables to configure AMQP client +- ANALYZER_ENABLE_MEMORY_DUMP environment variable to print memory dump on healthcheck calls for debugging purpose +- ES_BOOST_MA environment variable to boost manually analyzed test cases in ES + +Changed: +- AMQP client was rewritten to better handle connection issues +- uWSGI version updated to 2.0.29 +- Improved the way of URL and path extraction on data preparation stage +- AMQP exchange declaration now performs on every connection, to avoid issues with exchange not being declared on RabbitMQ restarts +- ES_BOOST_AA environment variable default value changed to 0.0 +- ES_TIME_WEIGHT_DECAY environment variable default value changed to 0.999 +- flask-cors dependency updated to 6.0.0 to address vulnerabilities + +Fixed: +- 22 Sonar issues + +## 3. Bugs fixed: +1. **Dashboard cloning update**:
+ We've updated the UX flow for creating dashboards based on pasted configurations to ensure its smooth work. + +2. **Slack/Telegram notification timing fix**:
+ Fixed an issue where Slack and Telegram notifications were sent with incorrect defect type data before Auto Analysis completed. Notifications now wait for Auto Analysis to finish, ensuring accurate defect type information is included. + +3. **Dashboard management after page reload fix**:
Fixed an issue where newly created dashboards would disappear after page reload, making them impossible to manage. Dashboards now remain accessible and manageable after page refresh. + +4. **Slack Integration:**
+ Fixed launch finish issue when invalid webhook URL is configured, preventing 400/403 errors during launch finish. + +5. **Notifications:**
+ Fixed display of placeholder labels in Slack/Telegram notifications when launch has no attributes. + +6. **Jira Cloud issue:**
+ Fixed Jira Cloud integration validation issue where valid BTS links were incorrectly rejected. + +7. **Attributes:**
+ Fixed attribute key/value truncation when colon ":" symbol is present - attributes now display complete text as saved in database. + +8. **Timestamps issue:**
+ Fixed test reporting issue with incorrect timestamps where tests were not reported correctly due to "startTime" timestamp errors in V24.2 .Net integration. + +## 4. Enhancements Based on Community Feedback: + +[#80](https://github.com/reportportal/reportportal/issues/80): Jira Cloud Plugin: Fixed URL validation preventing connections to *.jira.com domains.
+[#2488](https://github.com/reportportal/reportportal/issues/2488): GitHub Authorization: Fixed organization membership validation preventing valid organization members from logging in.
+[#2454](https://github.com/reportportal/reportportal/issues/2454): JIRA Server Sub-task Creation Error: Fixed paren)t issue data formatting that prevented creating sub-tasks in JIRA Server integration. + +## 5. CVE addressed: + +**Service-api:** +[CVE-2024-38816](https://github.com/advisories/GHSA-cx7f-g6mp-7hqm), [CVE-2024-38819](https://github.com/advisories/GHSA-g5vr-rgqm-vf78), [CVE-2025-22228](https://github.com/advisories/GHSA-mg83-c7gq-rv5c), [CVE-2024-38827](https://github.com/advisories/GHSA-q3v6-hm2v-pw99), [CVE-2023-24998](https://github.com/advisories/GHSA-hfrx-6qgj-fp6c), [CVE-2023-3635](https://github.com/advisories/GHSA-w33c-445m-f8w7), [CVE-2023-34036](https://github.com/advisories/GHSA-7m5c-fgwf-mwph), [CVE-2023-46120](https://github.com/advisories/GHSA-mm8h-8587-p46h), [CVE-2024-12798](https://github.com/advisories/GHSA-pr98-23f8-jwxv) + +**Service-authorization:** +[CVE-2025-22228](https://github.com/advisories/GHSA-mg83-c7gq-rv5c), [CVE-2024-38816](https://github.com/advisories/GHSA-cx7f-g6mp-7hqm), [CVE-2024-38819](https://github.com/advisories/GHSA-g5vr-rgqm-vf78), [CVE-2023-24998](https://github.com/advisories/GHSA-hfrx-6qgj-fp6c), [CVE-2023-3635](https://github.com/advisories/GHSA-w33c-445m-f8w7), [CVE-2023-34036](https://github.com/advisories/GHSA-7m5c-fgwf-mwph), [CVE-2023-46120](https://github.com/advisories/GHSA-mm8h-8587-p46h), [CVE-2023-0833](https://github.com/advisories/GHSA-8fhc-q55v-jvx2), [CVE-2024-38829](https://github.com/advisories/GHSA-mqvr-2rp8-j7h4), [CVE-2024-38827](https://github.com/advisories/GHSA-q3v6-hm2v-pw99), [CVE-2023-1932](https://github.com/advisories/GHSA-x83m-pf6f-pf9g), [CVE-2024-12798](https://github.com/advisories/GHSA-pr98-23f8-jwxv), [CVE-2023-1370](https://github.com/advisories/GHSA-493p-pfq6-5258), [CVE-2024-38808](https://github.com/advisories/GHSA-9cmq-m9j5-mvww), [CVE-2023-34055](https://github.com/advisories/GHSA-jjfh-589g-3hjx), [CVE-2025-24970](https://github.com/advisories/GHSA-4g8c-wm8x-jfhw), [CVE-2020-13936](https://github.com/advisories/GHSA-59j4-wjwp-mw9m) + +**Service-jobs:** +[CVE-2024-12798](https://github.com/advisories/GHSA-pr98-23f8-jwxv) + + +## 6. Released services: +|Service Name|Repository| Tag | +|---|---|--------| +|Index|reportportal/service-index| 5.14.0 | +|Authorization|reportportal/service-authorization| 5.14.0 | +|UI|reportportal/service-ui| 5.14.1 | +|API|reportportal/service-api| 5.14.0 | +|Jobs|reportportal/service-jobs| 5.14.0 | +|Migrations|reportportal/migrations| 5.14.0 | +|Auto Analyzer|reportportal/service-auto-analyzer| 5.14.1 | + +**Released plugins:** +|Plugin Name|Repository|Tag| +|---|---| --- | +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.1.0| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.1.0| +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.13.1| +|Saucelabs|reportportal/plugin-saucelabs|5.13.0| +|Monday|reportportal/plugin-bts-monday|1.1.0| +|Rally|reportportal/plugin-bts-rally|5.13.0| +|Jira|reportportal/plugin-bts-jira|5.13.0| +|Telegram|reportportal/plugin-telegram|1.1.0| +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.13.0| +|Azure|reportportal/plugin-bts-azure|5.13.0| +|Slack|reportportal/plugin-slack|1.1.0| + + +## 7. Migration Guide. +- [How to migrate to Reportportal v25.1](https://github.com/reportportal/reportportal/wiki/%F0%9F%9A%80--Migration-guide-(NEW)#migration-to-251) diff --git a/versioned_docs/version-26.1/releases/Version25.2.md b/versioned_docs/version-26.1/releases/Version25.2.md new file mode 100644 index 0000000000..1c09e79b4b --- /dev/null +++ b/versioned_docs/version-26.1/releases/Version25.2.md @@ -0,0 +1,98 @@ +--- +sidebar_position: 1 +sidebar_label: Version 25.2 +--- + +# Version 25.2 + +## 1. What's Changed: + +**1. [Premium feature](/terms-and-conditions/PremiumFeatures) (Subscribers-only): [Test Executions page](/features/TestExecutions)**
+View and manage individual test cases across multiple launches in one flat list — no need to drill through launch hierarchy. Includes launch-level filters, test-level search & rich filters and customizable columns. + +**2. [Improved Log experience](/configuration/ProjectSettings#log-types)**
+The Log view is now more powerful and customizable: +- Added per-user appearance settings (full-width layout, colorized backgrounds based on Log Types, disable log collapsing, adjustable log size, toggle pagination / infinite scroll). +- Navigation is faster with error log jumping (Prev/Next) and search + “jump to” highlighting across pages. +- Expanded Log Types management in Project Settings: create/edit/delete custom types and configure up to 6 types in the log filter slider. + +**3. Minimum password length setting**
+Added server setting + UI validation updates across registration, user creation, and password change flows (admin-only). + +## 2. Bugs fixed: + +**1. Project Settings - Notifications**
+Updated “All Notifications” toggle description; prevented adding attributes with empty Value. + +**2. UI loaders**
+Fixed vertical loader alignment for Export Report (Include Attachments) and Demo Data generation (now horizontal). + +**3. Server Settings UI**
+Fixed Backspace editing in Password length field. + +**4. Make decision modal**
+Fixed logs background color (no red background). + +**5. Backend performance**
+Sped up finish test_item path query by adding ti.launch_id (significant execution time reduction). + +**6. Jobs**
+Fixed InterruptBrokenLaunchesJob (job execution, replica concurrency/locks, null counter handling); added missing “finish” log entry; reduced irrelevant ERROR logs when email server isn’t configured. + +**7. Auth/API**
+Removed GET /api/v1/user/registration/info endpoint and related UI validation. + +**8. Swagger Logs API**
+Fixed 500 error on log creation; endpoints now return 201 Created. + +**9. Jira Server**
+Fixed Labels field to save multiple values (not just the first). + +**10. DeleteExpiredUsers job**
+Now deletes empty Personal projects correctly and avoids index deletion errors. + +## 3. CVE addressed: + +**Service-api**
+[CVE-2025-55752](https://github.com/advisories/GHSA-wmwf-9ccg-fff5), [CVE-2025-49124](https://github.com/advisories/GHSA-42wg-hm62-jcwg), [CVE-2025-48988](https://github.com/advisories/GHSA-h3gc-qfqq-6h8f), [CVE-2025-53506](https://github.com/advisories/GHSA-25xr-qj8w-c4vf), [CVE-2025-48989](https://github.com/advisories/GHSA-gqp3-2cvr-x8m3), [CVE-2025-52520](https://github.com/advisories/GHSA-wr62-c79q-cv37), [CVE-2025-61795](https://github.com/advisories/GHSA-hgrr-935x-pq79), [CVE-2025-55668](https://github.com/advisories/GHSA-23hv-mwm6-g8jf), [CVE-2025-49125](https://github.com/advisories/GHSA-wc4r-xq3c-5cf3), [CVE-2025-58056](https://github.com/advisories/GHSA-fghv-69vj-qj49), [CVE-2025-58057](https://github.com/advisories/GHSA-3p8m-j85q-pgmj), [CVE-2025-55163](https://github.com/advisories/GHSA-prj3-ccx8-p6x4), [CVE-2025-53864](https://github.com/advisories/GHSA-xwmg-2g98-w7v9), [CVE-2025-48924](https://github.com/advisories/GHSA-j288-q9x7-2f5v), [CVE-2025-49146](https://github.com/advisories/GHSA-hq9p-pm7w-8p54), [CVE-2025-59952](https://github.com/advisories/GHSA-h7rh-xfpj-hpcm), [CVE-2025-41249](https://github.com/advisories/GHSA-jmp9-x22r-554x), [CVE-2025-41248](https://github.com/advisories/GHSA-8v5q-rhf3-jphm), [CVE-2025-41242](https://github.com/advisories/GHSA-r936-gwx5-v52f), [CVE-2025-41234](https://github.com/advisories/GHSA-6r3c-xf4w-jxjm), [CVE-2025-7962](https://github.com/advisories/GHSA-9342-92gg-6v29), [CVE-2025-11226](https://github.com/advisories/GHSA-25qh-j22f-pwp8) + +**Service-authorization**
+[CVE-2025-55752](https://github.com/advisories/GHSA-wmwf-9ccg-fff5), [CVE-2025-49124](https://github.com/advisories/GHSA-42wg-hm62-jcwg), [CVE-2025-48988](https://github.com/advisories/GHSA-h3gc-qfqq-6h8f), [CVE-2025-53506](https://github.com/advisories/GHSA-25xr-qj8w-c4vf), [CVE-2025-48989](https://github.com/advisories/GHSA-gqp3-2cvr-x8m3), [CVE-2025-52520](https://github.com/advisories/GHSA-25xr-qj8w-c4vf), [CVE-2025-61795](https://github.com/advisories/GHSA-hgrr-935x-pq79), [CVE-2025-55668](https://github.com/advisories/GHSA-23hv-mwm6-g8jf), [CVE-2025-49125](https://github.com/advisories/GHSA-wc4r-xq3c-5cf3), [CVE-2025-58056](https://github.com/advisories/GHSA-fghv-69vj-qj49), [CVE-2025-58057](https://github.com/advisories/GHSA-3p8m-j85q-pgmj),[CVE-2025-55163](https://github.com/advisories/GHSA-prj3-ccx8-p6x4), [CVE-2025-48924](https://github.com/advisories/GHSA-j288-q9x7-2f5v), [CVE-2025-41249](https://github.com/advisories/GHSA-jmp9-x22r-554x), [CVE-2025-41248](https://github.com/advisories/GHSA-8v5q-rhf3-jphm), [CVE-2025-41242](https://github.com/advisories/GHSA-r936-gwx5-v52f), [CVE-2025-41234](https://github.com/advisories/GHSA-6r3c-xf4w-jxjm), [CVE-2025-11226](https://github.com/advisories/GHSA-25qh-j22f-pwp8) + +**Service-jobs**
+[CVE-2025-55752](https://github.com/advisories/GHSA-wmwf-9ccg-fff5), [CVE-2025-49124](https://github.com/advisories/GHSA-42wg-hm62-jcwg), [CVE-2025-48988](https://github.com/advisories/GHSA-h3gc-qfqq-6h8f), [CVE-2025-53506](https://github.com/advisories/GHSA-25xr-qj8w-c4vf), [CVE-2025-48989](https://github.com/advisories/GHSA-gqp3-2cvr-x8m3), [CVE-2025-52520](https://github.com/advisories/GHSA-25xr-qj8w-c4vf), [CVE-2025-61795](https://github.com/advisories/GHSA-hgrr-935x-pq79), [CVE-2025-55668](https://github.com/advisories/GHSA-23hv-mwm6-g8jf), [CVE-2025-49125](https://github.com/advisories/GHSA-wc4r-xq3c-5cf3), [CVE-2025-58056](https://github.com/advisories/GHSA-fghv-69vj-qj49), [CVE-2025-58057](https://github.com/advisories/GHSA-3p8m-j85q-pgmj),[CVE-2025-55163](https://github.com/advisories/GHSA-prj3-ccx8-p6x4), [CVE-2025-48924](https://github.com/advisories/GHSA-j288-q9x7-2f5v), [CVE-2025-41249](https://github.com/advisories/GHSA-jmp9-x22r-554x), [CVE-2025-41242](https://github.com/advisories/GHSA-r936-gwx5-v52f), [CVE-2025-41234](https://github.com/advisories/GHSA-6r3c-xf4w-jxjm), [CVE-2025-11226](https://github.com/advisories/GHSA-25qh-j22f-pwp8) + +**Service-migrations**
+[CVE-2025-30204](https://github.com/advisories/GHSA-mh63-6h87-95cp), [CVE-2025-22868](https://github.com/advisories/GHSA-6v2p-p543-phr9) + +# 4. **Released services:** +|Service Name|Repository|Tag| +|---|---| --- | +|Index|reportportal/service-index|5.15.0| +|Authorization|reportportal/service-authorization|5.15.0| +|UI|reportportal/service-ui|5.15.0| +|API|reportportal/service-api|5.15.0| +|Jobs|reportportal/service-jobs|5.15.0| +|Migrations|reportportal/migrations|5.15.0| +|Auto Analyzer|reportportal/service-auto-analyzer|5.15.0| + +**Released plugins:** +|Plugin Name|Repository|Tag| +|---|---| --- | +|Jira|reportportal/plugin-bts-jira|5.15.0| + +**Rest of services and plugins have the same version as before:** +|Plugin Name|Repository|Tag| +|---|---| --- | +|Rally|reportportal/plugin-bts-rally|5.13.1| +|Monday|reportportal/plugin-bts-monday|1.1.1| +|Azure|reportportal/plugin-bts-azure|5.13.2| +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.1.0| +|Telegram|reportportal/plugin-telegram|1.1.0| +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.13.1| +|Sauce Labs|reportportal/plugin-saucelabs|5.13.1| +|Slack|reportportal/plugin-slack|1.1.2| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.1.1| + +# 5. Migration Guide. +[How to migrate to Reportportal v25.2.](https://github.com/reportportal/reportportal/wiki/Migration-v25) diff --git a/versioned_docs/version-26.1/releases/_category_.json b/versioned_docs/version-26.1/releases/_category_.json new file mode 100644 index 0000000000..8bdc4793b2 --- /dev/null +++ b/versioned_docs/version-26.1/releases/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Releases", + "position": "6", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.1/releases/archived-releases/Version23.1.md b/versioned_docs/version-26.1/releases/archived-releases/Version23.1.md new file mode 100644 index 0000000000..72ad1873c7 --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/Version23.1.md @@ -0,0 +1,84 @@ +--- +sidebar_position: 2 +sidebar_label: Version 23.1 +description: ReportPortal v23.1 archived release notes with new logo, enhanced features. +--- + +# Version 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). + +## 5. [Migration guide](https://github.com/reportportal/reportportal/wiki/Migration-to-ReportPortal-v.23.1) + +## 6. 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/versioned_docs/version-26.1/releases/archived-releases/Version23.2.md b/versioned_docs/version-26.1/releases/archived-releases/Version23.2.md new file mode 100644 index 0000000000..a3e3e73ae6 --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/Version23.2.md @@ -0,0 +1,101 @@ +--- +sidebar_position: 1 +sidebar_label: Version 23.2 +description: ReportPortal v23.2 release notes with new monitoring features, data retention policies, and enhanced test automation reporting tools capabilities. +--- + +# Version 23.2 + +## 1. What's Changed: + +- **New feature - [Monitoring](/admin-panel/EventMonitoring):** + +A new Event Monitoring interface has been introduced, providing administrators with a convenient means to review all activities at the Project level through the Search & Filter functionality within the Admin panel. Events at the instance level are not visible on the UI, but they are securely stored in the database. This data can be easily transmitted to SIEM systems for future monitoring and analysis. + +- **[Project Activity Panel](/dashboards-and-widgets/ProjectActivityPanel) Adjustments:** + +The list of project activities displayed in the Project Activity Panel has been expanded. + +:::important + +Please take into account that starting from this point forward, all events will have a new format for their storing in the database. Consequently, all events which have been stored prior to version 23.2 will be deleted. +::: + +- **New feature – [Delete Account](/user-account/DeleteAccount):** + +Now instance administrators can empower users to delete their accounts and obfuscate associated personal data. + +- **New feature – Personal [Data Retention policy](/user-account/DataRetentionProcedure):** + +ReportPortal now offers the option to set a retention period for collected personal data during instance configuration. + +:::note +Please note that Features 3 and 4 are configurable, giving you the flexibility to decide whether you want to use these features or not. If you choose to utilize them, you can configure them using environmental variables. Further details can be found in the respective documentation. +::: + +- **New feature – [API Key](/log-data-in-reportportal/HowToGetAnAccessTokenInReportPortal#2-authorization-with-users-api-key-for-agents):** + +You can now generate as many API Keys as you need. You also have the ability to keep track of the creation date of API Keys and revoke any that are unused. Old tokens will still continue to function. Additionally, easy identification of the purpose of API Keys is facilitated through the use of prefixes. + +- **[Gitlab CI integration](/26.1/quality-gates/IntegrationWithCICD/IntegrationWithGitLabCI) Workaround:** + +## 2. Small updates: + +- **“Load current step” functionality adjustments:** + +Minor refinements have been applied to the "Load current step" functionality. Now, you can access the "Load current step" feature by hovering over a step. + +- **Download file name changes:** + +Attachment details and download format have been revised: files are now downloaded with the real file names. + +- **Configuration examples updates:** + +Configuration examples on the user profile page have been updated. + +## 3. Technical Improvements: + +- Storage layer now supports S3 storage, allowing data consolidation into a single bucket for the entire instance. + +- We’ve added postfix for bucket names in binary storage. + +- We’ve updated dependencies with security fixes: service-auto-analyzer and service-metrics-gatherer. + +- The issue of slow Log View loading when STEP has a complex structure of the nested steps nesting and count of them has been resolved and now up to 7x faster. + +- Service-jobs stability is improved during the reporting logs with the large stack traces. + +- We’ve optimized the attachments cleaning mechanism that allows us to increase the default value of the chunk_size by 20 times: from 1000 to 20000 in the docker compose and Kubernetes deployments. + +- Content Security Policy has been extended by adding the .browserstack.com. Now you can embed videos as a markdown from BrowserStack in order to ease failed tests troubleshooting. + +- Job for Flushing Demo data works as expected thanks to sql error fix. + +- We’ve updated react to version 17 and its dependencies to reduce the number of vulnerabilities and have a smooth transition to version 18. + +- Issues arising when service-api is starting (connected to bucket structure update or the binary storage type update) while there are integrations to external services like Jira have been resolved. Old logic for migrating integration salt has been removed. + +- Launches import via API is possible with additional parameters: name, description, attributes. + +- Rename notIssue parameter for import launch : For the end-point POST/v1 /{projectName} /launch /import parameter notIssue is renamed to skippedIsNotIssue. Logic remains the same. + +## 4. Enhancements Based on Community Feedback: + +- [#1815](https://github.com/reportportal/reportportal/issues/1815), [#1795](https://github.com/reportportal/reportportal/issues/1795), [#957](https://github.com/reportportal/reportportal/issues/957), [#1644](https://github.com/reportportal/reportportal/issues/1644), [#1590](https://github.com/reportportal/reportportal/issues/1590). All ReportPortal images now support multiple platforms: linux/amd64 + +- [#1970](https://github.com/reportportal/reportportal/issues/1970). Deserialization issue has been fixed. + +## 5. Released versions + +|Service Name|Repository|Tag| +|---|---| --- | +|Index|reportportal/service-index|5.10.0| +|Authorization|reportportal/service-authorization|5.10.0| +|UI|reportportal/service-ui|5.10.0| +|API|reportportal/service-api|5.10.0| +|Jobs|reportportal/service-jobs|5.10.0| +|Migrations|reportportal/migrations|5.10.0| +|Auto Analyzer|reportportal/service-auto-analyzer|5.10.0| +|Metrics Gatherer|reportportal/service-metrics-gatherer|5.10.0| + +## 6. [Migration guide](https://github.com/reportportal/reportportal/wiki/Migration-to-ReportPortal-v.23.2) diff --git a/versioned_docs/version-26.1/releases/archived-releases/Version3.3.2-1.md b/versioned_docs/version-26.1/releases/archived-releases/Version3.3.2-1.md new file mode 100644 index 0000000000..e6f29955ed --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/Version3.3.2-1.md @@ -0,0 +1,14 @@ +--- +sidebar_position: 37 +sidebar_label: Version 3.3.2-1 +description: ReportPortal v3.3.2-1 archived release notes with bug fixes and enhanced test automation reporting tools stability. +--- + +# 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/versioned_docs/version-26.1/releases/archived-releases/Version3.3.2.md b/versioned_docs/version-26.1/releases/archived-releases/Version3.3.2.md new file mode 100644 index 0000000000..2805643db8 --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/Version3.3.2.md @@ -0,0 +1,20 @@ +--- +sidebar_position: 38 +sidebar_label: Version 3.3.2 +description: ReportPortal v3.3.2 archived release notes with new features and enhanced test automation reporting tools capabilities. +--- + +# 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/versioned_docs/version-26.1/releases/archived-releases/Version4.0.0.md b/versioned_docs/version-26.1/releases/archived-releases/Version4.0.0.md new file mode 100644 index 0000000000..ffd8d45d48 --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/Version4.0.0.md @@ -0,0 +1,149 @@ +--- +sidebar_position: 36 +sidebar_label: Version 4.0.0 +description: ReportPortal v4.0.0 archived release notes with major updates and enhanced test automation reporting tools features. +--- + +# 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/versioned_docs/version-26.1/releases/archived-releases/Version4.1.0.md b/versioned_docs/version-26.1/releases/archived-releases/Version4.1.0.md new file mode 100644 index 0000000000..d005ae27d6 --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/Version4.1.0.md @@ -0,0 +1,17 @@ +--- +sidebar_position: 35 +sidebar_label: Version 4.1.0 +description: ReportPortal v4.1.0 archived release notes with new features. +--- + +# 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/versioned_docs/version-26.1/releases/archived-releases/Version4.2.0.md b/versioned_docs/version-26.1/releases/archived-releases/Version4.2.0.md new file mode 100644 index 0000000000..c8b79f30d1 --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/Version4.2.0.md @@ -0,0 +1,41 @@ +--- +sidebar_position: 34 +sidebar_label: Version 4.2.0 +description: ReportPortal v4.2.0 archived release notes with new features. +--- + +# 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/versioned_docs/version-26.1/releases/archived-releases/Version4.3.md b/versioned_docs/version-26.1/releases/archived-releases/Version4.3.md new file mode 100644 index 0000000000..c4857ed965 --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/Version4.3.md @@ -0,0 +1,28 @@ +--- +sidebar_position: 33 +sidebar_label: Version 4.3 +description: ReportPortal v4.3 archived release notes with new features. +--- + +# 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/versioned_docs/version-26.1/releases/archived-releases/Version5.0.0.md b/versioned_docs/version-26.1/releases/archived-releases/Version5.0.0.md new file mode 100644 index 0000000000..2104e24930 --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/Version5.0.0.md @@ -0,0 +1,92 @@ +--- +sidebar_position: 31 +sidebar_label: Version 5.0.0 +description: ReportPortal v5.0.0 archived release notes with major updates. +--- + +# 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/DeployWithDocker) +- [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](/plugins/ManagePlugins#upload-plugin) from our Bintray repository, and drag-n-drop it ReportPortal in Administrative section -> Plugins. + +Available plugins to download: +- [Jira](/plugins/bug-tracking/AtlassianJiraServer) +- [Rally](/plugins/bug-tracking/Rally) +- [SauceLabs](/plugins/other/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/versioned_docs/version-26.1/releases/archived-releases/Version5.0RC.md b/versioned_docs/version-26.1/releases/archived-releases/Version5.0RC.md new file mode 100644 index 0000000000..ddd2bb4b73 --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/Version5.0RC.md @@ -0,0 +1,67 @@ +--- +sidebar_position: 32 +sidebar_label: Version 5.0RC +description: ReportPortal v5.0RC archived release candidate notes with new features. +--- + +# 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/versioned_docs/version-26.1/releases/archived-releases/Version5.1.0.md b/versioned_docs/version-26.1/releases/archived-releases/Version5.1.0.md new file mode 100644 index 0000000000..9f4038900d --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/Version5.1.0.md @@ -0,0 +1,55 @@ +--- +sidebar_position: 30 +sidebar_label: Version 5.1.0 +description: ReportPortal v5.1.0 archived release notes with enhanced security, encryption updates. +--- + +# 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. +::: + +## 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 +[Migration guide](https://github.com/reportportal/reportportal/wiki/Migration-to-ReportPortal-v.5.1) diff --git a/versioned_docs/version-26.1/releases/archived-releases/Version5.2.0.md b/versioned_docs/version-26.1/releases/archived-releases/Version5.2.0.md new file mode 100644 index 0000000000..a7bcf13b0d --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/Version5.2.0.md @@ -0,0 +1,19 @@ +--- +sidebar_position: 29 +sidebar_label: Version 5.2.0 +description: ReportPortal v5.2.0 archived release notes with new features. +--- + +# 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/versioned_docs/version-26.1/releases/archived-releases/Version5.2.1.md b/versioned_docs/version-26.1/releases/archived-releases/Version5.2.1.md new file mode 100644 index 0000000000..25bebcef5c --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/Version5.2.1.md @@ -0,0 +1,9 @@ +--- +sidebar_position: 28 +sidebar_label: Version 5.2.1 +description: ReportPortal v5.2.1 archived release notes with bug fixes. +--- + +# Version 5.2.1 + +Fix reportportal/kubernetes [#115](https://github.com/reportportal/reportportal/issues/115) diff --git a/versioned_docs/version-26.1/releases/archived-releases/Version5.2.2.md b/versioned_docs/version-26.1/releases/archived-releases/Version5.2.2.md new file mode 100644 index 0000000000..054082410a --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/Version5.2.2.md @@ -0,0 +1,16 @@ +--- +sidebar_position: 27 +sidebar_label: Version 5.2.2 +description: ReportPortal v5.2.2 archived release notes with bug fixes. +--- + +# 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/versioned_docs/version-26.1/releases/archived-releases/Version5.2.3.md b/versioned_docs/version-26.1/releases/archived-releases/Version5.2.3.md new file mode 100644 index 0000000000..72a796d689 --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/Version5.2.3.md @@ -0,0 +1,12 @@ +--- +sidebar_position: 26 +sidebar_label: Version 5.2.3 +description: ReportPortal v5.2.3 archived release notes with bug fixes and enhanced test automation reporting tools stability. +--- + +# 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/versioned_docs/version-26.1/releases/archived-releases/Version5.3.0.md b/versioned_docs/version-26.1/releases/archived-releases/Version5.3.0.md new file mode 100644 index 0000000000..12399dd08c --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/Version5.3.0.md @@ -0,0 +1,31 @@ +--- +sidebar_position: 25 +sidebar_label: Version 5.3.0 +description: ReportPortal v5.3.0 archived release notes with new features and enhanced test automation reporting tools capabilities. +--- + +# 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/versioned_docs/version-26.1/releases/archived-releases/Version5.3.1.md b/versioned_docs/version-26.1/releases/archived-releases/Version5.3.1.md new file mode 100644 index 0000000000..600856f963 --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/Version5.3.1.md @@ -0,0 +1,17 @@ +--- +sidebar_position: 24 +sidebar_label: Version 5.3.1 +description: ReportPortal v5.3.1 archived release notes with bug fixes. +--- + +# 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/versioned_docs/version-26.1/releases/archived-releases/Version5.3.2.md b/versioned_docs/version-26.1/releases/archived-releases/Version5.3.2.md new file mode 100644 index 0000000000..a368bbb285 --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/Version5.3.2.md @@ -0,0 +1,14 @@ +--- +sidebar_position: 23 +sidebar_label: Version 5.3.2 +description: ReportPortal v5.3.2 archived release notes with bug fixes and enhanced test automation reporting tools stability. +--- + +# 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/versioned_docs/version-26.1/releases/archived-releases/Version5.3.3.md b/versioned_docs/version-26.1/releases/archived-releases/Version5.3.3.md new file mode 100644 index 0000000000..1ba00279bd --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/Version5.3.3.md @@ -0,0 +1,39 @@ +--- +sidebar_position: 22 +sidebar_label: Version 5.3.3 +description: ReportPortal v5.3.3 archived release notes with bug fixes and enhanced test automation reporting tools stability. +--- + +# 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/versioned_docs/version-26.1/releases/archived-releases/Version5.3.5.md b/versioned_docs/version-26.1/releases/archived-releases/Version5.3.5.md new file mode 100644 index 0000000000..911fbb3edf --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/Version5.3.5.md @@ -0,0 +1,12 @@ +--- +sidebar_position: 21 +sidebar_label: Version 5.3.5 +description: ReportPortal v5.3.5 archived release notes with bug fixes and enhanced test automation reporting tools stability. +--- + +# 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/versioned_docs/version-26.1/releases/archived-releases/Version5.4.0.md b/versioned_docs/version-26.1/releases/archived-releases/Version5.4.0.md new file mode 100644 index 0000000000..b2cbfd9b37 --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/Version5.4.0.md @@ -0,0 +1,29 @@ +--- +sidebar_position: 20 +sidebar_label: Version 5.4.0 +description: ReportPortal v5.4.0 archived release notes with new features and enhanced test automation reporting tools capabilities. +--- + +# 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/versioned_docs/version-26.1/releases/archived-releases/Version5.5.0.md b/versioned_docs/version-26.1/releases/archived-releases/Version5.5.0.md new file mode 100644 index 0000000000..bac061e0d3 --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/Version5.5.0.md @@ -0,0 +1,24 @@ +--- +sidebar_position: 19 +sidebar_label: Version 5.5.0 +description: ReportPortal v5.5.0 archived release notes with new features and enhanced test automation reporting tools capabilities. +--- + +# 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/versioned_docs/version-26.1/releases/archived-releases/Version5.6.0.md b/versioned_docs/version-26.1/releases/archived-releases/Version5.6.0.md new file mode 100644 index 0000000000..63a006e098 --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/Version5.6.0.md @@ -0,0 +1,42 @@ +--- +sidebar_position: 18 +sidebar_label: Version 5.6.0 +description: ReportPortal v5.6.0 archived release notes with new features and enhanced test automation reporting tools capabilities. +--- + +# 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/versioned_docs/version-26.1/releases/archived-releases/Version5.6.1.md b/versioned_docs/version-26.1/releases/archived-releases/Version5.6.1.md new file mode 100644 index 0000000000..245d47294b --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/Version5.6.1.md @@ -0,0 +1,10 @@ +--- +sidebar_position: 17 +sidebar_label: Version 5.6.1 +description: ReportPortal v5.6.1 archived release notes with bug fixes and enhanced test automation reporting tools stability. +--- + +# 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/versioned_docs/version-26.1/releases/archived-releases/Version5.6.2.md b/versioned_docs/version-26.1/releases/archived-releases/Version5.6.2.md new file mode 100644 index 0000000000..6026c9d51d --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/Version5.6.2.md @@ -0,0 +1,11 @@ +--- +sidebar_position: 16 +sidebar_label: Version 5.6.2 +description: ReportPortal v5.6.2 archived release notes with bug fixes and enhanced test automation reporting tools stability. +--- + +# 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/versioned_docs/version-26.1/releases/archived-releases/Version5.6.3.md b/versioned_docs/version-26.1/releases/archived-releases/Version5.6.3.md new file mode 100644 index 0000000000..ad70caf342 --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/Version5.6.3.md @@ -0,0 +1,10 @@ +--- +sidebar_position: 15 +sidebar_label: Version 5.6.3 +description: ReportPortal v5.6.3 archived release notes with bug fixes and enhanced test automation reporting tools stability. +--- + +# Version 5.6.3 + +## Bugfixing +- Log4J vulnerabilities: [CVE-2021-44832](https://github.com/advisories/GHSA-8489-44mv-ggj8) diff --git a/versioned_docs/version-26.1/releases/archived-releases/Version5.7.0.md b/versioned_docs/version-26.1/releases/archived-releases/Version5.7.0.md new file mode 100644 index 0000000000..208d7bda6b --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/Version5.7.0.md @@ -0,0 +1,39 @@ +--- +sidebar_position: 7 +sidebar_label: Version 5.7.0 +description: ReportPortal v5.7.0 archived release notes with new features. +--- + +# 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/versioned_docs/version-26.1/releases/archived-releases/Version5.7.1.md b/versioned_docs/version-26.1/releases/archived-releases/Version5.7.1.md new file mode 100644 index 0000000000..2365f54b02 --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/Version5.7.1.md @@ -0,0 +1,10 @@ +--- +sidebar_position: 6 +sidebar_label: Version 5.7.1 +description: ReportPortal v5.7.1 archived release notes with bug fixes. +--- + +# Version 5.7.1 + +## Technical Improvements: +Functionality to configure virtual hosts in RabbitMQ for Analyzer was added diff --git a/versioned_docs/version-26.1/releases/archived-releases/Version5.7.2.md b/versioned_docs/version-26.1/releases/archived-releases/Version5.7.2.md new file mode 100644 index 0000000000..3b7f522c16 --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/Version5.7.2.md @@ -0,0 +1,52 @@ +--- +sidebar_position: 5 +sidebar_label: Version 5.7.2 +description: "Discover ReportPortal 5.7.2: introduces dual logging to ElasticSearch, new Jira and Azure DevOps plugins, enhanced UI, and performance improvements." +--- + +# 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/versioned_docs/version-26.1/releases/archived-releases/Version5.7.3.md b/versioned_docs/version-26.1/releases/archived-releases/Version5.7.3.md new file mode 100644 index 0000000000..da8469886a --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/Version5.7.3.md @@ -0,0 +1,54 @@ +--- +sidebar_position: 4 +sidebar_label: Version 5.7.3 +description: "Explore ReportPortal Version 5.7.3: enhanced error log navigation, improved lazy loading, and optimized Elasticsearch performance for better test analysis." +--- + +# 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). + +## 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/versioned_docs/version-26.1/releases/archived-releases/Version5.7.4.md b/versioned_docs/version-26.1/releases/archived-releases/Version5.7.4.md new file mode 100644 index 0000000000..1f89e0b1b5 --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/Version5.7.4.md @@ -0,0 +1,32 @@ +--- +sidebar_position: 3 +sidebar_label: Version 5.7.4 +description: ReportPortal v5.7.4 archived release notes with MinIO client updates. +--- + +# 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/versioned_docs/version-26.1/releases/archived-releases/_category_.json b/versioned_docs/version-26.1/releases/archived-releases/_category_.json new file mode 100644 index 0000000000..9dc3a0b541 --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Archived Releases", + "position": "24", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.1/releases/archived-releases/img/5.7.4.png b/versioned_docs/version-26.1/releases/archived-releases/img/5.7.4.png new file mode 100644 index 0000000000..19cede312b Binary files /dev/null and b/versioned_docs/version-26.1/releases/archived-releases/img/5.7.4.png differ diff --git a/versioned_docs/version-26.1/releases/archived-releases/index.md b/versioned_docs/version-26.1/releases/archived-releases/index.md new file mode 100644 index 0000000000..34fb799a6b --- /dev/null +++ b/versioned_docs/version-26.1/releases/archived-releases/index.md @@ -0,0 +1,13 @@ +--- +title: Archived Releases +description: Browse older ReportPortal versions for reference and long-term support needs. Review historic notes to trace changes across your test report dashboard. +--- + +# Archived Releases + +Welcome to the archive of past ReportPortal releases! Here, you’ll find versions that are over two years old, preserved for historical reference and long-term support needs. +They remain available for those who require access to older versions. For the latest features, improvements, and security updates, we recommend exploring the most recent releases. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.1/releases/img/24.2.png b/versioned_docs/version-26.1/releases/img/24.2.png new file mode 100644 index 0000000000..7e9e2ed41d Binary files /dev/null and b/versioned_docs/version-26.1/releases/img/24.2.png differ diff --git a/versioned_docs/version-26.1/releases/index.md b/versioned_docs/version-26.1/releases/index.md new file mode 100644 index 0000000000..3daab74f3c --- /dev/null +++ b/versioned_docs/version-26.1/releases/index.md @@ -0,0 +1,20 @@ +--- +title: Releases +description: Check out the latest ReportPortal version, release notes, and updates. +--- + +# Releases + +The **Releases** section is dedicated to keeping users informed about the latest ReportPortal versions and updates. We are committed to regularly releasing new versions of the platform that introduce new functionalities, improve existing features, and address security vulnerabilities. Each release is designed to enhance the user experience, ensure optimal performance, and maintain the security and reliability of your test automation environment. + +In this section, you will find detailed release notes for each new version of ReportPortal. These notes provide a comprehensive overview of the updates, including descriptions of new features, improvements to current functionality, and bug fixes. Staying up to date with the latest releases allows you to take full advantage of ReportPortal’s capabilities, ensuring that your system is operating with the latest technology and best practices. + +Additionally, our release process includes critical security updates to fix vulnerabilities in the components used by ReportPortal. This ensures that your instance remains secure, protecting your data and maintaining the integrity of your test automation processes. + +Whether you're interested in new features, performance enhancements, or security patches, the Releases section is your go-to resource for understanding what’s new and how these updates can benefit your project. Keeping your system updated is essential for maintaining efficient and secure test automation, so be sure to review the release notes regularly. + +To test-drive ReportPortal’s functionality, you can review all the features introduced in each release on our [demo instance](https://demo.reportportal.io/). + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.1/saved-searches-filters/CreateFilters.mdx b/versioned_docs/version-26.1/saved-searches-filters/CreateFilters.mdx new file mode 100644 index 0000000000..8b2bdd2958 --- /dev/null +++ b/versioned_docs/version-26.1/saved-searches-filters/CreateFilters.mdx @@ -0,0 +1,38 @@ +--- +sidebar_position: 1 +sidebar_label: Create filters +description: Create and manage saved search filters for launches. Use filters as independent objects or for creating widgets in your test execution reporting dashboard. +--- + +# Create filters + +Filters in the our test automation reporting dashboard are saved searches of the launches. + +Filters could be used as an independent object and for creating widgets as well. + +Permission: all users of the project despite their role. + +To create a filter, perform the following steps: + +1. Navigate to the "Launches" page. + +2. Click on the "Add Filter" button. + +3. The new tab will be opened. Now you can configure your filter. The unsaved filter is marked with an asterisk (\*). + +4. Add filtering parameters to have the relevant data. + +5. Click 'Save' button. + +6. 'ADD FILTER' popup will appear. + +7. Enter a new filter name (3-55 symbols long) and click "Add" button. + +Your new filter will be saved and shown on the "Filters" page. + + + +:::note +ReportPortal allows saving a filter on the "Launches" mode only. It's +impossible to save filters on the "Debug" tab. +::: diff --git a/versioned_docs/version-26.1/saved-searches-filters/FiltersPage.md b/versioned_docs/version-26.1/saved-searches-filters/FiltersPage.md new file mode 100644 index 0000000000..38d7eb28a4 --- /dev/null +++ b/versioned_docs/version-26.1/saved-searches-filters/FiltersPage.md @@ -0,0 +1,34 @@ +--- +sidebar_position: 3 +sidebar_label: Filters page +description: Manage and organize saved searches on the filters page. View personal filters, streamline test data access, and focus on relevant information using test execution reporting tools. +--- + +# Filters page + +The **Filters page** in ReportPortal is a dedicated space for managing and organizing saved searches, providing a clear and accessible overview of all filters. This page shows your personal filters, making it easy to streamline test data access and focus on relevant information. + +The Filters page includes several key details for each filter: + +- **Filter name and description**
+ Each filter is labeled with a clear name and often a brief description, helping users quickly identify its purpose. + +- **Options**
+ Here, you’ll find the search criteria defined for each filter, showing how data will be sorted or prioritized when this filter is used. + +- **Owner**
+ The name of the team member who created the filter is displayed. + +- **Display on launches toggle**
+ This ON/OFF switch determines if the filter should be readily available on the Launches page. Activating this option makes the filter easily accessible for all users, while deactivating it keeps the filter private. + +- **Delete option**
+ Each filter has a delete icon, allowing users to remove unnecessary filters if no longer needed. + +To open launches based on a saved filter, click on the filter’s name. This action will open a new tab on the Launches page, pre-filtered according to the selected criteria, simplifying navigation through large datasets. + +This Filters page is the only location where filters can be permanently deleted from test automation results dashboard. To delete a filter, simply click the delete icon associated with it and confirm the action. Note that while this will remove the filter, it will not delete the test launches or results associated with it. + +By using the filters efficiently, you can improve test data organization, focus on specific issues or milestones, and better align test reporting with your project’s evolving requirements. + + diff --git a/versioned_docs/version-26.1/saved-searches-filters/ManageFilters.mdx b/versioned_docs/version-26.1/saved-searches-filters/ManageFilters.mdx new file mode 100644 index 0000000000..6ca0222d1f --- /dev/null +++ b/versioned_docs/version-26.1/saved-searches-filters/ManageFilters.mdx @@ -0,0 +1,73 @@ +--- +sidebar_position: 2 +sidebar_label: Manage filters +description: Manage saved filters with edit, copy, delete, and share operations. Organize filters for efficient test execution reporting and dashboard creation. +--- + +# Manage filters + +Filters feature is a base for data visualization in test automation because widgets are built on their basis. + +**OPERATIONS WITH FILTERS** + +After the filter is saved, there are some options to manage them. + +**EDIT FILTER** + +This option allows edit filter name and description. + +To edit a filter, perform the following steps: + +1. Open your filter from the tab on the "Launches" page. + +2. Click the "Edit" option on the tab menu. + +3. The Edit filter popup window will appear. + +4. Make changes. + +5. To save the updates, select the "Save" option from the filter context menu. + +Your changes for the filter will be saved. + + + +**CLONE** + +This option allows you to create a new tab with the same criteria. + +To clone an already existed filter, perform the following steps: + +1. Open any filter on the "Launches" page. + +2. Click the "Clone" option on the tab menu. + +3. Enter the unique name, description and submit. + +4. The content of filter will be the same as in original filter. + +**DISCARD** + +This option helps to reset unsaved filter changes. + +To discard unsaved changes, perform the following steps: + +1. Open any filter on the "Launches" page. + +2. Add new criteria to the filter options. + +3. Asterisk mark appears for the filter. + +4. Click 'Discard' to remove most recent changes. + +5. All unsaved changes are removed. + +6. Asterisk mark removed for the filter tab. + +**CLOSE** + +This option allows to close filter tab with all selected criteria. The option is available on the filter tab. + +**DELETE** option is available from 'Filters' page only. + + diff --git a/versioned_docs/version-26.1/saved-searches-filters/_category_.json b/versioned_docs/version-26.1/saved-searches-filters/_category_.json new file mode 100644 index 0000000000..466cb2ddef --- /dev/null +++ b/versioned_docs/version-26.1/saved-searches-filters/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "Saved searches (filters)", + "position": "14", + "link": {"type": "doc", "id": "index"} +} + diff --git a/versioned_docs/version-26.1/saved-searches-filters/index.md b/versioned_docs/version-26.1/saved-searches-filters/index.md new file mode 100644 index 0000000000..1d7934b192 --- /dev/null +++ b/versioned_docs/version-26.1/saved-searches-filters/index.md @@ -0,0 +1,16 @@ +--- +title: Saved searches (filters) +description: Simplify filter management for your QA automation dashboard. Visit our Saved Searches section to streamline filter creation and optimization. +--- + +# Saved searches (filters) + +The **Saved searches (filters)** section in ReportPortal is designed to help you efficiently manage and organize your test data by creating and customizing filters. Filters provide a powerful way to quickly access the most relevant test results, allowing users to streamline their workflow and focus on the information that matters most. Whether you're looking to investigate specific test cases, analyze failure patterns, or track ongoing issues, filters help you concentrate on the data you need with just a few clicks. + +In this section, you'll find detailed guides that walk you through the process of creating new filters, customizing existing ones, and saving them for future use. You can set up filters based on various criteria available in ReportPortal, such as launch name, attributes, start time and other options. These filters can then be saved and reused, ensuring that you have instant access to the most important testing information without having to manually sort through large datasets every time. + +Filters allow you to organize complex test data more effectively, speeding up your analysis by isolating specific issues or areas of interest. By mastering the use of filters, you can enhance your test management practices, simplify report analysis, improve defect triage, and ensure a more efficient approach to handling large volumes of test data, ultimately boosting your overall productivity. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.1/terms-and-conditions/GoogleAnalyticsUsageByReportPortal.mdx b/versioned_docs/version-26.1/terms-and-conditions/GoogleAnalyticsUsageByReportPortal.mdx new file mode 100644 index 0000000000..6367554d48 --- /dev/null +++ b/versioned_docs/version-26.1/terms-and-conditions/GoogleAnalyticsUsageByReportPortal.mdx @@ -0,0 +1,178 @@ +--- +sidebar_position: 2 +sidebar_label: Google Analytics usage by ReportPortal +description: Learn about Google Analytics usage in ReportPortal test automation reporting tools for web analytics and user experience improvement. +--- + +# Google Analytics usage by ReportPortal + +ReportPortal uses Google Analytics (GA) for web analytics capabilities. GA helps the ReportPortal Team to understand product usage and make ReportPortal more convenient and useful for our users. To address any concerns about the data we collect, we want to be transparent about which data is sent to GA, and assure you that no personal or confidential data is transferred. To be clear, we do not gather personal information at all through GA. In this article, we explain how Google Analytics works on ReportPortal, its benefits, and how you can turn it off if you want. + +## Google Analytics usage on ReportPortal UI + +We collect only the following data by using Google Analytics on ReportPortal UI: + +1. Device information: hardware model, operating system version, screen resolution, browser version. + +2. Behavior information: how user interacts with ReportPortal, where user clicks, what actions he or she does, app usage time. + +These analytics helps us to improve performance and user-friendliness. Based on analytics, for example, we can decide to write a new documentation or optimize our features and app navigation. + +:::note +We do not collect information that personally identifies you. We follow [privacy policy](https://privacy.epam.com/core/interaction/showpolicy?type=CommonPrivacyPolicy) in all cases. +::: + + + +## How to disable Google Analytics on ReportPortal UI + +You can turn off Google Analytics on ReportPortal UI as well. + +1. Log in to ReportPortal as Admin. + +2. Open Menu at the bottom and select “Administrate” section. + + + +3. Select “Server Settings”. + + + +4. Open “Analytics” tab. + +5. Uncheck “Help make ReportPortal better by automatically sending analytics to us” checkbox. + + + +:::note +You can enable Google Analytics if you check “Help make ReportPortal better by automatically sending analytics to us” checkbox. +::: +## Google Analytics usage on ReportPortal agents + +We collect only the following data by using Google Analytics on ReportPortal agents: + +1. Start of the Launch, and the calendar date of this event. + +2. ReportPortal SDK library name and it’s version, e.g., reportportal 5.0.6. + +3. ReportPortal Integration library (agent name), e.g., pytest-reportportal, version 5.0.11. + +4. Code Interpreter name, e.g., Python 3.6.9. + +We need this data to know what libraries and development platforms our users prefer. So, we can prioritize our work on agents in accordance to its actual usage. + + + +## How to disable Google Analytics gathering on ReportPortal agents + +### Basics + +At the nutshell you need to set `AGENT_NO_ANALYTICS` environment variable with any non-empty value. In Unix or Linux you +can use `export` command for that: +```shell +export AGENT_NO_ANALYTICS=1 +``` +For Windows systems there is analogue command `set`: +```shell +set AGENT_NO_ANALYTICS=1 +``` +Then you can run your tests in the same shell and analytics gathering will be disabled. + +To test that you actually have set the variable you can use `echo` command. + +Linux: +```shell +echo "${AGENT_NO_ANALYTICS}" +``` +Windows: +```shell +echo %AGENT_NO_ANALYTICS% +``` + +If you don't want to set that variable each time you start a shell, there are several technics you can use. + +### Constantly disabling analytics + +### Unix/Linux + +Everything what you export in `.bash_profile` file in your test user's home directory will be automatically set each +time you log in into console. To edit the file you can use `nano` - a simple text editor: +```shell +nano ~/.bash_profile +``` +Put export line somewhere in the file and hit `Ctrl+O` to save it and `Ctrl+X` to close. + +### Windows + +To set environment variable on Windows 10 family systems right-click on it icon in taskbar and choose `System`. In +opened window hit `Advanced system settings` in the right menu and then `Environment variables` button in opened +`System Properties` window. Click `New` button in `System variables` section, enter variable name and value and close +everything with `OK` button. The changes will be applied after the system restart. + +### Build systems + +Some build systems can set environment variables on their own we can use this feature to set the variable. + +### Gradle + +Gradle has `environment` keyword which sets variables for child processes, so all you need to do is to set it in `test` +task: +```groovy +test { + environment "AGENT_NO_ANALYTICS", "1" +} +``` + +### Maven + +`maven-surefire-plugin` has option to set environment variables for forked processes, so you can configure the plugin +accordingly: +```xml + + 4.0.0 + com.epam.reportportal.example + example-mute + 1.0-SNAPSHOT + + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.22.2 + + once + + 1 + + + + + + +``` + +### tox + +Python's tox automation tool also provides a way to set necessary variables with `setenv` parameter in `tox.ini` file: +```text +[testenv] +setenv = + AGENT_NO_ANALYTICS = 1 +``` + +### Docker + +If your tests are wrapped in a docker container you need to bypass this variable through command-line with `-e` flag: +```shell +docker run --rm -it \ + -e "AGENT_NO_ANALYTICS=1" + selenium/standalone-chrome:103.0 +``` +Or you can use `ENV` keyword in your `Dockerfile` when building the image: +```dockerfile +ENV AGENT_NO_ANALYTICS=1 +``` +Thanks to Google Analytics, we can deliver interesting and helpful features to ReportPortal. As a result, you will have effective working instruments and better customer support. diff --git a/versioned_docs/version-26.1/terms-and-conditions/PremiumFeatures.md b/versioned_docs/version-26.1/terms-and-conditions/PremiumFeatures.md new file mode 100644 index 0000000000..731506c1b8 --- /dev/null +++ b/versioned_docs/version-26.1/terms-and-conditions/PremiumFeatures.md @@ -0,0 +1,18 @@ +--- +sidebar_position: 1 +sidebar_label: Premium Features +description: Explore ReportPortal premium features for enterprises, including Quality Gates and SCIM, designed to scale continuous testing and streamline user management. +--- + +# Premium Features + +At ReportPortal, we understand that every enterprise's testing environment is unique, requiring tailored solutions that address specific needs. To cater to this demand, we've introduced our Premium Features, exclusively available to our Managed Services and SaaS subscription clients. + +Our Premium Features have been meticulously designed and developed with large-scale, enterprise-level needs in mind. They are the cornerstone for organizations seeking to establish true continuous testing within their operational setup. Whether it's the ability to navigate the complexities of testing at scale, or the demand for more granular insights to drive decision-making, these premium options are equipped to handle it all. + +We invite you to explore our Premium Features, understanding their objectives and benefits in detail on our documentation page. We are confident that you'll find the value they add to be well worth the investment. As always, we're here to answer any questions and assist you in getting the most out of your ReportPortal experience. + +**Available Premium Features:** + - [**Quality Gates**](/26.1/quality-gates) + - [**SCIM Server feature**](/features/SCIMServerFeature) + - [**Test Executions**](/features/TestExecutions) diff --git a/versioned_docs/version-26.1/terms-and-conditions/_category_.json b/versioned_docs/version-26.1/terms-and-conditions/_category_.json new file mode 100644 index 0000000000..3c400b1075 --- /dev/null +++ b/versioned_docs/version-26.1/terms-and-conditions/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "Terms & conditions", + "position": "25", + "link": {"type": "doc", "id": "index"} +} + diff --git a/versioned_docs/version-26.1/terms-and-conditions/img/GoogleAnalytics1.png b/versioned_docs/version-26.1/terms-and-conditions/img/GoogleAnalytics1.png new file mode 100644 index 0000000000..2a7982341c Binary files /dev/null and b/versioned_docs/version-26.1/terms-and-conditions/img/GoogleAnalytics1.png differ diff --git a/versioned_docs/version-26.1/terms-and-conditions/img/GoogleAnalytics2.png b/versioned_docs/version-26.1/terms-and-conditions/img/GoogleAnalytics2.png new file mode 100644 index 0000000000..ba615c302b Binary files /dev/null and b/versioned_docs/version-26.1/terms-and-conditions/img/GoogleAnalytics2.png differ diff --git a/versioned_docs/version-26.1/terms-and-conditions/img/GoogleAnalytics3.png b/versioned_docs/version-26.1/terms-and-conditions/img/GoogleAnalytics3.png new file mode 100644 index 0000000000..cfcb692783 Binary files /dev/null and b/versioned_docs/version-26.1/terms-and-conditions/img/GoogleAnalytics3.png differ diff --git a/versioned_docs/version-26.1/terms-and-conditions/img/GoogleAnalytics4.png b/versioned_docs/version-26.1/terms-and-conditions/img/GoogleAnalytics4.png new file mode 100644 index 0000000000..0c1d6e791d Binary files /dev/null and b/versioned_docs/version-26.1/terms-and-conditions/img/GoogleAnalytics4.png differ diff --git a/versioned_docs/version-26.1/terms-and-conditions/img/GoogleAnalytics5.png b/versioned_docs/version-26.1/terms-and-conditions/img/GoogleAnalytics5.png new file mode 100644 index 0000000000..eeb69284f7 Binary files /dev/null and b/versioned_docs/version-26.1/terms-and-conditions/img/GoogleAnalytics5.png differ diff --git a/versioned_docs/version-26.1/terms-and-conditions/index.md b/versioned_docs/version-26.1/terms-and-conditions/index.md new file mode 100644 index 0000000000..e45d744ba1 --- /dev/null +++ b/versioned_docs/version-26.1/terms-and-conditions/index.md @@ -0,0 +1,20 @@ +--- +title: Terms & conditions +description: Read Terms & Conditions for clear guidance on premium features and Google Analytics usage in our test automation reporting tool. +--- + +# Terms & conditions + +The **Terms & conditions** section provides essential information on the guidelines and requirements for using ReportPortal effectively. This section clarifies user responsibilities and boundaries, ensuring a transparent and secure experience. It helps set clear expectations about how ReportPortal operates, including details on data usage, premium features, and other key aspects relevant to both free and premium users. + +A key part of this section is a thorough explanation of how **Google Analytics** functions within ReportPortal’s test results dashboard. This ensures transparency by detailing how data is collected and used responsibly, providing users with peace of mind regarding data privacy. ReportPortal employs Google Analytics to help track platform usage and identify areas for improvement without impacting confidentiality of your test data. + +In addition, this section provides insights into our premium feature - **Quality Gates**. Quality Gates offer users a way to enforce specific quality standards for test results, helping teams monitor and control the quality of releases according to pre-set criteria. With Quality Gates, you can establish benchmarks automatically marking whether a release meets or falls short of these criteria. This helps ensure a consistent standard for releases and supports better decision-making for deployment. + +Another important aspect covered in this section is the **SCIM Server feature** that simplifies and automates user identity and access management. It serves as a bridge between your identity provider (such as Azure AD or Okta) and ReportPortal, ensuring seamless synchronization of user accounts, roles, and project memberships. + +By reviewing this section, users can gain a clear understanding of ReportPortal’s policies, enabling compliance and making it easier to leverage the platform’s full potential. The Terms & conditions help users make informed decisions and enjoy a streamlined experience, tailored to the needs of each project and organization. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.1/test-executions/img/AddColumn1.png b/versioned_docs/version-26.1/test-executions/img/AddColumn1.png new file mode 100644 index 0000000000..9985cdca5a Binary files /dev/null and b/versioned_docs/version-26.1/test-executions/img/AddColumn1.png differ diff --git a/versioned_docs/version-26.1/test-executions/img/AddColumn2.png b/versioned_docs/version-26.1/test-executions/img/AddColumn2.png new file mode 100644 index 0000000000..98b77e69fc Binary files /dev/null and b/versioned_docs/version-26.1/test-executions/img/AddColumn2.png differ diff --git a/versioned_docs/version-26.1/test-executions/img/Attributes1.png b/versioned_docs/version-26.1/test-executions/img/Attributes1.png new file mode 100644 index 0000000000..715f80fd2d Binary files /dev/null and b/versioned_docs/version-26.1/test-executions/img/Attributes1.png differ diff --git a/versioned_docs/version-26.1/test-executions/img/Attributes2.png b/versioned_docs/version-26.1/test-executions/img/Attributes2.png new file mode 100644 index 0000000000..13b8521aaa Binary files /dev/null and b/versioned_docs/version-26.1/test-executions/img/Attributes2.png differ diff --git a/versioned_docs/version-26.1/test-executions/img/Cancel.png b/versioned_docs/version-26.1/test-executions/img/Cancel.png new file mode 100644 index 0000000000..c928c95828 Binary files /dev/null and b/versioned_docs/version-26.1/test-executions/img/Cancel.png differ diff --git a/versioned_docs/version-26.1/test-executions/img/Collapse.png b/versioned_docs/version-26.1/test-executions/img/Collapse.png new file mode 100644 index 0000000000..ebb482237c Binary files /dev/null and b/versioned_docs/version-26.1/test-executions/img/Collapse.png differ diff --git a/versioned_docs/version-26.1/test-executions/img/CustomColumn1.png b/versioned_docs/version-26.1/test-executions/img/CustomColumn1.png new file mode 100644 index 0000000000..becf148f05 Binary files /dev/null and b/versioned_docs/version-26.1/test-executions/img/CustomColumn1.png differ diff --git a/versioned_docs/version-26.1/test-executions/img/CustomColumn2.png b/versioned_docs/version-26.1/test-executions/img/CustomColumn2.png new file mode 100644 index 0000000000..c4eb7def96 Binary files /dev/null and b/versioned_docs/version-26.1/test-executions/img/CustomColumn2.png differ diff --git a/versioned_docs/version-26.1/test-executions/img/CustomColumn3.png b/versioned_docs/version-26.1/test-executions/img/CustomColumn3.png new file mode 100644 index 0000000000..bdff140b76 Binary files /dev/null and b/versioned_docs/version-26.1/test-executions/img/CustomColumn3.png differ diff --git a/versioned_docs/version-26.1/test-executions/img/Expand.png b/versioned_docs/version-26.1/test-executions/img/Expand.png new file mode 100644 index 0000000000..f5f6e5601e Binary files /dev/null and b/versioned_docs/version-26.1/test-executions/img/Expand.png differ diff --git a/versioned_docs/version-26.1/test-executions/img/LaunchNames.png b/versioned_docs/version-26.1/test-executions/img/LaunchNames.png new file mode 100644 index 0000000000..2eb0093b50 Binary files /dev/null and b/versioned_docs/version-26.1/test-executions/img/LaunchNames.png differ diff --git a/versioned_docs/version-26.1/test-executions/img/LaunchStartTime.png b/versioned_docs/version-26.1/test-executions/img/LaunchStartTime.png new file mode 100644 index 0000000000..ca4f72af4c Binary files /dev/null and b/versioned_docs/version-26.1/test-executions/img/LaunchStartTime.png differ diff --git a/versioned_docs/version-26.1/test-executions/img/LaunchesReported.png b/versioned_docs/version-26.1/test-executions/img/LaunchesReported.png new file mode 100644 index 0000000000..c38cde00fe Binary files /dev/null and b/versioned_docs/version-26.1/test-executions/img/LaunchesReported.png differ diff --git a/versioned_docs/version-26.1/test-executions/img/NoResults.png b/versioned_docs/version-26.1/test-executions/img/NoResults.png new file mode 100644 index 0000000000..1333b61335 Binary files /dev/null and b/versioned_docs/version-26.1/test-executions/img/NoResults.png differ diff --git a/versioned_docs/version-26.1/test-executions/img/Refresh.png b/versioned_docs/version-26.1/test-executions/img/Refresh.png new file mode 100644 index 0000000000..2b75e25c6e Binary files /dev/null and b/versioned_docs/version-26.1/test-executions/img/Refresh.png differ diff --git a/versioned_docs/version-26.1/test-executions/img/RemoveColumn.png b/versioned_docs/version-26.1/test-executions/img/RemoveColumn.png new file mode 100644 index 0000000000..452f4bd33a Binary files /dev/null and b/versioned_docs/version-26.1/test-executions/img/RemoveColumn.png differ diff --git a/versioned_docs/version-26.1/test-executions/img/Reorder.png b/versioned_docs/version-26.1/test-executions/img/Reorder.png new file mode 100644 index 0000000000..4406161bd1 Binary files /dev/null and b/versioned_docs/version-26.1/test-executions/img/Reorder.png differ diff --git a/versioned_docs/version-26.1/test-executions/img/ResetToDefault.png b/versioned_docs/version-26.1/test-executions/img/ResetToDefault.png new file mode 100644 index 0000000000..c458b025a4 Binary files /dev/null and b/versioned_docs/version-26.1/test-executions/img/ResetToDefault.png differ diff --git a/versioned_docs/version-26.1/test-executions/img/TestCasesFilter1.png b/versioned_docs/version-26.1/test-executions/img/TestCasesFilter1.png new file mode 100644 index 0000000000..0b5157a081 Binary files /dev/null and b/versioned_docs/version-26.1/test-executions/img/TestCasesFilter1.png differ diff --git a/versioned_docs/version-26.1/test-executions/img/TestCasesFilter2.png b/versioned_docs/version-26.1/test-executions/img/TestCasesFilter2.png new file mode 100644 index 0000000000..cf8bef7713 Binary files /dev/null and b/versioned_docs/version-26.1/test-executions/img/TestCasesFilter2.png differ diff --git a/versioned_docs/version-26.1/test-executions/img/TestName.png b/versioned_docs/version-26.1/test-executions/img/TestName.png new file mode 100644 index 0000000000..4b048f4a53 Binary files /dev/null and b/versioned_docs/version-26.1/test-executions/img/TestName.png differ diff --git a/versioned_docs/version-26.1/test-executions/index.mdx b/versioned_docs/version-26.1/test-executions/index.mdx new file mode 100644 index 0000000000..327fc9b199 --- /dev/null +++ b/versioned_docs/version-26.1/test-executions/index.mdx @@ -0,0 +1,222 @@ +--- +sidebar_position: 12 +sidebar_label: Test executions +description: Manage and analyze test executions across multiple launches with powerful filters, customizable columns, and fast data refresh. +--- + +# Test executions + +On the [Test Executions](/features/TestExecutions) page, you can conveniently view and manage individual test cases across multiple launches without navigating through hierarchical launch structures. + +## Page layout + +### No launches + +For a new project, or if no launches have been reported yet, "No results" is displayed. + + + +### Launches reported + +The "Last 7 days" option is pre-selected in the "Launch start time" dropdown, and the following columns are displayed in the Search results table: + +* Name +* Start time +* Status +* Defect type +* Defect comment + +At the top of the page, the following filtering options are available: + +* Launch start time +* Launch names +* Launch attributes + +Additionally, "Refresh" button is displayed. + + + +You can expand or collapse all rows in the Search Results table by clicking on the corresponding icon. + + + +In addition, you can expand or collapse an individual row as needed. + +:::note +The limit for the search results is 10.000 latest test cases. +::: + + + +## Launch level filtering + +You can filter test executions by the characteristics of the launch to which the tests belong. You can use one or more criteria. + +### Launch start time + +You can filter test executions by Launch start time using dropdown. + +In this case only tests which belong to the launches started in the specified range will be displayed regardless the launch status. + +:::note +Test of the launches in "In Progress" status will also be displayed. +::: + +Available options: + +* Today +* Last 2 Days +* Last 3 Days +* Last 7 Days +* Last 30 Days +* Last 60 Days +* Last 90 Days +* Custom range (date picker) + + + +### Launch names + +You can filter test executions by Launch names. In this case, only tests which belong to specified launches will be displayed. + + + +### Launch attributes + +You can filter test executions by one or more launch attributes. Only tests which belong to launches with all the specified attributes will be displayed. + +:::note +You can filter launch attributes in three ways: by **key**, by **value**, or by a **key:value** pair. +::: + + + + + + + +## Test level filtering + +You can apply both the launch level filters and the test level filters at the same time. + +### Search by test name + +You can search tests by the name. + + + +### Test cases filter + +You can filter test cases using the following criteria: + +* Status +* Defect type +* Start time +* Test attributes +* Description +* Defect comment +* Issue in BTS +* Method type +* Retry +* Pattern name +* Ignore in AA +* Analyzed by AA + +After you apply the filter, on the Test Executions page the tests will be filtered and the filter icon will indicate how many filter criteria are currently applied to the tests. When at least one test filter criterion is applied, the "Clear all" button becomes enabled in the Filter modal window, allowing you to clear the selected criteria. + + + + + + + +## Customize columns + +You can customize the columns displayed on the Test Execution page by adding new columns from a predefined list, removing existing columns, and reordering them. + +### Add New Column + +1. Open Test Executions page. +2. Click the "Customize Columns" button. +3. Click "Add Column" button. +4. Select a column from the dropdown and confirm. +5. Click the "Save" button. + + + + + +### Remove Column + +1. Open Test Executions page. +2. Click the "Customize Columns" button. +3. Click the "X" button next to a column name. +4. Click the "Save" button. + + + +### Reorder Columns + +1. Open Test Executions page. +2. Click the "Customize Columns" button. +3. Drag and drop a column name to reorder the list. +4. Click the "Save" button. + + + +### Cancel Changes + +1. Open Test Executions page. +2. Click the "Customize Columns" button. +3. Make some changes (for example, add new column). +4. Click the "Cancel" button. + + + +### Reset Columns + +1. Open Test Executions page. +2. Click the "Customize Columns" button. +3. Make some changes (for example, add new column). +4. Click the "Reset to Default" button. +5. Click the "Save" button. + + + +### Add custom column + +1. Open Test Executions page. +2. Click the "Customize Columns" button. +3. Click the "Add Column" button. +4. Select "Custom attribute" option from the dropdown. +5. Specify the key. +6. Click the "Tick" button. + + + +7. Click the "Save" button. + + + +The attribute key becomes the column header, and the attribute values are populated for each item. + +:::note +You can create multiple "Custom attribute" columns. +::: + + + + + +## Refresh + +You can update the list of test executions without reconfiguring filters. + +When new launches or test items that meet the active filter conditions (Launch level and Test level) are reported, using the "Refresh" button updates the Search results table to reflect the most recent data. + +To reload data on the Test Executions page: + +1. Open Test Executions page. +2. Click the "Refresh" button. + + diff --git a/versioned_docs/version-26.1/tutorial/img/Attributes.png b/versioned_docs/version-26.1/tutorial/img/Attributes.png new file mode 100644 index 0000000000..e8a5e5293a Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/Attributes.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/AutoAnalysis1.png b/versioned_docs/version-26.1/tutorial/img/AutoAnalysis1.png new file mode 100644 index 0000000000..c8f3113a81 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/AutoAnalysis1.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/AutoAnalysis2.png b/versioned_docs/version-26.1/tutorial/img/AutoAnalysis2.png new file mode 100644 index 0000000000..5ac2d66f9f Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/AutoAnalysis2.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/AutoAnalysis3.png b/versioned_docs/version-26.1/tutorial/img/AutoAnalysis3.png new file mode 100644 index 0000000000..ba9977d415 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/AutoAnalysis3.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/AutoAnalysis4.png b/versioned_docs/version-26.1/tutorial/img/AutoAnalysis4.png new file mode 100644 index 0000000000..19596ac36c Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/AutoAnalysis4.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/FilterTestExecutions.png b/versioned_docs/version-26.1/tutorial/img/FilterTestExecutions.png new file mode 100644 index 0000000000..e6b837fc1e Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/FilterTestExecutions.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/Filters.png b/versioned_docs/version-26.1/tutorial/img/Filters.png new file mode 100644 index 0000000000..0b51b80fe6 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/Filters.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/FlakyTests1.png b/versioned_docs/version-26.1/tutorial/img/FlakyTests1.png new file mode 100644 index 0000000000..c65fba04a2 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/FlakyTests1.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/FlakyTests2.png b/versioned_docs/version-26.1/tutorial/img/FlakyTests2.png new file mode 100644 index 0000000000..e46b3d71de Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/FlakyTests2.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/GenerateFirstData.png b/versioned_docs/version-26.1/tutorial/img/GenerateFirstData.png new file mode 100644 index 0000000000..3429d46697 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/GenerateFirstData.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/HistoricalTrends1.png b/versioned_docs/version-26.1/tutorial/img/HistoricalTrends1.png new file mode 100644 index 0000000000..fc89f31fe0 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/HistoricalTrends1.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/HistoricalTrends2.png b/versioned_docs/version-26.1/tutorial/img/HistoricalTrends2.png new file mode 100644 index 0000000000..db5df9f3e7 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/HistoricalTrends2.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/HistoricalTrends3.png b/versioned_docs/version-26.1/tutorial/img/HistoricalTrends3.png new file mode 100644 index 0000000000..1cf70cbf50 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/HistoricalTrends3.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/HistoricalTrends4.png b/versioned_docs/version-26.1/tutorial/img/HistoricalTrends4.png new file mode 100644 index 0000000000..1dca4af455 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/HistoricalTrends4.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/InvestigatedPercentage1.png b/versioned_docs/version-26.1/tutorial/img/InvestigatedPercentage1.png new file mode 100644 index 0000000000..c32c87058b Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/InvestigatedPercentage1.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/InvestigatedPercentage2.png b/versioned_docs/version-26.1/tutorial/img/InvestigatedPercentage2.png new file mode 100644 index 0000000000..58fcb3a839 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/InvestigatedPercentage2.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/InviteUsers.png b/versioned_docs/version-26.1/tutorial/img/InviteUsers.png new file mode 100644 index 0000000000..889e753868 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/InviteUsers.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/LaunchStatisticsChart1.png b/versioned_docs/version-26.1/tutorial/img/LaunchStatisticsChart1.png new file mode 100644 index 0000000000..fbe5b29e20 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/LaunchStatisticsChart1.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/LaunchStatisticsChart2.png b/versioned_docs/version-26.1/tutorial/img/LaunchStatisticsChart2.png new file mode 100644 index 0000000000..e1964bcfb6 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/LaunchStatisticsChart2.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/MLSuggestions.png b/versioned_docs/version-26.1/tutorial/img/MLSuggestions.png new file mode 100644 index 0000000000..11d3f699e4 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/MLSuggestions.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/MakeDecision.png b/versioned_docs/version-26.1/tutorial/img/MakeDecision.png new file mode 100644 index 0000000000..f6eb24fe93 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/MakeDecision.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/MostTime1.png b/versioned_docs/version-26.1/tutorial/img/MostTime1.png new file mode 100644 index 0000000000..20e08dbb5f Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/MostTime1.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/MostTime2.png b/versioned_docs/version-26.1/tutorial/img/MostTime2.png new file mode 100644 index 0000000000..92a093bfdd Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/MostTime2.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/NestedSteps.png b/versioned_docs/version-26.1/tutorial/img/NestedSteps.png new file mode 100644 index 0000000000..b41d1204a0 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/NestedSteps.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/OverallStatistics1.png b/versioned_docs/version-26.1/tutorial/img/OverallStatistics1.png new file mode 100644 index 0000000000..ebd86f870a Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/OverallStatistics1.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/OverallStatistics2.png b/versioned_docs/version-26.1/tutorial/img/OverallStatistics2.png new file mode 100644 index 0000000000..67502c1b3c Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/OverallStatistics2.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/PatternAnalysis1.png b/versioned_docs/version-26.1/tutorial/img/PatternAnalysis1.png new file mode 100644 index 0000000000..dda0ca05a4 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/PatternAnalysis1.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/PatternAnalysis2.png b/versioned_docs/version-26.1/tutorial/img/PatternAnalysis2.png new file mode 100644 index 0000000000..b159ab233c Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/PatternAnalysis2.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/PatternAnalysis3.png b/versioned_docs/version-26.1/tutorial/img/PatternAnalysis3.png new file mode 100644 index 0000000000..fca00eaa70 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/PatternAnalysis3.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/PatternAnalysis4.png b/versioned_docs/version-26.1/tutorial/img/PatternAnalysis4.png new file mode 100644 index 0000000000..251de9ebf7 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/PatternAnalysis4.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/PatternAnalysis5.png b/versioned_docs/version-26.1/tutorial/img/PatternAnalysis5.png new file mode 100644 index 0000000000..05c28eaa0b Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/PatternAnalysis5.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/PatternAnalysis6.png b/versioned_docs/version-26.1/tutorial/img/PatternAnalysis6.png new file mode 100644 index 0000000000..7d23faadcf Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/PatternAnalysis6.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/PostLink.png b/versioned_docs/version-26.1/tutorial/img/PostLink.png new file mode 100644 index 0000000000..486687df23 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/PostLink.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/ProfileAttributes.png b/versioned_docs/version-26.1/tutorial/img/ProfileAttributes.png new file mode 100644 index 0000000000..79534c5619 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/ProfileAttributes.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/QualityGate1.png b/versioned_docs/version-26.1/tutorial/img/QualityGate1.png new file mode 100644 index 0000000000..656c08cf39 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/QualityGate1.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/QualityGate2.png b/versioned_docs/version-26.1/tutorial/img/QualityGate2.png new file mode 100644 index 0000000000..a204340f83 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/QualityGate2.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/QualityGate3.png b/versioned_docs/version-26.1/tutorial/img/QualityGate3.png new file mode 100644 index 0000000000..663c15c481 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/QualityGate3.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/QualityGate4.png b/versioned_docs/version-26.1/tutorial/img/QualityGate4.png new file mode 100644 index 0000000000..0b581e6de0 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/QualityGate4.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/QualityGate5.png b/versioned_docs/version-26.1/tutorial/img/QualityGate5.png new file mode 100644 index 0000000000..e9ff83041f Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/QualityGate5.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/TestAttributes.png b/versioned_docs/version-26.1/tutorial/img/TestAttributes.png new file mode 100644 index 0000000000..774b81b66a Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/TestAttributes.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/TriageTestFailures.png b/versioned_docs/version-26.1/tutorial/img/TriageTestFailures.png new file mode 100644 index 0000000000..1b960f9cb4 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/TriageTestFailures.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/UseCase1-1.png b/versioned_docs/version-26.1/tutorial/img/UseCase1-1.png new file mode 100644 index 0000000000..59ee778547 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/UseCase1-1.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/UseCase1-2.png b/versioned_docs/version-26.1/tutorial/img/UseCase1-2.png new file mode 100644 index 0000000000..165f6d9c55 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/UseCase1-2.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/UseCase1-3.png b/versioned_docs/version-26.1/tutorial/img/UseCase1-3.png new file mode 100644 index 0000000000..4e893f8da6 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/UseCase1-3.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/UseCase1-4.png b/versioned_docs/version-26.1/tutorial/img/UseCase1-4.png new file mode 100644 index 0000000000..dcaa12f328 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/UseCase1-4.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/UseCase2-1.png b/versioned_docs/version-26.1/tutorial/img/UseCase2-1.png new file mode 100644 index 0000000000..17ffad061e Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/UseCase2-1.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/UseCase2-2.png b/versioned_docs/version-26.1/tutorial/img/UseCase2-2.png new file mode 100644 index 0000000000..e39bd49192 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/UseCase2-2.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/UseCase2-3.png b/versioned_docs/version-26.1/tutorial/img/UseCase2-3.png new file mode 100644 index 0000000000..d95a149000 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/UseCase2-3.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/UseCase2-4.png b/versioned_docs/version-26.1/tutorial/img/UseCase2-4.png new file mode 100644 index 0000000000..7a8255a319 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/UseCase2-4.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/UseCase3-1.png b/versioned_docs/version-26.1/tutorial/img/UseCase3-1.png new file mode 100644 index 0000000000..4d2566f79b Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/UseCase3-1.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/UseCase3-2.png b/versioned_docs/version-26.1/tutorial/img/UseCase3-2.png new file mode 100644 index 0000000000..93780738bf Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/UseCase3-2.png differ diff --git a/versioned_docs/version-26.1/tutorial/img/UseCase3-3.png b/versioned_docs/version-26.1/tutorial/img/UseCase3-3.png new file mode 100644 index 0000000000..18c51e6854 Binary files /dev/null and b/versioned_docs/version-26.1/tutorial/img/UseCase3-3.png differ diff --git a/versioned_docs/version-26.1/tutorial/index.mdx b/versioned_docs/version-26.1/tutorial/index.mdx new file mode 100644 index 0000000000..9785385036 --- /dev/null +++ b/versioned_docs/version-26.1/tutorial/index.mdx @@ -0,0 +1,293 @@ +--- +sidebar_position: 3 +sidebar_label: 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. +--- + +# Tutorial + +## Overview + +The goal of this tutorial is to introduce all ReportPortal capabilities. Along the way, you'll learn how to use ReportPortal features and how to get the most out of them, as well as expert tips for using our test automation results dashboard. + +## How to explore ReportPortal without installation + +One day you found ReportPortal which promises to simplify the analysis of failed tests and bring many more benefits. + +“Really? I don’t believe it”, – your first reaction. + +Do you just want to see how ReportPortal works to make sure you need it? It is easy! Just visit our [Demo instance](https://demo.reportportal.io/ui/) and use default ReportPortal Demo credentials for login: + +``` +login: default + +password: 1q2w3e +``` + +Or you can use a button "Login with GitHub" to login. + +## How to deploy ReportPortal instance + +You tried the demo session. You are impressed with ReportPortal features / possibilities and decided to install a ReportPortal. Excellent! Visit our detailed documentation on how deploy ReportPortal: +* [with Kubernetes](/installation-steps/DeployWithKubernetes) +* [with Docker](/installation-steps/DeployWithDocker) + +Please also check the [technical requirements for your system](/installation-steps/HardwareRequirements) + +If you don’t want to deal with technical details, we will be happy to [assist you](https://reportportal.io/pricing/saas). + +## How to invite Team to ReportPortal + +Finally, you logged into ReportPortal. And you see just empty tabs... Looks confusing for the first step. What can we do to get started? + +Let’s start by inviting your team members. You can also do it as a final step, but it would be nice to investigate ReportPortal together. + +In order to add other users to ReportPortal you can send invitations via email. To make sure that the Email service is configured, please follow the next steps (as an admin user): [E-mail server configuration](/plugins/notifications/EmailServer). Once emailing is configured, you can either [invite new users](/admin-panel/AllUsersPage#invite-user-on-the-all-users-page) or [create a new user](/admin-panel/AllUsersPage#add-user) in the project. + +After this step you will have emailing capabilities enabled, and several more users invited to ReportPortal. + + + +## How to generate first data in ReportPortal + +The main section for work with ReportPortal is Launches tab in the left menu. But Launches table is empty and it’s hard to understand what ReportPortal can do and what to do next. + +[Generate demo data](/configuration/ProjectSettings#demo-data) feature can help you with this, by generating a set of demo launches (test executions), filters and dashboards. + + + +Once generated, you will see 5 launches (each Launch is equivalent to a testing session, or testing execution, or one Jenkins job). On the Filters tab you will find 1 filter. And Dashboards will have a Demo dashboard with visualizations/widgets built on top of the data from launches. + +Let’s understand how ReportPortal works based on demo data, and later we can return to the upload of your actual data from your testing frameworks. You can [navigate to this section](/tutorial/#how-to-add-test-results-to-reportportal) right now if you wish. + +## How to triage test failures with ReportPortal + +So far you have Demo launches in ReportPortal. You see the list of test executions on the Launches page with Total/Passed/Failed/Skipped numbers of test cases, and some of the issues are already sorted: Product Bug, Auto Bug, System Issue. But some issues required the attention of engineers, and they are marked with the “To Investigate” flag. + + + +The next step and the main goal for QA engineers is defect triage. This means opening each test case, identifying the root of the failure reason, and categorizing/associating it with a particular defect type. We call this action [“Make decision”](/analysis/ManualAnalysis). + + + +Based on test results, you can make decisions on further steps to improve your product. For example, you can arrange a call with a Development Team Leader to discuss bug fixing, if you have a lot of Product Bugs. + +In case of a large number of System Issues, you can ask a DevOps engineer to fix the environment or to review the testing infrastructure. Thus, you won‘t waste your team's effort and time by receiving failed reports due to an inconsistent environment. + +If you have a lot of Automation Bugs, put more effort into the test cases stabilization, and convert test automation (flaky) fails into valuable test cases, which will test your application for real. + +Moreover, you can post and link issues in just a few clicks using Bug Tracking System plugins: + +* [Jira Server](/plugins/bug-tracking/AtlassianJiraServer) +* [Jira Cloud](/plugins/bug-tracking/AtlassianJiraCloud) +* [Azure DevOps](/plugins/bug-tracking/AzureDevOps) +* [Rally](/plugins/bug-tracking/Rally) +* [GitLab](/plugins/bug-tracking/GitLab) +* [Monday](/plugins/bug-tracking/Monday) + + + +## How to filter test executions in ReportPortal + +To distinguish executions by type and focus only on required or related to your team today, you can use filters. Filters have “tab” capabilities, so you can easily navigate between different selections. You can filter by different criteria like launch name, description, number of failed or passed test cases, attributes, etc. + + + + + +## How to add more attributes for filtering launches in ReportPortal + +There is also a possibility to filter by attributes. You can find an example of setting attributes in your [profile](/user-account/EditPersonalInformation). You can include them in the parameters of automation, then additional attributes will appear under the Launch name, and you can filter test executions by these attributes as well. + + + + + +## How to visualize test results in ReportPortal + +So, you’ve separated your own test data from others. Now let’s [visualize our test results](https://reportportal.io/blog/test-results-visualization). Navigate to the Dashboards tab and open the Demo Dashboard. Here you can see basic visualizations that will help you understand the state of the product. + +You can also create new Dashboards. Since managers love charts, [let’s practice building some self-updated charts](https://youtu.be/CMDa5ZUUOh0?si=B_QnhZMZbhHBs4Cz)! And let them see the actual statistics and value of your test automation along with you, at any given moment of the time, since dashboards and widgets will be updated in real-time. +The best widget to start from is [Investigated percentage of launches](/dashboards-and-widgets/InvestigatedPercentageOfLaunches) which shows how well the QA team analyzes failures. + + + + + +Once QA team categorized all issues, we can understand why automation tests fail. Create [Launch statistics chart](/dashboards-and-widgets/LaunchStatisticsChart) widget for that. It shows the reasons of failures, for example, broken environment, outdated tests, product bugs. + + + + + +The next step can be creating the [Overall statistics chart](/dashboards-and-widgets/OverallStatistics) to define the Total test cases number and how many of them are Passed/Failed/Skipped. This widget can be applied for all launches or for the latest launches only. + + + + + +We've reviewed basic widgets. How can I get some insights from launches? Our suggestion is to create a [Flaky test cases](/dashboards-and-widgets/FlakyTestCasesTableTop50) table to find tests that often change status from passed to failed in different launches. These unstable tests do not give any confidence. The widget allows you to identify them so that you can pay special attention to them and fix them faster. + + + + + +Next, you might want to understand how long it takes to pass each test case. [Most time-consuming test cases](/dashboards-and-widgets/MostTimeConsumingTestCasesWidgetTop20) widget helps to find the longest scenarios. + + + + + +## How to use ML power of ReportPortal + +[ML suggestions](/analysis/MLSuggestions) feature prompts similar tests and defect types they have. In this way we don’t waste time re-reading the log but use ML hints instead. + +ML suggestions analysis is running every time you enter "Make decision" editor. ML suggestions are executed for all test items no matter what defect type they currently have. + + + +## How to use Pattern Analysis + +[Pattern Analysis](/analysis/PatternAnalysis) feature helps to find static repeating patterns within automation. For example, you know that a 404 error in your application might be caused by a specific product bug. Create the rule with a problem phrase, launch a test run, and Pattern Analysis will find all failed items which have known patterns in error logs. This allows you to draw a quick conclusion. + + + + + + + + + + + + + +## How to run Auto-Analysis in ReportPortal + +ReportPortal has [Auto-Analysis](/analysis/AutoAnalysisOfLaunches) feature which makes it possible for the application to independently check and perform some of the routine tasks. + +When you have test executions on the Launches page, you might need to analyze them automatically using ML. You can **switch ON Auto-Analysis in the settings** – then it will start as soon as any launch finishes. Auto-Analysis takes a part of your routine work and defines the reason for the test item failure based on the previous launches and sets: a defect type; a link to BTS (in case it exists); comment (in case it exists). As a result, you save time, and you can create new test cases instead of analyzing test results. + + + +You can **run Auto-Analysis manually** as well. + + + + + +When the test item is analyzed by ReportPortal, a label “AA” is set on the test item on a Step Level. + + + +## How to see the historical trend of the causes of falls + +And now let's build a more detailed “Launch statistics chart” widget with the historical changes in tests results. So, I can see how the results of my launches have changed over time. + +**Use case** + +Goal: Create a widget to show historical changes in Passed/Failed test cases in my API tests. + +Follow the instructions below to create this [Launch statistics chart](/dashboards-and-widgets/LaunchStatisticsChart). + + + +Here you can see the historical distribution of your test results: there are Passed or Failed tests. + + + +Instead of just Failed tests, you can see the dynamics of the total number of Product bugs, Automation bugs, System issues and No Defect. + + + +In this way, you see the historical trend of the causes of falls. + + + +## How to make automated test results part of my pipeline + +ReportPortal supports Continuous Testing with built-in functionality – [Quality Gates](/26.1/quality-gates) (premium feature). Quality Gate is a set of predefined criteria that should be met in order launch run to be considered as successful. + +Firstly, navigate to Project settings and create a Quality Gate with the rules which will be applied to a specific launch that matches the conditions. + + + + + + + + + + + +Finally, configure [integration with CI/CD](/26.1/quality-gates/IntegrationWithCICD) to send results to the pipeline. + +## How to use nested steps and attributes in ReportPortal + +Usually, you see the results of automation as a carpet of error logs, and only an automation engineer can understand what is happening inside. Adding nested steps ([Java](https://github.com/reportportal/client-java/wiki/Nested-steps), [Python](https://github.com/reportportal/client-Python/wiki/Nested-steps)) allows applying a one-time change in the test code to make a logical grouping of steps and make these error logs more readable for the whole team. + + + +You can also use [attributes](https://github.com/reportportal/client-java/wiki/Test-item-attributes) on any level (launch/suite/test/step) to provide more contextual information. + + + +## How to evaluate product health with ReportPortal + +You can create a [“Component health check”](/dashboards-and-widgets/ComponentHealthCheck) widget based on attributes to understand which components do not work well, and which areas we need to pay more attention to. + +**Use case 1** + +**Goal:** define which features are affected by failed scenarios. + + + +You can see scenarios on the first screenshot. + + + +Select failed scenario to see which features were affected. + + + +Finally, let’s see what is the priority of the failed test cases. + + + +**Use case 2** + +**Goal:** define the priority of failed test cases. + + + +You can see that failures occurred in test cases with critical priority. + + + +Select Critical to understand which operating system is having problems. + + + +Next, select Android to see the list of features that need more attention. + + + +**Use case 3** + +**Goal:** define state of test cases on mobile devices. + + + +On the screenshot below you can see that our trouble spot is Android. + + + +You can go to the test cases level and see what problems they had. + + + +## How to add test results to ReportPortal + +You have checked demo test results, dashboards and widgets. And now you want to see your real data in ReportPortal. + +ReportPortal is a TestOps service that integrates with your Test Framework, listens to events and visualizes test results. You cannot execute results right from ReportPortal, but you can [integrate ReportPortal with a Test Framework](/log-data-in-reportportal/test-framework-integration/) or [Implement own integration](/log-data-in-reportportal/ImplementOwnIntegration). diff --git a/versioned_docs/version-26.1/user-account/DataRetentionProcedure.md b/versioned_docs/version-26.1/user-account/DataRetentionProcedure.md new file mode 100644 index 0000000000..e98abde0ec --- /dev/null +++ b/versioned_docs/version-26.1/user-account/DataRetentionProcedure.md @@ -0,0 +1,57 @@ +--- +sidebar_position: 4 +sidebar_label: Data retention procedure +description: Configure data retention periods for PII data in ReportPortal. Set individual retention durations and manage data lifecycle using test execution reporting. +--- + +# Data retention procedure + +Starting from version 23.2, ReportPortal introduces an option to establish a retention period for collected Personally Identifiable Information (PII) data during instance configuration. This configuration allows for setting an individual retention duration for the instance in days, such as N=90, 180, 540 or any other number of days. + +**Docker** + +To activate data retention, add the following environment variables to Service Jobs: + +``` +# Int (days) +RP_ENVIRONMENT_VARIABLE_CLEAN_EXPIREDUSER_RETENTIONPERIOD: + +# CRON +RP_ENVIRONMENT_VARIABLE_CLEAN_EXPIREDUSER_CRON: +RP_ENVIRONMENT_VARIABLE_NOTIFICATION_EXPIREDUSER_CRON: +``` + +**Kubernetes** + +Fill in Service Jobs values in the [values.yaml](https://github.com/reportportal/kubernetes/blob/master/reportportal/values.yaml) + +``` +servicejobs: +coreJobs: + # Int (days) + notifyExpiredUserCron: + + # CRON + cleanExpiredUserCron: + cleanExpiredUserRetention: +``` + +If the data retention option is enabled but a specific number of days for deleting inactive users is not specified, no deletions will occur. In the case of specifying 0 or a negative value, an error will be displayed in the logs. + +When the data retention option is activated, the job will run daily to identify inactive users and obfuscate their data. + +Inactive users are defined as follows: + +1. Users who have not logged in for N days. + +2. Users who have not reported testing data for N days. + +Users are only classified as inactive if both conditions are satisfied. + +In cases where a user logs in but doesn’t submit any reports, they are not deleted as the second condition isn’t fulfilled. Similarly, if a user has not logged in but has submitted reports, they are still considered active. + +Before performing deletions, the system sends out email notifications as follows: notification №1 is dispatched to inactive users N-60 days before deletion, notification №2 is sent N-30 days prior, and notification №3 is sent 1 day before obfuscation. Notifications about account deletion are also sent by the system. + +Users will be able to return whenever they are invited to the project. + +In summary, a data retention policy optimizes resources and helps create a more efficient, secure, and effective environment for data management, which fosters business success. diff --git a/versioned_docs/version-26.1/user-account/DeleteAccount.mdx b/versioned_docs/version-26.1/user-account/DeleteAccount.mdx new file mode 100644 index 0000000000..b34904915f --- /dev/null +++ b/versioned_docs/version-26.1/user-account/DeleteAccount.mdx @@ -0,0 +1,27 @@ +--- +sidebar_position: 3 +sidebar_label: Delete account +description: Delete your ReportPortal account and personal data securely with proper data retention policies. +--- + +# Delete account + +Starting from version 23.2, ReportPortal users can delete their accounts along with their personal data. + +During the instance setup, the DevOps engineer (or whoever is deploying the instance) can use a variable to decide whether the "Delete account" button will appear in each user's profile or not. This setting is specific to each instance. + +``` +RP_ENVIRONMENT_VARIABLE_ALLOW_DELETE_ACCOUNT: true +``` + +When a user clicks on the **"Delete account" button**, a modal window with feedback options appears. The user can select from predefined options or choose "Other" and provide a specific reason for deleting their account. Alternatively, they can simply select "Other" without leaving any comments. + + + +To prevent accidental deletions, the user must enter "Delete" in capital letters to confirm their intention to delete the account. This extra step ensures that the user genuinely wants to proceed with the account deletion. Once the user clicks the "Delete" button, all personal information related to their account, including account name, email, and photo, will be removed from our test automation reporting platform. However, any data created or reported by the user in ReportPortal, such as launches, filters, widgets, and dashboards, will still be retained in the application but will no longer be accessible to the user. Additionally, the user will receive an email notification confirming the account deletion. + + + +In summary, allowing users to delete their accounts and personal data from our automated testing tool is a critical measure to protect user privacy. ReportPortal is committed to adhering to data protection regulations and staying up to date with industry trends to ensure compliance. + + diff --git a/versioned_docs/version-26.1/user-account/EditPersonalInformation.mdx b/versioned_docs/version-26.1/user-account/EditPersonalInformation.mdx new file mode 100644 index 0000000000..2985b5de52 --- /dev/null +++ b/versioned_docs/version-26.1/user-account/EditPersonalInformation.mdx @@ -0,0 +1,68 @@ +--- +sidebar_position: 1 +sidebar_label: Edit personal information +description: Manage your personal profile information, preferences, and account settings in ReportPortal. +--- + +# Edit personal information + +To navigate to the User Profile page, open menu at the bottom of the page and select "Profile" option. + +The User Profile page consists of the following elements: + +- Personal information and photo – JPEG, PNG, GIF file, with a file size limit no more than 1 MB and 300x500px. + +- Project Assignment – is the list of your projects and the specified roles that are tied to them. This +is a read-only list. + +- API Keys - unique tokens that grant access to the ReportPortal REST API. + +- Configuration Examples + +## Edit name, email and password + +You can edit the name, email and password fields. + +:::note +The specified login at user +creation cannot be changed. +::: +To edit the full name and/or email, click on the "Edit personal information" button. The full +name and email fields will become available. + +The full name allows: 3-256 symbols, English, Latin, Cyrillic, numeric characters and the +following symbols: hyphen, underscore, dot, and space. The email should be unique in ReportPortal. + +Make changes and click the "Save" button. + + + +:::note +Personal information for a GitHub user cannot be changed. +::: +## Change password + +To change your password in ReportPortal, click on the "Change password" button +above the form and enter: + +- Old password +- New password +- Confirm new password + +Check the box "Show password" to verify the password entered is what you intended to enter. + +Fill in these fields and click the "Submit" button under the form. + + + +:::note +GitHub users cannot change the password on ReportPortal. +::: + +## Language setting + +In ReportPortal, you can personalize your experience by selecting a preferred interface language. + +The language settings are available on the Profile page, where users may choose from six supported languages: English (United States), Ukrainian, Russian, Belarusian, Chinese, Spanish. Once selected, the chosen language will be applied across the entire application interface. + + diff --git a/versioned_docs/version-26.1/user-account/RestoreAPassword.mdx b/versioned_docs/version-26.1/user-account/RestoreAPassword.mdx new file mode 100644 index 0000000000..e70b4eb6ea --- /dev/null +++ b/versioned_docs/version-26.1/user-account/RestoreAPassword.mdx @@ -0,0 +1,38 @@ +--- +sidebar_position: 2 +sidebar_label: Restore a password +description: Reset your ReportPortal password securely using email verification to regain access to your account. +--- + +# Restore a password + +The **Restore a password page** in ReportPortal offers a simple process for users who may have forgotten their password and need to regain access to their account quickly. + +:::note +GitHub user cannot restore the password on ReportPortal. +::: + +To start the password reset process, follow these steps: + +1. Navigate to the login page
+ On the ReportPortal login page, you’ll see a link labeled "Forgot password?". + +2. Click the "Forgot password?" link
+Selecting this link will open the password recovery form, which prompts you to enter the email address associated with your ReportPortal account. + +3. Enter your email address
+Type in the email address that you registered with on ReportPortal, ensuring there are no typos. Once entered, click the "Send email" button. + +4. Check your email for password recovery instructions
+After submitting your email, a message will be sent to your inbox with instructions to proceed. + +5. Follow the recovery link in the email
+Open the email, which will contain a secure link to reset your password. Clicking on this link will redirect you to the ReportPortal "Change password" form. + +6. Complete the "Change password" form
+Enter your new password in the form, taking care to choose a strong, unique password for security. Confirm the new password and click "Change password" to save it. + +7. Log in with your new password
+With your password successfully updated, you can now return to the login page and sign in with your new credentials. + + diff --git a/versioned_docs/version-26.1/user-account/_category_.json b/versioned_docs/version-26.1/user-account/_category_.json new file mode 100644 index 0000000000..f97b966176 --- /dev/null +++ b/versioned_docs/version-26.1/user-account/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "User account", + "position": "8", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.1/user-account/api-key-revocation.mdx b/versioned_docs/version-26.1/user-account/api-key-revocation.mdx new file mode 100644 index 0000000000..66a48e0a37 --- /dev/null +++ b/versioned_docs/version-26.1/user-account/api-key-revocation.mdx @@ -0,0 +1,41 @@ +--- +sidebar_label: API Key Revocation +description: Manage API key revocation for secure access control in ReportPortal with manual and automated options. +--- + +# API Key Revocation + +## Overview + +This document describes the API Key revocation process in our API, including manual revocation, automated revocation through SCIM, and possible future improvements related to token expiration policies. + +## Manual Token Revocation + +Users have the ability to manually revoke their API keys through the following methods: + +1. **UI Revocation:** Users can navigate to the API Keys section of their profile page and use the "Revoke" button to disable a specific key. +2. **API Revocation:** Users can revoke a key programmatically by making a DELETE request to: + +```http +DELETE /users/{{user_id}}/api-keys/{{key_id}} +``` + +This API call immediately invalidates the specified key, preventing further use. + +## SCIM and API Keys Revocation + +When SCIM (System for Cross-domain Identity Management) is enabled, user account changes impact key accessibility as follows: + +- **User Deactivation:** API keys are not deleted when a user is deactivated, but the user loses the ability to use them. +- **User Deletion:** When a user profile is permanently deleted, all associated API keys are also removed. + +## Future Enhancements + +We are considering adding key expiration policies, which would allow automatic key rotation or expiration after a defined period. This could be implemented through server-side configuration, providing additional security controls for API key management. + +## Summary + +- Users can revoke their keys manually via UI or API. +- SCIM deactivation restricts key usage without deleting them. +- Full user deletion removes all associated API keys. +- Future improvements may include key expiration mechanisms. diff --git a/versioned_docs/version-26.1/user-account/img/DeleteAccount1.png b/versioned_docs/version-26.1/user-account/img/DeleteAccount1.png new file mode 100644 index 0000000000..783c3841ab Binary files /dev/null and b/versioned_docs/version-26.1/user-account/img/DeleteAccount1.png differ diff --git a/versioned_docs/version-26.1/user-account/img/DeleteAccount2.png b/versioned_docs/version-26.1/user-account/img/DeleteAccount2.png new file mode 100644 index 0000000000..f551cc0b63 Binary files /dev/null and b/versioned_docs/version-26.1/user-account/img/DeleteAccount2.png differ diff --git a/versioned_docs/version-26.1/user-account/img/LanguageSetting.png b/versioned_docs/version-26.1/user-account/img/LanguageSetting.png new file mode 100644 index 0000000000..74dc0bc551 Binary files /dev/null and b/versioned_docs/version-26.1/user-account/img/LanguageSetting.png differ diff --git a/versioned_docs/version-26.1/user-account/index.md b/versioned_docs/version-26.1/user-account/index.md new file mode 100644 index 0000000000..9e8104e314 --- /dev/null +++ b/versioned_docs/version-26.1/user-account/index.md @@ -0,0 +1,20 @@ +--- +title: User account +description: Manage your ReportPortal user account for an efficient real time dashboard open source. +--- + +# User account + +The **User Account** section provides comprehensive guidance on managing your personal account within ReportPortal. This section is essential for users who need to update their account details, manage security settings, or understand the data retention policies. Whether you're a new user or an experienced team member, knowing how to properly manage your account is crucial for maintaining secure and seamless access to our test report dashboard. + +In this section, you will find step-by-step instructions on how to update your personal information, such as changing your name, email, password, or other profile details. **It’s important to keep your information up to date** to ensure proper communication and secure access to ReportPortal. + +Additionally, if you ever forget your login credentials, this section provides clear instructions on **how to restore your password quickly and securely**. Following these steps will help you regain access to your account without any disruption to your work or productivity. + +For users who no longer need access to the system, this section also explains the process for removing an account easily and efficiently. + +Furthermore, the data retention policies are outlined here, explaining how ReportPortal stores and retains user data. These policies ensure that users have a clear understanding of how their data is managed within the test automation metrics dashboard, providing transparency and peace of mind. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.1/user-role-guides/img/PermissionMap.png b/versioned_docs/version-26.1/user-role-guides/img/PermissionMap.png new file mode 100644 index 0000000000..c392946272 Binary files /dev/null and b/versioned_docs/version-26.1/user-role-guides/img/PermissionMap.png differ diff --git a/versioned_docs/version-26.1/user-role-guides/index.md b/versioned_docs/version-26.1/user-role-guides/index.md new file mode 100644 index 0000000000..72128a31d3 --- /dev/null +++ b/versioned_docs/version-26.1/user-role-guides/index.md @@ -0,0 +1,68 @@ +--- +sidebar_position: 20 +sidebar_label: User role guides +description: Understand roles and permissions for admins, managers, members, operators, and customers. Configure access and responsibilities to keep projects secure and efficient. +--- + +# User role guides + +All accounts in ReportPortal are divided into two types according to **instance-level classification**: + +- Administrator +- Regular user + +In addition, each account in ReportPortal has a specific role on a project according to **project-level classification**: + +- Project Manager +- Member +- Operator +- Customer + +An account with the "Administrator" type has permission to configure the entire instance and access all projects. + +You can check the permissions for each other role on the Project Members page. + + + +## Administrator +[Installation steps](/installation-steps) +[Tutorial](/tutorial) +[User account](/user-account) +[Log data in ReportPortal](/log-data-in-reportportal) +[Logging Integration]( /configuration/IntegrationViaPlugin) +[Saved searches (Filters)](/saved-searches-filters) +[Dashboards and Widgets](/dashboards-and-widgets) +[Admin Panel](/admin-panel) +[Tips and tricks](/issues-troubleshooting) + +## Project Manager +[Tutorial](/tutorial) +[Admin Panel](/admin-panel) +[Work with reports](/work-with-reports) +[Saved searches (Filters)](/saved-searches-filters) +[Dashboards and Widgets](/dashboards-and-widgets) +[User account](/user-account) + +## Member +[Work with reports](/work-with-reports) +[Analysis](/analysis) +[Saved searches (Filters)](/saved-searches-filters) +[Dashboards and Widgets](/dashboards-and-widgets) +[User account](/user-account) +[Log data in ReportPortal](/log-data-in-reportportal) +[Logging Integration](/configuration/IntegrationViaPlugin) + +## Operator +[Work with reports](/work-with-reports) +[Analysis](/analysis) +[Saved searches (Filters)](/saved-searches-filters) +[Dashboards and Widgets](/dashboards-and-widgets) +[User account](/user-account) +[See list of project members](/configuration/UserManagement) + +## Customer +[Work with reports](/work-with-reports) +[Analysis](/analysis) +[Saved searches (Filters)](/saved-searches-filters) +[Dashboards and Widgets](/dashboards-and-widgets) +[User account](/user-account) diff --git a/versioned_docs/version-26.1/work-with-reports/FilteringLaunches.mdx b/versioned_docs/version-26.1/work-with-reports/FilteringLaunches.mdx new file mode 100644 index 0000000000..49b1cd5974 --- /dev/null +++ b/versioned_docs/version-26.1/work-with-reports/FilteringLaunches.mdx @@ -0,0 +1,318 @@ +--- +sidebar_position: 3 +sidebar_label: Filtering launches +description: Filter launches and test items using advanced criteria to quickly find specific test execution reporting data and analyze results efficiently. +--- + +# Filtering launches + +The data tables for the "Launches" and the "Debug" modes can be filtered with +a filtering block. Filters may be applied at all test item levels: +Launch/Suite/Test/Step. The "Launches" mode allows saving a filter +(a particular combination of filtering criteria) to the "Filters" tab. The +"Debug" mode does not allow saving filters. + +## Filtering parameters + +### Launch level filters + +You can filter launches by the following criteria: + +- **Name** - This filter is always displayed. At least 3 symbols are required for this search. +The system searches for the launches that contain the specified characters in the launch name. For example, a user sets Name = "abc", the system will output launches with names "abcd", "zabc", "zabcd", "abc". + +This filter has the next conditions: +* *contains* - shown all test items that contain a specified combination in the name; +* *not contains* - shown all test items that don't contain a specified combination in the name; +* *equals* - shown all test items with a name that is absolutely equal to the specified combination; +* *not equals* - shown all test items without items which name is absolutely equal to the specified combination; + +- **Launch number** - At least a symbol is required for this search. +The system searches for launches with the mentioned number. This filter has the next conditions: equals, greater than or equal; less than or equal. + +* *greater than or equal* - shown all test items with launch number equal or greater than specified; +* *less than or equal* - shown all test items with launch number equal or less than specified; +* *equals* - shown only test items with specified number; + +- **Description** - At least 3 symbols are required for this search. +The system searches for the launches that contain the specified characters in +the launch description. +This filter has the next conditions: contains, not contains, equals, not equals. + +* *contains* - shown all test items that contain specified combination in the description; +* *not contains* - shown all test items that don't contain specified combination in the description; +* *equals* - shown all test items which description is absolutely equal to the specified combination; +* *not equals* - shown all test items without items which description is absolutely equal to the specified combination; + +- **Owner** - At least 3 symbols are required for this search. The system searches for the launches owned by specified project members. This filter can filter launches by several owners. You can find launches by an owner in just one click. +To do this, click on a required owner under the launch name and the system will display all launches of the selected user. + +- **Start Time** - The system searches for the launches with a specified start time. + +The following values are available: +* *Today* - shown all test items with start time Today; filter contains a dynamic value and search launches with start time equals Today, i.e. current date; +* *Last 2 days* - shown all test items with start time Last 2 days; filter contains a dynamic value, which will be updated every day, and search launches with start time equal Last 2 days; +* *Last 7 days* - shown all test items with start time Last 7 days; filter contains a dynamic value, which will be updated every day, and search launches with start time equal Last 7 days; +* *Last 30 days* - shown all test items with start time Last 30 days; filter contains a dynamic value, which will be updated every day, and search launches with start time equal Last 30 days; +* *Custom range* - shown all test items with a start time in the custom period; the user can set strict period or dynamic value (filter will be a move to one day every day, where Today (current day) is the last day in period); + +- **Attribute** - It is allowed to search for the attributes with at least 1 symbol in it. The system searches for launches with the specified Attribute(s). Several attributes may be specified. +You can find launches by a Attribute in just one click. To do this, click on a required Attribute under the launch name and the system will display all launches that have this Attribute. +This filter has the next conditions: +* *all ( in API: 'filter.has.Attributes')* - shown all test items which contain all specified attributes; +* *without all( in API:'filter.!in.Attributes')* - shown all test items without specified attributes in any combinations; +* *any ( in API:filter.in.Attributes)* - shown all test items which contain any combinations of specified attributes; +* *without any ( in API:'filter.!has.Attributes')* - shown all test items without all specified attributes in case, when both of attributes present in the test item; + +- **Total**, **Passed**, **Failed**, **Skipped** - These criteria are equipped with conditions: ≥ and ≤ and =. +* *greater than or equal* - shown all launches with test cases equal or greater than specified; +* *less than or equal* - shown all launches with test cases equal or less than specified; +* *equals* - shown only launches with a specified number of test cases; + +- **Product Bug**, **Automation Bug**, **System Issue**, **To Investigate** - These criteria are equipped with conditions: ≥ and ≤ and =. +The list of filtering criteria depends on the use of project defect types. If you use a standard set of defects: Product Bug, Automation Bug, System Issue, you will see them on the list of filtered criteria. On projects with custom defects, the system can filter launches by each predefined defect type, each custom defect type and by a total number of defects that belong to the same group. +For example, if you create 2 custom Product Bugs, the total number of product bugs will be calculated as the sum of predefined *Product Bug* + your custom *Product Bug-1* and *Product Bug-2*. +* *greater than or equal* - shown all launches with test cases equal or greater than specified; +* *less than or equal* - shown all launches with test cases equal or less than specified; +* *equals* - shown only launches with a specified number of test cases; + + + +### Suite level filters + +You can use the ReportPortal filter by suite name to display only the relevant test items. + +All available filter options at the Suite level: + +- **Name** - This filter is always displayed. At least 3 symbols are required for this search. +The system searches for the launches that contain the specified characters in the launch name. For example, a user sets Name = "abc", the system will output launches with names "abcd", "zabc", "zabcd", "abc". + +This filter has the next conditions: +* *contains* - shown all test items that contain a specified combination in the name; +* *not contains* - shown all test items that don't contain a specified combination in the name; +* *equals* - shown all test items with a name that is absolutely equal to the specified combination; +* *not equals* - shown all test items without items which name is absolutely equal to the specified combination; + +- **Start Time** - The system searches for the launches with a specified start time. + +The following values are available: +* *Today* - shown all test items with start time Today; filter contains a dynamic value and search launches with start time equals Today, i.e. current date; +* *Last 2 days* - shown all test items with start time Last 2 days; filter contains a dynamic value, which will be updated every day, and search launches with start time equal Last 2 days; +* *Last 7 days* - shown all test items with start time Last 7 days; filter contains a dynamic value, which will be updated every day, and search launches with start time equal Last 7 days; +* *Last 30 days* - shown all test items with start time Last 30 days; filter contains a dynamic value, which will be updated every day, and search launches with start time equal Last 30 days; +* *Custom range* - shown all test items with a start time in the custom period; the user can set strict period or dynamic value (filter will be a move to one day every day, where Today (current day) is the last day in period); + +- **Description** - At least 3 symbols are required for this search. +The system searches for the launches that contain the specified characters in +the launch description. +This filter has the next conditions: contains, not contains, equals, not equals. + +* *contains* - shown all test items that contain specified combination in the description; +* *not contains* - shown all test items that don't contain specified combination in the description; +* *equals* - shown all test items which description is absolutely equal to the specified combination; +* *not equals* - shown all test items without items which description is absolutely equal to the specified combination; + +- **Attribute** - It is allowed to search for the attributes with at least 1 symbol in it. The system searches for launches with the specified Attribute(s). Several attributes may be specified. +You can find launches by a Attribute in just one click. To do this, click on a required Attribute under the launch name and the system will display all launches that have this Attribute. +This filter has the next conditions: +* *all ( in API: 'filter.has.Attributes')* - shown all test items which contain all specified attributes; +* *without all( in API:'filter.!in.Attributes')* - shown all test items without specified attributes in any combinations; +* *any ( in API:filter.in.Attributes)* - shown all test items which contain any combinations of specified attributes; +* *without any ( in API:'filter.!has.Attributes')* - shown all test items without all specified attributes in case, when both of attributes present in the test item; + +- **Total**, **Passed**, **Failed**, **Skipped** - These criteria are equipped with conditions: ≥ and ≤ and =. +* *greater than or equal* - shown all launches with test cases equal or greater than specified; +* *less than or equal* - shown all launches with test cases equal or less than specified; +* *equals* - shown only launches with a specified number of test cases; + +- **Product Bug**, **Automation Bug**, **System Issue**, **To Investigate** - These criteria are equipped with conditions: ≥ and ≤ and =. +The list of filtering criteria depends on the use of project defect types. If you use a standard set of defects: Product Bug, Automation Bug, System Issue, you will see them on the list of filtered criteria. On projects with custom defects, the system can filter launches by each predefined defect type, each custom defect type and by a total number of defects that belong to the same group. +For example, if you create 2 custom Product Bugs, the total number of product bugs will be calculated as the sum of predefined *Product Bug* + your custom *Product Bug-1* and *Product Bug-2*. +* *greater than or equal* - shown all launches with test cases equal or greater than specified; +* *less than or equal* - shown all launches with test cases equal or less than specified; +* *equals* - shown only launches with a specified number of test cases; + +### Test level filters + +At the Test level, the following options are available: + +- **Name** - This filter is always displayed. At least 3 symbols are required for this search. +The system searches for the launches that contain the specified characters in the launch name. For example, a user sets Name = "abc", the system will output launches with names "abcd", "zabc", "zabcd", "abc". + +This filter has the next conditions: +* *contains* - shown all test items that contain a specified combination in the name; +* *not contains* - shown all test items that don't contain a specified combination in the name; +* *equals* - shown all test items with a name that is absolutely equal to the specified combination; +* *not equals* - shown all test items without items which name is absolutely equal to the specified combination; + +- **Start Time** - The system searches for the launches with a specified start time. + +The following values are available: +* *Today* - shown all test items with start time Today; filter contains a dynamic value and search launches with start time equals Today, i.e. current date; +* *Last 2 days* - shown all test items with start time Last 2 days; filter contains a dynamic value, which will be updated every day, and search launches with start time equal Last 2 days; +* *Last 7 days* - shown all test items with start time Last 7 days; filter contains a dynamic value, which will be updated every day, and search launches with start time equal Last 7 days; +* *Last 30 days* - shown all test items with start time Last 30 days; filter contains a dynamic value, which will be updated every day, and search launches with start time equal Last 30 days; +* *Custom range* - shown all test items with a start time in the custom period; the user can set strict period or dynamic value (filter will be a move to one day every day, where Today (current day) is the last day in period); + +- **Description** - At least 3 symbols are required for this search. +The system searches for the launches that contain the specified characters in +the launch description. +This filter has the next conditions: contains, not contains, equals, not equals. + +* *contains* - shown all test items that contain specified combination in the description; +* *not contains* - shown all test items that don't contain specified combination in the description; +* *equals* - shown all test items which description is absolutely equal to the specified combination; +* *not equals* - shown all test items without items which description is absolutely equal to the specified combination; + +- **Attribute** - It is allowed to search for the attributes with at least 1 symbol in it. The system searches for launches with the specified Attribute(s). Several attributes may be specified. +You can find launches by a Attribute in just one click. To do this, click on a required Attribute under the launch name and the system will display all launches that have this Attribute. +This filter has the next conditions: +* *all ( in API: 'filter.has.Attributes')* - shown all test items which contain all specified attributes; +* *without all( in API:'filter.!in.Attributes')* - shown all test items without specified attributes in any combinations; +* *any ( in API:filter.in.Attributes)* - shown all test items which contain any combinations of specified attributes; +* *without any ( in API:'filter.!has.Attributes')* - shown all test items without all specified attributes in case, when both of attributes present in the test item; + +- **Total**, **Passed**, **Failed**, **Skipped** - These criteria are equipped with conditions: ≥ and ≤ and =. +* *greater than or equal* - shown all launches with test cases equal or greater than specified; +* *less than or equal* - shown all launches with test cases equal or less than specified; +* *equals* - shown only launches with a specified number of test cases; + +- **Product Bug**, **Automation Bug**, **System Issue**, **To Investigate** - These criteria are equipped with conditions: ≥ and ≤ and =. +The list of filtering criteria depends on the use of project defect types. If you use a standard set of defects: Product Bug, Automation Bug, System Issue, you will see them on the list of filtered criteria. On projects with custom defects, the system can filter launches by each predefined defect type, each custom defect type and by a total number of defects that belong to the same group. +For example, if you create 2 custom Product Bugs, the total number of product bugs will be calculated as the sum of predefined *Product Bug* + your custom *Product Bug-1* and *Product Bug-2*. +* *greater than or equal* - shown all launches with test cases equal or greater than specified; +* *less than or equal* - shown all launches with test cases equal or less than specified; +* *equals* - shown only launches with a specified number of test cases; + +### Step level filters + +Our qa automation dashboard allows the following filters on Step level: + +- **Name** - This filter is always displayed. At least 3 symbols are required for this search. +The system searches for the items containing specified characters in the test item name. For example, user sets Name = "abc", the system will output test items with names "abcd", "zabc", "zabcd", "abc". +This filter has the next conditions: contains, not contains, equals, not equals. +* *contains* - shown all test items that contain specified combination in the name; +* *not contains* - shown all test items that don't contain specified combination in the name; +* *equals* - shown all test items which name is absolutely equal to the specified combination; +* *not equals* - shown all test items without items which name is absolutely equal to the specified combination; + +- **Method Type** - System searches for test items on a current level with Method Type(s) specified. + +The following filtering options are available: +* *Before suite* +* *Before groups* +* *Before class* +* *Before test* +* *Before method* +* *Test* +* *After method* +* *After test* +* *After class* +* *After groups* +* *After suite* + +- **Description** - At least 3 symbols are required for this search. +The system searches items on the current level containing the specified value in the test item Description. For example, a user sets Description = "abc", the system will output test items with +Descriptions "abcd", "zabc", "zabcd", "abc". +This filter has the next conditions: contains, not contains, equals, not equals. +* *contains* - shown all test items that contain specified combination in the description; +* *not contains* - shown all test items that don't contain specified combination in the description; +* *equals* - shown all test items which description is absolutely equal to the specified combination; +* *not equals* - shown all test items without items which description is absolutely equal to the specified combination; + +- **Status** - The system searches for test items on a current level with Status(es) specified. + +- **Start Time** - The system searches for test items on the current level with specified Start Time values. +* *Today* - shown all test items with start time Today; filter contains a dynamic value and search launches with start time equals Today, i.e. current date; +* *Last 2 days* - shown all test items with start time Last 2 days; filter contains a dynamic value, which will be updated every day, and search launches with start time equal Last 2 days; +* *Last 7 days* - shown all test items with start time Last 7 days; filter contains a dynamic value, which will be updated every day, and search launches with start time equal Last 7 days; +* *Last 30 days* - shown all test items with start time Last 30 days; filter contains a dynamic value, which will be updated every day, and search launches with start time equal Last 30 days; +* *Custom range* - shown all test items with a start time in the custom period; the user can set strict period or dynamic value (filter will be a move to one day every day, where Today (current day) is the last day in period); + +- **Defect Type** - The system searches for test items on the current level with Defect Type(s) specified. +The list of filtering values depends on the use of project defect types. +On projects with defaults set to a specified defect type, "Defect Type" the criteria should contain the following values: To Investigate, Product Bug, Automation Bug, System Issue, No Defect. +On projects with customizable defects, the system will filter items by each predefined defect type and each custom defect type. + +- **Defect Comment** - At least 3 symbols are required for this search. +The system searches items on the current level containing specified values in the test item Defect Comment. +For example, a user sets Defect Comment = "abc", the system will output test items with +Defect Comments "abcd", "zabc", "zabcd", "abc". +* *contains* - shown all test items that contain specified combination in the defect comment; +* *not contains* - shown all test items that don't contain specified combination in the defect comment; +* *equals* - shown all test items which defect comment is absolutely equal to the specified combination; +* *not equals* - shown all test items without items which defect comment is absolutely equal to the specified combination; + +- **Attribute** - 1 symbol is enough for this search. +The system searches for the items with or without a specified Attribute(s). Multiple Attributes may be specified at once. The following filtering conditions are available: ALL/ANY and WITHOUT ALL/WITHOUT ANY. +* *all ( in API: 'filter.has.attributes')* - shown all test items which contain all specified Attributess; +* *without all( in API:'filter.!in.attributes')* - shown all test items without specified Attributess in any combinations; +* *any ( in API:filter.in.attributes)* - shown all test items which contain any combinations of specified attributes; +* *without any ( in API:'filter.!has.attributes')* - shown all test items without all specified attributes in case, when both of attributes present in the test item; + +- **Analysed by RP (AA)** - There are two options: With AA mark, Without AA mark. + +- **Ignored in AA** - There are two options: With Ignore mark, Without ignoring mark. + +- **Issue in BTS** - There are two options: 1 symbol is enough for autocomplete. +The system searches for the items with or without a specified Issue in BTS. Multiple Issues may be specified at once. The following filtering conditions are available: ALL/ANY and WITHOUT ALL/WITHOUT ANY. +* *all (has)* - shown all test items which contain all specified Issues; +* *without all(!has)* - shown test items without all specified Issies in any combinations; +* *any (in)* - shown all test items which contain any combinations of specified Issues; +* *without any (!in)* - shown all test items without any specified Issues + +- **Pattern name** - All patterns names, which a PM creates on Project Settings. + +- **Retry** - There are two options: Has retries/Has no retries. + + + +## Filtering by direct link + +To create a direct link with a predefined filter in the UI, follow these steps: + +1. Start with the standard project link structure, which remains unchanged: + + + +2. Append the **launchesParams** query parameter. This allows you to include all existing filters, e.g. *attributes, name,* etc. and generate shareable, direct links to launches based on specific values defined in the filter. + +:::note +Ensure that all special characters (e.g. “=”, “,”) are properly encoded as [URI component](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent) before using the link, e.g. +``` +https://demo.reportportal.io/ui/#default_personal/launches/all?launchesParams=filter.cnt.name%3Ddemo +``` +::: + +You can encode links either programmatically within your favorite programming language or manually using any [URL encoder](https://meyerweb.com/eric/tools/dencoder/). + +:::tip +This way, as a most common use case you can create a shareable direct URL for launches based on attribute values filter: +``` +https://demo.reportportal.io/ui/#default_personal/launches/all?launchesParams=filter.has.compositeAttribute%3Dplatform%3Alinux +``` +::: + + + +In the table below, you can see description of all the parameters that can be applied to filter launches and generate a direct URL for them. All these filters are the same as filter fields for the launches on ReportPortal UI. + +| **Filter name** | **URL parameter** | **Possible conditions** | **Example** | +|---|---|---|---| +|Launch name | `filter.{condition}.name` | `cnt,!cnt, eq, ne` | `filter.!cnt.name=demo`| +|Launch number | `filter.{condition}.number` | `eq, gte, lte` | `filter.gte.number=1`| +|Description | `filter.{condition}.description` | `cnt, !cnt, eq, ne` | `filter.eq.description=test`| +|Owner | `filter.{condition}.user` | `cnt` | `filter.cnt.user=Jon`| +|Attribute | `filter.{condition}.compositeAttribute` | `has, !has, any, !any` | `filter.has.compositeAttribute=platform:windows`| +|Start time | `filter.{condition}.startTime` | `btw` | `filter.btw.startTime=1757278800000%2C1757451600000`| +|Total | `filter.{condition}.statistics$executions$total` | `eq, gte, lte` | `filter.gte.statistics$executions$total=3`| +|Passed | `filter.{condition}.statistics$executions$passed` | `eq, gte, lte` | `filter.lte.statistics$executions$passed=4`| +|Failed | `filter.{condition}.statistics$executions$failed` | `eq, gte, lte` | `filter.gte.statistics$executions$failed=4`| +|Skipped | `filter.{condition}.statistics$executions$skipped` | `eq, gte, lte` | `filter.gte.statistics$executions$skipped=5`| +|Automation Bug Group | `filter.{condition}.statistics$defects$automation_bug$total` | `eq, gte, lte` | `filter.gte.statistics$defects$automation_bug$total=5`| +|System Issue Group | `filter.{condition}.statistics$defects$system_issue$total` | `eq, gte, lte` | `filter.gte.statistics$defects$system_issue$total=5`| +|To Investigate Group | `filter.{condition}.statistics$defects$to_investigate$total` | `eq, gte, lte` | `filter.gte.statistics$defects$to_investigate$total=5`| + +:::note +For the "Start time" parameter, both the start and end values are timestamps in milliseconds. +::: diff --git a/versioned_docs/version-26.1/work-with-reports/HistoryOfLaunches.mdx b/versioned_docs/version-26.1/work-with-reports/HistoryOfLaunches.mdx new file mode 100644 index 0000000000..a303885939 --- /dev/null +++ b/versioned_docs/version-26.1/work-with-reports/HistoryOfLaunches.mdx @@ -0,0 +1,284 @@ +--- +sidebar_position: 7 +sidebar_label: History of launches +description: Track test execution history and trends over time to identify patterns and improve test automation metrics dashboard insights. +--- + +# History of launches + +## Historical trend of executions + +The historical trend of executions represents your history view for the list of test items in our test execution dashboard. This feature can help you to find +the most unstable test cases in your suites/ launches/ builds. + +To see a table of the historical trend of executions, navigate to the "Launches" page and drill down to launch structure/ or launch statistics. + +### History table based on Test Case Hash + +Test case hash is a parameter that is automatically generated based on the Test Case ID (if specified) or the full path to the test. + +You can read about the Test Case ID [here](/work-with-reports/TestCaseId). + +### Test Case Hash history + +Run ReportPortal without env variable. + +## History table + +Where you can find History table. + +Drill down to the Step view (test executions list). + +Click the "History" button. + +You will see a historical trend in a table. + +History trends have the following color scheme: + + * Red - indicates the launches with failed or interrupted cases + + * Green - indicates passed launches + + * Yellow – indicates the launches with several equal test items present within a required level + + * Grey - indicates the test item with no descendants in this run. + + * Animated - still without state [in progress] + +You can select the depth of history: 3, 5, 10, 15, 20, 25 or 30 launches from the "History +Depth" drop-down menu. + +There are two options for a History table: + +- history for all launches +- history for launches with the same name + +If your are using History table based on Test Case Hash, you will be able to use both of this options. +In case you use a history table based on UID, a history table will show you results in mode: "History for launches with the same name". + +### History for all launches + +If you have configured ReportPortal with [TestCase History table](/work-with-reports/HistoryOfLaunches#history-table). +This option is for you. + +**How you can open a history table with execution from all launches?** + +- Open All launches tab +- Click on the Launch name/ Total/ Passed/ Failed/ Skipped /Product Bug/ Auto Bug/ System Issues/ To investigate statistics +- Click on the button 'History' +- Choose the option '**All launches'** in the drop-down 'BASE' + +**What information is shown on the table based on Test Case Hash?** + +On the history table, you can see the first 20 test cases their last 10 (or 3/5/10/15/20/25/30) executions from all launches on the project. +Each column on the history table is equaled to a number of the execution. + +Let's see an example. + +>**Use case:** You have a test suite for the regression. You want to perform regression testing in different environments. For those reasons, you are running your regression suite on macOS, Windows, and Linux. +After test runs finish, you will be able to see on the All launches tab on ReportPortal 3 launches with different names: *Regression_MacOS, Regression_Win, Regression_Linux*. +If you click on the Total statistic for the launch *Regression_MacOS* and click on the 'History' button, you will see a History table with all test cases in the suite and their 10 last executions from all launches on the project (e.g. from *Regression_MacOS, Regression_Win, Regression_Linux*) +> +> +> | Test case name | Execution #3 | Execution #2 | Execution #1| +> | ------------- | ------------- |------------- |------------- | +> | Test 1 | Passed |Failed |Passed | +> | Test 2 | Failed |Passed |Passed | +> | Test 3 | Failed |Passed |Passed | +> +> When you hover one of the cells on the table, you will be able to see to what launch this execution belongs to. + + + +### History table for launches with the same name + +If you have configured ReportPortal with [TestCase History table](/work-with-reports/HistoryOfLaunches#history-table). +This option is for you. + +**How you can open a history table with execution launches with the same name?** + +- Open All launches tab +- Click on the Launch name/ Total/ Passed/ Failed/ Skipped /Product Bug/ Auto Bug/ System Issues/ To investigate statistics +- Click on the button 'History' +- Choose the option **'Launches with the same name'** in the drop-down 'BASE' + +**What information is shown on the table based on Test Case Hash (with option "Launches with the same name"?)** + +On the history table, you can see the first 20 test cases their last 10 (or 3/5/10/15/20/25/30) executions from only launches with the same name on the project. +Each column on the history table is equaled to a number of the execution. + +Let's see an example. + +>**Use case:** You have a test suite for the regression. You want to perform regression testing in different environments. For those reasons, you are running your regression suite on macOS, Windows, and Linux. +After test runs finish, you will be able to see on the All launches tab on ReportPortal 3 launches with different names: *Regression_MacOS, Regression_Win, Regression_Linux*. +If you click on the Total statistic for the launch *Regression_MacOS* and click on the 'History' button and you choose the option **'Launches with the same name'**, you will see executions only from launches with name *Regression_MacOS*. +> +> +> | Test case name | Execution #2| +> | ------------- | ------------- | +> | Test 1 |Passed | +> | Test 2 | Passed | +> | Test 3 | Passed | +> + + + + +### Cell preview options + +"History" tab is available on all levels: Launch/Suite/Test/Step. + +By default, the History table is displayed in a **pass/fail view with defect types** shown. This happens when the Defect type option is selected in the Cell preview dropdown. + + + +But you can transform the History table view into a **powerful monitoring dashboard**, enabling teams to track custom metrics relevant to their workflows and quickly spot items that fall outside acceptable parameters. + +For that: + +1. Drill down to the Launch/Suite/Test/Step. +2. Click on the "History" tab. +3. Select the "Attribute" option in the "Cell preview" dropdown. +4. Add the key in "Attribute Key" field. +5. Provide a valid value in the "Highlight less than" field. + + + +Using this approach, you can monitor performance metrics: + +* Track response rates +* Identify bottlenecks and performance degradations +* Monitor system efficiency over time + +**Key Benefits:** + +- **Visual Prioritization**
+Instantly see which items need attention through highlighting + +- **Custom Flexibility**
+ Monitor any measurable attribute relevant to your workflow + +- **Trend Analysis**
+ Track improvements or issues over time + +- **Proactive Management**
+ Catch problems before they escalate + +- **Data-Driven Decisions**
+ Make informed choices based on historical patterns + + + +### Actions + +From the History table you will be able to perform the next actions: + +- edit items +- [edit defect](/work-with-reports/InvestigationOfFailure#set-defect-type) +- [post issue](/work-with-reports/InvestigationOfFailure#post-bug-to-bug-tracking-system) +- link / unlink issue +- delete items + +For that: +- Hover the cell on the history table +- Click on the checkbox +- Check needed item +- Click on the button 'Action' +- Choose needed action + +#### Compare launch results with the filter + +You can add a custom column with the latest filter results to the History table. + +>**Use case:** You have a test suite for the regression. You run this suite for different versions (version 1, version2, version 3). +When you run tests for the new version you need to find out if new bugs appeared in it in comparison with the previous version. +You can create a filter that includes test executions for the previous version (version 2). +Then you can open a history table for the launch with results for version 3 and add a custom column with the filter 'Version 2'. +The system adds the latest executions from filter 'Version 2' and you will be able to compare the latest results for version 2 and version 3. + + + +#### Historical line of executions + +The historical line of executions represents the statuses of the current test case in history. + +You can see the historical line of executions at the Log level. History is shown only for the +current item and there are 30 items max in history. +You can click on the item in the history and check the results in previous executions, read +the comments, find the bugs, posted to this fail. +This feature will save you time and help you to understand the reason for your failure. + +History line has the following color scheme: + + * Red - failed or interrupted. Contains a link to a related bug (it has it) + + * Grey - skipped. Contains a link to a related bug (it has it) + + * Green - passed. Contains only execution number + + * Animated - still without state [in progress] + +You can mark the current method or case with a defect type, and write a comment +using the defect editor block. + +To come into a certain execution of an appropriate launch, hit a launch number +above the item. + +Also on a History line, you can see an "i" label, it means that the item with this label has a defect comment or/and a link to the Bug Tracking System. + +#### History across All launches + +By default system shows history across Launches with the same name. + +But you can choose option "History across All Launches" and system will show you executions of the test cases which have been executed in launches with different names. + +On hover user can find launch name of test and all launch attributes. + + + +#### Duration fluctuation + +If test execution has duration growth in comparison with previous run, the system marks such items with red triangles: + +No duration growth - 0 triangles + +duration growh from 0 to 20% - 1 triangles + +duration growh from 21% - 50% - 2 trianges + +duration growh from 51% - 100% - 3 trianges + +duration growh from 101% and higher - 4 trianges + +#### Load more History + +By default the system shows 12 latest executions. If you need more history you can click on the button "Load more 9 items and the system loaded more executions on history line. Max number of items on History line is 30 executions. + +User can move on History line using horizontal scroll. + +### Test Item actions history + +Test Item actions history will show you the history of actions, which have been made to a +certain test item. You can see the kind of activity, and who performed it. + +The following actions are shown on the history of actions: + +> user changed defect type of test item + +> user posted a comment to the test item + +> user posted a bug to the Bug Tracking System or added a link to the existing in Bug Tracking System issue. + +> analyzer changed defect type of test item based on the item (where "item" is a link to a log view of an item which has been chosen by Analyzer as the most relevant result) + +> analyzer posted a comment to the test item + +> analyzer posted a bug to the Bug Tracking System or added a link to the existing in the Bug Tracking System issue. + +To see the history of actions, navigate to a certain child item. By default you +will see the last action in one line. + +Use spoiler to maximize actions history: + + + diff --git a/versioned_docs/version-26.1/work-with-reports/InvestigationOfFailure.mdx b/versioned_docs/version-26.1/work-with-reports/InvestigationOfFailure.mdx new file mode 100644 index 0000000000..be8c7fec93 --- /dev/null +++ b/versioned_docs/version-26.1/work-with-reports/InvestigationOfFailure.mdx @@ -0,0 +1,87 @@ +--- +sidebar_position: 6 +sidebar_label: Investigation of failure +description: Investigate test failures by setting defect types, linking bug tracking systems, and performing detailed test failure analysis for better quality control. +--- + +# Investigation of failure + +## Set defect type + +ReportPortal provides the possibility for test failure analysis of your runs. The investigation includes setting the appropriate defect type of failed items, posting a defect for them or linking the ID of a defect that is already created in the bug tracking system. + +Using [“Make decision” modal](/analysis/ManualAnalysis#make-decision-modal-redesign), you can choose the real reason of your failure and provide a comment for this fail. + +When a defect is found in a test, the bug triage should be performed and proper defect type should be assigned to it, in order to have accurate test runs statistics. You will be able to change a defect type for a test and mark it as a Product Bug/Automation Bug/System Issue/No Defect at any time. + +The available defect types: + +* “To investigate” +* “Product bug” +* “Automation bug” +* “System issue” +* “No defect” + +***“To investigate”*** means that no investigation has been made on this defect yet. + +***“Product bug”*** means that the defect was investigated and a production bug found as the reason for the failure of this test. + +***“Automation bug”*** means that the defect was investigated and the automation test is not correct. + +***“System issue”*** means that the defect was investigated and it turns out that a system-level issue, like an app crash, caused the test to fail. + +***“No defect”*** means that the defect was investigated and was defined to be not a defect. + +You can successfully work with basic defect types, or you can also create up to 70 custom defect types. Moreover, it is possible to have all custom groups of issues under 1 default defect type (if needed). + +## How to create a custom defect type? + +1. Open Project Settings +2. Navigate to “Defect Types” tab +3. Click “Create Defect Type” button at the top of the page or click the icon near the defect type group +4. Select the Defect Type Group +5. Fill the “Defect Type Name” and the “Abbreviation” fields +6. Select a color in the “Color of Defect” section (you can select any color from the color picker) + + + +Thanks to custom defect types, you can get the following benefits: + +1. More specific defect types to identify the most problematic product area +2. The ability to prioritize bugs based on more specific types of defects +3. A possibility to assign people / teams + +For example, there can be following custom defect types that are created on the project: + +**Product Bug Group** – Billing feature, Backend bug, UI issue, Not implemented feature + +**Automation Bug Group** – Test data issue, Timeout issue + +**System Issue Group** – Permission issue, Environment issue + +**No Defect Group** – New feature, Manually passed, Fixed (if the bug is fixed, but auto tests are not fixed yet) + +:::note +There is also To Investigate Group for the defects that have not been sorted out yet. +::: + +:::important +A small life hack: you can identify defects by the name of the team and, in doing so, assign them to the appropriate team. This method can be applied within any defect type group. +::: + + + + + +## Post bug to Bug Tracking System + +ReportPortal allows to connect some popular bug tracking systems with our test automation reporting platform and post a bug to them or link the ticket ID of the already posted defect to the test item in ReportPortal. + +Before posting/linking a bug, make sure that the bug tracking systems are connected to the project on the project settings page. To check it, please, find the user guides below: + +* [Jira Server](/plugins/bug-tracking/AtlassianJiraServer) +* [Jira Cloud](/plugins/bug-tracking/AtlassianJiraCloud) +* [Azure DevOps](/plugins/bug-tracking/AzureDevOps) +* [Rally](/plugins/bug-tracking/Rally) +* [GitLab](/plugins/bug-tracking/GitLab) +* [Monday](/plugins/bug-tracking/Monday) diff --git a/versioned_docs/version-26.1/work-with-reports/LaunchesTestItemsAttributes.mdx b/versioned_docs/version-26.1/work-with-reports/LaunchesTestItemsAttributes.mdx new file mode 100644 index 0000000000..2c6dcb45b7 --- /dev/null +++ b/versioned_docs/version-26.1/work-with-reports/LaunchesTestItemsAttributes.mdx @@ -0,0 +1,155 @@ +--- +sidebar_position: 4 +sidebar_label: Launches/test items attributes +description: Use attributes to organize and categorize test data for better test automation reporting tools performance and easier analysis across launches. +--- + +# Launches/test items attributes + +For more convenient and effective use of our test report dashboard, we recommend paying attention to attributes. + +## What are attributes? + +Attributes are specific data points that can be included at all levels in ReportPortal: + +* launch +* suite +* test +* step + +**Launch** + + +**Suite** + + +**Test** + + +**Step** + + +**The purposes of attributes are:** + +1. Attributes allow you to categorize, group, or classify tests, making them easier to manage in the future. +2. Attributes are used for filtering. +3. You can create a filter based on the attribute and then build widgets using this filter. + +You can [report attributes to ReportPortal](/log-data-in-reportportal/HowToReportAttributesToReportPortal) via test framework integrations or via API and add or edit them via the UI. For that, click on the pencil icon next to the desired launch/test item. Then click on the existing attribute to edit the key and value. + + + + + + + +## Best practices for using attributes + +1. Avoid having too many attributes on a single item. + +When there are too many attributes, they can become unreadable. + +Use attributes that will assist you in grouping tests, debugging them, or constructing widgets. + + + +2. The attribute name should be informative. + +Avoid making the attribute name excessively long, even though the field allows up to 512 characters. The name should be understandable and clearly indicate what the attribute refers to. + +For instance, in the example below, the attribute `v5: beta5_24.1` could have been divided into two separate attributes: `version` and `environment`. + + + +3. Examples of categorizing tests using attributes. + +Below you can find some examples of how attributes can describe launch/test item characteristics: + +* feature: Quality Gates +* feature: login +* feature: notifications +* Epic: @F1_functionality +* Story: @F11_functionality +* Use case: @F11_use_case_111 +* browser: Chrome +* configuration: Chrome desktop +* team: Sirius +* squad: 1 +* run.id: 12345 +* run.type: scheduled +* entity.id: 56789 +* Region: Canada +* test.type: UI +* branch: develop +* build: 3.24.16.17.5 +* priority: critical + + + + + +## Use Cases + +### Using attributes for filtering + +Let's consider the following example. In the launch below, there are 31 Failed tests. + + + +It is difficult to identify the most problematic area, so we can use filtering by attribute, for example, by different controller types. + + + + + +As a result of the investigation, we found that the least number of failures occurred with tests using controller type `contr_test_item` (1), and the most failures occurred with tests using controller type `contr_launch` (12). + + + + + +Thus, we understand that we need to focus on tests with controller type `contr_launch`. + +### Using attributes for creating widgets + +Widgets allow you to visually track [qa and test automation metrics metrics](/dashboards-and-widgets/ReportingAndMetricsInReportPortal/#qa-and-test-automation-metrics-in-reportportal) for launches. We can define these metrics using filters that can be created based on attributes. For example, to determine the growth trend of summary statistics of launches with the same attribute key, let's construct a [Cumulative trend chart widget](/dashboards-and-widgets/CumulativeTrendChart). + +There are some launches with the `smoke` attribute. + + + +You can create a filter based on this attribute. + + + +Afterwards, create a **Cumulative trend chart widget** using this filter. + + + +On the screenshot below, we can observe a growth in statistics on the platforms from one build to the next. + + + +Based on attributes specified for test items, you can also build a [Component Health Check widget](/dashboards-and-widgets/ComponentHealthCheck/) to visually represent the passing rate of different application components. + +For example, if there are some launches with the `demo` attribute, you can create a filter using this attribute. + + + +Next, construct a Component Health Check widget using this filter. Specify the components, functionality, platforms, or other criteria you want to monitor by defining the relevant attributes across different levels. + + + +As a result: + +- On the first level, you can view the passing rate for each build. + + + +- On the second level, you can see which platform has the highest number of failed test cases, helping you identify areas that may need more attention. + + + +Therefore, properly using attributes in ReportPortal can greatly optimize test management and assist in providing clearer visualizations of trends through widgets. + +There are also [system attributes](/log-data-in-reportportal/HowToReportAttributesToReportPortal#system-attributes) that allow to extend the functionality of ReportPortal. diff --git a/versioned_docs/version-26.1/work-with-reports/LogLevel.mdx b/versioned_docs/version-26.1/work-with-reports/LogLevel.mdx new file mode 100644 index 0000000000..0bb8588ed9 --- /dev/null +++ b/versioned_docs/version-26.1/work-with-reports/LogLevel.mdx @@ -0,0 +1,339 @@ +--- +sidebar_position: 5 +sidebar_label: Log level +--- + +# Log level + +The log level is used to store all data related to a test case, including execution logs and screenshots, making debugging and analysis easier. + +## Logs messages + +To see a table with log messages, navigate to the lowest level. + +Log object has the following levels: + +| Level | Value | +| -------- |:-------------:| +| Trace | >= 5 000 | +| Debug |>= 10 000 | +| Info | >= 20 000 | +| Warn |>= 30 000 | +| Error | >= 40 000 | +| Fatal | >= 50 000 | + +You can set a necessary log level using a slider. + +The table with log messages is painted in different colors depending on the log type: + +> red - for failed log steps + +> green - for log steps with positive validation made + +> blue - for system messages + +Error logs are always highlighted in red. The others are highlighted on mouse +hover only. + +Logs with *Trace*, *Debug*, *Error* labels are collapsed if the log has more +than 5 lines. You can expand the log message clicking on the special "Expand" icon. + +You can use a filter to specify the level. + +Also, you can use the logs sorting by time, and filtering logs to find a certain message in logs. + + + +## Timestamps + +In ReportPortal version 24.2, microseconds have been added to timestamps to provide a more precise log sequence. +Previously, some logs shared identical timestamps at the millisecond level, which led to issues with log ordering. + +With this update, you have the flexibility to view timestamps in two formats: + +1. Date & time + + + +2. Time with microseconds + + + +You can easily switch between these options with a simple click. + +The choice will be saved to `localStorage` to persist between sessions in a particular browser. + +## Stack trace + +On the Log view for the fast redirection to the last 5 error log messages, please click on the tab Stack trace, in this section you can find *5 last error logs". + +## Attachments + +In case you are interested in logs with attachments only, check the corresponding checkbox. + +Click on the file in log opens the preview of the attachment. + +The attachments could be rotated on a preview screen if needed. + +ReportPortal provides the possibility of preview for such types of attachments as: + - 'xml', + - 'javascript', + - 'json', + - 'css', + - 'php' + +Other types of attachments will be opened in a new browser tab or downloaded. + +The alternative way to view these files is by using the Attachments. + +To view data via the Attachments section, perform the following steps: + +1. Open Log view of launch for test items with attachments available + +2. Click 'Attachments' tab + +3. Select the required file by clicking on its thumbnail. + +4. To expand the area, click the view on the main box. + + + +## Items details + +In the section Items details, you can find information about test case such as: + +* Test Case name +* Test case status +* Test case start time +* Duration and duration fluctuation +* Description +* Parameters +* Attributes +* Code location (that can be easily copied by a user) + +## History of actions + +In this section, you can find all activities which were performed under the test case such as: + +* user changed defect type of test item +* user posted a comment to the test item +* user posted a bug to the Bug Tracking System +* user-added link to the existing in Bug Tracking System bug. +* analyzer changed defect type of test item based on the item (where "item" is a link to a log view of an item which has been chosen by the analyzer as the most relevant result) +* analyzer posted a comment to the test item +* analyzer posted a bug to the Bug Tracking System or added a link to the existing in Bug Tracking System issue. +* pattern analysis add a found pattern + +History of actions is not shown if nobody performed actions with the item. +By default, you will see the last action in one line. + +## Markdown mode on Logs view + +You can view logs in Markdown mode or in the Console view. + +To enable Markdown mode, please perform actions: + +* Click on "M" button on the log level + +To disable Markdown mode, please perform actions: + +* Click on "M" button on log level one more time + +The same logic applies to the Console view. + +## Log view for containers (for a launch or a suite) + +A user can report logs not only to the test execution but also to containers: + +* Launch +* Suite + +If user want to view attached logs: + +* Login ReportPortal +* Click on a launch name, or a suite name +* Click on Log tab + + + + + +## Log level settings + +The Log level settings (Full-width mode, Colorized background, No logs collapsing, Log Size, pagination off/on) are stored individually for each user, browser, and project, and remain active until you change them manually or clear your browser cache. If the cache is cleared, the settings must be configured again. + +### Full-width mode + +You can configure how log will be displayed by enabling or disabling the "Full-width mode" option. + +To **enable Full-width mode**: + +1. Go to the Log view (launch, suite, test, or step level). +2. Click the Log Settings button. +3. In the **Log Appearance block**, check the "Full-width mode" checkbox in the dropdown. + + + +When Full-width mode is enabled, all log-related tabs – including Stack trace, All logs, Attachments, Item details, and History of actions – automatically expand to use the full available screen width, providing a broader and more comfortable viewing area for detailed information. + +To **disable Full-width mode**: + +1. Go to the Log view (launch, suite, test, or step level). +2. Click the Log Settings button. +3. In the **Log Appearance block**, uncheck the "Full-width mode" checkbox in the dropdown. + +When the option is disabled, all tabs return to their standard layout with default width constraints. + + + +### Colorized background + +You can customize how log entries are visually highlighted by enabling or disabling the "Colorized background" option. + +To **enable Colorized background**: + +1. Go to the Log view (launch, suite, test, or step level). +2. Click the Log Settings button. +3. In the **Log Appearance block**, check the "Colorized background" checkbox in the dropdown. + +When "Colorized background" is enabled, all logs receive background colors according to the configuration defined in [Project settings -> Log types](/configuration/ProjectSettings#log-types). Log entries will display the appropriate label color, background color, text color, and text style (bold or normal), making it easier to distinguish log types visually. + + + +To **disable Colorized background**: + +1. Go to the Log view (launch, suite, test, or step level). +2. Click the Log Settings button. +3. In the **Log Appearance block**, uncheck the "Colorized background" checkbox in the dropdown. + +When this option is disabled, logs are displayed without background color highlighting, using the default styling. + + + +### No logs collapsing + +You can control whether logs appear collapsed or fully expanded. + +To **enable "No logs collapsing" option**: + +1. Go to the Log view (launch, suite, test, or step level). +2. Click the Log Settings button. +3. In the **Log Appearance block**, check the "No logs collapsing" checkbox. + +When "No logs collapsing" is enabled, all logs on the current item level are displayed expanded by default, allowing you to view details without manually opening each log entry. + +**Nested step logs** remain collapsed initially and require individual clicks to expand. + + + +To **disable No logs collapsing option**: + +1. Go to the Log view (launch, suite, test, or step level). +2. Click the Log Settings button. +3. In the **Log Appearance block**, uncheck the No logs collapsing checkbox. + +When this option is disabled, logs follow the standard collapsed view, and you can expand them individually as needed. + +:::important +The "No logs collapsing" option is not available when viewing logs in Console mode. In this mode, the checkbox will not appear in the Log Appearance section. +::: + + + +### Log Size + +You can adjust how large log text appears by selecting a preferred Log Size. + +To **change the Log Size**: + +1. Go to the Log view (launch, suite, test, or step level). +2. Click the Log Settings button. +3. In the **Log Size block**, choose one of the available radio buttons: Small, Medium, or Large. + + + +The **default value is Medium**. + +When you change the log size, the dropdown remains open so you can immediately see your selection. + +The chosen log size is applied consistently across all display modes – default, markdown, and console – and affects logs **for all item types: launch, suite, and test**. The selected size also applies to the **Stack trace tab**. + + + +### Turn Off pagination + +You can choose whether logs are displayed with standard pagination or loaded continuously as you scroll. + +To **turn OFF pagination**: + +1. Go to the Log view (launch, suite, test, or step level). +2. Click the Log Settings button. +3. In the **Pagination block**, select "Turn Off Pagination" option. + + + +4. Confirm the action by clicking "Turn Off & Reload". + + + +After the page reloads, pagination controls are removed, and logs load dynamically as you scroll. + +If pagination is turned off while you are on a later page (for example, page 3), the view resets to the first page after reload, and you can scroll down to load more logs continuously. + +To **turn ON pagination**: + +1. Go to the Log view (launch, suite, test, or step level). +2. Click the Log Settings button. +3. In the **Pagination block**, select "Turn Off Pagination" option. +4. Confirm the action by clicking "Turn Off & Reload". + +After the page reloads, the standard pagination controls become visible again. You are returned to the first page. + +**Additional behavior** + +A "Back to the Top" button is available when navigating deeper into the log feed. Clicking it brings you back to the first page (when pagination is ON) or to the top of the continuous log list (when pagination is OFF). + +When pagination is OFF, logs load in batches (50 items at a time) as you scroll down. + +The pagination setting affects all display modes – default, markdown, and console – and applies consistently across the item log view. + + + + + +### Error log navigation + +On the log view you can find the number of error logs found in current item. In case no error logs, the "Show" button will be disabled with "No error logs" message. In case only one error log is found, the "Show" button will be available and by clicking on it you will be navigated to the correspondent page, and the error log will be highlighted. In case there is more than one error log, you will be able to switch between "Previous" and "Next" error logs. + +You can move between error logs even when pagination is turned off. This helps you quickly jump to the next important error without scrolling through all logs manually. + +**Moving to the next error log** + +* If pagination is OFF and the next error log is not in the currently loaded part of the list, clicking the "Next error" button loads the required part of the logs and brings you directly to that error. +* The error log is highlighted, and you can continue scrolling up or down to load more logs if needed. + +**Using search with error navigation** + +* If you use the search bar while pagination is OFF, only logs that match your search are shown. +* You can still use the "Next error" button to move through the filtered error logs. +* The error counter updates to show how many error logs match your search. + + + + + +### Search and jump to log + +You can quickly find a specific log and jump directly to it, even if it’s located on another page. + +1. When you are on the log level and multiple pages of logs exist, you can enter a value into the Search field to filter logs. +2. The system shows all logs that match your search. +3. When you click the "Jump to" button for one of the found logs, you are taken straight to the page where that log is located. + + + +4. The log is highlighted so you can easily spot it. + + + + diff --git a/versioned_docs/version-26.1/work-with-reports/OperationsUnderLaunches.mdx b/versioned_docs/version-26.1/work-with-reports/OperationsUnderLaunches.mdx new file mode 100644 index 0000000000..7936d98a27 --- /dev/null +++ b/versioned_docs/version-26.1/work-with-reports/OperationsUnderLaunches.mdx @@ -0,0 +1,363 @@ +--- +sidebar_position: 2 +sidebar_label: Operations under launches +description: Manage launch operations including editing attributes, merging launches, and bulk actions to streamline test execution reporting workflows. +--- + +# Operations under launches + +There are several ways of how launches could be modified and managed in our test automation reporting dashboard. + +## Edit launch attributes and description + +The system allows editing attributes and descriptions for the launch on the "Launches" and "Debug" modes. + +Permission: next users can modify launches: + +- Administrator +- User with PROJECT MANAGER Project Role +- User with one of Project Role MEMBER, CUSTOMER on the project - Launch Owner + +To edit a launch, perform the following steps: + +1. Navigate to the "Launches" page. +2. Select "Edit" option ('pencil' icon) to the selected launch. +3. The launch editor will be opened with the following options. +4. Make the required changes and click the "Save" button. + + + +## Edit test item attributes and description + +The system allows to edit attributes and description for the test items on the "Launches" and "Debug" pages. + +Permission: next users can modify test items: + +- Administrator +- User with PROJECT MANAGER Project Role +- User with one of Project Role MEMBER, CUSTOMER on the project - Launch Owner + +To edit description of tests in ReportPortal or edit attributes, perform the following steps: + +1. Navigate to the "Launches" page. +2. Drill down to the test level of any launch. +3. Select the "Edit" option ('pencil' icon) to the selected test item. +4. Make the required changes and click the "Save" button. + + + +## Merge launches + +Merge launches feature can help you to merge the existing launches into one. If your project has a really huge number of regression suites and they cannot be in one particular launch, so, they divided into parts. As soon as they completed, they could be merged in one separate launch to represent this data on dashboards and create reports. + +ReportPortal provides two options for merge: Linear and Deep. The difference in merge options is described below. + +Basically, the merge models distinguished by how the launches elements are collected in a resulting launch as shown on a picture: + + + +**Linear merge** + +In case the user selects the "Linear merge" option, the new launch is created. The new launch contains elements of merging launches. Levels of elements stay the same as in origin launches. Status and issues statistics are calculated as the sum of statistics of all merged launches. The origin launches are deleted from the system. + +**Deep merge** + +In case the user selects the "Deep merge" option, the system creates a new launch and check items with the following conditions simultaneously: + +* test items with the same names +* test items have the same type (SUITE or TEST) +* test items are on the same path (number of parents) +* test items with descendants. + +If such elements are found only the earliest one is added to the new launch. All descendants are collected on their levels as in the original launches. The merge is started from the upper levels to the lower levels. In case the upper level is not merged, the lower levels will not be merged as well. Items without descendants are not merged despite their level. Status and issues statistics are calculated for a new launch. The original launches are deleted from the system. + +The Linear and Deep Merge algorithm, as described above, is shown on a scheme: + + + +For instance, we have Launch-1 and Launch-2 to be merged. If system founds that Suite_A in Launch-1 and Suite_A in Launch-2 have the same names and the same types and the same path and have descendants, so only the earliest Suite_A (according to start time) is added to the new launch. All descendants of merged suites are combined under the Suite_A. Then the system searches for the same matches on the next level (Test level). + +If items do not meet the conditions described for the "Deep Merge" option then they are collected the same way as described for the "Linear merge" option. + +Permission: Next users can merge launches: + +- Administrator +- User with PROJECT MANAGER Project Role +- User with one of Project Role MEMBER, CUSTOMER on the project - Launch Owner + +To merge launches, perform the following steps: + +1. Navigate to the "Launches" page. +2. Select required launches by clicking on their checkboxes. +3. Open 'Actions' list +4. Click the "Merge" button. +5. Merge launches popup will be opened. +6. Select the merge type 'Linear Merge' or 'Deep Merge' +7. Parameters fields become active. Merge popup contains: + +```javascript + Launch name: (editable) + Owner: The field is filled in with the current user. + Description: collect data from all launches + Attributes: collect unique attributes from all launches + Time Start/End: filled in and disabled. +Checkbox 'Extend child suites description with original launches names': Unchecked by default +``` + +8. Make changes and click the "Merge" button on the "Merge Launches" window. After the merge, a new run will be shown on the common launches list. + +:::note +The following launches cannot be merged: +- Launches in progress +- Launches with active "Analysis" process +- Launches with active "Match issues in launch" process +::: + +:::important +No fixed limit, but merging ~20 launches at a time is recommended for stable performance. +::: + + + +## Compare launches + +Compare launches feature in our test execution dashboard can help you to compare launches side by side to define differences between them. + +Permissions: All users on the project + +To compare launches, perform the following steps: + +1. Navigate to the "Launches" page. +2. Select required launches by clicking on their checkboxes. +3. Expand the 'Actions' list +4. Select the "Compare" option. +5. The system shows a window where a widget with bars is displayed, reflecting the Passed/Failed/Skipped and Product Bug/Automation Bug/System Issue/To Investigate test items. + +:::note +Launches can be compared on the 'Launches' page and not on the 'Debug' page. +::: + + +## Move launches to Debug + +The "Debug" section is used to hide incorrect launches from the CUSTOMER view. + +Permission: Next users can move launches to "Debug"/"Launches" mode: + +- Administrator +- User with PROJECT MANAGER Project Role +- User with MEMBER Project Role - Launch Owner + +To move a launch to the "Debug" section, perform the following steps: + +1. Navigate to the "Launches" page +2. Select the "Move to Debug" option from the context menu on the left hand of the launch name. +3. The warning popup will be opened +4. Click the 'Move' button +5. The launch gets to "Debug" page and removed from "Launches" page + +To return the launch to the "Launches" section, navigate to the "Debug" section and select the "Move to All Launches" from the context menu. + +To move some launches to the "Debug" section simultaneously, perform the following steps: + +1. Navigate to the "Launches" page +2. Select required launches by click on their checkboxes +3. Open 'Actions' list +4. Select "Move to Debug" from the list +5. The warning popup will be opened. +6. Confirm the action +7. The launches get to the "Debug" page and removed from the "Launches" page. + +To return the launches to the "Launches" section, navigate to the "Debug" section, select them and select "Move to All Launches" from the 'Actions' list. + + + +## Force finish launches + +The system allows finishing launches on the "Launches" and the "Debug" pages manually. + +Permission: Next users can stop launches: + +- Administrator +- User with PROJECT MANAGER Project Role +- User with one of Project Role MEMBER, CUSTOMER on the project - Launch Owner + +To finish a launch that is in progress now, perform the following steps: + +1. Navigate to the "Launches" page. +2. Select the "Force Finish" option in the context menu on the launch name's left hand. +3. The warning popup will be opened. +4. Click the "Finish" button. +5. The launch will be stopped and shown in the launches table with the "stopped" tag and the "stopped" description. All the statistics collected by this time will be displayed. + + + +To finish some launches simultaneously those are in progress now, perform the following steps: + +1. Navigate to the "Launches" page. +2. Select required launches that are in progress by click on their checkboxes +3. Open 'Actions' list +4. Select "Force Finish" from the list +5. The warning popup will be opened. +6. Confirm the action +7. All selected launches will be stopped and shown in the launches table with the "stopped" tag and the "stopped" description. All the statistics collected by this time will be displayed. + +## Export launches reports + +The system allows exporting launches reports on the 'Launches' and the 'Debug' modes. + +You can export the launch report in the following formats: PDF, XLS, HTML. This feature supports test results download as Excel (XLS), PDF, HTML, providing flexibility for further analysis or sharing. + +Launch structure being exported: + +* launch +* suit +* test +* step + +:::note +Nested steps and logs are not exported. +::: + +To export a launch, perform the following steps: + +1. Go to the 'Launches' page. +2. Open the burger menu for the launch. +3. Click on the 'Export report' option in the menu. + + + +4. Select export file format in the dropdown (PDF, XLS, HTML). +5. Check the 'Include Attachments' checkbox if needed. +6. Click 'Export' button. + + + +:::important +Do not refresh the page while export report is being generated. +::: + +System alerts appear at the bottom of the page and include: + +* Notification about the start of a launch report export + + + +* Notification about the completion of a launch report export + + + +The notification about report generation appears at the top of the page. It also displays the number of reports that are currently in progress. + + + +:::important +The export operation works for a separate launch only. You cannot export multiple launches at once. +::: + +:::note +The XLS and HTML reports are exported in a one-page format, while the PDF report is generated with page breaks. +::: + +**Export with attachments** + +When exporting with the 'Include Attachments' checkbox selected, the generated report is a ZIP archive. + +:::note +If you export launches with attachments and their total size is large, the export process will take longer.
+PDF is the fastest export format, regardless of whether attachments are included. HTML is slightly slower, while XLS is the slowest. +::: + +If the launch doesn't have attachments, then the ZIP file will contain only the launch report in the selected format. + +In case the launch has attachments, the ZIP archive will contain the launch report, parent folders, and subfolders for the test items with attachments. + +The hierarchical folder structure: + +* Launch level +* Suite level +* Test level +* Step level + + + + + + + +In the launch report, you can find the attachment names at the corresponding test item level. + + + + + +## Delete launches + +The system allows deleting launches on the "Launches" and "Debug" pages. + +Permission: next users can delete launches: + +- Administrator +- User with PROJECT MANAGER Project Role +- User with one of Project Role MEMBER, CUSTOMER on the project - Launch Owner + +There are two ways how the launch/es can be deleted. + +To delete a launch, perform the following steps: + +1. Navigate to the "Launches" page. +2. Select the "Delete" option in the context menu on the launch name's left. +3. The warning popup will be opened. +4. Click the "Delete" button. +5. The launch will be deleted from ReportPortal. All related content will be deleted: test items, logs, screenshots. + + + +To delete more than one launch simultaneously, perform the following steps: + +1. Navigate to the "Launches" page +2. Select required launches by click on their checkboxes +3. Open 'Actions' list +4. Click 'Delete' option +5. The warning popup will be opened. +6. Confirm the action +7. The launches will be deleted from ReportPortal. All related content will be deleted: test items, logs, screenshots. + +:::note +It is impossible to delete launches IN PROGRESS - "Delete" launch option will be disabled. +::: + +## Delete test item + +The system allows deleting test items in all levels of launch in the "Launches" and "Debug" pages. + +Permission: Next users can delete the test item: + +- Administrator +- User with PROJECT MANAGER Project Role +- User with one of Project Role MEMBER, CUSTOMER on the project - Launch Owner + +To delete a test item, perform the following steps: + +1. Navigate to the "Launches" page +2. Drill down to the test level of any item +3. Select the "Delete" option in the context menu next to the selected test item. +4. The warning popup will be opened. +5. Click the "Delete" button. +6. The test item will be deleted from ReportPortal with all related content (logs, screenshots). + + + +To delete some test items simultaneously, perform the following steps: + +1. Navigate to the "Launches" page +2. Drill down to the test level of any item +3. Select required test items by click on their checkboxes +4. If you are on SUITE or TEST view, click 'Delete' button from the header. If you are on STEP view, open 'Actions' list and select "Delete" option +5. The warning popup will be opened. +6. Confirm the action +7. Test items will be deleted from ReportPortal with all related content (logs, screenshots). + +:::note +It is impossible to delete test items in launches IN PROGRESS - "Delete" test item option is disabled for test items in launches IN PROGRESS. +::: diff --git a/versioned_docs/version-26.1/work-with-reports/TestCaseId.md b/versioned_docs/version-26.1/work-with-reports/TestCaseId.md new file mode 100644 index 0000000000..439654a436 --- /dev/null +++ b/versioned_docs/version-26.1/work-with-reports/TestCaseId.md @@ -0,0 +1,48 @@ +--- +sidebar_position: 8 +sidebar_label: Test case ID +description: Link test cases with external test management systems using unique test case IDs. Track and manage test execution reporting across platforms. +--- + +# Test case ID + +## What is it: Test case ID + +If you are using any of the Test Management System (such as TestRail, Jira, ALM, and any others), you have a unique identification of test cases in it. + +Starts from version 5.1 you can report test cases with TestCase ID from your TMS. That gives you an ability to link a source of the test case in TMS and its executions in ReportPortal. + +The benefit of this feature is that you will be able to see **the real history of your test cases**. + +>**Definition:** Test Case ID: +It is a unique identifier from your source test management system which help ReportPortal.io to identify the uniqueness of a test case + +## Where Test Case ID is using? + +Test case id is using for: +- The history line +- The history table + +You can find a test case ID in the 'Edit' modal. + +## How you can report items with Test case ID? + +You can [report test case id via agents](https://github.com/reportportal/client-java/wiki/Test-case-ID). + +If the test execution has test parameters, a test case ID will be generated on the base of: + +> Test case id in ReportPortal = reported 'TestCaseID + all test parameters + +## What does happen if you do not report items with Test case ID? + +In case a user doesn't report tests with Test Case ID, the system generates it automatically: + +* Auto-generation based on 'Code reference' and 'Parameters' +If users do not report test case ID, it is generated automatically on the base of: + +> Test case id in ReportPortal = 'Code reference' + all test parameters + +* Automatically based on Test Execution name, All parents name, Parameters +If users do not report Test Case ID and Code reference, then test case ID is generated on the base of: + +> Test case id in ReportPortal = Test Case Name + All parents Name (except Launch name) + All parameters diff --git a/versioned_docs/version-26.1/work-with-reports/ViewLaunches.mdx b/versioned_docs/version-26.1/work-with-reports/ViewLaunches.mdx new file mode 100644 index 0000000000..3e54e9ec06 --- /dev/null +++ b/versioned_docs/version-26.1/work-with-reports/ViewLaunches.mdx @@ -0,0 +1,191 @@ +--- +sidebar_position: 1 +sidebar_label: View launches +description: View and manage test launches with detailed execution data, filtering options, and real-time test reporting capabilities for comprehensive analysis. +--- + +# View launches + +## Viewing information about all launches + +A launch is an object in our test automation reporting platform, which contains your data for certain execution. Inside the launches, we have test items, structured in the same way as you have it in your automation. + +Launches are present in two modes – the Default mode on the "Launches" tab +and the Debug mode on the "Debug" tab. + +### "Debug" tab + +Although both modes share almost the same set of features, the "Debug" mode is +considered to be a more private one: it is not visible to the user with the +CUSTOMER role and all the filters created there cannot be saved to +"Filters". Filters are the base for building a widget, so widget charts are +not available for the launches from the "Debug" mode. + +### "Launches" tab + +A typical Launch structure comprises the following elements: **Suite** \> **Test** +\> **Step** \> **Log**. + +:::note +The maximum page size is 300 items per page for all collection endpoints, including Launches / Suites / Tests / Steps / Logs. +::: + +A suite may hierarchically lie under another suite. + +The data in the "Launches" section is present in a table. By default, the +user sees all runs. + +The "Launches" grid contains the following columns: + +| Field | Description | +| -------- |-------------| +| Runs (at all launches level) |A **Launch name** or a **Suite name** or a **Class name** (depends on a drill-down level)| +| Start time |A launch start time in the "time ago" format (e.g. "10 minutes ago"); on mouse hover the system displays the accurate start time| +| Duration |The launch duration. For launches in progress remaining time is shown| +| Total |The total number of issues. It is a sum of all items with the **Passed**, **Failed**, **Skipped** and **Interrupted** statuses| +| Passed |The total number of issues that were completed with the **Passed** status.| +| Failed |The total number of issues that were completed with the **Failed** status.| +| Skipped |The total number of issues that were completed with the **Skipped** status. Any ReportPortal user can investigate failed and skipped issues with one of the following values: **Product Bug**, **Automation Bug**, **System Issue**| +| Product Bug |This type of issue is selected manually if it's a **product issue**| +| Auto Bug |This type of issue is selected manually if it's an **automation test issue**| +| System Issue |This type of issue is selected manually if it's a **system bug**| +| To investigate |The total number of **Failed** and **Skipped** issues left to investigate| + +## Viewing all launches / latest launches +You have two options to browse all project launches. By default, the system displays all launches of the project in one list in order of start time. + +To filter launches, suites, tests by latest run, use the **‘Latest Launches’** option from the dropdown list (All Launches/Latest Launches) at the top of the page. + + + +In other words, when that option is turned on, you will see only launches with unique names with the last increment (#number). + +*For example, there are launches with names ‘Demo#1’, ‘Demo#2’, ‘Demo#3’ on a launches view. If you choose ‘Latest Launches’ option, the system will display ‘Demo#3’ launch only.* + +In a Latest Launches view you may perform any regular actions: add a filter, perform actions from Actions menu, edit attributes, and edit the description. + +## Viewing launch statistics + +The data in the "Launches" table is present as links in the following +columns: + +| Field | Description | +| -------- |-------------| +| Launch name |This link gives an opportunity to drill down to a specific launch| +| *Total* |This link takes you to the Test Cases view and shows all test cases within the launch in one table| +| *Passed* |This link takes you to the Test Cases view and shows all **passed** test cases within the launch in one table| +| *Failed* |This link takes you to the Test Cases view and shows all **failed** test cases within the launch in one table| +| *Skipped* |This link takes you to the Test Cases view and shows all **skipped** test cases within the launch in one table| +| *Product Bug* |This link takes you to the Test Cases view and shows all **failed** test cases marked as **"Product Bugs"** in the launch in one table| +| *Automation Bug* |this link takes you to the Test Cases view and shows all **failed** test cases marked as **"Automation Bugs"** in the launch in one table| +| *System Issue* |This link takes you to the Test Cases view and shows all **failed** test cases marked as **"System Issues"** in the launch in one table| +| *To Investigate* |This link takes you to the Test Cases view and shows all **failed** test cases with **no selected defect type** (marked as **"To Investigate"**) in the launch in one table| + +To drill down your structure, click the name of an item or numbers in the +columns (**Total**, **Passed**, **Failed**, etc.), which will open the items, filtered +by the column criteria. + +**"To investigate"** number - represents the number of items, which should be review +in this particular run. This value incorporates all the failed test cases and failed +preparation methods. + +> **Why the sum of the values is not equal?** + +> Total, Passed, Failed and Skipped columns counted in **TEST CASES**. + +> Product Bug (PB), Automation Bug (AB), System Issue (SI), To +> investigate (TI) columns counted in **TEST ITEMS**. + +> The hierarchy is as follows: Test Item \> Test Case. Test items can be marked +> with @Test Case annotation. + +> Test item includes: all preparation methods (all *Before* and *After* +> methods), system methods, test cases. + +> Test case is just a single test case. + +> The values in the **Total** column: Total = Passed + Failed + +> Skipped. + +> PB + AB + SI + TI = Failed\_Test\_Cases + Skipped\_Test\_Cases + +> other\_FAILED\_methods + +## Navigate to items + +You can navigate to certain items using clickable values and charts with the number of tests items with all statuses available within the system: +Total/Passed/Failed/Skipped/Production Bug/Automation Bug/System Issue/To Investigate (list view). + +Navigation is provided for both the "Launches" and the "Debug" modes. + +The system shows all relevant test cases within the launch in one table, +filtered by the column criteria. + +The system allows keeping track of your location in the hierarchical launch structure, and navigating back to parent items you went through to get to the current one (breadcrumb link). + +Breadcrumbs representation in the system may be different depending on away the child +item was reached. In case the child item was reached going through all upper +levels sequentially, all the hierarchical elements are reflected in the +breadcrumbs. + +In case a clickable number was used for navigation, then only the highest level +(Launch) and the lowest level (Step) are represented in the breadcrumbs. +But log view of any of the last items will have full path in breadcrumbs in brackets. + +One more useful feature is collapsing not failed precondition methods. +It could be set up on the STEP view of any launch. +The switcher is located on the left hand of the Name column header. + +Please note that that hidden item will not be visible on the LOG view for 'Next'/'Previous' listing. + + + +## Change Status on Step and Log level + +ReportPortal allows to manually change the execution status of Logs and Steps. +This functionality can be used to correct execution results or reflect the actual test behavior. + +You can change the status of a Step or Log to one of the following values: +- Passed +- Failed +- Skipped + +**Step level** + + + +**Log level** + + + +Changing the status on Log or Step level affects launch statistics and aggregated counters +(Passed, Failed, Skipped) displayed in the Launches and Debug views. + +:::note +Changing the execution status does not assign, modify, or remove a defect type.
+Defect classification (Product Bug, Automation Bug, System Issue, No Defect, To Investigate) is a separate operation and should be performed independently during failure analysis. +::: + +## Nested Steps + + + +## Retried test case (retry) + +[How can I report retry items](/developers-guides/RetriesReporting) +In case you implemented a retry logic for your tests in a test framework, ReportPortal will reflect it by adding a special retry structure. If there were a few invocations of the one test case, all these invocations will be shown as the one test case in ReportPortal. + +On a long view, you can see all logs and all information about all invocations. But in statistics and auto-analysis the ReportPortal will take into account only the last invocation. So that launch statistics will be more accurate. + +The defect type can be set for the last invocation only. + +On a Launch view, you can see a label, which means that the launch includes retries. + + + +On a step view, you can see the number of invocations and stack trace of each invocation. + + + +On a log view, you can see the number of invocations and logs, attachments of each invocation. + + diff --git a/versioned_docs/version-26.1/work-with-reports/_category_.json b/versioned_docs/version-26.1/work-with-reports/_category_.json new file mode 100644 index 0000000000..41f4ff5a25 --- /dev/null +++ b/versioned_docs/version-26.1/work-with-reports/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Work with reports", + "position": "11", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.1/work-with-reports/img/defect-types/CustomDefectTypes1.png b/versioned_docs/version-26.1/work-with-reports/img/defect-types/CustomDefectTypes1.png new file mode 100644 index 0000000000..7a8c975e08 Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/defect-types/CustomDefectTypes1.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/defect-types/CustomDefectTypes2.png b/versioned_docs/version-26.1/work-with-reports/img/defect-types/CustomDefectTypes2.png new file mode 100644 index 0000000000..cfa97da907 Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/defect-types/CustomDefectTypes2.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/defect-types/CustomDefectTypes3.png b/versioned_docs/version-26.1/work-with-reports/img/defect-types/CustomDefectTypes3.png new file mode 100644 index 0000000000..664d6826ad Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/defect-types/CustomDefectTypes3.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/filtering-launches/FilteringLaunches1.png b/versioned_docs/version-26.1/work-with-reports/img/filtering-launches/FilteringLaunches1.png new file mode 100644 index 0000000000..5a8d097fda Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/filtering-launches/FilteringLaunches1.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/filtering-launches/FilteringLaunches2.png b/versioned_docs/version-26.1/work-with-reports/img/filtering-launches/FilteringLaunches2.png new file mode 100644 index 0000000000..ba4a14fbd2 Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/filtering-launches/FilteringLaunches2.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/history-of-launches/CellPreviewOptions1.png b/versioned_docs/version-26.1/work-with-reports/img/history-of-launches/CellPreviewOptions1.png new file mode 100644 index 0000000000..82fb6d5c39 Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/history-of-launches/CellPreviewOptions1.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/history-of-launches/CellPreviewOptions2.png b/versioned_docs/version-26.1/work-with-reports/img/history-of-launches/CellPreviewOptions2.png new file mode 100644 index 0000000000..946179f300 Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/history-of-launches/CellPreviewOptions2.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes1.png b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes1.png new file mode 100644 index 0000000000..3f5fa093fc Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes1.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes10.png b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes10.png new file mode 100644 index 0000000000..65b0107172 Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes10.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes11.png b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes11.png new file mode 100644 index 0000000000..8600ce1e5c Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes11.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes12.png b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes12.png new file mode 100644 index 0000000000..21d71b9a38 Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes12.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes13.png b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes13.png new file mode 100644 index 0000000000..6e0da4b21b Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes13.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes14.png b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes14.png new file mode 100644 index 0000000000..2dbb24b64a Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes14.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes15.png b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes15.png new file mode 100644 index 0000000000..9a6c51c352 Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes15.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes16.png b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes16.png new file mode 100644 index 0000000000..75fecae662 Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes16.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes17.png b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes17.png new file mode 100644 index 0000000000..fc1198a33c Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes17.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes18.png b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes18.png new file mode 100644 index 0000000000..a8fc15346b Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes18.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes19.png b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes19.png new file mode 100644 index 0000000000..b2fc695507 Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes19.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes2.png b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes2.png new file mode 100644 index 0000000000..4baed4f3d7 Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes2.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes20.png b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes20.png new file mode 100644 index 0000000000..ca0f24ee39 Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes20.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes21.png b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes21.png new file mode 100644 index 0000000000..589d344b6a Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes21.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes22.png b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes22.png new file mode 100644 index 0000000000..14e7c5c38e Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes22.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes3.png b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes3.png new file mode 100644 index 0000000000..4ac0960a2d Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes3.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes4.png b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes4.png new file mode 100644 index 0000000000..3c573c7e69 Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes4.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes5.png b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes5.png new file mode 100644 index 0000000000..6e64cc7099 Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes5.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes6.png b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes6.png new file mode 100644 index 0000000000..9cdddae6f7 Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes6.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes7.png b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes7.png new file mode 100644 index 0000000000..ac3d4a32f1 Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/Attributes7.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/ComponentHealthCheck1.png b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/ComponentHealthCheck1.png new file mode 100644 index 0000000000..8252c1c028 Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/ComponentHealthCheck1.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/ComponentHealthCheck2.png b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/ComponentHealthCheck2.png new file mode 100644 index 0000000000..553731874a Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/ComponentHealthCheck2.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/ComponentHealthCheck3.png b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/ComponentHealthCheck3.png new file mode 100644 index 0000000000..955421c92b Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/ComponentHealthCheck3.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/ComponentHealthCheck4.png b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/ComponentHealthCheck4.png new file mode 100644 index 0000000000..3d8e49b3f0 Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/launches-test-items-attributes/ComponentHealthCheck4.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/log-level/BackToTheTop.png b/versioned_docs/version-26.1/work-with-reports/img/log-level/BackToTheTop.png new file mode 100644 index 0000000000..37d014a194 Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/log-level/BackToTheTop.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/log-level/ColorizedBackground.png b/versioned_docs/version-26.1/work-with-reports/img/log-level/ColorizedBackground.png new file mode 100644 index 0000000000..22d1d5af5f Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/log-level/ColorizedBackground.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/log-level/FullWidthMode.png b/versioned_docs/version-26.1/work-with-reports/img/log-level/FullWidthMode.png new file mode 100644 index 0000000000..92e6869a6c Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/log-level/FullWidthMode.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/log-level/JumpToLog1.png b/versioned_docs/version-26.1/work-with-reports/img/log-level/JumpToLog1.png new file mode 100644 index 0000000000..79c27f1abb Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/log-level/JumpToLog1.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/log-level/JumpToLog2.png b/versioned_docs/version-26.1/work-with-reports/img/log-level/JumpToLog2.png new file mode 100644 index 0000000000..0664a9f9da Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/log-level/JumpToLog2.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/log-level/LogSize.png b/versioned_docs/version-26.1/work-with-reports/img/log-level/LogSize.png new file mode 100644 index 0000000000..304355af53 Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/log-level/LogSize.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/log-level/LogViewForContainers1.png b/versioned_docs/version-26.1/work-with-reports/img/log-level/LogViewForContainers1.png new file mode 100644 index 0000000000..599f43a8a2 Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/log-level/LogViewForContainers1.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/log-level/LogViewForContainers2.png b/versioned_docs/version-26.1/work-with-reports/img/log-level/LogViewForContainers2.png new file mode 100644 index 0000000000..8e301d0a2d Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/log-level/LogViewForContainers2.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/log-level/Microseconds.png b/versioned_docs/version-26.1/work-with-reports/img/log-level/Microseconds.png new file mode 100644 index 0000000000..9085327b2e Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/log-level/Microseconds.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/log-level/Milliseconds.png b/versioned_docs/version-26.1/work-with-reports/img/log-level/Milliseconds.png new file mode 100644 index 0000000000..33e25bf818 Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/log-level/Milliseconds.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/log-level/MovingToTheNextErrorLog.png b/versioned_docs/version-26.1/work-with-reports/img/log-level/MovingToTheNextErrorLog.png new file mode 100644 index 0000000000..badd41eaa2 Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/log-level/MovingToTheNextErrorLog.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/log-level/NoLogsCollapsing.png b/versioned_docs/version-26.1/work-with-reports/img/log-level/NoLogsCollapsing.png new file mode 100644 index 0000000000..7c2afbc25a Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/log-level/NoLogsCollapsing.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/log-level/TurnOffPagination1.png b/versioned_docs/version-26.1/work-with-reports/img/log-level/TurnOffPagination1.png new file mode 100644 index 0000000000..c30d8ad37e Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/log-level/TurnOffPagination1.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/log-level/TurnOffPagination2.png b/versioned_docs/version-26.1/work-with-reports/img/log-level/TurnOffPagination2.png new file mode 100644 index 0000000000..fc054c4987 Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/log-level/TurnOffPagination2.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/manage-launches/MergeBasicModel.png b/versioned_docs/version-26.1/work-with-reports/img/manage-launches/MergeBasicModel.png new file mode 100644 index 0000000000..f4b0d120ca Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/manage-launches/MergeBasicModel.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/manage-launches/MergeScheme.png b/versioned_docs/version-26.1/work-with-reports/img/manage-launches/MergeScheme.png new file mode 100644 index 0000000000..4a9bd9ac4d Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/manage-launches/MergeScheme.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/operations-under-launches/ExportLaunches1.png b/versioned_docs/version-26.1/work-with-reports/img/operations-under-launches/ExportLaunches1.png new file mode 100644 index 0000000000..99869ab2ae Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/operations-under-launches/ExportLaunches1.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/operations-under-launches/ExportLaunches2.png b/versioned_docs/version-26.1/work-with-reports/img/operations-under-launches/ExportLaunches2.png new file mode 100644 index 0000000000..3a30c4d91c Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/operations-under-launches/ExportLaunches2.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/operations-under-launches/ExportLaunches3.png b/versioned_docs/version-26.1/work-with-reports/img/operations-under-launches/ExportLaunches3.png new file mode 100644 index 0000000000..df27c80af3 Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/operations-under-launches/ExportLaunches3.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/operations-under-launches/ExportLaunches4.png b/versioned_docs/version-26.1/work-with-reports/img/operations-under-launches/ExportLaunches4.png new file mode 100644 index 0000000000..98c5229a12 Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/operations-under-launches/ExportLaunches4.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/operations-under-launches/ExportLaunches5.png b/versioned_docs/version-26.1/work-with-reports/img/operations-under-launches/ExportLaunches5.png new file mode 100644 index 0000000000..4b83aecd34 Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/operations-under-launches/ExportLaunches5.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/operations-under-launches/ExportLaunches6.png b/versioned_docs/version-26.1/work-with-reports/img/operations-under-launches/ExportLaunches6.png new file mode 100644 index 0000000000..0bd8e3938d Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/operations-under-launches/ExportLaunches6.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/operations-under-launches/ExportLaunches7.png b/versioned_docs/version-26.1/work-with-reports/img/operations-under-launches/ExportLaunches7.png new file mode 100644 index 0000000000..42b4a21237 Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/operations-under-launches/ExportLaunches7.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/operations-under-launches/ExportLaunches8.png b/versioned_docs/version-26.1/work-with-reports/img/operations-under-launches/ExportLaunches8.png new file mode 100644 index 0000000000..5ace047c6a Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/operations-under-launches/ExportLaunches8.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/operations-under-launches/ExportLaunches9.png b/versioned_docs/version-26.1/work-with-reports/img/operations-under-launches/ExportLaunches9.png new file mode 100644 index 0000000000..dcf1499e53 Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/operations-under-launches/ExportLaunches9.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/view-launches/FilterLatestRun.png b/versioned_docs/version-26.1/work-with-reports/img/view-launches/FilterLatestRun.png new file mode 100644 index 0000000000..66a614ec31 Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/view-launches/FilterLatestRun.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/view-launches/LogLevel.png b/versioned_docs/version-26.1/work-with-reports/img/view-launches/LogLevel.png new file mode 100644 index 0000000000..5f3e283994 Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/view-launches/LogLevel.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/view-launches/RetriedTestCase1.png b/versioned_docs/version-26.1/work-with-reports/img/view-launches/RetriedTestCase1.png new file mode 100644 index 0000000000..9def26faaa Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/view-launches/RetriedTestCase1.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/view-launches/RetriedTestCase2.png b/versioned_docs/version-26.1/work-with-reports/img/view-launches/RetriedTestCase2.png new file mode 100644 index 0000000000..c70f07a26b Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/view-launches/RetriedTestCase2.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/view-launches/RetriedTestCase3.png b/versioned_docs/version-26.1/work-with-reports/img/view-launches/RetriedTestCase3.png new file mode 100644 index 0000000000..92b1f35038 Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/view-launches/RetriedTestCase3.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/view-launches/SearchWithErrorNavigation.png b/versioned_docs/version-26.1/work-with-reports/img/view-launches/SearchWithErrorNavigation.png new file mode 100644 index 0000000000..fdb8fca3ce Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/view-launches/SearchWithErrorNavigation.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/img/view-launches/StepLevel.png b/versioned_docs/version-26.1/work-with-reports/img/view-launches/StepLevel.png new file mode 100644 index 0000000000..fb53ff33ab Binary files /dev/null and b/versioned_docs/version-26.1/work-with-reports/img/view-launches/StepLevel.png differ diff --git a/versioned_docs/version-26.1/work-with-reports/index.md b/versioned_docs/version-26.1/work-with-reports/index.md new file mode 100644 index 0000000000..429b2fc866 --- /dev/null +++ b/versioned_docs/version-26.1/work-with-reports/index.md @@ -0,0 +1,18 @@ +--- +title: Work with reports +description: Maximize your test automation results dashboard. Learn operations under launches, failure investigation and more. +--- + +# Work with reports + +The **Work with reports** section is dedicated to helping users efficiently view, manage, and analyze their test reports within ReportPortal. This section provides step-by-step guidance on managing launches, investigating test failures, and tracking the complete history of test executions. By mastering these tools, users can streamline their test reporting processes and gain deeper insights into their test automation performance. + +In this section, you will learn how to **effectively use launch attributes and test item attributes** to categorize and filter your test results, making it easier to focus on specific test executions or issues. These attributes allow for more detailed test management, helping you identify patterns and trends within your test results, which can lead to faster problem resolution and overall improvements in testing efficiency. + +Additionally, **system attributes** help to enhance your test management and test reporting in ReportPortal. These attributes can be applied to selected test items and trigger ReportPortal to take certain actions automatically. This enables a more automated and dynamic response to test results, improving how you interact with and manage your reports, and helping you ensure your processes are as efficient as possible. + +With the guidance provided in this section, you’ll be able to organize your test results more effectively, track recurring issues, and improve collaboration between team members. This will ultimately lead to more efficient test management and better overall quality in your software development processes. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.2-organizations/FAQ/img/ApiService.png b/versioned_docs/version-26.2-organizations/FAQ/img/ApiService.png new file mode 100644 index 0000000000..71fd10a4cf Binary files /dev/null and b/versioned_docs/version-26.2-organizations/FAQ/img/ApiService.png differ diff --git a/versioned_docs/version-26.2-organizations/FAQ/img/DemoPersonal.png b/versioned_docs/version-26.2-organizations/FAQ/img/DemoPersonal.png new file mode 100644 index 0000000000..3052c12a64 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/FAQ/img/DemoPersonal.png differ diff --git a/versioned_docs/version-26.2-organizations/FAQ/img/DemoShared.png b/versioned_docs/version-26.2-organizations/FAQ/img/DemoShared.png new file mode 100644 index 0000000000..a84d20ec38 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/FAQ/img/DemoShared.png differ diff --git a/versioned_docs/version-26.2-organizations/FAQ/img/NewVersions.png b/versioned_docs/version-26.2-organizations/FAQ/img/NewVersions.png new file mode 100644 index 0000000000..6857717c4e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/FAQ/img/NewVersions.png differ diff --git a/versioned_docs/version-26.2-organizations/FAQ/index.md b/versioned_docs/version-26.2-organizations/FAQ/index.md new file mode 100644 index 0000000000..3d00ccff10 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/FAQ/index.md @@ -0,0 +1,181 @@ +--- +title: FAQ +sidebar_position: 24 +description: Find quick answers about installing, integrating, and using ReportPortal, from AI features and licenses to dashboards, integrations, and performance guidance. +--- + +# 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?](/FAQ/#1-does-on-prem-installed-reportportal-make-any-external-calls-what-are-the-content-and-nature-of-these-calls) +2. [Assuming ReportPortal locally caches logs to understand their content, where are these stored, and what are the associated retention policies?](/FAQ/#2-assuming-reportportal-locally-caches-logs-to-understand-their-content-where-are-these-stored-and-what-are-the-associated-retention-policies) +3. [How is data encrypted in transit and at rest?](/FAQ/#3-how-is-data-encrypted-in-transit-and-at-rest) +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?](/FAQ/#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) +5. [Is there any training available to use ReportPortal effectively?](/FAQ/#5-is-there-any-training-available-to-use-reportportal-effectively) +6. [Is there a demo available?](/FAQ/#6-is-there-a-demo-available) +7. [How can I begin using ReportPortal?](/FAQ/#7-how-can-i-begin-using-reportportal) +8. [Does the tool integrate with my existing test automation framework?](/FAQ/#8-does-the-tool-integrate-with-my-existing-test-automation-framework) +9. [What type of license does ReportPortal use?](/FAQ/#9-what-type-of-license-does-reportportal-use) +10. [Does ReportPortal have any paid features?](/FAQ/#10-does-reportportal-have-any-paid-features) +11. [Does ReportPortal use AI?](/FAQ/#11-does-reportportal-use-ai) +12. [Do we need specific infrastructure prerequisites to avoid performance problems?](/FAQ/#12-do-we-need-specific-infrastructure-prerequisites-to-avoid-performance-problems) +13. [What types of reports can I generate with the ReportPortal?](/FAQ/#13-what-types-of-reports-can-i-generate-with-the-reportportal) +14. [Can ReportPortal aggregate performance test results?](/FAQ/#14-can-reportportal-aggregate-performance-test-results) +15. [Does ReportPortal have integration with Jira?](/FAQ/#15-does-reportportal-have-integration-with-jira) +16. [How can I check the ReportPortal version?](/FAQ/#16-how-can-i-check-the-reportportal-version) +17. [How can I check if the ReportPortal API is working?](/FAQ/#17-how-can-i-check-if-the-reportportal-api-is-working) +18. [What are the application limits in ReportPortal?](/FAQ/#18-what-are-the-application-limits-in-reportportal) + +#### 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 OpenSearch 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](/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? + +You can explore ReportPortal without installation by visiting our [demo instance](https://demo.reportportal.io/) which offers: +* Free trial available indefinitely +* Data is flushed every 24 hours +* All enterprise features included + +You can either join a shared project or create a personal one. + +When a user visits the demo instance, they can log in using the default/pre-filled credentials. In this case, they will access a **shared project** that is available to everyone using the same demo account. This means that anything they report will be visible to all users and can be modified or managed by anyone. + + + +Alternatively, the user can log in via GitHub. In this case, a **personal project** and user account will be created just for them. Only that user will be able to view and manage the data reported within their personal project. + + + +If you need a personalized demo session, please leave your [contact details](https://reportportal.io/contact-us/general/). To get a quick overview, check out our [demo video](https://www.youtube.com/watch?v=AKA_O8lcIdc). + +#### 7. How can I begin using ReportPortal? + +The initial steps involve installing and configuring the tool. [Installation steps](/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. + +#### 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? + +We offer the following premium feature: + +* [SCIM Server](/features/SCIMServerFeature) – helps automate user management by syncing users and their access rights between your identity provider and ReportPortal. + +#### 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 [Hardware Requirements](/installation-steps/HardwareRequirements). + +#### 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). + +Depending on your needs, you can create either a report for a [single test run](/dashboards-and-widgets/PossibleDashboardsInReportPortal#report-for-one-tests-run-a-dashboard-for-an-engineer) or a [Build/Release/Sprint Report](/dashboards-and-widgets/PossibleDashboardsInReportPortal#build--release-sprint-report-a-dashboard-for-a-team-leads-pm-dm). ReportPortal also allows you to generate various types of [test automation reports](https://reportportal.io/blog/how-to-create-test-report-with-reportportal) using widgets, including: + +* Summary Report +* Detailed Test Case Report +* Trend Analysis Report +* Failure Analysis Report +* Execution History Report + +#### 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](https://github.com/reportportal/reportportal/issues/1820) in JUnit format into ReportPortal. + +#### 15. Does ReportPortal have integration with Jira? + +Our test automation reporting dashboard have integration with following Bug Tracking Systems: [Jira Server](/plugins/bug-tracking/AtlassianJiraServer), [Jira Cloud](/plugins/bug-tracking/AtlassianJiraCloud), [Azure DevOps](/plugins/bug-tracking/AzureDevOps), [GitLab](/plugins/bug-tracking/GitLab), [Monday](/plugins/bug-tracking/Monday) and [Rally](/plugins/bug-tracking/Rally). + +#### 16. How can I check the ReportPortal version? + +You can find the current version of ReportPortal on the login page. Simply hover your mouse over the ```i``` icon next to the "New versions are available" message to see the version details. + + + +#### 17. How can I check if the ReportPortal API is working? + +Open your browser and go to the following URL: ```http://{your-hostname}/composite/info```. This page provides essential information about the API's status. + + + +#### 18. What are the application limits in ReportPortal? + +ReportPortal has defined application limits to maintain stable performance and consistent API behavior across all projects and endpoints. Below is the complete list of limits and recommendations: + +**1. Pagination & Collections** + +**Max page size: 300** items per page across collection endpoints: +- Launches +- Dashboards +- Filters +- Project members +- Suites / Tests / Steps / Logs +- Widgets + +**2. Dashboards & Widgets** + +- **Dashboards per project:** up to **3,000** (increased from 300 in version 24.2). +- **Dashboard name length: 3–55** characters, must be unique per user per project. +- **Widget fullscreen auto-refresh:** occurs every **30 seconds**. +- **Test Case Search widget results cap: 300** total cases (10 per page × 30 pages). + +**3. Attributes & Text Fields** + +- **Attribute key length:** up to **512** characters. +- **Attribute value length:** up to **512** characters. +- **Quality Gate name length** (Managed Plugin): **1–55** characters. + +**4. Files, Uploads & Storage** + +- **API attachment uploads:** default limit **64 MB** (configurable at the service-api level). +- **JUnit/Robot imports via UI:** up to **32 MB** per ZIP/XML file. +- **User avatars:** + - Accepted formats: **JPEG, PNG, GIF** + - Maximum size: **1 MB** + - Maximum dimensions: **300×500 px** +- **RabbitMQ message size:** infrastructure-dependent; it’s recommended to keep log payloads reasonably sized, as very large logs may be rejected to process. + +**5. API Behavior & Miscellaneous** + +- **Rate limiting:** none built-in; throughput and concurrency depend on infrastructure capacity. +- **Import timeout UX:** works similar to ```/v2``` reporting, depends on infrastructure. + +**6. Launch Merge** + +- **No hard cap**, but treat **around 20 launches** per merge as a safe operational limit, unless you have tested higher based on your infrastructure size and data distribution. + +:::note +All bulk operations triggered from the “Make decision” modal are limited to 300 test items per request.
+When more items are selected, the operation must be divided into multiple requests. +::: diff --git a/versioned_docs/version-26.2-organizations/admin-panel/AllProjectsPage.mdx b/versioned_docs/version-26.2-organizations/admin-panel/AllProjectsPage.mdx new file mode 100644 index 0000000000..11dd2f2b9b --- /dev/null +++ b/versioned_docs/version-26.2-organizations/admin-panel/AllProjectsPage.mdx @@ -0,0 +1,184 @@ +--- +sidebar_position: 1 +sidebar_label: All Projects page +description: Manage all projects in ReportPortal with administrator privileges. View project details, settings, and user access for comprehensive test automation reporting tools administration. +--- + +# All Projects page + +Users with the `Administrator` role have access to the ReportPortal "Administrate" section. + +In "Administrate" section you can: + +- Manage projects: create a project, delete a project, update project settings. + +- Manage users: create a user, invite a user to ReportPortal, delete a user, update a user project role, assign a user to projects/unassign a user from +projects. + +To go to the "Administrate" section, open menu at the bottom of the page and select "Administrate" option. + +All existing projects are displayed on the "Projects" page. + +For each project, the following information is displayed: + +- Project name - the link to the "Dashboards" page of a project +- Project type: "Internal" or "Personal" +- Number of assigned team members +- Number of launches +- Last Launch date +- "See detailed information" button +- Ellipsis button + +By clicking on ellipsis button, a dropdown with the next options appears: + +- Members +- Settings +- Assign/Unassign +- Delete + +:::note +Administrator has access to a project even if they are not assigned to this project. +::: + +## Projects Navigation – Sorting and Search + +By default, projects are sorted by the name in our test automation reporting dashboard. + +You can sort projects using the buttons from the "Sort by" section at the top. +The sorting can be performed by: Creation date, Name, Members, Launches, Last Launch date, Project Type, Organization. + +To find a project quickly, type 3 or more symbols of the project name into the +"Search" field. + + + +All Projects page allows: + - to create a project + - to update project settings + - to invite users + - to view project information + - to delete a project (except PERSONAL project) + +## Create projects + +To create a project: + +1. Login into the ReportPortal instance as an `Administrator`. +2. Open menu at the bottom. +3. Click the 'Administrate' link. +4. Select 'Projects' from the left-hand sidebar. +5. Click the 'Add New Project' button in the right top corner. +6. Then enter a name of the project. +7. Click the 'Add' button. + +A confirmation message in the status bar should appear. + +:::note +The name of the project should contain between 3-256 symbols. +It can include Latin and numeric characters, as well as underscores and dashes. +The name should be unique and cannot be changed after saving. +::: +An Admin can configure the project settings or leave them as the default. +Project members with PROJECT_MANAGER roles are able to set up the project settings. +To know how project settings could be updated, go to the [Project Settings](/configuration/ProjectSettings) section. + +## Modify project settings + +To modify project settings please refer to [Project Settings](/configuration/ProjectSettings) + +## Invite user on "All Projects" page + +:::info +Depending on the toggle state in [Server Settings](/admin-panel/ServerSettings), the ability to manually invite external users to ReportPortal can be disabled. +::: + +To invite a user to a project on "All Projects" page, perform the following steps: + +1. Login into the ReportPortal instance as an `Administrator`. + +2. Navigate to the "Administrate" section -> "All Projects" page + +3. Click on ellipsis button on the project preview. + +4. Select the "Members" option. + +5. Click on the "Invite User" button. + +6. Enter the email address of the user in case he/she is not present in ReportPortal database + or enter his/her login name in the "Login or email" field. In case the user is already available in ReportPortal, his/her name will appear in the suggestion list. +If not, the Admin should enter correct email address. + +7. Select an appropriate role in the "Project role" dropdown. + +8. Click on the "Invite" button. + +9. In the case the user is already available in ReportPortal she/he will be assigned to the project. +If not, the email with the invitation link will be sent to user email address. + +10. The user will receive an email with the link to the registration page. +When the user clicks the link, he/she will see a registration form. + +11. The user needs to fill in the registration form and click the "Register" +button to complete the registration. + +12. The user will be assigned to the project that the invitation was sent from, and to "Personal Project" with the PROJECT + MANAGER project role. + + + +:::note +The link for registration will be active until the user registers in the system for up to, +but not exceeding 24 hours. +::: + +## Detailed project info + +1. Login into ReportPortal instance as `Administrator`. + +2. Navigate to the "Administrate" section -\> "All Projects" page. + +3. Click "See detailed information" button. + +4. View aggregated data of the selected project. Available period options are: + - last 6 months + - last 3 months + - last month. + +## Delete projects + +To delete a project, perform the following steps: + +1. Login into ReportPortal instance as `Administrator`. + +2. Navigate to the "Administrate" section -> "All Projects" page. + +3. Click on ellipsis button on the project preview. + +4. Click on the "Delete" option. A warning pop-up message will appear. + +5. Click "Delete". The project will be deleted from ReportPortal. + + + +:::note +PERSONAL PROJECTS cannot be deleted from the system. +::: +## Use Case 1 + +**Situation:** We have a small team. Everybody can see everything. We need one dashboard which shows information about the whole project. + +**Solution:** Create one project. Assign all users on the created project. View all types of test cases (UI, API, Unit and so on) on this project. Divide executions by custom filters. Create a dashboard with a widget based on filters. + +**Pros:** You have a dashboard that can combine all results needed for your team. You need to configure only one project. + +**Cons:** All team members can see all results, you can not configure permissions rules. + +## Use Case 2 + +**Situation:** We have a big team with a difficult permission structure and nested streams. Only persons with granted permissions can see results of a certain stream. + +**Solution:** Create separate projects for different streams. Assign users to appropriate projects. Create a dashboard with a widget based on filters for each project. + +**Pros:** Security, only users with granted permission will have access to the data. + +**Cons:** You can not see a single dashboard for several dashboards. diff --git a/versioned_docs/version-26.2-organizations/admin-panel/AllUsersPage.mdx b/versioned_docs/version-26.2-organizations/admin-panel/AllUsersPage.mdx new file mode 100644 index 0000000000..7e303f90d1 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/admin-panel/AllUsersPage.mdx @@ -0,0 +1,202 @@ +--- +sidebar_position: 2 +sidebar_label: All Users page +description: Manage all users in ReportPortal with administrator privileges. View user details, roles, and permissions for comprehensive test automation reporting tools administration. +--- + +# All Users page + +The "All Users" page in "Administrate" section provides the access to see all available users in the our Testops system. + +The page provides next information: + * user's information: login, full name, email address + * last login date: in 'time ago' format + * projects on which users are assigned and roles on them + * Delete button: only Admin is able to delete user from the system + +"All Users" page allows: + - to add and invite new ReportPortal users. + - to assign users to the projects with any project role. + - to unassign users from projects. + - to update project role + - to delete users from ReportPortal. + +ReportPortal allows to create a new user account on the "All Users" page in the "Administration" section. + +## Add user + +:::info +Depending on the toggle state in [Server Settings](/admin-panel/ServerSettings), the ability to manually invite external users to ReportPortal can be disabled. +::: + +To add a user on the "All Users" page, perform the following steps: + +1. Login into ReportPortal instance as `Administrator`. + +2. Navigate to the "Administrate" section -> "All users" page. + +3. Click on the "Add User" button. + +4. Fill all fields with valid data in the "Add user" form and click on the "Add" button. + +A new user will be added to the system and assigned to the selected project, and to "Personal Project" with the +PROJECT MANAGER project role. Message with authorization data will be sent to the user's email. + +:::note +If you do not need a personal project, `ADMINISTRATOR` can delete it. This project will be removed from the instance. But if the user is unassigned from all projects in the system, and he/she will log in to the ReportPortal after that - the deleted personal project will be created once more time. +::: + + + +:::note +This is the only place in the system where an Administrator can be created +from. "Project role" is disabled, if Administrator has been selected in the +"Account role" field. The "ProjectRole" parameter is not specified for +Administrator, the Administrator has full privileges on the project. +::: + +:::important +Please, do not forget to review project roles on regular basis. We recommend to do it at least quarterly. +::: + +## Invite user on the "All Users" page + +:::info +Depending on the toggle state in [Server Settings](/admin-panel/ServerSettings), the ability to manually invite external users to ReportPortal can be disabled. +::: + +To invite a user on the "All Users" page, perform the following steps: + +1. Login into ReportPortal instance as `Administrator`. + +2. Navigate to the "Administrate" section -\> "All users" page. + +3. Click on the "Invite User" button. + +4. Fill all fields with valid data in the "Invite user" form and click on the "Invite" button. The invitation + has been sent. You can copy the link to the invitation from the "Link to + invitation" field. + +5. The user will receive an email with the link to the invitation. Registration +link will be active until the user registers in the system by this reference, +but not more than 24 hours. When the user clicks the link, he/she will see a registration form. + +6. The user needs to fill in the registration form and click the "Register" button to complete the registration. +The user will be assigned to the project that was specified by you during the invitation, +and to "Personal Project" with the PROJECT MANAGER project role. + + + +## Assign user on project + +To assign user on the "All Users" page, perform the following +steps: + +1. Login into ReportPortal instance as `Administrator`. + +2. Navigate to the "Administrate" section -> "All Users" page. + +3. Find a user and their projects in the "Projects and roles" column. + +4. Click on the name of any project. + +5. Click "Add project" button. + +6. Fill the name of project. + +7. Select a project role. + +8. Click on the "Tick" button. - The user will be assigned to the project. + +## Unassign user from the project + +To unassign a user from the project, perform the following steps: + +1. Navigate to the "Administrate" section -> "All Users" page. + +2. Find a user and their project in the "Projects and roles" column. + +3. Click on the name of project. + +4. Click on "Cross" icon near the needed project. + +5. Confirm the action. - The user will be unassigned from the project. + + + +:::note +Users can not be unassigned from their own personal projects. +::: + +## Edit user's project role + +To edit a user project role on the "All Users" page, perform the following +steps: + +1. Login into ReportPortal instance as `Administrator`. + +2. Navigate to the "Administrate" section -\> "All Users" page. + +3. Find a user and their project in the "Projects and roles" column. + +4. Click on the name of project. + +5. Select a new value from the "Project Role" drop-down. + +6. Click on the tick button. + + + +## Delete user + +To delete a user from ReportPortal, perform the following steps: + +1. Login into ReportPortal instance as `Administrator`. + +2. Navigate to the "Administrate" section -> "All Users" page. + +3. Select a user and click the "Delete" button. + +4. The warning message will be displayed. + +5. Click the "Delete" button. The user will be deleted from the ReportPortal. All launches that the user owns on the projects will be kept in ReportPortal. + + + +## Edit user account role + +The only space in ReportPortal where user can get the Administrator rights is All Users page. + +**Give ADMINISTRATOR role** + +To give Administrator role for any user, perform the following steps: + +1. Login into the ReportPortal instance as `Administrator`. + +2. Navigate to the "Administrate" section -> "All Users" page. + +3. Hover over user's name. - "Make admin" button will be displayed. + +4. Click on the "Make admin" button. - A confirmation message will be shown. + +5. Click "Change" button on pop-up window. Account role User will be changed to + Administrator. The user account will be marked with "admin" label. + + + +**Take away ADMINISTRATOR role** + +To take away Administrator account role, perform the following steps: + +1. Login into ReportPortal instance as `Administrator`. + +2. Navigate to the "Administrate" section -> "All Users" page. + +3. Click on the "Admin" button near the user's name. + +4. A confirm message will be shown. + +5. Click "Change" button. Account role "Administrator" will be changed to + "User". + + diff --git a/versioned_docs/version-26.2-organizations/admin-panel/EventMonitoring.mdx b/versioned_docs/version-26.2-organizations/admin-panel/EventMonitoring.mdx new file mode 100644 index 0000000000..3ddeba9d6b --- /dev/null +++ b/versioned_docs/version-26.2-organizations/admin-panel/EventMonitoring.mdx @@ -0,0 +1,68 @@ +--- +sidebar_position: 3 +sidebar_label: Event monitoring +description: Monitor all activities and events in ReportPortal at project and instance levels for comprehensive test automation reporting tools administration and auditing. +--- + +# Event monitoring + +Starting from version 23.2, ReportPortal can monitor all activities (events) at both the project and instance levels. + +## Project level event monitoring + +To view the list of all activities within your project, open the menu at the bottom of the page as an `Administrator` and select the "Administrate" option. All existing projects are listed on the "All Projects" page. Click on the ellipsis button next to the project and choose the "Monitoring" option from the dropdown. + +Here, you will find a table with the following columns: Time, User, Action, Object Type, Object Name, Old Value, and New Value. + + + +### Time + +This column displays the time in a "time ago" format (e.g., "10 minutes ago"). Hovering over it, the system should show the precise action time. + +### User + +This column shows who acted. We track not only actions by specific users but also, for your convenience, actions performed by ReportPortal itself or certain ReportPortal services. For example, actions by Jobs Service (such as Launch deletions) are included. + +If the activity was on behalf of a user, and their account was deleted, then there will be a "deleted user" entry in the "User" column. + +### Action + +This column displays all events within this project. + +**Event actions:** Create dashboard, Update dashboard, Delete dashboard, Create widget, Update widget, Delete widget, Create filter, Update filter, Delete filter, Create custom defect type, Update defect, Delete defect, Create integration, Update integration, Delete integration, Start launch, Finish launch, Delete launch, Update project, Update analyzer, Post issue, Link issue, Unlink issue, Generate index, Delete index, Start import, Finish import, Update item, AA linked issue, AA changed defect type, Create pattern rule, Update pattern rule, Delete pattern rule, PA find pattern. + +### Object Type + +This refers to the object on which the action was taken. + +**Event objects:** Launch, Dashboard, Custom defect type, Notification rule, Filter, Import, Integration, Test item, Project, Ticket, User, Widget, Pattern Rule, index, Plugin. + +### Object Name + +This is the name of the widget, launch, etc. + +The **Old Value** and **New Value** columns display the changes that were made. + +You can filter activities by user, action, object type, and object name. + + + +Another way to view the event list in your project is by creating a ["Project Activity Panel" widget](/dashboards-and-widgets/ProjectActivityPanel). + +## Instance level event monitoring + +Instance level events are not displayed in the UI – they are stored in the database. + +**Instance level events:** Account deletion, Bulk account deletion, Administrator unassign, Provide Administrator permission for a user, Project creation, Bulk delete project by ReportPortal administrator, Delete project by ReportPortal administrator, Delete project by ReportPortal administrator, Delete Personal project when deleting user, Create Global Integration, Update Global Integration, Delete Global Integration, Bulk delete of Global Integration via API only, Manual plugin upload, Delete Plugin, Update Plugin (disable/enable), Create user in Administrate, Create user via auth service SAML. + +Additionally, during instance setup, you can enable event storage in an audit log file. This data can be sent to a Security Information and Event Management (SIEM) system using tools like Fluentd, Fluentbit, or Filebeat. Logs and events are then checked and monitored within the SIEM system. + +The primary advantage of the audit log file is that it preserves all records without alterations or deletions. In contrast, data in the database can be modified or deleted. For example, if launches or projects are deleted, the corresponding data is removed from the database. Deleting accounts leads to data obfuscation in the database. + +Hence, if historical monitoring and strict accountability are required, enabling event storage in an audit log file is recommended. Financial companies, for example, are often mandated to retain all user actions in their services for 3 years. + +:::note +Administrators should ensure that log rotation is configured for the location where the audit log will be saved, as a substantial amount of data will accumulate. +::: +Event monitoring assists organizations, especially in industries like finance and healthcare, in maintaining the security of their systems and data. diff --git a/versioned_docs/version-26.2-organizations/admin-panel/ServerSettings.mdx b/versioned_docs/version-26.2-organizations/admin-panel/ServerSettings.mdx new file mode 100644 index 0000000000..e0ac24b068 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/admin-panel/ServerSettings.mdx @@ -0,0 +1,215 @@ +--- +sidebar_position: 4 +sidebar_label: Server Settings +description: Configure server settings including GitHub authorization, SSO login, and Google Analytics in ReportPortal test automation reporting tools. +--- + +# Server Settings + +In the Server Settings section, you can enable GitHub authorization, allowing users to sign in with their GitHub credentials. Additionally, you can configure the instance to allow login only through SSO and here you can enable or disable Google Analytics. + +## Authorization configuration + +### Inactivity timeout + +ADMIN can configure session expiration per instance. + +For that, the ADMIN needs to navigate to Administrate > Server Settings and set up the duration of user inactivity before automatic logout in 'Inactivity timeout' block: + +- 15 minutes +- 1 hour +- 12 hours +- 24 hours (default value) + +The user is logged out if their session inactivity exceeds the defined timeout. + +If the user is working in multiple tabs and the inactivity timeout is reached in one tab while they are still active in another, the user remains logged in until the timeout is reached in all tabs. + + + +### Password + +Admin can define the minimum password length for the whole instance. This setting applies to: + +* all new user accounts +* password changes for any existing accounts + +:::note +Existing passwords are not affected and remain valid even if they do not meet the newly configured minimum length. +::: + +To set minimum password length: + +1. Log in as ADMIN. +2. Navigate to Administrate -> Server Settings -> "Authorization Configuration" tab. +3. Set the minimum password length to a value between 8 and 256 characters. +4. Click "Submit". + +If the entered value is outside the allowed range, the system automatically adjusts it: + +* if the value is less than 8, it is set to 8 +* if the value is greater than 256, it is set to 256 + + + +The configured minimum password length is validated in the following scenarios: + +* User registration form +* Create User modal window +* Password change in the user profile +* Password reset from the login page + + + +### GitHub + +To enable [GitHub authorization](/plugins/authorization/GitHub/): + +1. Log in as ADMIN. +2. Go to Administrate > Server Settings. +3. Switch ON the "GitHub authorisation" toggle. +4. Fill in required [parameters for authorization](/plugins/authorization/GitHub#reportportal-configuration). +5. Click "Submit". + + + +Now you can access ReportPortal by clicking the "Login with GitHub" button on the login page. + +### Instance Invitations + +ADMIN can disable the possibility for manual invitation of external users. In such case, users can get access to ReportPortal via identity provider only (for example, SAML) configured on the instance. + +The default state of toggle on "Instance Invitations" section is OFF. + + + +When toggle is OFF: + +1. The "Invite User" and "Add User" buttons are displayed on the "All Users" page. + + + +2. The "Invite User" button is displayed on the "Project Members" page. + + + +When toggle is ON, manual invitation of external is disabled: + +1. The "Invite User" and "Add User" buttons are removed from the "All Users" page. + + + +2. The "Invite User" button on the "Project Members" page has been changed to the "Assign User" button. Now, the Project Manager and Administrator can no longer invite new users to this project and instance; they can only assign existing users to this project. + + + +To assign user on the project: + +1. Log in as Project Manager or ADMIN. +2. Go to the "Project Members" page. +3. Click the "Assign User" button. +4. Start type the name > suggestions will be provided in the dropdown. + + + +or + +1. Log in as ADMIN. +2. Go to Administrate > "All Projects" page. +3. Click on the ellipsis button on the project preview. +4. Select the "Members" option. +5. Click on the "Assign User" button. +6. Start type the name > suggestions will be provided in the dropdown. + + + +## Features + +An admin can disable the "Important launches" functionality to better control storage usage and prevent launches from being stored indefinitely on the instance. + +By default, the "Important launches" functionality is enabled on all instances. Users can then [mark launches as important](/configuration/LaunchesRetentionPolicy/#mark-launch-as-important-on-ui) using the launch burger menu or [report launch as important](/configuration/LaunchesRetentionPolicy/#report-launch-as-important), and these launches can only be deleted manually or when [storage limits are exceeded](/configuration/LaunchesRetentionPolicy/#important-launch-deletion-on-full-storage). + +To **turn off the "Important launches" functionality**: + +1. Log in as an ADMIN. +2. Navigate to Administrate > Server Settings > "Features" tab. +3. Turn the toggle "Important launches" off. + + + +When toggling "Important Launches" off: + +1. The "Mark as important" option is disabled on the launch burger menu, and there is a tooltip with an explanation. + + + +2. A background job runs to remove the "Important" flag from launches that were previously marked as important, converting them to regular launches and making them subject to the standard [retention policy](/configuration/LaunchesRetentionPolicy/). +3. If the toggle is off, then even if a user reports a launch with the system attribute retentionPolicy:important, the launch will not be marked as important and will still be subject to the standard retention policy. +4. If you previously had important launches, then turned off the toggle, and later turn it back on, the old launches that were once marked as important will not become important again. + +## Analytics + +To turn on [Google Analytics](/terms-and-conditions/GoogleAnalyticsUsageByReportPortal/) on ReportPortal UI: + +1. Log in as ADMIN. +2. Go to Administrate > Server Settings. +3. Go to Analytics tab. +4. Check "Help make Report Portal better by automatically sending analytics to us" checkbox. +5. Click on "Submit" button. + + + +## Links & Branding + +ADMIN can configure the necessary links in the footer of the application on the Server Settings > 'Links & Branding' tab. + +By default, there are **2 links hardcoded on UI**: + +- [Fork us on GitHub](https://github.com/reportportal) +- [Documentation](https://reportportal.io/docs/) + +Next links are displayed by default, but can be changed: + +- [Chat with us on Slack](https://slack.epmrpp.reportportal.io/) +- [Contact us](mailto:support@reportportal.io) +- [EPAM](https://www.epam.com/) + + + +Admin can add 5 links except 2 hardcoded links, so a maximum of 7 links can be displayed in footer. + +To **add a new footer link**: + +1. Log in as ADMIN. +2. Go to Administrate > Server Settings > 'Links & Branding' tab. +3. Click the 'Add new' button. + + + +4. Provide Link name (from 3 to 30 characters). +5. Provide URL or Email (from 3 to 1024 characters). +6. Click the 'Save' button. + + + +To **delete footer link**: + +1. Go to Administrate > Server Settings > 'Links & Branding' tab. +2. Click on the 'Trash' icon. +3. Click the 'Delete' button on the 'Delete link' modal. + + + +To **change the links order**: + +1. Go to Administrate > Server Settings > 'Links & Branding' tab > 'Footer Links' section. +2. Click on the drag-n-drop icon. +3. Change the links order. + + + +All added/updated links immediately displayed across all application pages after saving changes. + +:::note +Footer links visibly differ on Project Settings Page compared to other pages. +::: diff --git a/versioned_docs/version-26.2-organizations/admin-panel/_category_.json b/versioned_docs/version-26.2-organizations/admin-panel/_category_.json new file mode 100644 index 0000000000..2b9278dff0 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/admin-panel/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Admin Panel", + "position": "16", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.2-organizations/admin-panel/img/EventMonitoring.png b/versioned_docs/version-26.2-organizations/admin-panel/img/EventMonitoring.png new file mode 100644 index 0000000000..0622a81227 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/admin-panel/img/EventMonitoring.png differ diff --git a/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/FooterLinks1.png b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/FooterLinks1.png new file mode 100644 index 0000000000..a11f912f3b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/FooterLinks1.png differ diff --git a/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/FooterLinks2.png b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/FooterLinks2.png new file mode 100644 index 0000000000..50affa4f10 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/FooterLinks2.png differ diff --git a/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/FooterLinks3.png b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/FooterLinks3.png new file mode 100644 index 0000000000..4377c58438 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/FooterLinks3.png differ diff --git a/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/FooterLinks4.png b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/FooterLinks4.png new file mode 100644 index 0000000000..a31ee911a1 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/FooterLinks4.png differ diff --git a/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/FooterLinks5.png b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/FooterLinks5.png new file mode 100644 index 0000000000..f83f038dd9 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/FooterLinks5.png differ diff --git a/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ImportantLaunches1.png b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ImportantLaunches1.png new file mode 100644 index 0000000000..aa7695d0d9 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ImportantLaunches1.png differ diff --git a/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ImportantLaunches2.png b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ImportantLaunches2.png new file mode 100644 index 0000000000..6ea671fd1d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ImportantLaunches2.png differ diff --git a/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/PasswordLength.png b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/PasswordLength.png new file mode 100644 index 0000000000..775a335ec3 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/PasswordLength.png differ diff --git a/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ServerSettings1.png b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ServerSettings1.png new file mode 100644 index 0000000000..15dcf2ccc4 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ServerSettings1.png differ diff --git a/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ServerSettings10.png b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ServerSettings10.png new file mode 100644 index 0000000000..0e125e2e3e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ServerSettings10.png differ diff --git a/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ServerSettings2.png b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ServerSettings2.png new file mode 100644 index 0000000000..ba1f4f89e1 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ServerSettings2.png differ diff --git a/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ServerSettings3.png b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ServerSettings3.png new file mode 100644 index 0000000000..1b3fb237fd Binary files /dev/null and b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ServerSettings3.png differ diff --git a/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ServerSettings4.png b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ServerSettings4.png new file mode 100644 index 0000000000..f485eec5c6 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ServerSettings4.png differ diff --git a/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ServerSettings5.png b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ServerSettings5.png new file mode 100644 index 0000000000..dcb9b8e2e5 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ServerSettings5.png differ diff --git a/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ServerSettings6.png b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ServerSettings6.png new file mode 100644 index 0000000000..4b912d7dd0 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ServerSettings6.png differ diff --git a/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ServerSettings7.png b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ServerSettings7.png new file mode 100644 index 0000000000..57fc475aaf Binary files /dev/null and b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ServerSettings7.png differ diff --git a/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ServerSettings8.png b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ServerSettings8.png new file mode 100644 index 0000000000..b3599b453a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ServerSettings8.png differ diff --git a/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ServerSettings9.png b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ServerSettings9.png new file mode 100644 index 0000000000..7deab7f1da Binary files /dev/null and b/versioned_docs/version-26.2-organizations/admin-panel/img/server-settings/ServerSettings9.png differ diff --git a/versioned_docs/version-26.2-organizations/admin-panel/index.md b/versioned_docs/version-26.2-organizations/admin-panel/index.md new file mode 100644 index 0000000000..b7ee79431b --- /dev/null +++ b/versioned_docs/version-26.2-organizations/admin-panel/index.md @@ -0,0 +1,18 @@ +--- +title: Admin Panel +description: Efficiently manage projects and users with our Admin Panel. Explore event monitoring and more for your centralized test automation tool. +--- + +# Admin Panel + +The **Admin Panel** is a comprehensive section dedicated to project and user management for administrators in our test automation dashboard. This category provides all the essential tools needed to effectively oversee and customize your platform. As an admin, you can set up and organize projects, ensuring they are aligned with the goals and structure of your organization. + +Within the Admin Panel, you can **manage user roles and permissions**, tailoring access based on specific responsibilities and ensuring that users have the appropriate level of control. This helps in maintaining a secure environment by limiting access to sensitive information and critical functionalities to only authorized individuals. + +Another key feature of the Admin Panel is **event monitoring**, which allows admins to track activities at both the project and instance levels. This ensures that you have real-time visibility into the actions taken within your system, helping in troubleshooting and security management. From user actions to system alerts, you can keep a close watch on the platform’s behavior and quickly address any issues that arise. + +Overall, the Admin Panel is designed to offer a robust and flexible interface that empowers administrators to manage both projects and users efficiently, ensuring that the platform remains secure, organized, and aligned with the organization’s needs. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.2-organizations/analysis/AutoAnalysisOfLaunches.mdx b/versioned_docs/version-26.2-organizations/analysis/AutoAnalysisOfLaunches.mdx new file mode 100644 index 0000000000..53b3ee0a25 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/analysis/AutoAnalysisOfLaunches.mdx @@ -0,0 +1,358 @@ +--- +sidebar_position: 1 +sidebar_label: Auto-Analysis of launches +description: Use Auto-Analysis to categorize failures with ML, reduce manual work, and link defects automatically. Speed investigations and improve accuracy with test failure analytics. +--- + +# Auto-Analysis of launches + +The analysis feature of the ReportPortal makes it possible for the application to check and pass part of the routine duties by itself. + +Auto-analysis performs automated defect triaging and defines the reason for the test item failure and sets: + +* a defect type; +* a link to BTS _(in case if it exists)_; +* comment _(in case if it exists)_; + +The process of Auto-Analysis is based on previous user-investigated users' results using Machine Learning. + +An auto-analyzer is presented by a combination of several services: OpenSearch and Analyzer service (two instances Analyzer and Analyzer train). + +* OpenSearch contains an analytical base and stores training data for retraining of models. +* Analyzer instance performs all operations, connected with the basic functionality (indexing/removing logs, searching logs, auto-analysis, ML suggestions). +* Analyzer train instance is responsible for training models for Auto-analysis and ML suggestions functionality. + +*You have the option to disable the Analyzer by removing the Analyzer and Analyzer train services from the installation.* + +There are several ways to use an analyzer in our test automation reporting dashboard: + +* Use the ReportPortal Analyzer: **manual** (analysis is switched on only for chosen launch manually) or **auto** (analysis is switched on after the launch finishing automatically); + +* Implement and configure your custom Analyzer and do not deploy ReportPortal service Analyzer; + +* Do not use any Analyzers at all and do an analytical routine by yourself; + +:::important +The Auto Analyzer service is a part of the ReportPortal bundle. +::: + +## ReportPortal Analyzer. How the Auto-Analysis is working + +ReportPortal's Auto Analyzer allows users to reduce the time spent on test execution investigation by analyzing test failures in automatic mode. The default analysis component is running along with OpenSearch which is used for test logs indexing. +For effective using Auto–Analysis you should come through several stages. + +### Create an analytical base in the OpenSearch + +First of all, you need to create an analytical base. For that, you should start to analyze test results manually. + +All test items with a defect type which have been analyzed manually or automatically by ReportPortal are sent to the OpenSearch. + +The following info is sent: + +* An item ID; +* Logs (each log should be with level Error and higher (log level >= 40 000)); +* Issue type; +* Flag: “Analyzed by” (where shows by whom the test item has been analyzed by a user or by ReportPortal); +* A launch name; +* Launch ID; +* Test case ID; + +For the better analysis, we merge small logs (which consist of 1-2 log lines and words number less or equal 100) together. We store this merged log message as a separate document if there are no other big logs (consisting of more than 2 log lines or having a stacktrace) in the test item. We store this merged log message in a separate field "merged_small_logs" for all the big logs if there are ones. + +The Analyzer preprocesses log messages from the request for test failure analysis: extracts error message, stacktrace, numbers, exceptions, urls, paths, parameters and other parts from text to search for the most similar items by these parts in the analytical base. These parts are saved in a separate fields for each log entry. + +Each log entry along with its defect type is saved to OpenSearch in the form of a separate document. All documents created compose an Index. The more test results index has, the more accurate results will be generated by the end of the analysis process. + +:::tip +If you do not sure how many documents(logs) are contained in the Index at that moment, you can check it. +For that, perform the following actions: +* Uncommented Service OpenSearch ports in a docker-compose file or add them: 9200:9200; +* Restart-Service OpenSearch with new docker-compose; +* Send a request to OpenSearch: + * how many documents in the Index: GET http://localhost:9200/_cat/indices?v + * Detailed information: POST http://localhost:9200/{project_name}/_search +::: + +Test items of a launch in Debug mode are not sent to the service Analyzer. If the test item is deleted or moved to the Debug mode, it is removed from the Index. + +### Auto-Analysis process + +After your Index has been completed. You can start to use the auto-analysis feature. + +Analysis can be launched automatically (via Project Settings) or manually (via the menu on All launches view). After the process is started, all items with defect type “To investigate” with logs (log level >= 40 000) from the analyzed launch are picked and sent to the Analyzer Service and the service OpenSearch for investigations. + +### How OpenSearch returns candidates for Analysis + +Here is a simplified procedure of the Auto-analysis candidates searching via OpenSearch. + +When a "To investigate" test item appears we search for the most similar test items in the analytical base. We create a query which searches by several fields, message similarity is a compulsory condition, other conditions boost the better results and they will have a higher score (boost conditions are similarity by launch name, error message, found exceptions, numbers in the logs and etc.). + +Then OpenSearch receives a log message and divides it into the terms (words) with a tokenizer and calculates the importance of each term (word). For that OpenSearch computes TF-IDF for each term (word) in the analyzed log. If the level of term importance is low, the OpenSearch ignores it. + +:::note + +*Term frequency (TF)* – how many time term (word) is used in an analyzed log; + +*Document frequency (DF)* – in how many documents this term (word) is used in Index; + +*TF-IDF (TF — term frequency, IDF — inverse document frequency)* — a statistical measure used to assess the importance of a term (word) in the context of a log that is part of an Index. The weight of a term (word) is proportional to the amount of use of this term (word) in the analyzed log and inversely proportional to the frequency of term (word) usage in Index. +::: + +The term (word) with the highest level of importance is the term (word) that is used very frequently in analyzed log and moderately in the Index. + +After all important terms are defined, OpenSearch calculates the level of equality between an analyzed log and each log in the Index. For each log from the Index is calculated a score. + +:::note + +How calculated a score: + +**score(q,d)** = + + coord(q,d) - + SUM ( + tf(t in d), + idf(t)², + t.getBoost(), + ) (t in q) +Where: +* score(q,d) is the relevance score of log “d” for query “q”. +* coord(q,d) is the coordination factor: the percent of words equality between analyzed log and particular log from the OpenSearch. +* The sum of the weights for each word “t” in the query “q” for log “d”. + * tf(t in d) is a frequency of the word in the analyzed log. + * idf(t) is the inverse frequency of the word in all saved logs in the Index. + * t.getBoost() is the boost that has been applied to the query. The higher priority for logs with: + * The same Launch name; + * The same UID; + * Manual analysis; + * Error message; + * The same numbers in the log; + * and etc. +::: + +The results are sorted by the score, in case the scores are the same, they are sorted by "start_time" field, which helps to boost the test items with closer to today dates. So the latest defect types will be higher in the returned by OpenSearch results. + +The OpenSearch returns to the service Analyzer 10 logs with the highest score for each log. Analyzer regroups all the results by a defect type and chooses the best representative for each defect type group, based on their scores. + +:::note +In the case the test item has several logs, the best representative for a defect type group will become the log with the highest score among all logs. +::: + +### How Auto-analysis makes decisions for candidates, returned by OpenSearch + +The OpenSearch returns to the service Analyzer 10 logs with the highest score for each query and all these candidates will be processed further by the ML model. Analyzer regroups all the results by a defect type and chooses the best representative for each defect type group, based on their scores. + +The ML model is an XGBoost model which features (about 30 features) represent different statistics about the test item, log message texts, launch info and etc, for example: +* the percent of selected test items with the following defect type +* max/min/mean scores for the following defect type +* cosine similarity between vectors, representing error message/stacktrace/the whole message/urls/paths and other text fields +* the probability for being of a specific defect type given by the Random Forest Classifier trained on Tf-Idf vectors + +The model gives a probability for each defect type group, and we choose the defect type group with the highest probability and the probability should be >= 50%. + +A defect comment and a link to BTS of the best representative from this group come to the analyzed item. + +The Auto-analysis model is retrained for the project and this information can be found in the section "How models are retrained" below. + +So this is how Auto-Analysis works and defines the most relevant defect type on the base of the previous investigations. We give an ability to our users to configure auto-analysis manually. + +## Auto-analysis Settings + +All settings and configurations of Analyzer and OpenSearch are situated on a separate tab on Project settings. + +1. Login into ReportPortal instance as Administrator or project member with PROJECT MANAGER role on the project; + +2. Come on Project Settings, choose Auto-Analysis section; + + + +In this section user can perform the following actions: + +1. Switch ON/OFF auto-analysis; + +2. Choose a base for analysis (All launches/ Launches with the same name); + +3. Configure OpenSearch settings; + +4. Remove/Generate OpenSearch index. + +### Switch ON/OFF automatic analysis + +To activate the "Auto-Analysis" functionality in a project, perform the following steps: + +1. Login ReportPortal instance as Administrator or project member with PROJECT MANAGER role on the project. + +2. Select ON in the "Auto-Analysis" selector on the Project settings / Auto-analysis section. + +3. Click the "Submit" button. Now "Auto-Analysis" will start as soon as any launch finishes. + +### Base for analysis + +You can choose which results from previous runs should be considered in Auto-Analysis for defining the failure reason. + +There are five options: + +* All previous launches +* Current and all previous launches with the same name +* All previous launches with the same name +* Only previous launch with the same name +* Only current launch + +If you choose **“All previous launches”** option, test results in the launch will have analyzed on the base of all runs before the current launch regardless of the launch name. + +If you choose **“Current and all previous launches with the same name”** option, test results in the launch will have analyzed on the base of current and all previous launches that have the same Launch name. + +If you choose **“All previous launches with the same name”** option, test results in the launch will have analyzed on the base of all launches before current launch that have the same Launch name. + +If you choose **“Only previous launch with the same name”** option, test results in the launch will have analyzed on the base of last run before current launch with the same name. + +If you choose **“Only current launch”** option, test results in the launch will have analyzed on the base of current launch. + +Imagine that the launches in the image below are part of your ReportPortal project, and currently, Smoke Launch 3 is being analyzed. + + + +So, launches that will have analyzed if you choose **“All previous launches”** option: Smoke Launch 1, Smoke Launch 2, Regression Launch 1, Regression Launch 2, Regression Launch 3. + +Launches that will have analyzed if you choose **“Current and all previous launches with the same name”** option: Smoke Launch 3, Smoke Launch 1, Smoke Launch 2. + +Launches that will have analyzed if you choose **“All previous launches with the same name”** option: Smoke Launch 1, Smoke Launch 2. + +Launches that will have analyzed if you choose **“Only previous launch with the same name”** option: Smoke Launch 2. + +Launches that will have analyzed if you choose **“Only current launch”** option: Smoke Launch 3. + +You can choose those configurations via Project configuration or from the list of actions on All launches view. + +### Defect assignment based on the longest retry + +ReportPortal allows users to control how the system prioritizes retries for analysis. By default, only the latest retry is considered, but users can also choose to analyze the longest retry — the one with the most passed nested steps before the first failure. + +If a test has retries and the test structure contains nested steps, the assignment of defects is determined by the **"Defect assignment based on the longest retry" checkbox** in the Auto-Analysis settings. + + + +The Analyzer applies defect types based on this configuration during manual, auto, or Immediate Auto-Analysis. + +:::note +**Permissions:**
+Admin, Project Manager can modify the setting.
+Customer, Member, Operator can view only. +::: + +By default, **the checkbox is not checked**. In this case: + +* When a test has retries, ReportPortal sends the logs of the latest retry to the Analyzer. + + + +When **the checkbox is checked**: + +* ReportPortal sends the logs of the longest retry (the retry with the maximum number of passed nested steps before the first failure) to the Analyzer. + + + +This ensures that defect assignment is based on the most representative retry, not just the most recent one. + + + +### Remove/Generate OpenSearch index + +There two possible actions that can be performed under Index in OpenSearch. + +You can **remove the Index from OpenSearch** and all logs with there defect type will be deleted. ML will be set to zero. All data with your investigations will be deleted from the OpenSearch. For creating a new one you could start to investigate test results manually or generate data based on previous results on the project once again. + +:::note +Your investigations in ReportPortal will not be changed. The operation concerns only OpenSearch base. +::: + + + +Another option, you can **generate the Index in OpenSearch**. In the case of generation, all data will be removed from OpenSearch and the new one will be generated based on all previous investigations on the project following current analysis settings. + +At the end of the process, you will receive a letter with info about the end of the process and with several items that will be appeared in OpenSearch. + +You can use index generation for several goals. For example, assume two hypothetical situations when index generation can be used: + +* by accident you remove the index, but now you want to restore it. + +:::note +The new base will be generated following logs and settings that are existing on the moment of operating. So index before removing and index after generation can be different. +::: +* you have changed a parameter **Number of log lines** for 3. But your existing index contains logs with value ALL. You can generate a new index, the old index will be removed, and a new one will be generated. Logs in the new index will contain 3 lines; + + + +We strongly do not recommend use auto-analysis until the new index will be generated. + +### Manual analysis + +Analysis can be launched manually. To start the analysis manually, perform the following steps: + +1. Navigate to the "Launches" page. + +2. Select the "Analysis" option from the context menu next to the selected launch name. + +3. Choose the scope of previous results on the base of which test items should be auto-analyzed. The default is the one that is chosen on the setting page, but you can change it manually. + +Via this menu you can choose 3 options unlike on Project Settings: + +* All launches; + +* Launches with the same name; + +* Only current launch; + +Options **All launches** and **Launches with the same name** are working the same as on project settings. +If you choose **Only current launch**, the system is analyzing the test items of chosen launch only on a base of already investigated date of this launch. + +4. Choose which items from launch should be analyzed: + +* Only To investigated; +* Items analyzed automatically (by AA); +* Items analyzed manually; + +In case the user chooses **Only To investigate items** - the system is analyzing only items with defect type "To investigate" in the chosen launch; + +In case the user chooses **Items analyzed automatically (by AA)** - the system is analyzing only items that have been already analyzed by auto-analysis. The results of the previous run of analysis will be set to zero and items will be analyzed once again. + +In case the user chooses **Items analyzed manually** - the system is analyzing only items that have been already analyzed by the user manually. The results of the previous run of analysis will be set to zero and items will be analyzed once again. + +In the case of multi-combination - the system is analyzing results dependence on chosen options. + +:::note +The Ignore flag is saved. If the item has flag **Ignore in AA**, it will not be re-analyzed. +::: + +:::tip +For option **Only current launch** you can not choose *Items analyzed automatically (by AA)* and *Items analyzed manually* simultaneously. +::: + +4. Click the "Analysis" button. Now "Auto-Analysis" will start. + +Any launches with an active analyzing process will be marked with the "Analysis" label. + +:::note +If a test has retries and the test structure contains nested steps, the assignment of defects is determined by the ["Defect assignment based on the longest retry" checkbox](/analysis/AutoAnalysisOfLaunches#defect-assignment-based-on-the-longest-retry) in the Auto-Analysis settings.
+* If the checkbox is not checked, ReportPortal sends the logs of the latest retry to the Analyzer.
+* If the checkbox is checked, ReportPortal sends the logs of the longest retry (the retry with the maximum number of passed nested steps before the first failure) to the Analyzer. +::: + + + +## Label AA + +When the test item is analyzed by the ReportPortal, a label "AA" is set on the test item on a Step Level. You can filter results with a parameter “Analysed by RP (AA)” + + + +## Ignore in Auto-Analysis + +If you don't want to save some test items in OpenSearch, you can "Ignore in Auto-Analysis". For that you can choose this action in “Make decision” modal: + + + +Or from the action list for several test items: + + + +When you choose “Ignore in AA”, logs of the chosen item are removed from the OpenSearch. diff --git a/versioned_docs/version-26.2-organizations/analysis/HowModelsAreRetrained.md b/versioned_docs/version-26.2-organizations/analysis/HowModelsAreRetrained.md new file mode 100644 index 0000000000..2bc62510fb --- /dev/null +++ b/versioned_docs/version-26.2-organizations/analysis/HowModelsAreRetrained.md @@ -0,0 +1,38 @@ +--- +sidebar_position: 5 +sidebar_label: How models are retrained +description: Learn when Auto-Analysis and ML models retrain, how data is used, and what thresholds apply to keep ReportPortal test failure analysis accurate and project-specific. +--- + +# How models are retrained + +In the Auto-analysis and Machine Learning (ML) suggestions processes, several models contribute: + +* Auto-analysis XGBoost model, which provides the likelihood of a test item being of a specific type based on the most similar test item in the history of that defect type. +* ML suggestions XGBoost model, which offers the probability for a test item to resemble the test item from the history. +* Error message language model on Tf-Idf vectors (Random Forest Classifier), which delivers a probability for the error message to be of a specific defect type or its subtype based on the words in the message. The probability from this model serves as a feature in the main boosting algorithm. + +In the beginning, you have global models at your disposal. These models, trained on six projects, have demonstrated average good accuracy. To develop a more powerful and personalized test failure analysis, you should retrain the models on the data from your project. At the start of the project, you have global models available. They were trained on six projects and validated to provide good average accuracy. To have a more powerful and personalized test failure analysis, the models should be retrained on the data from the project. + +:::note +If a global model performs better on your project data, the retrained model will not be saved, because we only keep custom models that outperform the global model on your data. +::: + +Triggering information and retrained models are stored in Minio (or a filesystem), as set up in the Analyzer service settings. + +Conditions for triggering retraining for **Error Message Random Forest Classifier**: +* Each time the test item defect type is changed to another issue type (except "To Investigate"), we update the triggering info. This stores the quantity of test items with defect types and the quantity of test items with defect types since the last training. This information is stored in the file "defect_type_trigger_info" in Minio. +* Retraining is triggered when over 100 labelled items are detected and 100 labelled test items have been identified since the last training. If validation data metrics are better than metrics for the global model on the same data points, a custom "defect_type" model is saved in Minio. This will then be utilized in the auto-analysis and suggestions functionality for enhancing test automation results dashboard. + + +Conditions for triggering retraining of **Auto-analysis** and **Suggestion XGBoost models**: +* We collect training data from several sources: + * When a suggestion is selected (the chosen test item will be a positive example, others will be negative). + * When you don't select any suggestion and manually edit the test item (all suggestions become negative examples). + * Auto-analysis identifies a similar test item; this is considered a positive example unless the defect type is manually changed by the user. + +When either a suggestion analysis runs or a defect type change occurs, we update the trigger info for both models. This information is stored in "auto_analysis_trigger_info" and "suggestion_trigger_info" files in Minio. + +Retraining is triggered when: +* For the auto-analysis model: when over 300 labelled items and 100 labelled test items have been identified since the last training. If validation data metrics are improved, a custom "auto_analysis" model is saved in Minio and utilized in the auto-analysis function. +* For the suggestion model: when more than 100 labelled items and 50 labelled items have been identified since the last training. If validation data metrics are improved, a custom "suggestion" model is saved in Minio and used in the suggestions function. diff --git a/versioned_docs/version-26.2-organizations/analysis/ImmediateAutoAnalysis.mdx b/versioned_docs/version-26.2-organizations/analysis/ImmediateAutoAnalysis.mdx new file mode 100644 index 0000000000..4fe3912af3 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/analysis/ImmediateAutoAnalysis.mdx @@ -0,0 +1,49 @@ +--- +sidebar_position: 2 +sidebar_label: Immediate Auto-Analysis +description: Kick off Auto-Analysis before a launch finishes to flag failures sooner. Use attributes to accelerate test failure analytics and shorten feedback loops. +--- + +# Immediate Auto-Analysis + +In the realm of software development, quick issue detection is a critical aspect that directly impacts the quality of your products. Understanding modern trends, ReportPortal is ready to introduce a new feature – Immediate Auto-Analysis (Immediate AA). Starting from version 24.1, Auto-Analysis can be started via API after certain test cases finish before whole Launch is done thereby accelerating the test failure triage. + +With Immediate AA, you no longer need to wait for the Launch finish before starting the analysis of failed tests. For instance, in your Launch there are 2000 tests, you can now see that 16 tests have already failed, and Immediate AA promptly marked these issues for you on the fly. + +To initiate Immediate AA, you need to specify the following parameters in the **attributes** section **for each step on its start or finish** when reporting: + + + +If the value for **“immediateAutoAnalysis”** is set to **“false”**, Immediate AA will not work. + +If the “immediateAutoAnalysis” attribute is not specified, Immediate AA will not work either. + +:::important +The “immediateAutoAnalysis” attribute can only be applied to a step level. It is essential to send the log, as the Analyzer operates based on the log. +::: + +Immediate AA will work in any case if this attribute is present, regardless Auto-Analysis is enabled or disabled in Project Settings. In case when some items have been already analyzed by Immediate AA, Auto-Analysis and Manual Analysis on Launch finish will skip previously analyzed items. + +Immediate AA, like Auto-Analysis on Launch finish, is based on the following options: + +* All previous launches +* Current and all previous launches with the same name +* All previous launches with the same name +* Only previous launch with the same name +* Only current launch + +You can select the required option in the Project settings for Auto-Analysis. + +:::note +If a test has retries and the test structure contains nested steps, the assignment of defects is determined by the ["Defect assignment based on the longest retry" checkbox](/analysis/AutoAnalysisOfLaunches#defect-assignment-based-on-the-longest-retry) in the Auto-Analysis settings.
+* If the checkbox is not checked, ReportPortal sends the logs of the latest retry to the Analyzer.
+* If the checkbox is checked, ReportPortal sends the logs of the longest retry (the retry with the maximum number of passed nested steps before the first failure) to the Analyzer. +::: + +It is important to highlight that Immediate AA works only for defect types from “To Investigate” group. If you reported a Launch with failed step, and this step has another defect type (“Product Bug”, etc.), then step will not be analyzed by Immediate AA. + +This way, Immediate AA allows to detect issues early and enhances testing performance. + + + + diff --git a/versioned_docs/version-26.2-organizations/analysis/ImmediatePatternAnalysis.mdx b/versioned_docs/version-26.2-organizations/analysis/ImmediatePatternAnalysis.mdx new file mode 100644 index 0000000000..1238eb7977 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/analysis/ImmediatePatternAnalysis.mdx @@ -0,0 +1,47 @@ +--- +sidebar_position: 8 +sidebar_label: Immediate Pattern Analysis +description: Start Pattern Analysis before a launch ends to catch issues early. Trigger via attributes and speed defect triage on large runs in ReportPortal. +--- + +# Immediate Pattern Analysis + +In a modern software world, quick issue detection becomes necessary. ReportPortal as a progressive test automation dashboard, follows today’s faster development methods. Starting from version 24.1, Pattern Analysis can be started via API after certain test cases finish before whole Launch is done. Immediate Pattern Analysis (PA) significantly speeds up failure triage. + +Previously, Pattern Analysis can’t be started before Launch finish. Since some users may have their launches last up to 12 hours, or even all day, they couldn’t start test failure analysis for a long time. This was slowing down issue spotting. With Immediate Pattern Analysis, you can begin looking at your test results much faster, which is especially valuable for large Launches. + +To initiate Immediate PA, fulfill the following conditions: + +1. PA rule should be created. + +2. PA rule should be enabled. + +3. When reporting, you need to specify the following parameters in the **attributes** section **for each step on its start or finish**: + + + +If the value for **“immediatePatternAnalysis”** is set to **“false”**, Immediate PA will not work. + +If the “immediatePatternAnalysis” attribute is not specified, Immediate PA will not work either. + +The “system” parameter determines whether the “immediatePatternAnalysis” attribute will be displayed in the UI. If **“system”** is set to **“true”**, the “immediatePatternAnalysis” attribute will not be displayed on the UI, and if **“system”** is set to **“false”**, it will be. + + + +You can provide this attribute at the start of the step or at the finish. You can also set one value at the start and another at the finish, in which case the last value will take. + +:::note +Immediate PA will work in any case if this attribute is present, regardless Auto Pattern Analysis is enabled or disabled. In this case, Auto Pattern Analysis and Manual Pattern Analysis on Launch finish will skip previously analyzed items by Immediate Pattern Analysis. +::: + +:::important +It would be better to use STRING rule instead of REGEX rule in all possible cases to speed up the Pattern Analysis processing in the database. As a result, you can get your analysis completed faster using the STRING patterns rather than REGEX and reduce the database workload. +::: + +Apart from the timing of execution, Immediate PA differs from PA on Launch finish in that Immediate PA works for any issue type, whereas PA on Launch finish works for "To Investigate" items only. This means that you can report certain items, such as Automation Bug or System Issue, and specify parameters for launching Immediate PA. + + + +Overall, Immediate PA helps to catch issues early and improves testing quality. + + diff --git a/versioned_docs/version-26.2-organizations/analysis/MLSuggestions.md b/versioned_docs/version-26.2-organizations/analysis/MLSuggestions.md new file mode 100644 index 0000000000..a4513596a0 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/analysis/MLSuggestions.md @@ -0,0 +1,54 @@ +--- +sidebar_position: 4 +sidebar_label: ML Suggestions +description: Get AI-powered suggestions for similar failures during triage. Reuse defect types, comments, and BTS links to speed analysis in your test automation dashboard. +--- + +# ML Suggestions + +ML suggestions functionality is based on previously analyzed results (either manually or via Auto-analysis feature) using Machine Learning. The functionality is provided by the Analyzer service in combination with OpenSearch. + +This analysis hints what are the most similar analyzed items to the current test item. You can interact with this functionality in several ways: +* Choose one of the suggested items if you see that the reason for the current test item is similar to the suggested one. When you choose the item and apply changes to the current item, the following test item characteristics will be copied from the chosen test item: + * a defect type; + * a link to BTS _(in case if it exists)_; + * comment _(in case if it exists)_; + +* If you see no suitable suggested test item for the current test item, just do not select any of them. + +## How the ML suggestions functionality is working + +ML Suggestions searches for similar previously analyzed items to the current test item, so it requires an analytical base saved in OpenSearch. ML suggestions takes into account all user-investigated, auto-analyzed items or items chosen from ML suggestions. While the analytical base is growing ML suggestions functionality will have more examples to search by and suggest you the best options. + +ML suggestions analysis is run everytime you enter "Make decision" editor. ML suggestions are run for all test items no matter what defect type they have now. This functionality is processing only test items with logs (log level >= 40000). + +The request for the suggestions part looks like this: +* testItemId; +* uniqueId; +* testCaseHash; +* launchId; +* launchName; +* project; +* analyzerConfig; +* logs = List of log objects (logId, logLevel, message) + +The Analyzer preprocesses log messages from the request for analysis: extracts error message, stacktrace, numbers, exceptions, urls, paths, parameters and other parts from text to search for the most similar items by these parts in the analytical base. We make several requests to the OpenSearch to find similar test items by all the error logs. + +:::note +When a test item has several error logs, we will use the log with the highest score as a representative of this test item. +::: + +The OpenSearch returns to the service Analyzer 10 logs with the highest score for each query and all these candidates will be processed further by the ML model. The ML model is an XGBoost model which features (about 40 features) represent different statistics about the test item, log message texts, launch info and etc, for example: +* the percent of selected test items with the following defect type +* max/min/mean scores for the following defect type +* cosine similarity between vectors, representing error message/stacktrace/the whole message/urls/paths and other text fields +* the probability for being of a specific defect type given by the Random Forest Classifier trained on Tf-Idf vectors + +The model gives a probability for each candidate, we filter out test items with the probability less or equal 40%. We sort the test items by this probability, after that we deduplicate test items inside this ranked list. If two test items are similar with >= 98% by their messages, then we will leave the test item with the highest probability. After deduplication we take maximimum 5 items with the highest score to show in the ML Suggestions section. + +ML suggestions section contains at maximum 5 suggested items, they are shown together with the scores given by the model and we divide them into 3 groups: +* the group "SAME", test items with the score = 100% +* the group "HIGH", test items with the score in the range [70% - 99.9%] +* the group "LOW", test items with the score in the range [40% - 69.9%] + + diff --git a/versioned_docs/version-26.2-organizations/analysis/ManualAnalysis.mdx b/versioned_docs/version-26.2-organizations/analysis/ManualAnalysis.mdx new file mode 100644 index 0000000000..6631245e9b --- /dev/null +++ b/versioned_docs/version-26.2-organizations/analysis/ManualAnalysis.mdx @@ -0,0 +1,114 @@ +--- +sidebar_position: 6 +sidebar_label: Manual Analysis +description: Use the Make decision modal to assign defect types, apply ML suggestions, and bulk update items. Streamline bug triage for a faster automation test report. +--- + +# Manual Analysis + +Manual Analysis is presented on our test report dashboard by “Make decision” modal. + +## “Make decision” modal feature highlights + +* View and analyze execution context: + * See step name and current defect type + * Expand logs to understand failure reasons + * Review links to bugs, comments, or special labels (AA, PA, Ignore AA) + +* Select defect type and comment manually: + * Choose defect from “Manual selection” + * Add a comment + * Apply changes to one or multiple test items + +* Use Analyzer suggestions: + * Pick similar failures based on logs (marked with red asterisk) + * Automatically apply the same defect type, comment, and linked issue + * Expand to apply to other items using “Apply for” section + +* Review test history: + * Check how this step was marked in previous runs + * Reapply defect type, comment, and BTS link + * Extend to other similar items + +* Select other test items for bulk editing: + * Use “Apply for” section to include more items + * See preview in “Results will be applied for” section + * Click “Apply” to confirm changes + +* Perform bulk updates efficiently: + * Select multiple test items + * Apply defect type, comment and BTS link in one action + +## “Make decision” modal redesign + +Redesign of the “Make decision” modal was implemented in version 5.7. This feature helps to sort out auto tests and decide: What is the problem? How can it be marked? Is it required to post issue or link issue? It became easier to use this functionality after the redesign. + + + +The “Make decision” modal can be opened in three ways: + +1) from the Step level + + + +2) via Actions + + + +3) from the Log level + + + +## “Execution to change” section + +**“Execution to change”** section is displayed at the top left of the “Make decision” modal. It includes Step name, current defect type. Also it can have a log, a comment, a link to a Bug Tracking System (BTS), a label (AA, PA, Ignore AA) if exist. You can expand logs to understand why this step was failed. + + + +## How to set a defect type and type a comment + +**“Select defect”** section is displayed at the top right of the “Make decision” modal. It includes “Manual selection”, “Analyzer suggestions”, “History of the test”. + + + +You can **select a defect type and type a comment manually**. Selected defect type and added comment will be applied to the current item (there is also a possibility to apply them to other items – please, have a look at “Apply for” section). + + + +## How to use “Analyzer suggestions” + +You also can select any step from the **“Analyzer suggestions”** with a similar log. Similar log is marked with a red asterisk. Then the defect type, the comment and linked BTS ticket (if exist) of the suggested step will be applied to the current item (there is also a possibility to apply them to other items – please, have a look at “Apply for” section). + + + +## “History of the test” section + +You can see the **“History of the test”** – which defect type this step had in previous runs. You can select any item from the “History of the test”. Then the defect type, the comment and linked BTS ticket (if exist) of the suggested step will be applied to the current item (there is also a possibility to apply them to other items – please, have a look at “Apply for” section). + + + +## How to select other steps for analysis + +The “Make decision” modal works not only with the current step. This feature allows to select other steps with “To Investigate” defect type which can be changed as well. For that, please, expand the **“Apply for”** section and select the needed option. + + + +The **“Results will be applied for”** message is displayed at the bottom after selection. This section was added in version 5.7. + + + +Now you can view all changes before applying. Expand the “Results will be applied for” section to see information about changes. You should click **“Apply”** button to apply selected changes. + + + +## Bulk update + +There is also a possibility for Bulk update, when the changes are applied to all selected test items. + + + + + + + +As you can see, “Make decision” modal is a time-saving tool for engineers. diff --git a/versioned_docs/version-26.2-organizations/analysis/PatternAnalysis.mdx b/versioned_docs/version-26.2-organizations/analysis/PatternAnalysis.mdx new file mode 100644 index 0000000000..f0c8b200a9 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/analysis/PatternAnalysis.mdx @@ -0,0 +1,98 @@ +--- +sidebar_position: 7 +sidebar_label: Pattern Analysis +description: Define string or regex rules to detect known error patterns. Speed up investigations and track frequent causes with the Most Popular Pattern widget. +--- + +# Pattern Analysis + +Pattern Analysis is a feature that helps you to speed up test failure analysis by finding common patterns in error logs. + +## How to run Pattern Analysis + +You can run Pattern Analysis automatically or manually. + +To run Pattern Analysis **automatically**: + +1. Go to the Project Settings. + +2. Open Pattern-Analysis tab. + +3. Check the "Auto Pattern-Analysis" checkbox. + +4. Create rule. + +5. Run a launch. + +6. After launch finish, automatic Pattern Analysis will occur. + + + +:::note +Automatic Pattern Analysis is activated by default. +::: + +In case automatic Pattern Analysis is turned off, you can run **manually** from the menu next to a particular launch: + + + +If we have Auto-Analysis enabled together with Pattern Analysis, Pattern Analysis starts before Auto-Analysis: in this case, ReportPortal first identifies known patterns, and then the Analyzer assigns defect types and links issues in the BTS, if available. +As a result, when both Auto-Analysis and Auto Pattern Analysis occur, a test item will have two labels: AA and PA. + + + +## How to create rules for Pattern Analysis + +To create rule: + +1. Go to the Project Settings. +2. Open Pattern Analysis tab. +3. Click ‘Create Pattern’ button. +4. Fill in the form. +5. Create ‘Create’ button. + + + + + +## Types of Pattern Analysis rules + +There are two types of Pattern Analysis rules: + +1. String – any problem phrase. + + + + + +2. Regex – regular expression. + + + + + +:::note +It would be better to use STRING rule instead of REGEX rule in all possible cases to speed up the Pattern Analysis processing in the database. As a result, you can get your analysis completed faster using the STRING patterns rather than REGEX and reduce the database workload. +::: + +## Use case 1 + +**Problem:**
+A user is aware of several common reasons why test cases fail. During a test run, many tests have failed, and the user needs to check the logs to identify the reasons behind the failures. + +**Solution:**
+Create pattern rules for all common failure reasons, which include specific problem phrases (e.g., `Expected status code <404> but was <500>` or `Null response`) or use Regex queries (e.g., `java:[0-9]*`). Enable pattern analysis and launch a test run. This way, the ReportPortal system can identify all failed items that match known patterns in the error logs and label them with the corresponding pattern name. To find all items that failed for the same reason, apply a filter by ‘Pattern Name’ in the Step view. Additionally, add a ‘Most Popular Pattern’ widget to track the top 20 most frequent reasons for test failures in the build. + + + + + +## Use case 2 + +**Problem:**
+The test run has finished, and the user notices that more than three items have failed for the same reason. The user wants to find all such items. + +**Solution:**
+Create a new pattern rule in the Project Settings. Manually launch a pattern analysis for a specific test run. Use the ‘Pattern Name’ filter in the Step view to find all items that failed for the same reason. + + diff --git a/versioned_docs/version-26.2-organizations/analysis/SearchForTheSimilarToInvestigateItems.mdx b/versioned_docs/version-26.2-organizations/analysis/SearchForTheSimilarToInvestigateItems.mdx new file mode 100644 index 0000000000..5dcdab9a53 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/analysis/SearchForTheSimilarToInvestigateItems.mdx @@ -0,0 +1,44 @@ +--- +sidebar_position: 2 +sidebar_label: Search for the similar "To investigate" items +description: Find similar “To investigate” items by logs across launches to bulk apply decisions. Accelerate defect triage and simplify your test reporting tool workflow. +--- + +# Search for the similar "To investigate" items + +Let's consider below an example of ML-driven failure triage in ReportPortal. + +**Use case:** + +**Situation:** Analyzer has completed its work and marked known issues with defect types. + +But there are a lot of failures with a similar unknown reason in the run. All such items have "To investigate" defect type. + +**Problem:** A user should check and analyze all failed items. + +**Solution:** + +A user is on All launches, he clicks on "To investigate" and opens a list with items. When a user clicks on a pencil next to a defect type, the system opens the ["Make decision" modal](/analysis/ManualAnalysis#make-decision-modal-redesign). In this modal a user can see all items with "To investigate" defect type and the same failure reason. + + + +There are 3 options for search the similar "To investigate" items on the Step level: + +- Current item only +- Similar "To investigate" in the launch & current item +- Similar "To investigate" in 10 launches & current item + +There are 4 options for search the similar "To investigate" items on the Log level: + +- Current item only +- Similar "To investigate" in the launch & current item +- Similar "To investigate" in 10 launches & current item +- "To investigate" from the history line & current item + +If launches are filtered by filter on All Launches page, then addition option ```Similar "To investigate" in the Filter & current item``` appears on the Step and Log levels. + + + +A user can select all identical failures and perform the bulk operation for them. + + diff --git a/versioned_docs/version-26.2-organizations/analysis/UniqueErrorAnalysis.mdx b/versioned_docs/version-26.2-organizations/analysis/UniqueErrorAnalysis.mdx new file mode 100644 index 0000000000..426f5b4faa --- /dev/null +++ b/versioned_docs/version-26.2-organizations/analysis/UniqueErrorAnalysis.mdx @@ -0,0 +1,129 @@ +--- +sidebar_position: 8 +sidebar_label: Unique Error Analysis +description: Group identical errors to speed triage. See unique failures, match tests by error, and apply ML suggestions for faster, clearer test failure analysis. +--- + +# Unique Error Analysis + +You can analyze test failures from two perspectives: quantitative (How many tests have failed?) and qualitative (Why did they fail?). For example, if 1,000 test cases fail, then: + +1. They could all fail for the same reason. + +2. They could fail for various reasons. + +While failed tests allow you to understand what is broken, Unique Error analysis functionality implemented in version 5.7 will show you why it broke. Moreover, the system automatically groups tests by the same errors: when you expand some error, you see a list of tests where it occurred. + +:::important +The main advantage of this solution is that a list of all unique errors of the launch is presented in one place. +::: + +Thanks to the Unique Error analysis functionality, ReportPortal got the following benefits: + +1. A list of unique errors for the launch, with grouping. +2. Easier test results analysis. +3. Machine learning (ML) suggestions for groups of tests. + + +## How to run Unique Error analysis + +You can run Unique Error analysis automatically or manually. + +To run Unique Error analysis **automatically**: + +1. Go to the Project Settings. +2. Open Analyzer tab. +3. Open ‘Unique Errors’ settings. +4. Check the "Auto-Unique Error" checkbox. + + + +5. Run a launch. +6. After launch finish, open any item level in the launch. +7. Click ‘Unique errors’ tab. + + + + + + + +:::note +Automatic Unique Error analysis is activated by default. +::: + +In case automatic Unique Error analysis is turned off, there are two ways to run Unique Error analysis **manually**: + +1. Run Unique error analysis manually from any item level. + + + +2. Run Unique Error analysis from the menu next to a particular launch. + + + +After Unique Error analysis is finished, open any item level in the launch and click the ‘Unique errors’ tab. + +## How to see Unique Errors + +Finally, you can see the list of Unique Errors. + +There you can see a list of unique logs with number of failed tests related to them. The number of matches found per Unique Errors is displayed in the column ‘MATCHED TESTS’. By default, Unique Errors are displayed from the one with the highest number of failed tests. By clicking on the column name, the sorting is updated each time. + + + +You can expand unique error to check what tests belong to the same one and it could give you a hint during error analysis and defects assigning. The groups are formed based on unique error logs, some small error logs can be merged and displayed as one error. + + + +## How to get ML suggestions for the group of tests + +In addition, there is a possibility to get ML suggestions for the group of tests. It speeds up the process of analyzing failed tests and assigning defect types by several times. + +For that, + +1. Open any item level in the launch. +2. Click ‘Unique Errors’ tab. +3. Expand a cluster with unique error. +4. Select some failed tests. + + + +5. Open ‘Make decision’ modal. +6. Check Analyzer suggestions. + + + + + +## 'Include/exclude numbers' settings + +There are 2 settings to decide whether numbers in error logs have significant value for analysis or not: + +1. Include numbers to analyzed logs. + +2. Exclude numbers from analyzed logs. + + + +Let’s consider some examples with the same Unique Errors but with different include/exclude numbers settings. + +We have 2 errors with identical text, but the difference is numeric value in the first error. + +1. An example with 'Include numbers to analyzed logs' setting. Error with numeric value is displayed: + + + +2. An example with 'Exclude numbers from analyzed logs' setting. As you can see, error with numeric value is not displayed: + + + + + +If there is no Quality Gate for the launch with the 'New Errors' rule, the 'ALL UNIQUE ERRORS' dropdown is visible but disabled. A tooltip appears on hover for the disabled state: 'No Quality Gate with 'New Error' rule for the launch.' + + + +If Quality Gate plugin is not installed or disabled, the 'ALL UNIQUE ERRORS' dropdown is invisible. + + diff --git a/versioned_docs/version-26.2-organizations/analysis/_category_.json b/versioned_docs/version-26.2-organizations/analysis/_category_.json new file mode 100644 index 0000000000..4ac69eac10 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/analysis/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Analysis", + "position": "13", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.2-organizations/analysis/img/AnalyzeLaunches.png b/versioned_docs/version-26.2-organizations/analysis/img/AnalyzeLaunches.png new file mode 100644 index 0000000000..725e67946b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/AnalyzeLaunches.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/BaseForAnalysis.jpg b/versioned_docs/version-26.2-organizations/analysis/img/BaseForAnalysis.jpg new file mode 100644 index 0000000000..5ce8a37994 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/BaseForAnalysis.jpg differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/IgnoreInAutoAnalysis1.png b/versioned_docs/version-26.2-organizations/analysis/img/IgnoreInAutoAnalysis1.png new file mode 100644 index 0000000000..0eed39b6fe Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/IgnoreInAutoAnalysis1.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/IgnoreInAutoAnalysis2.png b/versioned_docs/version-26.2-organizations/analysis/img/IgnoreInAutoAnalysis2.png new file mode 100644 index 0000000000..982e6b1dd7 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/IgnoreInAutoAnalysis2.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/IgnoreLabel.png b/versioned_docs/version-26.2-organizations/analysis/img/IgnoreLabel.png new file mode 100644 index 0000000000..982d96978c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/IgnoreLabel.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/ImmediateAA.png b/versioned_docs/version-26.2-organizations/analysis/img/ImmediateAA.png new file mode 100644 index 0000000000..4e632304ff Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/ImmediateAA.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/ImmediatePA1.png b/versioned_docs/version-26.2-organizations/analysis/img/ImmediatePA1.png new file mode 100644 index 0000000000..389e537ac1 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/ImmediatePA1.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/ImmediatePA2.png b/versioned_docs/version-26.2-organizations/analysis/img/ImmediatePA2.png new file mode 100644 index 0000000000..5c9cd002d2 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/ImmediatePA2.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/ImmediatePA3.png b/versioned_docs/version-26.2-organizations/analysis/img/ImmediatePA3.png new file mode 100644 index 0000000000..d2520a637f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/ImmediatePA3.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/LabelAA.png b/versioned_docs/version-26.2-organizations/analysis/img/LabelAA.png new file mode 100644 index 0000000000..1aa0fab68f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/LabelAA.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/LongestRetrySetting1.png b/versioned_docs/version-26.2-organizations/analysis/img/LongestRetrySetting1.png new file mode 100644 index 0000000000..3b73ec91a6 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/LongestRetrySetting1.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/LongestRetrySetting2.png b/versioned_docs/version-26.2-organizations/analysis/img/LongestRetrySetting2.png new file mode 100644 index 0000000000..e9205e06ce Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/LongestRetrySetting2.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision1.png b/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision1.png new file mode 100644 index 0000000000..2053839299 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision1.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision10.png b/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision10.png new file mode 100644 index 0000000000..b81fd6c0a3 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision10.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision11.png b/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision11.png new file mode 100644 index 0000000000..dcf4e9ca8b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision11.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision12.png b/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision12.png new file mode 100644 index 0000000000..359ca13d6d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision12.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision13.png b/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision13.png new file mode 100644 index 0000000000..91d690dda7 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision13.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision2.png b/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision2.png new file mode 100644 index 0000000000..59d02ccd5a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision2.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision3.png b/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision3.png new file mode 100644 index 0000000000..e9a76d7949 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision3.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision4.png b/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision4.png new file mode 100644 index 0000000000..0f9f24dbee Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision4.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision5.png b/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision5.png new file mode 100644 index 0000000000..1fb9b67d42 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision5.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision6.png b/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision6.png new file mode 100644 index 0000000000..b005590e30 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision6.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision7.png b/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision7.png new file mode 100644 index 0000000000..48cc9091db Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision7.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision8.png b/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision8.png new file mode 100644 index 0000000000..cc1880354b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision8.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision9.png b/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision9.png new file mode 100644 index 0000000000..50a401d999 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/ManualAnalysis/MakeDecision9.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis1.png b/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis1.png new file mode 100644 index 0000000000..347010471c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis1.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis10.png b/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis10.png new file mode 100644 index 0000000000..50330ffc0c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis10.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis11.png b/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis11.png new file mode 100644 index 0000000000..df0fb4f61e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis11.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis2.png b/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis2.png new file mode 100644 index 0000000000..8907cc375e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis2.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis3.png b/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis3.png new file mode 100644 index 0000000000..7047e9bd43 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis3.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis4.png b/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis4.png new file mode 100644 index 0000000000..06ea7e597d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis4.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis5.png b/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis5.png new file mode 100644 index 0000000000..cd71e4773f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis5.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis6.png b/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis6.png new file mode 100644 index 0000000000..cfe3511beb Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis6.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis7.png b/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis7.png new file mode 100644 index 0000000000..7be7d93a9d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis7.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis8.png b/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis8.png new file mode 100644 index 0000000000..f6d49107d1 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis8.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis9.png b/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis9.png new file mode 100644 index 0000000000..fe9c39b7db Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/PatternAnalysis/PatternAnalysis9.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/RetryLogAnalysis1.png b/versioned_docs/version-26.2-organizations/analysis/img/RetryLogAnalysis1.png new file mode 100644 index 0000000000..4cbace293e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/RetryLogAnalysis1.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/RetryLogAnalysis2.png b/versioned_docs/version-26.2-organizations/analysis/img/RetryLogAnalysis2.png new file mode 100644 index 0000000000..c9abb45a62 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/RetryLogAnalysis2.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/SearchSimilarToInvestigate1.png b/versioned_docs/version-26.2-organizations/analysis/img/SearchSimilarToInvestigate1.png new file mode 100644 index 0000000000..50a401d999 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/SearchSimilarToInvestigate1.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/SearchSimilarToInvestigate2.png b/versioned_docs/version-26.2-organizations/analysis/img/SearchSimilarToInvestigate2.png new file mode 100644 index 0000000000..fe881bdb86 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/SearchSimilarToInvestigate2.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError1.png b/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError1.png new file mode 100644 index 0000000000..dc41421f7a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError1.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError10.png b/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError10.png new file mode 100644 index 0000000000..9620a95e4e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError10.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError11.png b/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError11.png new file mode 100644 index 0000000000..048ba73199 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError11.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError12.png b/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError12.png new file mode 100644 index 0000000000..eb2162920c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError12.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError13.png b/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError13.png new file mode 100644 index 0000000000..9357473a6b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError13.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError14.png b/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError14.png new file mode 100644 index 0000000000..e2127c3e34 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError14.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError15.png b/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError15.png new file mode 100644 index 0000000000..d3292021e7 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError15.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError16.png b/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError16.png new file mode 100644 index 0000000000..6875e180ac Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError16.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError2.png b/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError2.png new file mode 100644 index 0000000000..7645d61ece Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError2.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError3.png b/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError3.png new file mode 100644 index 0000000000..21c0080091 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError3.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError4.png b/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError4.png new file mode 100644 index 0000000000..19916313e3 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError4.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError5.png b/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError5.png new file mode 100644 index 0000000000..c27d737904 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError5.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError6.png b/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError6.png new file mode 100644 index 0000000000..431c6527a6 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError6.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError7.png b/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError7.png new file mode 100644 index 0000000000..184e8a923e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError7.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError8.png b/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError8.png new file mode 100644 index 0000000000..53be3db008 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError8.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError9.png b/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError9.png new file mode 100644 index 0000000000..51280d444e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/analysis/img/UniqueErrorAnalysis/UniqueError9.png differ diff --git a/versioned_docs/version-26.2-organizations/analysis/index.md b/versioned_docs/version-26.2-organizations/analysis/index.md new file mode 100644 index 0000000000..983e3907e1 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/analysis/index.md @@ -0,0 +1,20 @@ +--- +title: Analysis +description: Deep into ReportPortal's advanced analysis methods for robust test automation metrics & efficient defect triaging. +--- + +# Analysis + +The **Analysis** section in ReportPortal offers detailed documentation on the powerful features available to help you conduct faster and more efficient test automation results analysis. Learn how to effectively investigate failures, monitor trends, and improve the overall quality, reliability, and performance of your test automation processes using ReportPortal. + +ReportPortal provides multiple methods for analyzing test results, including **automatic, manual, and immediate analysis** options. For instance, features like Pattern Analysis, Unique Error Analysis, and Auto-Analysis are designed to run automatically by default, offering real-time insights into test failures without manual intervention. However, these features can also be triggered manually in case automatic analysis is turned off. + +The automated analysis capabilities in ReportPortal are particularly useful for reducing the time spent on defect triage. By automatically categorizing and analyzing test results, our test results reporting service helps you quickly identify recurring issues and potential areas for improvement. This not only saves time but also enhances the accuracy of defect detection. + +With Immediate Auto-Analysis and Immediate Pattern Analysis, you can start analyzing failed tests right away, without having to wait for the launch to be completed. + +By leveraging these advanced analysis features, ReportPortal helps you optimize your test processes, enhance defect management, and maintain higher standards of software quality. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.2-organizations/case-studies/ImprovingTestAutomationStability.mdx b/versioned_docs/version-26.2-organizations/case-studies/ImprovingTestAutomationStability.mdx new file mode 100644 index 0000000000..9f48969462 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/case-studies/ImprovingTestAutomationStability.mdx @@ -0,0 +1,32 @@ +--- +sidebar_position: 4 +sidebar_label: Improving test automation stability +description: Learn how ReportPortal improve test automation stability, reduced failures, and cut analysis time with better logging, triage, and dashboards. +--- + +# Improving test automation stability + +**Challenges** + +- Complex, manual test runs +- Low stability of regression for unclear reasons (60% passing rate) +- Unclear reporting for non-technical stakeholders, leading to the lack of transparency in test automation results and progress +- Test automation feedback is unclear, unreliable, incomprehensible, and insufficient to decide to push the app to production + +**Highlights** + +By integrating the test framework with ReportPortal.io, EPAM's team provided: + +- Simplified test runs +- Key info for the manual root cause analysis of test failures, such as logs, screenshots, attachments +- A possibility to triage failed items (AI-based and manual) +- Clear reporting for non-technical stakeholders + +**Results** + +- Improved automation stability from 60% to 77% in one sprint +- Discovered that most failures were caused by environment issues and reduced the number of such failures from 20% to 2% +- Reduced test automation results analysis effort by 45% +- Provided clear and comprehensive test automation reporting dashboard: number of test cases, regression passing rate, reasons for failures, product status + + diff --git a/versioned_docs/version-26.2-organizations/case-studies/IncreasingTestAutomationStabilityAndVisibility.mdx b/versioned_docs/version-26.2-organizations/case-studies/IncreasingTestAutomationStabilityAndVisibility.mdx new file mode 100644 index 0000000000..60240165e4 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/case-studies/IncreasingTestAutomationStabilityAndVisibility.mdx @@ -0,0 +1,36 @@ +--- +sidebar_position: 2 +sidebar_label: Increasing test automation stability and visibility +description: Discover how ReportPortal boosted test stability from 25% to 95%, cut analysis effort by 90%, and improved visibility for smarter release decisions. +--- + +# Increasing test automation stability and visibility + +**Challenges** + +- 2,000 unique tests had low stability (25% passing rate) +- Complex and inconvenient test results reporting +- QA team didn’t have capacity for test failure analysis +- Automation results were ignored by decision makers: no analysis of the causes of failed tests, no trust in the automation testing process +- Lack of visibility into failed tests and failure causes +- Absence of clear reporting of QA engineers’ workload and performance + +**Highlights** + +Integration with ReportPortal.io allowed the client to: + +- Collect history for previous test runs +- Identify passing, failing, and unstable tests +- Select stable tests in a separate run +- Assign unstable test for refactoring and add them to a separate run for implementation +- Configure ReportPortal.io charts to track a refactoring progress +- Accelerate test failure analysis through access to related logs, screenshots, and attachments in one place + +**Results** + +- Automation stability improved from 25% to 95% +- Analysis efforts of QA engineers decreased by 10 times +- Client stakeholders use ReportPortal.io data to make release decisions +- ReportPortal.io became the main tool for tracking test automation progress and health + + diff --git a/versioned_docs/version-26.2-organizations/case-studies/ReducingRegressionAnalysisEfforts.mdx b/versioned_docs/version-26.2-organizations/case-studies/ReducingRegressionAnalysisEfforts.mdx new file mode 100644 index 0000000000..e3b0c013e5 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/case-studies/ReducingRegressionAnalysisEfforts.mdx @@ -0,0 +1,30 @@ +--- +sidebar_position: 3 +sidebar_label: Reducing regression analysis efforts +description: Discover how ReportPortal reduces regression analysis time by enabling real-time insights, automated reruns, and a powerful QA metrics dashboard for faster, smarter testing. +--- + + +# Reducing regression analysis efforts + +**Challenges** + +- Test analysis could only start after full execution was completed (4 hours wasted daily) +- All test failures had to be analyzed manually +- No visibility into causes for tests failures +- Absence of history and trends of test failures +- No tools to manage team workload +- Test execution reports were done manually (1 hour of daily efforts) + +**Highlights** + +- Real-time analysis during test runs: results available after the first job execution, saving team capacity and providing an early reaction +- Automatic re-run of failed tests provided additional value and saved up to 5.5 of team’s hours per day +- About 20% of defects previously analyzed manually are being updated automatically through ML capabilities +- Clear visibility into the number of new /existing production defects, auto test related issues, and environment related issues +- Full understanding of application quality, correct planning of maintenance time, and transparent communication of environment instability based on real-time statistics +- History of tests execution helps to analyze causes of test failures more efficiently +- Improved task management due to possibility to plan work allocation and track tests assigned to each team member +- Real-time dashboards were tailored to client’s KPIs, giving full transparency of test execution results + + diff --git a/versioned_docs/version-26.2-organizations/case-studies/ReducingRegressionTimeBy50.mdx b/versioned_docs/version-26.2-organizations/case-studies/ReducingRegressionTimeBy50.mdx new file mode 100644 index 0000000000..3b9d744470 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/case-studies/ReducingRegressionTimeBy50.mdx @@ -0,0 +1,32 @@ +--- +sidebar_position: 1 +sidebar_label: Reducing regression time by 50% +description: Learn how to reduce regression time by 50% using ReportPortal's test automation reporting tools and qa dashboard tools for faster analysis. +--- + + +# Reducing regression time by 50% + +EPAM helps a Canadian retail company to reverse-engineer their legacy IBM-based store management system to a modern tech stack. As part of this project, ReportPortal was deployed as a centralized test reporting tool. + +**Challenges** + +- Unavailble environments (15VMs) blocked by aggregation scripts +- High risk of aggregation fail: 1 in 10 aggregations fails. In case of a fail, the whole regression should be re-run. +- Constant regression fails move weekly releases for 1 day +- Lack of information for investigation: no screenshots/no history/no structure/no all info +- Duplicated analysis efforts: missing history of test cases and known issues + +**Highlights** + +- Simplified test run reporting by integrating the test framework with ReportPortal.io +- Distributed test execution data for root cause analysis: logs/screenshots/ attachments +- Provided a possibility for AI-based defects triage and manual triage +- Provided clear reporting for non-technical stakeholders +- Real-time reporting +- Save on early reaction: team result analysis right after execution started in real time +- Collaborative results analysis +- Test Case History helped to identify flaky test cases +- Extended ML Analyzer + + diff --git a/versioned_docs/version-26.2-organizations/case-studies/_category_.json b/versioned_docs/version-26.2-organizations/case-studies/_category_.json new file mode 100644 index 0000000000..da37ba7b39 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/case-studies/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "Case Studies", + "position": "22", + "link": {"type": "doc", "id": "index"} +} + diff --git a/versioned_docs/version-26.2-organizations/case-studies/img/CaseStudy1.png b/versioned_docs/version-26.2-organizations/case-studies/img/CaseStudy1.png new file mode 100644 index 0000000000..b603591afa Binary files /dev/null and b/versioned_docs/version-26.2-organizations/case-studies/img/CaseStudy1.png differ diff --git a/versioned_docs/version-26.2-organizations/case-studies/img/CaseStudy2.png b/versioned_docs/version-26.2-organizations/case-studies/img/CaseStudy2.png new file mode 100644 index 0000000000..e3ed0ac8da Binary files /dev/null and b/versioned_docs/version-26.2-organizations/case-studies/img/CaseStudy2.png differ diff --git a/versioned_docs/version-26.2-organizations/case-studies/img/CaseStudy3.png b/versioned_docs/version-26.2-organizations/case-studies/img/CaseStudy3.png new file mode 100644 index 0000000000..43d23fa283 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/case-studies/img/CaseStudy3.png differ diff --git a/versioned_docs/version-26.2-organizations/case-studies/img/CaseStudy4.png b/versioned_docs/version-26.2-organizations/case-studies/img/CaseStudy4.png new file mode 100644 index 0000000000..57b4b31163 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/case-studies/img/CaseStudy4.png differ diff --git a/versioned_docs/version-26.2-organizations/case-studies/index.md b/versioned_docs/version-26.2-organizations/case-studies/index.md new file mode 100644 index 0000000000..417f698d39 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/case-studies/index.md @@ -0,0 +1,16 @@ +--- +title: Case Studies +description: Discover success stories to see how top organizations improved processes thanks to our test automation reporting dashboard. +--- + +# Case Studies + +The **Case Studies** section offers an in-depth look at how ReportPortal functions in real-world scenarios, highlighting its impact across various industries. Here, you’ll find success stories from businesses that have significantly improved their testing processes through the platform. By reading these case studies, you’ll see how ReportPortal accelerates test execution, enhances defect detection, and ultimately optimizes overall software quality, resulting in more reliable and faster product releases. + +Each case study demonstrates visible benefits, showing how organizations have used our test report dashboard to streamline their testing workflows. Whether you’re in finance, healthcare, retail, technology, or any other industry, these examples provide valuable insights into how the platform can address the specific challenges faced in different environments. You’ll learn how teams have reduced testing time, minimized human error, and improved product release cycles by implementing ReportPortal’s automated reporting and monitoring capabilities. The case studies also show how users have taken advantage of ReportPortal’s advanced features like real-time analytics and AI-based defect triage to drive higher efficiency and more accurate testing results. + +In addition to these real-world examples, this section offers practical tips and actionable ideas that can be applied to your own test automation strategy. Whether you’re looking to improve defect detection rates, speed up test execution, or enhance reporting accuracy, the lessons learned from these case studies will give you a deeper understanding of how to maximize the efficiency of your testing efforts using ReportPortal. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.2-organizations/configuration/IntegrationViaPlugin.mdx b/versioned_docs/version-26.2-organizations/configuration/IntegrationViaPlugin.mdx new file mode 100644 index 0000000000..09bf56eb75 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/configuration/IntegrationViaPlugin.mdx @@ -0,0 +1,53 @@ +--- +sidebar_position: 5 +sidebar_label: Integration via plugin +description: Integrate ReportPortal with external systems like Jira, Slack, and bug tracking tools to enhance your test automation reporting tools capabilities. +--- + +# Integration via plugin + +Users can enhance ReportPortal by adding additional integrations with: +* [Jira Server](/plugins/bug-tracking/AtlassianJiraServer) +* [Jira Cloud](/plugins/bug-tracking/AtlassianJiraCloud) +* [Rally](/plugins/bug-tracking/Rally) +* [Azure DevOps](/plugins/bug-tracking/AzureDevOps) +* [GitLab](/plugins/bug-tracking/GitLab) +* [Monday](/plugins/bug-tracking/Monday) +* [Sauce Labs](/plugins/other/SauceLabs) +* [E-mail server](/plugins/notifications/EmailServer) +* [Slack](/plugins/notifications/Slack) +* [Telegram](/plugins/notifications/Telegram) +* [LDAP](/plugins/authorization/LDAP) +* [Active Directory](/plugins/authorization/ActiveDirectory) +* [Okta SAML](/plugins/authorization/SamlProviders/OktaSaml) +* [Azure SAML](/plugins/authorization/SamlProviders/AzureSaml) +* [JUnit](/plugins/import/JUnit) +* [RobotFramework](/plugins/import/RobotFramework) + + + +If you're keen on incorporating ReportPortal with other external systems, and can't find the necessary tab in the Project Settings, please refer to the [Plugins section](/plugins/) in our documentation for guidance. Our test reporting tool integrates seamlessly, allowing for a streamlined connection with external systems. + +The integrations can be added at a global level, applicable for all projects on an instance, in the "Administrate" section. Alternatively, they can be specific to a project and can be configured in the Project Settings. + +For those who require a different configuration to other projects, or want to integrate only their specific project with an external system, the following steps could be followed: + +1. Log into ReportPortal as a `PROJECT MANAGER` or `ADMINISTRATOR` + +2. Navigate to Project settings > Integrations + +3. Click on one of the shown integration panels + +4. Click on the "Add Project integration" button. + +Performing these steps will unlink your current project from the global settings and initiate your own configuration. + + + +:::note +If you unlink project setting and ADMIN changes global settings for the whole instance, your project will use your project settings. +::: + +To revert to the global settings, click the button titled "Reset to global settings". This action will erase your settings, and the integration will revert to using the global settings. + +Remember, you can always reset to the global settings. diff --git a/versioned_docs/version-26.2-organizations/configuration/LaunchesRetentionPolicy.mdx b/versioned_docs/version-26.2-organizations/configuration/LaunchesRetentionPolicy.mdx new file mode 100644 index 0000000000..ae19d1ad1c --- /dev/null +++ b/versioned_docs/version-26.2-organizations/configuration/LaunchesRetentionPolicy.mdx @@ -0,0 +1,129 @@ +--- +sidebar_label: Launches retention policy +description: Configure data retention policies to manage storage and keep important launches. Set up automated cleanup for test execution reporting data. +--- + +# Launches retention policy + +Retention policies play a pivotal role in ensuring that companies maintain control over their data. In ReportPortal, on the General tab in Project Settings, the retention policy outlines the guidelines for how long regular launches and their descendants (logs, attachments) should be kept and when they should be deleted. + +You can also mark some launches as important, meaning they are generally not subject to deletion by the time-based retention policy. These launches can only be deleted manually or if [storage is overused](/configuration/LaunchesRetentionPolicy#important-launch-deletion-on-full-storage) (in this case new launches will displace old ones, even if they are marked as important). + +You can mark a launch as important either through the application's UI or during test reporting using special system attributes. + +:::note +By default, the "Important launches" functionality is enabled on all instances.
+An admin can [disable the "Important launches" functionality](/admin-panel/ServerSettings#features) if needed. +::: + +## Mark launch as important on UI + +1. Go to the 'Launches' page. +2. Open the burger menu for the launch. +3. Click on the 'Mark as Important' option on the menu. +4. Confirm your decision by clicking the 'Mark as Important' button on the 'Mark as Important' modal window. + + + +:::note +Administrator can mark any launch as important.
+Project Manager can mark as important any launch within their own project.
+Customers and Members can mark as important only their own launch. +::: + +## Unmark important launches on UI + +1. Go to the 'Launches' page. +2. Open the burger menu for the launch. +3. Click on the 'Unmark as Important' option in the menu. +4. Click on the 'Unmark' button on the 'Unmark as Important' modal window. + + + +:::note +Administrator can unmark any launch as important.
+Project Manager can unmark as important any launch within their own project.
+Customers and Members can unmark as important only their own launch. +::: + + + +## Report launch as important + +You can also mark launch as important while reporting using following parameters: + + + + + +In case launch is reported with system attributes **retentionPolicy : regular** and **retentionPolicy : important**, then attribute **retentionPolicy : important** is taken for defining the field value. + + + +In case launch is reported without **retentionPolicy** system attribute or with random attribute like **retentionPolicy : qwerty**, then the behavior will be as for the launch with system attribute **retentionPolicy : regular**. + + + + + + + + + +## Delete important launch on UI + +1. Go to the 'Launches' page. +2. Select important launch. +3. Click Actions -> Delete. +4. Click 'Delete Important Launch' button on the 'Delete Launch' modal window. + +OR + +1. Go to the 'Launches' page. +2. Open the burger menu for the important launch. +3. Click on the 'Delete' option on the menu. +4. Click 'Delete Important Launch' button on the 'Delete Launch' modal window. + + + +:::note +Administrator can delete important launches of all users.
+Project Manager can delete the launches of users within their own project.
+Customers and Members can delete only their own launches. +::: + +## Bulk delete important launches + +1. Go to the 'Launches' page. +2. Select at least two important launches. +3. Click Actions -> Delete. +4. Click 'Delete Important Launches' button on the 'Delete Launches' modal window. + + + +:::note +Administrator can perform bulk delete important launches of all users.
+Project Manager can perform bulk delete the launches of users within their own project.
+Customers and Members can perform bulk delete only their own launches. +::: + +## Bulk delete important and regular launches + +1. Go to the 'Launches' page. +2. Select at least one important launch and one regular launch. +3. Click Actions -> Delete. +4. Click ‘Delete with Important Launches' button on the 'Delete Launches' modal window. + + + + + +## Important launch deletion on full storage + +If all your storage is used and it consists of both regular and important launches, as soon as a new launch arrives, regular launches and all their related descendants will be deleted, starting from the oldest ones. The weight of deleted regular launches will be proportional to the weight of the new launches that are being reported. + +If there are no regular launches remaining and all your memory space is used by important launches, then important launches and their descendants will be deleted starting from the oldest until the storage no longer exceeds capacity. The weight of deleted important launches will be proportional to the weight of the new launches that are being reported. + +When it comes to attachments, in case of storage overusage by attachments of both regular and important launches, the same logic will apply. Attachments of regular launches are subject to deletion first. If there are no attachments from regular launches left, then attachments from important launches will be deleted, starting from the oldest, until the storage no longer exceeds capacity. + +Thus, storing and managing data within ReportPortal is now even more convenient. The updates to the launches retention policy introduce the option to mark launches as important, provide greater flexibility and ensure that crucial data is kept as long as needed. diff --git a/versioned_docs/version-26.2-organizations/configuration/ProjectSettings.mdx b/versioned_docs/version-26.2-organizations/configuration/ProjectSettings.mdx new file mode 100644 index 0000000000..2adc862419 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/configuration/ProjectSettings.mdx @@ -0,0 +1,405 @@ +--- +sidebar_position: 3 +sidebar_label: Project settings +description: Configure project settings, notifications, defect types, and data retention policies to optimize your test automation reporting dashboard performance. +--- + +# Project settings + +To see the list of available projects and open a project, click the drop-down list in the top of the left menu. + +ReportPortal supports customization of the default settings. + +**Permission:** +Users with the `Administrator` role can edit project settings on the project "Settings" page in Administrate section and on the Project space. +Users with the `PROJECT_MANAGER` role can edit the settings on the project space only. +`MEMBER`/ `OPERATOR`/ `CUSTOMER` can only view applied project settings. + +To go to the project settings page, click the "Project Settings" icon in the left menu. + +The project configuration page will be opened. + +The project settings are divided into following tabs: "General", "Integrations", "Notifications", "Defect Types", "Analyzer", "Pattern Analysis" and "Demo Data". + +## General settings + +Our test automation results dashboard allows you to control the amount of the stored data (launches, test items, logs and attachments) by removing outdated elements using Quartz jobs. +Functionality of data removing depends on two configurations. + +The first one is API service back-end environment variables that are described in [ReportPortal jobs configuration](/installation-steps-advanced/JobsConfiguration) + +The second one is the "General" tab you can configure parameter of data storage in ReportPortal for this project: + +- Name – is a disabled field as the project name cannot be changed. + +In addition to the Project Settings General section, you can find the project name on the left menu and in the URL. + + + +- **Launch inactivity timeout** - this parameter specifies the scheduled time for a job to interrupt inactive launches (launches which have the status 'in progress', but there is no any items during the chosen period). There are six options: + - 1 hour, + - 3 hours, + - 6 hours, + - 12 hours, + - 1 day, + - 7 days. + +- **Keep launches** - this parameter specifies how long the system will keep old launches in the data base. There are five options: + * 7 days, + * 14 days, + * 21 days, + * 30 days, + * 90 days. + +After this period a launch will be deleted, and you can not see it in ReportPortal. + +- **Keep logs** - this parameter specifies how long the system will keep old logs in launches. Related launch structures will be saved, to keep statistics. There are five options: + * 7 days, + * 14 days, + * 21 days, + * 30 days, + * 90 days. + +Widgets continue to work even if the logs are deleted, as they are linked to test items. + +- **Keep attachments** - this parameter specifies how long to keep binary data (screenshots, files, video, and others attachments) + in the system. There are five options: + * 7 days, + * 14 days, + * 21 days, + * 30 days, + * 90 days. + + + +## Integrations + +The "Integration" tab can allow the project to connect ReportPortal with external systems or rewrite global configurations for third party systems. + +For more information on this topic, please refer to [Integration with external systems](/configuration/IntegrationViaPlugin). + +## Notifications + +The ‘Notifications’ tab provides the administrator with the ability to activate notifications on the project – through either Email or Slack. + +ReportPortal provides a way to add multiple rules with specific conditions. The notification rule should be unique per Notification group – Email or Slack, have a unique parameter set. For example: In case, Launch names, Attributes. + +:::note +Users with ADMINISTRATOR role can configure ‘Notifications’ in the Administrate section.
+Users with PROJECT_MANAGER role can edit the settings on the project space only.
+Users with MEMBER/ OPERATOR/ CUSTOMER project role will not have the capability to edit the project settings, however, they do have the permission to view them. +::: + +### Email notifications + +:::tip +For using this functionality be sure that the [Email server](/plugins/notifications/EmailServer/) is configured. For that, go to the Project Settings -> Integrations -> Email Server. +::: + +To create Email notification rule, perform the following steps: + +1. Go to the Project settings -> Notifications. + +2. Choose Email Notification Group. + +3. Click ‘Create Rule’ button. + +4. Fill the form: + +**Rule name** – from 1 to 55 characters, mandatory field + +**Recipients** – optional field + +Start typing any symbols into the ‘Recipients’ field. You can select an item from the auto-complete tooltip using the keyboard (use the ‘Up’ and ‘Down’ arrows and ‘Enter’ button). You can also enter a custom email into the ‘Recipients’ field. To add a custom email, just enter the email address and press ‘Enter’. + +**Launch owner** – optional checkbox + +The ‘Launch owner’ checkbox is selected by default. Uncheck ‘Launch owner’ to exclude him/her from the notification. + +**In case** – optional field, dropdown with the options: + +* Always – notification will be sent upon the launch finish. +* 10% of items have issues – notification will be sent, if more than 10% of items have issues. +* 20% of items have issues – notification will be sent, if more than 20% of items have issues. +* 50% of items have issues – notification will be sent, if more than 50% of items have issues. +* Launch has issues – notification will be sent, if at least 1 item has issues +* Launch has ‘To Investigate’ items – notification will be sent, if at least 1 item has ‘To Investigate’ + +**Launch names** – optional field + +Start typing any symbols into the ‘Launch names’ field. You can select an item from the auto-complete tooltip using the ‘Up’ and ‘Down’ arrows and clicking ‘Enter’ on the keyboard. This is an alternate way you can add a new launch name that does not exist on the project. Several launches names can be selected; the recipients will receive notifications when each of them finishes. + +**Attributes** – optional checkbox + +When the ‘Attributes’ checkbox is checked, user can provide key/value for attributes and select the necessary radio button: + +* All attributes should match +* Any attribute should match + +Start typing any symbols into the ‘Attribute key’ and ‘Attribute value’ fields. The system will suggest the results in the dropdown, after at least 1 symbol is provided. It is also possible to add a new attribute (that does not exist on the project). Several attributes can be selected at once; the corresponding recipients will receive notifications about the launches that have all the specified attributes. + +You can edit/ copy/enable/disable notification rule by clicking on the appropriate controls on the notification rule. + +5. Click on ‘Create’ button. + + + +### Slack notifications + +:::tip +To use this functionality, ensure that the [Slack plugin](/plugins/notifications/Slack) is uploaded and enabled. For that, go to Administrate -> Plugins or contact your instance Administrator. +::: + +To create Slack notification rule, perform the following steps: + +1. Go to the Project settings -> Notifications. + +2. Choose Slack Notification Group. + +3. Click ‘Create Rule’ button. + +4. Fill the form: + +**Rule name** – from 1 to 55 characters, mandatory field + +**Webhook URL** – mandatory field (it is configured on the [Slack side](/plugins/notifications/Slack#create-an-application-in-slack)) + +**In case** – optional field, dropdown with the options: + +* Always – notification will be sent upon the launch finish. +* 10% of items have issues – notification will be sent, if more than 10% of items have issues. +* 20% of items have issues – notification will be sent, if more than 20% of items have issues. +* 50% of items have issues – notification will be sent, if more than 50% of items have issues. +* Launch has issues – notification will be sent, if at least 1 item has issues +* Launch has ‘To Investigate’ items – notification will be sent, if at least 1 item has ‘To Investigate’ + +**Launch names** – optional field + +Start typing any symbols into the ‘Launch names’ field. You can select an item from the auto-complete tooltip using the ‘Up’ and ‘Down’ arrows and clicking ‘Enter’ on the keyboard. This is an alternate way you can add a new launch name that does not exist on the project. Several launches names can be selected; the recipients will receive notifications when each of them finishes. + +**Attributes** – optional checkbox + +When the ‘Attributes’ checkbox is checked, user can provide key/value for attributes and select the necessary radio button: + +* All attributes should match +* Any attribute should match + +Start typing any symbols into the ‘Attribute key’ and ‘Attribute value’ fields. The system will suggest the results in the dropdown, after at least 1 symbol is provided. It is also possible to add a new attribute (that does not exist on the project). Several attributes can be selected at once; the corresponding recipients will receive notifications about the launches that have all the specified attributes. + +You can edit/ copy/enable/disable notification rule by clicking on the appropriate controls on the notification rule. + +5. Click on ‘Create’ button. + + + +### Telegram notifications + +:::tip +To use this functionality, ensure that the [Telegram plugin](/plugins/notifications/Telegram) is uploaded and enabled. For that, go to Administrate -> Plugins or contact your instance Administrator. +::: + +To create Telegram notification rule, perform the following steps: + +1. Go to the Project settings -> Notifications. + +2. Choose Telegram Notifications Group. + +3. Click ‘Create Rule’ button. + +4. Fill the form: + +**Rule name** – from 1 to 55 characters, mandatory field + +**Chat id** – mandatory field, copied from group info in [Telegram](/plugins/notifications/Telegram#configuration-on-telegram-side) + +:::important +Add ‘-’ before the chat id. +::: + +**Bot Api Key** - mandatory field, received during registration [your Telegram bot](/plugins/notifications/Telegram#configuration-on-telegram-side) + +**In case** – optional field, dropdown with the options: + +* Always – notification will be sent in any case. +* 10% of items have issues – notification will be sent, if more than 10% of items have issues. +* 20% of items have issues – notification will be sent, if more than 20% of items have issues. +* 50% of items have issues – notification will be sent, if more than 50% of items have issues. +* Launch has issues – notification will be sent, if at least 1 item has issues +* Launch has ‘To Investigate’ items – notification will be sent, if at least 1 item has ‘To Investigate’ + +**Launch names** – optional field + +You can select only existing launch name. The field allows multi-selection. + +**Attributes** – optional checkbox + +When the ‘Attributes’ checkbox is checked, you can provide key/value for attributes and select the necessary radio button: + +* ‘All attributes should match’ +* ‘Any attribute should match’ + +5. Click on ‘Create’ button. + + + +## Defect types + +The "Defect Types" tab allows users with permissions to create custom defect types as subtypes of default defects on the project. + +After Installation the ReportPortal by default sets-up the following defect types groups: + +* **To investigate** - means that no investigation was performed on this defect yet. +* **Product Bug** - defect was investigated and a production bug was found as a cause for this test failure. +* **Automation Bug** - defect was investigated and an automation test is not correct. +* **System Issue** - defect was investigated and it turns out that it is a system-level issue, like the app, crashed and caused the test to fail. +* **No Defect** - defect was investigated and defined as not a defect. + +ReportPortal allows the use of existing default defect types (Product Bug, Automation Bug, System Issue, No Defect, To investigate) and or to create custom ones on the project settings page. + +To create custom defect types, perform the following steps: + +1. Login into the ReportPortal. +2. Navigate to Projects -\> Project "Settings" page. +3. Open "Defect Types" tab +4. Click "Add Defect Type" button under any default defect type +5. Add new defect type form will appear +6. Enter "Defect name" and "Abbreviation", select color for defect presentation on the launches grid and widgets. +7. Submit form. You will see an added defect type on the chart preview. + +Add more custom defects, if you need it. The system allows us to add up to ten subtypes of each default defect type. + +Now you can do bug triage and set defect types as default Product Bug/Automation Bug/System Issue/No Defect/TO investigate or custom defects. All of them will be available to select on the Defect Type editor. +For more information refer to the [Investigation of failure](/work-with-reports/InvestigationOfFailure) topic. + +:::note +Default defects cannot be modified and or deleted from the system. Custom defect types can be deleted at any time. + +You can create up to 15 custom defect types for each group. +::: +:::tip +If you have deleted a custom type from the system, all test executions with this deleted defect type get the parent type of the group in which deleted defect has belonged. Statistics updates in all launches where a deleted defect was present. +For example, if you create a custom "Product Bug-1" as a subtype of "Product Bugs" group and investigate a few +defects as "Product Bug-1", then remove "Product Bug-1" from your project, all investigated "Product Bug-1" defects +will be shown as "Product Bug". +::: + + +## Log Types + +Log types define how log entries are categorized and visually highlighted, helping users quickly understand the importance and context of events. Every log entry belongs to a specific log type. Some core system log types are built in and cannot be removed, while custom log types can be added and configured to meet your project needs. + +In the Project Settings -> Log Types tab, you can find the log types available in your project – both system and custom. On this page, you can create custom log types, edit their appearance, delete custom log types, and configure which log types will be displayed in the log level slider on the Log page of the test item. + +**Permissions:**
+Only Admin and Project Manager can manage log types. + +### Create custom log type + +You can create your own log types to better control how logs are organized and visually presented within a project. + +**To create a custom log type:** + +1. Go to the Project settings -> Log types. +2. Click the "Create log type" button. +3. Enter a unique "Log type name". +4. Provide a numeric "Log level" value. +5. Select colors for the "Label color", "Background", and "Text color". +6. Toggle "Text bold" if you want the log type to appear in bold. +7. Click "Create" button. + + + +When a custom log type is created, it is added to the list of available log types and becomes immediately usable within the project. + +:::note +The "Show in log filter" flag for newly created log types is OFF by default. +::: + + + +:::note +If a user reports tests with a log type that doesn’t exist in the project, the system assigns them level 60000 – Unknown. +::: + + + +### Edit log type + +You can update existing log types, adjust their appearance, and manage whether they appear in the log type filter slider. + +:::note +If you update a log type name, make sure to update it in your reporting configuration as well. The system currently identifies log types by their name.
+If you change a log level, all previously reported logs with the old level will be treated as Unknown. +::: + +**To edit log type:** + +1. Go to the Project settings -> Log types. +2. Click the "Edit" icon next to a custom log type. +3. Update the "Log type name", "Log level", and appearance settings (label color, background color, text color, bold). +4. Click "Save" button. + + + +:::note +Log type name and Log level of a system log type cannot be changed. +::: + + + +**To manage the "Show in log filter" toggle:** + +1. Go to the Project settings -> Log types. +2. Modify the "Show in log filter" toggle. + +Log types marked as filterable appear in the log type filter slider on the log view, along with an additional "All" option that shows logs of every type. + +When a log type is selected in the slider, logs with that log level and all higher log levels are displayed. Even if a specific type does not appear in the slider but falls within the selected range, its logs are still included. If no log types are marked as filterable, the slider does not appear. + +:::note +A maximum of 6 log types can be active in the filter slider at the same time (plus the "All" option). +::: + + + + + +### Delete custom log types + +You can delete custom log types from the project. + +:::important +System log types cannot be deleted. +::: + +**To delete a custom log type:** + +1. Go to the Project settings -> Log types. +2. Find the custom log type you want to delete. +3. Click the "Delete" icon. +4. Click "Confirm" button. + + + + + +## Analyzer + +The Analyzer can allow reducing test failure analysis routine on the project. + +For more information on this topic, please refer to [Auto-Analysis documentation](/analysis/AutoAnalysisOfLaunches). + +## Pattern Analysis + +The "Pattern Analysis" feature allows identifying recurring failure patterns and common behaviors across test results. + +For more details, see the [Pattern Analysis documentation](/analysis/PatternAnalysis). + +## Demo data + +The "Demo Data" tab provides a way to generate demo data on the project. + +The generated data could demonstrate how the launches, filter, and dashboard will look. On the other hand, demo data could be +modified or removed without any effect of your real objects. + + diff --git a/versioned_docs/version-26.2-organizations/configuration/UserManagement.mdx b/versioned_docs/version-26.2-organizations/configuration/UserManagement.mdx new file mode 100644 index 0000000000..9e6818fdf8 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/configuration/UserManagement.mdx @@ -0,0 +1,88 @@ +--- +sidebar_position: 3 +sidebar_label: User management +description: Manage users, roles, and permissions in ReportPortal test automation reporting tools for secure project access control. +--- + +# User management + +After [you have created a project](/admin-panel/AllProjectsPage#create-projects), you can invite new members to it. + +**Permissions:**
+User with `ADMINISTRATOR` role and users with project role `PROJECT_MANAGER`. + +### Invite user on a project + +:::info +Depending on the toggle state in [Server Settings](/admin-panel/ServerSettings), the ability to manually invite external users to ReportPortal can be disabled. +::: + +To invite a user on the "Project Members" page, perform the following steps: + +1. Login into ReportPortal instance as with the `PROJECT_MANAGER` project role. +2. Navigate to the "Project Members" page on the left menu. +3. Click the "Invite User" tab. +4. Enter the email address of the user in case he/she is not present in the ReportPortal database or enter his/her login name. +5. In case the user is already available in the ReportPortal, his/her name will appear in the suggestion list. +If not, the Admin should enter the correct email address. +6. Select an appropriate role. +7. Then click 'Invite'. +8. In case the user is already available in ReportPortal she/he will be assigned to the project +If not, the letter with an invitation link will be sent to the user email address. +9. The user will receive an email with the link to the registration. +When the user clicks the link, he/she will see a registration form. +10. The user needs to fill in the registration form and click the "Register" +button to complete the registration. +11. The user will be assigned to the project that the invitation was sent from, and to "Personal Project" with the PROJECT + MANAGER project role. + + + +### Project role + +Every user is given a specific Project role within a specific project. + +Depends on the role, the user is able or not able to perform some actions. For more details, please see the "Permissions map". + +There are 4 possible Project roles in ReportPortal: + +- `PROJECT MANAGER` +- `MEMBER` +- `OPERATOR` +- `CUSTOMER` + +:::note +The `ADMINISTRATOR` has all privileges on the project. +::: + +### Edit project role + +To edit the project role, perform the following steps: + +1. Login into the ReportPortal as a user with `PROJECT_MANAGER` project role. +2. Navigate to the "Project Members" page on the left menu. +3. Select a new value from the "Project Role" drop-down for the user. - The new project role will be automatically saved. + + + +### Unassign user from the project + +Depending on the project needs the assignment could be removed. +To unassign the assignment for the user on the project, perform the following steps: + +1. Login into the ReportPortal as a user with `PROJECT_MANAGER` project role. +2. Navigate to the "Project Members" page on the left menu. +3. Find the required member. +4. Click the 'Unassign' button for the user. +5. Confirm the action in the popup. +6. The user will be unassigned from the current project but will stay in the system. + + +:::note +Invite user, Assign/Unassign internal user to/from the project, change user's role on a project action can be done for a user +with a similar and lower role only. +::: + +:::important +Administrator can also [add users to the project](/admin-panel/AllUsersPage). +::: diff --git a/versioned_docs/version-26.2-organizations/configuration/_category_.json b/versioned_docs/version-26.2-organizations/configuration/_category_.json new file mode 100644 index 0000000000..52c9d7a7d4 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/configuration/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Configuration", + "position": "7", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.2-organizations/configuration/img/EmailNotification.png b/versioned_docs/version-26.2-organizations/configuration/img/EmailNotification.png new file mode 100644 index 0000000000..14e639a1d7 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/configuration/img/EmailNotification.png differ diff --git a/versioned_docs/version-26.2-organizations/configuration/img/Integrations.png b/versioned_docs/version-26.2-organizations/configuration/img/Integrations.png new file mode 100644 index 0000000000..72d003557e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/configuration/img/Integrations.png differ diff --git a/versioned_docs/version-26.2-organizations/configuration/img/ProjectIntegration.png b/versioned_docs/version-26.2-organizations/configuration/img/ProjectIntegration.png new file mode 100644 index 0000000000..1217e22319 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/configuration/img/ProjectIntegration.png differ diff --git a/versioned_docs/version-26.2-organizations/configuration/img/ProjectName.png b/versioned_docs/version-26.2-organizations/configuration/img/ProjectName.png new file mode 100644 index 0000000000..01d216f695 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/configuration/img/ProjectName.png differ diff --git a/versioned_docs/version-26.2-organizations/configuration/img/SlackNotification.png b/versioned_docs/version-26.2-organizations/configuration/img/SlackNotification.png new file mode 100644 index 0000000000..c702e6cfca Binary files /dev/null and b/versioned_docs/version-26.2-organizations/configuration/img/SlackNotification.png differ diff --git a/versioned_docs/version-26.2-organizations/configuration/img/TelegramNotification.png b/versioned_docs/version-26.2-organizations/configuration/img/TelegramNotification.png new file mode 100644 index 0000000000..24f91c4194 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/configuration/img/TelegramNotification.png differ diff --git a/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy1.png b/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy1.png new file mode 100644 index 0000000000..cf0b0604bf Binary files /dev/null and b/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy1.png differ diff --git a/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy10.png b/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy10.png new file mode 100644 index 0000000000..ec457d5243 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy10.png differ diff --git a/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy11.png b/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy11.png new file mode 100644 index 0000000000..71d23fe5d9 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy11.png differ diff --git a/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy2.png b/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy2.png new file mode 100644 index 0000000000..4678558110 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy2.png differ diff --git a/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy3.png b/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy3.png new file mode 100644 index 0000000000..d4e8ae7a58 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy3.png differ diff --git a/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy4.png b/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy4.png new file mode 100644 index 0000000000..c72e5e2087 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy4.png differ diff --git a/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy5.png b/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy5.png new file mode 100644 index 0000000000..1e353e5c4d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy5.png differ diff --git a/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy6.png b/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy6.png new file mode 100644 index 0000000000..22a1f12ee4 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy6.png differ diff --git a/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy7.png b/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy7.png new file mode 100644 index 0000000000..f32d5ebf4c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy7.png differ diff --git a/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy8.png b/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy8.png new file mode 100644 index 0000000000..05bd6dc6d5 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy8.png differ diff --git a/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy9.png b/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy9.png new file mode 100644 index 0000000000..cd8c9ac6e7 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/configuration/img/launches-retention-policy/LaunchesRetentionPolicy9.png differ diff --git a/versioned_docs/version-26.2-organizations/configuration/img/log-types/CreateLogType.png b/versioned_docs/version-26.2-organizations/configuration/img/log-types/CreateLogType.png new file mode 100644 index 0000000000..d306ccd760 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/configuration/img/log-types/CreateLogType.png differ diff --git a/versioned_docs/version-26.2-organizations/configuration/img/log-types/Delete.png b/versioned_docs/version-26.2-organizations/configuration/img/log-types/Delete.png new file mode 100644 index 0000000000..cb3dd47847 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/configuration/img/log-types/Delete.png differ diff --git a/versioned_docs/version-26.2-organizations/configuration/img/log-types/EditCustom.png b/versioned_docs/version-26.2-organizations/configuration/img/log-types/EditCustom.png new file mode 100644 index 0000000000..3da0963137 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/configuration/img/log-types/EditCustom.png differ diff --git a/versioned_docs/version-26.2-organizations/configuration/img/log-types/EditSystem.png b/versioned_docs/version-26.2-organizations/configuration/img/log-types/EditSystem.png new file mode 100644 index 0000000000..02574d7ad9 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/configuration/img/log-types/EditSystem.png differ diff --git a/versioned_docs/version-26.2-organizations/configuration/img/log-types/FilterOff.png b/versioned_docs/version-26.2-organizations/configuration/img/log-types/FilterOff.png new file mode 100644 index 0000000000..265db03fbf Binary files /dev/null and b/versioned_docs/version-26.2-organizations/configuration/img/log-types/FilterOff.png differ diff --git a/versioned_docs/version-26.2-organizations/configuration/img/log-types/ShowInLogFilter.png b/versioned_docs/version-26.2-organizations/configuration/img/log-types/ShowInLogFilter.png new file mode 100644 index 0000000000..721fe43b81 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/configuration/img/log-types/ShowInLogFilter.png differ diff --git a/versioned_docs/version-26.2-organizations/configuration/index.md b/versioned_docs/version-26.2-organizations/configuration/index.md new file mode 100644 index 0000000000..1712eea692 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/configuration/index.md @@ -0,0 +1,18 @@ +--- +title: Configuration +description: Configure projects, users, and retention in ReportPortal. Step-by-step guides for access, roles, and policies to manage your test report dashboard effectively. +--- + +# Configuration + +The **Configuration** section is designed specifically for Project Managers, offering essential tools and information to help configure project settings and manage users effectively. In this section, you will find detailed guides that cover every aspect of setting up and customizing project settings to fit the unique needs of your team and organization. Whether you’re just starting a new project or refining an existing one, these resources will help ensure that your project runs smoothly and efficiently. + +**A key feature of this section** is its focus on **user management**. These guides will show you how to invite user on a project, assign roles to team members, and control access to various functionalities within the platform. This ensures that collaboration is smooth, secure, and aligned with the responsibilities of each team member. + +Additionally, this section covers the **Launches retention policy** – an important aspect of managing your project’s data. In ReportPortal, the retention policy determines how long regular launches, and their related data (such as logs and attachments) will be stored before they are automatically deleted. Understanding and configuring this policy is critical for optimizing storage usage and ensuring that old, unnecessary data doesn’t clutter your system. + +Thanks to the Configuration section, Project Managers can ensure efficient project setup, effective user management, and optimal data retention practices. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/ComponentHealthCheck.mdx b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/ComponentHealthCheck.mdx new file mode 100644 index 0000000000..b84476e380 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/ComponentHealthCheck.mdx @@ -0,0 +1,179 @@ +--- +sidebar_position: 24 +sidebar_label: Component health check +description: Generate a detailed test automation report with passing rate of the application components. +--- + +# Component health check + +The widget shows the passing rate of the application components, indicated by the attributes specified for test cases. + +:::note +For using this widget you need to report (or add manually) attributes to test items. +::: + +## Widget's parameters: + +- Filter +- Parameters: All Launches/Latest Launches +- Checkbox 'Exclude Skipped Tests from Statistics'. Default state of checkbox: unselected. +- Minimum allowable passing rate for the component: Possible value ranges from 50% to 100%. The default value is 100%. +- Attribute Key for the First Level (mandatory) +- Attribute Key for the 2nd to 10th Levels (optional) + + + +When the **checkbox 'Exclude Skipped tests from statistics' is selected**, the passing rate is calculated based on the total number of test cases, excluding the skipped tests. + +When the **checkbox 'Exclude Skipped tests from statistics' is not selected**, the passing rate is calculated based on the total number of test cases, including the skipped tests. + +## Widget view + +The Component Health Check widget is multi-level (up to 10 level) with the ability to drill down to the list of test cases included in the corresponding group at each attribute key level. + +**‘ALL LAUNCHES’ option** + +**For the first level**, system applies chosen filter to all the launches in ReportPortal and analyzes the last 600 launches +from the filter. After combining all the tests cases from these launches, the system searches for the test cases +with the attribute key specified for the first widget level (e.g., attribute key **‘function’**) and groups the found test cases +around unique attribute values (order, team, configure, administrate). The system then calculates the passing rate for each group. + +**For the second level**, the system again analyzes the 600 launches from the filter and searches +for the test cases with 1st level attribute key plus value for chosen group (e.g., **function:order**) +and also attribute key specified for the second widget level (e.g., **type**). +The found tests cases are grouped around unique attribute values (backend, API, Unit, UI). +The system again calculates the passing rate for each group. + +The same flow is applied to the other levels of the widget. + + + + + + + + + + + + + + + + + + + +**‘LATEST LAUNCH’ option** + +**For the first level**, the flow is almost the same as for the ‘ALL LAUNCHES’ option. +However, after the test cases are grouped around unique values for the attribute key, system only leaves the tests cases +from latest launches executions for each selection. + +For example, if you have Launch A with executions #1 and #2 and Launch B with executions #1 and #2 +and they correspond to the applied filter, then building the widget based on “LATEST LAUNCHES’ parameter +will take into account only the test cases from Launch A executions #2 and Launch B executions #2. + +## Widget section + +The widget is divided into two sections: Passed and Failed. + +**The Failed section** includes all groups (test cases with the same attribute) that have a passing rate lower than the passing rate specified in the widget wizard. + +**The Passed section** includes all groups that have a passing rate higher than the rate specified in the widget wizard. + + + +Each group on the widget has: + +- **name**, which is equivalent to attribute value +- **passing rate**, calculated as (the number of passed test cases in the group)/(total number of test cases in the group) +- **the number of test cases** in the group +- **a color line**, which depends on the passing rate (see section Widget legend) + +Users can drill down to view the list of test cases included in the group, filtered by: + +- **test method:** Test +- **status:** Passed, Failed, Skipped, Interrupted +- **attributes** (key=Key for corresponding level, value=group name) + +:::note +Each subsequent level should contain the attributes of previous levels. +::: + +When you click on the arrow on the component and the 'Exclude Skipped tests' toggle is OFF, +the system redirects you to the test item view. Test items with statuses Passed, Failed, Interrupted, and Skipped are displayed. + + + + +When you click on the arrow on the component and the 'Exclude Skipped tests' toggle is ON, +the system redirects you to the test item view. Test items with statuses Passed, Failed, and Interrupted are displayed. + + + +## Widget legend + +The widget legend has two lines - Passed and Failed. + +**Failed** + +The failed line has four colors: + +- light red +- regular red +- strong red +- dark red + +It represents values that are less than the rate specified in the widget minus 1. + +**Passed** + +The passing line has only two colors: + +- slightly green +- green + +And have values - from specified on widget wizard to 100%. Depending on this color scheme each group on the widget has its own color. + +Let's say we set 'The min allowable passing rate for the component' to be 90%. The tests cases will be grouped in following color groups: + +green: tests with passing rate equals to 100%
+slightly green: greater than or equal to 90% (specified on widget wizard) and less than 100%
+light red: greater than or equal to 67,5% (calculated as (`90%/4*3`)) and less than 90%
+strong red: greater than or equal to 45% (calculated as (`90%/4*2`)) and less than 67,5%
+regular red: greater than or equal to 22,5% (calculated as (`90%/4`)) and less than 45%
+dark red: less than 22,5% + +:::note +The widget doesn't contain 'IN PROGRESS" launches. +::: + + + +## Use case + +**Situation:**
+As a Project Manager or Test Lead, I want to identify the most unstable areas in my product (application). + +**Solution:**
+Let’s build Component Health Check Widget based on a particular filter for the launches and the following attributes for test cases: + +1st level: **key: function**, possible **values**: order, team, configure, administrate
+2nd level: **key: type**, possible **values**: backend, API, Unit, UI
+3d level: **key: market state**, possible **values**: open, close
+4th level: **key: role**, possible **values**: Project Manager, Member, Admin + +On the first level of the widget, the user will only see the test cases with attribute key **‘function’**.
+The test cases will be grouped by attribute **value**: order, team, configure, administrate.
+By clicking on one of the groups (e.g., order), the user will see the second level of the widget.
+It will contain only test cases that have attribute **function: order** and attribute key **‘type’**.
+Test cases will be grouped by attribute value available for attribute key **‘type’** which are: backend, API, Unit, UI. + +1st LEVEL + + + +2nd LEVEL + + diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/CumulativeTrendChart.mdx b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/CumulativeTrendChart.mdx new file mode 100644 index 0000000000..f0f3f2971b --- /dev/null +++ b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/CumulativeTrendChart.mdx @@ -0,0 +1,86 @@ +--- +sidebar_position: 22 +sidebar_label: Cumulative trend chart +description: Track cumulative growth trends across builds and versions. Compare statistics over time with drill-down capabilities using qa metrics dashboard. +--- + +# Cumulative trend chart + +Shows the growth trend of summary statistics of launches with the same attribute key. +You can see a growth of statistics from the build to the build, or from version to version. +A widget does not require an edit or new filter creation. If a new version (build, release or other) is added to ReportPortal, new information will be added to the graph. + + + +**Widget's parameters:** +- Filter +- Parameters: only Latest launches +- Number of shown attributes on the widget: 1 - 15 +- Attribute key for the first level (mandatory) +- Attribute key for the second level (optional) + + + +**Widget view** +A widget has two levels. + +**For the first level** the system uses the last 600 launches from the chosen filter. +Then the system searches all launches which have attributes with the key specified on the widget wizard for the first widget level (for example attribute key - BUILD). +Then the system combines launches into groups around unique attribute value (BUILD:3.6, BUILD: V3.7, BUILD:3.8…..). +After that the system should keep in each group **only latest executions** (e.g. the latest launches for BUILD:3.6,  the latest launches  BUILD: V3.7,  the latest launches  BUILD:3.8…. ) and reflects statistics for all unique attributes on the graph for the first widget level. + +First level view - summ statistics of launches with attributes BUILD: 3.20.8.0 / 3.20.8.1 / ... / 3.20.8.9 + +>:::note +Statistics for bars BUILD: 3.20.8.0 is calculated as - a summary of latest launches with attribute 3.20.8.0 +::: + + + + + + + + + + + + + +A user can drill down to the second level of the widget. For that, he should click on the bar. And the system shows two buttons: Drill Down and Show filter. +And a user should click on **"Drill down"**. + +**For the second level** the system again analyzes the 600 launches from the filter. +Then it leaves only launches that have an attribute, that has been clicked by the user (f.e. BUILD: 3.20.8.0 ). +From these launches, systems choose ones with attributes that have key attribute from the section Level 2 (detailed view) on widget wizard. +After the system groups launch with the same attribute and leaves for each selection only the “latest” launches (launches with unique launch name and with the biggest launch number in ReportPortal). +Others should be removed from a group. Each unique group should be reflected in the graph on the second widget level. + + +For each group there is shown a set of bars: Passed, Failed, Skipped, group Product Bug, group Auto Bug, group System Issue, group No defect, group To investigated. + +On the hover on the bar, a user can see detailed information about the sample. Also, the user can see a list of attributes with attribute key from the first and from the second level which has launches, which have been used for a hovered bar. + + +**Visual options** + +**Focus on defect types** +If the option is enabled, a user can see only information about defect types for each sample. +If an option is disabled, a user can see information about statuses and defect types. + +**Totals** +If the option is enabled, a user can see info about several test cases in each sample. + +**Staked area / Separate bars** +Staked area chart - is shown one bar for statuses, and one bar for defect types for each sample. +Separate bars - is shown a separate bar for each status, and each defect type group. + +**Tests / Per cent** +Test mode - OY axis is calculated in test cases. +Percent mode - OY axis is calculated in percent. OY = 100%. + +A user can combine different options. Options are saved per user. + +:::note +The widget doesn't contain 'IN PROGRESS" launches. The widget statistics calculated only in items with method type TEST. +::: diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/DifferentLaunchesComparisonChart.mdx b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/DifferentLaunchesComparisonChart.mdx new file mode 100644 index 0000000000..6f27e3cc09 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/DifferentLaunchesComparisonChart.mdx @@ -0,0 +1,30 @@ +--- +sidebar_position: 18 +sidebar_label: Different launches comparison chart +description: Compare statistics between two latest launches side by side. Analyze test execution differences and track progress using qa dashboard tools. +--- + +# Different launches comparison chart + +The widget allows you to compare statistics for the 2 last launches side by side. + +**Widget's parameters:** + +- Filter. + +**Widget view** + +- The X-axis shows launches numbers and launches names on hover. +- Y-axis shows the percentage of test-cases by statuses. + +The widget contains agenda with statuses, the user can click on a status to remove/add it to the chart. + +The tooltip on mouse hover over the chart area shows launch details: launch name and number, launch start times and percentage of test cases of a particular type. + +The widget has clickable sections when you click on specific sections in the widget, the system forwards you to the launch view for the appropriate selection. + + + +:::note +The widget doesn't contain 'IN PROGRESS" launches. +::: diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/FailedCasesTrendChart.mdx b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/FailedCasesTrendChart.mdx new file mode 100644 index 0000000000..f2f7311c49 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/FailedCasesTrendChart.mdx @@ -0,0 +1,29 @@ +--- +sidebar_position: 16 +sidebar_label: Failed cases trend chart +description: See failed test trends over time to catch regressions early. Analyze totals by defect categories and drill into launches on your test automation dashboard. +--- + +# Failed cases trend chart + +The widget shows the trend of growth in the number of failed test cases (Product Bugs + Auto Bugs + System Issues + No Defects + To Investigates) from run to run. + +**Widget's parameters:** + +- Filter. +- Items: 1-150. The default meaning is 50. + +**Widget view** + +The widget contains the agenda: "Failed". + +- The X-axis shows launches numbers and launches names on hover. +- Y-axis shows several Failed issues (sum of Product Bugs + Auto Bugs + System Issues + No Defects + To Investigates). + +The tooltip on mouse hover over the chart area shows launch details: launch name and number, launch start time and several failed test cases. + + + +:::note +The widget doesn't contain "IN PROGRESS" launches. +::: diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/FlakyTestCasesTableTop50.mdx b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/FlakyTestCasesTableTop50.mdx new file mode 100644 index 0000000000..1fc01dc505 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/FlakyTestCasesTableTop50.mdx @@ -0,0 +1,50 @@ +--- +sidebar_position: 21 +sidebar_label: Flaky test cases table (TOP-50) +description: Track flaky tests that change status between runs. Identify unstable test cases and improve reliability using test automation metrics dashboard. +--- + +# Flaky test cases table (TOP-50) + +Shows the TOP-50 the most flaky test cases within the specified previous launches. + +The test case is displayed in the table if test case status has changed at least once from Passed to Failed or from Failed to Passed in the specified previous launches. + +:::note +For the Flaky Test Cases Table Top 50 widget, only the status of the last retry of a test case is considered. If a test case undergoes multiple retries during different launch executions, and the last retries of each launch yield identical statuses, the test case will not be classified as flaky. Thus, for a test to be identified as flaky, the final retry statuses in each launch must differ. +::: + +**Widget's parameters:** + +- Launches count: 2-100. The default meaning is 30. + +- Launch name: required filed. + +- Include Before and After methods: optional. + +**Widget view** + +The widget has a table view with the following data displayed: + +- Test Case - link to the Step level of the last launch. +- Switches - count of found results with often switches. +- % of Switches - the percent of the fact switches and the possible. +- Last switch - date and time of the last run, when the test item switches the status, displayed in “time ago” format (i.e. “10 minutes ago”). + +On mouse hover, the system will display accurate start times. + +:::note +In “Switches” column only Passed and Failed statuses are displayed (Passed - green, Failed - red). +::: + +:::important +The number of switches from one state to another of the test case with the same uniqueID is displayed in the format **N from M** where: + +**N** is the number of changes of statuses. + +**M** is the number of all possible changes of the item in selection (number of item runs=number of test executions minus number of executions with status Skipped minus 1). + +On mouse hover, tooltip appears “N status changes from M possible times”. +::: + + diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/InvestigatedPercentageOfLaunches.mdx b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/InvestigatedPercentageOfLaunches.mdx new file mode 100644 index 0000000000..caeb8a61a4 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/InvestigatedPercentageOfLaunches.mdx @@ -0,0 +1,44 @@ +--- +sidebar_position: 12 +sidebar_label: Investigated percentage of launches +description: Track the share of Investigated vs To Investigate items by launch or date. Monitor analysis progress to improve triage on your test report dashboard. +--- + +# Investigated percentage of launches + +The widget can be used in two modes - Launch mode and Timeline mode: + +- The widget in the Launch mode shows the percentage of "Investigated" and "To Investigate" items by launch to sum (Product Bugs + Auto Bugs + System Issues + To Investigates). +- The widget in the Timeline mode shows the percentage of "Investigated" and "To Investigate" items to sum (Product Bugs + Auto Bugs + System Issues + To Investigates) in all runs per day, distributed by dates. + +**Widget's parameters:** + +- Filter: At least one filter is required. +- Items: 1-150. The default meaning is 50. +- Mode: Launch or Timeline. The default meaning is Launch mode. + +**Widget view** + +The widget contains an agenda with "To Investigate" and "Investigated" labels. + +The widget view in Launch mode: + +- The X-axis shows launches numbers and launches names on hover. +- Y-axis shows the percent of "Investigated" and "To Investigate" items to sum. (Product Bugs + Auto Bugs + System Issues + To Investigates) + +The tooltip on mouse hover over the chart area shows launch details: launch name, number, launch start time and "percentage of "Investigated" or "To Investigate" items. + + + +The widget view in Timeline mode: + +- The X-axis shows dates and weekdays. +- Y-axis shows a percent of "Investigated" and "To Investigate" items to sum (Product Bugs + Auto Bugs + System Issues + No Defects + To Investigates) distributed by dates. + +The tooltip on mouse hover over the chart area shows launch details: date and percentage of "Investigated" or "To Investigate" items. + +The widget has clickable sections when you click on a specific section in the widget, the system forwards you to the launch view for the appropriate selection. + +:::note +The widget doesn't contain "IN PROGRESS" launches. +::: diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/LaunchExecutionAndIssueStatistic.mdx b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/LaunchExecutionAndIssueStatistic.mdx new file mode 100644 index 0000000000..d8b3126a29 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/LaunchExecutionAndIssueStatistic.mdx @@ -0,0 +1,31 @@ +--- +sidebar_position: 9 +sidebar_label: Launch execution and issue statistic +description: View the latest launch’s pass/fail and defect breakdown at a glance. Click to explore details and triage on your test automation reporting dashboard. +--- + +# Launch execution and issue statistic + +The Launch Execution and Issue Statistic chart shows the status and issues statistics for the last launch of a specified range. + +**Widget's parameters:** + +- Filter: required + +**Widget view** + +The widget shows statistics of the last finished launch for the chosen filter. The statistics are divided into the following sections: + +- Skipped, Passed, Failed +- Product Bug, System Issue, Automation Bug, No Defect (default and custom) and To Investigate. + +The widget contains agenda with statuses, the user can click on a status to remove/add it to the chart. + +Tooltip on mouse hover over chart area shows launch details: launch name, number, and duration. + +The statistics for every type is shown in percentage. On hover, the exact number is shown for each type. + +The widget has clickable sections when you click on a specified section in the widget, the system forwards you to the launch view for the appropriate selection. + + + diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/LaunchStatisticsChart.mdx b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/LaunchStatisticsChart.mdx new file mode 100644 index 0000000000..cf9ce17497 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/LaunchStatisticsChart.mdx @@ -0,0 +1,67 @@ +--- +sidebar_position: 6 +sidebar_label: Launch statistics chart +description: Track failure reasons and statuses across runs or dates with area or bar views. Zoom and click through for deeper insights on your test results dashboard. +--- + +# Launch statistics chart + +The widget can be used in two modes - Launch mode and Timeline mode: + +- The widget in Launch mode shows the growth trend in the number of test cases with each selected status from run to run, +- The widget in Timeline mode shows the sum of test cases with each selected status distributed by dates. + +Also, you can choose a different view of this widget: Area view or Bar view. +For a deeper investigation, you can use the Zoom widget area functionality. + +**Widget's parameters:** + +- Filter: At least one filter is required +- Items: 1-150. The default meaning is 50. +- Widget Criteria: All criteria are selected by default. +- Mode: Launch or Timeline. +- View: Area/ Bar +- Widget Criteria: All criteria are selected by default. + +:::tip +If you choose “Total Defect type”, the system will show the grouped statistics of a chosen standard defect type (the summary of all custom types).
+If you check a single custom defect type, the system will show just the defect type that you have chosen.
+If you choose “Total Defect type” and custom defect types, the system will show and grouped statistics and statistics of each custom defect types. +::: + + +**Widget view** + +The widget contains agenda with selected statuses; you can click on a status to remove/add it to the chart. + +The widget view in Launch mode: + +- The X-axis shows launches numbers and launches names (on hover). +- Y-axis shows the sum of test cases with each selected statuses. + +The tooltip on mouse hover over chart area shows launch details: launch name and number, launch start time and launch statistics. + +Area view + + +Bar view + + +The widget view in Timeline mode: + +- The X-axis shows dates and weekdays. +- Y-axis shows the sum of launches statistics with each selected statuses, distributed by weekdays. + +The tooltip on mouse hover over the chart area shows details: date and total launches statistics. + +The widget has clickable sections; when you click on a specified section in the widget, the system forwards you to launch view for appropriate selection. + +Area view + + +Bar view + + +:::note +The widget doesn't contain "IN PROGRESS" launches. +::: diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/LaunchesDurationChart.mdx b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/LaunchesDurationChart.mdx new file mode 100644 index 0000000000..aeff210962 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/LaunchesDurationChart.mdx @@ -0,0 +1,34 @@ +--- +sidebar_position: 8 +sidebar_label: Launches duration chart +description: Compare launch durations to spot slow runs and trends. Switch between all and latest modes to highlight performance in your test automation results dashboard. +--- + +# Launches duration chart + +The Launch Duration Chart shows the duration of the selected launches. + +**Widget's parameters:** + +- Filter: At least one filter is required +- Items: 1-150. Default meaning is 50 +- Mode All launches/ Latest launches + +**Widget view** + +The widget shows the duration of the filtered launches. + +- The X-axis shows launches duration. +- Y-axis shows launches numbers and launches names on hover. + +Tooltip on mouse hover over chart area shows launch details: launch name, number, and duration. + +The Widget has clickable sections when you click on a specified section in a widget, the system forwards you to launch view for appropriate selection. + +The Widget has two states: All launches and Latest lunches. If you chose *All launches* mode, the widget will show statistics about all launches in the filter. To view only the latest executions of each launch, you should choose *Latest launches*. + + + +:::note +The widget doesn't contain "IN PROGRESS" launches. +::: diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/LaunchesTable.mdx b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/LaunchesTable.mdx new file mode 100644 index 0000000000..aed79c27c1 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/LaunchesTable.mdx @@ -0,0 +1,26 @@ +--- +sidebar_position: 13 +sidebar_label: Launches table +description: View configurable launch data in table format. Click through to explore details, track progress, and analyze results using test automation reporting tools. +--- + +# Launches table + +The widget shows a configurable table of launches. + +**Widget's parameters:** + +- The widget criteria are as follows: Total, Passed, Failed, Skipped, Product Bug, Automation Bug, System Issue, To Investigate, Attributes, User, Description, Start time, Finish time. All criteria are selected by default. To specify them, uncheck unnecessary items in "Criteria for Widget". +- Items: 1-150. The default meaning is 50. + +**Widget view** + +The widget has a table view. + +The widget has clickable elements "launch name", "owner", "attributes", and "number of items"; when you click on specific elements in the widget, the system forwards you to the launch view for the appropriate selection. + + + +:::note +The widget doesn't contain "IN PROGRESS" launches. +::: diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/ManageWidgets.mdx b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/ManageWidgets.mdx new file mode 100644 index 0000000000..48627d0ae8 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/ManageWidgets.mdx @@ -0,0 +1,65 @@ +--- +sidebar_position: 5 +sidebar_label: Manage Widgets +description: Customize, resize, edit, and delete widgets on your dashboard. Organize layout and manage widget settings for optimal test automation reporting and monitoring. +--- + +# Manage Widgets + +## Customize widget + +When you create a widget in our test automation dashboard, it has a basic size. Afterward, you may change the widget size. + +To resize widget the user can hover the mouse cursor over the widget. The system will show resizing arrows. + +Grab the arrow with the cursor and drag it to the desired width and height. + +You can maintain the existing aspect ratio or set a new one when resizing the widget. + +:::note +Widgets have a minimum and maximum mean of width and height defined within the application. +::: +Another way you can customize your dashboard is by changing the widgets' placement within the dashboard canvas area. + +To change a widget placement on the dashboard, perform the following: grab a widget with the cursor by clicking and dragging it to the selected position, holding down the mouse button. + +When you move the widget to the area with sufficient space, the system highlights this place. +The widgets located in this space, are moved to the relocatable widget place. Using this option the user can configure the desired location of the widgets on a dashboard. + + + +## Edit widget + +To create a new widget for data visualization, perform the following steps: + +1. Click the "Edit" icon in the right corner of the widget header. + +2. After the "Edit Widget" window is opened, you can edit any widget settings except the template itself. + +3. Make the necessary changes and click the "Save" button. The widget will be updated. + + + +## View widgets in full-screen mode + +To view widgets on the whole screen, click the 'Full Screen' button in the right top corner of the dashboard. + +Widgets are shown in the same order as for standard view. + +:::note +Clickable areas or elements are disabled for the full-screen mode selected, therefore it will not be possible to create a new widget, update, or delete available widgets in this mode. +::: + +The auto-refresh timeout for widgets in full-screen mode is 30 sec. + +## Delete widget + +To delete the widget: + +1. Click the "Delete" icon (X) in the right corner of the widget header. + +2. Click the "Delete" button on the confirmation popup. + +3. The widget will be deleted from the system. + + diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/MostFailedTestCasesTableTop50.mdx b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/MostFailedTestCasesTableTop50.mdx new file mode 100644 index 0000000000..375e1da78f --- /dev/null +++ b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/MostFailedTestCasesTableTop50.mdx @@ -0,0 +1,34 @@ +--- +sidebar_position: 15 +sidebar_label: Most failed test-cases table (TOP-50) +description: Identify top 50 most problematic test cases with failure statistics. Track the time since the last status change and detect flaky test cases. +--- + +# Most failed test-cases table (TOP-50) + +The widget contains a table with statistical information about the TOP-50 most problematic test cases. + +**Widget's parameters:** + +- The widget criteria are as follows: Failed, Skipped, Product Bug, Automation Bug, System Issue, No Defect. Failed is selected by default. + +- Launches count: 2-150. By default, "Launches count" is 30. The number of launch last executions you want to analyze. + +- Launch name: Is required. The name of the launch which executions will be analyzed. + +- Include /Exclude Before and After methods + +**Widget view** + +The widget has a table view with the following data displayed: + +- Test Item name - link to the Step level of the last launch +- Failed - count of found failed results +- Last failure - date and time of the last run, when the test item was failed, displayed in 'time ago' format (i.e. "10 minutes ago"). + On mouse hover, the system will display accurate start times. + + + +:::note +The widget contains statistics of the most problematic test cases in all launches, except "IN PROGRESS" and "INTERRUPTED" launches. +::: diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/MostPopularPatternTableTop20.mdx b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/MostPopularPatternTableTop20.mdx new file mode 100644 index 0000000000..410da78ed8 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/MostPopularPatternTableTop20.mdx @@ -0,0 +1,36 @@ +--- +sidebar_position: 23 +sidebar_label: Most popular pattern table (TOP-20) +description: Explore the top 20 most popular patterns in dashboards and widgets to analyze trends and improve reporting insights effectively. +--- + +# Most popular pattern table (TOP-20) + +**Widget's parameters:** +- Filter +- Parameters: All launches/ Latest launches +- Number of shown patterns on the widget: 20 +- Attribute key for the first level (mandatory) + + +For this widget, the system chooses 600 last launches by start time from the filter. +Then it leaves only launches that have an attribute with mentioned key and group launches by attribute value. +The system leaves only the latest launches in each group (if the user has chosen option Latest launches in the widget wizard). +For each group of launches, a list with pattern aggregated. + + + +**Widget view** + +On the widget a user can view a table which shows: + +* 20 patterns with the biggest number of test cases in each defined group. + +Via drop-down user can transit from group to group. +A pattern name is clickable. By clicking on pattern name a user is redirected to a list with all test cases which have clicked pattern. A list of test cases includes test cases from different launches. + + + +:::note +The widget doesn't contain 'IN PROGRESS" launches. +::: diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/MostTimeConsumingTestCasesWidgetTop20.mdx b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/MostTimeConsumingTestCasesWidgetTop20.mdx new file mode 100644 index 0000000000..561d84ae05 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/MostTimeConsumingTestCasesWidgetTop20.mdx @@ -0,0 +1,49 @@ +--- +sidebar_position: 26 +sidebar_label: Most time-consuming test cases widget (TOP-20) +description: Identify the slowest test cases with duration analysis. View top 20 time-consuming tests in table or bar format using QA dashboard tool. +--- + +# Most time-consuming test cases widget (TOP-20) + +Show the TOP 20 test cases with the highest duration in the last execution of the specified launch. + +**Widget's parameters:** + +- Test Status. Default value - Passed, Failed + +- Launch name. Is required + +- Include /Exclude Before and After methods + +- View options: Bar view, Table view + +**Widget view** + +Table View + +The widget has a table view with the following data displayed: + +- Test Item name - link to the log of the last launch + +- Test Status + +- Test Duration + +- Test Start Time - date and time of the last run, displayed in 'time ago' format (i.e. "10 minutes ago"). + +On mouse hover, the system will display accurate start times. + +Bar View + +Bar chart where: + +- axis OY - Tests +- axsic OX - Duration + +Bar color specifies a color of execution. +On mouse hover, the system will display accurate start times. + + + + diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/NonPassedTestCasesTrendChart.mdx b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/NonPassedTestCasesTrendChart.mdx new file mode 100644 index 0000000000..369e38cbec --- /dev/null +++ b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/NonPassedTestCasesTrendChart.mdx @@ -0,0 +1,33 @@ +--- +sidebar_position: 17 +sidebar_label: Non-passed test-cases trend chart +description: Track non-passed test trends over time to identify quality issues. Monitor failed and skipped test percentages using QA dashboard tool. + + +--- + +# Non-passed test-cases trend chart + +The widget shows the percent ratio of non-passed test cases "Failed + Skipped" and "Total" cases from run to run. + +**Widget's parameters:** + +To configure the widget, click the "Add New Widget" button on the dashboard header, then select a template and specify the following settings on the second step: + +- Filter. +- Items: 1-150. Default meaning is 50 + +**Widget view** + +The widget contains agenda: % (Failed + Skipped) / Total. + +- The X-axis shows launches numbers and launches names on hover. +- Y-axis shows the percent of sum Failed + Skipped test cases to Total. + +The tooltip on mouse hover over the chart area shows launch details: launch name and number, launch start time and percentage of non-passed cases. + + + +:::note +The widget doesn't contain "IN PROGRESS" launches. +::: diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/OverallStatistics.mdx b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/OverallStatistics.mdx new file mode 100644 index 0000000000..0d58ff4321 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/OverallStatistics.mdx @@ -0,0 +1,41 @@ +--- +sidebar_position: 7 +sidebar_label: Overall statistics +description: Visualize passed, failed, skipped, and defect types across launches. Track trends and drill into details on your test automation reporting dashboard. +--- + +# Overall statistics + +The panel shows a summary of test cases with each status for each selected launch. + +**Widget's parameters:** + +- Filter: At least one filter is required +- Items: 1-150. The default meaning is 50. +- Widget Criteria: All criteria are selected by default. +- Type of view: Panel view/ Donut view +- Mode All launches/ Latest launches + + +**Widget view** + +The widget shows statistics of the All launches/or Latest launches for the chosen filter. Statistics are divided into the following sections: +- Skipped, Passed, Failed +- Product Bug, System Issue, Automation Bug, No Defect and To Investigate. + +The statistics for every type are shown in percentages. On hover, the exact number is shown for each type. +The Widget has clickable sections when you click on a specified section in the widget, the system forwards you to launch view for appropriate selection. + +If you chose *All launches* mode, the widget will show the statistics about all launches in the filter. To view only the latest executions of each launch, you should choose *Latest launches*. + +The widget can be viewed in two options as shown on pictures: Panel view + + + +or Donut view. + + + +:::note +The widget doesn't contain "IN PROGRESS" launches. +::: diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/PassingRatePerLaunch.mdx b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/PassingRatePerLaunch.mdx new file mode 100644 index 0000000000..fd78bcd92c --- /dev/null +++ b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/PassingRatePerLaunch.mdx @@ -0,0 +1,63 @@ +--- +sidebar_position: 19 +sidebar_label: Passing rate per launch +description: See passed vs total per launch with bar or pie views. Toggle skipped items, explore details, and drill down into tests on your test execution dashboard. +--- + +# Passing rate per launch + +Shows the percentage ratio of Passed test cases to Total test cases including or excluding Skipped ones of the selected launch. + +**Widget's parameters:** + +- Launch Name: the name of any finished launch +- Mode: Bar View/Pie View +- Ratio based on: Total test cases (Passed/Failed/Skipped) / Total test cases excluding Skipped +- Widget name: any text +- Description: any text + +:::note +During the setup process, you can choose whether to consider Skipped items using the radio button. +::: + +**Passing rate calculation including Skipped items** + +* Total test cases = Passed + Not Passed, while Not Passed = Failed + Skipped + Interrupted. +* Thus, Passing rate = Passed / (Passed + Failed + Skipped + Interrupted). + +**Passing rate calculation excluding Skipped items** + +* Total test cases = Passed +Failed, while Failed= Failed +Interrupted. +* Thus, Passing rate = Passed / (Passed + Failed + Interrupted). + +Please find below an example of configuration: + + + + + +The widget can be displayed in two options as shown on the pictures below: + +**Bar View** + + + +**Pie View** + + + +As you can see, this widget was built based on the test results of the last run of the Daily Smoke Suite. + +An example of Passing rate per launch widget including Skipped items: + + + +An example of Passing rate per launch widget excluding Skipped items: + + + +The tooltip on mouse hover over chart area shows the number of test cases and ratio of Passed/Not Passed to Total test cases (Passed, Failed, Skipped) or the number of test cases and ratio of Passed/Not Passed to Total test cases excluding Skipped. + +The Passing rate per launch widget has clickable sections. When you click on not Passed pie/bar element, system redirects to the test item view. If the widget was built with the option “Total test cases (Passed/Failed/Skipped)”, then tests with statuses Failed, Interrupted, Skipped are displayed. If the widget was built with the option “Total test cases excluding Skipped”, then tests with statuses Failed and Interrupted are displayed. + + diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/PassingRateSummary.mdx b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/PassingRateSummary.mdx new file mode 100644 index 0000000000..2d5545df55 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/PassingRateSummary.mdx @@ -0,0 +1,66 @@ +--- +sidebar_position: 20 +sidebar_label: Passing rate summary +description: Analyze passing rates across multiple launches with bar or pie views. Toggle skipped items and drill down for detailed test execution reporting insight. +--- + +# Passing rate summary + +Shows the percentage ratio of Passed test cases to Total test cases including or excluding Skipped ones for set of launches. + +**Widget's parameters:** + +* Filter: At least one filter is required +* Items: 1-600. The default meaning is 50. +* Mode: Bar View/Pie View +* Ratio based on: Total test cases (Passed/Failed/Skipped) / Total test cases excluding Skipped +* Widget name: any text +* Description: any text + +:::note +During the setup process, you can choose whether to consider Skipped items using the radio button. +::: + +**Passing rate calculation including Skipped items** + +* Total test cases = Passed + Not Passed, while Not Passed = Failed + Skipped + Interrupted. +* Thus, Passing rate = Passed / (Passed + Failed + Skipped + Interrupted). + +**Passing rate calculation excluding Skipped items** + +* Total test cases = Passed +Failed, while Failed= Failed +Interrupted. +* Thus, Passing rate = Passed / (Passed + Failed + Interrupted). + +Please find below an example of configuration: + + + + + +The widget can be displayed in two options as shown on the pictures below: + +**Bar View** + + + +**Pie view** + + + +As you can see, this widget was built based on the “Daily Smoke” filter. + + + +An example of Passing rate summary widget including Skipped items: + + + +An example of Passing rate summary widget excluding Skipped items: + + + +The tooltip on mouse hover over chart area shows the number of test cases and ratio of Passed/Not Passed to Total test cases (Passed, Failed, Skipped) or the number of test cases and ratio of Passed/Not Passed to Total test cases excluding Skipped. + +The Passing rate summary widget has clickable sections. When you click on not Passed pie/bar element, system redirects to the test item view. If the widget was built with the option **“Total test cases (Passed/Failed/Skipped)”**, then tests with statuses Failed, Interrupted, Skipped are displayed. If the widget was built with the option **“Total test cases excluding Skipped”**, then tests with statuses Failed and Interrupted are displayed. + +Thanks to “Passing rate summary” widget, it is no longer needed to spend time on calculating Passing rate of the specified set of launches. ReportPortal provides these statistics as a visualization – it is a quick and convenient decision. You can take the screenshot of widget and use it in the test results report. diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/PossibleDashboardsInReportPortal.mdx b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/PossibleDashboardsInReportPortal.mdx new file mode 100644 index 0000000000..ac31bbd62e --- /dev/null +++ b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/PossibleDashboardsInReportPortal.mdx @@ -0,0 +1,88 @@ +--- +sidebar_position: 1 +sidebar_label: Possible Dashboards in ReportPortal +description: Explore the possible dashboards and widgets in ReportPortal to visualize your test results, monitor progress, and gain actionable insights. +--- + +# Possible Dashboards in ReportPortal + +ReportPortal.io is a powerful test automation reporting dashboard that acquires a lot of analytics. With this manual, we are wanting to help you to configure simple and understandable reports for your teams. + +Let's look on 2 examples of dashboards which you can generate: +* Report for one Launch +* Report for Build (Version, Release, Sprint) + +> **Precondition** +> Let's assume that we have a Regression suite which contains: +> +> - a suite with API test cases +> - a suite with UI test cases +> - a suite with integration test cases +> +> The whole Regression is running against nightly build every day. +> Different teams are responsible for different suites. +> +> Which dashboard I can create in such conditions? + +## Report for one tests run (A dashboard for an engineer) + +The goal for this test results dashboard to show the status of the latest test run. For instance to see the latest results for launch with an API suite. + + + +You can configure: +[**Passing rate widget**](/dashboards-and-widgets/PassingRateSummary) that shows a passing rate for a latest launch "API suite' + +[**Most popular pattern**](/dashboards-and-widgets/MostPopularPatternTableTop20) tracks TOP-20 problems in the last and previous runs of this suite. + +:::note +For Most popular pattern table, you should you create a set of rules and run Pattern Analysis +::: + +With [**Investigated percentage of launches**](/dashboards-and-widgets/InvestigatedPercentageOfLaunches) you can find out the status of failure investigations. You will be able to evaluate team performance and consistency of results. + +[**Failed cases trend chart**](/dashboards-and-widgets/FailedCasesTrendChart) shows the history of failures in previous runs. + +[**Duration chart**](/dashboards-and-widgets/LaunchesDurationChart) will be very helpful for those who track duration KPI and want to increase the speed of tests run. + +[**Test growth trend chart**](/dashboards-and-widgets/TestCasesGrowthTrendChart) shows you the speed of new test cases creation. + +Also, you can create [**"Most flaky test cases"**](/dashboards-and-widgets/FlakyTestCasesTableTop50) and [**"Most failed test case"**](/dashboards-and-widgets/MostFailedTestCasesTableTop50) and find the most unstable items which should be taken into account. + +Let's assume that you have a lot of test results and a lot of teams. + +You can create [**Overall statistics**](/dashboards-and-widgets/OverallStatistics) and [**Launches table**](/dashboards-and-widgets/LaunchesTable), and now a team who is responsible for API suite has no need to go to the test results. It can use only this dashboard which gives enough information for test failure management. + +## Build / Release/ Sprint Report (A dashboard for a Team leads, PM, DM) + +The goal of this report to show status for the whole version. It means for this report we want to see the latest results of aggregated statistics for several lanches. + +In our example, I want to see the latest results for the whole Regression (latest results for API suite + latest results for UI + latest results for Integration tests). + +Also, it is very useful to compare the results of the Regression on the current version with the Regression on previous versions and to see details about business metrics. + + + +On this dashboard you can see different metrics: + +- A passing rate for the whole Regression +- With [**Cumulative trend chart**](/dashboards-and-widgets/CumulativeTrendChart) you will be able to compare different versions on one chart, to compare different runs for the current regression +- [**Component Health Check Widget**](/dashboards-and-widgets/ComponentHealthCheck) would show you product: + +* on different env +* on a different dimension +* by business metrics / by features/ by user roles / by etc + +Also with a help of [**Component Health Check Widget**](/dashboards-and-widgets/ComponentHealthCheck) you can create a Test Pyramid. + +:::note +You need to report test executions with attributes which specified needed metrics or envs +::: + +- [**Unique bugs table**](/dashboards-and-widgets/UniqueBugsTable) helps you collect and analyze new bugs in the system + +:::note +Component Health Check Widget and Cumulative trend chart are very configurable and you can create your own widget based on project needs. +::: + + diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/ProjectActivityPanel.mdx b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/ProjectActivityPanel.mdx new file mode 100644 index 0000000000..adc66c7ba3 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/ProjectActivityPanel.mdx @@ -0,0 +1,28 @@ +--- +sidebar_position: 10 +sidebar_label: Project activity panel +description: Monitor all project activities and user actions in real-time. Track launches, user management, and system changes using qa metrics dashboard. +--- + +# Project activity panel + +The widget shows all activities occurring on the project. + +**Widget's parameters:** + +- **The actions for the widget:** Start launch, Finish launch, Delete launch, Actions with issues, Assign/Invite users, Unassign user, Change role, Update Dashboard, Update widget, Update Filter, Update integration, Update project settings, Update Auto-Analysis settings, Update defect types, Import, Update Pattern-Analysis settings, Create pattern, Update pattern, Delete pattern, Pattern matched, Create project. + +- **Items:** 1-150. The default value is 50. + +- **Criteria for widget:** By default, all user's activities. + +**Widget view** + +The actions on the widget are present in a table, separated by days. Action messages have the following format: + +> *Member (name) did action.* +> *Time - displayed in 'time ago' format (i.e. "10 minutes ago"). On mouse hover, the system should display accurate action time.* + + + + diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/ReportingAndMetricsInReportPortal.md b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/ReportingAndMetricsInReportPortal.md new file mode 100644 index 0000000000..f43d299ca3 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/ReportingAndMetricsInReportPortal.md @@ -0,0 +1,33 @@ +--- +sidebar_position: 2 +sidebar_label: Reporting and metrics in ReportPortal +description: With ReportPortal, you can boost your software quality by obtaining detailed test automation reports to monitor test execution, identify issues, and analyze trends for continuous enhancement. +--- + +# Reporting and metrics in ReportPortal + +## Test automation reports in ReportPortal + +With ReportPortal, you can boost your software quality by obtaining detailed +test automation reports to monitor test execution, identify issues, and analyze trends for continuous enhancement through collaborative dashboards in test reporting. + +| Report | Description | Widget | +|-------------------------------| --|-------------| +| **Summary report** | An overview of test execution: tests run, passed, and failed. | [Overall statistics](/dashboards-and-widgets/OverallStatistics)

[Launches table](/dashboards-and-widgets/LaunchesTable)

[Passing rate summary](/dashboards-and-widgets/PassingRateSummary) | +| **Detailed test case report** | Specific details about individual test cases: status (Passed/Failed), execution time, and associated issues/errors. | [Most failed test-cases table (TOP-50)](/dashboards-and-widgets/MostFailedTestCasesTableTop50/)

[Flaky test cases table (TOP-50)](/dashboards-and-widgets/FlakyTestCasesTableTop50/)

[Unique bugs table](/dashboards-and-widgets/UniqueBugsTable/) | +| **Trend analysis report** | The trends in test results over time. | [Most failed test-cases table (TOP-50)](/dashboards-and-widgets/MostFailedTestCasesTableTop50/)

[Flaky test cases table (TOP-50)](/dashboards-and-widgets/FlakyTestCasesTableTop50/)

[Failed cases trend chart](/dashboards-and-widgets/FailedCasesTrendChart/)

[Passing rate summary](/dashboards-and-widgets/PassingRateSummary) | +| **Failure analysis report** | The failed test cases and their details. | [Most failed test-cases table (TOP-50)](/dashboards-and-widgets/MostFailedTestCasesTableTop50/)

[Flaky test cases table (TOP-50)](/dashboards-and-widgets/FlakyTestCasesTableTop50/)

[Failed cases trend chart](/dashboards-and-widgets/FailedCasesTrendChart/)

[Most popular pattern table (TOP-20)](/dashboards-and-widgets/MostPopularPatternTableTop20/) | +| **Execution history report** | The historical data of test runs. | [Passing rate summary](/dashboards-and-widgets/PassingRateSummary)

[Launches duration chart](/dashboards-and-widgets/LaunchesDurationChart/)

[Investigated percentage of launches](/dashboards-and-widgets/InvestigatedPercentageOfLaunches/)

[Test-cases growth trend chart](/dashboards-and-widgets/TestCasesGrowthTrendChart/) | + +## QA and test automation metrics in ReportPortal + +ReportPortal provides various metrics for improving quality assurance and the overall effectiveness of the testing process. + +| Metric | Description | Widget | +|-----------------------------------| --|------------| +| **Passed/Failed rates** | The percentage of test cases that are passing or failing during test execution. | [Passing rate per launch](/dashboards-and-widgets/PassingRatePerLaunch/)

[Passing rate summary](/dashboards-and-widgets/PassingRateSummary/)

[Launch statistics chart](/dashboards-and-widgets/LaunchStatisticsChart/)

[Overall statistics](/dashboards-and-widgets/OverallStatistics/)

[Launch execution and issue statistic](/dashboards-and-widgets/LaunchExecutionAndIssueStatistic/) | +| **Execution time** | The time it takes to execute test suites or individual test cases. | [Launches duration chart](/dashboards-and-widgets/LaunchesDurationChart/)

[Most time-consuming test cases widget (TOP-20)](/dashboards-and-widgets/MostTimeConsumingTestCasesWidgetTop20/) | +| **Defect density** | The number of defects found per unit of code or test case provides a quantitative perspective on the software quality of a given system under test. | [Component health check](/dashboards-and-widgets/ComponentHealthCheck/) | +| **Test case success rate** | The percentage of successful test cases out of the total executed highlights the reliability of the test. | [Passing rate per launch](/dashboards-and-widgets/PassingRatePerLaunch/)

[Passing rate summary](/dashboards-and-widgets/PassingRateSummary/)

[Launch statistics chart](/dashboards-and-widgets/LaunchStatisticsChart/)

[Overall statistics](/dashboards-and-widgets/OverallStatistics/)

[Launch execution and issue statistic](/dashboards-and-widgets/LaunchExecutionAndIssueStatistic/) | +| **Regression test effectiveness** | The capability of regression tests to detect new defects or issues. | [Overall statistics](/dashboards-and-widgets/OverallStatistics/), with special defect type for issues found in regression.

[Unique bugs table](/dashboards-and-widgets/UniqueBugsTable/), with special defect type for issues found in regression. | +| **Error/failure distribution** | The frequency and distribution of test failures across defined components or modules within a given system under test. | [Component health check](/dashboards-and-widgets/ComponentHealthCheck/) | diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/TableComponentHealthCheck.mdx b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/TableComponentHealthCheck.mdx new file mode 100644 index 0000000000..25fece9c4d --- /dev/null +++ b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/TableComponentHealthCheck.mdx @@ -0,0 +1,111 @@ +--- +sidebar_position: 25 +sidebar_label: Table Component health check +description: See which components need attention, compare metrics across builds, and quickly investigate failures to keep your system running smoothly. +--- + +# Table Component health check + +Shows the detailed statistics of the application components which are indicated by the specified attributes with an ability to exclude Skipped tests from the statistics. +As far as the widget contains complicated queries, the widget can be rendering some time (~10 min). + +:::note +To use this widget, you need to report (or manually add) attributes to test items. +::: + +## Widget's parameters: + +- Filter +- Parameters: All Launches/Latest Launches +- Checkbox 'Exclude Skipped Tests from Statistics' +- The minimum allowable passing rate for the component: possible values range from 50 - 100%. The default value is 100%. +- Attribute key for the first level (mandatory) +- Attribute key for the 2nd to 10th levels (optional) +- Custom column (enter an attribute key - optional) +- Sorting: 'Sort By' dropdown with the options 'Custom Column', 'Total', 'Passing Rate', 'Failed Items'. The default value is 'Passing Rate'. + + + +When the **checkbox 'Exclude Skipped tests from statistics' is selected**, the passing rate is calculated based on the total number of test cases, excluding the skipped tests. + +When the **checkbox 'Exclude Skipped tests from statistics' is not selected**, the passing rate is calculated based on the total number of test cases, including the skipped tests. + +## Widget View + +The widget has a table view. Each line contains information about one component (one unique attribute value): + +- Component name +- Component passing rate +- Statistics: Total/Passed/Failed/Skipped/Product bugs/ Automation bugs/System issues/To investigate +- Information about attribute value in the custom column + +The total line presents a summary of all components. + + + +When you click on **'Total'** test cases for the component and checkbox 'Exclude Skipped tests from statistics' is not selected, system redirects you to the test item view. Test items with statuses Passed, Failed, Interrupted, Skipped are displayed. + +When you click on **'Total'** test cases for the component and checkbox 'Exclude Skipped tests from statistics' is selected, system redirects you to the test item view. Test items with statuses Passed, Failed and Interrupted are displayed. + +When you click on **'Passed'** test cases for the component (if any) and checkbox 'Exclude Skipped tests from statistics' is not selected, system redirects you to the test item view. Test items with statuses Passed are displayed. + +When you click on **'Passed'** test cases for the component (if any) and checkbox 'Exclude Skipped tests from statistics' is selected, system redirects you to the test item view. Test items with statuses Passed are displayed. + +When you click on **'Failed'** test cases for the component (if any) and checkbox 'Exclude Skipped tests from statistics' is not selected, system redirects you to the test item view. Test items with statuses Failed, Interrupted are displayed. + +When you click on **'Failed'** test cases for the component (if any) and checkbox 'Exclude Skipped tests from statistics' is selected system redirects you to the test item view. Test items with statuses Failed, Interrupted are displayed. + +When you click on **Skipped** test cases for the component (if any) and checkbox 'Exclude Skipped tests from statistics' is not selected, system redirects you to the test item view. Test items with statuses Skipped are displayed. + +**Custom Column** + +Why might you need a custom column? Let's explore this through an example. + +## Use case #1 + +**Use Case:** You need to understand the impact of failed test cases. + +**Problem:** You have created a Component Health Check widget and can view a list of features along with their passing rate. However, you cannot ascertain the significance of the failed features. + +**Solution:** For all test executions, add attributes with the attribute key 'priority: XXX'. For instance: + +- priority: low +- priority: major +- priority: critical + +Then, in the widget wizard, add the attribute key 'priority' in the custom column field. This action enables the system to include information regarding the priority of each feature in the widget view. + +**Custom Sorting** + +You can select how components should be sorted in the table. Possible criteria include: + +- Total +- Passing Rate +- Custom Column +- Failed Items + +## Use case #2 + +**Use Case:** To track information about the latest version without updating the filter. + +**Problem:** As a test lead, you want to track information about the latest results without having to make additional adjustments. Your version contains several launches: a launch with API test cases, a launch with UI test cases, and a launch with Integration test cases. You aim to track the summary statistics of the latest results for the API launch, UI launch, and Integration launch. For this, you've added an attribute 'version: XXX' to all the necessary launches, denoting the number of versions. You've also created a filter including all launches with the respective attribute. Now, you can create an Overall Statistics widget which will show you a summary of the latest results for version: xxx. But whenever you run a new version (for instance, version: xxx+1), you have to repeatedly carry out the previous steps - creating the filter and updating the widget. + +**Solution:** To avoid these redundant steps, create a filter that includes three launches: API, UI, and Integration. Subsequently, create a Component Health Check widget (table view) with this filter and add the attribute key 'version' for grouping. Now, you will see a summary for the latest version every day. Whenever a new version enters the system, the widget automatically updates to remove information about the previous version and adds information about the latest version. + + + +## Use case #3 + +**Use Case:** To track information about components such as features, browsers, platforms, etc. + +**Problem:** You are running different launches: API launch, UI launch, and Integration launch. These three launches include test cases that belong to different features. You need to track overall statistics for features, not for launches. + +**Solution:** Create a filter that includes the three launches: API launch, UI launch, and Integration launch. Then, create a Component Health Check widget (table view) with this filter and add the attribute key 'feature' for grouping. As a result, you will see a summary of all features across various launches. + + + + + +:::important +The Component Health Check widget (table view) is the first widget to use a materialized view in PostgreSQL. The creation of this view takes time. As a result, information about new launches in the filter is added dynamically. Therefore, users should manually update the widget by clicking on the update button. The time of the last update is displayed on the widget. +::: diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/TestCaseSearch.mdx b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/TestCaseSearch.mdx new file mode 100644 index 0000000000..1d1aeb4b3a --- /dev/null +++ b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/TestCaseSearch.mdx @@ -0,0 +1,123 @@ +--- +sidebar_position: 27 +sidebar_label: Test Case Search widget +description: Find specific test cases by name or attributes across all launches. Search, filter, and drill down into test details using qa metrics dashboard. +--- + +# Test case search + +Allows finding a test case by name or attribute throughout all launch executions within the same project. + +## Widget's parameters: + +- Widget name +- Description + +## Widget view + +### Refine section: + +- "Test name" text field. Condition dropdown is disabled. By default – cnt (contains) +- "Attribute" text field – key and value options +- "Display launches" toggle – default state: OFF +- "Edit" icon +- "Update" icon +- "Cross" icon + +### Table section: + +- Name – name of the test +- Status – status of the test +- Start Time – start time of the test +- Defect type + +:::note +The widget data is displayed in view mode. Navigate to the step level of the launch by clicking on the test name to make the changes under the test case. +::: + +***Default state*** + + + +***Widget data*** + + + +:::important +The search in the "Test name" field is performed for test items of type "Step". +::: + +When the "Test name" is provided, "attribute" field is disabled. + + + +When "Attribute" is added, "Test name" field is disabled. + +You can filter test cases by full match of key and value fields, or by attribute "value" only (when step item has empty "key"). Only one attribute can be specified. + +***Attribute with key and value*** + + + +***Attribute with value only*** + + + +:::tip +To ensure optimal search performance, avoid using special characters in search queries. Instead, use only Latin alphabetic and numeric characters.
+ +**Reason:** PostgreSQL does not index special characters, meaning queries containing them trigger a full-table scan. This can noticeably impact search performance, particularly for large datasets or when no matching results are found.
+ +**Wildcard Behavior:** +Certain special characters, such as ```_``` and ```%```, function as wildcard symbols when placed at the beginning or end of a query.
+ +**Example:** The query ```_atch``` will return results like patch, since ```_``` acts as a placeholder for any single character. +::: + +The search results display the first 10 items found, sorted by start time in descending order. + +Besides attribute and test name, you can also filter the data based on test status. + + + +If more than one page exists for the specified search criteria, a "Load more" button appears at the bottom of the widget. + + + +By clicking "Load more", additional 10 results (or less if available) appear. Previously loaded results remain visible and are supplemented with new data. If at least one more page is available, the "Load more" button continues to appear at the bottom of the widget. + +If more than 30 pages exist for the specified search criteria, the "Load more" button becomes disabled after loading the 30th page. The limit for the widget is 300 latest test cases. + + + +When the "Display launches" toggle is ON, the displayed results are grouped by launch execution and parent items (Launch/suite/test). + + + +By clicking on the "Update" icon the page is refreshed a new request with specified in the widget parameters is sent. Only the first page is displayed. + + + +By clicking on the test name, the user is redirected to the test's log level in a new tab (the same action occurs when clicking the icon next to the test name). + + + +If a test item has a long description, an arrow appears to expand it. + + + + + +When hovering over the Start Time field, the format changes while hovering; clicking changes it per application settings. + + + +Sorting is available by the Start Time field, with descending order set by default. Users can switch between ascending and descending order. + +By clicking the link to the bug tracking system, the ticket in the BTS opens. + + + + + + diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/TestCasesGrowthTrendChart.mdx b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/TestCasesGrowthTrendChart.mdx new file mode 100644 index 0000000000..3dc3c23287 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/TestCasesGrowthTrendChart.mdx @@ -0,0 +1,44 @@ +--- +sidebar_position: 11 +sidebar_label: Test-cases growth trend chart +description: Monitor the addition of new test cases in each launch, identify growth patterns, and assess testing coverage to optimize your test strategy. +--- + +# Test-cases growth trend chart + +The widget can be used in two modes - Launch mode and Timeline mode: + +- The widget in the Launch mode shows the increment of test-cases from run to run, +- The widget in the Timeline mode shows the increment of test-cases distributed by dates (in launches with the largest number of test-cases per day). + +**Widget's parameters:** + +- Filter: At least one filter is required +- Items: 1-150. The default meaning is 50. +- Mode: Launch or Timeline. + +**Widget view** + +The widget view in Launch mode: + +- The X-axis shows launches numbers and launches names on hover. +- Y-axis shows the increment of test-cases. + +The tooltip on mouse hover over the chart area shows launch details: launch name and number, launch start time and launch statistics - total number of test cases and test cases growth. + + + +The widget view in Timeline mode: + +- The X-axis shows dates and weekdays. +- Y-axis shows the increment of test-cases in launches with the largest number of test-cases per day. + +The tooltip on mouse hover over the chart area shows launch details: date and launch statistics - total number of test cases and test cases growth. + +The widget has clickable sections when you click on a specific section in the widget, the system forwards you to the launch view for the appropriate selection. + + + +:::note +The widget doesn't contain "IN PROGRESS" launches. +::: diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/UniqueBugsTable.mdx b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/UniqueBugsTable.mdx new file mode 100644 index 0000000000..1136204322 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/UniqueBugsTable.mdx @@ -0,0 +1,32 @@ +--- +sidebar_position: 14 +sidebar_label: Unique bugs table +description: Track unique bugs posted to bug tracking systems. View bug details, submission dates, and linked test items using QA dashboard tool. +--- + +# Unique bugs table + +The widget shows real identified bugs, posted to the Bug Tracking System from ReportPortal, and existing bugs, that were added to the items on ReportPortal. + +**Widget's parameters:** + +- Filter: At least one filter is required +- Items: 1-150. The default meaning is 10. + +**Widget view** + +The widget has a table view and bugs that are found are then sorted by the date they were posted or added. + +The widget has the following data displayed: + +- Bug ID - links to the issue in Bug Tracking System. +- Found in - links to the test item, to which the bug was posted/added. +- Submit date - the date the bug was submitted/added. Time is displayed in 'time ago' format (i.e. "10 minutes ago"). On mouse hover, the system should display accurate action time. +- Submitter - user, who submitted/added the bug. + + + +:::note +The bugs from launches "IN PROGRESS" are not shown on the widget. +In case a bug is found in multiple items, all of the items will be listed in the "Found in" column. +::: diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/WidgetCreation.mdx b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/WidgetCreation.mdx new file mode 100644 index 0000000000..b136a102e2 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/WidgetCreation.mdx @@ -0,0 +1,68 @@ +--- +sidebar_position: 4 +sidebar_label: Widget Creation +description: Create widgets to visualize trends, failures, and KPIs. Use templates and filters to build a clear test automation metrics dashboard tailored to your needs. +--- + +# Widget Creation + +In our test automation dashboard widgets contain special graphical control elements that were designed to provide a simple and +easy-to-use way of displaying and analyzing your automation trends and data. + +:::note +Fullscreen widgets auto-refresh every 30 seconds. +::: + +The widgets can be added to dashboards on the "Dashboards" tab. Widgets will be visible within the project, they are created. + +## Create widget + +To create a new widget, perform the following steps: + +1. Navigate to the "All Dashboards" page and create a new dashboard or choose the existing one. + +2. Click the "Add New Widget" button. + +3. The Widget Wizard will be opened. To add a new widget, you need to pass all the required steps. + + • Step 1. Select the template of the widget (detailed description is below). + + • Step 2. Select a filter from the list below or create a new filter. Search functionality helps to find the filter quicker. Select other widget options: Criteria, Items, Launch or Timeline mode (if applicable for selected widget template) + + • Step 3. Enter a widget name and description. + A widget name should be unique for a user on the project. + +4. After you have completed all steps, click the "Save" button. The new widget will be added to the dashboard on the top. + +Widgets are automatically refreshed every minute. + + + +## Predefined widgets types + +There are 15 widget templates in ReportPortal for tracking different KPI: + +| KPI | Widget template | +|----------------------------------------------------------------------------------|------------------------------------------------------------------------| +| Track the reasons of failures | [Launch statistics chart](/dashboards-and-widgets/LaunchStatisticsChart) | +| Passing rate for filter summary, and structure of problems | [Overall statistics](/dashboards-and-widgets/OverallStatistics) | +| Track the longest launch in the filter | [Launches duration chart](/dashboards-and-widgets/LaunchesDurationChart) | +| Track the passing rate and structure of problems of the latest run in the system | [Launch execution and issue statistic](/dashboards-and-widgets/LaunchExecutionAndIssueStatistic) | +| Track the activity of your QA team | [Project activity panel](/dashboards-and-widgets/ProjectActivityPanel) | +| Track the growth of new test cases in your build | [Test-cases growth trend chart](/dashboards-and-widgets/TestCasesGrowthTrendChart) | +| Track the speed of test failure analysis | [Investigated percentage of launches](/dashboards-and-widgets/InvestigatedPercentageOfLaunches) | +| Follow up information about only important launches for your team | [Launches table](/dashboards-and-widgets/LaunchesTable) | +| Track new BTS issues in your run | [Unique bugs table](/dashboards-and-widgets/UniqueBugsTable) | +| Track the most unstable test cases in the build | [Most failed test-cases table](/dashboards-and-widgets/MostFailedTestCasesTableTop50) | +| See the trend of the number of failed test cases from build to build | [Failed cases trend chart](/dashboards-and-widgets/FailedCasesTrendChart) | +| See the trend of the number of failed and skipped test cases from build to build | [Non-passed test-cases trend chart](/dashboards-and-widgets/NonPassedTestCasesTrendChart) | +| Compare two launches together | [Different launches comparison chart](/dashboards-and-widgets/DifferentLaunchesComparisonChart) | +| Track passing rate for one launch | [Passing rate per launch](/dashboards-and-widgets/PassingRatePerLaunch) | +| Track passing rate for the build | [Passing rate summary](/dashboards-and-widgets/PassingRateSummary) | +| Find the most flakiest test in the build | [Flaky test cases table (TOP-50)](/dashboards-and-widgets/FlakyTestCasesTableTop50) | +| Compare statistics for different builds on one graph | [Cumulative trend chart](/dashboards-and-widgets/CumulativeTrendChart) | +| Track the most popular failure reasons in the build | [Most popular pattern table (TOP-20)](/dashboards-and-widgets/MostPopularPatternTableTop20) | +| Track the passing rate of different components of your application | [Component health check](/dashboards-and-widgets/ComponentHealthCheck) | +| Track the statistics of different components of your application | [Component health check (table)](/dashboards-and-widgets/TableComponentHealthCheck) | +| Track the top-20 tests with longest execution time | [Most time-consuming test cases widget (TOP-20)](/dashboards-and-widgets/MostTimeConsumingTestCasesWidgetTop20) | +| Find test case by name and/or attribute through out all launches executions | [Test case search](/dashboards-and-widgets/TestCaseSearch) | diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/WorkWithDashboards.mdx b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/WorkWithDashboards.mdx new file mode 100644 index 0000000000..726edf1823 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/WorkWithDashboards.mdx @@ -0,0 +1,204 @@ +--- +sidebar_position: 3 +sidebar_label: Work with dashboards +description: Create, edit, clone, and manage dashboards in ReportPortal. Build focused views with widgets and videos to monitor releases on a live test results dashboard. +--- + +# Work with dashboards + +Dashboards on our continuous testing platform are special containers, where users can create widgets. + +To create and use dashboards, navigate to the "Dashboards" tab. + +You can create a dashboard that will be visible on the current project. + +:::note +Up to 3,000 dashboards per project (since v24.2).
+Names must be 3–55 characters and unique per user per project. +::: + +## Create dashboard + +To create a new dashboard, perform the following steps: + +1. Navigate to the "Dashboards" page and click "Add New +Dashboard" button in the top right corner of the page. + +2. The "Add New Dashboard" popup will be opened. + +3. Enter a name for a new dashboard. The +name should be between 3 to 55 characters long and unique for the user per the +project. You can add the description for your dashboard as well. + +4. Click "Add" button. The new dashboard will be created. + +Now you can add widgets to the dashboard. + + + +## Edit dashboard + +To edit a dashboard, perform the following steps: + +1. Navigate to "All Dashboards" page. + +2. Click the "Edit" icon in the top corner of the dashboard or +click the name of the dashboard and click 'Edit' button in the header of the dashboard. + +3. The "Edit Dashboard" popup will be opened. + +4. Make the necessary changes and click "Update" button. The dashboard will +be displayed with updates. + + + +## Delete dashboard + +To remove a dashboard from the project, perform the following steps: + +1. Click the "Delete" button in the top right corner of the dashboard. + +2. Click the "Delete" button on confirmation pop-up. + +The dashboard and related widgets will be deleted from the system. + + + +## Dashboard cloning + +Dashboards simplify tracking key metrics and project performance. However, manually recreating the same dashboard for multiple projects can be time-consuming and inefficient. + +With the dashboard cloning feature, you only need to create a reference dashboard once you have an instance deployed for your organization. You can then replicate this dashboard across projects without wasting effort on manually recreating the same sequence of widgets from scratch. + +ReportPortal offers two ways to clone dashboards: +- through the UI +- via API + +**Permissions:**
+Any user in a project, regardless of their role, can use the dashboard cloning feature.
+If a user has access to multiple projects, they can clone a dashboard to any of them.
+An admin can perform dashboard cloning without being assigned to a specific project. + +### Dashboard cloning via UI + +#### Within a single project + +To duplicate dashboard via the UI within the same project: + +1. Log in to ReportPortal. +2. Open Dashboards page. +3. Click ‘Copy’ icon next to the desired dashboard. +4. Select ‘Duplicate’ option from the dropdown menu. + + + +5. In the modal window, update the duplicated dashboard's name if necessary. + + + +6. Click ‘Duplicate’ button. + +As a result: + +1. The dashboard will be copied along with all its widgets, maintaining the same order as in the initial dashboard. +2. If you haven't specified a new name for the duplicated dashboard, the word ‘copy’ will be added to the name. + + + +3. The ‘Owner’ field will display the name of the user who duplicated the dashboard, rather than the name of the original creator. +4. New filters will appear on the filters page. + + + +#### From one project to another + +To copy dashboard configuration to another project: + +1. Log in to ReportPortal. +2. Open Dashboards page. +3. Click ‘Copy’ icon next to the desired dashboard. +4. Select ‘Copy dashboard configuration to clipboard’ option from the dropdown menu. + + + +5. Open Dashboards page on another project. +6. Click ‘Add New Dashboard’ button at the top of the page. + + + +7. Enter the name of a new dashboard. +8. Click ‘Show dashboard configuration’ link. + + + +9. Click ‘Paste configuration’ button. + + + +10. Click ‘Add’ button. + + + +As a result: + +1. The dashboard will be copied along with all its widgets, maintaining the same order as in the initial dashboard. + + + +2. If you haven't specified a new name for the dashboard, the word ‘copy’ will be added to the name. +3. The ‘Owner’ field will display the name of the user who performed the dashboard configuration copying, rather than the name of the original dashboard creator. +4. New filters will appear on the filters page. + +### Dashboard cloning via API + +To clone the dashboard configuration via API: + +1. Log in to ReportPortal. +2. Open the API section on the bottom menu. + + + +3. Click on ‘Dashboard’ controller link. + + + +4. Expand ```/v1/{projectName}/dashboard/{dashboardId}/config``` endpoint. +5. Click ‘Try it out’ button. + + + +6. Fill dashboard ID and project name fields. + + + + + +7. Click ‘Execute’ button. +8. Copy dashboard configuration. + + + +To add the copied dashboard configuration to another project via API: + +1. Expand ```/v1/{projectName}/dashboard/preconfigured``` endpoint. +2. Click ‘Try it out’ button. + + + +3. Fill project name field. +4. Specify new dashboard name in the Request body field. + + + +5. Paste copied dashboard configuration the Request body field instead of sample widgets. +6. Click ‘Execute’ button. + +:::important +Be careful with the JSON syntax. +::: + +Dashboard ID in the response corresponds to cloned dashboard. + + + + diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/_category_.json b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/_category_.json new file mode 100644 index 0000000000..7d80f4985e --- /dev/null +++ b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Dashboards and widgets", + "position": "15", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning1.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning1.png new file mode 100644 index 0000000000..db280535b5 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning1.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning10.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning10.png new file mode 100644 index 0000000000..5bdcf586e9 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning10.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning11.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning11.png new file mode 100644 index 0000000000..105d81176e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning11.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning12.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning12.png new file mode 100644 index 0000000000..db06cd59a9 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning12.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning13.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning13.png new file mode 100644 index 0000000000..5ff50a0321 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning13.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning14.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning14.png new file mode 100644 index 0000000000..221a18067e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning14.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning15.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning15.png new file mode 100644 index 0000000000..7e63c2b5b0 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning15.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning16.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning16.png new file mode 100644 index 0000000000..64480d59a4 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning16.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning17.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning17.png new file mode 100644 index 0000000000..caa9d3b00b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning17.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning18.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning18.png new file mode 100644 index 0000000000..8e8a839598 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning18.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning19.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning19.png new file mode 100644 index 0000000000..cf9d580353 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning19.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning2.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning2.png new file mode 100644 index 0000000000..ce46f4d46c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning2.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning20.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning20.png new file mode 100644 index 0000000000..d877bdc890 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning20.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning3.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning3.png new file mode 100644 index 0000000000..9f453a96d2 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning3.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning4.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning4.png new file mode 100644 index 0000000000..cb9246c33f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning4.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning5.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning5.png new file mode 100644 index 0000000000..f836df6714 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning5.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning6.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning6.png new file mode 100644 index 0000000000..bb789e951a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning6.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning7.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning7.png new file mode 100644 index 0000000000..995c92cc14 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning7.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning8.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning8.png new file mode 100644 index 0000000000..b07dadd46d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning8.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning9.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning9.png new file mode 100644 index 0000000000..1231123e02 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboard-cloning/DashboardCloning9.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboards/BuildReport.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboards/BuildReport.png new file mode 100644 index 0000000000..073627bc58 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboards/BuildReport.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboards/LaunchReport.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboards/LaunchReport.png new file mode 100644 index 0000000000..f502a7824b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/dashboards/LaunchReport.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckArrow.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckArrow.png new file mode 100644 index 0000000000..2c890e177c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckArrow.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckCreation.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckCreation.png new file mode 100644 index 0000000000..684136be1b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckCreation.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckFirstLevel.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckFirstLevel.png new file mode 100644 index 0000000000..58cbf06295 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckFirstLevel.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckPassedFailed.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckPassedFailed.png new file mode 100644 index 0000000000..a214740e89 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckPassedFailed.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme1.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme1.png new file mode 100644 index 0000000000..af792433e3 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme1.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme2.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme2.png new file mode 100644 index 0000000000..fab7e50602 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme2.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme3.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme3.png new file mode 100644 index 0000000000..66a488bd42 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme3.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme4.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme4.png new file mode 100644 index 0000000000..701f5957e6 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme4.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme5.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme5.png new file mode 100644 index 0000000000..e1b4390a4e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme5.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme6.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme6.png new file mode 100644 index 0000000000..b40fb4bfca Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme6.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme7.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme7.png new file mode 100644 index 0000000000..933945559a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme7.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme8.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme8.png new file mode 100644 index 0000000000..1b122dbebb Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme8.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme9.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme9.png new file mode 100644 index 0000000000..289ab4976a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckScheme9.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckSecondLevel.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckSecondLevel.png new file mode 100644 index 0000000000..8edd182fc3 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckSecondLevel.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTableBuild.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTableBuild.png new file mode 100644 index 0000000000..a0a0508974 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTableBuild.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTableCreate.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTableCreate.png new file mode 100644 index 0000000000..a4e57429c1 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTableCreate.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTableFeature.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTableFeature.png new file mode 100644 index 0000000000..b395ec9cbe Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTableFeature.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTableView.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTableView.png new file mode 100644 index 0000000000..5c9bb6303f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTableView.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTests1.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTests1.png new file mode 100644 index 0000000000..e2fce1fc26 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTests1.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTests2.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTests2.png new file mode 100644 index 0000000000..b7683e0959 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ComponentHealthCheckTests2.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/CumulativeCreation.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/CumulativeCreation.png new file mode 100644 index 0000000000..6737843aeb Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/CumulativeCreation.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/CumulativeFirstLevelNumberOfTestCases.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/CumulativeFirstLevelNumberOfTestCases.png new file mode 100644 index 0000000000..39fe7c05b2 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/CumulativeFirstLevelNumberOfTestCases.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/CumulativeScheme1.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/CumulativeScheme1.png new file mode 100644 index 0000000000..afee3bb7cd Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/CumulativeScheme1.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/CumulativeScheme2.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/CumulativeScheme2.png new file mode 100644 index 0000000000..29c8b73feb Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/CumulativeScheme2.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/CumulativeScheme3.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/CumulativeScheme3.png new file mode 100644 index 0000000000..b20e647bdb Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/CumulativeScheme3.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/CumulativeScheme4.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/CumulativeScheme4.png new file mode 100644 index 0000000000..36b3bdf238 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/CumulativeScheme4.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/CumulativeScheme5.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/CumulativeScheme5.png new file mode 100644 index 0000000000..c76a751bd1 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/CumulativeScheme5.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/CumulativeTrendChart.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/CumulativeTrendChart.png new file mode 100644 index 0000000000..dd6fc9635f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/CumulativeTrendChart.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/DifferentLaunchesComparisonChart.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/DifferentLaunchesComparisonChart.png new file mode 100644 index 0000000000..678e285590 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/DifferentLaunchesComparisonChart.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/FailedCasesTrendChart.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/FailedCasesTrendChart.png new file mode 100644 index 0000000000..5ad00460f6 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/FailedCasesTrendChart.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/FlakyTestCasesTableWidget.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/FlakyTestCasesTableWidget.png new file mode 100644 index 0000000000..cb0bc77b32 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/FlakyTestCasesTableWidget.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/InvestigatedPercentageOfLaunches.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/InvestigatedPercentageOfLaunches.png new file mode 100644 index 0000000000..e27bfab99f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/InvestigatedPercentageOfLaunches.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchExecutionAndIssueStatistic.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchExecutionAndIssueStatistic.png new file mode 100644 index 0000000000..b3cfe13333 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchExecutionAndIssueStatistic.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchStatisticsChart1.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchStatisticsChart1.png new file mode 100644 index 0000000000..7f560dd3a8 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchStatisticsChart1.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchStatisticsChart2.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchStatisticsChart2.png new file mode 100644 index 0000000000..2ea11c1eaf Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchStatisticsChart2.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchStatisticsChart3.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchStatisticsChart3.png new file mode 100644 index 0000000000..dc3d926d34 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchStatisticsChart3.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchStatisticsChart4.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchStatisticsChart4.png new file mode 100644 index 0000000000..5f449b61c0 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchStatisticsChart4.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchStatisticsChart5.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchStatisticsChart5.png new file mode 100644 index 0000000000..c8b1eddf4b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchStatisticsChart5.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchStatisticsLineChart.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchStatisticsLineChart.png new file mode 100644 index 0000000000..9a14aa2333 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchStatisticsLineChart.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchStatisticsLineChartTimeline.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchStatisticsLineChartTimeline.png new file mode 100644 index 0000000000..7141c90a8d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchStatisticsLineChartTimeline.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchStatisticsTrendChart.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchStatisticsTrendChart.png new file mode 100644 index 0000000000..5f964b38df Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchStatisticsTrendChart.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchStatisticsTrendChartTimeline.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchStatisticsTrendChartTimeline.png new file mode 100644 index 0000000000..85d2cde659 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchStatisticsTrendChartTimeline.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchesDurationChart.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchesDurationChart.png new file mode 100644 index 0000000000..4f48587618 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchesDurationChart.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchesTable.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchesTable.png new file mode 100644 index 0000000000..378a4fa8b7 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/LaunchesTable.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/MostFailedTestCases.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/MostFailedTestCases.png new file mode 100644 index 0000000000..23834b3a1b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/MostFailedTestCases.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/MostPopularPatternTable1.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/MostPopularPatternTable1.png new file mode 100644 index 0000000000..3b16f31c20 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/MostPopularPatternTable1.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/MostPopularPatternTable2.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/MostPopularPatternTable2.png new file mode 100644 index 0000000000..d947ae38c6 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/MostPopularPatternTable2.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/MostTimeConsumingTestCasesWidget.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/MostTimeConsumingTestCasesWidget.png new file mode 100644 index 0000000000..785e30d6ac Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/MostTimeConsumingTestCasesWidget.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/NonPassedTestCasesTrendChart.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/NonPassedTestCasesTrendChart.png new file mode 100644 index 0000000000..0ecd5d5455 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/NonPassedTestCasesTrendChart.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/OverallStatistics1.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/OverallStatistics1.png new file mode 100644 index 0000000000..9bde45a77a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/OverallStatistics1.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/OverallStatistics2.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/OverallStatistics2.png new file mode 100644 index 0000000000..0492099f2e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/OverallStatistics2.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch1.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch1.png new file mode 100644 index 0000000000..cf33afb00d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch1.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch2.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch2.png new file mode 100644 index 0000000000..badf9949ba Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch2.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch3.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch3.png new file mode 100644 index 0000000000..fdabace16a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch3.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch4.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch4.png new file mode 100644 index 0000000000..22637970a3 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch4.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch5.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch5.png new file mode 100644 index 0000000000..a24495807f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch5.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch6.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch6.png new file mode 100644 index 0000000000..d0422d1970 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch6.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch7.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch7.png new file mode 100644 index 0000000000..cc32648daa Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRatePerLaunch7.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRateSummary1.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRateSummary1.png new file mode 100644 index 0000000000..06ee3b82a4 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRateSummary1.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRateSummary2.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRateSummary2.png new file mode 100644 index 0000000000..f06d870b2e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRateSummary2.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRateSummary3.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRateSummary3.png new file mode 100644 index 0000000000..f1a03c936f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRateSummary3.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRateSummary4.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRateSummary4.png new file mode 100644 index 0000000000..1364737efd Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRateSummary4.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRateSummary5.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRateSummary5.png new file mode 100644 index 0000000000..8adb0967fd Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRateSummary5.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRateSummary6.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRateSummary6.png new file mode 100644 index 0000000000..7173e605bf Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRateSummary6.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRateSummary7.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRateSummary7.png new file mode 100644 index 0000000000..649f906722 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/PassingRateSummary7.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ProductStatusWidget.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ProductStatusWidget.png new file mode 100644 index 0000000000..f275d6c087 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ProductStatusWidget.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ProjectActivityPanel.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ProjectActivityPanel.png new file mode 100644 index 0000000000..bacb5beb9c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/ProjectActivityPanel.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch1.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch1.png new file mode 100644 index 0000000000..5cb86e6371 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch1.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch10.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch10.png new file mode 100644 index 0000000000..97b3653301 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch10.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch11.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch11.png new file mode 100644 index 0000000000..63fc85a05e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch11.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch12.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch12.png new file mode 100644 index 0000000000..ba0e78a413 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch12.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch13.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch13.png new file mode 100644 index 0000000000..2b46e41243 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch13.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch14.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch14.png new file mode 100644 index 0000000000..b83197445c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch14.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch15.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch15.png new file mode 100644 index 0000000000..6f95e921e0 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch15.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch16.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch16.png new file mode 100644 index 0000000000..b64c5aff2a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch16.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch2.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch2.png new file mode 100644 index 0000000000..bcb2b6f280 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch2.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch3.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch3.png new file mode 100644 index 0000000000..885455e308 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch3.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch4.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch4.png new file mode 100644 index 0000000000..181c69de9c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch4.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch5.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch5.png new file mode 100644 index 0000000000..d085d2565e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch5.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch6.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch6.png new file mode 100644 index 0000000000..8e5ed94f5b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch6.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch7.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch7.png new file mode 100644 index 0000000000..baf5472956 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch7.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch8.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch8.png new file mode 100644 index 0000000000..d9bc52ded6 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch8.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch9.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch9.png new file mode 100644 index 0000000000..ae239c9e9f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCaseSearch9.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCasesGrowthTrendChart.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCasesGrowthTrendChart.png new file mode 100644 index 0000000000..6d7819431f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCasesGrowthTrendChart.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCasesGrowthTrendChartTimeline.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCasesGrowthTrendChartTimeline.png new file mode 100644 index 0000000000..30697e0cc4 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TestCasesGrowthTrendChartTimeline.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TheMostTimeConsumingTestCasesWidgetTable.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TheMostTimeConsumingTestCasesWidgetTable.png new file mode 100644 index 0000000000..c4088293d7 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/TheMostTimeConsumingTestCasesWidgetTable.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/UniqueBugsTable.png b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/UniqueBugsTable.png new file mode 100644 index 0000000000..2b5ac105a9 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/img/widget-types/UniqueBugsTable.png differ diff --git a/versioned_docs/version-26.2-organizations/dashboards-and-widgets/index.md b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/index.md new file mode 100644 index 0000000000..172119b5d1 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/dashboards-and-widgets/index.md @@ -0,0 +1,18 @@ +--- +title: Dashboards and widgets +description: Explore guides for dashboard & widget management, aiding effective, real-time test failure analytics. +--- + +# Dashboards and widgets + +The **Dashboards and widgets** section is designed to help users create a powerful, customized test automation results dashboard that visualizes essential test automation metrics in real-time. Dashboards in ReportPortal serve as central hubs for tracking and analyzing your project’s quality, providing an accessible way to understand complex test data. Here, you’ll find guidance on creating dashboards to consolidate your test automation report data, allowing you to present critical insights effectively to your team or stakeholders and promote collaborative dashboards in test reporting. + +Using widgets, you can customize your dashboard to display specific metrics that matter most to your project. Widgets enable you to view real-time data on test results, defect trends, launch statistics, and much more. From tracking project health to identifying areas for improvement, widgets offer granular insights that are essential for optimizing test automation processes. + +Each widget type is designed to display different aspects of your testing data, from passing rates and error patterns to execution times. You’ll learn how to configure each widget, add them to your dashboard, and arrange them for maximum clarity and usability. These visualizations not only make it easier to monitor ongoing test results but also streamline the process of creating and sharing test automation reports with your team. + +By leveraging dashboards and widgets effectively, you can enhance your testing workflows, keep your team informed, and ensure data-driven decisions are at the heart of your QA process. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.2-organizations/developers-guides/APIDifferencesBetweenV4AndV5.md b/versioned_docs/version-26.2-organizations/developers-guides/APIDifferencesBetweenV4AndV5.md new file mode 100644 index 0000000000..5defb09949 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/developers-guides/APIDifferencesBetweenV4AndV5.md @@ -0,0 +1,269 @@ +--- +sidebar_label: API differences between v4 and v5 +description: Compare API changes between ReportPortal v4 and v5 versions for seamless migration and integration with test automation reporting tool. +--- + +# API differences between v4 and v5 + +## New endpoints + +### Activity controller + +GET `/v1/{projectName}/activity/{activityId}` - Get activity by id. + +--- + +### Dashboard controller + +PUT `/v1/{projectName}/dashboard/{dashboardId}/{widgetId}}` - Add specified widget to dashboard. + +DELETE `/v1/{projectName}/dashboard/{dashboardId}/{widgetId}` - Delete specified widget from dashboard. + +--- + +### Launch controller + +:::note +Tags from v4 was replaced by attributes in v5. +Attribute contains key and value. It may have null key, but non-null value. +Attribute with null value is analog for v4 tag. +::: +GET `/v1/{projectName}/launch/attribute/keys` - Retrieve all unique attribute keys of project launches. + +GET `/v1/{projectName}/launch/attribute/values` - Retrieve all unique attribute values of project launches. + +GET `/v1/{projectName}/launch/status` - Get launches statuses. + +GET `/v1/{projectName}/launch/uuid/{launchUuid}` - Get launch by uuid. + +:::note +Response from start(create) launch request contains object with key `id` and string value (example: `id="33fa80b9-8ec9-4d52-8cb7-68b7bb4070f1"`). +It is not physical `id` in database. It is UUID (virtual id of launch, part of asynchronous reporting implementation). +Using request above you can retrieve physical `id` from database of just reported launch and use it in next queries for items, filters etc. +::: +PUT `/v1/{projectName}/launch/info` - Bulk update launches attributes and descriptions. + +--- + +### Log controller + +New functionality in v5 - [nested steps](https://github.com/reportportal/client-java/wiki/Nested-steps). + +GET `/v1/{projectName}/log/nested/{parentId}` - Get nested steps with logs for the parent test item. + +GET `/v1/{projectName}/log/uuid/{logUuid}` - Get log by uuid. + +POST `/v1/{projectName}/log/search/{itemId}` - Search test items with similar error logs. + +--- + +### Plugin controller + +GET `/v1/plugin` - Get all available plugins. + +POST `/v1/plugin` - Upload new plugin. + +PUT `/v1/plugin/{pluginId}` - update specified plugin. + +DELETE `/v1/plugin/{pluginId}` - delete specified plugin. + +--- + +### Project controller + +GET `/v1/project/analyzer/status` - Get indexing logs status for project. + +GET `/v1/project/export` - Export information about all projects. + +GET `/v1/project/list` - Retrieve info about all projects by filer. + +GET `/v1/project/names` - Get all project names. + +GET `/v1/project/names/search` - Search project names. + +GET `/v1/project/{projectName}/widget/{widgetCode}` - Get project widget by code. + +PUT `/v1/project/{projectName}/notification` - Update project notifications configuration. + +PUT `/v1/project/{projectName}/preference/{login}/{filterId}` - Add specified filter to user preference. + +DELETE `/v1/project/{projectName}/preference/{login}/{filerId}` - Remove specified filter from user preference. + +--- + +### Project setting controller + +POST `/v1/{projectName}/settings/pattern` - Create pattern template for item's log messages pattern analysis. + +PUT `/v1/{projectName}/settings/pattern/{id}` - Update specified pattern template for item's log messages pattern analysis. + +DELETE `/v1/{projectName}/settings/pattern/{id}` - Delete specified pattern template for item's log messages pattern analysis. + +--- + +### Test item controller + +:::note +Tags from v4 was replaced by attributes in v5.
+Attribute contains key and value. It may have null key, but non-null value.
+Attribute with null value is analog for v4 tag. +::: + +GET `/v1/{projectName}/item/attribute/keys` - Retrieve all unique attributes keys of specified launch. + +GET `/v1/{projectName}/item/attribute/keys/all` - Retrieve all unique attributes keys of specified launch. + +GET `/v1/{projectName}/item/attribute/values` - Retrieve all unique attributes values of specified launch. + +GET `/v1/{projectName}/item/ticket/ids` - Get tickets that contains a term as a part inside for specified launch. + +GET `/v1/{projectName}/item/uuid/{itemId}` - Get test item by uuid. + +:::note +Response from start(create) test item request contains object with key `id` and string value (example: `id="1f8233b0-6a2d-4a82-989b-a33463287130"`). +It is not physical `id` in database. It is UUID (virtual id of test item, part of asynchronous reporting implementation). +Using request above you can retrieve physical `id` from database of just reported test item and use it in next queries for items, logs etc. +::: +PUT `/v1/{projectName}/item/info` - Bulk update items attributes and descriptions. + +PUT `/v1/{projectName}/item/issue/link` - Link external issue for specified test items. + +PUT `/v1/{projectName}/item/issue/unlink` - Unlink external issue for specified test items. + +--- + +### User controller + +GET `/v1/user/export` - Export information about all users. + +GET `/v1/user/registration` - Get user bid info. + +GET `/v1/user/registration/info` - Validate user login and/or email. + +GET `/v1/user/search` - Search users by term. + +GET `/v1/user/{userName}/projects` - Retrieve all user projects. + +DELETE `/v1/user` - Delete specified users by ids. + +--- + +### Widget controller + +New group of widgets that may have few levels + +GET `/v1/{projectName}/widget/multilevel/{widgetId}` - Get multilevel widget by id. + +--- + +## New controllers + +#### Bug tracking system controller - replacement of external system controller. + +GET `/v1/bts/{integrationId}/fields-set` - Get list of fields required for posting ticket. + +GET `/v1/bts/{integrationId}/issue_types` - Get list of allowable issue types for bug tracking system. + +GET `/v1/bts/{projectName}/ticket/{ticketId}` - Get ticket from the bts integration. + +GET `/v1/bts/{projectName}/{integrationId}/fields-set` - Get list of fields required for posting ticket (project integration). + +GET `/v1/bts/{projectName}/{integrationId}/issue_types` - Get list of allowable issue types for bug tracking system (project integration). + +POST - `/v1/bts/{projectName}/{integrationId}/ticket` - Post ticket to the bts integration. + +--- + +#### Integration controller + +GET `/v1/integration/global/all` - Get available global integrations. + +GET `/v1/integration/global/all/{pluginName}` - Get available global integrations for plugin. + +GET `/v1/integration/project/{projectName}/all` - Get available project integrations. + +GET `/v1/integration/project/{projectName}/all/{pluginName}` - Get available project integrations for plugin. + +GET `/v1/integration/{integrationId}` - Get specified global integration by id. + +GET `/v1/integration/{integrationId}/connection/test` - Test connection to the global integration. + +GET `/v1/integration/{projectName}/{integrationId}/connection/test` - Test connection to the integration through the project config. + +GET `/v1/integration/{projectName}/{integrationId}` - Get specified project integration by id. + +PUT `/v1/integration/{projectName}/{integrationId}` - Update specified project integration by id. + +PUT `/v1/integration/{integrationId}` - Update specified global integration by id. + +PUT `/v1/integration/{projectName}/{integrationId}/{command}` - Execute command to the integration instance. + +POST `/v1/integration/{pluginName}` - Create global integration. + +POST `/v1/integration/{projectName}/{pluginName}` - Create project integration instance. + +DELETE `/v1/integration/all/{type}` - Delete all global integrations by type. + +DELETE `/v1/integration/{projectName}/all/{type}` - Delete all project integrations by type. + +DELETE `/v1/integration/{integrationId}` - Delete specified global integration by id. + +DELETE `/v1/integration/{projectName}/{integrationId}` - Delete specified project integration by id. + +--- + +#### Launch asynchronous controller + +POST `/v2/{projectName}/launch` - Start launch for specified project. + +POST `/v2/{projectName}/launch/merge` - Merge set of specified launches in common one. + +PUT `/v2/{projectName}/launch/{launchId}/finish` - Finish launch for specified project. + +--- + +#### Test item asynchronous controller + +POST `/v2/{projectName}/item` - Start root test item. + +POST `/v2/{projectName}/item/{parentItem}` - Start child test item. + +PUT `/v2/{projectName}/item/{testItemId}` - Finish test item. + +--- + +#### Log asynchronous controller + +POST `/v2/{projectName}/log` - Create log. + +--- + +## Differences in reporting + +### Launch rerun +[Rerun developers guide](/developers-guides/RerunDevelopersGuide) + +### Nested steps +[Nested steps wiki](https://github.com/reportportal/client-java/wiki/Nested-steps) + +### Launch logs + +Create log request contains fields `launchUuid` and `itemUuid`. At least one of them should not be null. + +```json +{ + "itemUuid": "7f32fb6a-fcc2-4ecb-a4f7-780c559a37ca", + "launchUuid": "6fd4638d-90e2-4f52-a9bd-bf433ebfb0f3" +} +``` + +If they both are present - log will be saved as test item log. +If only `itemUuid` is present - log will be saved as test item log. +If only `launchUuid` is present - log will be saved as launch log. + +Java client has static methods for launch log reporting: + +- [emitLaunchLog(Function<String, SaveLogRQ> logSupplier)](https://github.com/reportportal/client-java/blob/20b1dda7681301acd86d2d9c9dbcbd7991890cdc/src/main/java/com/epam/reportportal/service/ReportPortal.java#L160) +- [emitLaunchLog(final String message, final String level, final Date time)](https://github.com/reportportal/client-java/blob/20b1dda7681301acd86d2d9c9dbcbd7991890cdc/src/main/java/com/epam/reportportal/service/ReportPortal.java#L192) +- [emitLaunchLog(final String message, final String level, final Date time, final File file)](https://github.com/reportportal/client-java/blob/20b1dda7681301acd86d2d9c9dbcbd7991890cdc/src/main/java/com/epam/reportportal/service/ReportPortal.java#L233) +- [emitLaunchLog(final ReportPortalMessage message, final String level, final Date time)](https://github.com/reportportal/client-java/blob/20b1dda7681301acd86d2d9c9dbcbd7991890cdc/src/main/java/com/epam/reportportal/service/ReportPortal.java#L288) diff --git a/versioned_docs/version-26.2-organizations/developers-guides/AsynchronousReporting.mdx b/versioned_docs/version-26.2-organizations/developers-guides/AsynchronousReporting.mdx new file mode 100644 index 0000000000..b74dc9e5eb --- /dev/null +++ b/versioned_docs/version-26.2-organizations/developers-guides/AsynchronousReporting.mdx @@ -0,0 +1,153 @@ +--- +sidebar_label: Asynchronous reporting +description: Implement asynchronous reporting using AMQP and RabbitMQ for high-performance test automation reporting tools with load balancing. +--- + +# Asynchronous reporting + +### Overview + +Asynchronous reporting is set up using the [AMQP 0-9-1](https://www.rabbitmq.com/tutorials/amqp-concepts.html) protocol with +[RabbitMq](https://www.rabbitmq.com) as the message broker. +The main idea is to respond to the client immediately after the server receives a request. This way, the client isn't blocked and doesn't have to wait for the server to process the request. +Additionally, it acts as a requests load balancer, storing it in queues until the backend is free to process them. + +### Scheme of interactions between RabbitMq and API + +***Difference between ID and UUID*** + +`ID` is a numerical identifier for an entity, automatically generated by the database at the moment of saving. +`UUID` is a string virtual identifier for an entity. `UUID` can be generated on the client side and provided with a request. If it is not provided, +it is generated automatically when the `API` accepts the request. +Each entity has both `ID` and `UUID`. `ID` is used to perform the CRUD operations on an entity that is ***already saved in db***. +`UUID` is used to build the child-parent relationships between entities on the client side during reporting. +In case of synchronous reporting, any response from `API` is returned ***after*** the request is handled and the entity is saved in the database. +In case of asynchronous reporting, any response from `API` is returned ***before*** the request is handled and the entity is saved in the database and ***after*** the request is published to the queue. +The responses in both modes look the same: +```json +{ + "id": "cd64d5eb-fea1-4e7e-8a5a-69998ac5620f" +} +``` +The `id` property in the response is actually an `UUID`. This is for backward compatibility. +Therefore, when you have this `UUID` and want to update or delete the entity, you need to first retrieve the physical `ID`. +It can be done via `API`: +* [Get specified launch by UUID](https://developers.reportportal.io/api-docs/service-api/get-launch-by-uuid-old-timestamp) + +***Asynchronous reporting scheme*** + + +* **Step 1** +`API` receives HTTP request from `client` to the reporting controller. The `Controller` verifies permissions and call the `producer` logic. +* **Step 2** +`Producer` validates business rules if necessary, generates UUID (virtual id) if it is not provided in request, +builds a message for `RabbitMq` and sends it to the exchange with x-consistent-hash type. +After message is sent, the `controller` returns HTTP response to the `client` with UUID. **At the moment, the physical entity in database may not be created yet!** +* **Step 3** +`Consumer` starts processing the message as soon as it is received from `RabbitMq`. +After a successful processing, the entity will be stored in a database and obtain a physical id. +In case of an exception, it is logged and the entity is not saved. + + + +### Enable asynchronous reporting in agents + +Async reporting is supported only by agents since version 5.0.0. +To enable it you should set `rp.reporting.async=true` in `reportportal.properties`. +By default (if property `rp.reporting.async` is not specified) agents work in a synchronous mode. + +```properties +rp.endpoint=https://example.com +rp.api.key=xxx +rp.launch=launch-name +rp.project=project-name +rp.reporting.async=true +``` + +(*) Listed above is an example for Java-based client. For another platforms please see corresponding documentation. + +### Asynchronous API + +Async controllers have `/api/v2` prefix. +Requests and responses have no differences with sync ones but there are some specific distinctions in the behavior that is described in +[reporting guide](/developers-guides/ReportingDevelopersGuide). + +* [Start launch](/developers-guides/ReportingDevelopersGuide#start-launch) +* [Start root(suite) item](/developers-guides/ReportingDevelopersGuide#start-rootsuite-item) +* [Start child(container) item](/developers-guides/ReportingDevelopersGuide#start-childcontainer-item) +* [Start child(step) item](/developers-guides/ReportingDevelopersGuide#start-childstep-item) +* [Finish child item](/developers-guides/ReportingDevelopersGuide#finish-child-item) +* [Finish parent(container) item](/developers-guides/ReportingDevelopersGuide#finish-parentcontainer-item) +* [Save single log without attachment](/developers-guides/ReportingDevelopersGuide#save-single-log-without-attachment) +* [Batch save logs](/developers-guides/ReportingDevelopersGuide#batch-save-logs) +* [Save launch log](/developers-guides/ReportingDevelopersGuide#save-launch-log) +* [Finish root(suite) item](/developers-guides/ReportingDevelopersGuide#finish-rootsuite-item) +* [Finish launch](/developers-guides/ReportingDevelopersGuide#finish-launch) + +### Detailed scheme of interactions between RabbitMq and API + +#### API properties + +`API` has the following properties for connection to RabbitMq service: + +| Name | Environment variable name | Default value | +|----------------------|---------------------------|----------------------------------------| +| rp.amqp.host | RP_AMQP_HOST | rabbitmq | +| rp.amqp.port | RP_AMQP_PORT | 5672 | +| rp.amqp.user | RP_AMQP_USER | rabbitmq | +| rp.amqp.pass | RP_AMQP_PASS | rabbitmq | +| rp.amqp.addresses | RP_AMQP_ADDRESSES | amqp://rabbitmq:rabbitmq@rabbitmq:5672 | +| reporting.queues.count | REPORTING_QUEUES_COUNT | 10 | + + +`rp.amqp.host` - Hostname of RabbitMq service. +`rp.amqp.port` - Port of RabbitMq service. +`rp.amqp.user` - Username to connect to RabbitMq service. +`rp.amqp.pass` - User password to connect to RabbitMq service. +`rp.amqp.addresses` - Full address to connect to RabbitMq service. +`reporting.queues.count` - Number of queues to be processed by this service-api. + +#### Exchanges and queues for reporting + +The `API` creates two exchanges: `e.reporting` and `e.reporting.retry`. The `e.reporting` exchange is linked to queues that handle messages from requests, while the `e.reporting.retry` exchange is linked to retry queue and manages rejected from the main reporting queues. +The number of queues in these exchanges depends on the `REPORTING_QUEUES_COUNT` env variable. The `e.reporting` exchange has `N` queues named `q.reporting.id.0` to `q.reporting.id.N`. The `e.reporting.retry` exchange has 1 queue named `q.retry.reporting.ttl`. +If a message from `e.reporting.retry` is consumed and throws an exception more than 20 times, it will be moved to a separate queue named `q.parkingLot.reporting`, where it will be stored for 7 days for manual error analysis. +The retry message will be stored in `q.retry.reporting.ttl` with progressive TTL. It means that ttl will be increase each time. The whole ttl of the retry message is about 2 hours. + + + +#### Scheme + +All requests (items, logs) related to the same launch will be stored in the same RabbitMQ queue. +This is achieved by using an exchange that maps messages to queues using the `Consistent Hashing` algorithm. + +Messages in the queue don't have a strict order but they are stored mostly in the same order as they arrive from `client`. +This ensures a minimal amount of exceptions (causing the sending of such messages to the retry queue) caused by cases when a child is handled before its own parent. + +Consuming scheme: + + + +`(!)` All not managed exceptions will be moved to the `q.parkingLot.reporting` for manual analysis. +Possible exceptions that may be thrown and lead to moving the message to the retry queue: +* On start launch/test item: + * Entity not found. Parent entity not found. +* On finish launch/test item: + * Entity not found. Entity that has to be finished not found in database or parent entity not found (for test items). +* On log creation: + * Entity not found. Trying to create log for not existing launch/test item + +#### Finishing launch + +If the order is not broken, launch finish request will be handled when there are no more child item requests in the queue. + + + +`(!)` It is a main difference in reporting mechanism between ReportPortal version 4 and 5. +If the launch finish request is not the last in the queue, the launch will be finished anyway. +However, all subsequent requests related to that launch will be handled as they reach the consumer, and the launch statistics will be updated accordingly. +This means it is possible to report items under an already finished launch. +Events associated with the launch finish will be processed as soon as the launch finish is handled. +Items processed after the launch finish will not be included in post-launch handling processes such as 'Auto Analysis' and 'Quality Gates.' + + diff --git a/versioned_docs/version-26.2-organizations/developers-guides/AttachmentsGuide.mdx b/versioned_docs/version-26.2-organizations/developers-guides/AttachmentsGuide.mdx new file mode 100644 index 0000000000..278becc57b --- /dev/null +++ b/versioned_docs/version-26.2-organizations/developers-guides/AttachmentsGuide.mdx @@ -0,0 +1,113 @@ +--- +sidebar_label: Attachments Guide +description: Add screenshots and file attachments to test logs for comprehensive test failure analysis and debugging in ReportPortal. +--- + +# Attachments (Screenshots) Guide + +The Attachments feature allows you to add any file or screenshot to the test case logs. It can be useful for further test failure analysis. + +An example of image attachment: + + + +An example of file attachment: + + + + + +## How to log attachments (Screenshots) on Java agents? + +Java agents have numerous methods to log attachments, the easiest one is calling `ReportPortal#emitLog` static method: + +```java +import com.epam.reportportal.listeners.LogLevel; +import com.epam.reportportal.service.ReportPortal; + +import java.util.Date; +import java.io.File; + +class Test { + public static void log(String message, File file) { + ReportPortal.emitLog(message, LogLevel.INFO.name(), new Date(), file); + } +} +``` + +If you don't want to put ReportPortal dependencies in your code, there is a way to pass attachments through your logger. + +Check out our loggers' documentation: + +* [Log4j](https://github.com/reportportal/logger-java-log4j#attaching-files-screenshots-videos-archives-reports-etc) +* [Logback](https://github.com/reportportal/logger-java-logback#attaching-files-screenshots-videos-archives-reports-etc) + +## How to log attachments (Screenshots) on Python agents? + +To log attachments in Python you first need to configure a logger, depending on your current test framework. These are the instructions: + +* [Pytest](https://github.com/reportportal/agent-python-pytest#examples) +* [Robot Framework](https://github.com/reportportal/agent-Python-RobotFramework#logging) +* [Behave](https://github.com/reportportal/agent-python-behave#logging) + +Then you can use common method to attach any files to logs which is described [here](https://github.com/reportportal/client-Python#send-attachment-screenshots). + +## How to log attachments (Screenshots) on JavaScript agents? + +Attachment reports are supported by our [client-javascript](https://github.com/reportportal/client-javascript). The attachment file can be added as a part of a log request, see the [link](https://github.com/reportportal/client-javascript#sendlog) for details. + +The implementation of attachments reporting varies from agent to agent. + +[agent-js-playwright](https://github.com/reportportal/agent-js-playwright): +The attachment can be added via built-in [playwright testInfo attachments](https://playwright.dev/docs/api/class-testinfo#test-info-attachments) or [ReportingAPI](https://github.com/reportportal/agent-js-playwright#log). + +[agent-js-webdriverio](https://github.com/reportportal/agent-js-webdriverio): +The attachment can be added via ReportingAPI, follow [docs](https://github.com/reportportal/agent-js-webdriverio#log) for details. + +[agent-js-testcafe](https://github.com/reportportal/agent-js-testcafe): +The attachment can be added via ReportingAPI, follow [docs](https://github.com/reportportal/agent-js-testcafe#log) for details. + +[agent-js-codecept](https://github.com/reportportal/agent-js-codecept): +The attachment can be added via ReportPortal plugin reportPortal.addLog, captured screenshots will be also attached to the report, see [add-log-message](https://github.com/reportportal/agent-js-codecept#add-log-message). + +[agent-js-cucumber](https://github.com/reportportal/agent-js-cucumber): +The attachment can be added via this.attach Cucumber feature, captured screenshots will be also attached to the report, see [attachments](https://github.com/reportportal/agent-js-cucumber#attachments). + +[agent-js-cypress](https://github.com/reportportal/agent-js-cypress): +The attachment can be added via ReportPortal logging custom commands for Cypress, see [logging](https://github.com/reportportal/agent-js-cypress#logging). + +[agent-js-mocha](https://github.com/reportportal/agent-js-mocha): +The attachment can be added via PublicReportingAPI, follow [docs](https://github.com/reportportal/agent-js-mocha#report-logs-and-attachments) for details. + +[agent-js-jasmine](https://github.com/reportportal/agent-js-jasmine): +The attachment can be added via PublicReportingAPI, follow [docs](https://github.com/reportportal/agent-js-jasmine#report-logs-and-attachments) for details. + +[agent-js-jest](https://github.com/reportportal/agent-js-jest): +There is no built-in capability to send attachments during test execution as the Jest Reporter works post-factum and does not allow to provide specific data to the report. + +[agent-js-postman](https://github.com/reportportal/agent-js-postman): +There is no built-in capability at the moment to send attachments during test execution due to the specifics of postman nature. + +[agent-js-nightwatch](https://github.com/reportportal/agent-js-nightwatch): +The attachment can be added via ReportingAPI, follow [docs](https://github.com/reportportal/agent-js-nightwatch#log) for details. + +An example for each agent can be found [here](https://github.com/reportportal/examples-js). + +## How to log attachments (Screenshots) on .Net agents? + +General documentation on this in .net-commons: https://github.com/reportportal/commons-net/blob/develop/docs/Logging.md + +You can attach any binary content: + +``` +Context.Current.Log.Info("my binary", "image/png", bytes); +// where bytes is byte[] and image/png is mime type of content +``` + +Or use file instead: + +``` +Context.Current.Log.Info("my file", new FileInfo(filePath)); +// where filePath is relative/absolute path to your file +// mime type is determined automatically +``` diff --git a/versioned_docs/version-26.2-organizations/developers-guides/BackEndJavaContributionGuide.mdx b/versioned_docs/version-26.2-organizations/developers-guides/BackEndJavaContributionGuide.mdx new file mode 100644 index 0000000000..2f14b7311b --- /dev/null +++ b/versioned_docs/version-26.2-organizations/developers-guides/BackEndJavaContributionGuide.mdx @@ -0,0 +1,476 @@ +--- +sidebar_label: Back-end Java contribution guide +description: Contribute to ReportPortal's Java backend with comprehensive development guidelines, setup instructions, and coding standards. +--- + +# Back-end Java contribution guide + +## Useful links + +[Landing page](https://reportportal.io) + +[Official documentation](https://reportportal.io/docs) + +[Contribution notes on GitHub](https://github.com/reportportal/reportportal/wiki/Contribution) + +## Deployment components description + +- [Traefik](https://traefik.io) as reversed proxy and application entry point +- Data analysis + - [OpenSearch](https://opensearch.org/) as logs analysis data storage + - [Service Analyzer](https://github.com/reportportal/service-auto-analyzer) as log messages analysis tool + - [Service Analyzer Train](https://github.com/reportportal/service-auto-analyzer) is a `Service Analyzer` running in training mode to increase analysis quality + +- Database + - [Postgresql](https://www.postgresql.org) + - [Service Migrations](https://github.com/reportportal/migrations) - service for DB schema and data updates +- [RabbitMQ](https://www.rabbitmq.com) - message broker for inter-service communication +- [Minio](https://min.io) - binary data storage (alternative to plain filesystem storage) +- [Service Index](https://github.com/reportportal/service-index) - gateway service with services metadata resolving mechanism +- [Service UI](https://github.com/reportportal/service-ui) - ReportPortal web UI + +There are three Java repositories that are part of the whole RP deployment: +- [Service API](https://github.com/reportportal/service-api) - REST API service as ReportPortal functionality provider +- [Service Authorization](https://github.com/reportportal/service-authorization) - REST Authorization service for users authentication +- [Service Jobs](https://github.com/reportportal/service-jobs) - Service with jobs to process data in the back-ground + +## Code conventions + +### IDE Formatter + +[Settings file](https://github.com/reportportal/reportportal/blob/master/idea_formatting_profile.xml) + +Steps to import: +- Click on IDEA "Preferences" +- Choose "Editor" section +- Click on "Code style" +- In "Scheme" section click on settings wheel → Import Scheme → IntelliJ IDEA code style XML + + + +### Code style + +This document is aimed at improving aspects of our existing code base and synchronizing implementation/design approaches within the team. It serves as a blueprint for now but will be continually updated and improved. + +- Code should be as simple and readable as possible. +- Avoid unnecessary interfaces. In our case, if we aren't planning to extend functionality and can easily refactor, we should avoid creating an interface unless there is a distinct need (e.g., for testing, code auto-generation, etc.). +- Methods and classes should be named according to their responsibilities. If a name isn't self-explanatory, provide a description. +- Overloaded or overridden methods with the same name should perform similar operations. +- Keep parameter order consistent across methods with the same name. +- Parameter names should be clear and indicative of their function. For example, instead of using a generic "id", specify the `entity` it's related to, like "userId" or "projectId." +- The same principle applies to return parameters. +- It's advisable to use a suitable structure to avoid unnecessary conversions. +- Commonly used flows (checks, structure processing, etc.) should be moved to utilities. +- Manually working with threads should be avoided unless necessary (utilize defined `TaskExecutor` or create a new one). +- `Optional` and `Stream` should be used primarily when they enhance readability. Always return `Optional` instead of `null`. +- Avoid using two terminal operations in a Stream. + +### Git branch requirements + +- Working branch names should start with the Jira-id (EPMRPP-DDD) and an optional description, e.g., `PMRPP-444` or `EPMRPP-443-fix-some-bugs`. All Jira branches must be related to a Jira ticket. +- All commit messages in `master`, `develop`, and `release` branches must start with a Jira-id as well: EPMRPP-445 Some important fix. +- It is better to divide commits into small, logically complete parts within the branch, for clarity during code review. +- When merging a PR into the main branch (`master`, `develop`, `release`), all commits should be squashed and provided with a suitable description with the Jira-id by the person who performs the merge. + +**For contributors who do not have access to our Jira tasks**, the branch name prefix should be the GitHub issue name. It is highly recommended to create an issue that doesn't already exist and then fix it within your PR, even if it's a new function. The issue will remain there, a record of your ideas and comments from other contributors. Additionally, ReportPortal users who are not developers might prefer to look through issues rather than PRs to verify if a specific issue has been addressed in a new version of ReportPortal. This is a crucial component in maintaining a transparent, efficient test automation reporting dashboard for all users. + +## Open-source contribution workflow + +All features fixes should be added to `develop` branch only, exclusions: hot-fixes + +Changes applying workflow: + +- Clone repository or fork from it +- Checkout `develop` branch +- Create branch according to name policy +- Push branch to the remote +- Create PR according to name policy into the `develop` branch of the RP repository +- Review and merge/reject PR (squash commits in one during merge) + +## Dev environment setup + +### Pre requirements + +- Postgresql should be deployed +- Service Migration should fill/update DB data +- Binary data storage should be configured + +To deploy DB with the latest schema we need the `docker-compose.yml` that looks like this: + +```yaml +version: '2.4' +services: + + postgres: + image: postgres:12-alpine + shm_size: '512m' + environment: + POSTGRES_USER: rpuser + POSTGRES_PASSWORD: rppass + POSTGRES_DB: reportportal + volumes: + # For unix host + - ./data/postgres:/var/lib/postgresql/data + # For windows host + # - postgres:/var/lib/postgresql/data + ports: + - "5432:5432" + command: + -c checkpoint_completion_target=0.9 + -c work_mem=96MB + -c wal_writer_delay=20ms + -c synchronous_commit=off + -c wal_buffers=32MB + -c min_wal_size=2GB + -c max_wal_size=4GB + healthcheck: + test: ["CMD-SHELL", "pg_isready -d $$POSTGRES_DB -U $$POSTGRES_USER"] + interval: 10s + timeout: 120s + retries: 10 + restart: always + + db-scripts: + image: reportportal/migrations:5.6.0 + depends_on: + postgres: + condition: service_healthy + environment: + POSTGRES_SERVER: postgres + POSTGRES_PORT: 5432 + POSTGRES_DB: reportportal + POSTGRES_USER: rpuser + POSTGRES_PASSWORD: rppass + restart: on-failure +``` + +#### How to keep DB data up-to-date + +Maintaining an up-to-date database (DB) schema is an important aspect of efficient test automation reporting tools management. + +`image: reportportal/migrations:5.6.0` is the released version of the migrations service. However, if any changes were made in the develop branch after the release, the migrated DB schema may be outdated. To prevent this and ensure your DB data remains current, follow the steps outlined below: + +- clone/update [Migrations Repository](https://github.com/reportportal/migrations) +- checkout `develop` branch +- run the following command: +```shell +docker-compose run --rm migrations +``` + +This process leverages all SQL scripts present in the develop branch to update your locally running DB instance. + +By default, filesystem storage is employed for binary data; meaning all data will be stored on your local filesystem. If you prefer to store binaries using Minio (as we do in our production), you need to deploy it as well. You can do this by adding the necessary pieces to the existing `docker-compose.yml`: + +```yaml + minio: + image: minio/minio:RELEASE.2020-10-27T04-03-55Z + ports: + - '9000:9000' + volumes: + # For unix host + - ./data/storage:/data + # For windows host + # - minio:/data + environment: + MINIO_ACCESS_KEY: minio + MINIO_SECRET_KEY: minio123 + command: server /data + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] + interval: 30s + timeout: 20s + retries: 3 + restart: always +``` + +Please be aware of the comments directed towards `Windows` - if you are developing on Windows, uncomment the sections for `Windows` and comment out any `Linux`-related sections, applicable to both Postgres and Minio. Then, add the following statement to the `docker-compose.yml`: + +```yaml +volumes: + postgres: + minio: +``` + +As the result we have the `docker-compose.yml`: +```yaml +version: '2.4' +services: + + postgres: + image: postgres:12-alpine + shm_size: '512m' + environment: + POSTGRES_USER: rpuser + POSTGRES_PASSWORD: rppass + POSTGRES_DB: reportportal + volumes: + # For unix host + - ./data/postgres:/var/lib/postgresql/data + # For windows host + # - postgres:/var/lib/postgresql/data + ports: + - "5432:5432" + command: + -c checkpoint_completion_target=0.9 + -c work_mem=96MB + -c wal_writer_delay=20ms + -c synchronous_commit=off + -c wal_buffers=32MB + -c min_wal_size=2GB + -c max_wal_size=4GB + healthcheck: + test: ["CMD-SHELL", "pg_isready -d $$POSTGRES_DB -U $$POSTGRES_USER"] + interval: 10s + timeout: 120s + retries: 10 + restart: always + + db-scripts: + image: reportportal/migrations:5.6.0 + depends_on: + postgres: + condition: service_healthy + environment: + POSTGRES_SERVER: postgres + POSTGRES_PORT: 5432 + POSTGRES_DB: reportportal + POSTGRES_USER: rpuser + POSTGRES_PASSWORD: rppass + restart: on-failure + + minio: + image: minio/minio:RELEASE.2020-10-27T04-03-55Z + ports: + - '9000:9000' + volumes: + # For unix host + - ./data/storage:/data + # For windows host + # - minio:/data + environment: + MINIO_ACCESS_KEY: minio + MINIO_SECRET_KEY: minio123 + command: server /data + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] + interval: 30s + timeout: 20s + retries: 3 + restart: always + +volumes: + postgres: + minio: +``` + +This file will be updated in the subsequent sections, but we can already initiate the development of our first service. + +### Service Authorization + +To start up Service Authorization, you should populate the marked values in the `application.yaml file`: + + + + + +(Optional) Adjust the `context-path` value from `/` to `/uat` if you plan to deploy Service UI locally (described in a later section). + +### Service API + +Prior to initiating the Service API, RabbitMQ needs to be included in our deployment. + +In ReportPortal, RabbitMQ serves three key functions: + +- Inter-service communication between Service API and Service Analyzer. +- Asynchronous reporting feature. +- User activity event publishing. + +To add RabbitMQ to our deployment, the following should be incorporated into our existing `docker-compose.yml`: + +```yaml + rabbitmq: + image: rabbitmq:3.7.16-management + ports: + - "5672:5672" + - "15672:15672" + environment: + RABBITMQ_DEFAULT_USER: "rabbitmq" + RABBITMQ_DEFAULT_PASS: "rabbitmq" + healthcheck: + test: ["CMD", "rabbitmqctl", "status"] + retries: 5 + restart: always +``` + +We can now begin deploying the Service API without encountering any issues. However, it's important to note that all Analyzer-related interactions (such as publishing to analyzer queues and receiving responses) will not be successful. To rectify this, we need to deploy the Service Analyzer and all its required services. To achieve this, we add the following to our `docker-compose.yml`: + +```yaml + opensearch: + image: opensearchproject/opensearch:2.11.0 + container_name: opensearch + environment: + discovery.type: single-node + plugins.security.disabled: "true" + bootstrap.memory_lock: "true" + OPENSEARCH_JAVA_OPTS: -Xms512m -Xmx512m + DISABLE_INSTALL_DEMO_CONFIG: "true" + ulimits: + memlock: + soft: -1 + hard: -1 + ports: + - "9200:9200" + - "9600:9600" + volumes: + - opensearch:/usr/share/opensearch/data + healthcheck: + test: ["CMD", "curl","-s" ,"-f", "http://0.0.0.0:9200/_cat/health"] + restart: always + + analyzer: + image: reportportal/service-auto-analyzer:5.6.0 + environment: + LOGGING_LEVEL: info + AMQP_EXCHANGE_NAME: analyzer-default + AMQP_URL: amqp://rabbitmq:rabbitmq@rabbitmq:5672 + ES_HOSTS: http://opensearch:9200 + # ES_USER: + # ES_PASSWORD: + # MINIO_SHORT_HOST: minio:9000 + # MINIO_ACCESS_KEY: minio + # MINIO_SECRET_KEY: minio123 + depends_on: + opensearch: + condition: service_started + rabbitmq: + condition: service_healthy + restart: always +``` + +As a result of these additions, your `docker-compose.yml` should look something like [this](pathname:///files/DockerCompose.yml). + +To start the Service API, populate the marked values in your `application.yaml` file: + + + + + + + +Alternatively, you may need to change the `context-path` value from `/` to `/api` should you plan to deploy Service UI locally (detailed instructions will be provided at a later stage). + +### Service Jobs + +To start Service Jobs, fill in the marked values in your `application.yaml` file: + + + + + + + +### Service UI + +After all back-end services deployed you may want to interact with them not only using tool like Postman but use ReportPortal UI too. +Once all back-end services are deployed, you may want to interface with them beyond using a tool like Postman and use ReportPortal UI. To accomplish this, follow these steps: + +- Clone or update the [Service UI repository](https://github.com/reportportal/service-ui). +- Checkout the `develop` branch. +- Make changes to the `dev.config.js` file. + +Before: + +```javascript +proxy: [ + { + context: ['/composite', '/api/', '/uat/'], + target: process.env.PROXY_PATH, + bypass(req) { + console.log(`proxy url: ${req.url}`); + }, + }, + ] +``` + +After: +```javascript +proxy: [ + { + context: ['/composite', '/api/'], + target: 'http://localhost:8585', + bypass(req) { + console.log(`proxy url: ${req.url}`); + }, + }, + { + context: ['/uat/'], + target: 'http://localhost:9999', + bypass(req) { + console.log(`proxy url: ${req.url}`); + }, + }, + ] +``` + +- If NodeJs is not already installed, install it (version 20 is recommended). +- From the root folder(service-ui), run Service UI using the following commands: +```shell +cd app +npm install +npm run dev +``` + +- Open the Service UI page on `localhost` using port `3000` and try to login using the default credentials. + +This will allow you to view your test automation dashboard and interact with the reported test results. + +## Development workflow + +### Introduction to dependencies + +In addition to common dependencies such as `spring-...`, our Java services also have ReportPortal libraries distributed across different repositories. Here is a list of these dependencies: +- [Commons DAO](https://github.com/reportportal/commons-dao) - Data layer dependency with domain model configuration +- [Commons Model](https://github.com/reportportal/commons-model) - REST models dependency +- [Commons](https://github.com/reportportal/commons) - Some common utils for multiple usage purposes +- [Commons Rules](https://github.com/reportportal/commons-rules) - Business rules validation dependency +- [Plugin API](https://github.com/reportportal/plugin-api) - ReportPortal plugin API +- [Commons BOM](https://github.com/reportportal/commons-bom) - POM config for releases + +### Updates in dependencies + +Let's assume you found a bug when trying to retrieve a user from the DB. The logic is invoked within Service API, but the buggy code is in the Commons DAO dependency. To apply a fix and validate its effectiveness, follow these steps: + +- Clone or update the `Commons DAO` repository. +- Checkout the `develop` branch. +- Implement the necessary changes. +- Create a branch according to naming policy. +- Push the changes to the remote. +- Create a pull request (PR) to the `develop` branch. Now, you can see your branch and the `commit hash` on the GitHub page: + + + +- Go to the service where your changes need to be applied (Service API in our instance). +- Copy the `commit hash` and replace the existing one in the `build.gradle` of the required service (Service API in our instance): + + + +- After rebuilding the project using `Gradle`, the dependency will be resolved and downloaded using the [Jitpack tool](https://jitpack.io). +- Generate a branch according to the naming policy. +- Push the changes to the remote. +- Create a PR to the `develop` branch. + +## Summary notes + +This documentation should assist you in configuring the ReportPortal local development environment and provide an understanding of the standards and conventions we adhere to. + +The simplified development workflow should look as follows: + +- Always [maintain the latest schema and data](#how-to-keep-db-data-up-to-date) in your local DB instance. +- Checkout the `develop` branch in the required repository. +- Implement changes. +- If changes in dependencies are necessary: + - Go to the dependency repository, apply changes, and create a branch and PR according to conventions. + - Using the `commit hash`, update the dependency in the `build.gradle`. +- Create a branch according to the name policy. +- Push to the remote. +- Create a PR following the name policy. diff --git a/versioned_docs/version-26.2-organizations/developers-guides/InteractionsBetweenAPIAndAnalyzer.mdx b/versioned_docs/version-26.2-organizations/developers-guides/InteractionsBetweenAPIAndAnalyzer.mdx new file mode 100644 index 0000000000..3b1378f40a --- /dev/null +++ b/versioned_docs/version-26.2-organizations/developers-guides/InteractionsBetweenAPIAndAnalyzer.mdx @@ -0,0 +1,183 @@ +--- +sidebar_label: Interactions between API and Analyzer +description: Understand API and Analyzer service communication using AMQP and RabbitMQ for test failure analytics and ML processing. +--- + +# Interactions between API and Analyzer + +## Overview + +Communication between `API service` and `analyzer service` is carried out using [AMQP 0-9-1](http://www.amqp.org/specification/0-9-1/amqp-org-download) and [RabbitMQ](https://www.rabbitmq.com) as message broker. `API service` creates [virtual host](https://www.rabbitmq.com/vhosts.html) inside RabbitMQ with name `analyzer` on start. Analyzers in theirs turn connect to the virtual host and declare exchange with name and arguments. Any type of request from `API` and response from `analyzer` stores in the same queue. Request and response messages is presented as JSON. + + + +## Declaring exchange + +Each analyzer has to declare direct exchange with the following arguments: + +- `analyzer` - Name of analyzer (string) +- `version` - Analyzer version (string) +- `analyzer_index` - Is indexing supported (boolean, false by default) +- `analyzer_log_search` - Is log searching supported (boolean, false by default) +- `analyzer_priority` - Priority of analyzer (number). The lower the number, the higher the priority. + + + +## Declaring queues + +Each analyzer has to declare 5 queues with names: `analyze`, `search`, `index`, `clean`, `delete`. + + + +## Indexing + +Index request can be used to store info about logs and then analysis will be proceed based on the info. Requests and responses use `index` queue. + +Index request structure from `API`: + +IndexLaunch: + +| Attribute | Description | Example | +|----------------|------------------------|------------| +| launchId | Id of launch | 101 | +| launchName | Name of launch | Smoke Test | +| project | Id of project | 12 | +| analyzerConfig | Analyzer configuration | | +| testItems | Array of test items | | + +AnalyzerConfig: + +| Attribute | Description | Example | +|-----------------------|------------------------------------------------------------------------------|---------| +| minDocFreq | The minimum frequency of the saved logs | 1 | +| minTermFreq | The minimum frequency of the word in the analyzed log | 1 | +| minShouldMatch | Percent of words equality between analyzed log and particular log from index | 95 | +| numberOfLogLines | The number of first lines of log message that should be considered in indeT | -1 | +| isAutoAnalyzerEnabled | Is auto analysis enabled | true | +| analyzerMode | Analysis mode. Allowable values: "all", "launch_name", "current_launch" | all | +| indexingRunning | Is indexing running | false | + +IndexTestItem: + +| Attribute | Description | Example | +|----------------|----------------------------|---------------------------------------| +| testItemId | Id of test item | 123 | +| issueType | Issue type locator | pb001 | +| isAutoAnalyzed | Is test item auto analyzed | false | +| logs | Array of test item logs | | + +IndexLog: + +| Attribute | Descrioption | Example | +|-----------|--------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| logId | Id of log | 125 | +| logLevel | Log level | 40000 | +| message | Log message | java.lang.AssertionError: 1 expectation failed. Expected status code <200> but was <400>. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) | + +`API` send array of IndexLaunch entities that have to be indexed. + +Example in json : + +```json +[ + { + "launchId":110, + "launchName":"Smoke Test", + "project":11, + "analyzerConfig":{ + "minDocFreq":1, + "minTermFreq":1, + "minShouldMatch":95, + "numberOfLogLines":-1, + "isAutoAnalyzerEnabled":true, + "analyzerMode":"all", + "indexingRunning":false + }, + "testItems":[ + { + "testItemId":101, + "issueType":"pb001", + "uniqueId":"auto:c6edafc24a03c6f69b6ec070d1fd0089", + "isAutoAnalyzed":false, + "logs":[ + { + "logId":111, + "logLevel":40000, + "message":"java.lang.AssertionError: 1 expectation failed. Expected status code <200> but was <400>." + }, + { + "logId":112, + "logLevel":40000, + "message":"java.lang.AssertionError: 1 expectation failed. Expected status code <200> but was <500>." + } + ] + } + ] + } +] +``` + +Analyzer should return response with number of indexed logs. + +## Analyze + +Analyze request can be used to find matches from request in indexed data. Requests and responses use `analyze` queue. + +Analyze request is the same as IndexLaunch entity used for indexing. It contains info about test items and logs thad have to be analyzed. + +Response from analyzer should contain array of the following entities (info about analyzed test items): + +AnalyzedItemRs: + +| Attribute | Description | Example | +|----------------|--------------------------|---------| +| itemId | Id of analyzed test item | 111 | +| relevantItemId | Id of relevant test item | 123 | +| issueType | Issue type locator | pb001 | + +## Search logs + +Search request can be used to find similar logs from test items with `to_investigate` type. Requests and responses use `search` queue. + +Search logs request from `API`: + +SearchRq: + +| Attribute | Description | Example | +|-------------------|---------------------------------------------------------|-------------------------------------| +| launchId | Id of launch | 111 | +| launchName | Name of launch | Smoke Test | +| itemId | Id of test item | 112 | +| projectId | Id of project | 10 | +| filteredLaunchIds | Array of launch ids, among with search would be applied | [1,2,3] | +| logMessages | Array of log messages looking for | ["first message", "second message"] | +| logLines | Number of logs lines that will be used in comparison | 5 | + +Analyzer should return array of log ids that matches as a response. + +## Clean + +Clean request can be used to remove stored log from index. Requests use `clean` queue. + +Clean logs request from `API`: + +CleanIndexRq: + +| Attribute | Description | Example | +|-----------|---------------------------------|-----------------| +| project | Id of project | 10 | +| ids | Array of log ids to be removed | [111, 122, 123] | + +Analyzer do not send response on the request. + +## Delete + +Delete request can be used to delete entire index. Requests use `delete` queue. + +Request message from `API` contains only id of index. + +Analyzer do not send response on the request. + +## Examples + +Custom [analyzer](https://github.com/ihar-kahadouski/custom-analyzer) written in java using [Spring AMQP](https://spring.io/projects/spring-amqp). diff --git a/versioned_docs/version-26.2-organizations/developers-guides/PluginDevelopersGuide/DevelopACustomImportPlugin.md b/versioned_docs/version-26.2-organizations/developers-guides/PluginDevelopersGuide/DevelopACustomImportPlugin.md new file mode 100644 index 0000000000..a8477aa225 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/developers-guides/PluginDevelopersGuide/DevelopACustomImportPlugin.md @@ -0,0 +1,109 @@ +--- +sidebar_label: Develop a custom import plugin +description: Learn how to develop custom import plugins for ReportPortal test automation reporting tools using PF4J framework. +--- + +# Develop a custom import plugin + +This documentation guides on creating a custom import plugin for ReportPortal, using the PF4J plugin framework. + +## Prerequisites +Before starting the development of a new import plugin, ensure you review these essential resources: + +1. **PF4J Plugin Framework**: Learn about PF4J, which is the core framework for ReportPortal plugins system at [pf4j.org](https://pf4j.org). +2. **Plugin Template**: Start with the standard plugin template available on [GitHub](https://github.com/reportportal/plugin-template). +3. **Examples**: Examine existing plugins for importing: + - JUnit: [GitHub repo](https://github.com/reportportal/plugin-import-junit) + - RobotFramework: [GitHub repo](https://github.com/reportportal/plugin-import-robot). +4. **Event-Based Reporting**: Understand event-based interactions in ReportPortal through [service-api](https://github.com/reportportal/service-api/blob/develop/src/main/java/com/epam/ta/reportportal/reporting/event/EventBasedReporting.java). +5. **Event Objects**: Familiarize with event objects used in reporting at [GitHub](https://github.com/reportportal/commons/tree/develop/src/main/java/com/epam/reportportal/events). +6. **Start Import Endpoint**: Learn how to initiate importing through the UI at [GitHub](https://github.com/reportportal/service-api/blob/6d40590d21fef3299ed5b7e009b1cc7130863c21/src/main/java/com/epam/ta/reportportal/ws/controller/PluginController.java#L140). + +## Step-by-Step Plugin Development Guide + +### Step 1: Clone the Plugin Template +Begin by using the [plugin template](https://github.com/new?template_name=plugin-template&template_owner=reportportal) to create a new repository and get the required boilerplate code. + +### Step 2: Rename and Configure the Template +Update the naming from 'template' to something specific to your plugin need. Modify the `gradle.properties` to set your `pluginId`, which should be a key word without special symbols. Update the manifest appropriately [here](https://github.com/reportportal/plugin-template/blob/698a17a862eb4a8d52274242a9f8e4ec9e6ab799/plugin/build.gradle#L101). + +### Step 3: Implement the Plugin EntryPoint +Create your main class (or use from the template) annotated with `@Extension` that implements `ReportPortalExtensionPoint` ([TemplatePluginExtension](https://github.com/reportportal/plugin-template/blob/main/plugin/src/main/java/com/epam/reportportal/extension/template/TemplatePluginExtension.java)). +This class should contain all logic for integrating the new plugin with the ReportPortal system. Implement the necessary methods as shown in the earlier example snippet. + +For correct representation on the UI, there should be added specific parameters to the plugin: + +```java + @Override + public Map getPluginParams() { + Map params = new HashMap<>(); + params.put(ALLOWED_COMMANDS, new ArrayList<>(pluginCommandMapping.get().keySet())); + params.put(COMMON_COMMANDS, new ArrayList<>(commonPluginCommandMapping.get().keySet())); + params.put(DESCRIPTION_KEY, DESCRIPTION); + params.put(METADATA, Map.of(IS_INTEGRATIONS_ALLOWED, false)); + params.put("maxFileSize", MAX_FILE_SIZE); + params.put("acceptFileMimeTypes", "List of acceptFileMimeTypes")); + return params; + } + + @Override + public IntegrationGroupEnum getIntegrationGroup() { + return IntegrationGroupEnum.IMPORT; + } +``` + +### Step 4: Define the Import Command +Create a class for the 'import' command that must implement the [CommonPluginCommand](https://github.com/reportportal/plugin-api/blob/develop/src/main/java/com/epam/reportportal/extension/CommonPluginCommand.java) interface. This should: +- Specify the command name in the `getName()` method, which must return "import". +```java + @Override + public String getName() { + return "import"; + } +``` + +- Handle the import logic in the `executeCommand(Map params)` method that includes file parsing and publishing launch reporting events. +```java + @Override + public OperationCompletionRS executeCommand(Map params) {} +``` + +When working with a loaded file, it's necessary to trigger events in ReportPortal. For instance, if the report contains specific step information, you need to generate a StartTestItemRQ and publish a StartChildItemRqEvent: + +```java + private String startTestItem(ItemInfo itemInfo) { + StartTestItemRQ rq = buildStartItemRq(itemInfo); + eventPublisher.publishEvent( + new StartChildItemRqEvent(this, projectName, items.peek().getUuid(), rq)); + return rq.getUuid(); + } +``` + +The same approach used for other requests as well. + +### Step 5: Build plugin jar + +Build plugin executable jar using standard gradle commands after implementation of the plugin is finished. +``` +gradle clean build +``` +More information about the assembling of plugins can be found in [PluginDevelopersGuide](./PluginAPIDevelopersGuide.mdx#assemble-plugin) + +### Step 6: Verify the plugin UI + +Provide the info, mentioned in [step 3](#step-3-implement-the-plugin-entrypoint). This will help the ReportPortal UI understand the plugin's capabilities and limitations. +Once the step is completed, the plugin will be available for selection in the ReportPortal UI Launch import modal. No further actions required from the plugin UI to make the import process work. + +#### Add custom UI extensions if needed + +The plugin template also provides a way to add custom extensions to the ReportPortal UI via plugin. +This setup isn't required for import process work, but can be used to provide additional pages/sections in the ReportPortal UI via React components. +For more information, see the [Plugin Developers Guide](./PluginUIDevelopersGuide.md). + +## Events to Manage +- **StartLaunchRqEvent**: To start a new launch. +- **StartRootItemRqEvent**: To begin a root item just below the launch. +- **StartChildItemRqEvent**: For starting a child item, requiring a parent UUID. +- **SaveLogRqEvent**: For saving logs which may include file attachments. + +By following these steps and using the available resources, you can build an import plugin that is customized to your reporting requirements and integrates smoothly with ReportPortal. diff --git a/versioned_docs/version-26.2-organizations/developers-guides/PluginDevelopersGuide/PluginAPIDevelopersGuide.mdx b/versioned_docs/version-26.2-organizations/developers-guides/PluginDevelopersGuide/PluginAPIDevelopersGuide.mdx new file mode 100644 index 0000000000..d1712a9158 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/developers-guides/PluginDevelopersGuide/PluginAPIDevelopersGuide.mdx @@ -0,0 +1,488 @@ +--- +sidebar_label: Plugin API development guide +description: Develop custom plugins for ReportPortal using APIs and microservices architecture for enhanced test automation reporting tools functionality. +--- + +# Plugin API development guide + +## Introduction + +ReportPortal as a microservice application had services that integrate with external systems like JIRA or RALLY. These are problems of this +approach: + +- every service will run as a separate application consuming additional amount of resources for environment; +- user may not need all the integrations at the moment but need some (or a new one) later, so he should modify deployment configuration + every time; +- every service modification requires re-deployment. + +To solve these problems and support dynamic integrations ReportPortal implements plugin system on top +of [PF4J](https://github.com/pf4j/pf4j). + +:::note +Documentation for the UI plugins can be found [here](./PluginUIDevelopersGuide.md) +::: +## How does it work + + + +## Creating your first plugin + +Result of the following steps can be found here - [Plugin template](https://github.com/reportportal/plugin-template). +This is fully configured and ready-to-use plugin. + +### Base plugin configuration + +We configure our build.gradle file as follows: + +```groovy +plugins { + id "io.spring.dependency-management" version "1.0.9.RELEASE" + id 'java' +} + +repositories { + mavenCentral() +} + +dependencies { + implementation 'com.epam.reportportal:plugin-api:5.4.0' + annotationProcessor 'com.epam.reportportal:plugin-api:5.4.0' +} + +task plugin(type: Jar) { + getArchiveBaseName().set("plugin-${pluginId}") + into('classes') { + with jar + } + into('lib') { + from configurations.compile + } + extension('zip') +} + +task assemblePlugin(type: Copy) { + from plugin + into pluginsDir +} + +task assemblePlugins(type: Copy) { + dependsOn subprojects.assemblePlugin +} +``` + +This base configuration with `plugin-api` dependency grants access to extension points and core ReportPortal dependencies. + +
+ +### Create extension + +Firstly we create our plugin representation (we also can override `start()` and `stop()` methods) that will be managed by `pf4j` plugin +manager. + +```java +package com.epam.reportportal.extension.example; + +import org.pf4j.Plugin; +import org.pf4j.PluginWrapper; + +public class ExamplePlugin extends Plugin { + public ExamplePlugin(PluginWrapper wrapper) { + super(wrapper); + } +} +``` + +Then we create our plugin entry point. We start with `ReportPortalExtensionPoint` implementation: + +```java + +@Extension +public class ExampleExtension implements ReportPortalExtensionPoint { + + private final Supplier>> pluginCommandMapping = new MemoizingSupplier<>(this::getCommands); + + public ExampleExtension(Map initParams) { + + } + + @Override + public Map getPluginParams() { + Map params = new HashMap<>(); + params.put(ALLOWED_COMMANDS, new ArrayList<>(pluginCommandMapping.get().keySet())); + return params; + } + + @Override + public PluginCommand getCommandToExecute(String commandName) { + return pluginCommandMapping.get().get(commandName); + } + + private Map> getCommands() { + Map> pluginCommandMapping = new HashMap<>(); + pluginCommandMapping.put("testConnection", (integration, params) -> true); + return pluginCommandMapping; + } +} +``` + +We implement `getPluginParams()` to get list of supported plugin `commands` from the client side. We implement `getCommandToExecute()` to +get command from mapping to execute. As for now we only have `testConnection` command that implements base command interface: + +```java +public interface PluginCommand { + /** + * Executes plugin command + * + * @param integration Configured ReportPortal integration + * @param params Plugin Command parameters + * @return Result + */ + T executeCommand(Integration integration, Map params); +} +``` + +Command `testConnection` is mandatory and should either always return `true` or execute logic of connection test with external system. + +
+ +### Autowire dependencies + +Being loaded in runtime plugin extension can be handled as `Spring bean`. That's why we can autowire dependencies just as we do in core +application: + +```java + +@Extension +public class ExampleExtension implements ReportPortalExtensionPoint { + ... + @Autowired + private ApplicationContext applicationContext; + + @Autowired + private IntegrationTypeRepository integrationTypeRepository; + + @Autowired + private IntegrationRepository integrationRepository; + + public ExampleExtension(Map initParams) { + } + ... +} +``` + +
+ +### Get file command + +We can store in `resources` folder files that can be loaded from the client side later. During plugin installation `plugin manager` provides +directory in the file system to store plugin resources. This directory passed through the constructor (with Map parameter) and can be +accessed as follows: + +```java + +@Extension +public class ExampleExtension implements ReportPortalExtensionPoint { + + private final String resourcesDir; + + ... + + public ExampleExtension(Map initParams) { + resourcesDir = IntegrationTypeProperties.RESOURCES_DIRECTORY.getValue(initParams).map(String::valueOf).orElse(""); + } + + ... +} +``` + +`GetFileCommand` accepts `resourcesDir` and `propertyFile` as constructor parameters. Property file should be stored in `resources` folder +of the plugin. It contains *key-value* mapping that represents files allowed to be loaded from the client side: + +```properties +icon=plugin-icon.svg +``` + +We created `example-binary-data.properties` file with these contents and now can access `plugin-icon.svg` file by passing `icon` key +to `getFileCommand`. + +That's how our extension looks now: + +```java + +@Extension +public class ExampleExtension implements ReportPortalExtensionPoint { + + public static final String BINARY_DATA_PROPERTIES_FILE_ID = "example-binary-data.properties"; + private final String resourcesDir; + + private final Supplier>> pluginCommandMapping = new MemoizingSupplier<>(this::getCommands); + + @Autowired + private ApplicationContext applicationContext; + + @Autowired + private IntegrationTypeRepository integrationTypeRepository; + + @Autowired + private IntegrationRepository integrationRepository; + + public ExampleExtension(Map initParams) { + resourcesDir = IntegrationTypeProperties.RESOURCES_DIRECTORY.getValue(initParams).map(String::valueOf).orElse(""); + } + + @Override + public Map getPluginParams() { + Map params = new HashMap<>(); + params.put(ALLOWED_COMMANDS, new ArrayList<>(pluginCommandMapping.get().keySet())); + return params; + } + + @Override + public PluginCommand getCommandToExecute(String commandName) { + return pluginCommandMapping.get().get(commandName); + } + + private Map> getCommands() { + Map> pluginCommandMapping = new HashMap<>(); + pluginCommandMapping.put("getFile", new GetFileCommand(resourcesDir, BINARY_DATA_PROPERTIES_FILE_ID)); + pluginCommandMapping.put("testConnection", (integration, params) -> true); + return pluginCommandMapping; + } +} +``` + +
+ +### Assemble plugin + +Our plugin can be built either as: + - simple jar (without external dependencies) and use dependencies from core application; + - shadow jar (with external dependencies) and still use dependencies from core application. + +We should configure plugin jar manifest with mandatory properties: + - id + - version + - plugin class (class marked with @Extension - our entry point) + +We should configure `resource` folder contents handling. + +As we load api plugin contents in runtime we can do so with ui contents too. To make it possible we should modify our configuration. +We provide new `ui.gradle` config: + +```groovy +node { + version = '10.14.1' + npmVersion = '6.4.1' + download = true + workDir = file("${project.buildDir}/ui") + nodeModulesDir = file("${project.rootDir}/ui") +} + +npm_run_build { + inputs.files fileTree("ui/src") + inputs.file 'ui/package.json' + inputs.file 'ui/package-lock.json' + outputs.dir 'ui/build' +} +``` + +Load it to the main configuration as a dependency and make some changes to include generated `main.js` file to `resources` folder that +allows us to load it using `GetFileCommand`. + +That's how our `build.gradle` looks now: + +```groovy +import com.github.spotbugs.SpotBugsTask + +plugins { + id "io.spring.dependency-management" version "1.0.9.RELEASE" + id 'java' + id 'com.github.johnrengelman.shadow' version '5.2.0' + id "com.moowork.node" version "1.3.1" +} + +apply from: 'ui.gradle' + +repositories { + mavenCentral() +} + +dependencies { + implementation 'com.epam.reportportal:plugin-api:5.4.0' + annotationProcessor 'com.epam.reportportal:plugin-api:5.4.0' +} + +artifacts { + archives shadowJar +} + +sourceSets { + main { + resources + { + exclude '**' + } + } +} + +jar { + from("src/main/resources") { + into("/resources") + } + from("ui/build") { + into("/resources") + } + manifest { + attributes( + "Class-Path": configurations.compile.collect { it.getName() }.join(' '), + "Plugin-Id": "${pluginId}", + "Plugin-Version": "${project.version}", + "Plugin-Provider": "Report Portal", + "Plugin-Class": "com.epam.reportportal.extension.example.ExamplePlugin", + "Plugin-Service": "api" + ) + } +} + +shadowJar { + from("src/main/resources") { + into("/resources") + } + from("ui/build") { + into("/resources") + } + configurations = [project.configurations.compile] + zip64 true + dependencies { + } +} + +task plugin(type: Jar) { + getArchiveBaseName().set("plugin-${pluginId}") + into('classes') { + with jar + } + into('lib') { + from configurations.compile + } + extension('zip') +} + +task assemblePlugin(type: Copy) { + from plugin + into pluginsDir +} + +task assemblePlugins(type: Copy) { + dependsOn subprojects.assemblePlugin +} + +compileJava.dependsOn npm_run_build +``` + +Now we can just execute *./gradlew build* and get plugin binaries (as jar and as shadowJar) that can be loaded to the application. + +### Event listeners + +All plugin commands are executed through the core application end-point with mapping: + +`https://host:port/v1/integration/{projectName}/{integrationId}/{command}` + +As we can see `integrationId` is a mandatory parameter that specifies integration to be used in the command execution. + +We can affect logic executed in core application from the plugin by handling predefined set of events. As for now we will use +mandatory `PluginLoadedEventHandler` as an example. + +This handler creates the very first integration and uses `PluginInfoProvider` to update plugin data in the database. + +To add a new listener we should use `ApplicationContext` after plugin was loaded - so we do it in the method marked by `@PostConstruct`. + +Also, we should remove listeners when we unload plugin - so we implement `DisposableBean` interface and provide this logic in the `preDestroy()` method. + +That's how our extension looks now: + +```java + +@Extension +public class ExampleExtension implements ReportPortalExtensionPoint, DisposableBean { + + public static final String BINARY_DATA_PROPERTIES_FILE_ID = "example-binary-data.properties"; + private static final String PLUGIN_ID = "example"; + private final String resourcesDir; + + private final Supplier>> pluginCommandMapping = new MemoizingSupplier<>(this::getCommands); + private final Supplier> pluginLoadedListenerSupplier; + + @Autowired + private ApplicationContext applicationContext; + + @Autowired + private IntegrationTypeRepository integrationTypeRepository; + + @Autowired + private IntegrationRepository integrationRepository; + + public ExampleExtension(Map initParams) { + resourcesDir = IntegrationTypeProperties.RESOURCES_DIRECTORY.getValue(initParams).map(String::valueOf).orElse(""); + + pluginLoadedListenerSupplier = new MemoizingSupplier<>(() -> new ExamplePluginEventListener(PLUGIN_ID, + new PluginEventHandlerFactory(integrationTypeRepository, + integrationRepository, + new PluginInfoProviderImpl(resourcesDir, BINARY_DATA_PROPERTIES_FILE_ID) + ) + )); + } + + @Override + public Map getPluginParams() { + Map params = new HashMap<>(); + params.put(ALLOWED_COMMANDS, new ArrayList<>(pluginCommandMapping.get().keySet())); + return params; + } + + @Override + public PluginCommand getCommandToExecute(String commandName) { + return pluginCommandMapping.get().get(commandName); + } + + @PostConstruct + public void createIntegration() throws IOException { + initListeners(); + } + + private void initListeners() { + ApplicationEventMulticaster applicationEventMulticaster = applicationContext.getBean(AbstractApplicationContext.APPLICATION_EVENT_MULTICASTER_BEAN_NAME, + ApplicationEventMulticaster.class + ); + applicationEventMulticaster.addApplicationListener(pluginLoadedListenerSupplier.get()); + } + + @Override + public void destroy() { + removeListeners(); + } + + private void removeListeners() { + ApplicationEventMulticaster applicationEventMulticaster = applicationContext.getBean(AbstractApplicationContext.APPLICATION_EVENT_MULTICASTER_BEAN_NAME, + ApplicationEventMulticaster.class + ); + applicationEventMulticaster.removeApplicationListener(pluginLoadedListenerSupplier.get()); + } + + private Map> getCommands() { + Map> pluginCommandMapping = new HashMap<>(); + pluginCommandMapping.put("getFile", new GetFileCommand(resourcesDir, BINARY_DATA_PROPERTIES_FILE_ID)); + pluginCommandMapping.put("testConnection", (integration, params) -> true); + return pluginCommandMapping; + } +} +``` + +## Lazy initialization + +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: +:::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` +::: diff --git a/versioned_docs/version-26.2-organizations/developers-guides/PluginDevelopersGuide/PluginUIDevelopersGuide.md b/versioned_docs/version-26.2-organizations/developers-guides/PluginDevelopersGuide/PluginUIDevelopersGuide.md new file mode 100644 index 0000000000..7d6a6e3787 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/developers-guides/PluginDevelopersGuide/PluginUIDevelopersGuide.md @@ -0,0 +1,54 @@ +--- +sidebar_label: Plugin UI development guide +description: Learn how to develop plugin UI components for ReportPortal test automation reporting tools with modern frontend technologies. +--- + +# Plugin UI development guide + +The described approach cover the UI part of the plugin engine starting from ReportPortal version 24.1. + +To learn how deal with ReportPortal plugins from the Backend side, follow the [separate guide](./PluginAPIDevelopersGuide.mdx). + +## The concept + +The Service UI and Plugin UI are integrated in runtime using JavaScript and share the common dependencies via [Webpack Module Federation](https://webpack.js.org/concepts/module-federation/). + +### From Service UI side + +The ReportPortal Service UI (the core UI - further in the text) is built with the React library and uses Redux for state management. +It has a list with extension points that can be used to extend the core UI with custom React components come from plugins. Extension points are described [here](#). +The context (e.g. current user, project) from core UI is shared via Redux state and can be accessed in plugins. In addition to this, the core UI provides a set of common components and utils that can be used in plugins as well. + +After uploading the plugin to the ReportPortal (see [how](#)) and opening the application in browser, the core UI will load the descriptors file (`metadata.json`) from plugin to define the extension points implemented there. + +Once the place with particular extension point opened in the application (e.g. Settings page), the core UI loads the React component from the Plugin UI files and render it in the appropriate place in application. + +#### Libs sharing + +The core UI shares its major dependencies via Webpack Module Federation plugin. +That means that libs can be safely reused in plugin without loading their duplicate to the browser if the version of the lib satisfies the plugin needs. + +The list with shared libs from core UI: + +Create table. + +##### Shared extension props + +After embedding into the core UI, each Plugin UI extension component receives the rich set of components and utils via props. +The complete set of such a props can be found [in the core UI](https://github.com/reportportal/service-ui/blob/develop/app/src/controllers/plugins/uiExtensions/createImportProps.js), some of them are described via TS definitions in the [plugin template repo](https://github.com/reportportal/plugin-template/tree/main/plugin/ui/src/types/extensionProps). + +#### Extension points + +The list with supported extension points by core UI: + +| Extension type | Description | +| --------------------- |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| settingsTab | Adds the new tab on project settings page (_https://your_server/ui/#(projectName)/settings/(tabName)_). | +| modal | Adds the new modal component to the system (can be shown by calling `showModalAction` with corresponding modal `name`). | +| adminPage | Adds the new page to the _administrate_ section. | +| integrationFormFields | Provides the fields to the integration creation modal on project integrations page (_https://your_server/ui/#(projectName)/settings/integrations_).
`IntegrationFormField` component from Core UI can be used here to simplify form building process.
**Note:** Integration settings for the plugin will be available only if plugin provides `embedded` property in its `details`. | +| integrationSettings | Provides the integration settings component on project integrations page (_https://your_server/ui/#(projectName)/settings/integrations_).
`IntegrationSettings` component from Core UI can be used here to reduce the time for building communication with API and follow common design and UX patterns as in other integrations.
**Note:** Integration settings for the plugin will be available only if plugin provides `embedded` property in its `details`. | +| sidebarComponent | Adds a component to the application sidebar. | +| launchItemComponent | Adds a component to the every launch entity on launches page (component will be displayed under the launch name). | + +projectPage (if `icon` property exists, the link will be automatically added to the sidebar). Right now only SVG icons supported. diff --git a/versioned_docs/version-26.2-organizations/developers-guides/PluginDevelopersGuide/index.md b/versioned_docs/version-26.2-organizations/developers-guides/PluginDevelopersGuide/index.md new file mode 100644 index 0000000000..e69d9a3971 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/developers-guides/PluginDevelopersGuide/index.md @@ -0,0 +1,10 @@ +--- +sidebar_label: Plugin developers guide +description: Build custom plugins for ReportPortal. Learn APIs and UI hooks to extend reporting, streamline workflows, and tailor your test automation dashboard. +--- + +# Plugin developers guide + +From version 5 the ReportPortal supports custom plugins that can be uploaded to the system as `.jar` files on _plugins_ page or via API. + +There are guides for Plugin development from API and UI perspective. diff --git a/versioned_docs/version-26.2-organizations/developers-guides/ReportPortalAPI.mdx b/versioned_docs/version-26.2-organizations/developers-guides/ReportPortalAPI.mdx new file mode 100644 index 0000000000..40dea8c8bb --- /dev/null +++ b/versioned_docs/version-26.2-organizations/developers-guides/ReportPortalAPI.mdx @@ -0,0 +1,14 @@ +--- +sidebar_label: ReportPortal API +description: Explore ReportPortal's REST API to automate test reporting, manage projects, and integrate with CI/CD pipelines, enhancing your testing workflow efficiency. +--- + +# ReportPortal API + +To find API documentation for our test automation reporting platform, log in to the ReportPortal application and open the API section in the left menu. + + + +The API documentation for different versions can also be accessed from the [link](https://developers.reportportal.io/api-docs/) at the top of the page. + + diff --git a/versioned_docs/version-26.2-organizations/developers-guides/ReportingDevelopersGuide.md b/versioned_docs/version-26.2-organizations/developers-guides/ReportingDevelopersGuide.md new file mode 100644 index 0000000000..18d8b12cd2 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/developers-guides/ReportingDevelopersGuide.md @@ -0,0 +1,651 @@ +--- +sidebar_label: Reporting developers guide +description: Learn how to integrate test results into ReportPortal using HTTP requests, manage launches, and handle logs for effective test reporting. +--- + +# Reporting developers guide + +## Preconditions + +Let's imagine we have the following tests structure: + +``` +(Suite) Services + (Test) PluginServiceTest + (Step) uploadPlugin + (Step) updatePlugin + (Step) removePlugin + (Test) UserServiceTest + (Step) createUser + (Step) updateUser + (Step) deleteUser +``` + +So our goal is run the tests and send results to ReportPortal. +We can interact with ReportPortal API instance trough HTTP requests. + +The main flow is set of HTTP requests: +1. Start launch +2. Start test item +3. Save log with attachment if necessary +4. Finish test item +5. Finish launch + +Steps 2-4 should execute for each test item in structure. + +Let's assume that our ReportPortal instance deployed at `http://rp.com`. And our project name is `rp_project`. + +Also we need token to get access to API. There are two ways to retrieve it. + +## Retrieving api token + +#### Using UI + +You can find it in profile (`http://rp.com/ui/#user-profile`). + +#### Using UAT service + +First of all you need UI-token. You can get it sending POST request to `http://rp.com/uat/sso/oauth/token` with user credentials. + +```shell +curl --header "Content-Type: application/x-www-form-urlencoded" \ + --request POST \ + --data "grant_type=password&username=default&password=1q2w3e" \ + --user "ui:uiman" \ + http://rp.com/uat/sso/oauth/token +``` + +Response will contain `access_token` field which is UI-token + +```json +{ + "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NzU5MDA0NDgsInVzZXJfbmFtZSI6ImRlZmF1bHQiLCJhdXRob3JpdGllcyI6WyJST0xFX1VTRVIiXSwianRpIjoiOGQxZmUxOGUtNWY4NC00YTcwLWEwMTctNDBmZTU4ZmY3MjU3IiwiY2xpZW50X2lkIjoidWkiLCJzY29wZSI6WyJ1aSJdfQ.-5INLZnYJhNLwU5BTBuEDd0SBPoRGLBX6uX03kaEwLs", + "token_type": "bearer", + "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJkZWZhdWx0Iiwic2NvcGUiOlsidWkiXSwiYXRpIjoiOGQxZmUxOGUtNWY4NC00YTcwLWEwMTctNDBmZTU4ZmY3MjU3IiwiZXhwIjoxNTc4NDg4ODQ4LCJhdXRob3JpdGllcyI6WyJST0xFX1VTRVIiXSwianRpIjoiMGQyZDdiNTEtNGE3Mi00NjEwLTgxYmUtY2JmYjZhODhjNTgxIiwiY2xpZW50X2lkIjoidWkifQ.YOcpWlQSgF3LuskIqXgasjKvawbM_XP_I2oNJcgt9mM", + "expires_in": 3600, + "scope": "ui", + "jti": "8d1fe18e-5f84-4a70-a017-40fe58ff7257" +} +``` + +Next step is retrieve API Key that lives longer that UI-token. + +```shell +curl http://localhost:8080/api/users/{user_id}/api-keys \ + --request POST \ + --header "Content-Type: application/json" \ + --header "Authorization: Bearer {token}" \ + --data '{"name": "Token name"}' +``` + +Use `api_key` from response as a bearer token in the `Authorization` header. + +## Start launch + +To start launch you should send request to the following endpoint: +POST `/api/{version}/{projectName}/launch` + +Start launch request model contains the following attributes: + +| Attribute | Required | Description | Default value | Examples | +|:-----------:|----------|--------------------------------------------------------------------------|-------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| name | Yes | Name of launch | - | AutomationRun | +| startTime | Yes | Launch start time | - | 2019-11-22T11:47:01+00:00 (ISO 8601); Fri, 22 Nov 2019 11:47:01 +0000 (RFC 822, 1036, 1123, 2822); 2019-11-22T11:47:01+00:00 (RFC 3339); 1574423221000 (Unix Timestamp) | +| description | No | Description of launch | empty | Services tests | +| uuid | No | Launch uuid (string identificator) | auto generated(if not present in request) | 69dc75cd-4522-44b9-9015-7685ec0e1abb | +| attributes | No | Launch attributes. Pairs of key and value | empty | build:3.0.1, os:bionic | +| mode | No | Launch mode. Allowable values 'default' or 'debug' | default | DEFAULT | +| rerun | No | Rerun mode. Allowable values 'true' of 'false' | false | false | +| rerunOf | No | Rerun mode. Specifies launch to be reruned. Uses with 'rerun' attribute. | empty | 694e1549-b8ab-4f20-b7d8-8550c92431b0 | + +Start launch response contains the following attributes: + +| Attribute | Required | Description | Examples | +|------------|----------|--------------------------|--------------------------------------| +| id | Yes | UUID of created launch | 1d1fb22e-01f7-4ac9-9ebc-f020d8fe93ff | +| number (*) | No | Number of created launch | 1 | + +`(*)` Field is not present in case using async endpoints + +So full request to start our launch looks like + +```shell +curl --header "Content-Type: application/json" \ + --header "Authorization: Bearer 039eda00-b397-4a6b-bab1-b1a9a90376d1" \ + --request POST \ + --data '{"name":"rp_launch","description":"My first launch on RP","startTime":"1574423221000","mode":"DEFAULT","attributes":[{"key":"build","value":"0.1"},{"value":"test"}]}' \ + http://rp.com/api/v1/rp_project/launch +``` + +Where body is the following json: + +```json +{ + "name": "rp_launch", + "description": "My first launch on RP", + "startTime": "1574423221000", + "mode": "DEFAULT", + "attributes": [ + { + "key": "build", + "value": "0.1" + }, + { + "value": "test" + } + ] +} +``` + +In the response we can see `id` and `number` if launch started successfully or an error if something went wrong. + +```json +{ + "id": "96d1bc02-6a3f-451e-b706-719149d51ce4", + "number": 1 +} +``` +Value of `id` field should save somewhere. It is obligatory for report test items under this launch and will be used later. + +## Start root(suite) item + +Now we have created launch and can report items under it. +To start root item you should send request to the following endpoint: +POST `/api/{version}/{projectName}/item` + +Start test item request model contains the following attributes: + +| Attribute | Required | Description | Default value | Examples | +|-------------|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| name | Yes | Name of test item | - | Logging Tests | +| startTime | Yes | Test item start time | - | 2019-11-22T11:47:01+00:00 (ISO 8601); Fri, 22 Nov 2019 11:47:01 +0000 (RFC 822, 1036, 1123, 2822); 2019-11-22T11:47:01+00:00 (RFC 3339); 1574423221000 (Unix Timestamp) | +| type | Yes | Type of test item. Allowable values: "suite", "story", "test", "scenario", "step", "before_class", "before_groups", "before_method", "before_suite", "before_test", "after_class", "after_groups", "after_method", "after_suite", "after_test" | - | suite | +| launchUuid | Yes | Parent launch UUID | - | 96d1bc02-6a3f-451e-b706-719149d51ce4 | +| description | No | Test item description | empty | Tests of loggers | +| attributes | No | Test item attributes. Pairs of key and value | empty | most failed, os:android | +| uuid | No | Test item UUID | auto generated | e9ca837e-966c-412e-bf8b-e879510d99d5 | +| codeRef | No | Physical location of test item | empty | com.rpproject.tests.LoggingTests | +| parameters | No | Set of parameters (for parametrized tests) | empty | logger:logback | +| uniqueId | No | | auto generated | auto:cd5a6c616d412b6739738951c922377f | +| retry | No | Used to report retry of test. Allowable values: 'true' or 'false' | false | false | +| hasStats | No | | true | true | + +Start test item response contains the following attributes: + +| Attribute | Required | Example | +|-----------|----------|--------------------------------------| +| id | Yes | 7189ec02-4c36-4e36-9f90-5a9b31dcbdba | + +So full request to start suite test looks like + + ```shell +curl --header "Content-Type: application/json" \ + --header "Authorization: Bearer 039eda00-b397-4a6b-bab1-b1a9a90376d1" \ + --request POST \ + --data '{"name":"Services","startTime":"1574423234000","type":"suite","launchUuid":"96d1bc02-6a3f-451e-b706-719149d51ce4","description":"Services tests"}' \ + http://rp.com/api/v1/rp_project/item +``` + +Where body is the following json: + +```json +{ + "name": "Services", + "startTime": "1574423234000", + "type": "suite", + "launchUuid": "96d1bc02-6a3f-451e-b706-719149d51ce4", + "description": "Services tests" +} +``` + +And in the response we get `id` of created test item: + +```json +{ + "id": "1e183148-c79f-493a-a615-2c9a888cb441" +} +``` + +Also we should save it to report child items under this one + +## Start child(container) item + +Next test item will be child for suite test item and it also will be parent for few step items. +It will be container item. +To start child item we need know launch UUID and parent test item UUID. +We should call the following endpoint: +POST `/api/{version}/{projectName}/item/{parentItemUuid}` + +Request and response model the same as for parent item. + +Full request: + +```shell +curl --header "Content-Type: application/json" \ + --header "Authorization: Bearer 039eda00-b397-4a6b-bab1-b1a9a90376d1" \ + --request POST \ + --data '{"name":"PluginServiceTest","startTime":"1574423236000","type":"test","launchUuid":"96d1bc02-6a3f-451e-b706-719149d51ce4","description":"Plugin tests"}' \ + http://rp.com/api/v1/rp_project/item/1e183148-c79f-493a-a615-2c9a888cb441 +``` + +Where body is: + +```json +{ + "name": "PluginServiceTest", + "startTime": "1574423236000", + "type": "test", + "launchUuid": "96d1bc02-6a3f-451e-b706-719149d51ce4", + "description": "Plugin tests" +} +``` + +And we have a response: + +```json +{ + "id": "bb237b98-22b0-4289-9490-9bb29215fe5e" +} +``` + +## Start child(step) item + +Now we are going to start another final test item in our structure. + +```shell +curl --header "Content-Type: application/json" \ + --header "Authorization: Bearer 039eda00-b397-4a6b-bab1-b1a9a90376d1" \ + --request POST \ + --data '{"name":"uploadPlugin","startTime":"1574423237000","type":"step","launchUuid":"96d1bc02-6a3f-451e-b706-719149d51ce4","description":"Uploading plugin"}' \ + http://rp.com/api/v1/rp_project/item/bb237b98-22b0-4289-9490-9bb29215fe5e +``` + +With body: + +```json +{ + "name": "uploadPlugin", + "startTime": "1574423237000", + "type": "step", + "launchUuid": "96d1bc02-6a3f-451e-b706-719149d51ce4", + "description": "Uploading plugin" +} +``` + +And response: + +```json +{ + "id": "22e55c62-d028-4b49-840f-195d7a48b114" +} +``` + +## Start child(nested step) item + +Test item without statistics is called `Nested step` and required for grouping logs and other `nested steps`(can be expanded and collapsed on the UI-view). `Nested step` has the same body request as common test item and defined only by additional field `hasStats=false`. + +```shell +curl --header "Content-Type: application/json" \ + --header "Authorization: Bearer 039eda00-b397-4a6b-bab1-b1a9a90376d1" \ + --request POST \ + --data '{"name":"nestedItem","startTime":"1574423237000","type":"step","hasStats":false,"launchUuid":"96d1bc02-6a3f-451e-b706-719149d51ce4"}' \ + http://rp.com/api/v1/rp_project/item/22e55c62-d028-4b49-840f-195d7a48b114 +``` + +With body: + +```json +{ + "name": "nestedItem", + "startTime": "1574423237000", + "type": "step", + "hasStats": false, + "launchUuid": "96d1bc02-6a3f-451e-b706-719149d51ce4" +} +``` + +And response: + +```json +{ + "id": "37b77h32-t028-7b49-842f-195d7b48s114" +} +``` + +See Nested Step usage implementation and visual appearance ([Java based example](https://github.com/reportportal/client-java/wiki/Nested-steps)) + +## Finish child(nested step) item + +We can finish `Nested step`. +To do that we should send the following request: +PUT `/api/{version}/{projectName}/item/{itemUuid}` + +Finish `Nested step` request model: + +| Attribute | Required | Description | Default value | Example | +|-------------|----------|-----------------------------------------------------------------------------------------------------------|---------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| endTime | Yes | Test item end time | - | 2019-11-22T11:47:01+00:00 (ISO 8601); Fri, 22 Nov 2019 11:47:01 +0000 (RFC 822, 1036, 1123, 2822); 2019-11-22T11:47:01+00:00 (RFC 3339); 1574423221000 (Unix Timestamp) | +| launchUuid | Yes | Parent launch UUID | - | 48ecc273-032f-44d4-822a-66e494e9b1e8 | +| status | No | Test item status. Allowable values: "passed", "failed", "stopped", "skipped", "interrupted", "cancelled". | - | failed | +| description | No | Test item description. Overrides description from start request. Not displayed on the UI-view for Nested Steps | empty | Test item description on finish | + +If item finished successfully in the response will be message with item uuid. + +Full request: + + ```shell +curl --header "Content-Type: application/json" \ + --header "Authorization: Bearer 039eda00-b397-4a6b-bab1-b1a9a90376d1" \ + --request PUT \ + --data '{"endTime":"1574423239000","status":"failed","launchUuid":"96d1bc02-6a3f-451e-b706-719149d51ce4"}' \ + http://rp.com/api/v1/rp_project/item/37b77h32-t028-7b49-842f-195d7b48s114 +``` + +With body: + +```json +{ + "endTime": "1574423239000", + "status": "failed", + "launchUuid": "96d1bc02-6a3f-451e-b706-719149d51ce4" +} +``` + +## Finish child item + +We are not going to report more test items under this one, so we can finish it. +To do that we should send the following request: +PUT `/api/{version}/{projectName}/item/{itemUuid}` + +Finish test item request model: + +| Attribute | Required | Description | Default value | Example | +|-------------|----------|-----------------------------------------------------------------------------------------------------|---------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| endTime | Yes | Test item end time | - | 2019-11-22T11:47:01+00:00 (ISO 8601); Fri, 22 Nov 2019 11:47:01 +0000 (RFC 822, 1036, 1123, 2822); 2019-11-22T11:47:01+00:00 (RFC 3339); 1574423221000 (Unix Timestamp) | +| launchUuid | Yes | Parent launch UUID | - | 48ecc273-032f-44d4-822a-66e494e9b1e8 | +| status | No | Test item status. Allowable values: "passed", "failed", "stopped", "skipped", "interrupted", "cancelled". | - | failed | +| description | No | Test item description. Overrides description from start request. | empty | Test item description on finish | +| attributes | No | Test item attributes. Pairs of key and value. Overrides attributes on start | empty | most failed, os:android | +| retry | No | Used to report retry of test. Allowable values: 'true' or 'false' | false | false | +| issue | No | Issue of current test item | empty | Will be described below in separate table | + +Issue part for finish test item model: + +| Attribute | Required | Description | Default value | Example | +|----------------------|----------|-------------------------------------------------------------------------------------------------------------|---------------|-------------------------------------------| +| issueType | Yes | Issue type locator. Allowable values: "pb***", "ab***", "si***", "ti***", "nd001" or "NOT_ISSUE". Where *** is locator id. | - | pb001 | +| comment | No | Issue comment | empty | Framework issue. Script outdated | +| autoAnalyzed | No | Is issue was submitted by auto analyzer | false | false | +| ignoreAnalyzer | No | Is issue should be ignored during auto analysis | false | false | +| externalSystemIssues | No | Set of external system issues | empty | Will be described in separate table below | + +External system issue: + +| Attribute | Required | Description | Default value | Example | +|------------|----------|----------------------------------------|---------------|-----------------------------| +| ticketId | No | Id of ticket in external system | empty | ABCD1234 | +| submitDate | No | Ticket submit date as timestamp | empty | 1574696194000 | +| brsUrl | No | URL of external system | empty | http://example.com | +| btsProject | No | Project name in external system | empty | ABCD | +| url | No | URL of ticket in external system issue | empty | http://example.com/ABCD1234 | + +If item finished successfully in the response will be message with item uuid. + +Full request: + + ```shell +curl --header "Content-Type: application/json" \ + --header "Authorization: Bearer 039eda00-b397-4a6b-bab1-b1a9a90376d1" \ + --request PUT \ + --data '{"endTime":"1574423239000","status":"failed","launchUuid":"96d1bc02-6a3f-451e-b706-719149d51ce4","issue":{"issueType":"pb001","comment":"Some critical issue"}}' \ + http://rp.com/api/v1/rp_project/item/22e55c62-d028-4b49-840f-195d7a48b114 +``` + +With body: + +```json +{ + "endTime": "1574423239000", + "status": "failed", + "launchUuid": "96d1bc02-6a3f-451e-b706-719149d51ce4", + "issue": { + "issueType": "pb001", + "comment": "Some critical issue" + } +} +``` + +We can report other child items (`updatePlugin`, `removePlugin`) the same way as described above. +All skipped and failed items are marked as `To Investigate` by default. To mark them as not issue just send a special issue type: +`"issue": {"issueType": "NOT_ISSUE"}`. + +## Finish parent(container) item + +After that we should finish their parent item. +We can do it the same way as for child items. + +```shell +curl --header "Content-Type: application/json" \ + --header "Authorization: Bearer 039eda00-b397-4a6b-bab1-b1a9a90376d1" \ + --request PUT \ + --data '{"endTime":"1574423241000","launchUuid":"96d1bc02-6a3f-451e-b706-719149d51ce4"}' \ + http://rp.com/api/v1/rp_project/item/bb237b98-22b0-4289-9490-9bb29215fe5e +``` + +With body: + +```json +{ + "endTime": "1574423241000", + "launchUuid": "96d1bc02-6a3f-451e-b706-719149d51ce4" +} +``` + +## Save single log without attachment + +We can save logs for test items. +For example let's try to save log for `uploadPlugin` test item. +It is not necessary to save log when test item already finished. +We can create log for test item with `in_progress` status. + +Common endpoint: POST `/api/{version}/{projectName}/log` + +And it has the following request model: + +| Attribute | Required | Description | Default value | Example | +|------------|----------|--------------------------------------------------------------------------------------------------------------------------------|---------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| launchUuid | Yes | Launch UUID | - | e80b62e1-b297-47a0-be22-5a4a25920c0a | +| time | Yes | Log time | - | 2019-11-22T11:47:01+00:00 (ISO 8601); Fri, 22 Nov 2019 11:47:01 +0000 (RFC 822, 1036, 1123, 2822); 2019-11-22T11:47:01+00:00 (RFC 3339); 1574423221000 (Unix Timestamp) | +| itemUuid | No | Test item UUID | empty | fb2a012f-5996-45a0-b3bb-d8210b4fb980 | +| message | No | Log message | empty | [Forwarding findElement on session 477bee808ca0c415a7aae2de2edc5cc9 to remote] DEBUG o.a.h.c.protocol.RequestAddCookies - CookieSpec selected: default | +| level | No | Log level. Allowable values: error(40000), warn(30000), info(20000), debug(10000), trace(5000), fatal(50000), unknown(60000). You can create a custom log type with any log level. | ? | error | + +Response model: + +| Attribute | Required | Example | +|-----------|----------|--------------------------------------| +| id | Yes | 43f80000-7ca8-4fed-9da3-0759867a847c | + +Full request: + +```shell +curl --header "Content-Type: application/json" \ + --header "Authorization: Bearer 039eda00-b397-4a6b-bab1-b1a9a90376d1" \ + --request POST \ + --data '{"launchUuid":"96d1bc02-6a3f-451e-b706-719149d51ce4","itemUuid":"22e55c62-d028-4b49-840f-195d7a48b114","time":"1574423245000","message":"An error occurred while connecting to the server [Nested exception is java.lang.NoClassDefFoundError]","level":"error"}' \ + http://rp.com/api/v1/rp_project/log +``` + +Where body is: + +```json +{ + "launchUuid": "96d1bc02-6a3f-451e-b706-719149d51ce4", + "itemUuid": "22e55c62-d028-4b49-840f-195d7a48b114", + "time": "1574423245000", + "message": "An error occurred while connecting to the server [Nested exception is java.lang.NoClassDefFoundError]", + "level": "error" +} +``` + +## Batch save logs + +It is convenient to send all logs with attachments using only one request. +Let's assume we want to save two logs with attachments (file1.pdf and file2.txt) + +To the request model adds one more complex attribute `file` with the following parameters: + +| Attribute | Required | Description | Default value | Example | +|-------------|----------|-------------------|---------------|-----------------| +| name | No | File name | - | report.pdf | +| content | No | Byte array | - | - | +| contentType | No | File content type | - | application/pdf | + +Response model contains an array of the following objects: + +| Attribute | Required | Description | Example | +|----------------|----------|-------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| id | No | UUID of created log | 77542c07-970c-481d-ad5a-b4ccd15ae178 | +| message (*) | No | Exception message if error occurrs | ReportPortalException: Binary data cannot be saved. There is no request part or file with name lin_av.png | +| stackTrace (*) | No | Stack trace of exception if error occurrs | com.epam.ta.reportportal.exception.ReportPortalException: Binary data cannot be saved. There is no request part or file with name lin_av.png\r\n\tat com.epam.ta.reportportal.commons.validation.ErrorTypeBasedRuleValidator.verify(ErrorTypeBasedRuleValidator.java:37)\r\n\tat com.epam.ta.reportportal.ws.controller.LogController.createLog(LogController.java:133) | + +`(*)` Fields are present only if error occurred. + +Full request: + +```shell script +curl --header "Content-Type: multipart/form-data" \ + --header "Authorization: Bearer 039eda00-b397-4a6b-bab1-b1a9a90376d1" \ + --request POST \ + --form 'json_request_part=[{"itemUuid":"9c7632a2-272e-4c24-9627-d7d509de7620","launchUuid":"96d1bc02-6a3f-451e-b706-719149d51ce4","time":"2019-11-06T15:50:53.187Z","message":"Some critical exception","level": "info","file":{"name":"file1.pdf"}},{"itemUuid":"16fb3d7f-ddce-407a-8e52-464a596e6da1","launchUuid":"96d1bc02-6a3f-451e-b706-719149d51ce4","time":"2019-11-06T15:50:53.187Z","message":"java.lang.NullPointerException","level": "info","file":{"name":"file2.txt"}}]; type=application/json' \ + --form "file=@/path/to/file1.pdf" \ + --form "file=@/path/to/file2.txt" \ + http://rp.com/api/v1/rp_project/log +``` + +With json body: + +```json +[ + { + "itemUuid": "9c7632a2-272e-4c24-9627-d7d509de7620", + "launchUuid": "96d1bc02-6a3f-451e-b706-719149d51ce4", + "time": "2019-11-06T15:50:53.187Z", + "message": "Some critical exception", + "level": 40000, + "file": { + "name": "file1.pdf" + } + }, + { + "itemUuid": "16fb3d7f-ddce-407a-8e52-464a596e6da1", + "launchUuid": "96d1bc02-6a3f-451e-b706-719149d51ce4", + "time": "2019-11-06T15:50:53.187Z", + "message": "java.lang.NullPointerException", + "level": 40000, + "file": { + "name": "file2.txt" + } + } +] +``` + +So we successfully reported logs with file attachments and can see in response: + +```json +{ + "responses": [ + { + "id": "ec1b0153-a00e-4c61-b6bf-ac0578c2ed43" + }, + { + "id": "b7661cb6-7e1a-40e2-8b96-59de41aa96e8" + } + ] +} +``` + +## Save launch log + +It is possible to report log attached to launch. +To do that use the same log endpoint, but in body do not send `itemUuid` + +```json +{ + "launchUuid": "96d1bc02-6a3f-451e-b706-719149d51ce4", + "time": "2019-11-06T15:50:53.187Z", + "message": "java.lang.NullPointerException", + "level": 40000, + "file": { + "name": "file2.txt" + } +} +``` + +The same way we can report all the rest test items. + +## Finish root(suite) item + +Finishing root item can be done the same way as [finish parent item](#finish-parentcontainer-item) and [finish child item](#finish-child-item). +But we should specify its uuid in request parameter. + +```shell script +curl --header "Content-Type: application/json" \ + --header "Authorization: Bearer 039eda00-b397-4a6b-bab1-b1a9a90376d1" \ + --request PUT \ + --data '{"endTime":"1574423247000","launchUuid":"96d1bc02-6a3f-451e-b706-719149d51ce4"}' \ + http://rp.com/api/v1/rp_project/item/1e183148-c79f-493a-a615-2c9a888cb441 +``` + +```json +{ + "endTime": "1574423247000", + "launchUuid": "96d1bc02-6a3f-451e-b706-719149d51ce4" +} +``` + +## Finish launch + +When we finished all test items, it's time to finish launch. +Endpoint: + +PUT `/api/{version}/{projectName}/launch/{launchUuid}/finish` + +Finish request model: + +| Attribute | Required | Description | Default value | Examples | +|-------------|----------|-------------------------------------------------------------------------------------------------|-------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| endTime | Yes | Launch end time | - | 2019-11-22T11:47:01+00:00 (ISO 8601); Fri, 22 Nov 2019 11:47:01 +0000 (RFC 822, 1036, 1123, 2822); 2019-11-22T11:47:01+00:00 (RFC 3339); 1574423221000 (Unix Timestamp) | +| status | No | Launch status. Allowable values: "passed", "failed", "stopped", "skipped", "interrupted", "cancelled" | calculated from children test items | failed | +| description | No | Launch description. Overrides description on start | empty | service test | +| attributes | No | Launch attributes. Pairs of key and value. Overrides attributes on start | empty | | + +Finish response model + +| Attribute | Required | Description | Example | +|-----------|----------|-------------------|-------------------------------------------------| +| id | Yes | Launch UUID | 6f084c4d-edb5-4691-90ba-d9e819ba61ba | +| number (*)| No | Launch number | 1 | +| link (*) | No | UI link to launch | http://rp.com/ui/#rp_project/launches/all/73336 | + +`(*)` - In case async endpoint field is missing or empty + +Full request: + +```shell script +curl --header "Content-Type: application/json" \ + --header "Authorization: Bearer 039eda00-b397-4a6b-bab1-b1a9a90376d1" \ + --request PUT \ + --data '{"endTime":"1574423255000"}' \ + http://rp.com/api/v1/rp_project/launch/96d1bc02-6a3f-451e-b706-719149d51ce4/finish +``` + +Where body is: + +```json +{ + "endTime": "1574423255000" +} +``` + +## [Example](https://github.com/ihar-kahadouski/dev-guide/tree/master/bash-example) diff --git a/versioned_docs/version-26.2-organizations/developers-guides/RerunDevelopersGuide.mdx b/versioned_docs/version-26.2-organizations/developers-guides/RerunDevelopersGuide.mdx new file mode 100644 index 0000000000..ec350cc863 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/developers-guides/RerunDevelopersGuide.mdx @@ -0,0 +1,173 @@ +--- +sidebar_label: Rerun developers guide +description: Implement test rerun functionality in ReportPortal for selective test execution reporting and failure investigation workflows. +--- + +# Rerun developers guide + +## What is rerun + +Let's imagine we have some set of tests: + + + +After run we can see few failed items: + + + + + +We are fixing issues and want to launch tests again. But running all the tests can take a lot of time. So it would be better to run only failed tests from previous launch. + +Now we have the following: + + + + + +So what do we have here? Two launches with the same tests that was just be started again, but they are have difference in passed and failed items. And it is hard to find which test was fixed and which was not. + +The main idea of reruns is to restart the same launch and trace changes between them not creating new launch every time. + +Let's try to report the same launches using rerun. + + + +We have only one launch with last run data + + + +On the step view we can see that items with names `getActivitiesForProject`, `getActivityPositive` and `getTestITemActivitiesPositive` have retries. Items `getActivityPositive` and `getTestITemActivitiesPositive` was fixed and `getActivitiesForProject` is still failing. + +## How to start rerun + +### Latest launch + +#### Using API + +To start launch rerun you should call [default start launch endpoint](/developers-guides/ReportingDevelopersGuide#start-launch) adding `"rerun"=true` parameter in the request body. + +```json +{ + "name": "launch_name", + "description": "some description", + "mode": "DEFAULT", + "rerun": true +} +``` +And response will contain found launch `id` for asynchronous endpoint or `id` and `number` for synchronous. + +```json +{ + "id": "89f6d409-bee0-428e-baca-4848f86c06e7", + "number": 4 +} +``` + +#### Using agent + +To start launch rerun add `rp.rerun=true` to `reportportal.properties` file. No need to change anything else(name, project, etc.). + +```properties +rp.endpoint=https://rp.com +rp.apiKey=caccb4bd-f6e7-48f2-af3a-eca0f566b3bd +rp.launch=rerun_test_example +rp.project=reporting-test +rp.reporting.async=true +rp.rerun=true +``` + +#### Handling + +System tries to find the latest launch on the project with same name as in request. + +If launch found - system updates the following attributes (if they are present in request and they are different from stored): +- Mode +- Description +- Attributes +- UUID +- Status = `IN_PROGRESS` + +If system cannot find launch with the same name - system throws error with `404` code. + +### Specified launch + +#### Using API + +To start launch rerun you should call [default start launch endpoint](/developers-guides/ReportingDevelopersGuide#start-launch) adding `"rerun"=true` and `"rerunOf"=launch_uuid` parameters in the request body. Where `launch_uuid` is UUID of launch that have to be reruned. + +```json +{ + "name": "launch_name", + "description": "some description", + "mode": "DEFAULT", + "rerun": true, + "rerunOf": "79446272-a439-45f9-8073-5ca7869f140b" +} +``` + +And response will contain found launch `id` for asynchronous endpoint or `id` and `number` for synchronous. + +```json +{ + "id": "79446272-a439-45f9-8073-5ca7869f140b", + "number": 4 +} +``` + +#### Using agent + +To start a launch rerun using the agent, set `rp.rerun=true` and `rp.rerun.of=launch_uuid` in the `reportportal.properties` file. In the latest versions of ReportPortal server always returns the same launch UUID in the response for rerun launch, so no need to set anything else if you want to preserve it. + +Here's an example of what your `reportportal.properties` file might look like: + +```properties +rp.endpoint=https://rp.com +rp.apiKey=caccb4bd-f6e7-48f2-af3a-eca0f566b3bd +rp.launch=rerun_test_example +rp.project=reporting-test +rp.reporting.async=true +rp.rerun=true +rp.rerun.of=79446272-a439-45f9-8073-5ca7869f140b +``` + +In this example, `79446272-a439-45f9-8073-5ca7869f140b` is the UUID of the launch you want to rerun. + +#### Handling + +The same as for [specified launch](#specified-launch). + +## Test Items behavior + +There are no differences in API calls for starting and finishing items inside rerun launch. But such items handling is different. + +### Container types (has children) + +System tries to find item with the same name, set of parameters and under the same path. + +If such item found - the following attributes will be updated: + +- Description +- UUID +- Status = `IN_PROGRESS` + +If not - new item will be created. + +### Step types (without children) + +System tries to find item with the same name, set of parameters and under the same path. + +If such item found - retry of the item will be created. + +If not - new item will be created. + +## [Example](https://github.com/reportportal/examples-java) + + + + + + + + + diff --git a/versioned_docs/version-26.2-organizations/developers-guides/RetriesReporting.mdx b/versioned_docs/version-26.2-organizations/developers-guides/RetriesReporting.mdx new file mode 100644 index 0000000000..95256e22f0 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/developers-guides/RetriesReporting.mdx @@ -0,0 +1,111 @@ +--- +sidebar_label: Retries reporting +description: Report test retries and retry attempts in ReportPortal for comprehensive test execution reporting and failure analysis. +--- + +# Retries reporting + +Some frameworks allow to retry `Test` execution according to provided conditions (TestNG) or just retry it predefined number of times. +First execution is a simple `TestItem` and next ones are called `Retries`. +In ReportPortal these items are grouped and displayed as a sequence of executions for the same `Test`: + + + +To find retries in ReportPortal, first click the launch that contains retries. + + + +Then, go to the Step level. + + + +When you click on the `retries` link you can switch between `Retries` and see their logs: + + + +On the Log page of test item you can also switch between `Retries`: + + + + + +## Retries reporting + +Common child `Test item` request ([check reporting dev guide](/developers-guides/ReportingDevelopersGuide)) looks like: + +```shell +curl --header "Content-Type: application/json" \ + --header "Authorization: Bearer 039eda00-b397-4a6b-bab1-b1a9a90376d1" \ + --request POST \ + --data '{"name":"example step","startTime":"1574423237000","type":"step","launchUuid":"","description":"Item that should be retried"}' \ + http://rp.com/api/v1/rp_project/item/ +``` + +With body: + +```json +{ + "name": "example step", + "startTime": "1574423237000", + "type": "step", + "launchUuid": "", + "description": "Item that should be retried" +} +``` + +And response: + +```json +{ + "id": "uuid-of-the-first-step" +} +``` + +Request for a `retry` looks the same, but has field `retry=true`: + +```json +{ + "name": "example step", + "startTime": "1574423237100", + "type": "step", + "launchUuid": "", + "description": "Item that should be retried", + "retry": true +} +``` + +To be displayed as a `retry` reported `Test item` should have the same `name`, `parentUuid`, `launchUuid` and `uniqueId` (if you provided it explicitly). +If one of mentioned fields is not matched (for example `Test item` with the same `name` but different `uniqueId` and vise versa) `Test item`s won't be grouped as retries. +Also `Test item` with type `Suite` cannot be reported as a `retry`. + +Retries handling triggered only if `Test item` has `retry=true` flag in the request. For example: + +First request will trigger retries handling, but if it's the first reported `Test item` it won't be a `retry`: +```json +{ + "name": "example step", + "startTime": "1574423237100", + "type": "step", + "launchUuid": "", + "description": "Item that should be retried", + "retry": true +} +``` + +Second request won't trigger retries handling, because `retry=false` is specified (or this field isn't provided) in the request: +```json +{ + "name": "example step", + "startTime": "1574423237100", + "type": "step", + "launchUuid": "", + "description": "Item that should be retried", + "retry": false +} +``` + +As a result 2 separate `Test items` will be displayed, so ORDER of sent requests matters (if send this items in reversed order they will be grouped as `retries`). + +In ReportPortal the only `Test item` from the `Retries` group that has statistics and can have an `issue` attached is the one with max `startTime`. +In previous requests `startTime` was `1574423237000` for the first one and `1574423237100` for the second one, so the second one is a 'main' `Test Item` +with statistics and `issue` (if attached). diff --git a/versioned_docs/version-26.2-organizations/developers-guides/_category_.json b/versioned_docs/version-26.2-organizations/developers-guides/_category_.json new file mode 100644 index 0000000000..2bac6d2c22 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/developers-guides/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Developers guides", + "position": "10", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.2-organizations/developers-guides/img/analyzer/ApiAnalyzer.png b/versioned_docs/version-26.2-organizations/developers-guides/img/analyzer/ApiAnalyzer.png new file mode 100644 index 0000000000..729f142db8 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/developers-guides/img/analyzer/ApiAnalyzer.png differ diff --git a/versioned_docs/version-26.2-organizations/developers-guides/img/analyzer/Exchange.png b/versioned_docs/version-26.2-organizations/developers-guides/img/analyzer/Exchange.png new file mode 100644 index 0000000000..4815f96722 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/developers-guides/img/analyzer/Exchange.png differ diff --git a/versioned_docs/version-26.2-organizations/developers-guides/img/analyzer/Queues.png b/versioned_docs/version-26.2-organizations/developers-guides/img/analyzer/Queues.png new file mode 100644 index 0000000000..b0be0205ed Binary files /dev/null and b/versioned_docs/version-26.2-organizations/developers-guides/img/analyzer/Queues.png differ diff --git a/versioned_docs/version-26.2-organizations/developers-guides/img/api/ApiDocs.png b/versioned_docs/version-26.2-organizations/developers-guides/img/api/ApiDocs.png new file mode 100644 index 0000000000..484108adaf Binary files /dev/null and b/versioned_docs/version-26.2-organizations/developers-guides/img/api/ApiDocs.png differ diff --git a/versioned_docs/version-26.2-organizations/developers-guides/img/api/ApiDocumentation.png b/versioned_docs/version-26.2-organizations/developers-guides/img/api/ApiDocumentation.png new file mode 100644 index 0000000000..9c35acbf51 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/developers-guides/img/api/ApiDocumentation.png differ diff --git a/versioned_docs/version-26.2-organizations/developers-guides/img/async/Consuming.png b/versioned_docs/version-26.2-organizations/developers-guides/img/async/Consuming.png new file mode 100644 index 0000000000..ab49374a88 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/developers-guides/img/async/Consuming.png differ diff --git a/versioned_docs/version-26.2-organizations/developers-guides/img/async/ExchangesQueues.png b/versioned_docs/version-26.2-organizations/developers-guides/img/async/ExchangesQueues.png new file mode 100644 index 0000000000..e5ef3a9f40 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/developers-guides/img/async/ExchangesQueues.png differ diff --git a/versioned_docs/version-26.2-organizations/developers-guides/img/async/FinishLaunch.png b/versioned_docs/version-26.2-organizations/developers-guides/img/async/FinishLaunch.png new file mode 100644 index 0000000000..4f6c1b7bf9 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/developers-guides/img/async/FinishLaunch.png differ diff --git a/versioned_docs/version-26.2-organizations/developers-guides/img/async/SimpleScheme.png b/versioned_docs/version-26.2-organizations/developers-guides/img/async/SimpleScheme.png new file mode 100644 index 0000000000..6044151c75 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/developers-guides/img/async/SimpleScheme.png differ diff --git a/versioned_docs/version-26.2-organizations/developers-guides/img/attachments/AttachmentsGuide1.png b/versioned_docs/version-26.2-organizations/developers-guides/img/attachments/AttachmentsGuide1.png new file mode 100644 index 0000000000..692d2b281f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/developers-guides/img/attachments/AttachmentsGuide1.png differ diff --git a/versioned_docs/version-26.2-organizations/developers-guides/img/attachments/AttachmentsGuide2.png b/versioned_docs/version-26.2-organizations/developers-guides/img/attachments/AttachmentsGuide2.png new file mode 100644 index 0000000000..fd0123103f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/developers-guides/img/attachments/AttachmentsGuide2.png differ diff --git a/versioned_docs/version-26.2-organizations/developers-guides/img/attachments/AttachmentsGuide3.png b/versioned_docs/version-26.2-organizations/developers-guides/img/attachments/AttachmentsGuide3.png new file mode 100644 index 0000000000..f3807fbc33 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/developers-guides/img/attachments/AttachmentsGuide3.png differ diff --git a/versioned_docs/version-26.2-organizations/developers-guides/img/backend/AuthBinaryConfig.png b/versioned_docs/version-26.2-organizations/developers-guides/img/backend/AuthBinaryConfig.png new file mode 100644 index 0000000000..a2d8491147 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/developers-guides/img/backend/AuthBinaryConfig.png differ diff --git a/versioned_docs/version-26.2-organizations/developers-guides/img/backend/AuthDbConfig.png b/versioned_docs/version-26.2-organizations/developers-guides/img/backend/AuthDbConfig.png new file mode 100644 index 0000000000..76e372deb1 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/developers-guides/img/backend/AuthDbConfig.png differ diff --git a/versioned_docs/version-26.2-organizations/developers-guides/img/backend/BuildGradleUpdated.png b/versioned_docs/version-26.2-organizations/developers-guides/img/backend/BuildGradleUpdated.png new file mode 100644 index 0000000000..2479312d9e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/developers-guides/img/backend/BuildGradleUpdated.png differ diff --git a/versioned_docs/version-26.2-organizations/developers-guides/img/backend/CommitHash.png b/versioned_docs/version-26.2-organizations/developers-guides/img/backend/CommitHash.png new file mode 100644 index 0000000000..564cd7f7f8 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/developers-guides/img/backend/CommitHash.png differ diff --git a/versioned_docs/version-26.2-organizations/developers-guides/img/backend/IdeaFormatter.png b/versioned_docs/version-26.2-organizations/developers-guides/img/backend/IdeaFormatter.png new file mode 100644 index 0000000000..32e384b388 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/developers-guides/img/backend/IdeaFormatter.png differ diff --git a/versioned_docs/version-26.2-organizations/developers-guides/img/backend/RabbitmqConfig.png b/versioned_docs/version-26.2-organizations/developers-guides/img/backend/RabbitmqConfig.png new file mode 100644 index 0000000000..1f10dc4c76 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/developers-guides/img/backend/RabbitmqConfig.png differ diff --git a/versioned_docs/version-26.2-organizations/developers-guides/img/plugin/InstallPlugin.png b/versioned_docs/version-26.2-organizations/developers-guides/img/plugin/InstallPlugin.png new file mode 100644 index 0000000000..db18f7a9f9 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/developers-guides/img/plugin/InstallPlugin.png differ diff --git a/versioned_docs/version-26.2-organizations/developers-guides/img/rerun/LaunchFailed1.png b/versioned_docs/version-26.2-organizations/developers-guides/img/rerun/LaunchFailed1.png new file mode 100644 index 0000000000..b35b4d963d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/developers-guides/img/rerun/LaunchFailed1.png differ diff --git a/versioned_docs/version-26.2-organizations/developers-guides/img/rerun/LaunchFailed2.png b/versioned_docs/version-26.2-organizations/developers-guides/img/rerun/LaunchFailed2.png new file mode 100644 index 0000000000..e4108e6a78 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/developers-guides/img/rerun/LaunchFailed2.png differ diff --git a/versioned_docs/version-26.2-organizations/developers-guides/img/rerun/LaunchFailedRp1.png b/versioned_docs/version-26.2-organizations/developers-guides/img/rerun/LaunchFailedRp1.png new file mode 100644 index 0000000000..d199e30088 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/developers-guides/img/rerun/LaunchFailedRp1.png differ diff --git a/versioned_docs/version-26.2-organizations/developers-guides/img/rerun/LaunchFailedRp2.png b/versioned_docs/version-26.2-organizations/developers-guides/img/rerun/LaunchFailedRp2.png new file mode 100644 index 0000000000..0ea1aa1d8d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/developers-guides/img/rerun/LaunchFailedRp2.png differ diff --git a/versioned_docs/version-26.2-organizations/developers-guides/img/rerun/RpRerun1.png b/versioned_docs/version-26.2-organizations/developers-guides/img/rerun/RpRerun1.png new file mode 100644 index 0000000000..de69e95e51 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/developers-guides/img/rerun/RpRerun1.png differ diff --git a/versioned_docs/version-26.2-organizations/developers-guides/img/rerun/RpRerunStepView.png b/versioned_docs/version-26.2-organizations/developers-guides/img/rerun/RpRerunStepView.png new file mode 100644 index 0000000000..5bb4ea9b3f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/developers-guides/img/rerun/RpRerunStepView.png differ diff --git a/versioned_docs/version-26.2-organizations/developers-guides/img/rerun/Tests.png b/versioned_docs/version-26.2-organizations/developers-guides/img/rerun/Tests.png new file mode 100644 index 0000000000..d9480f4ee7 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/developers-guides/img/rerun/Tests.png differ diff --git a/versioned_docs/version-26.2-organizations/developers-guides/img/retry/LaunchRetries.png b/versioned_docs/version-26.2-organizations/developers-guides/img/retry/LaunchRetries.png new file mode 100644 index 0000000000..7738168caa Binary files /dev/null and b/versioned_docs/version-26.2-organizations/developers-guides/img/retry/LaunchRetries.png differ diff --git a/versioned_docs/version-26.2-organizations/developers-guides/img/retry/LogPage.png b/versioned_docs/version-26.2-organizations/developers-guides/img/retry/LogPage.png new file mode 100644 index 0000000000..9257d6157d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/developers-guides/img/retry/LogPage.png differ diff --git a/versioned_docs/version-26.2-organizations/developers-guides/img/retry/Retry.png b/versioned_docs/version-26.2-organizations/developers-guides/img/retry/Retry.png new file mode 100644 index 0000000000..87198065eb Binary files /dev/null and b/versioned_docs/version-26.2-organizations/developers-guides/img/retry/Retry.png differ diff --git a/versioned_docs/version-26.2-organizations/developers-guides/img/retry/RetrySwitch.png b/versioned_docs/version-26.2-organizations/developers-guides/img/retry/RetrySwitch.png new file mode 100644 index 0000000000..48721acc28 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/developers-guides/img/retry/RetrySwitch.png differ diff --git a/versioned_docs/version-26.2-organizations/developers-guides/img/retry/RetryView.png b/versioned_docs/version-26.2-organizations/developers-guides/img/retry/RetryView.png new file mode 100644 index 0000000000..6d2de56808 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/developers-guides/img/retry/RetryView.png differ diff --git a/versioned_docs/version-26.2-organizations/developers-guides/img/retry/StepLevelRetries.png b/versioned_docs/version-26.2-organizations/developers-guides/img/retry/StepLevelRetries.png new file mode 100644 index 0000000000..2be8979515 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/developers-guides/img/retry/StepLevelRetries.png differ diff --git a/versioned_docs/version-26.2-organizations/developers-guides/index.md b/versioned_docs/version-26.2-organizations/developers-guides/index.md new file mode 100644 index 0000000000..9bacd7607a --- /dev/null +++ b/versioned_docs/version-26.2-organizations/developers-guides/index.md @@ -0,0 +1,18 @@ +--- +title: Developers guides +description: Enhance your test results dashboard with ReportPortal's comprehensive Developers' guides. +--- + +# Developers guides + +The **Developers guides** section is designed to provide comprehensive resources for developers who want to expand and enhance the functionality of ReportPortal. This section is essential for those who wish to customize our test automation reporting dashboard to meet their specific needs, offering a wealth of knowledge and practical tools to get the most out of ReportPortal, making your testing processes more efficient and effective. + +Here, you will find step-by-step tutorials that guide you through the process of building custom plugins and extending existing features. For instance, we offer a guide for developing a custom import plugin. These tutorials are crafted to help developers at any level - whether you're just starting with ReportPortal customization or you're an experienced developer looking to optimize the platform for more complex use cases. + +The API references available in this section provide detailed documentation on how to interact with ReportPortal programmatically. Alongside API documentation, you’ll also find practical examples and best practices to help you customize ReportPortal to fit your specific needs, ensuring optimal performance and functionality. + +Whether you’re looking to modify user interfaces, extend test reporting capabilities, or build custom integrations with other software development tools, the Developers guides section offers everything you need to fully leverage the power of ReportPortal for your project’s unique requirements and technical goals. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.2-organizations/external-integrations/MCPServer.mdx b/versioned_docs/version-26.2-organizations/external-integrations/MCPServer.mdx new file mode 100644 index 0000000000..156a6f097e --- /dev/null +++ b/versioned_docs/version-26.2-organizations/external-integrations/MCPServer.mdx @@ -0,0 +1,161 @@ +--- +sidebar_position: 1 +sidebar_label: MCP Server +description: Automate test analysis with MCP Server, use AI to detect issues, summarize results, and streamline QA workflows for faster, smarter decision-making. +--- + +# MCP Server + +To work with ReportPortal, users typically need to interact through its web UI. With our MCP Server, you can connect ReportPortal to your preferred AI tool — for example, Claude, Copilot, or Cursor. + +## What is MCP? + +MCP (Model Context Protocol) is a lightweight middleware protocol (and server) that facilitates structured communication between AI tools and external platforms, such as our test results dashboard. It provides a context-aware interface for language models to query, analyze, and manipulate data without direct UI access. + +ReportPortal MCP Server allows to receive summaries of launches and perform various operations without manually opening the UI. The actions that can be performed through the MCP Server are called Tools. + +Available tools: + +1. Run Unique Error Analysis +2. Run Auto-Analysis +3. Get Test Items by Filter +4. Get Launches +5. Launch Force Finish +6. Launch Delete +7. Get Test Item Logs by Filter +8. Get Test Item by ID +9. Get Test Item Attachments +10. Get Last Launch by Name +11. Get Project Defect Types +12. Update defect types by item IDs + +## Usage with your favorite AI tools + +Below are brief setup instructions for configuring the ReportPortal MCP Server with Cursor, Copilot, and Claude Desktop. + +### Cursor IDE + +#### Local installation + +To configure ReportPortal MCP Server with Cursor: + +1. Log in to Cursor. +2. Open Settings. +3. Select "Tools & Integrations" section. +4. Click "New MCP Server". + + + +5. Fill in the required fields in the Config file. + + + +6. The list of available tools appears. + + + +#### Remote server + +This setup allows Cursor to communicate with a remote ReportPortal MCP Server. + +```json +{ + "mcpServers": { + "reportportal": { + "url": "http://your-mcp-server-host:port/mcp/", + "headers": { + "Authorization": "Bearer your-api-token", + "X-Project": "YourProjectInReportPortal" + } + } + } +} +``` + +### GitHub Copilot + +#### Local installation + +To configure ReportPortal MCP Server with Copilot: + +1. Log in to Copilot. +2. Type ">mcp" in the search bar. +3. Select "MCP: Open User Configuration" option. + + + +4. Fill in the required fields in the Config file. + + + +#### Remote server + +Use this configuration to connect Copilot to a remote ReportPortal MCP Server. + +```json +{ + "servers": { + "reportportal": { + "url": "http://your-mcp-server-host:port/mcp/", + "requestInit": { + "headers": { + "Authorization": "Bearer your-api-token", + "X-Project": "YourProjectInReportPortal" + } + } + } + } +} +``` + +### Claude Desktop + +To configure ReportPortal MCP Server with Claude: + +1. Log in to Claude. +2. Open Settings. + + + +3. Select "Developer" section. +4. Click "Edit Config" button. + + + +5. Open Config file. + + + +6. Fill in the required fields: token, host, project. + + + +:::note +Token is API Key the user's Profile page. +::: + +7. Open the list of available tools. + + + +8. Enable the tools you want to use and disable those you don't. + + + +9. Create a prompt. + + + +10. Allow Claude to use ReportPortal MCP Server. + + + +11. Check your AI's output based on the data from ReportPortal. + + + + + +Refer to the detailed user guide for the [full setup instructions](https://github.com/reportportal/reportportal-mcp-server) of the MCP Server. + +Whether you're aiming to optimize test analysis or simplify routine QA tasks, MCP empowers your AI tools to act with clarity and precision. diff --git a/versioned_docs/version-26.2-organizations/external-integrations/UserProvisioning/Scim/_category_.json b/versioned_docs/version-26.2-organizations/external-integrations/UserProvisioning/Scim/_category_.json new file mode 100644 index 0000000000..127da1bae1 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/external-integrations/UserProvisioning/Scim/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "SCIM", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.2-organizations/external-integrations/UserProvisioning/Scim/azure.mdx b/versioned_docs/version-26.2-organizations/external-integrations/UserProvisioning/Scim/azure.mdx new file mode 100644 index 0000000000..dcaa7ad83c --- /dev/null +++ b/versioned_docs/version-26.2-organizations/external-integrations/UserProvisioning/Scim/azure.mdx @@ -0,0 +1,125 @@ +--- +sidebar_label: SCIM Azure +description: Configure SCIM to sync Azure Entra ID users and groups automatically to ReportPortal, map attributes, and sync admin roles to streamline access control and user management. +--- + +# SCIM Azure + +:::important +This feature is available in ReportPortal with a [managed services subscription](https://reportportal.io/pricing/on-premises). +::: + +ReportPortal allows you to synchronize users and groups from Azure Microsoft Entra ID +to ReportPortal via SCIM. + +## Creating a SCIM provisioning + +1. Log in to [Azure portal](https://portal.azure.com). + +2. Go to the `Azure Enterprise Applications` section and click `New application`. + + + +3. Click `Create your own application`. + + + +4. Enter the name of your application. +Choose the `Integrate any other application you don't find in the gallery (Non-gallery)` bullet +and click the `Create` button. + + + +5. After creating an application, go to the `Provisioning` section and click `New configuration`. + + + + + +6. Fill in the following fields: + - Tenant URL: `https://{your_scim_server_host}?aadOptscim062020` + - Secret Token: `your_admin_api_key` + +:::note +`?aadOptscim062020` is a special parameter that allows you to use the a [SCIM compatible protocol](https://learn.microsoft.com/en-us/entra/identity/app-provisioning/application-provisioning-config-problem-scim-compatibility#flags-to-alter-the-scim-behavior). +::: + + + +7. Click `Test Connection` to check the connection and click `Create`. + + + +## Set up Attribute mapping + +1. Go to the `Attribute mapping` section and click `Provision Microsoft Entra ID Users`. + + + +2. In the `Attribute Mappings` section, find and delete the `urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:manager` attribute. +For some reason, Azure sends this attribute with the wrong SCIM format. This attribute is not used in ReportPortal. + + + +3. Click `Save` to save the changes. + +## Admin role synchronization + +For proper synchronization of the admin role, you need to create a new `App-role` in Azure. + +1. Go to the `Provisioning` -> `Users and groups` section and click `application registration`. + + + +2. Click to `Create app role`. + + + +3. Fill in the following fields: + - Display name: `Administrator` + - Value: `Administrator` + - Description: `Administrator role` + + + +4. Click `Apply`. + +5. Select the `User` role and fill the Value field with `User`. + +6. Click `Apply`. + +7. Return to the configured enterprise application and go to the `Provisioning` -> `Attribute mapping` -> `Provision Microsoft Entra ID Users` section. + + + +8. Select the `Show advanced options` checkbox at the bottom and click the `Edit attribute list for customappsso` link. + + + +9. You will see the `Edit Attribute List`. At the bottom of the list, fill in the empty fields with the name `roles` and type `String`. + + + +10. Click `Save`. + +11. Return to the `Provision Microsoft Entra ID Users` and click `Add New Mapping`. + + + +12. Fill in the following fields: + - Mapping type: `Expression` + - Expression: `AppRoleAssignmentsComplex([appRoleAssignments])` + - Target attribute: `roles` + + Keep default values for other fields. + + + +13. Click `Ok` and then `Save`. + +After these steps, when you add users or groups to the Azure project you can select +an application role for them: `User` or `Administrator`. + + + +This role will be synchronized with the ReportPortal user instance role. diff --git a/versioned_docs/version-26.2-organizations/external-integrations/UserProvisioning/Scim/index.md b/versioned_docs/version-26.2-organizations/external-integrations/UserProvisioning/Scim/index.md new file mode 100644 index 0000000000..b1c15c9660 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/external-integrations/UserProvisioning/Scim/index.md @@ -0,0 +1,21 @@ +--- +sidebar_label: System for Cross-domain Identity Management (SCIM) +description: Use SCIM in ReportPortal to auto-provision users and groups from Okta or Azure, keeping roles, access, and attributes always up to date and secure. +--- + +# System for Cross-domain Identity Management (SCIM) + +The **SCIM (System for Cross-domain Identity Management)** category covers the process of synchronizing users and groups between external identity providers and ReportPortal. SCIM provisioning automates user management, ensuring that accounts are created, updated, and deactivated based on identity provider changes. + +SCIM is an industry-standard protocol that enables seamless integration with **SCIM 2.0-compliant identity providers**, such as **Okta** and **Azure Microsoft Entra ID**. This allows organizations to centralize user administration and streamline access management. + +**Key Features of SCIM Provisioning:** + +* Automated User Management – Users and groups are created, updated, and deleted automatically. +* Group-Based Access Control – Users can be assigned to ReportPortal projects via identity provider groups. +* Real-Time Synchronization – User attributes, roles, and group memberships remain up to date. +* Secure and Scalable – Reduces manual account management while improving security. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.2-organizations/external-integrations/UserProvisioning/Scim/okta.mdx b/versioned_docs/version-26.2-organizations/external-integrations/UserProvisioning/Scim/okta.mdx new file mode 100644 index 0000000000..f0ca1e0291 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/external-integrations/UserProvisioning/Scim/okta.mdx @@ -0,0 +1,48 @@ +--- +sidebar_label: SCIM Okta +description: Configure SCIM integration with Okta for automated user provisioning in ReportPortal test automation reporting tools. +--- + +# SCIM Okta + +:::important +This feature is available in ReportPortal with a [managed services subscription](https://reportportal.io/pricing/on-premises). +::: + +# Prerequisites + +- You have an Okta application. +- You have SAML Okta integration. For more information, see [SAML Okta](/plugins/authorization/SamlProviders/OktaSaml). + +# Configuration + +1. Go to your Okta account. + +2. Go to the `Applications` tab. + +3. Select the application you want to configure. + +4. Go to the `General` tab. + +5. In the `App Settings` section, click `Edit`. + + + +6. Select `Enable SCIM provisioning` and click `Save` to apply the changes. + + + +7. Go to the `Provisioning` tab and click `Edit`. + + + +8. Fill in the following fields: +- SCIM connector base URL: `https://` +- Unique identifier field for users: `userName` +- Supported provisioning actions: `Push New Users`, `Push Profile Updates`, `Push Groups`. +- Authentication Mode: `HTTP Header` +- Authorization: `{your-admin-api-key}` + + + +9. Click `Test connection configuration` and then `Save` the changes. diff --git a/versioned_docs/version-26.2-organizations/external-integrations/UserProvisioning/Scim/overview.mdx b/versioned_docs/version-26.2-organizations/external-integrations/UserProvisioning/Scim/overview.mdx new file mode 100644 index 0000000000..d3155310e2 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/external-integrations/UserProvisioning/Scim/overview.mdx @@ -0,0 +1,31 @@ +--- +sidebar_label: Overview +sidebar_position: 1 +description: Use SCIM protocol for automated user provisioning and management in ReportPortal with identity providers. +--- + +# SCIM Overview + +:::important +This feature is available in ReportPortal with a [managed services subscription](https://reportportal.io/pricing/on-premises). +::: + +The System for Cross-domain Identity Management (SCIM) is a standard for synchronizing +Users and Groups between identity providers and service providers over REST APIs calls. + +ReportPortal allows you to create, update and delete users and groups in ReportPortal. + +## User provisioning + +SCIM synchronizes users from external identity providers that support SCIM. +If users already were created via SAML JIT they will be synchronized with SCIM. + +All users synchronized via SCIM will be created with the `SCIM` type. +Users who already exist in ReportPortal with an `Internal` role will not be updated. + +## Group provisioning + +SCIM Groups are a way of assigning users to ReportPortal projects. + +We match groups by the `displayName` attribute to ReportPortal project names and role +according to the group pattern. diff --git a/versioned_docs/version-26.2-organizations/external-integrations/UserProvisioning/_category_.json b/versioned_docs/version-26.2-organizations/external-integrations/UserProvisioning/_category_.json new file mode 100644 index 0000000000..0b1e7b1dc6 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/external-integrations/UserProvisioning/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "User Provisioning", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.2-organizations/external-integrations/UserProvisioning/index.md b/versioned_docs/version-26.2-organizations/external-integrations/UserProvisioning/index.md new file mode 100644 index 0000000000..664e57992a --- /dev/null +++ b/versioned_docs/version-26.2-organizations/external-integrations/UserProvisioning/index.md @@ -0,0 +1,23 @@ +--- +sidebar_label: User Provisioning +description: Set up JIT and SCIM user provisioning to automate account creation, updates, and roles in ReportPortal for secure, scalable access management. +--- + +# User Provisioning + +The **User Provisioning** category describes the process of creating, updating, and managing user accounts and groups in ReportPortal through external identity providers. It includes **Just-in-Time (JIT) provisioning**, which creates users on first login via SAML, and **SCIM provisioning**, which syncs users and groups from SCIM-compliant identity providers. + +Proper user provisioning ensures seamless access management, enhances security, and simplifies identity administration across multiple platforms. + +**Configuration Overview** + +To enable user provisioning, organizations need to: + +1. **For JIT provisioning:** Configure SAML authentication in ReportPortal. +2. **For SCIM provisioning:** Enable SCIM in the identity provider, set up the SCIM API connection, and configure attribute mappings. +3. **Test the connection** to ensure proper synchronization. +4. **Manage roles and groups** to streamline user access. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.2-organizations/external-integrations/UserProvisioning/overview.mdx b/versioned_docs/version-26.2-organizations/external-integrations/UserProvisioning/overview.mdx new file mode 100644 index 0000000000..df962cd595 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/external-integrations/UserProvisioning/overview.mdx @@ -0,0 +1,44 @@ +--- +sidebar_label: Overview +sidebar_position: 1 +description: Configure user provisioning from external identity providers for automated user management in ReportPortal test automation reporting tools. +--- + +# User provisioning overview + +ReportPortal supports user provisioning from external identity providers. This +feature allows you to create and manage user accounts in ReportPortal using +external identity providers. ReportPortal supports the following user +provisioning methods: + +- [Just-in-Time (JIT) provisioning](#jit-provisioning) via the SAML plugin. +- [System for Cross-domain Identity Management (SCIM) provisioning](#scim-provisioning) via the SCIM service. + + +## JIT provisioning + +Just-in-time (JIT) provisioning is a feature that creates a user account in +ReportPortal when a user logs in for the first time. This feature is available +for SAML integrations. + +However, you cannot provision a user from SAML Provider to ReportPortal if you +already have a pre-created internal user in ReportPortal with the same email +but a different login. The login must be the email name without the domain part. +For instance, if the email is `john_weak@babayaga.com` the login should be +`john_weak`. +Otherwise, the user will not be able to log in to ReportPortal. +You can fix it by changing the login name or email or by deleting the user from ReportPortal. + +## SCIM provisioning + +:::important +This feature is available in ReportPortal with a [managed services subscription](https://reportportal.io/pricing/on-premises). +::: + +System for Cross-domain Identity Management (SCIM) is a standard for synchronizing users and groups +between identity providers and service providers over REST API calls. + +SCIM provisioning enables you to create and manage user accounts in ReportPortal +from external identity providers that support SCIM. + +Moreover, SCIM provisioning allows you to assign users to ReportPortal via groups. diff --git a/versioned_docs/version-26.2-organizations/external-integrations/_category_.json b/versioned_docs/version-26.2-organizations/external-integrations/_category_.json new file mode 100644 index 0000000000..c4e2b651ec --- /dev/null +++ b/versioned_docs/version-26.2-organizations/external-integrations/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "External Integrations", + "position": "18", + "link": {"type": "doc", "id": "index"} +} + diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/Copilot1.jpg b/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/Copilot1.jpg new file mode 100644 index 0000000000..208728a41e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/Copilot1.jpg differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/Copilot2.JPG b/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/Copilot2.JPG new file mode 100644 index 0000000000..9f75fff89f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/Copilot2.JPG differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/Cursor1.JPG b/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/Cursor1.JPG new file mode 100644 index 0000000000..b876017831 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/Cursor1.JPG differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/Cursor2.JPG b/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/Cursor2.JPG new file mode 100644 index 0000000000..1ada2c52d0 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/Cursor2.JPG differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/Cursor3.JPG b/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/Cursor3.JPG new file mode 100644 index 0000000000..27d54680bb Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/Cursor3.JPG differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP1.png b/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP1.png new file mode 100644 index 0000000000..7886debbd6 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP1.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP10.png b/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP10.png new file mode 100644 index 0000000000..7cd5784279 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP10.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP2.png b/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP2.png new file mode 100644 index 0000000000..d78aa9a2e3 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP2.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP3.png b/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP3.png new file mode 100644 index 0000000000..89de2d6c4c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP3.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP4.png b/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP4.png new file mode 100644 index 0000000000..6389d45905 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP4.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP5.png b/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP5.png new file mode 100644 index 0000000000..28d6b07501 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP5.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP6.png b/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP6.png new file mode 100644 index 0000000000..be5858429c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP6.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP7.png b/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP7.png new file mode 100644 index 0000000000..4e321248a4 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP7.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP8.png b/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP8.png new file mode 100644 index 0000000000..eb6b1d1346 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP8.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP9-1.png b/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP9-1.png new file mode 100644 index 0000000000..246dfaca1e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP9-1.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP9-2.png b/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP9-2.png new file mode 100644 index 0000000000..e4c60a08f7 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/mcp-server/MCP9-2.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/1.png b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/1.png new file mode 100644 index 0000000000..6e8429dd92 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/1.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/10.png b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/10.png new file mode 100644 index 0000000000..1e256c2e6b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/10.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/11.png b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/11.png new file mode 100644 index 0000000000..91d7a9dc3e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/11.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/12.png b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/12.png new file mode 100644 index 0000000000..72e9807061 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/12.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/13.png b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/13.png new file mode 100644 index 0000000000..904d5fe58f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/13.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/14.png b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/14.png new file mode 100644 index 0000000000..cf4b9a328a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/14.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/15.png b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/15.png new file mode 100644 index 0000000000..4091dd9891 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/15.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/16.png b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/16.png new file mode 100644 index 0000000000..d218e1894d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/16.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/17.png b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/17.png new file mode 100644 index 0000000000..70f6ef9344 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/17.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/18.png b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/18.png new file mode 100644 index 0000000000..db582c8636 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/18.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/2.png b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/2.png new file mode 100644 index 0000000000..e825405e0f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/2.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/3.png b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/3.png new file mode 100644 index 0000000000..208a38a7fe Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/3.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/4.png b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/4.png new file mode 100644 index 0000000000..8a308149be Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/4.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/5.png b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/5.png new file mode 100644 index 0000000000..9358da57f0 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/5.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/6.png b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/6.png new file mode 100644 index 0000000000..8e17248aa8 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/6.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/7.png b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/7.png new file mode 100644 index 0000000000..5ed315db51 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/7.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/8.png b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/8.png new file mode 100644 index 0000000000..adce21ce88 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/8.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/9.png b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/9.png new file mode 100644 index 0000000000..306e6e41f1 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/scimAzure/9.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/scimOkta/1.png b/versioned_docs/version-26.2-organizations/external-integrations/img/scimOkta/1.png new file mode 100644 index 0000000000..2bc8d3f03b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/scimOkta/1.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/scimOkta/2.png b/versioned_docs/version-26.2-organizations/external-integrations/img/scimOkta/2.png new file mode 100644 index 0000000000..9f83d0b6cf Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/scimOkta/2.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/scimOkta/3.png b/versioned_docs/version-26.2-organizations/external-integrations/img/scimOkta/3.png new file mode 100644 index 0000000000..3025d98930 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/scimOkta/3.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/scimOkta/4.png b/versioned_docs/version-26.2-organizations/external-integrations/img/scimOkta/4.png new file mode 100644 index 0000000000..50507db26a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/scimOkta/4.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor1.png b/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor1.png new file mode 100644 index 0000000000..7224b96ddd Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor1.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor10.png b/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor10.png new file mode 100644 index 0000000000..4be1cd8ad1 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor10.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor11.png b/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor11.png new file mode 100644 index 0000000000..94ef57cac8 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor11.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor2.png b/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor2.png new file mode 100644 index 0000000000..236aede301 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor2.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor3.png b/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor3.png new file mode 100644 index 0000000000..f746eb73e7 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor3.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor4.png b/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor4.png new file mode 100644 index 0000000000..0f6de8314d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor4.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor5.png b/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor5.png new file mode 100644 index 0000000000..891df44eee Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor5.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor6.png b/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor6.png new file mode 100644 index 0000000000..4e7ac81b96 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor6.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor7.png b/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor7.png new file mode 100644 index 0000000000..5344a8bf36 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor7.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor8.png b/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor8.png new file mode 100644 index 0000000000..b6d710444d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor8.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor9.png b/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor9.png new file mode 100644 index 0000000000..a5c58f1d12 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/external-integrations/img/testRigor/testRigor9.png differ diff --git a/versioned_docs/version-26.2-organizations/external-integrations/index.md b/versioned_docs/version-26.2-organizations/external-integrations/index.md new file mode 100644 index 0000000000..28c0352241 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/external-integrations/index.md @@ -0,0 +1,20 @@ +--- +title: External Integrations +description: Enhance collaboration with our External Integrations section. Integrate with tools for end to end testing reporting tools. +--- + +# External Integrations + +The **External Integrations** section of ReportPortal is designed to help you extend the capabilities of your test automation processes and enhance overall efficiency. By integrating external tools and identity management systems, you can streamline workflows, improve data synchronization, and better manage both testing activities and user access. This section provides essential information on how to connect and configure external systems. + +Thу integration with **testRigor** enables seamless data synchronization between the two systems, allowing for better test management and more efficient collaboration across teams. By linking ReportPortal with testRigor, you can automatically import test results, track performance, and manage test data in one centralized location. This ensures that your team can focus on improving software quality without the manually handling test information. + +Beyond test automation, ReportPortal also offers identity and access management integrations, including **user provisioning via SAML and SCIM**, to help teams efficiently manage user provisioning and authentication. + +To simplify user management, our test automation reporting dashboard supports automated user provisioning from external identity providers. This allows organizations to efficiently create and manage user accounts without manual intervention. + +By using the External Integrations section, you can not only enhance your test automation processes with tools like testRigor but also streamline user access management through SCIM and JIT provisioning. Whether you're handling complex test cases or managing large-scale projects, these integrations ensure a seamless, efficient, and well-organized workflow within ReportPortal. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.2-organizations/external-integrations/testRigor.mdx b/versioned_docs/version-26.2-organizations/external-integrations/testRigor.mdx new file mode 100644 index 0000000000..c2193b56ec --- /dev/null +++ b/versioned_docs/version-26.2-organizations/external-integrations/testRigor.mdx @@ -0,0 +1,78 @@ +--- +sidebar_position: 2 +sidebar_label: Integration with testRigor +description: Integrate testRigor with ReportPortal for seamless test case reporting and automated test result analysis workflows. +--- + +# Integration with testRigor + +Establish integration with the testRigor application to enable you to send your test cases directly to ReportPortal each time they are created and executed. + +:::note +Please be aware that this integration has been carried out by the testRigor team. +::: + +1. Open the [testRigor](https://testrigor.com) application. + +2. Initiate integration with ReportPortal. + +- If you have already created Test Suites, enable integration by clicking on the necessary Test Suite name to navigate to the Test Cases page. +- For Test Suites that are newly created, avoid generating the tests at the Test Suites level. Instead, proceed to the Test Cases. + + + +3. On the Test Cases page, locate and click on 'Settings' in the left sidebar. + +4. On the Settings page, select the Integrations tab. + + + +5. Find ReportPortal in the list. + +6. Enable the checkmark “Enable ReportPortal”. Additional fields will become available. + + + +***Web address:*** enter the web address of the ReportPortal instance you are working with. + +***Project name:*** specify the name of the RP project where your tests should run. + + + +***API Key:*** generate your API Key on the ReportPortal application, accessible via Profile page > API Keys tab, and input it here. + + + +***Launch name:*** Provide a launch name to ensure your tests are properly identified. Otherwise, it will be displayed in the format 'appName Run #ID'. + + + +By selecting the *"Ignore SSL Errors"* checkbox, you will avoid recording any additional SSL logs. + +Tick the checkbox for *"Collect step statistics"* if you want to view Steps level on ReportPortal. + + + +Keep the checkbox for *"Collect step statistics"* unchecked to generate Nested Steps level in ReportPortal. + + + +7. Scroll to the bottom of the page and click on the "Save" button. + +8. Switch to the Test Cases Page using the left sidebar menu and create Test Cases. + + + +9. Switch to the Test Suite Details tab. + +10. Execute the Test Suite with the pre-created test cases. + + + +11. Open ReportPortal -> the project specified in the integration. + +12. Verify that Launch is available. + + + +If you need to perform new executions, simply replicate the steps, and rerun the Test Suite, ensuring that the *"Do not update ReportPortal"* checkbox remains unchecked. diff --git a/versioned_docs/version-26.2-organizations/features/AIFailureReasonDetection.md b/versioned_docs/version-26.2-organizations/features/AIFailureReasonDetection.md new file mode 100644 index 0000000000..96560e2dd0 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/features/AIFailureReasonDetection.md @@ -0,0 +1,33 @@ +--- +sidebar_position: 3 +sidebar_label: AI failure reason detection +description: Use AI to auto-categorize failures, reduce manual triage, and speed bug discovery. ReportPortal automates test failure analytics for faster, accurate results. +--- + +# 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/versioned_docs/version-26.2-organizations/features/CategorisationOfFailures.md b/versioned_docs/version-26.2-organizations/features/CategorisationOfFailures.md new file mode 100644 index 0000000000..71ed21e451 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/features/CategorisationOfFailures.md @@ -0,0 +1,32 @@ +--- +sidebar_position: 2 +sidebar_label: Categorisation of failures +description: Learn how ReportPortal streamlines defect triage with clear categories, root cause insights, and faster resolution across teams for more reliable testing outcomes. +--- + +# 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/versioned_docs/version-26.2-organizations/features/Organizations.md b/versioned_docs/version-26.2-organizations/features/Organizations.md new file mode 100644 index 0000000000..2105b4fdf9 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/features/Organizations.md @@ -0,0 +1,56 @@ +--- +title: Organizations +description: Learn about the new Organizations feature in ReportPortal 26.2, enabling multi-tenant management and team collaboration. +--- + +# Organizations + +:::info New in 26.2 +This feature is available starting from ReportPortal version 26.2-organizations. +::: + +The **Organizations** feature introduces a new level of hierarchy in ReportPortal, enabling enterprise-grade multi-tenant management and improved team collaboration across projects. + +## What are Organizations? + +Organizations provide a way to group multiple projects and users under a single administrative umbrella. This is particularly useful for: + +- **Enterprise environments** with multiple teams or departments +- **Service providers** managing multiple clients +- **Large-scale deployments** requiring centralized governance + +## Key Capabilities + +### Centralized User Management + +Manage users across all projects within an organization from a single interface. Assign organization-level roles and permissions that cascade to projects. + +### Project Grouping + +Group related projects together for easier navigation and management. Apply organization-wide settings and configurations. + +### Resource Allocation + +Control resource usage and quotas at the organization level, ensuring fair distribution across teams and projects. + +### Unified Reporting + +Generate cross-project reports and dashboards at the organization level for executive visibility and strategic decision-making. + +## Getting Started + +To create an organization: + +1. Navigate to the **Admin Panel** +2. Select **Organizations** from the menu +3. Click **Create Organization** +4. Configure organization settings and invite members + +## Benefits + +- **Simplified administration** - Manage multiple projects from one place +- **Better governance** - Apply consistent policies across teams +- **Improved collaboration** - Share resources and insights across projects +- **Scalability** - Easily onboard new teams and projects + +For more details on configuring organizations, see the [Admin Panel documentation](/admin-panel). diff --git a/versioned_docs/version-26.2-organizations/features/OrganizationsManagement.md b/versioned_docs/version-26.2-organizations/features/OrganizationsManagement.md new file mode 100644 index 0000000000..874a09e80a --- /dev/null +++ b/versioned_docs/version-26.2-organizations/features/OrganizationsManagement.md @@ -0,0 +1,101 @@ +--- +title: Organizations Management +description: Comprehensive guide to managing organizations in ReportPortal 26.2-organizations, including advanced configuration and administration features. +--- + +# Organizations Management + +:::info Organizations Feature +This topic is specific to ReportPortal 26.2-organizations version and is not available in version 26.1. +::: + +The **Organizations Management** feature provides administrators with powerful tools to manage multi-tenant environments, configure organization-level settings, and maintain governance across multiple projects. + +## Organization Administration + +### Creating and Configuring Organizations + +Organizations serve as the top-level container for projects and users. When creating a new organization: + +1. **Define Organization Structure** + - Set organization name and identifier + - Configure organization-level branding + - Establish organizational hierarchy + +2. **Configure Access Policies** + - Define who can create projects within the organization + - Set default permissions for new projects + - Configure cross-project access rules + +3. **Resource Management** + - Set storage quotas per organization + - Configure API rate limits + - Manage concurrent user limits + +### Organization Roles and Permissions + +Organizations introduce new role levels beyond project roles: + +- **Organization Owner**: Full control over organization settings, projects, and users +- **Organization Admin**: Can manage projects and users, but cannot delete the organization +- **Organization Member**: Can access organization-level dashboards and reports +- **Project Manager**: Manages specific projects within the organization + +## Advanced Features + +### Multi-Project Dashboards + +Create dashboards that aggregate data across all projects within an organization: + +- **Cross-Project Analytics**: View metrics spanning multiple projects +- **Organization Health Score**: Monitor overall organization performance +- **Resource Utilization**: Track storage and API usage across projects + +### Organization-Level Integrations + +Configure integrations that apply to all projects within an organization: + +- **Single Sign-On (SSO)**: Organization-wide authentication +- **Notification Channels**: Centralized alerting for all projects +- **Bug Tracking**: Unified bug tracking system configuration + +### User Provisioning + +Streamline user management across the organization: + +- **Bulk User Import**: Import users from CSV or LDAP +- **Automatic Role Assignment**: Assign roles based on user groups +- **User Lifecycle Management**: Automated onboarding and offboarding + +## Best Practices + +### Organization Structure + +- **Naming Conventions**: Use consistent naming for projects within organizations +- **Project Grouping**: Group related projects together for easier management +- **Access Control**: Implement least-privilege access principles + +### Resource Planning + +- **Capacity Planning**: Monitor resource usage to plan for growth +- **Cost Management**: Track resource consumption for budgeting +- **Performance Optimization**: Optimize settings for organization size + +## Migration from 26.1 + +If you're upgrading from ReportPortal 26.1: + +1. **Existing Projects**: All existing projects will be assigned to a default organization +2. **User Migration**: Users maintain their existing permissions +3. **Configuration**: Organization-level settings can be configured post-migration + +## Troubleshooting + +Common issues when managing organizations: + +- **Permission Errors**: Verify user roles at both organization and project levels +- **Resource Limits**: Check organization quotas if projects fail to create items +- **Integration Issues**: Ensure organization-level integrations are properly configured + +For more information, see the [Admin Panel documentation](/admin-panel) or contact your organization administrator. + diff --git a/versioned_docs/version-26.2-organizations/features/RESTAPI.md b/versioned_docs/version-26.2-organizations/features/RESTAPI.md new file mode 100644 index 0000000000..b7889fb897 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/features/RESTAPI.md @@ -0,0 +1,31 @@ +--- +sidebar_position: 7 +sidebar_label: REST API +description: Extend and integrate ReportPortal using a powerful REST API to push results, fetch analytics, and build custom reports and dashboards across your tooling. +--- + +# 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/versioned_docs/version-26.2-organizations/features/RealTimeReporting.md b/versioned_docs/version-26.2-organizations/features/RealTimeReporting.md new file mode 100644 index 0000000000..52ae3934f7 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/features/RealTimeReporting.md @@ -0,0 +1,27 @@ +--- +sidebar_position: 5 +sidebar_label: Real-time reporting +description: Get live test results as executions run. Start triage early, shorten feedback loops, and improve release speed with a real-time test results dashboard. +--- + +# 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/versioned_docs/version-26.2-organizations/features/RichArtifactsInTestReports.md b/versioned_docs/version-26.2-organizations/features/RichArtifactsInTestReports.md new file mode 100644 index 0000000000..f59750675c --- /dev/null +++ b/versioned_docs/version-26.2-organizations/features/RichArtifactsInTestReports.md @@ -0,0 +1,31 @@ +--- +sidebar_position: 4 +sidebar_label: Rich artifacts in test reports +description: Enrich your automation test report with logs, screenshots, videos, and network data. Simplify debugging, defect triage, and test failure analysis in one place. +--- + +# 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/versioned_docs/version-26.2-organizations/features/SCIMServerFeature.md b/versioned_docs/version-26.2-organizations/features/SCIMServerFeature.md new file mode 100644 index 0000000000..9ee70a05d9 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/features/SCIMServerFeature.md @@ -0,0 +1,36 @@ +--- +sidebar_position: 8 +sidebar_label: SCIM Server feature +description: Automate user provisioning and access with SCIM in ReportPortal. Sync roles and projects from your IdP to simplify identity management and improve security. +--- + +# SCIM Server feature + +SCIM is a protocol that simplifies how you manage user identities and access across various applications and services. It automates the sharing of user identity information between your identity provider (like Azure AD or Okta) and service providers, such as ReportPortal. + +ReportPortal includes a SCIM Server that acts as a bridge between your identity provider and ReportPortal, streamlining the management of user accounts. + +**Benefits** + +* Reduced administrative work: Automating the creation and removal of user accounts helps eliminate manual errors and saves time. +* Enhanced security: SCIM ensures that security policies and access controls are consistently applied across different systems. +* Improved user experience: Users are automatically assigned to projects and roles based on their group memberships in the identity provider. + +**Key Features** + +* Automated Account Setup: SCIM allows for the automatic creation of user accounts in ReportPortal, complete with project and role assignments. +* Flexible Account Types: Users can be designated as Admins or Regular Users in ReportPortal. +* Dynamic Updates: Changes in the identity provider trigger updates in account type and project assignments in ReportPortal. +* Account De-provisioning: Supports both "soft" delete (disabling accounts) and "hard" delete (removing accounts). + +**Group Management** + +Both user and application groups are recognized as sources for project membership. Group names in the identity provider must follow a specific pattern set on the SCIM Server to correctly update project and role assignments in ReportPortal. This involves a regular expression pattern that identifies the project name and role from the group name. + +**Default Roles** + +A default project role can be assigned to users who don't have a specific role pattern in their group membership on the Identity Provider side. + +:::note +The SCIM server feature is a premium offering from ReportPortal, available as part of our paid support services. We provide assistance with both the identity provider settings and the SCIM Server configuration.
+If you're interested in enabling SCIM for your setup, please [contact us](https://reportportal.io/contact-us/general) for more information. diff --git a/versioned_docs/version-26.2-organizations/features/TestExecutions.md b/versioned_docs/version-26.2-organizations/features/TestExecutions.md new file mode 100644 index 0000000000..ae519d79d0 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/features/TestExecutions.md @@ -0,0 +1,49 @@ +--- +sidebar_position: 9 +sidebar_label: Test Executions +description: View all test executions in one place with powerful filters and a customizable layout for faster analysis and easier troubleshooting. +--- + +# Test Executions + +The Test Executions page gives you a simple, unified view of all test cases from multiple launches. Instead of navigating complex structures, you see all executed tests in one clean list, making daily analysis faster and simpler. + +Key benefits: + +**1. Easier Test Navigation** + +See all executed tests in one simple list – no more clicking through folders. You can quickly spot failures, check patterns, and compare launches without searching through scattered data. + + + +**2. Powerful and Flexible Filtering** + +* **Launch-level filters**: Filter by launch time, name, or attributes to focus on the right results. + + + +* **Test-level filters**: Narrow down by status, defect type, or test attributes. +Use both together to find exactly the tests you need. + + + +**3. Customizable View** + +Adjust the page to fit your workflow: + +* Add or remove columns +* Create custom attribute columns +* Reorder columns + +This helps you see your data the way you prefer. + + + +**4. Faster and Clearer Analysis** + +Test Executions removes extra navigation, speeds up daily checks, and makes troubleshooting easier – whether you’re managing a few tests or thousands.
+ +:::note +The Test Executions feature is a premium offering from ReportPortal, available as part of our paid support services. +If you're interested in enabling Test Executions for your setup, please [contact us](https://reportportal.io/contact-us/general) for more information. +::: diff --git a/versioned_docs/version-26.2-organizations/features/UnifiedTestReporting.md b/versioned_docs/version-26.2-organizations/features/UnifiedTestReporting.md new file mode 100644 index 0000000000..e10b947aa2 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/features/UnifiedTestReporting.md @@ -0,0 +1,26 @@ +--- +sidebar_position: 1 +sidebar_label: Unified test reporting +description: Unify results from all test frameworks in one place. Streamline collaboration and real-time insights in a single test automation dashboard. +--- + +# 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** + +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/versioned_docs/version-26.2-organizations/features/VisualisationOfTestResults.md b/versioned_docs/version-26.2-organizations/features/VisualisationOfTestResults.md new file mode 100644 index 0000000000..b6bc59258f --- /dev/null +++ b/versioned_docs/version-26.2-organizations/features/VisualisationOfTestResults.md @@ -0,0 +1,27 @@ +--- +sidebar_position: 6 +sidebar_label: Visualisation of test results +description: Track key metrics with real-time widgets and charts. Visualize trends, failures, and ROI on a flexible test automation metrics dashboard for faster decisions. +--- + +# 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 failure trends, test execution time, passing rate, 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/versioned_docs/version-26.2-organizations/features/_category_.json b/versioned_docs/version-26.2-organizations/features/_category_.json new file mode 100644 index 0000000000..71bdd07bfd --- /dev/null +++ b/versioned_docs/version-26.2-organizations/features/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Features", + "position": "2", + "link": {"type": "doc", "id": "index"} + } diff --git a/versioned_docs/version-26.2-organizations/features/img/TestExecutions1.png b/versioned_docs/version-26.2-organizations/features/img/TestExecutions1.png new file mode 100644 index 0000000000..d6b4df1a30 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/features/img/TestExecutions1.png differ diff --git a/versioned_docs/version-26.2-organizations/features/img/TestExecutions2.png b/versioned_docs/version-26.2-organizations/features/img/TestExecutions2.png new file mode 100644 index 0000000000..eaed565ea4 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/features/img/TestExecutions2.png differ diff --git a/versioned_docs/version-26.2-organizations/features/img/TestExecutions3.png b/versioned_docs/version-26.2-organizations/features/img/TestExecutions3.png new file mode 100644 index 0000000000..a3c859c28c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/features/img/TestExecutions3.png differ diff --git a/versioned_docs/version-26.2-organizations/features/img/TestExecutions4.png b/versioned_docs/version-26.2-organizations/features/img/TestExecutions4.png new file mode 100644 index 0000000000..924aa7380c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/features/img/TestExecutions4.png differ diff --git a/versioned_docs/version-26.2-organizations/features/index.md b/versioned_docs/version-26.2-organizations/features/index.md new file mode 100644 index 0000000000..1807cb40eb --- /dev/null +++ b/versioned_docs/version-26.2-organizations/features/index.md @@ -0,0 +1,22 @@ +--- +title: Features +description: Discover ReportPortal's features like real-time reporting, AI-based defects triage, visualization of test data and more. +--- + +# Features + +:::tip What's New in 26.2 +Version 26.2 introduces **Organizations** - [Learn more →](/features/Organizations) +::: + +The **Features** section of ReportPortal outlines the powerful capabilities that make it one of the essential automation testing reporting tools for modern software development teams. ReportPortal is designed to simplify testing workflows, provide insights into test performance, and ensure higher-quality software through its diverse functionality. Each feature addresses key challenges in test automation, from organizing and categorizing test data to delivering real-time test reports and visual summaries. + +With ReportPortal, teams gain access to unified reporting that consolidates all test results in one place, making it easier to track trends and monitor project health. Intelligent categorization and AI-driven analysis help identify root causes of failures, streamlining the process of spotting bugs and prioritizing issues for faster resolution. In addition to improved tracking capabilities, users benefit from features that facilitate collaboration, allowing for easier issue management across teams and stakeholders. Real-time reporting and customizable dashboards offer immediate feedback, supporting agile workflows and informed decision-making. + +Moreover, ReportPortal’s flexibility allows teams to tailor the platform to their unique project requirements, from setting quality standards to automating integrations with existing tools through its REST API. These features help teams boost testing efficiency and reliability, making ReportPortal a complete solution for taking test automation to the next level with collaborative dashboards in test reporting. + +To see ReportPortal’s features in practice, check out our [demo instance](https://demo.reportportal.io/). + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.2-organizations/glossary/img/Glossary1.png b/versioned_docs/version-26.2-organizations/glossary/img/Glossary1.png new file mode 100644 index 0000000000..fc40e2f5b1 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/glossary/img/Glossary1.png differ diff --git a/versioned_docs/version-26.2-organizations/glossary/img/Glossary2.png b/versioned_docs/version-26.2-organizations/glossary/img/Glossary2.png new file mode 100644 index 0000000000..0473ba8ea3 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/glossary/img/Glossary2.png differ diff --git a/versioned_docs/version-26.2-organizations/glossary/img/Glossary3.png b/versioned_docs/version-26.2-organizations/glossary/img/Glossary3.png new file mode 100644 index 0000000000..c6c54b7c90 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/glossary/img/Glossary3.png differ diff --git a/versioned_docs/version-26.2-organizations/glossary/img/Glossary4.png b/versioned_docs/version-26.2-organizations/glossary/img/Glossary4.png new file mode 100644 index 0000000000..47158611c0 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/glossary/img/Glossary4.png differ diff --git a/versioned_docs/version-26.2-organizations/glossary/img/Glossary5.png b/versioned_docs/version-26.2-organizations/glossary/img/Glossary5.png new file mode 100644 index 0000000000..a696362792 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/glossary/img/Glossary5.png differ diff --git a/versioned_docs/version-26.2-organizations/glossary/img/Glossary6.png b/versioned_docs/version-26.2-organizations/glossary/img/Glossary6.png new file mode 100644 index 0000000000..8ac01c0670 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/glossary/img/Glossary6.png differ diff --git a/versioned_docs/version-26.2-organizations/glossary/img/Glossary7.png b/versioned_docs/version-26.2-organizations/glossary/img/Glossary7.png new file mode 100644 index 0000000000..7539f5e746 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/glossary/img/Glossary7.png differ diff --git a/versioned_docs/version-26.2-organizations/glossary/img/Glossary8.png b/versioned_docs/version-26.2-organizations/glossary/img/Glossary8.png new file mode 100644 index 0000000000..4e4a2c11ff Binary files /dev/null and b/versioned_docs/version-26.2-organizations/glossary/img/Glossary8.png differ diff --git a/versioned_docs/version-26.2-organizations/glossary/img/Glossary9.png b/versioned_docs/version-26.2-organizations/glossary/img/Glossary9.png new file mode 100644 index 0000000000..63dfe11b6b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/glossary/img/Glossary9.png differ diff --git a/versioned_docs/version-26.2-organizations/glossary/index.mdx b/versioned_docs/version-26.2-organizations/glossary/index.mdx new file mode 100644 index 0000000000..fa3f2fd37b --- /dev/null +++ b/versioned_docs/version-26.2-organizations/glossary/index.mdx @@ -0,0 +1,87 @@ +--- +sidebar_position: 23 +sidebar_label: Glossary +description: Explore ReportPortal terminology like agents, clients, loggers, launches, and widgets to understand how test reporting and analysis work across the platform. +--- + +# Glossary + +## Agent + +Agents are direct test framework integrations. If you integrate your tests with an agent then you don’t need to do anything, except adding properties and test metadata. Basically, each agent has the same naming convention: agent-{ language }-{ framework }. E.G. “agent-python-pytest”. The best way to see which agents we do have and check out the latest documentation for them is to go on ReportPortal organization page on GitHub and start searching. + + + +Each agent project contains a README with the latest installation instructions. Agent pages usually are being updated along with the agent code. If you found any issue with the documentation you are free to correct it with a PR or post an issue. + +Agents are complete and self-sufficient integrations, all you need is to provide correct properties and optionally test metadata (like attributes and steps). + +## Client + +Clients are basically interfaces for our Rest API, like agents they have its naming convention: client-{ language }. E.G. “client-java”. And, like Agents, the best way to find the latest library version and documentation is to find it on GitHub. + + + +Unlike agents, Clients are not self-sufficient. They provide convenient way to call ReportPortal API, but you must do this in your code. It is also your part of responsibility which metadata you send to ReportPortal if you decided to use a Client. + +## Logger + +Loggers are special type of libraries which a responsible for saving logs into ReportPortal. They can be attached to logging framework or a test tool, E.G. Selenide, to report steps and log records. Basically, you can report logs yourself with certain methods inside Clients, but Loggers do this for you. + +Here is an example of how OkHttp3 logger works: + + + +Like agents and clients, loggers have their own naming pattern: logger-{ language }-{ framework / tool }. + +## Plugin + +Plugins are co-applications which add additional functionality to ReportPortal. We have separate examples and development guide for our users. You are free to extend our test automation results dashboard as you wish, we don't limit or obligate our users with any clauses. ReportPortal provides some plugins for free like Jira and Rally integrations. + +## Launch + +The first reporting-related word in our list. The Launch is a collection of all reported tests which were run at single test execution. Launches allows you to monitor your application-under-test state. The idea is that you take certain number of tests and test suites and run them periodically on different environments and our widgets draws you the picture of your application health from launch to launch. You are not obligated to stop adding new test reports into a launch after the launch finish, you are free to add more data. Or, for example, you can create several Launches and merge them into one. Or run your tests in a distributed way and report everything into a single Launch. The key concept here is that Launch is the biggest data point on our widgets, everything else is up to you. + + + +## Suite + +For the convenience of locating and navigating data, you can put your tests into test suites. Features, Stories, Suites, Test Classes, Test (sic!), etc., they are all Suites from ReportPortal view, just with different names. Suites are hierarchical, to put one Suite inside another you should specify Parent Suite UUID. Also, as a limitation, child Suite and Items start time should not be earlier than Parent Suite start time due to Database limitations, please keep that in mind. + + + +## Step + +Step is the only entity with statistics in our centralized test automation tool. Every time you report a step, ReportPortal adds 1 to test count and every time a Step fails it counts it as a test failure. + + + +## Nested step + +Nested steps are like suites but located as child step elements. They are like containers for test logs and represented as dropdown lists inside Log View. On the screen below Nested step is the first entity. + + + +## Log + +Logs are textual data necessary for debugging and problem solving. Our Analyzer uses them in the same way. Logs should be neat and informative, but not too much verbose. Tons of logs usually the same problem as their full absence. + + + +## Test Case ID + +The ID which is used along with Steps. It is unique signature of tests by which we build test history. In general, you don’t need to manipulate these IDs, since every agent usually generates them with Code reference and parameters. But if you want to customize your history view this is the first point where to look. Agents usually generate Test Case IDs based on code reference and have a way to customize it. + + + +## Before Method + +A lifecycle hook or method provided by test frameworks that is executed before a test case or test suite starts. In the context of ReportPortal, it is used to initialize test data, set up configurations, or send a "start test" event to ReportPortal to log the beginning of a test execution. + +## After Method + +A lifecycle hook or method provided by test frameworks that is executed after a test case or test suite finishes. In the context of ReportPortal, it is used to clean up resources, log results, or send a "finish test" event to ReportPortal to log the completion of a test execution along with its status (e.g., passed, failed, skipped). + +## Test Executions + +Test Executions is a unified space in ReportPortal where you can view and analyze all executed tests from multiple launches in one convenient, flat view. It lets you quickly find and review any test without navigating through launch hierarchies, making it easier to understand what passed, failed, or needs attention. With simple filtering and customizable columns, Test Executions help teams work faster, spot issues sooner, and keep testing results organized — even when dealing with many automated runs. diff --git a/versioned_docs/version-26.2-organizations/installation-steps-advanced/AdditionalConfigurationParameters.md b/versioned_docs/version-26.2-organizations/installation-steps-advanced/AdditionalConfigurationParameters.md new file mode 100644 index 0000000000..5488600a5f --- /dev/null +++ b/versioned_docs/version-26.2-organizations/installation-steps-advanced/AdditionalConfigurationParameters.md @@ -0,0 +1,22 @@ +--- +sidebar_position: 9 +sidebar_label: Additional configuration parameters +description: Optimize ReportPortal setup with customizable parameters - ports, session timeouts, database and API settings via Docker-friendly environment variables. +--- + +# Additional configuration parameters + +| Configuration parameter | Default Value | Service | Description | +|-------------------------| ------------- | --------|-------------| +| RP_PROFILES | - | API,UAT | Specifies application settings profiles. Should be set to 'docker' | +| RP_SESSION_LIVE | 3600 | UAT | Session token live time in seconds| +| RP_SERVER_PORT | 8080 | UI | UI service port | +| POSTGRES_SERVER | postgres | API,UAT,MIGRATIONS | PostgreSQL host | +| POSTGRES_PORT | 5432 | API,UAT,MIGRATIONS | PostgreSQL port | +| POSTGRES_USER | rpuser | API,UAT,MIGRATIONS | PostgreSQL user name | +| POSTGRES_PASSWORD | rppass | API,UAT,MIGRATIONS | PostgreSQL user password | +| POSTGRES_DB | reportportal | API,UAT,MIGRATIONS | PostgreSQL database name | +| RABBITMQ_DEFAULT_USER | rabbitmq | API,ANALYZER | PostgreSQL database name | +| RABBITMQ_DEFAULT_PASS | rabbitmq | API,ANALYZER | PostgreSQL database name | + +[Example of docker compose](https://github.com/reportportal/reportportal/blob/master/docker-compose.yml) with filled out configuration parameters. diff --git a/versioned_docs/version-26.2-organizations/installation-steps-advanced/AmazonALBNGINXIngressController.md b/versioned_docs/version-26.2-organizations/installation-steps-advanced/AmazonALBNGINXIngressController.md new file mode 100644 index 0000000000..520c1876d5 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/installation-steps-advanced/AmazonALBNGINXIngressController.md @@ -0,0 +1,113 @@ +--- +sidebar_label: Amazon Application Load Balancer Configuration Guide +description: Configure Amazon ALB and NGINX Ingress Controller for ReportPortal test automation reporting tools on AWS EKS. +--- + +# Amazon Application Load Balancer Configuration Guide + +This article describe how to deploy Amazon Application Load Balancer & NGINX Ingress Controller in Amazon EKS. + +## Deploy NGINX Ingress Helm Chart with specific configuration + +Before get started, ensure NGINX Ingress is not yet deployed on your Amazon EKS cluster. + +First, add and update the [Bitnami Helm chart](https://github.com/bitnami/charts/tree/main/bitnami/nginx-ingress-controller/) repository: + +```bash +helm repo add bitnami https://charts.bitnami.com/bitnami +helm repo update bitnami +``` + +Now, deploy the NGINX Ingress controller with the following configuration: + + +```bash +helm install gateway \ + --set service.type=NodePort \ + --set defaultBackend.enabled=false \ + --set service.nodePorts.http="30080" \ + --set service.nodePorts.https="30443" \ + -n nginx-ingress \ + --create-namespace \ + bitnami/nginx-ingress-controller \ + --wait +``` + +This will set up the NGINX Ingress controller with NodePort service type, using ports 30080 for HTTP and 30443 for HTTPS. The deployment will be named "gateway" in the "nginx-ingress" namespace. + +## Request/Import SSL certificate in AWS Certificate Manager + +:::note +Before requesting the certificate, you probably need to create a domain name in AWS. If you haven't done this before, follow this guide to create a Hosted Zone in Route 53: [Creating a public hosted zone](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/CreatingHostedZone.html) +::: + +To request a certificate provided by ACM for a domain name: + +1. Sign in to the [AWS Certificate Manager console](https://console.aws.amazon.com/acm). +2. Select **Request a certificate**. +3. Enter your API's custom domain name, for example, `reportporta.k8s.com`, in the **Domain name** field. +4. Optionally, you can add another name to this certificate. +5. Click **Review and request**. +6. Click **Confirm and request**. +7. To ensure a valid request, a registered owner of the internet domain must consent to the request before ACM issues the certificate. + +To import a certificate into ACM for a domain name, follow the official guide: [Getting certificates ready in AWS Certificate Manager](https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains-prerequisites.html). + +## Create Target Group for NGINX Ingress + +After requesting certificate in AWS Certificate Manager, the next step is to create a Target Group to route traffic to your NGINX Ingress controller. + +Follow these steps to create a target group: + +1. Sign in to the [EC2 console](https://eu-central-1.console.aws.amazon.com/ec2/home?region) and choose Target Groups at the bottom of the left panel. +2. Click on **Create Target Groups**. +3. Fill in required data: + - Target type: **Instances**. + - Target group name: **rp-k8s-tg**. + - Protocol: **HTTPS: 30443**. + - IP address type: **IPv4**. + - Choose your VPC. + - Protocol version: **HTTP1**. + - Health check protocol: **HTTPS**. + - Health check path: **/healthz**. +4. Click on **Next**. +5. Add your Amazon EKS Nodes as pending. +6. **Create**. + +This target group will allow you to route traffic to your NGINX Ingress controller efficiently + +## Create Application Load Balancer form Amazon Console + +Now, let's create an Application Load Balancer (ALB) to route traffic to our NGINX Ingress controller: + +1. Open [EC2 console](https://eu-central-1.console.aws.amazon.com/ec2/home?region) and choose Load Balancer at the bottom of the left pane +2. Click on **Create Load Balancer**. +3. Choose Application Load Balancer and click **Create**. +4. Fill in required data: + - Load balancer name: **rp-k8s-alb**. + - Scheme: depends on your requirements it may be **internet-facing** or **internal**. + - IP address type: **IPv4**. + - Network mapping: Choose your VPC and **public** subnets if you choose internet-facing or **private** if you choose internal scheme. + - Security groups: Choose the **Cluster security group** that allows traffic from/to the EKS cluster and the security group that allows traffic from the internet or your VPC. + - Listeners and routing: **HTTPS: 443**, Forward to the aready created Target group **rp-k8s-tg**. + - Secure listener settings: Choose Security policy depends on your requirements. + - Choose the certificate you requested/imported in ACM. +5. Click on **Create load balancer**. + +This will create an ALB that routes traffic to the NGINX Ingress controller. + +## Deploy ReportPortal Helm Chart to Amazon EKS + +Before deploying ReportPortal to your Amazon EKS cluster, make sure to update the Ingress Nginx configuration in your `values.yaml` file as follows: + +```yaml +<...> +ingress: + enable: true + hosts: + - reportporta.k8s.com + class: nginx +<...> +``` + +Follow the official guide [Deploy ReportPortal with Kubernetes](/installation-steps/DeployWithKubernetes) to complete the deployment. diff --git a/versioned_docs/version-26.2-organizations/installation-steps-advanced/BackupRestoreGuide.md b/versioned_docs/version-26.2-organizations/installation-steps-advanced/BackupRestoreGuide.md new file mode 100644 index 0000000000..8590431df4 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/installation-steps-advanced/BackupRestoreGuide.md @@ -0,0 +1,231 @@ +--- +sidebar_position: 7 +sidebar_label: Backup & Restore Guide +description: Safeguard your ReportPortal data by learning how to back up and restore its PostgreSQL database and binary storage quickly and reliably. +--- + +# Backup & Restore Guide + +## Introduction + +In this article, we delve into the essential elements of ReportPortal that require meticulous backup procedures. **The two critical components under scrutiny are the database, which relies on PostgreSQL, and the binary storage, represented as Docker volume or Persistent Volume Claims (PVC) for Kubernetes**. Understanding the significance of safeguarding these components is paramount for maintaining the integrity and reliability of your ReportPortal. + +:::note + It is important to understand that there are various options available for both backing up and restoring ReportPortal database and binary storage. This article provides an illustrative example of one such option. +::: + +## Docker-based Backup and Restore Processes +### PostgreSQL Backup Process + +Create a backup of the PostgreSQL database using the `pg_dump` command: + +```bash +DB_USER=rpuser +DB_NAME=reportportal +DB_CONTAINER=postgres + + +docker exec -t $DB_CONTAINER pg_dump -U $DB_USER -d $DB_NAME > reportportal_docker_db_backup.sql +``` + +Explanation: +- `docker exec -t $DB_CONTAINER`: Executes a command inside the specified Docker container (Pod). +- `pg_dump -U $DB_USER -d $DB_NAME`: Initiates the PostgreSQL dump, specifying the username and database name. +- `> reportportal_db_backup.sql`: Redirects the dump output to a file named `backup.sql`. + +Make sure to replace placeholders like `DB_CONTAINER`, `DB_USER`, and `DB_NAME` with your container pod name, PostgreSQL username, and database name. + +### PostgreSQL Restore Process + +:::important +Ensure that PostgreSQL is running as a standalone service before starting ReportPortal. Deploy ReportPortal only after the database has been successfully restored +::: + +#### 1. Deploy PostgreSQL as a Standalone Service + +Start the PostgreSQL container using Docker Compose: + +```bash +docker compose up -d postgres +``` + +> This brings up only the `postgres` service defined in your `docker-compose.yml`. + +#### 2. Restore the PostgreSQL Database Backup + +Set the required environment variables: + +```bash +DB_CONTAINER=postgres +DB_USER=rpuser +DB_NAME=reportportal +``` + +Restore the database from your backup file: + +```bash +docker exec -i $DB_CONTAINER psql -U $DB_USER -d $DB_NAME < reportportal_docker_db_backup.sql +``` + +> Ensure the backup file `reportportal_docker_db_backup.sql` is in your current working directory. + +#### 3. Deploy ReportPortal + +Once the database is restored, bring up the full ReportPortal stack: + +```bash +docker compose up -d +``` + +This command launches all remaining services, including all the ReportPortal services and components. + +### Binary Storage Backup Process + +The simple way to back up binary storage is to back up the volume’s directory (by default, the path is /var/lib/docker/volumes/volume_hash). + +:::important +The following method is available from ReportPortal version 24.1. +::: + +```bash +VOLUME_NAME=reportportal_storage + +docker run --rm -v "$VOLUME_NAME":/data -v "$(pwd)":/backup busybox tar -zcvf /backup/reportportal_storage_backup.tar.gz /data +``` + +Explanation: +* `docker run`: This command runs a Docker container. +* `--rm`: This flag removes the container once it has completed its execution. This is useful for temporary containers, such as when performing a one-off task like creating a backup. +* `-v "$VOLUME_NAME":/storage_backup`: This option creates a volume mount between the host machine and the container. It mounts the Docker volume named by the `reportportal_storage` variable to the path `/storage_backup` inside the container. +* `-v "$(pwd)":/backup`: This option mounts the current working directory (`$(pwd)`) on the host machine to the path `/backup` inside the container. This is where the backup file will be stored. +* `busybox`: This specifies the Docker image to be used for the container. In this case, it uses the BusyBox image, which is a lightweight and minimalistic Linux distribution often used for simple tasks. +* `tar -zcvf /backup/reportportal_storage_backup.tar.gz /storage_backup`: This part of the command runs the `tar` command inside the container to create a compressed tar archive (`reportportal_storage_backup.tar.gz`). + +### Binary Storage Restore Process + +Restore the backup using the following command: + +```bash +VOLUME_NAME=reportportal_storage + +docker run --rm -v $VOLUME_NAME:/data -v $(pwd):/backup busybox tar -xzvf /backup/reportportal_storage_backup.tar.gz -C / +``` + +## Kubernetes-based Backup and Restore Processes + +### Backup Processes + +:::note +Kubernetes Private Volume Claim backups is made easier with your managed system (e.g. VMWare or Cloud-based tools). You can create snapshots from volumes and attach them to the new environment. This approach is more simpler than the commands described below. +::: + +If you don't have any high-level managed systems for your Kubernetes cluster, you can use `VolumeSnapshot`. This API resource is designed to create volume snapshots for both users and administrators within the Kubernetes cluster. + +This article uses the official Kubernetes documentation [Volume Snapshots](https://kubernetes.io/docs/concepts/storage/volume-snapshots/) and [Restore Volume from Snapshot Support](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#volume-snapshot-and-restore-volume-from-snapshot-suppot) + +:::info +The following example tested on **Kubernetes version 1.28** + +Choosing the correct version of CSI is crucial. Make sure to consult the documentation to ensure you select the appropriate version: [Volume Snapshots](https://kubernetes.io/docs/concepts/storage/volume-snapshots/), [CSI Driver](https://kubernetes-csi.github.io/docs/drivers.html), [CSI Introduction](https://kubernetes-csi.github.io/docs/introduction.html), [CSI Driver Host Path (On-Premise)](https://github.com/kubernetes-csi/csi-driver-host-path#deployment) +::: + +1. Install the CRD first. Be sure to pay attention to the version `snapshotter/v6.3.3/client` and adjust it based on your Kubernetes version: + +```bash +kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v6.3.3/client/config/crd/snapshot.storage.k8s.io_volumesnapshotclasses.yaml +``` + +```bash +kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v6.3.3/client/config/crd/snapshot.storage.k8s.io_volumesnapshotcontents.yaml +``` + +```bash +kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v6.3.3/client/config/crd/snapshot.storage.k8s.io_volumesnapshots.yaml +``` + +2. Install the Snapshot Controller `v6.3.3` for Kubernetes `1.28` + +```bash +kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v6.3.3/deploy/kubernetes/snapshot-controller/setup-snapshot-controller.yaml +``` + +```bash +kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v6.3.3/deploy/kubernetes/snapshot-controller/rbac-snapshot-controller.yaml +``` + +3. Create VolumeSnapshotClass resource: + +```bash +kubectl apply -f - <:8086"] + database = "telegraf" +``` + +Search for the "inputs.docker" and update next configs(should be uncommented each value which you need to add to the monitoring): + +```yaml + [[inputs.docker]] + endpoint = "unix://var/run/docker.sock" + perdevice_include = ["cpu"] + total_include = ["cpu", "blkio", "network"] +``` + +Search for the "inputs.net" for adding the network metrics to the monitoring. Uncomment only the plugin name: + +```yaml + [[inputs.net]] +``` + +Save changes, close "telegraf.conf" and start telegraf service: + +```yaml + sudo systemctl enable --now telegraf +``` + +Check the status(should be green and in active running status): + +```yaml + sudo systemctl status telegraf +``` + +In case of errors _"E! [inputs.docker] Error in plugin: Got permission denied while trying to connect to the Docker daemon socket at unix://var/run/docker.sock Permission denied"_ + +Need to add permissions to the _/var/run/docker.sock_: + +```yaml + sudo chmod 666 /var/run/docker.sock +``` + +### PGHero - simple monitoring dashboard for PostgreSQL + +#### Functionality + +- requests statistic: number of calls, average and total execution time (with the ability to store history); +- currently active queries; +- information about tables: disk space occupied, dates of the last **VACUUM** and **ANALYSE** launches; +- information about indexes: disk space occupied, presence of duplicated / unused indexes; +- recommendations regarding adding an index on complex queries with **Seq Scan**; +- statistics on open connections to the database; +- displaying basic database settings that affect performance (**shared_buffers**, **work_mem**, **maintenance_work_mem**, etc.). + +#### Installation + +**How to enable query stats** + +In the database settings(for RDS database - in parameter group) add/change the following parameters: + +```yaml + shared_preload_libraries = 'pg_stat_statements' + pg_stat_statements.track = all + pg_stat_statements.max = 10000 + track_activity_query_size = 2048 +``` + +Restart the database or reboot the RDS instance. +As a superuser from the psql console, run: + +```yaml + CREATE extension pg_stat_statements; +``` + +**How to configure historical query stats** + +To track query stats over time, create a table to store them. + +Execute the following query for table creation: + +```yaml + CREATE TABLE "pghero_query_stats" ( + "id" bigserial primary key, + "database" text, + "user" text, + "query" text, + "query_hash" bigint, + "total_time" float, + "calls" bigint, + "captured_at" timestamp + ); +``` + +Build index on the created table: + +```yaml + CREATE INDEX ON "pghero_query_stats" ("database", "captured_at"); +``` + +Include the following to the installation string to schedule the task to run every 5 minutes: + +```yaml + bin/rake pghero:capture_query_stats +``` + +The query stats table can grow large over time. Remove old stats with: + +```yaml + bin/rake pghero:clean_query_stats +``` + + + + diff --git a/versioned_docs/version-26.2-organizations/installation-steps-advanced/ComponentsOverview.md b/versioned_docs/version-26.2-organizations/installation-steps-advanced/ComponentsOverview.md new file mode 100644 index 0000000000..6a02922f54 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/installation-steps-advanced/ComponentsOverview.md @@ -0,0 +1,41 @@ +--- +sidebar_position: 1 +sidebar_label: Components Overview +description: ReportPortal Components Overview page explains each service - Gateway, API, UAT, Analyzer, Migrations, Index, UI - to help you configure and scale your system effectively. +--- + +# Components Overview + +## Gateway +Gateway is a main entry point to application services. It is in-charge of routing requests to appropriate service and load balancing. +There are two options proposed: +* [Traefik](https://traefik.io) for Docker installation +* [NGINX Ingress Controller](https://www.nginx.com/products/nginx/kubernetes-ingress-controller) for Kubernetes + +## API Service +The API service is the core of ReportPortal TestOps tool. It is in-charge of handling incoming requests from agents and UI. + +## UAT Service +The UAT (Unified Authorization Trap) service is module that authenticate users and creates/revokes user tokens. +It supports various types of authentication mechanisms: +* Basic Auth +* GitHub Auth (OAuth2) +* LDAP Auth +The UAT service itself is a OAuth2 server that authenticates a user using mechanisms mentioned +below and creates internal OAuth2 token which is used by UI and agents. There are two types of tokens: +* UI (expiring token) +* API - non-expiring token, intended to use on agent side + +## Analyzer Service +Keeps index of user logs per project and provides ability to perform search by that index. Used by auto-analysis functionality. +Collects and processes the information, then sends it to OpenSearch. + +## Migrations Service +Database migrations written in Go. Migrate reads migrations from sources and applies them in correct order to a database. + +## Index Service +The Index services handle requests that do not match any pattern of other services. +It also aggregates some information/health data from other services to provide UI with that information. + +## UI Service +All statics for user interface. diff --git a/versioned_docs/version-26.2-organizations/installation-steps-advanced/DeployWithAWSECSFargate.md b/versioned_docs/version-26.2-organizations/installation-steps-advanced/DeployWithAWSECSFargate.md new file mode 100644 index 0000000000..5b540dfb61 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/installation-steps-advanced/DeployWithAWSECSFargate.md @@ -0,0 +1,193 @@ +--- +sidebar_position: 14 +sidebar_label: Deploy with AWS ECS Fargate +description: Deploy ReportPortal on AWS ECS Fargate for scalable test automation reporting with serverless container management. +--- + +# Deploy with AWS ECS Fargate + +***This guide is for version RP 23.1 and earlier.*** + +***Provided by contributor, not verified by RP team, please use with caution.*** + +ReportPortal can be deployed using AWS ECS Fargate by interpreting the [docker-compose.yml](https://raw.githubusercontent.com/reportportal/reportportal/master/docker-compose.yml) + +### Prerequisites +Ensure following services are available in the chosen AWS region & you have permissions to create/modify the resources. + +1. Elastic File System +2. Aurora PostgreSQL Serverless RDS instance +3. AWS EC2 +4. AWS Secrets Manager +5. AWS Lambda +6. AWS ECS +7. AWS Cloudwatch +8. AWS IAM +9. AWS KMS +10. Route53 + +### Deployment + +#### Elastic File System +Create Elastic FileSystem with 2 access points i.e., for minio & elasticsearch. +#### PostreSQL database +Create Aurora Serverless RDS PostgreSQL instance (Engine Version: 13.6) with minimum 2 ACUs and maximum 16 ACUs +#### Load Balancer +Create Elastic Application LoadBalancer - internal OR internet facing (based on your requirement) with following target groups +1. Traefik with target as IP, port 8080 and health-check path `/ping`. +2. Index with target as Lambda & health checks disabled. + +Also, create following rules on the listener of load-balancer +1. Default rule should forward requests to Traefik target group. +2. Paths matching pattern `/composite/info`, `/composite/health`, `/ui` & `/` should be forwarded to Index target group. + +#### KMS Key +Create a symmetric encryption KMS key with relevant permissions to manage & access key. + +#### Secrets +Create Secrets to store the credentials & config of the components & refer the values in ECS task definition environment variables section. For the encryption key choose the custom KMS key created above. + +Secret Structure: +```json +{ + "app_username": "foo", + "app_password: "bar" +} +``` + +During the ECS Task Definition creation choose valueFrom by referring the SecretsManager ARN in the environment variables section as follows +Eg: + +```json + { + "name": "RABBITMQ_DEFAULT_PASS", + "valueFrom": "arn:aws:secretsmanager:us-east-1:XXXXXXXXX:secret:report-portal-rmq-zBcd:app_password::" + } +``` + +#### IAM Role +Create an IAM role with following permissions +1. KMS encryption & decryption +2. SecretsManager Read access +3. ECS Task creation +4. EFS access +5. Write access to CloudWatch log groups + +#### Security Groups +Create Security Groups for +1. Access to application - attach to Load Balancer +2. Access to RP components (with the default ports of apps) & EFS mount (inbound rule to port 2049) - attach to all ECS task definitions. + +#### RP Applications +Most of the configuration remains same for the applications as per the docker-compose.yml file except few overrides as per cloud provider. Ensure the components are deployed within VPC scope & disable public IP assignment where ever applicable. + +**Migrations:** +Create Task Def for migrations & just run the task to apply the database schema. Since it's a one time task there's no need to create service. + +**Minio & Elasticsearch:** +Create Task Def for these components by adding Elastic File System mountpoints & launch the services. + +**RabbitMQ** +Create Task Def for RabbitMQ by mapping the credentials from SecretsManager in the environment variables. + +**API, jobs, analyzer, analyzer-train & ui:** + +Create Task Def for each of these components & add dockerlabel with `@ecs` suffix as per the provider. +Eg: "traefik.http.routers.api.middlewares": "api-strip-prefix@ecs" + +**Traefik:** + +a. Create Task Def with following configuration (Launch Type as Fargate) + - image: "traefik:v2.4", + - entryPoint: "traefik" + - command: "--providers.ecs=true", "--ping=true", "--ping.entrypoint=web", "--providers.ecs.region=AWS_REGION","--providers.ecs.clusters=report-portal","--providers.ecs.exposedByDefault=false","--providers.ecs.refreshSeconds=60","--entrypoints.web.address=:8080","--entrypoints.traefik.address=:8081","--api.dashboard=true","--api.insecure=true","--log.level=DEBUG","--accesslog=true","--accesslog.format=json" + +b. Create ECS Service mapping to the Traefik Target Group +c. Now inspect the logs of traefik service to see if all RP components are being picked up in the configuration from ECS provider. + +**Index:** +For some obvious reasons the index (with Ruby runtime) service couldn't run on ECS - hence ported to Lambda with Python runtime. +Create a lambda function with 128M memory & 120s timeout with following code. + +Add environment variable `TRAEFIK_SERVICES_URL` with the IP address of Traefik endpoint (it can be fetched from the task details. Eg: http://192.168.2.120:8081) + +mureq can be obtained from [mureq.py](https://github.com/slingamn/mureq/blob/master/mureq.py) - place it beside the `lamda_function.py` file. + +```python +import os +import json +import mureq + + +def lambda_handler(event, context): + print("-------------------EVENT BEGIN-------------------------------") + print(event) + print("-------------------EVENT END-------------------------------") + traefik_services= mureq.get(os.environ['TRAEFIK_SERVICES_URL']) + + if event['path'] == '/composite/info': + rp_status = {} + for service in traefik_services.json(): + if "loadBalancer" in service: + app_name = service['name'].replace('@ecs','') + app_info = mureq.get(service['loadBalancer']['servers'][0]['url'] + '/info') + rp_status.update({app_name: app_info.json()}) + return{ + "statusCode": 200, + "statusDescription": "200 OK", + "isBase64Encoded": False, + "headers": { + "Content-Type": "application/json" + }, + "body": json.dumps(rp_status) + } + if event['path'] == '/composite/health': + rp_health = {} + for service in traefik_services.json(): + if "loadBalancer" in service: + app_name = service['name'].replace('@ecs','') + app_health = list(service['serverStatus'].values())[0] + rp_health.update({app_name: app_health}) + return{ + "statusCode": 200, + "statusDescription": "200 OK", + "isBase64Encoded": False, + "headers": { + "Content-Type": "application/json" + }, + "body": json.dumps(rp_health) + } + if event['path'] == '/': + redirect_url= event['headers']['x-forwarded-proto'] + "://" + event['headers']['host'] + '/ui' + print(redirect_url) + return{ + "statusCode": 301, + "statusDescription": "301 Found", + "isBase64Encoded": False, + "headers": { + "Location": redirect_url + }, + "body": "" + } + + if event['path'] == '/ui': + redirect_url= event['headers']['x-forwarded-proto'] + "://" + event['headers']['host'] + '/ui/' + print(redirect_url) + return{ + "statusCode": 301, + "statusDescription": "301 Found", + "isBase64Encoded": False, + "headers": { + "Location": redirect_url + }, + "body": "" + } +``` + +Now, add this lambda to the Index TargetGroup created earlier. + +#### DNS +Add relevant DNS records in the Route53 hostedzone. + +### Validation +Access the application with default credentials once the DNS record addition is propagated & validate if all sections are loading without errors. diff --git a/versioned_docs/version-26.2-organizations/installation-steps-advanced/JobsConfiguration.md b/versioned_docs/version-26.2-organizations/installation-steps-advanced/JobsConfiguration.md new file mode 100644 index 0000000000..af5c28c418 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/installation-steps-advanced/JobsConfiguration.md @@ -0,0 +1,53 @@ +--- +sidebar_position: 4 +sidebar_label: Jobs configuration +description: Configure ReportPortal jobs for automated data retention and cleanup to keep your system running efficiently and organized. +--- + +# Jobs configuration + +Currently, ReportPortal has 5 configurable jobs for data removing: +* Clean launches +* Clean logs +* Clean attachments info +* Clean attachments binaries +* Project binary storage size recalculation + +Job execution period can be configured using environment variables, where period value should be provided as [**spring cron**](https://www.baeldung.com/cron-syntax-linux-vs-spring) expression: +* `*/30 * * * * *` - every 30 seconds +* `0 */2 * * * *` - every 2 minutes +* `0 0 */24 * * *` - every 24 hours (every day) + +[Job environment variables example for docker](https://github.com/reportportal/reportportal/blob/2b22c61f87674aaf2efc7a973af38004c2517680/docker-compose.yml#L237-L241) + +## Clean launches job + +Clean launches job removes launches, their test items and logs. +Environment variables for configuration with default values: +* `RP_ENVIRONMENT_VARIABLE_CLEAN_LAUNCH_CRON=0 */10 * * * *` - specifies how often job will be started (every 10 minutes) + +## Clean logs job + +Clean logs job removes logs. +Environment variables for configuration with default values: +* `RP_ENVIRONMENT_VARIABLE_CLEAN_LOG_CRON=0 */5 * * * *` - specifies how often job will be started (every 5 minutes) + +## Clean attachments info job + +Clean attachments info job removes attachments data from main **database** storage and puts into **temporary table** to remove binaries from the **file storage** +Environment variables for configuration with default values: +* `RP_ENVIRONMENT_VARIABLE_CLEAN_ATTACHMENT_CRON=0 */2 * * * *` - specifies how often job will be started (every 2 minutes) + +## Clean attachments binaries job + +Clean attachments binaries job uses data from the **temporary table** (filled by previous job) +and removes binaries from the **file storage** +Environment variables for configuration with default values: +* `RP_ENVIRONMENT_VARIABLE_CLEAN_STORAGE_CRON=*/30 * * * * *` - specifies how often job will be started (every 30 seconds) +* `RP_ENVIRONMENT_VARIABLE_CLEAN_STORAGE_CHUNKSIZE=1000` - specifies the size of the batch to be selected from the **temporary table** to be removed + +## Project binary storage size recalculation job + +Project binary storage size recalculation job updates **allocated storage** value of the **project** based on the existing attachments at the moment. +Environment variables for configuration with default values: +* `RP_ENVIRONMENT_VARIABLE_STORAGE_PROJECT_CRON=0 */1 * * * *` - specifies how often job will be started (every minute) diff --git a/versioned_docs/version-26.2-organizations/installation-steps-advanced/MaintainCommandsCheatSheet.md b/versioned_docs/version-26.2-organizations/installation-steps-advanced/MaintainCommandsCheatSheet.md new file mode 100644 index 0000000000..8639524a30 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/installation-steps-advanced/MaintainCommandsCheatSheet.md @@ -0,0 +1,65 @@ +--- +sidebar_position: 8 +sidebar_label: Maintain commands Cheat sheet +description: Quickly manage and troubleshoot your ReportPortal instance with essential Docker commands for installation, backup, cleanup, and service monitoring. +--- + +# Maintain commands Cheat sheet + +**Export as env var:**  + +``` +export RP_PRJ=$(docker ps --filter="name=api" --format="\{{.Names}}" | sed 's/\(.*\)_api_[0-9]*/\1/') +``` + +**Install/restart ReportPortal:**  + +```javascript +docker-compose -p $RP_PRJ up -d --force-recreate +``` + +**Show all logs:**  + +```javascript +docker-compose -p $RP_PRJ logs +``` + +**Show specific logs:**  + +```javascript +docker-compose -p $RP_PRJ logs +``` + +**Delete everything except data:**  + +```javascript +docker-compose -p $RP_PRJ down --rmi -v --remove-orphans +``` + +**Backup / Dump the data:**  + +``` +docker exec pg_dump -U > backup.sql +``` + +**Clean up the data:**  + +``` +docker exec -it psql -U -d +``` + +``` + DROP TABLE schema_migrations; + DROP SCHEMA quartz CASCADE; + DROP SCHEMA public CASCADE; CREATE SCHEMA public; + \q +``` + +**Restore the data:**  + +``` +docker exec -i psql -U -d < backup.sql +``` + + +You can download [PDF file](../installation-steps/resources/CheatSheet.pdf) with commands. diff --git a/versioned_docs/version-26.2-organizations/installation-steps-advanced/MigrateOneInstanceToAnother.md b/versioned_docs/version-26.2-organizations/installation-steps-advanced/MigrateOneInstanceToAnother.md new file mode 100644 index 0000000000..3cc9e7a2c5 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/installation-steps-advanced/MigrateOneInstanceToAnother.md @@ -0,0 +1,41 @@ +--- +sidebar_position: 11 +sidebar_label: Migrate one instance to another +description: Efficiently migrate your ReportPortal instance to AWS by backing up and restoring PostgreSQL, MinIO, and OpenSearch data, ensuring seamless continuity. +--- + +# Migrate one instance to another + +When migrating the ReportPortal to AWS, you'll need to consider the types of storage required to save the data. Here are some storage components that need to be migrated: + +1. PostgreSQL Database Storage (main test data storage). +2. MinIO Storage (test attachments/binaries storage, integrations/plugins storage). +3. OpenSearch (AI indices storage for Auto-Analysis feature). + +Here's a general outline of the steps you should follow for the migration: + +1. **PostgreSQL database backup.**
+ Perform a database backup using the [pg_dump tool](https://www.postgresql.org/docs/current/backup-dump.html#BACKUP-DUMP) or other commands to export the data to a file. +2. **MinIO or binary storage volume backup.**
+ If you have the attachments in the tests and it’s crucial to transfer them to the new instance - you need to migrate MinIO storage to AWS (for example, we recommend using Amazon S3 (Simple Storage Service) for scalable object storage.
+ Perform a backup of the MinIO data directory to ensure that all objects stored in MinIO are included in the backup. Identify the MinIO data directory within your local Docker environment where MinIO stores its objects. In general, it should be the “/data” directory. Transfer the MinIO data directory backup to any appropriate storage solution in the AWS environment. This may involve using Amazon S3 or Amazon EBS. +3. **OpenSearch backup.**
+ It’s needed to save the indices used for AI purposes and the Auto-Analysis feature. However, this step can be omitted in case of successful PostgreSQL backup restoration into the new ReportPortal instance.
+ All you need to do to save your base for the Auto-Analysis feature to keep it working is regenerate index for the project in the Project Settings Tab: + *Project Settings -> Analyzer -> Index Settings -> Actions with index -> Generate index.*
+ Otherwise, backing up OpenSearch may involve using its built-in snapshot and restore functionality to create a backup of the OpenSearch data. +4. **Backup Configuration Files:**
+ a. Identify where the docker-compose and other configuration files are located within the existing ReportPortal environment.
+ b. Make copies of these configuration files for use in the new AWS environment. +5. **Restore PostgreSQL Database.**
+ Once the database is in place, restore the backup into the RDS instance. +6. **Deploy ReportPortal.**
+ It can be a new AWS EC2 instance for Docker installation or AWS Elastic Kubernetes Service. Ensure the configuration files are updated for the new environment as it’s crucial if you have the SAML or other SSO providers. After the deployment, all integrations/plugins may need to be reconfigured to update the links, check the connectivity to the third-party services from the new ReportPortal, etc. +7. **Test the Migration.**
+ Verify that ReportPortal is functioning as expected in the AWS environment. Test all functionalities, including user access and reporting data. +8. **Point DNS.**
+ Once testing is successful, update the DNS records to point to the new location of ReportPortal. + +Please consider referring to the official documentation for PostgreSQL, MinIO, and OpenSearch to make sure that the backup and migration processes are carried out appropriately. + +It's important to note that migrating local ReportPortal to the cloud also involves [infrastructure considerations](/installation-steps/HardwareRequirements), security configurations, and networking setup that need to be in place for a smooth migration. diff --git a/versioned_docs/version-26.2-organizations/installation-steps-advanced/QuickStartWithGCPGKE.md b/versioned_docs/version-26.2-organizations/installation-steps-advanced/QuickStartWithGCPGKE.md new file mode 100644 index 0000000000..f5524ab454 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/installation-steps-advanced/QuickStartWithGCPGKE.md @@ -0,0 +1,374 @@ +--- +sidebar_label: Quick Start Guide for Google Cloud Platform GKE +description: Deploy ReportPortal on Google Cloud Platform GKE for scalable test automation reporting tools with Kubernetes orchestration. +--- + +# Quick Start Guide for Google Cloud Platform GKE + +## Prerequisites + +Before you begin, you need to have a Google Cloud account, a project and install the following +tools: + +- [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) 1.28 or later +- [Helm](https://helm.sh/docs/intro/install/) 3.11 or later +- [google-cloud-cli](https://cloud.google.com/sdk/docs/install-sdk) +- [gke-gcloud-auth-plugin](https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl#install_plugin) + +:::note +For some operation systems we recommend install `google-cloud-sdk` package instead of `google-cloud-cli`. +::: + +## Initialize the gcloud CLI + +[Perform initial setup tasks](https://cloud.google.com/sdk/docs/initializing) and set up your default project: + +```bash +gcloud init +``` + +## Set up Environment Variables + +Set up environment variables: + +```bash +export REPO_LOCATION=us-central1 +export CLUSTER_LOCATION=us-central1-a +export PROJECT_ID={your_project_id} +export CLUSTER_NAME={reportportal_cluster_name} +export REPO_NAME={reportportal_helm_repo_name} +export RELEASE_NAME={reportportal_release_name} +export VERSION={current_chart_version} +export SUPERADMIN_PASSWORD={your_superadmin_password} +``` + +:::note +Here and below we use `us-central1` region as a location for GKE cluster.
+However, you can use any other region. +::: + +## Set up gcloud credential helper + +If you have Docker, you can use the Docker credential helper to authenticate to Artifact Registry. + +Just perform the following commands: + +```bash +gcloud auth login +gcloud auth configure-docker ${REPO_LOCATION}-docker.pkg.dev +``` + +You can find more information about [gcloud credential helper](https://cloud.google.com/artifact-registry/docs/docker/authentication#gcloud-helper). + +## Adjust Google Cloud IAM + +Installation of ReportPortal requires setting up access to your GKE cluster for creating +a service account in GKE and providing permissions for some services to access Kubernetes API. + +For adjusting access, you can do it using [both Identity and Access Management (IAM) +and Kubernetes RBAC](https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control#iam-interaction). + +You can use [Predefined GKE Roles](https://cloud.google.com/kubernetes-engine/docs/how-to/iam#predefined) and update +your account role. To set a service account on nodes, you must also have the Service Account User role (roles/iam.serviceAccountUser). + +:::important +We recommend to create a separate [IAM Service Account](https://cloud.google.com/iam/docs/service-accounts-create) for working with GKE cluster. +::: + +## Create a GKE cluster + +:::important +All GKE clusters are created as public clusters by default. +::: + +You can create [two types](https://cloud.google.com/kubernetes-engine/docs/concepts/types-of-clusters#modes) +of GKE clusters: + +- [Autopilot](https://cloud.google.com/kubernetes-engine/docs/concepts/autopilot-overview) +- [Standard](https://cloud.google.com/kubernetes-engine/docs/concepts/choose-cluster-mode#why-standard) + +:::note +We recommend to use Autopilot mode.
+It is a managed Kubernetes environment that reduces the operational cost. +::: + +### Create a cluster in Autopilot mode + +It's pretty simple to create a cluster in Autopilot mode: + +```bash +gcloud container clusters create-auto ${CLUSTER_NAME} \ + --location=${REPO_LOCATION} +``` + +:::note +You can use the Google Filestore CSI driver for the Autopilot cluster.
+It is enabled by default.
+Minimal storage size for Google Filestore is 1 TB.
+Check the [pricing](https://cloud.google.com/filestore/pricing). +::: + +More information about [creating a cluster in Autopilot mode](https://cloud.google.com/kubernetes-engine/docs/how-to/creating-an-autopilot-cluster). + +### Create a cluster in Standard mode + +For a standard cluster you need to specify a machine type and a number of nodes. + +ReportPortal requires at least 3 nodes with 4 vCPU and 6 GB memory for each in +the Kubernetes with infrastructure dependencies. +We recommend using `custom-4-6144` machine type with 4 vCPU and 6 GB memory +as a minimal configuration. + +If you want avoid using MinIO or Google Cloud Storage, you can use a filesystem storage type +and Google Filestore as a storage class. + +For this, you need to enable the `Google Filestore CSI driver` when creating a cluster: + +```bash +export MACHINE_TYPE=custom-4-6144 + +gcloud container clusters create ${CLUSTER_NAME} \ + --addons=GcpFilestoreCsiDriver \ + --zone=${ZONE} \ + --machine-type=${MACHINE_TYPE} +``` + +or you can enable it after the cluster creation: + +```bash +gcloud container clusters update ${CLUSTER_NAME} \ + --update-addons=GcpFilestoreCsiDriver=ENABLED +``` + +:::note +Minimal storage size for Google Filestore is 1 TB.
+Check the [pricing](https://cloud.google.com/filestore/pricing). +::: + +More information about creating a [cluster in Standard mode](https://cloud.google.com/kubernetes-engine/docs/how-to/creating-a-zonal-cluster#gcloud). + +### Get cluster credentials for kubectl + +```bash +gcloud container clusters get-credentials ${CLUSTER_NAME} \ + --location=${CLUSTER_LOCATION} +``` + +### Verify the cluster mode + +You can verify the cluster: + +```bash +gcloud container clusters describe ${CLUSTER_NAME} \ + --location=${CLUSTER_LOCATION} +``` + +## Prepare Helm package for installation + +At the current moment, you can install ReportPortal on GKE cluster via Helm chart only from +develop branch. + +### Create a repository + +Create a repository in Artifact Registry for ReportPortal Helm charts: + +```bash +gcloud artifacts repositories create ${REPO_NAME} --repository-format=docker \ + --location=${REPO_LOCATION} --description="ReportPortal Helm repository" +``` + +More information about [Store Helm charts in the Artifact Registry](https://cloud.google.com/artifact-registry/docs/helm/store-helm-charts). + +Verify that the repository was created: + +```bash +gcloud artifacts repositories list +``` + +### Authenticate with the repository + +```bash +gcloud auth print-access-token | helm registry login -u oauth2accesstoken \ + --password-stdin https://${REPO_LOCATION}-docker.pkg.dev +``` + +### Build and push Helm chart + +Add GitHub repository on your local machine: + +```bash +git clone https://github.com/reportportal/kubernetes.git +``` + +Build and push the Helm chart to Artifact Registry using actual helm chart version +and your project id: + +```bash +cd kubernetes/reportportal +helm dependency update +helm package . +helm push reportportal-${VERSION}.tgz oci://${REPO_LOCATION}-docker.pkg.dev/${PROJECT_ID}/${REPO_NAME} +``` + +## Install ReportPortal from Artifact Registry + +### Install Helm chart on GKE Autopilot Cluster + +By default, ReportPortal Helm chart install with infrastructure dependencies in GKE Autopilot Cluster: + +- PostgreSQL +- OpenSearch +- RabbitMQ +- MinIO + +You can disable an installation of some components via Helm chart values, but you have to provide +new credentials for your standalone components. + +More information about [Installing the chart with dependencies](https://github.com/reportportal/kubernetes#install-the-chart-with-dependencies). + +For installing ReportPortal on GKE Autopilot Cluster, you need to set the: + +- ingress controller as a `gce` +- superadmin password +- resources requests for api, uat, and analyzer services + +```bash +helm install \ + --set ingress.class="gce" \ + --set uat.superadminInitPasswd.password=${SUPERADMIN_PASSWORD} \ + --set uat.resources.requests.memory="1Gi" \ + --set serviceapi.resources.requests.cpu="1000m" \ + --set serviceapi.resources.requests.memory="2Gi" \ + --set serviceanalyzer.resources.requests.memory="1Gi" \ + ${RELEASE_NAME} \ + oci://${REPO_LOCATION}-docker.pkg.dev/${PROJECT_ID}/${REPO_NAME}/reportportal \ + --version ${VERSION} +``` + +If you want to use Google Filestore instead of MinIO, you need to set +the `storage.type` to `filesystem`, `storage.volume.storageClassName` +to `standard-rwx`, and disable MinIO installation: + +```bash +helm install \ + --set ingress.class="gce" \ + --set uat.superadminInitPasswd.password=${SUPERADMIN_PASSWORD} \ + --set uat.resources.requests.memory="1Gi" \ + --set serviceapi.resources.requests.cpu="1000m" \ + --set serviceapi.resources.requests.memory="2Gi" \ + --set serviceanalyzer.resources.requests.memory="1Gi" \ + --set storage.type="filesystem" \ + --set storage.volume.storageClassName="standard-rwx" \ + --set minio.install=false \ + ${RELEASE_NAME} \ + oci://${REPO_LOCATION}-docker.pkg.dev/${PROJECT_ID}/${REPO_NAME}/reportportal \ + --version ${VERSION} +``` + +:::note +Minimal storage size for Google Filestore is 1 TB.
+Check the [pricing](https://cloud.google.com/filestore/pricing). +::: +> +### Install Helm chart on GKE Standard Cluster + +For installing ReportPortal on GKE Standard Cluster you need to set: + +- ingress controller as a `gce` +- superadmin password + +```bash +helm install \ + --set ingress.class="gce" \ + --set uat.superadminInitPasswd.password=${SUPERADMIN_PASSWORD} \ + ${RELEASE_NAME} \ + oci://${REPO_LOCATION}-docker.pkg.dev/${PROJECT_ID}/${REPO_NAME}/reportportal \ + --version ${VERSION} +``` + +If you want to use Google Filestore instead of MinIO, you need to set +the `storage.type` to `filesystem`, `storage.volume.storageClassName` +to `standard-rwx`, and disable MinIO installation: + +```bash +helm install \ + --set ingress.class="gce" \ + --set uat.superadminInitPasswd.password=${SUPERADMIN_PASSWORD} \ + --set storage.type="filesystem" \ + --set storage.volume.storageClassName="standard-rwx" \ + --set minio.install=false \ + ${RELEASE_NAME} \ + oci://${REPO_LOCATION}-docker.pkg.dev/${PROJECT_ID}/${REPO_NAME}/reportportal \ + --version ${VERSION} +``` + +:::note +Minimal storage size for Google Filestore is 1 TB.
+Check the [pricing](https://cloud.google.com/filestore/pricing). +::: + +## Ingress configuration + +You can add custom gce ingress annotations via `ingress.annotations.gce` parameter: + +```bash +helm install \ +... + --set-json='ingress.annotations.gce={"key1":"value1","key2":"value2"}' +... +``` + +If you have some domain name, set this FQDN to `ingress.hosts`: + +```bash +helm install \ +... + --set ingress.hosts[0].reportportal.k8.com +... +``` + +## Certificate Management + +### Google-managed SSL certificates + +:::note +This is recommended approach for using SSL certificates in GKE. +::: + +You can use Google-managed SSL certificates for your domain name: + +```bash +helm install \ +... + --set ingress.tls.certificate.gcpManaged=true + --set ingress.hosts\[0\]="example.com" +... + +``` + +### Cert-Manager + +You can use [Cert-Manager](https://github.com/reportportal/kubernetes/blob/master/docs/cert-manager-config.md) to manage certificates for your domain name. + +## Clean up + +To delete the cluster: + +```bash +gcloud container clusters delete ${CLUSTER_NAME} --location=${CLUSTER_LOCATION} +``` + +To delete the artifacts repository: + +```bash +gcloud artifacts repositories delete ${CLUSTER_NAME} --location=${REPO_LOCATION} +``` + +### Disable HTTP Load Balancing + +If you want to disable HTTP Load Balancing, you can do it after the certificate +is attached to the Ingress resource: + +```bash +kubectl annotate ingress ${APP_NAME}-gateway-ingress kubernetes.io/ingress.allow-http: "false" +``` diff --git a/versioned_docs/version-26.2-organizations/installation-steps-advanced/ScalingReportPortalServices.md b/versioned_docs/version-26.2-organizations/installation-steps-advanced/ScalingReportPortalServices.md new file mode 100644 index 0000000000..145bf65c24 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/installation-steps-advanced/ScalingReportPortalServices.md @@ -0,0 +1,42 @@ +--- +sidebar_position: 13 +sidebar_label: Scaling ReportPortal services +description: Learn how to dynamically scale ReportPortal services using Docker or Kubernetes, ensuring optimal performance and reliability for your testing infrastructure. +--- + +# Scaling ReportPortal services + +ReportPortal supports dynamic scaling of its API service during runtime to efficiently manage varying loads. This guide provides instructions on how to scale the API service up or down and discusses the implications of asynchronous reporting and queue management in RabbitMQ while scaling. + + ReportPortal also supports the scaling of UAT and UI services. However, it's not recommended to scale the Jobs service due to potential conflicts with cleaning cron jobs, which may lead to database locking issues. + +To effectively scale ReportPortal, you need to follow these steps: + +1. **Additional resources**: Increase capacity by deploying more instances or by enhancing the resources (CPU and memory) of existing ones. +2. **Load Balancing**: The Traefik (for Docker) and Ingress Controller (for Kubernetes) are already set up to automatically distribute incoming requests among all active services. +3. **AMQP settings:** Performance improvements can be achieved by increasing the queue count and adjusting the prefetch count per consumer. These adjustments allow for more efficient processing and resolution of messages within the queues. For more detailed information, refer to the article [Asynchronous Reporting](/developers-guides/AsynchronousReporting/#exchanges-and-queues-for-reporting). + +## Kubernetes Configuration + +1. **Scaling Services**: To scale your [ReportPortal services in Kubernetes](https://github.com/reportportal/kubernetes), you need to increase the replica count parameter in the `values.yaml` file for the required services. For example, to scale the API service, adjust the `replicaCount` as shown below: + + ```yaml + serviceapi: + replicaCount: 2 + ``` + +2. **Load Balancing**: The Ingress Controller is already set up to automatically distribute incoming requests among all active services. However, to enhance control over idle TCP connections adjust the IDLE Timeout value to `300`. + +## Docker Configuration + +1. **Scaling Services**: To scale your [ReportPortal services in Docker](https://github.com/reportportal/reportportal/blob/master/docker-compose.yml), you need to add a replica parameter in the `docker-compose.yml` file for the required services. For example, to scale the API service, adjust the `replicas` as shown below: + + ```yaml + services: + + api: + deploy: + replicas: 2 + ``` + +2. **Load Balancing**: The Traefik is already set up to automatically distribute incoming requests among all active services. diff --git a/versioned_docs/version-26.2-organizations/installation-steps-advanced/SetupTLSHTTPSDockerComposeTraefikV2.md b/versioned_docs/version-26.2-organizations/installation-steps-advanced/SetupTLSHTTPSDockerComposeTraefikV2.md new file mode 100644 index 0000000000..77349399e5 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/installation-steps-advanced/SetupTLSHTTPSDockerComposeTraefikV2.md @@ -0,0 +1,248 @@ +--- +sidebar_position: 10 +sidebar_label: Setup TLS / HTTPS Docker Compose + Traefik v2 +description: Practical guide to setting up TLS/HTTPS in our test results dashboard +--- + +# Setup TLS / HTTPS Docker Compose + Traefik v2 + +This guide documents how to enable HTTPS for a ReportPortal Docker Compose deployment using **Traefik v2** as the reverse proxy. It covers both **self-signed certificates** (for local or internal testing) and **Let’s Encrypt certificates** (for publicly trusted TLS). + +## 1. Supported TLS Scenarios + +| **Certificate Type** | **Environment** | **Public Internet Required** | +| ----------- | ----- | ------------ | +| Self-signed (OpenSSL) | Localhost / Internal VPC | No | +| Let’s Encrypt (HTTP-01) | Public EC2 + Route 53 | Yes | +| Let’s Encrypt (DNS-01) | Private VPC | No | + +:::important +Let’s Encrypt HTTP-01 validation requires **public internet reachability**.
+Deployments in private subnets without an Internet Gateway **must use DNS-01** instead. +::: + +## 2. Test Environment (Reference) + +**AWS Infrastructure (HTTP-01 scenario)** + +| **Component** | **Specification** | +| ----------- |----------------------------------| +| EC2 | t3.medium (2 vCPU, 4 GB RAM) / +| OS | Ubuntu 24.04 / Amazon Linux 2023 | +| Subnet | Public subnet with IGW | +| DNS | Route 53 public hosted zone | +| Domain | tls-docker.example.com | + +Using a public subnet removes ambiguity during troubleshooting. + +**Required Security Group Rules** + +| **Type** | **Port** | **Source** | **Purpose** | +| ----------- | ----- | ------------ | ----- | +| HTTP | 80 | 0.0.0.0/0 | ACME HTTP-01 | +| HTTPS | 443 | 0.0.0.0/0 | HTTPS access | +| TCP | 8081 | Your IP | Traefik dashboard | +| SSH | 22 | Your IP | Management | + +## 3. Scenario 1 — Self-Signed Certificates (OpenSSL) + +### 3.1 Generate Certificates + +``` +mkdir -p certs + +openssl genrsa -out certs/reportportal.key 2048 + +openssl req -new -x509 \ + -key certs/reportportal.key \ + -out certs/reportportal.crt \ + -days 365 \ + -subj "/CN=localhost" \ + -addext "subjectAltName=DNS:localhost,IP:127.0.0.1" +``` + +### 3.2 Traefik File Provider (TLS) + +Create ```certs/tls.yml```: + +``` +tls: +certificates: +- certFile: /certs/reportportal.crt +keyFile: /certs/reportportal.key +``` + +### 3.3 Validation — Self-Signed TLS + +**Verify key matches certificate** + +``` +openssl x509 -noout -modulus -in certs/reportportal.crt | openssl md5 +openssl rsa -noout -modulus -in certs/reportportal.key | openssl md5 +``` + +**Trust validation** + +``` +curl -v --cacert certs/reportportal.crt https://localhost +``` + +**Fingerprint comparison** + +``` +oopenssl x509 -in certs/reportportal.crt -noout -fingerprint -sha256 + +openssl s_client -connect localhost:443 /dev/null \ +| openssl x509 -noout -fingerprint -sha256 +``` + +**Subject and validity** + +``` +openssl s_client -connect localhost:443 /dev/null \ +| openssl x509 -noout -subject -issuer -dates +``` + +## 4. Scenario 2 — Let’s Encrypt (HTTP-01) + +### 4.1 Prerequisites (Mandatory) + +* Domain resolves to a **public IP** +* EC2 subnet has route: + +``` +0.0.0.0/0 → Internet Gateway +``` + +* Ports **80** and **443** reachable from the internet + +### 4.2 Prepare ACME Storage + +``` +touch acme.json +chmod 600 acme.json +``` + +### 4.3 Docker Compose — Traefik Gateway + +``` +services: +gateway: +image: traefik:v2.11.32 +restart: unless-stopped +ports: +- "80:80" +- "443:443" +- "8081:8081" +volumes: +- /var/run/docker.sock:/var/run/docker.sock:ro +- ./acme.json:/acme.json +command: +- --providers.docker=true +- --providers.docker.exposedbydefault=false + + - --entrypoints.web.address=:80 + - --entrypoints.websecure.address=:443 + - --entrypoints.traefik.address=:8081 + + - --entrypoints.web.http.redirections.entrypoint.to=websecure + - --entrypoints.web.http.redirections.entrypoint.scheme=https + + - --certificatesresolvers.letsencrypt.acme.email=admin@example.com + - --certificatesresolvers.letsencrypt.acme.storage=/acme.json + - --certificatesresolvers.letsencrypt.acme.httpchallenge=true + - --certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web + + - --api.dashboard=true + - --api.insecure=true +``` + +### 4.4 Service TLS Labels + +``` +labels: +- "traefik.enable=true" +- "traefik.http.routers.app.rule=Host(`tls-docker.example.com`)" +- "traefik.http.routers.app.entrypoints=websecure" +- "traefik.http.routers.app.tls=true" +- "traefik.http.routers.app.tls.certresolver=letsencrypt" +- "traefik.http.services.app.loadbalancer.server.port=8080" +``` + +## 5. Validation — Let’s Encrypt (HTTP-01) + +**DNS resolution** + +``` +dig +short tls-docker.example.com +dig @8.8.8.8 +short tls-docker.example.com +``` + +**TCP reachability** + +``` +nc -vz tls-docker.example.com 80 +``` + +**HTTP reachability** + +``` +curl -v http://tls-docker.example.com +``` + +**ACME challenge path** + +``` +404 Not Found is expected and correct +``` + +**HTTPS validation** + +``` +curl -v https://tls-docker.example.com +``` + +**Certificate issuer verification** + +``` +echo | openssl s_client \ +-connect tls-docker.example.com:443 \ +-servername tls-docker.example.com \ +2>/dev/null | openssl x509 -noout -issuer -subject -dates +``` + +Expected issuer: + +``` +CN = Let's Encrypt +``` + +## 6. Private Subnets — Important Limitation + +If the domain resolves to a **private IP (RFC1918)** or the subnet routes traffic via **NAT Gateway only**, Let’s Encrypt **HTTP-01 will fail**. + +**Symptoms** + +* DNS resolves internally but not publicly +* ACME challenge never triggered +* Traefik serves default certificate + +**Solution**
+Use **DNS-01 validation** with Route 53. + +## 7. Troubleshooting + +| **Issue** | **Cause** | **Resolution** | +|-----------------|------------------|--| +| ACME never triggers | No public ingress | Use DNS-01 | +| Default Traefik cert | No issued cert | Check ACME logs | +| example.com email error | Invalid ACME email | Use real domain | +| Permission denied acme.json | Wrong file mode | chmod 600 | +| 404 from HTTPS | Host rule mismatch | Verify router rule | + +## 8. Summary + +* Self-signed TLS works for **local and internal environments** +* Let’s Encrypt HTTP-01 works **only with public ingress** +* DNS-01 is required for **private VPC deployments** +* Traefik configuration remains identical; only the ACME method changes diff --git a/versioned_docs/version-26.2-organizations/installation-steps-advanced/UpgradingPostgreSQLForReportPortalV24.2AndLater.md b/versioned_docs/version-26.2-organizations/installation-steps-advanced/UpgradingPostgreSQLForReportPortalV24.2AndLater.md new file mode 100644 index 0000000000..0f5191dd48 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/installation-steps-advanced/UpgradingPostgreSQLForReportPortalV24.2AndLater.md @@ -0,0 +1,69 @@ +--- +sidebar_label: Upgrading PostgreSQL for ReportPortal v24.2 and later +description: Upgrade PostgreSQL database for ReportPortal v24.2 and later versions with data preservation. +--- + +# Upgrading PostgreSQL for ReportPortal v24.2 and later + +:::important +This guide is intended for users planning to upgrade from Postgres 12 to a newer version, starting with ReportPortal version 24.2. +::: + +This guide will walk you through backing up your current PostgreSQL database, removing existing containers and volumes, downloading the latest release, and restoring the PostgreSQL dump. + +## Step 0: Backup Postgres and Storage +Before proceeding, ensure you have a complete Postgres database and Storage backup. + +## Step 1: Create a Dump of Database +Run the following command to create a dump of your current PostgreSQL database: + +```bash +docker exec -t postgres pg_dump -U rpuser -d reportportal > reportportal24_1_postgres12_dump.sql +``` + +## Step 2: Remove All Containers +Shut down and remove all containers: + +```bash +docker compose -p reportportal down +``` + +## Step 3: Remove Postgres Volume +Remove the Postgres volume to ensure a clean state for the new database: + +```bash +docker volume rm reportportal_postgres +``` + +## Step 4: Download Latest Release +Fetch the latest `docker-compose.yml` file to get the most recent version of ReportPortal: + +```bash +curl -LO https://raw.githubusercontent.com/reportportal/reportportal/refs/heads/master/docker-compose.yml +``` + +## Step 5: Run Postgres Container +Start only the Postgres container to prepare for database restoration: + +```bash +docker compose -p reportportal up -d postgres +``` + +## Step 6: Restore Postgres Dump +Restore the database dump into the new Postgres container: + +```bash +docker exec -i -e PGPASSWORD=rppass postgres psql -U rpuser -d reportportal < reportportal24_1_postgres12_dump.sql > upgrade_db.log 2>&1 +``` + +## Step 7: Run ReportPortal +Bring up all the services for ReportPortal: + +```bash +docker compose -p reportportal up -d +``` + +## Final Notes +- Verify that all services are running correctly using `docker ps` or checking the logs. +- Keep the log file `upgrade_db.log` for any potential troubleshooting. +- Regular backups are essential. Make sure to have a reliable strategy in place. diff --git a/versioned_docs/version-26.2-organizations/installation-steps-advanced/_category_.json b/versioned_docs/version-26.2-organizations/installation-steps-advanced/_category_.json new file mode 100644 index 0000000000..b9fd1ed173 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/installation-steps-advanced/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "Installation Steps Advanced", + "position": "5", + "link": {"type": "doc", "id": "index"} +} + diff --git a/versioned_docs/version-26.2-organizations/installation-steps-advanced/file-storage-options/S3CloudStorage.md b/versioned_docs/version-26.2-organizations/installation-steps-advanced/file-storage-options/S3CloudStorage.md new file mode 100644 index 0000000000..1f2465e4a0 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/installation-steps-advanced/file-storage-options/S3CloudStorage.md @@ -0,0 +1,363 @@ +--- +sidebar_position: 1 +sidebar_label: S3 Cloud Storage +description: Configure S3 cloud storage for the ReportPortal Flaky Test Detection tool using AWS, MinIO, or other S3-compatible providers. +--- + +# S3 Cloud Storage + +## Access and Secret Keys authentication + +### Docker-based + +ReportPortal supports cloud storage options through the Java library [JCLOUDS](https://jclouds.apache.org/). + +To configure storage using Amazon S3, ReportPortal uses the following environment variables for the services **API**, **Jobs**, and **Authorization**: + +```bash +RP_FEATURE_FLAGS: singleBucket # Enable single-bucket storage (recommended) +DATASTORE_TYPE: aws-s3 +DATASTORE_REGION: us-standard # Region of the bucket (JCloud ref. to `us-east-1`) +DATASTORE_ACCESSKEY: +DATASTORE_SECRETKEY: +DATASTORE_DEFAULTBUCKETNAME: my-bucket # Name of the bucket +``` + +## IAM Role-based authentication + +### Amazon EKS-based + +- [S3 Bucket](#1-s3-bucket) +- [AWS IAM Role](#2-aws-iam-role) + - [Step 1: Define the Trust Policy](#step-1-define-the-trust-policy) + - [Step 2: Create the IAM Role](#step-2-create-the-iam-role) + - [Step 3: Define the Permissions Policy](#step-3-define-the-permissions-policy) + - [Step 4: Attach the Permissions Policy](#step-4-attach-the-permissions-policy) +- [EKS-based Installation](#3-eks-based-installation) + +#### 1. S3 Bucket + +Create an Amazon S3 bucket to store your data. Replace `my-rp-bucket` with a unique bucket name and specify the desired AWS region. + +```bash +aws s3api create-bucket --bucket my-rp-bucket --region us-east-1 +``` + +> To create a bucket outside of the `us-east-1` region, add the following flag: `--create-bucket-configuration LocationConstraint=`, replacing `` with your desired AWS region. + +Ensure that the bucket name adheres to [Amazon S3 bucket naming rules](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). + +#### 2. AWS IAM Role + +To enable secure access to your S3 bucket, you need to create an AWS IAM role with the appropriate trust and permissions policies. + +##### Step 1: Define the Trust Policy + +The trust policy specifies which AWS service or entity is allowed to assume the role. Save the following JSON content to a file named `trust-policy.json`: + +```json +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Federated": "arn:aws:iam::ACCOUNT_ID:oidc-provider/oidc.eks.REGION.amazonaws.com/id/OIDC_ID" + }, + "Action": "sts:AssumeRoleWithWebIdentity", + "Condition": { + "StringEquals": { + "oidc.eks.REGION.amazonaws.com/id/OIDC_ID:aud": "sts.amazonaws.com", + "oidc.eks.REGION.amazonaws.com/id/OIDC_ID:sub": "system:serviceaccount:NAMESPACE:reportportal" + } + } + } + ] +} +``` + +Replace the placeholders with the appropriate values: +- `ACCOUNT_ID`: Your AWS account ID. +- `REGION`: The AWS region where your EKS cluster is deployed. +- `OIDC_ID`: The unique identifier of your OIDC provider. [How to create an IAM OIDC provider for your cluster](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html) +- `NAMESPACE`: The Kubernetes namespace of the service account. +- `reportportal`: The name of the Kubernetes service account. + +This trust policy ensures that only the specified Kubernetes service account can assume the IAM role via the OIDC provider. + +##### Step 2: Create the IAM Role + +Use the AWS CLI to create the IAM role with the trust policy: + +```bash +aws iam create-role --role-name my-rp-s3-role \ + --assume-role-policy-document file://trust-policy.json +``` + +##### Step 3: Define the Permissions Policy + +The permissions policy specifies the actions the IAM role can perform on the S3 bucket. Save the following JSON content to a file named `s3-rw-policy.json`: + +```json +{ + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "AllowListAndLocation", + "Effect": "Allow", + "Action": [ + "s3:ListBucket", + "s3:GetBucketLocation" + ], + "Resource": "arn:aws:s3:::my-rp-bucket" + }, + { + "Sid": "AllowObjectOpsAnywhere", + "Effect": "Allow", + "Action": [ + "s3:PutObject", + "s3:GetObject", + "s3:DeleteObject", + "s3:GetObjectAcl", + "s3:GetObjectVersion" + ], + "Resource": "arn:aws:s3:::my-rp-bucket/*" + } + ] +} +``` + +##### Step 4: Attach the Permissions Policy + +Attach the permissions policy to the IAM role using the AWS CLI: + +```bash +aws iam put-role-policy --role-name my-rp-s3-role \ + --policy-name S3AccessPolicy \ + --policy-document file://s3-rw-policy.json +``` + +By completing these steps, the IAM role will have the necessary permissions to interact with the specified S3 bucket securely. + +#### 3. EKS-based Installation + +To grant a Kubernetes pod on EKS read/write access to S3, use IAM Roles for Service Accounts (IRSA). This approach issues temporary credentials by having the pod assume an IAM role via OIDC + +Update the `values.yaml` file with the appropriate storage configuration: + +```yaml +# Activate Service Account for the ReportPortal application +global: + serviceAccount: + create: true + name: reportportal + annotations: + eks.amazonaws.com/role-arn: "arn:aws:iam::ACCOUNT_ID:role/my-rp-s3-role" + + +storage: + # Ref.: https://reportportal.io/docs/installation-steps-advanced/file-storage-options/ + type: s3 + # Leave `accesskey` and `secretkey` empty for IAM role-based access + accesskey: + secretkey: + # Specify the AWS region. Ref.: https://jclouds.apache.org/reference/javadoc/2.6.x/org/jclouds/aws/domain/Region.html + region: "us-standard" # JCloud ref. to `us-east-1` + bucket: + type: single + bucketDefaultName: "my-rp-bucket" # Bucket created from step 1 + +# Disable the MinIO dependency +minio: + enable: false +``` + +Install ReportPortal using Helm: + +```bash +helm install my-release \ + --set uat.superadminInitPasswd.password="MyPassword" \ + -f values.yaml \ + reportportal/reportportal +``` + +This configuration ensures that ReportPortal uses Amazon S3 for storage with IAM role-based access, while disabling the default MinIO dependency. + +### EC2 Docker-based + +- [S3 Bucket](#1-s3-bucket) +- [AWS IAM Role](#2-aws-iam-role) + - [Step 1: Define the Trust Policy](#step-1-define-the-trust-policy) + - [Step 2: Create the IAM Role](#step-2-create-the-iam-role) + - [Step 3: Define the Permissions Policy](#step-3-define-the-permissions-policy) + - [Step 4: Attach the Permissions Policy](#step-4-attach-the-permissions-policy) +- [IAM Instance Profile](#3-iam-instance-profile) + - [Step 1: Create an Instance Profile](#step-1-create-an-instance-profile) + - [Step 2: Attach the Role to the Instance Profile](#step-2-attach-the-role-to-the-instance-profile) + - [Step 3: Associate the Profile with the EC2 Instance](#step-3-associate-the-profile-with-the-ec2-instance) + - [Step 4: Enable Instance Metadata Access](#step-4-enable-instance-metadata-access) +- [ReportPortal Configuration](#4-reportportal-configuration) +- [Docker-Based Installation](#5-docker-based-installation) + +#### 1. S3 Bucket + +Create an Amazon S3 bucket to store ReportPortal data: + +```bash +aws s3api create-bucket --bucket my-rp-docker-bucket --region us-east-1 +``` + +> 💡 To create a bucket outside `us-east-1`, add the following option: +> +> ```bash +> --create-bucket-configuration LocationConstraint= +> ``` + +Ensure your bucket name complies with [S3 bucket naming rules](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). + +#### 2. AWS IAM Role + +The IAM role enables the EC2 instance to assume identity and access S3 using instance metadata. + +##### Step 1: Define the Trust Policy + +Save the following to a file named `trust-policy.json`: + +```json +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "sts:AssumeRole" + ], + "Principal": { + "Service": [ + "ec2.amazonaws.com" + ] + } + } + ] +} +``` + +##### Step 2: Create the IAM Role + +Create the role using the trust policy: + +```bash +aws iam create-role --role-name my-ec2-rp-s3-role \ + --assume-role-policy-document file://trust-policy.json +``` + +##### Step 3: Define the Permissions Policy + +Save the following to `s3-rw-policy.json`, replacing `my-rp-docker-bucket` with your bucket name: + +```json +{ + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "AllowListAndLocation", + "Effect": "Allow", + "Action": [ + "s3:ListBucket", + "s3:GetBucketLocation" + ], + "Resource": "arn:aws:s3:::my-rp-docker-bucket" + }, + { + "Sid": "AllowObjectOpsAnywhere", + "Effect": "Allow", + "Action": [ + "s3:PutObject", + "s3:GetObject", + "s3:DeleteObject", + "s3:GetObjectAcl", + "s3:GetObjectVersion" + ], + "Resource": "arn:aws:s3:::my-rp-docker-bucket/*" + } + ] +} +``` + +##### Step 4: Attach the Permissions Policy + +Attach the inline policy to the role: + +```bash +aws iam put-role-policy --role-name my-ec2-rp-s3-role \ + --policy-name S3AccessPolicy \ + --policy-document file://s3-rw-policy.json +``` + +#### 3. IAM Instance Profile + +##### Step 1: Create an Instance Profile + +```bash +aws iam create-instance-profile --instance-profile-name my-ec2-rp-s3-profile +``` + +##### Step 2: Attach the Role to the Instance Profile + +```bash +aws iam add-role-to-instance-profile \ + --instance-profile-name my-ec2-rp-s3-profile \ + --role-name my-ec2-rp-s3-role +``` + +##### Step 3: Associate the Profile with the EC2 Instance + +Replace `INSTANCE_ID` with your EC2 instance ID: + +```bash +aws ec2 associate-iam-instance-profile \ + --region us-east-1 \ + --instance-id \ + --iam-instance-profile Name=my-ec2-rp-s3-profile +``` + +##### Step 4: Enable Instance Metadata Access + +To allow a Docker container to access IMDSv2 metadata, you must increase the instance metadata service (IMDS) hop limit in the EC2 instance configuration: + +```bash +aws ec2 modify-instance-metadata-options \ + --instance-id \ + --http-put-response-hop-limit 2 \ + --http-endpoint enabled \ + --region us-east-1 +``` +Ref.: [Access instance metadata for an EC2 instance (AWS Docs)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html) + +#### 4. ReportPortal Configuration + +In your `docker-compose.yml`, configure ReportPortal to use IAM-based S3 access: + +```yaml +x-environment: &common-environment + # IAM Role-Based S3 Access - Leave credentials empty + DATASTORE_ACCESSKEY: "" + DATASTORE_SECRETKEY: "" + DATASTORE_TYPE: aws-s3 + DATASTORE_REGION: us-standard # JClouds alias for us-east-1 + DATASTORE_DEFAULTBUCKETNAME: my-rp-docker-bucket +``` + +:::note +For full configuration options, see the [ReportPortal S3 integration guide](/installation-steps-advanced/file-storage-options/). +::: + +#### 5. Docker-Based Installation + +Launch ReportPortal with Docker Compose: + +```bash +docker-compose -p reportportal up -d --force-recreate +``` + +This step brings up all ReportPortal services configured to use S3 as the storage backend with IAM role-based credentials via EC2 instance metadata. diff --git a/versioned_docs/version-26.2-organizations/installation-steps-advanced/file-storage-options/_category_.json b/versioned_docs/version-26.2-organizations/installation-steps-advanced/file-storage-options/_category_.json new file mode 100644 index 0000000000..a918bdc88e --- /dev/null +++ b/versioned_docs/version-26.2-organizations/installation-steps-advanced/file-storage-options/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "File Storage Options", + "position": "12", + "link": {"type": "doc", "id": "index"} +} + diff --git a/versioned_docs/version-26.2-organizations/installation-steps-advanced/file-storage-options/index.md b/versioned_docs/version-26.2-organizations/installation-steps-advanced/file-storage-options/index.md new file mode 100644 index 0000000000..f20879246d --- /dev/null +++ b/versioned_docs/version-26.2-organizations/installation-steps-advanced/file-storage-options/index.md @@ -0,0 +1,88 @@ +--- +sidebar_label: File storage options +description: Configure file storage options for ReportPortal including filesystem, MinIO, and cloud storage solutions. +--- + +# File storage options + +ReportPortal supports two types of storage structures: +* Multi-bucket +* Single-bucket + +Additionally, ReportPortal can store data in various locations: + +1. Filesystem (default for Docker) +2. MinIO (default for Kubernetes) +3. Cloud Storage + +## Storage Types + +### 1. Multi-bucket (default) + +Each project has its own bucket. This is the default option; however, it is not recommended for environments using Cloud Object Storage such as Amazon S3. It has a list structure. + +```bash +integration-secrets # Authorization bucket +prj-1 # Project buckets +prj-2 +rp-bucket # Plugins bucket +user-data # Users bucket +``` + +### 2. Single-bucket + +All projects share the same bucket. This is the recommended option for environments using Cloud Object Storage such as Amazon S3. It has a tree-like structure. + +```bash +rp-bucket # Main bucket + ├── integration-secrets # Authorization sub-directory + ├── plugins # Plugins sub-directory + ├── project-data # Projects sub-directory + │ ├── 1 + │ └── 2 + └── user-data # Users sub-directory +``` + +:::important +Migration from Multi-bucket to Single-bucket is required. Please refer to the [Complex Migration Guide](https://github.com/reportportal/migrations-complex/tree/develop/charts) for more information. A fresh start from Single-bucket is recommended. +::: + +To configure the storage to Single-bucket, ReportPortal uses the following environment variables for the services **API**, **Jobs**, and **Authorization**: + +```bash +RP_FEATURE_FLAGS: singleBucket # Enable single-bucket storage +DATASTORE_DEFAULTBUCKETNAME: my-bucket # Name of the bucket +``` + +## Filesystem + +The local filesystem is the default storage option for the Docker-based ReportPortal solution. It is simple to configure and use but is not recommended for production environments because it is not scalable and does not provide shareability between multiple instances or nodes. + +To configure filesystem storage, ReportPortal uses the following environment variables for the services **API**, **Jobs**, and **Authorization**: + +```bash +DATASTORE_TYPE: filesystem +``` + +Additionally, you can specify the path to the storage directory: + +```bash +DATASTORE_PATH: /data/storage +``` + +## MinIO + +MinIO is an open-source object storage server that is compatible with Amazon S3. It is designed for cloud-native workloads and optimized for high performance and scalability. + +To configure storage using MinIO, ReportPortal uses the following environment variables for the services **API**, **Jobs**, and **Authorization**: + +```bash +DATASTORE_TYPE: s3-compatible +DATASTORE_ACCESSKEY: +DATASTORE_SECRETKEY: +DATASTORE_ENDPOINT: http://minio:9000 +``` + +## Cloud Storage + +To set up Amazon S3 Cloud Storage with IAM user (secret keys) or IAM role, follow our [Advanced S3 Integration Guide](/installation-steps-advanced/file-storage-options/S3CloudStorage). diff --git a/versioned_docs/version-26.2-organizations/installation-steps-advanced/index.md b/versioned_docs/version-26.2-organizations/installation-steps-advanced/index.md new file mode 100644 index 0000000000..03e23bd025 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/installation-steps-advanced/index.md @@ -0,0 +1,18 @@ +--- +title: Installation Steps Advanced +description: Explore advanced installation capabilities to optimize your test automation dashboard. +--- + +# Installation Steps Advanced + +The **Installation Steps Advanced** section is invaluable for those looking to go beyond basic installation, providing the knowledge and tools needed to maintain a stable, efficient, and high-performing environment for test management and reporting. + +In addition to system requirements, this section highlights the importance of performing regular maintenance. Keeping your instance updated with the latest patches and fixes will ensure you can avoid potential security vulnerabilities and performance issues. **The monitoring setup is equally important**, as it allows you to track the health and performance of your ReportPortal instance in real time. By setting up monitoring, you can quickly identify and resolve any issues that may arise, such as resource exhaustion or unexpected downtime. + +Installation Steps Advanced section offers valuable **insights into optimizing system configurations** to better handle large-scale projects or complex testing environments. It provides clear, actionable advice on managing tasks, safeguarding data, and scaling services to meet the growing demands of your project. Whether you're concerned with security, storage, or cloud integration, these advanced steps will guide you through the process of creating a more robust and adaptable ReportPortal instance. + +This section also covers other advanced configurations that help you maintain the efficiency and reliability of your test reporting environment. By following these advanced installation steps, you ensure that your ReportPortal instance is optimized for long-term success and can continue to support your growing test automation needs. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.2-organizations/installation-steps/DeployOnUbuntuOS.md b/versioned_docs/version-26.2-organizations/installation-steps/DeployOnUbuntuOS.md new file mode 100644 index 0000000000..eca411eab5 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/installation-steps/DeployOnUbuntuOS.md @@ -0,0 +1,114 @@ +--- +sidebar_position: 15 +sidebar_label: Deploy on Ubuntu OS +description: Deploy ReportPortal on Ubuntu with Docker and Docker Compose. Follow step-by-step instructions to launch your test reporting environment efficiently. +--- + +# Deploy on Ubuntu OS + +***Provided by @Tset Noitamotuahe. The article might be outdated. +Do not hesitate to contribute and send us a pull request with updates. We appreciate your help!*** + +Follow below steps if you like to have ReportPortal running on Ubuntu Zesty (17.04) with the latest Docker-CE version 17.05 and Docker-Compose 1.14 + +1. Enable apt transport over HTTPS +```shell + sudo apt-get install \ + apt-transport-https \ + ca-certificates \ + curl \ + software-properties-common +``` + +2. Get apt-key for Docker repo +```shell + curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - +``` + +3. Add Docker's repo to sources.list +```shell + sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu zesty edge" +``` +> ToDo: 3. check if there is a stable version of Docker-CE for Zesty +> ```shell +> sudo add-apt-repository \ +> "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ +> $(lsb_release -cs) \ +> stable" +> ``` + +4. Install Docker-CE +```shell + sudo apt update + sudo apt install docker-ce +``` + +PROXY SETTINGS for Docker (you'll probably need this @work) +```shell + mkdir -p /etc/systemd/system/docker.service.d + sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf +``` +http-proxy.conf content +```txt + [Service] + Environment="HTTP_PROXY=http://proxyhost:port/" "NO_PROXY=localhost,127.0.0.1" + # ALTERNATIV - if you are behind HTTPS proxy instead of just HTTP: + # https-proxy.conf + # Environment="HTTPS_PROXY=http://proxyhost:port/" +``` + +5. Restart Docker +```shell + sudo systemctl daemon-reload + sudo systemctl restart docker + # TEST: systemctl show --property=Environment docker + # >>> Environment=HTTP_PROXY=http://proxyhost:port/ +``` + +6. Check that Docker is installed correctly +```shell + sudo docker run hello-world + # hello-world images will be download and run + # your will see output e.g. "Hello from Docker! ... " +``` + +7. DOCKER-COMPOSE installation from PIP v3.x (Python PIP 2.7 is deprecated 01/01/2020) +```shell + sudo apt install python3-pip + sudo pip3 install docker-compose +``` +Also you can use the [official installation guide](https://docs.docker.com/compose/install/) + +8. REPORTPORTAL INSTALLATION +```shell + mkdir reportportal + cd reportportal + # get the docker-compose file + wget https://raw.githubusercontent.com/reportportal/reportportal/master/docker-compose.yml + docker-compose up +``` +This will take some time cause several images will be downloaded ... go grab a coffee :) +After download is completed and containers started open another terminal and run +`docker ps` to check that all containers from previous step are up and running. + +9. Check that ReportPortal is running +In the VM opten browser to `0.0.0.0:8080` --> ReportPortal login page will open. + +:::note +If you are behind a proxy you need to add `0.0.0.0` to the `NO_PROXY` (no_proxy) ENV.
+After setting the port forwarding like explained in video PART 2 (link below) open browser on your host machine to `localhost:8080` or `127.0.0.1:8080` --> ReportPortal loginpage will open +::: +OPTIONAL + +If you don't like to write 'sudo' before each docker-command do this but be aware of possible security issue with that! +```shell + sudo groupadd docker + sudo usermod -aG docker $USER +``` +**>>> RESTART VM!** + +Helpful links (video tutorial) + +> [Part 1](https://raw.githubusercontent.com/reportportal/reportportal/master/docker-compose.yml) + +> [Part 2](https://raw.githubusercontent.com/reportportal/reportportal/master/docker-compose.yml) diff --git a/versioned_docs/version-26.2-organizations/installation-steps/DeployViaGoogleCloudMarketplace.mdx b/versioned_docs/version-26.2-organizations/installation-steps/DeployViaGoogleCloudMarketplace.mdx new file mode 100644 index 0000000000..1c3ae30217 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/installation-steps/DeployViaGoogleCloudMarketplace.mdx @@ -0,0 +1,167 @@ +--- +sidebar_position: 6 +sidebar_label: Deploy via Google Cloud Marketplace +description: Deploy ReportPortal quickly via Google Cloud Marketplace with one-click installation for scalable test automation reporting tools. +--- + +# Deploy via Google Cloud Marketplace + +Starting from December 2023, the ReportPortal application is available in the Google Cloud Marketplace. Now, users can literally deploy our test reporting tool in just a few clicks. + +Any engineer, even those not well-versed in DevOps, can go to the Google Cloud Marketplace, select the required resource size, and install a ReportPortal instance. This not only streamlines the procurement process, but also eliminates the need to wait for a contract to be finalized before beginning to work with ReportPortal. + +Next, you will find a step-by-step guide on deploying ReportPortal via the Google Cloud Marketplace. + +**Prerequisites** + +A [Cloud Billing account](https://cloud.google.com/billing/docs/how-to/create-billing-account) needs to be created beforehand. + +## Installation + +### Get started + +1. [Open ReportPortal](https://console.cloud.google.com/marketplace/product/epam-mp-rp/reportportal?project=epam-mp-rp&pli=1) +in Google Cloud Marketplace. + + + +2. Click ‘Get started’ button. + + + +### Initial setup of billing and API (optional) + +:::important +These steps are executed once, provided that this is not configured. +::: + +1. Select a project and accept terms and agreements. + + + +2. Enable billing and set the billing account. + +:::note +You will see this screen if you have not enabled billing or set up the billing account before. +::: + + + + + +After that, accept terms and agreements again. + +3. Click ‘Deploy’ button. + + + +4. Enable API. + +:::note +You will see this screen if you have not enabled API before. +::: + + + +### Configure deployment + +Fill necessary fields and create cluster. By default, a cluster with three nodes is created, but once the application is installed, +the number of nodes reduces to 1. Subsequently, depending on the project's needs, the number of nodes can be increased to 5. + +There is also an option to specify the domain name to which ReportPortal will be linked. You have the ability to enable support for +an auto-generated certificate that will be linked to this domain. Subsequently, a certificate valid in all browsers will be issued. + +:::note +While enabling the 'Enable GCP Managed Certificate' option, it is mandatory to specify the hostname. +::: + + + +### Deploy + + + + + +### Post-installation with hostname + +After the deployment is completed, you will be directed to a page with application information. + + + +1. Next, if you have specified a hostname, you will need to navigate to your domain hosting control panel and create a record +for your hostname with the provided `IP address`. For instance, here is how you can do it in AWS Route 53: + + + +2. [Ensure](https://console.cloud.google.com/net-services/loadbalancing/advanced/sslCertificates/list) that your auto-generated certificate has the status Active.
+ + + +:::note +The process of transferring the certificate from `Provisioning` to `Active` status can take up to 30 minutes. +::: + +3. Follow your hostname in a browser. + + + +4. On the opened Sign In page, enter 'superadmin' as the login. + +5. Enter initial password. + + + +Let's get your ReportPortal instance up! + +### Post-installation without hostname + +After the deployment is completed, if you did not specify a hostname, you will be directed to a page with application information. + +1. Click the `IP address` link. + + + +But after clicking the `IP address` link, the user receives a browser warning that the connection is not private. In reality, there is no risk because you are accessing your server, launched via an IP address. + +So why does a warning pop up? During deployment, Google Marketplace creates a Self-signed temporary certificate, which is used for data encryption. However, during the deployment process, ReportPortal is not tied to any domain, and this certificate is also not tied to any domain. Therefore, when following the link, the user receives a browser warning because the browser considers this certificate invalid as it cannot verify it. + +2. For the Chrome browser, click on 'Advanced' -> then click on 'Proceed to XXXXX (unsafe)' link. + + + + + +3. On the opened Sign In page, enter 'superadmin' as the login. + +4. Enter initial password. + + + + + +:::note +It may take Google Kubernetes Engine a few minutes before the application becomes accessible via the link. +::: + +Let's get your ReportPortal instance up! + +## Clean Up + +After you have installed ReportPortal, further interactions with the application are conducted in the Google Kubernetes Engine service. + +If you need to delete the application, this can be accomplished either from the Applications page. + + + +Upon deleting the application, all associated resources, such as Workloads, Secrets & ConfigMaps, and Ingress will be deleted, except for the application‘s persistent volumes. + +:::note +The deletion process can take a few minutes. Workloads, and Secrets&ConfigMaps tied to the cluster will remain. +::: + +If you wish to eliminate all costs, you will also need to delete the cluster, as certain resources reserved for our needs will continue to be billed. + +Multiple applications can run within a cluster. However, if the cluster is no longer needed, it should also be deleted as illustrated in the image below. + + diff --git a/versioned_docs/version-26.2-organizations/installation-steps/DeployWithDocker.md b/versioned_docs/version-26.2-organizations/installation-steps/DeployWithDocker.md new file mode 100644 index 0000000000..a4ac4129ec --- /dev/null +++ b/versioned_docs/version-26.2-organizations/installation-steps/DeployWithDocker.md @@ -0,0 +1,110 @@ +--- +sidebar_position: 3 +sidebar_label: Deploy with Docker +description: Make your test automation reporting more portable. Reduce the risk of configuration issues with your test reporting tool using Docker. +--- + +# Deploy with Docker + +## Installation Guide for ReportPortal + +This concise, step-by-step guide will help you deploy ReportPortal using Docker Compose (version ≥2.2). It covers prerequisites, configuration, deployment, and verification to ensure anyone can set up the application quickly. + +### Prerequisites + +1. **Operating System** + + * **Linux** (Ubuntu 20.04+ or equivalent). + * **macOS** (Apple Silicon and Intel-based supported). + * **Windows** (64-bit Windows 11 Pro or higher) + +2. **Docker & Docker Compose**. [Install the latest Docker Engine](https://docs.docker.com/engine/install/) and Docker Compose plugin + +3. **System Resources** + + * At least 2 CPU cores + * Minimum 6GB RAM allocated to Docker + * Swap or storage: ≥20GB free space for Docker images and data + +:::note +For production, deploy on a Linux-based server or cloud instance. Adjust resource limits according to expected load. +[See advanced deployment recommendations](/installation-steps/HardwareRequirements). +::: + +### Step 1: Prepare the Environment + +1. **Verify Docker & Compose Installation** + + ```bash + docker --version + docker compose version + ``` + +2. **Adjust Docker Resources (Desktop Users)** + + * Open Docker Desktop settings. + * Allocate at least 2 CPUs and 6GB RAM under **Resources**. + +### Step 2: Obtain the Docker Compose File + +1. **Download the Official `docker-compose.yml`** + + ```bash + curl -LO https://raw.githubusercontent.com/reportportal/reportportal/master/docker-compose.yml + ``` + +2. **Review and Customize Environment Variables** + + * Open `docker-compose.yml` in your editor. + * Locate the `RP_INITIAL_ADMIN_PASSWORD` variable under the `uat-service` (or equivalent) section. + + ```yaml + services: + uat: + environment: + RP_INITIAL_ADMIN_PASSWORD: "ChangeMe123" + ``` + * Replace `ChangeMe123` with a secure password of your choice. + * (Optional) Adjust other variables such as database credentials or ports if needed. + +### Step 3: Deploy ReportPortal + +1. **Launch Containers** + + ```bash + docker compose -p reportportal up -d --force-recreate + ``` + + * `-p reportportal`: Prefixes container names with `reportportal_`. + * `up -d`: Creates and starts services in detached mode. + * `--force-recreate`: Ensures containers are recreated, applying any changes. + +2. **Monitor Startup Logs** + + * View combined logs: + + ```bash + docker compose logs -f + ``` + + * View logs for a specific container: + + ```bash + docker logs reportportal_uat + ``` + +3. **Cleanup** + + * To stop and remove all ReportPortal containers: + + ```bash + docker compose down --volumes --remove-orphans + ``` + +## Tips and Best Practices + +* **Use External Volumes**: Mount host volumes for data persistence (`/var/lib/reportportal`). +* **Secure Secrets**: Store sensitive environment variables (e.g., DB passwords) in a `.env` file and reference them in `docker-compose.yml`. +* **Use Docker Networks**: Isolate ReportPortal on its own network for enhanced security. +* **Scale Services**: For high availability, consider using [Kubernetes](https://github.com/reportportal/kubernetes) with multiple replicas. +* **Backups**: Schedule periodic backups of the PostgreSQL database and Storage. [How to backup ReportPortal guide](/installation-steps-advanced/BackupRestoreGuide/) diff --git a/versioned_docs/version-26.2-organizations/installation-steps/DeployWithKubernetes.md b/versioned_docs/version-26.2-organizations/installation-steps/DeployWithKubernetes.md new file mode 100644 index 0000000000..17f25386af --- /dev/null +++ b/versioned_docs/version-26.2-organizations/installation-steps/DeployWithKubernetes.md @@ -0,0 +1,103 @@ +--- +sidebar_position: 5 +sidebar_label: Deploy with Kubernetes +description: Deploy ReportPortal on Kubernetes using Helm to streamline test reporting and analysis with scalable, containerized infrastructure. +--- + +# Deploy with Kubernetes + +## Prerequisites + +:::note +The minimal requirements for a ReportPortal 1-node solution are 2 CPUs and 6Gi of memory. +::: +* Kubernetes v1.26+ +* Helm Package Manager v3.4+ + +## Installing the Helm Chart + +Add the official ReportPortal Helm Chart repository: + +```bash +helm repo add reportportal https://reportportal.io/kubernetes && helm repo update reportportal +``` + +Install the chart: + +```bash +helm install my-release --set uat.superadminInitPasswd.password="MyPassword" reportportal/reportportal +``` +:::note +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. +::: +## Uninstalling the Helm Chart + +```bash +helm uninstall my-release +``` + +## Configuration + +### Install the chart with dependencies + +ReportPortal relies on several essential dependencies, without which it cannot function properly. It is feasible to substitute these dependencies with available On-Premise or Cloud alternatives. + +The following table lists the configurable parameters of the chart and their default values + +|Parameter|Description|Default| +|-|-|-| +|`postgresql.install`|Allow PostgreSQL Bitnami Helm Chart to be installed as a dependency|`true`| +|`rabbitmq.install`|Allow RabbitmQ Helm Bitnami Chart to be installed as a dependency|`true`| +|`opensearch.install`|Allow Open Search Helm Chart to be installed as a dependency|`true`| +|`minio.install`|Allow MinIO Helm Chart to be installed as a dependency|`true`| + +These dependencies are integrated into the distribution by default. To deactivate them, specify each parameter using the --set key=value[,key=value] argument to helm install. For example: + +```bash +helm install my-release \ + --set postgresql.install=false \ + --set database.endpoint=my-postgresql.host.local \ + --set database.port=5432 \ + --set database.user=my-user \ + --set database.password=my-password \ + reportportal/reportportal +``` +:::note +If you disable install dependencies, you must provide new values (e.g., host, port, username, etc) for your predeployed dependencies. +::: +All configuration variables are presented in the [value.yaml](https://github.com/reportportal/kubernetes/blob/master/reportportal/values.yaml) file. + +### Install from sources + +For fetching chart dependencies, use the command: + +```bash +helm dependency build . +``` + +> This command fetches all the dependencies [required](https://github.com/reportportal/kubernetes/blob/master/reportportal/Chart.yaml) by the chart. + +To install the chart directly from local sources, use: + + +```bash +helm install my-release --set uat.superadminInitPasswd.password="MyPassword" ./reportportal +``` + +### Install specific version + +To search for available versions of a chart, use: + +```bash +helm search repo reportportal --versions +``` + +To install a specific version of a chart, use: + +```bash +helm install my-release \ + --set uat.superadminInitPasswd.password="MyPassword" \ + reportportal/reportportal \ + --version 23.2 +``` + diff --git a/versioned_docs/version-26.2-organizations/installation-steps/DeployWithMinikube.md b/versioned_docs/version-26.2-organizations/installation-steps/DeployWithMinikube.md new file mode 100644 index 0000000000..33236f6eaa --- /dev/null +++ b/versioned_docs/version-26.2-organizations/installation-steps/DeployWithMinikube.md @@ -0,0 +1,109 @@ +--- +sidebar_position: 7 +sidebar_label: Deploy with Minikube +description: Deploy ReportPortal on Minikube for local Kubernetes testing and development. +--- + +## Prerequisites + +- [Minikube](https://kubernetes.io/docs/tasks/tools/install-minikube/) +- [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) +- [Helm](https://helm.sh/docs/intro/install/) + +## Installation + +### Overview + +In this guide, we will install ReportPortal on Minikube using Helm with +ReportPortal's services and the following dependencies: + +- PostgreSQL +- OpenSearch +- RabbitMQ + +Instead of Minio, we will use a Persistent Volume as a filesystem storage. + +### Start Minikube + +```bash +minikube start --cpus 4 --memory 8192 --addons ingress +``` + +### Set up hostnames + +Add the following line to your `/etc/hosts` file: + +```bash +echo "$(minikube ip) minikube.local" | sudo tee -a /etc/hosts +``` + +### Install ReportPortal + +#### Install from Helm repo + +```bash +helm repo add reportportal https://reportportal.io/kubernetes && helm repo update reportportal +``` + +```bash +export SUPERADMIN_PASSWORD=superadmin + +helm install reportportal \ + reportportal/reportportal \ + --set uat.superadminInitPasswd.password=${SUPERADMIN_PASSWORD} \ + --set storage.type=filesystem \ + --set minio.install=false +``` + +If you want to use Minio as a storage: + +```bash +export SUPERADMIN_PASSWORD=superadmin + +helm install reportportal \ + reportportal/reportportal \ + --set uat.superadminInitPasswd.password=${SUPERADMIN_PASSWORD} +``` + +#### Install from GitHub repo + +Call the following commands from the downloaded +[kubernetes](https://github.com/reportportal/kubernetes/) repository. + +```bash +# Download the chart dependencies +helm dependency build ./reportportal +``` + +```bash +# Install ReportPortal from ./reportportal/Chart.yaml +export SUPERADMIN_PASSWORD=superadmin + +helm install reportportal \ + ./reportportal \ + --set uat.superadminInitPasswd.password=${SUPERADMIN_PASSWORD} \ + --set storage.type=filesystem \ + --set minio.install=false +``` + +If you want to use Minio as a storage: + +```bash +helm install reportportal \ + ./reportportal \ + --set uat.superadminInitPasswd.password=${SUPERADMIN_PASSWORD} +``` + +### Access ReportPortal + +Open your browser and navigate to [http://reportportal.local](http://minikube.local). + +## Clean up + +```bash +helm uninstall reportportal +``` + +```bash +minikube stop && minikube delete +``` diff --git a/versioned_docs/version-26.2-organizations/installation-steps/DeployWithoutDocker.md b/versioned_docs/version-26.2-organizations/installation-steps/DeployWithoutDocker.md new file mode 100644 index 0000000000..dfa2e80ab7 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/installation-steps/DeployWithoutDocker.md @@ -0,0 +1,40 @@ +--- +sidebar_position: 4 +sidebar_label: Deploy without Docker +description: Deploy ReportPortal without Docker for traditional server installations and custom test automation reporting tools configurations. +--- + +# Deploy without Docker + +***The instruction designed for the version 5.3.5 and might be outdated for the latest versions. +Do not hesitate to contribute and send us a pull request with updates. We appreciate your help!*** + +In order to get started with ReportPortal on Red Hat Family and Ubuntu Linux distributions non-Docker/Kubernetes usage, please use the following links + +### 1. [[Outdated] ReportPortal 5.3.5](https://github.com/reportportal/linux-installation) +[ReportPortal 5.3.5 installation guide](https://github.com/reportportal/linux-installation) + +#### Supported OS + +Ubuntu LTS `18.04`, `20.04` / Red Hat family `6`, `7`, `8` (RHEL, CentOS, etc) + +#### Required service +* PSQL `12.6` +* RabbitMQ `3.8.14` +* ElasticSearch `7.12` +* Traefik `1.7.29` + +In addition, these services are compatible with earlier versions. + +### 2. [[Outdated] ReportPortal 5.0.0](https://github.com/reportportal/shell-installation) +[ReportPortal 5.0.0 installation guide](https://github.com/reportportal/shell-installation) + +#### Supported OS + +Ubuntu LTS `16.04`, `18.04` / Red Hat family `6`, `7` (RHEL, CentOS, etc) + +#### Required service +* PSQL `11` +* RabbitMQ `3.6.10` +* ElasticSearch `6.7.0"` +* Traefik `1.7.19` diff --git a/versioned_docs/version-26.2-organizations/installation-steps/HardwareRequirements.mdx b/versioned_docs/version-26.2-organizations/installation-steps/HardwareRequirements.mdx new file mode 100644 index 0000000000..daf86a3492 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/installation-steps/HardwareRequirements.mdx @@ -0,0 +1,260 @@ +--- +sidebar_position: 1 +sidebar_label: Hardware Requirements +description: Boost performance with expert-backed configuration tips for your test automation dashboard. +--- + +# Hardware Requirements + +Find below the recommended hardware configuration to set up ReportPortal and have good performance using our centralized test automation tool. + +## 1. Disk I/O + + To speed up PostgreSQL database performance, on instance strongly recommended use **SSD disk** hardware. + +## 2. CPU utilization + + Consider choosing the **CPU optimized** instances to reduce high CPU utilization of the ReportPortal service-API and speed up ReportPortal overall. + + For example: + + * **Azure**: Fsv2-series instances, + * **AWS**: c5 instances. + + The instance capacity(4 CPUs/8Gb RAM or 8 CPUs/16Gb RAM etc.) should be selected regarding average reporting test-cases/day and average CPU/RAM utilization. If the CPU/RAM utilization of the ReportPortal instance up to 100% a long time daily, consider scale up the VM x2. + +**System hardware requirements** + + Simple Docker installation from the box: + +| Server type | CPU's | RAM size, Gb | Disk space, Gb | Disk type | AWS Shape | +| ----------- | ----- | ------------ | -------------- | ------------- | --------- | +| Small | 4 | 8 | 300 | gp2 | c5.xlarge | +| Middle | 8 | 16 | 500 | gp2 | c5.2xlarge | +| Middle+ | 16 | 32 | 1000 | gp2 | c5.4xlarge | +| Large | 32 | 64 | 2000 | gp2 | c5a.8xlarge | +
+ + Kubernetes: + +| Server | EKS Nodes (Count) | EKS Nodes (Instance Type) | EKS Nodes (Disk Size GB) | EKS Nodes (Disk Type) | Amazon RDS (Instance Type) | Amazon RDS (Disk Size GB) | Amazon RDS (Disk Type) | Additional Volumes (RabbitMQ) | S3 Binary storage | Monthly Cost | Yearly Cost | +| ----------- | ----------- | ------------ | ------------- | ------------- | --------- | --------- | --------- | --------- | --------- | --------- | --------- | +| Small | 3 | m5.large | 50 | gp2 | db.m6g.large | 300 | gp3 | 50 | 200 | $544.48 | $6,533.76 | +| Middle | 3 | c5.xlarge | 50 | gp2 | db.m6g.xlarge | 500 | gp3 | 50 | 300 | $892.04 | $10,704.48 | +| Middle+ | 3 | c5.xlarge | 50 | gp2 | db.m6g.2xlarge | 1000 | gp3 | 50 | 500 | $1,241.38 | $14,896.56 | +| Large | 3 | c5.2xlarge | 50 | gp2 | db.m6g.4xlarge | 2500 | gp3 | 50 | 1000 | $2,497.28 | $29,967.36 | +
+ +:::note + +The approximate server's cost is relevant for the current cost of infrastructure on AWS. The estimated server cost is the current cost of the AWS infrastructure. When changing any cost of resources, costs need to be recalculated.

+These costs are calculated for the Frankfurt eu-central-1 region, including $73.00 for the EKS cluster and $29.71 for Elastic Load Balancing (Application). The costs for EBS volumes related to OpenSearch are not included, as the amount can vary for small and large instances, and we support both single-node and multi-node OpenSearch setups. Additionally, the costs do not cover the VPC or other network infrastructure components. +::: + +## 3. Which scale I need? Configuration testing results and saturation points + +**What does Saturation and vUser means? How to transform it into test cases?** + +**RPS** means _Requests Per Second_. Any request to server to upload, create, read the data. In ReportPortal terms it can be request to create Launch (execution), Test Suite, Test case, log line. Read data or update data. + +**Saturation** (in RPS) can be assumed as maximum capacity of your configuration (app deployed on specifics instance type) which can procced requests without significant response time degradation. Let's say `upper limit` + +**vUser** means _Virtual user_ which describes regular model of behaviour of user (API client) which interacts with your system. Under vUser we assume test framework integration which will generate: + +◾️ 3 Launches with + +◾️◾️ 3 suites inside, with + +◾️◾️◾️ 3 test classes inside, with + +◾️◾️◾️◾️ 3 test cases inside, with + +◾️◾️◾️◾️◾️ 5 steps inside, with + +◾️◾️◾️◾️◾️◾️ 10 logs inside for each step. + +Which practically will generate: +- `10 * 5 * 3 * 3 * 3 * 3 = (4050)` `createLog` requests. +- `5 * 3 * 3 * 3 * 3 = (405)` `startStep` requests and equal amount of `finishStep` requests. Total 810 +- `3 * 3 * 3 * 3 = (81)` `startTest` requests and equal amount of `finishTest` requests (inclluding all precondition methods, as `@After` and `@Before` in Java). Total 162 +- `3 * 3 * 3 = (27)` `startTestClass` requests and equal amount of `finishTestClass` requests. Total 54 +- `3 * 3 = (9)` `startSuite` requests and equal amount of `finishSuite` requests. Total 18 +- `3 = (3)` `startLaunch` requests and equal amount of `finishLaunch` requests. Total 6 + +Default configuration of integration sends logs in batches (`rp.batch.size.logs = 20`) which combines 20 requests at once into 1 batch request for `createLog`. And minimize count of `createLog` requests from 4050 to 203. +In grand total such a structure creates 3 Launches with 243 test case inside and produces 1253 requests. + +Now we can divide their number by the duration in seconds, and get the RPS result. if it runs for 6 minutes (2 minutes each lunch), then: 60s * 6 = 360 and 1253 / 360 ~=4.5 requests per second. + +If launches will be executed in parallel, 3 at the time, then RPS will be equal to 4.5*3 = 13.5 rps. + +
+ +**Summary** + +Having information regarding number of test cases in your framework, average number of logs, number of parallel threads and durations, you can calculate system capacity according to the tables below. + +
+ +**Configuration testing results** + +The purpose of the configuration performance testing is to determine saturation points and overall system capacity for different instance sizes and specifications. Testing was conducted on the С5 instances which are optimized for compute-intensive workloads and deliver cost-effective high performance at a low price per compute ratio(Compute Optimized Instances) with Up to 3.4GHz, and single core turbo frequency of up to 3.5 GHz 2nd generation Intel Xeon Scalable Processors (Cascade Lake) or 1st generation Intel Xeon Platinum 8000 series (Skylake-SP) processor with a sustained all core Turbo frequency. + +**Application and Database are deployed on separate VMs** + +| **Instance Type** | **Saturation point, rps** | **vUsers count** | **Disk IOPS** | **Java Options** | +| ----------------- | ------------------------- | ---------------- | ------------- | ---------------- | +| с5.xlarge | 640 | 60 | up to 3000 | \-Xmx1g | +| c5.2xlarge | 1374 | 115 | up to 4000 | \-Xmx2g | +| c5.4xlarge | 3104 | 356 | up to 8000 | \-Xmx3g | +| с5.9xlarge | 5700 | 489 | up to 10000 | \-Xmx4g | + +**Application and Database are deployed on single VM** + +| **Instance Type** | **Saturation point, rps** | **vUsers count** | **Disk IOPS** | **Java Options** | +| ----------------- | ------------------------- | ---------------- | ------------- | ---------------- | +| с5.xlarge | 521 | 50 | up to 3000 | \-Xmx1g | +| c5.2xlarge | 1078 | 83 | up to 4000 | \-Xmx2g | +| c5.4xlarge | 2940 | 305 | up to 8000 | \-Xmx3g | +| с5.9xlarge | 5227 | 440 | up to 10000 | \-Xmx4g | + +## 4. The database separately from other services + +Consider deploying the database separately from other RP services. It allows increasing throughput of the server and performance of the ReportPortal overall. This can be, for example, AWS RDS PostgreSQL Database or a separate VM only for the PostgreSQL database. + +The separate database instance should be the same by CPU's and RAM, but started from middle+ server type, the database instance may need to have doubled CPU's and RAM size in comparison with the application instance. +This is explained by the fact that with an increase in the size of the database and the number of concurrent users, the load is distributed more on the database server: increased volume of resources(CPU, memory, IOPS number, etc.) required to performing each DB query since it handles / can handle more data volume and/or can handle of a greater number of concurrent users. + +Example for the middle+ server: + +| Instance type | CPU's | RAM size, Gb | Disk space, Gb | AWS Shape | +| ------------- | ----- | ------------ | -------------- | --------- | +| Application instance | 16 | 32 | 200 | c5.4xlarge | +| Database instance | 16 | 32 | 1000 | c5.4xlarge | + +## 5. PostgreSQL Performance Tuning + + Since PostgreSQL Database is used, it needs some set of special configs for the best performance. These set contains two categories: + + * general and universal for any capacity of the instance hardware: + + ```yaml + effective_io_concurrency=200 + random_page_cost=0.1 + seq_page_cost=1 + min_wal_size=1GB + max_wal_size=4GB + wal_buffers=16MB + default_statistics_target=100 + synchronous_commit=off + wal_writer_delay=10ms + checkpoint_completion_target=0.9 + ``` + + * based on CPU/RAM size at the instance(example for 4 CPUs/8GB RAM; the database is deployed on the separate VM): + + ```yaml + shared_buffers=2GB + effective_cache_size=6GB + maintenance_work_mem=512MB + work_mem=96MB + max_worker_processes=4 + max_parallel_workers_per_gather=2 + max_parallel_workers=4 + max_parallel_maintenance_workers=2 + ``` + + Recommendations regarding **PostgreSQL server tuning** for the instance with 8 CPUs/16GB RAM(where all RP services are deployed): + + ```yaml + shared_buffers=4GB + effective_cache_size=8GB + wal_buffers=16MB + default_statistics_target=100 + effective_io_concurrency=200 + work_mem=96MB + min_wal_size=1GB + synchronous_commit=off + wal_writer_delay=10ms + maintenance_work_mem=1GB + seq_page_cost=1 + checkpoint_completion_target=0.9 + random_page_cost=0.1 + max_wal_size=4GB + max_worker_processes=8 + max_parallel_workers_per_gather=4 + max_parallel_workers=8 + max_parallel_maintenance_workers=4 + ``` + + If the PostgreSQL database and services are deployed on the separate VM’s, the "effective_cache_size" parameter should be changed to "12GB"(total RAM size - shared_buffers size). + +
+ **Simple ways to set these parameters:** + + CPU’s count related: + + ```yaml + max_worker_processes = + max_parallel_workers_per_gather = + max_parallel_workers = + max_parallel_maintenance_workers = + ``` + + RAM size related: + ```yaml + shared_buffers = + effective_cache_size = + maintenance_work_mem = < if total RAM size > 16 Gb – 2Gb; under 16Gb – 1Gb and less> + ``` + + For the **docker-compose:** add the following lines to the *command* section by the “-c” option to *“postgres”* service. + + **Example:** + + ```yaml + postgres: + image: postgres:12-alpine + shm_size: '512m' + ... + command: + -c effective_io_concurrency=200 + -c random_page_cost=0.1 + -c seq_page_cost=1 + ... + # Some another configs + ``` + + For the **AWS RDS:** create new parameter group(*Services -> RDS -> Parameter groups -> Create parameter group*), search config by the name and set up the following values, then apply created parameter group to the RDS DB. + + The following parameters can be scaled and depends on CPU’s number and RAM size of the instance. For example, for the instance 16 CPUs/32GB RAM(the database is deployed on the separate VM) this parameters should be: + + ```yaml + shared_buffers = '8GB' + effective_cache_size = '24GB' + max_worker_processes = '16' + max_parallel_workers = '16' + ``` + +## 6. Application connections pool tuning + +By default, ReportPortal has 27 connections on service-api and 27 connections in pool on service-authorization. +In general these values are valid for the small and middle servers. But from the middle+ server type, the connection pool may be increased if it's not enough for your server load. + +It can be detected as periodic freezes and the "Loading" message when opening any page, and/or slowing down the work with RP after a certain period of time during active reporting and use with UI. Restarts of API and UAT services can also be observed. + +To increasing the connection pool on both services, need to add next environment variables to the service-api and to the service-authorization: + +```yaml +RP_DATASOURCE_MAXIMUMPOOLSIZE=100 +``` + +After increasing the connection pool from the application side, do not forget increase the max_connections from the Database side, using following DB configuration paramether: + +```yaml +max_connections=500 +``` + +*The values of these parameters are given for example only, but in general, can be valid for all types of loads for servers middle+ and large.* + +Please note, that the max_connections paramether must be more than the sum of the RP_DATASOURCE_MAXIMUMPOOLSIZE for the API and the UAT services + several connections for connecting to the database from outside. diff --git a/versioned_docs/version-26.2-organizations/installation-steps/_category_.json b/versioned_docs/version-26.2-organizations/installation-steps/_category_.json new file mode 100644 index 0000000000..2d13e50cbb --- /dev/null +++ b/versioned_docs/version-26.2-organizations/installation-steps/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "Installation Steps", + "position": "4", + "link": {"type": "doc", "id": "index"} +} + diff --git a/versioned_docs/version-26.2-organizations/installation-steps/img/DockerConfigMacosNew.png b/versioned_docs/version-26.2-organizations/installation-steps/img/DockerConfigMacosNew.png new file mode 100644 index 0000000000..9c9eb8b306 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/installation-steps/img/DockerConfigMacosNew.png differ diff --git a/versioned_docs/version-26.2-organizations/installation-steps/img/DockerConfigWin.png b/versioned_docs/version-26.2-organizations/installation-steps/img/DockerConfigWin.png new file mode 100644 index 0000000000..670139a240 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/installation-steps/img/DockerConfigWin.png differ diff --git a/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/CleanUp1.png b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/CleanUp1.png new file mode 100644 index 0000000000..ed9bda8bbc Binary files /dev/null and b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/CleanUp1.png differ diff --git a/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/CleanUp2.png b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/CleanUp2.png new file mode 100644 index 0000000000..d7e1ac3931 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/CleanUp2.png differ diff --git a/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace1.png b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace1.png new file mode 100644 index 0000000000..38508e9b8d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace1.png differ diff --git a/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace10.png b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace10.png new file mode 100644 index 0000000000..798944f32a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace10.png differ diff --git a/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace11.png b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace11.png new file mode 100644 index 0000000000..b68cafe788 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace11.png differ diff --git a/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace12.png b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace12.png new file mode 100644 index 0000000000..2d2a87aa63 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace12.png differ diff --git a/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace13.png b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace13.png new file mode 100644 index 0000000000..0dbce46f85 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace13.png differ diff --git a/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace14.png b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace14.png new file mode 100644 index 0000000000..57dadd5058 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace14.png differ diff --git a/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace15.png b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace15.png new file mode 100644 index 0000000000..047bd92ef8 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace15.png differ diff --git a/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace16.png b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace16.png new file mode 100644 index 0000000000..d367b1b806 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace16.png differ diff --git a/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace17.png b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace17.png new file mode 100644 index 0000000000..e938e9e442 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace17.png differ diff --git a/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace18.png b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace18.png new file mode 100644 index 0000000000..dc75d11a65 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace18.png differ diff --git a/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace2.png b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace2.png new file mode 100644 index 0000000000..a0341f4eed Binary files /dev/null and b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace2.png differ diff --git a/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace3.png b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace3.png new file mode 100644 index 0000000000..7813c93d82 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace3.png differ diff --git a/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace4.png b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace4.png new file mode 100644 index 0000000000..0ebeef74e8 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace4.png differ diff --git a/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace5.png b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace5.png new file mode 100644 index 0000000000..9992535589 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace5.png differ diff --git a/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace6.png b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace6.png new file mode 100644 index 0000000000..768a773baf Binary files /dev/null and b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace6.png differ diff --git a/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace7.png b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace7.png new file mode 100644 index 0000000000..702e49e369 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace7.png differ diff --git a/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace8.png b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace8.png new file mode 100644 index 0000000000..2b61d390f0 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace8.png differ diff --git a/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace9.png b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace9.png new file mode 100644 index 0000000000..accdd099c4 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/GCPmarketplace9.png differ diff --git a/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/password1.png b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/password1.png new file mode 100644 index 0000000000..8546fdfc15 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/password1.png differ diff --git a/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/password2.png b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/password2.png new file mode 100644 index 0000000000..42129527d6 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/installation-steps/img/google-cloud-marketplace/password2.png differ diff --git a/versioned_docs/version-26.2-organizations/installation-steps/index.md b/versioned_docs/version-26.2-organizations/installation-steps/index.md new file mode 100644 index 0000000000..6f74c450c6 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/installation-steps/index.md @@ -0,0 +1,20 @@ +--- +title: Installation Steps +description: Explore step-by-step instructions for deploying ReportPortal, a powerful, centralized test automation tool. +--- + +# Installation Steps + +The **Installation Steps** section provides a detailed guide on how to install ReportPortal, ensuring a smooth and efficient setup process for using our powerful test results reporting service. Whether you are new to ReportPortal or setting up a new instance, following these steps will help you get the platform up and running without any issues. + +Before proceeding with the installation, it is important to select a hardware configuration that meets the needs of your specific use case. To ensure optimal performance, your hardware should have sufficient processing power, memory, and storage. Insufficient hardware capacity is one of the main causes of performance issues or slow operation, so it’s critical to plan accordingly. + +ReportPortal offers **several installation methods** to accommodate different environments and requirements. **The primary methods** include installation via Docker, Kubernetes. Each method is adapted to different levels of expertise and infrastructure setups, giving you flexibility based on your team’s technical requirements. + +This section outlines the installation process for each method step-by-step, providing clear instructions to help you through the configuration. If you need assistance with installation, you can take advantage of our [professional services](https://reportportal.io/pricing/on-premises/). + +By following the instructions in this section, you can ensure a successful and efficient deployment of ReportPortal, allowing you to begin automating your test reporting with ease. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.2-organizations/installation-steps/resources/CheatSheet.pdf b/versioned_docs/version-26.2-organizations/installation-steps/resources/CheatSheet.pdf new file mode 100644 index 0000000000..90097f8548 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/installation-steps/resources/CheatSheet.pdf differ diff --git a/versioned_docs/version-26.2-organizations/intro.md b/versioned_docs/version-26.2-organizations/intro.md new file mode 100644 index 0000000000..fbde7561c8 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/intro.md @@ -0,0 +1,77 @@ +--- +title: What is ReportPortal? +sidebar_position: 1 +slug: / +description: "Get started with ReportPortal: real-time results, ML triage, and collaborative analysis to speed decisions and improve quality with a clear test report dashboard." +--- + +# What is ReportPortal? + +ReportPortal is a TestOps service, that provides increased capabilities to speed up results analysis and reporting through the use of built-in analytic features. + +ReportPortal is a great addition to Continuous Integration and Continuous +Testing process. + +ReportPortal is distributed under the Apache v2.0 license, and it is free to use and modify, even for commercial purposes. We offer a paid premium feature – [SCIM Server feature](/features/SCIMServerFeature). + +If a company is interested in our services, we can provide support hours to deploy, integrate, configure, or customize the tool, as well as [SaaS options](https://reportportal.io/pricing/saas). + +To explore our capabilities, you can try [ReportPortal demo](https://demo.reportportal.io/). + +## What ReportPortal can do? + +- ***Mainstream platforms integration*** + +ReportPortal seamlessly integrates with mainstream platforms such as Jenkins, Jira, BDD process, majority of Functional and Unit testing frameworks. + +- ***Real-time results*** + +Real-time integration provides businesses the ability to manage and track execution status directly from the ReportPortal. + +- ***Test case execution results structure*** + +Test case execution results are stored following the same structure you have in your reporting suites and test plan. The test cases are shown together with all related data in one place, right where you need it: logs, screenshots, binary data. The execution pipeline of certain test cases are also available for you, so one can see previous test execution report in one click. + +- ***Collaborative analysis*** + +Our test report dashboard also gives you the ability to collaboratively analyze the test automation results and quickly get automation test report. Particular test cases can be associated with a product bug, an automation issue, a system issue or can be submitted as an issue ticket directly from the execution result. + +- ***Historical data of test execution*** + +ReportPortal provides enhanced capabilities along with auto-results analysis by + leveraging historical data of test execution. + +- ***Automatic Analysis*** + +With each execution, ReportPortal automatically figures out the root cause of a fail. As a result of AI-based defects triage, ReportPortal is marking a test result with a flag. Engineers will be alerted about this issue to provide further analysis: if it has been resolved already or which test results require actual human analysis. + +## What technologies are used? + +Considering a high load rate and performance requirements, we use +cutting edge technologies such as: + +- PostgreSQL - The World's Most Advanced Open Source Relational Database. + +- REST Web Service - lightweight requests, industry standard. + +- Mobile responsive UI - check it at any mobile device with the default browser. + +## Benefits of report automation with ReportPortal + +Report automation is the procedure by which reports are routinely and automatically refreshed. + +- ***Speedy decision-making*** + +Report automation is an effective technique to provide information that is essential to business operations. Delivering crucial information to the appropriate people at the appropriate time becomes considerably quicker and simpler by automatically generated reports. It allows to get business faster insights and drive better decisions. + +- ***Accurate data*** + +In ReportPortal, you have fully real-time analytic report automation. Since the reports are automatically generated, you are insured against human error when reports are generated manually. + +- ***Advanced reporting*** + +ReportPortal offers widgets with a user-friendly visual interface to create interactive reports for all your needs. For example, you can build qa metrics dashboard using [Overall statistics](/dashboards-and-widgets/OverallStatistics), [Unique bugs table](/dashboards-and-widgets/UniqueBugsTable), [Passing rate summary](/dashboards-and-widgets/PassingRateSummary) widgets. + +- ***Easily running CI/CD tests*** + +ReportPortal is CI/CD agnostic tool solution. You can use [any CI environment](/log-data-in-reportportal/HowToRunYourTests) to run automated tests to improve quality of product by catching issues early in development lifecycle. diff --git a/versioned_docs/version-26.2-organizations/issues-troubleshooting/EmailNotificationIssues.md b/versioned_docs/version-26.2-organizations/issues-troubleshooting/EmailNotificationIssues.md new file mode 100644 index 0000000000..e16b2a6996 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/issues-troubleshooting/EmailNotificationIssues.md @@ -0,0 +1,25 @@ +--- +sidebar_label: Email Notification Issues +description: Troubleshoot email notification issues in ReportPortal QA metric dashboard with ThreadPool and SMTP configuration solutions. +--- + +# Email Notification Issues + +In case of observing issues with email notifications when email service stopped processing messages, RP administrators should be aware of some kinds of known issue types: + +1. ThreadPoolTaskExecutor capacity is too small for handling large number of queued users to be notified. + +**Solution:**
+Update environment variable rp_environment_variable_executor_pool_user-email_queue with bigger value (default: 1000). + +2. The number of ThreadPoolTaskExecutor active threads is bigger than the number of simultaneous connections allowed by SMTP server (e.g., 10 maximum connections for gmail). That makes email server consider such heavy load as DDoS attack and refuse to establish new connections. + +**Solution:**
+Decrease number of active threads by updating environment variable rp_environment_variable_executor_pool_user-email_max (default: 10) + +In order to update environment variables, you should edit your docker-compose.yml file.
+[Job environment variables example for docker](https://github.com/reportportal/reportportal/blob/2b22c61f87674aaf2efc7a973af38004c2517680/docker-compose.yml#L201) + +:::note +In addition, there are daily limits on sending emails from one account. Different email servers have their own restrictions (e.g. 2000 max messages for gmail). +::: diff --git a/versioned_docs/version-26.2-organizations/issues-troubleshooting/HowToAddATestStackTraceToADescriptionAutomatically.mdx b/versioned_docs/version-26.2-organizations/issues-troubleshooting/HowToAddATestStackTraceToADescriptionAutomatically.mdx new file mode 100644 index 0000000000..cd62c0307b --- /dev/null +++ b/versioned_docs/version-26.2-organizations/issues-troubleshooting/HowToAddATestStackTraceToADescriptionAutomatically.mdx @@ -0,0 +1,77 @@ +--- +sidebar_position: 4 +sidebar_label: How to add a test stack trace to a description automatically +description: Automatically add test stack traces to descriptions for faster test failure analysis in ReportPortal. +--- + +# How to add a test stack trace to a description automatically + +You can make your process of a test analysis more convenient and quick by adding a description for failed tests that will include a last error message from the test log. + +You will not need to open an every single test to see the failure reason. With this new functionality you will see test failures reasons right in a table on All launches (step level), so that you can perform group actions to items. + +**How to activate this option:** + +Change your listener to wrap log messages on error level with special text: + +```error + +``` + + + +We have prepared an example how to extend a TestNG agent, and you can find it below: + +**An extend agent service:** +```java + public static class ParamTaggingTestNgService extends TestNGService { + + public ParamTaggingTestNgService(ListenerParameters parameters, ReportPortalClient reportPortalClient) { + super(parameters, reportPortalClient); + } + + @Override + protected StartTestItemRQ buildStartStepRq(ITestResult testResult) { + final StartTestItemRQ rq = super.buildStartStepRq(testResult); + if (testResult.getParameters() != null && testResult.getParameters().length != 0) { + final Set tags = Optional.fromNullable(rq.getTags()).or(new HashSet<>()); + for (Object param : testResult.getParameters()) { + tags.add(param.toString()); + } + rq.setTags(tags); + + } + return rq; + } + + @Override + protected FinishTestItemRQ buildFinishTestMethodRq(String status, ITestResult testResult) { + FinishTestItemRQ finishTestItemRQ = super.buildFinishTestMethodRq(status, testResult); + if (testResult.getThrowable() != null) { + String description = + "```error\n" + + Throwables.getStackTraceAsString(testResult.getThrowable()) + + "\n```"; + description = description + Throwables.getStackTraceAsString(testResult.getThrowable()); + finishTestItemRQ.setDescription(description); + } + return finishTestItemRQ; + } + } +``` + +**An extend listener with your extended service:** +```java + public static class ExtendedListener extends BaseTestNGListener { + public ExtendedListener() { + super(override(new TestNGAgentModule()).with((Module) binder -> binder.bind(ITestNGService.class) + .toProvider(new TestNGProvider() { + @Override + protected TestNGService createTestNgService(ListenerParameters listenerParameters, + ReportPortalClient reportPortalClient) { + return new ParamTaggingTestNgService(listenerParameters, reportPortalClient); + } + }))); + } + } +``` diff --git a/versioned_docs/version-26.2-organizations/issues-troubleshooting/HowToAvoidLocalExecutionReportedIntoProjectSpace.md b/versioned_docs/version-26.2-organizations/issues-troubleshooting/HowToAvoidLocalExecutionReportedIntoProjectSpace.md new file mode 100644 index 0000000000..1fb35be40e --- /dev/null +++ b/versioned_docs/version-26.2-organizations/issues-troubleshooting/HowToAvoidLocalExecutionReportedIntoProjectSpace.md @@ -0,0 +1,56 @@ +--- +sidebar_position: 3 +sidebar_label: How to avoid local execution reported into project space +description: Learn how to prevent local test executions from appearing in your ReportPortal project space by configuring launch attributes and user roles effectively. +--- + +# How to avoid local execution reported into project space + +**Option 1:** + +Use a specific attribute for launches, which should represent the state. + +Create filters using those attributes. Build widgets and dashboards, based on those attributes. + +You can add those additional attributes via the CI command line. + +So, only Jenkins will generate launches with those attributes. + +**Option 2:** + +Put `rp.mode=debug` in all `reportportal.properties` files. + +For Jenkins executions, overload this param via the command line as `rp.mode=default`, + +so that all local launches will be in debug, all Jenkins – in launches. + +**Option 3:** + +Combine _option #2_ and _option #3_, in the launch name. + +`rp.launch=xxx` saved in all `reportportal.properties` files. + +For Jenkins executions, overload this param via the command line as `rp.launch=yyy` + +The auto-analysis will use only `yyy` launches for review. + +Use filter, based on your `yyy` name for widgets. + +**Option 4:** + +The same like _option 2_, but with `rp.enable=false|true` + +This will turn off reporting for local launches + +**Option 5:** + +Set all users on the project with the Role `Operator`. This role can’t report data into RP. + +Create an internal user for Jenkins executions, set him/her as a PROJECT MANAGER role. + +This will make it possible to create launches only for Jenkins users + +:::note +It is also possible to combine all those options at the same time. +::: + diff --git a/versioned_docs/version-26.2-organizations/issues-troubleshooting/HowToCheckLDAPConnection.md b/versioned_docs/version-26.2-organizations/issues-troubleshooting/HowToCheckLDAPConnection.md new file mode 100644 index 0000000000..154716a99b --- /dev/null +++ b/versioned_docs/version-26.2-organizations/issues-troubleshooting/HowToCheckLDAPConnection.md @@ -0,0 +1,45 @@ +--- +sidebar_position: 7 +sidebar_label: How to check LDAP connection +description: Learn how to check LDAP connection for ReportPortal authentication troubleshooting. +--- + +# How to check LDAP connection + +Firstly, check the availability of your LDAP server from the server when ReportPortal is installed. For example, use the command ldapsearch. + +```bash +ldapsearch -x -h -p -D "" -w "" -b "" "uid=user1" +``` + +Output will be: +``` +# extended LDIF +# +# LDAPv3 +# base with scope subtree +# filter: uid=user1 +# requesting: ALL +# + +# user1, people, rp.com +dn: cn=tester,ou=people,dc=rp,dc=com +objectClass: inetOrgPerson +cn: user1 +sn: user1 +uid: user1 +userPassword:: PASSWORD +mail: user1@rp.com +description: user1 for experiments + +# search result +search: 2 +result: 0 Success + +# numResponses: 2 +# numEntries: 1 +``` + +**Hints** + +If you are using docker you can also use the internal container IP `docker inspect -f '\{{range .NetworkSettings.Networks}}\{{.IPAddress}}\{{end}}' ` diff --git a/versioned_docs/version-26.2-organizations/issues-troubleshooting/HowToCleanUpTheReportPortalDatabaseUsingPGRepack.md b/versioned_docs/version-26.2-organizations/issues-troubleshooting/HowToCleanUpTheReportPortalDatabaseUsingPGRepack.md new file mode 100644 index 0000000000..b9a53bb02d --- /dev/null +++ b/versioned_docs/version-26.2-organizations/issues-troubleshooting/HowToCleanUpTheReportPortalDatabaseUsingPGRepack.md @@ -0,0 +1,127 @@ +--- +sidebar_position: 8 +sidebar_label: How to clean up the ReportPortal database using PG_REPACK +description: Optimize ReportPortal performance by removing database bloat using PG_REPACK - an online, efficient method that minimizes downtime and system impact. +--- + +# How to clean up the ReportPortal database using PG_REPACK + +## Description + +[pg_repack](https://reorg.github.io/pg_repack/) is a PostgreSQL extension that lets you remove bloat from tables and indexes, and optionally restore the physical order of clustered indexes. Unlike CLUSTER and VACUUM FULL it works online, without holding an exclusive lock on the processed tables during processing. pg_repack is efficient to boot, with performance comparable to using CLUSTER directly. + +## Performance + +|Initial Database Size|Final Database Size|Repack duration|Duration| +|---------------------|-------------------|---------------|--------| +|1500 Gb |251 Gb |1200 Gb |7 hours | + +Overall pg_repack performance has been tested during load tests running and without. The database load during pg_repack is pretty good by capacity and instance   +High DB RAM Utilization faced at the pr_repack starting, but then the overall RAM Usage becomes normal. During reporting(load tests running) faced small response times and throughput degradation around 10 minutes, but then they became a regular performance. Also, no KO requests during reporting and pg_repack run in parallel, so that all Staging pg_repack configuration can be safely porting to Production. + +### Detailed DB Resource Utilization Stats + +|Resources |Used | +|------------------|---------------| +|CPU utilization |13 % | +|CPU IOwait |7% | +|Disk IO Read/Write|1800/30000 IOPS| + +## PG_REPACK installation + +To install PG_REPACK use the guide from the official [GitHub page](https://reorg.github.io/pg_repack/). If you use Amazon RDS follow the [link](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.html#Appendix.PostgreSQL.CommonDBATasks.pg_repack) + +## PG_REPACK usage + +* Attach to Screen session: + +```bash +screen +``` + +For more information about the Screen read this [guide](https://linux.die.net/man/1/screen). + +* You need to add the path to the PG_REPACK executable file. The PATH variable is an environment variable that contains an ordered list of paths that Unix will search for executables when running a command. Run the following command: + +```bash +export PATH=$PATH:/usr/pgsql-12/bin/ +``` + +* Create **.pgpass** file and fill your data. The file **.pgpass** the file referenced by PGPASSFILE contain passwords to be used if the connection requires a password. [Documentation](https://www.postgresql.org/docs/9.3/libpq-pgpass.html). + +```bash +cat << EOF | tee -a /.pgpass +:::: +EOF +``` + +For example, **.pgpass** file should look like this: + +```bash +reportportal-cdufjldqrau0.eu-west-3.rds.amazonaws.com:5432:reportportal:rpuser:strongpassword +``` + +* Change permissions to .pgpasss file: + +```bash +chmod 600 /.pgpass +``` + +* Set PGPASSFILE environment variable: + +```bash +export PGPASSFILE='/.pgpass' +``` + +* Fill your data and run PG_REPACK: + +```bash +pg_repack -h -U -k &>> /pg_repack-rpdb.log +``` + +No password is needed for the database because you are using **.pgpass**. + +When you run the command, you will get artifact pg_repack-rpdb.log, where PG_REPACK will storage the logs. The pg_repack-rpdb.log file is stored in your root directory `/`. + +* To detach from the Screen session type **Control+a+d** (on OSX and Linux). The result will be similar to: + +```bash +[detached from 22556.pts-0.ip-10-68-38-165] +``` + +22556 is ID of you screen session. You will get a different ID. Save it. + +* Attach to the Screen session: + +```bash +screen -r +``` + +If you have one Screen session, you will join it. If you have two or more of them, you will get the following result: + +```bash +There are several suitable screens on: + 22556.pts-0.ip-10-68-38-165 (Detached) + 8175.pts-0.ip-10-68-38-165 (Detached) +Type "screen [-d] -r [pid.]tty.host" to resume one of them. +``` + +To join the PG_REPACK Screen session fill your Screen ID that you saved in step 4 and run the following command: + +```bash +screen -r +``` + +* To view the process of running the command you can read pg_repack-rpdb.log with command: + +```bash +cat /pg_repack-rpdb.log +``` + +In addition, you can stream log with the command: + +```bash +tail -F /pg_repack-rpdb.log +``` + +Type Control+c (on OSX and Linux) to exit from Tail diff --git a/versioned_docs/version-26.2-organizations/issues-troubleshooting/HowToCleanUpTheReportPortalDatabaseUsingVacuumFull.md b/versioned_docs/version-26.2-organizations/issues-troubleshooting/HowToCleanUpTheReportPortalDatabaseUsingVacuumFull.md new file mode 100644 index 0000000000..966dc219b8 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/issues-troubleshooting/HowToCleanUpTheReportPortalDatabaseUsingVacuumFull.md @@ -0,0 +1,126 @@ +--- +sidebar_position: 9 +sidebar_label: How to clean up the ReportPortal database using VACUUM FULL +description: Learn how to clean up ReportPortal database using VACUUM FULL for optimal performance. +--- + +# How to clean up the ReportPortal database using VACUUM FULL + +## General information + +`VACUUM` reclaims storage occupied by dead tuples. In normal PostgreSQL operation, tuples that are deleted or obsoleted by an update are not physically removed from their table; they remain present until a `VACUUM` is done. Therefore it's necessary to do `VACUUM` periodically, especially on frequently-updated tables. +`VACUUM ANALYZE` performs a `VACUUM` and then an `ANALYZE` for each selected table. This is a handy combination form for routine maintenance scripts. See [PostgreSQL documentation](https://www.postgresql.org/docs/12/sql-vacuum.html) for more details about those operations. +Plain `VACUUM` (**without FULL**) simply reclaims space and makes it available for re-use. This form of the command can operate in parallel with normal reading and writing of the table, as an exclusive lock is not obtained. However, extra space is not returned to the operating system (in most cases); it's just kept available for re-use within the same table. +`VACUUM FULL` rewrites the entire contents of the table into a new disk file with no extra space, allowing unused space to be returned to the operating system. This form is much slower and requires an exclusive lock on each table while it is being processed. + +The main goals for performing `VACUUM FULL` at the ReportPoral database: +- improve DB queries performance by removing dead tuples and updating statistics; +- reclaim storage space occupied by dead tuples; +- prevent bloating tables. + +## Parameters + +| Parameter | Description | +| ----------- | ----- | +| FULL | Selects "full" vacuum, which can reclaim more space, but takes much longer and exclusively locks the table. This method also requires extra disk space, since it writes a new copy of the table and doesn't release the old copy until the operation is complete. Usually this should only be used when a significant amount of space needs to be reclaimed from within the table. | +| FREEZE | Selects aggressive "freezing" of tuples. Specifying FREEZE is equivalent to performing VACUUM with the vacuum_freeze_min_age and vacuum_freeze_table_age parameters set to zero. Aggressive freezing is always performed when the table is rewritten, so this option is redundant when FULL is specified. | +| VERBOSE | Prints a detailed vacuum activity report for each table. | +| ANALYZE | Updates statistics used by the planner to determine the most efficient way to execute a query. | + +⚠️ **Important notes** + +1. Assuming that `VACUUM FULL` required exclusive locks on the tables and required high time-consuming on the large databases, the suggestions are: + + - conduct testing of the `VACUUM FULL` execution at Staging/Dev/Non-Prod environment; + - schedule the particular downtime for the Production database and shut down the application services except for the database. + +2. Сheck that the database disk has free space equal to or greater than the size of the largest table(with its indexes) in the database. + +The main suggestion is to perform `VACUUM FULL` operation periodically not for the whole database, but only for the particular tables defined below, which helps increase overall SQL queries performance. `VACUUM FULL` frequency for the databases more than 1Tb with high reporting amount - at least once per 3 months. + +Tables list and it's operations duration on our database(AWS RDS PostgreSQL Database spec: db.m5.4xlarge 16CPUs, 64Gb RAM):
+ +| Table |Rows count| VACUUM Operation | Duration| +|-|-|-|-| +|log|614 372 224|FULL|14h 30m| +|log|614 372 224|ANALYZE|1h 30m| +|test_item|207 311 552|FULL|1h 50m| +|test_item|207 311 552|ANALYZE|21m| +|statistics|299 341 024|FULL|10m| +|statistics|299 341 024|ANALYZE|3m 49s| +|test_item_results|450 264 992|FULL|9m| +|test_item_results|450 264 992|ANALYZE|4m 12s| + +## VACUUM FULL execution + +**Preconditions:** +Apply next configuration to PostgreSQL Parameter Group(database restart not needed after applying): + +```yaml +maintenance_work_mem=8000000 +max_parallel_maintenance_workers=16 +``` + +* Configuration examples are defined for the database shape 16CPU, 64Gb RAM. The suggestion for other database shapes are: for maintenance_work_mem - 1/4 part of the total database RAM size; max_parallel_maintenance_workers - database CPUs count. + +Perform `VACUUM FULL` and `ANALYZE` on the each database table using the query: + +```yaml +VACUUM (FULL, ANALYZE) my_table +``` + +Or perform `VACUUM FULL` and `VACUUM ANALYZE` on all tables in the database using commands sequentially: + +```yaml +VACUUM FULL +VACUUM ANALYZE +``` + +**Postconditions:** +Apply regular configuration to PostgreSQL Parameter Group(database restart not needed after applying): + +```yaml +maintenance_work_mem=2000000 +max_parallel_maintenance_workers=8 +``` + +## Useful PostgreSQL queries + +Total database size: + +```yaml +SELECT pg_size_pretty(pg_database_size('reportportal')); +``` + +Show autovacuum stats: + +```yaml +SELECT relname, last_vacuum, last_autovacuum FROM pg_stat_user_tables; +``` + +Detailed statistic by each table and indexes: + +```yaml +SELECT *, pg_size_pretty(total_bytes) AS total + , pg_size_pretty(index_bytes) AS index + , pg_size_pretty(toast_bytes) AS toast + , pg_size_pretty(table_bytes) AS table + FROM ( + SELECT *, total_bytes-index_bytes-coalesce(toast_bytes,0) AS table_bytes FROM ( + SELECT c.oid,nspname AS table_schema, relname AS table_name + , c.reltuples AS row_estimate + , pg_total_relation_size(c.oid) AS total_bytes + , pg_indexes_size(c.oid) AS index_bytes + , pg_total_relation_size(reltoastrelid) AS toast_bytes + FROM pg_class c + LEFT JOIN pg_namespace n ON n.oid = c.relnamespace + WHERE relkind = 'r' + ) a +) a; +``` + +Dead tuples amount per table: + +```yaml +SELECT relname, n_dead_tup FROM pg_stat_user_tables order by n_dead_tup desc; +``` \ No newline at end of file diff --git a/versioned_docs/version-26.2-organizations/issues-troubleshooting/HowToResolveIssuesWithMigrationToTheNewVersion.md b/versioned_docs/version-26.2-organizations/issues-troubleshooting/HowToResolveIssuesWithMigrationToTheNewVersion.md new file mode 100644 index 0000000000..db2e98c685 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/issues-troubleshooting/HowToResolveIssuesWithMigrationToTheNewVersion.md @@ -0,0 +1,47 @@ +--- +sidebar_position: 10 +sidebar_label: How to resolve issues with migration to the new version +description: Learn how to resolve migration issues when upgrading ReportPortal to new versions. +--- + +# How to resolve issues with migration to the new version + +## Error: Dirty database version XX. Fix and force version. + +That means, migration process has been interrupted during XX migration (migration has been started but not finished) +1. At first, you need to check the logs of migration (service itselft and database), it can be helpful, if yes, make some actions based on logs, if not then move next. +2. You need to rollback all applied (if any) migration XX parts. + +The format for url is the next: + +``` +https://github.com/reportportal/migrations/blob/develop/migrations/XX_some_name.up.sql +``` + +(Usually nothing to rollback, but need check) + +3. Change in schema_migrations table, change values in this table to version=XX-1 (previous successful migration number), and dirty flag set to true. +4. Restart migration. + +For instance, if you have "Error: Dirty database version 10. Fix and force version." +1. Check the logs(service itselft and database), in case we've found nothing, move next. +2. You need to check 10 migration (https://github.com/reportportal/migrations/blob/develop/migrations/10_attachment_size.up.sql) and rollback if you have some partly migration. +3. Then execute #update schema_migrations set version=9, dirty=f +4. Redeploy RP based on docker-composer for example (migration should be started automatically, if you followed by instructions of installation for this way.) + +## Error: org.jasypt.exceptions.EncryptionOperationNotPossibleException: null. API doesn't start. ReportPortal unavailable. + +Minio files are used during migration to change integration passwords encryption. +Files in Minio may be corrupted and deleted somehow before migration during Reportportal usage. + +Removing existing integrations from db before deploying can help. Creation of a new integration will use a new encryption type. + +1. Execute the next script in database to remove existing integrations before deploy: + +```sql +DELETE FROM integration WHERE type IN (SELECT id FROM integration_type WHERE name IN ('email', 'jira', 'ldap', 'ad')); + +``` +2. Deploy Reportportal +3. Create integrations again + diff --git a/versioned_docs/version-26.2-organizations/issues-troubleshooting/IssuesWithJIRABugTrackingSystemHowToResolve.md b/versioned_docs/version-26.2-organizations/issues-troubleshooting/IssuesWithJIRABugTrackingSystemHowToResolve.md new file mode 100644 index 0000000000..6ed153c550 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/issues-troubleshooting/IssuesWithJIRABugTrackingSystemHowToResolve.md @@ -0,0 +1,91 @@ +--- +sidebar_position: 2 +sidebar_label: 'Issues with JIRA bug tracking system: how to resolve' +description: Resolve JIRA integration issues in ReportPortal by verifying URLs, project keys, credentials, and importing necessary certificates for seamless connectivity. +--- + +# Issues with JIRA bug tracking system: how to resolve + +In case user is connecting to JIRA system and gets the error like +"Impossible interact with external system.<name of current user's project>", there +are some reasons could cause the issue: + +* verify that the link to JIRA system is correct +* verify the project name is correct +* verify username and password data + +**First**, verify that the link to JIRA system is correct. There are some variants +are possible, for instance: + +``` +https://jira.company.com/jira +https://jiraeu.company.com +``` + +**Second**, verify the project name is correct. Please fill in Project name field with +project key value, e.g. project ABC-DEF has key ABCDEF. + +**Third**, verify username and password data. Make sure, that login name and not email +is in the username field. In case all the data above is correct, but the error +appears again, check whether user's credentials to JIRA are not expired. +As far as JIRA sends the request in html format, we are not able to display the real +reason of error. +To check and/or resolve the issue, please do the next steps: +1. Open JIRA page +2. Login JIRA with domain credentials using basic authorization (i.e., fill in user's +login name and password into the fields) +3. Submit the login form +Screen with CAPTCHA should appears +4. Enter the symbols +5. Submit the credentials again +6. Now try to establish the connection to JIRA on ReportPortal project. + +**Fourth**, the connection to the JIRA instance might require a certificate. If that's the case, the certificate needs to be imported inside the API container. Follow these steps: + +```sh +# 1. Access the shell of the API Docker container +docker exec -it reportportal_api_1 /bin/sh + +# 2. Change the directory to point to the 'security' directory +cd /usr/lib/jvm/jre/lib/security/ +# Or use this command if the 'security' directory is in another folder: +# cd /usr/lib/jvm/java-11-amazon-corretto/jre/lib/security/ + +Note: Replace 'java-11-amazon-corretto' with the version in the latest API Docker image. + +# 3. Get the certificate file +curl -O url://to/your/foo.cert + +# 4. Import the certificate +keytool -importcert -noprompt -file foo.cert -alias "JIRA CERT" -keystore cacerts -storepass abc123 # note: the default password for the keystore is 'changeit' + +# 5. Exit the shell and restart the docker API. +exit + +# 6. Try to establish the connection to JIRA on the ReportPortal project again. +``` +Or use this alternative method: + +```sh +# 1. Copy the certificate into the Docker container +docker cp cert.der reportportal_api_1:/cert.der + +# 2. Import the certificate +docker exec -t -i reportportal_api_1 ./usr/lib/jvm/jre/bin/keytool -import -alias rootcert -keystore /usr/lib/jvm/jre/lib/security/cacerts -file /cert.der +# If the 'jre' folder is inside another folder, use the following command instead: +# docker exec -t -i reportportal_api_1 ./usr/lib/jvm/java-11-amazon-corretto/jre/bin/keytool -import -alias rootcert -keystore /usr/lib/jvm/java-11-amazon-corretto/jre/lib/security/cacerts -file /cert.der + +Note: Replace 'java-11-amazon-corretto' with the version in the latest API Docker image. + +# 3. Exit and restart the Docker API. +exit + +# 4. Attempt the connection to JIRA on ReportPortal project again. +``` +Both methods should allow you to import the necessary certificate for your JIRA connection inside the ReportPortal API container. + +:::note +SSL instance of JIRA (even cloud version) can be accessed by JIRA API token, used instead of password. +::: + +If these didn't resolve your issues, please contact us. diff --git a/versioned_docs/version-26.2-organizations/issues-troubleshooting/IssuesWithLDAPSHowToResolve.md b/versioned_docs/version-26.2-organizations/issues-troubleshooting/IssuesWithLDAPSHowToResolve.md new file mode 100644 index 0000000000..f4f806395b --- /dev/null +++ b/versioned_docs/version-26.2-organizations/issues-troubleshooting/IssuesWithLDAPSHowToResolve.md @@ -0,0 +1,30 @@ +--- +sidebar_position: 5 +sidebar_label: 'Issues with LDAPS: how to resolve' +description: Troubleshoot LDAPS authentication issues in ReportPortal with SSL certificate solutions. +--- + +# Issues with LDAPS: how to resolve + +When configuring LDAP to work with ldaps:// users may see the following error when trying to log in: +``` +sun.security.validator.ValidatorException: PKIX path building failed: +sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target. +``` + +This error can be solved by importing the needed certificate within the authorization container: + +```sh +# Enter service-authorization container as root +docker exec -u 0 -it reportportal_uat_1 sh + +# Download certificates +cd /usr/local/share/ca-certificates/ +wget url://to/your/foo.cert + +# Import the cert to keytool. if password is required the default should be "changeit" +$JAVA_HOME/bin/keytool -import -alias ldap_cert -keystore $JAVA_HOME/lib/security/cacerts -file /usr/local/share/ca-certificates/foo.cert + +# exit container and restart it +docker restart reportportal_uat_1 +``` diff --git a/versioned_docs/version-26.2-organizations/issues-troubleshooting/ResolveAnalyzerKnownIssues.mdx b/versioned_docs/version-26.2-organizations/issues-troubleshooting/ResolveAnalyzerKnownIssues.mdx new file mode 100644 index 0000000000..b1584ae6e0 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/issues-troubleshooting/ResolveAnalyzerKnownIssues.mdx @@ -0,0 +1,93 @@ +--- +sidebar_position: 6 +sidebar_label: Resolve Analyzer Known Issues +description: Troubleshoot and resolve common Analyzer issues in ReportPortal, including OpenSearch health, AMQP connections, and performance optimizations. +--- + +# Resolve Analyzer Known Issues + +## Problem 1. Auto-Analyser doesn't work. Analyzer health check status failed: OpenSearch is not healthy + +### Problem Description + +Analyzer log: + +``` +2021-09-09 11:34:47,927 - analyzerApp - ERROR - Analyzer health check status failed: OpenSearch is not healthy; +[pid: 10|app: 0|req: 1/3] 127.0.0.1 () {28 vars in 294 bytes} [Thu Sep 9 11:34:46 2021] GET / => generated 43 bytes in 1643 msecs (HTTP/1.1 503) 3 headers in 120 bytes (1 switches on core 0) +2021-09-09 11:35:48,737 - analyzerApp.utils - ERROR - Error with loading url: http://opensearch:9200/_cluster/health +2021-09-09 11:35:48,752 - analyzerApp.utils - ERROR - HTTPConnectionPool(host='opensearch', port=9200): Max retries exceeded with url: /_cluster/health (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) +2021-09-09 11:35:48,753 - analyzerApp.esclient - ERROR - OpenSearch is not healthy +2021-09-09 11:35:48,753 - analyzerApp.esclient - ERROR - list indices must be integers or slices, not str +``` + +OpenSearch container restarting all the time: + +``` +STATUS NAMES +Up Less than a second (health: starting) reportportal_opensearch_1 +``` + +### Solution + +Create a directory for OpenSearch and assign permissions with the following commands + +```bash +mkdir -p data/opensearch +chmod 777 data/opensearch +chgrp 1000 data/opensearch +``` + +Recreate ReportPortal services. + +## Problem 2. Auto-Analyser doesn't work. KeyError: 'found_test_and_methods' not found + +### Problem Description + +``` +2021-09-09 11:35:48,737 - analyzerApp.utils - ERROR - KeyError: 'found_test_and_methods' not found +``` + +### Solution + +Regenerate index in the OpenSearch. Project settings -> Auto-Analysis -> Genetate Index + + + +## Problem 3. Amqp connection was not established + +### Problem Description + +``` +2021-09-09 11:32:00,579 - analyzerApp - INFO - Starting waiting for AMQP connection +2021-09-09 11:32:00,586 - analyzerApp.amqp - INFO - Try connect to amqp://rabbitmq:5672/analyzer?heartbeat=600 +2021-09-09 11:32:00,595 - analyzerApp - ERROR - Amqp connection was not established +``` + +### Solution + +RabbitMQ container is not running. Wait for status `running` or recreate the RabbitMQ container. + +## Problem 4. Performance + +### Problem Description + +Slowing down analysis or waiting for a long time fore responce. + +Analyzer logs: + +``` +DAMN ! worker 1 (pid: 9191) died, killed by signal 9 :( trying respawn ... +Respawned uWSGI worker 1 (new pid: 9490) +``` + +### Solution + +Increase VM stats. We recommend using the minimum memory: +* [Analyzer](https://github.com/reportportal/reportportal/blob/master/docker-compose.yml#L56) - 1024 Mb +* [Analyzer train](https://github.com/reportportal/reportportal/blob/master/docker-compose.yml#L69) - 512 Mb + +Also you can reduce the number of Analyzer processes with processing environment variable `UWSGI_WORKERS: 2` (default `4`), then: +* [Analyzer](https://github.com/reportportal/reportportal/blob/master/docker-compose.yml#L56) - 768 Mb + +However, `UWSGI_WORKERS` will slow down the Analyzer. diff --git a/versioned_docs/version-26.2-organizations/issues-troubleshooting/TuningCITool.mdx b/versioned_docs/version-26.2-organizations/issues-troubleshooting/TuningCITool.mdx new file mode 100644 index 0000000000..7346ca224e --- /dev/null +++ b/versioned_docs/version-26.2-organizations/issues-troubleshooting/TuningCITool.mdx @@ -0,0 +1,43 @@ +--- +sidebar_position: 1 +sidebar_label: Tuning CI tool +description: Optimize your CI pipeline by passing parameters via system variables in Jenkins, enhancing test execution flexibility and integration with ReportPortal. +--- + +# Tuning CI tool + +How to provide parameters via system variables in the CI tool (for example - Jenkins) for our continuous testing platform. + +In order to provide specific parameters (Such as attributes) for different +executions that are based on the parameters loading order, you can provide them as system +variables. + +To do so, follow the steps below: + +1. Open the Job configuration in Jenkins. + + + +2. Select the "This build is parameterized" check-box. + +3. Click the "Add Parameter" and select "Text Parameter". + + + +4. Define any name for the parameter and set the default value (note that attributes should have semicolon-separated values, with no spaces). + + + +5. Update the execution command at the "Build" section: add ReportPortal parameters using –D for a system variable parameters. For attributes it is "rp.tags": + + + +6. Click the "Build with Parameters" button. + + + +7. In the opened dialog, specify the needed parameters, using semicolons to separate values. + + + +8. Then Click the "Build" button. diff --git a/versioned_docs/version-26.2-organizations/issues-troubleshooting/_category_.json b/versioned_docs/version-26.2-organizations/issues-troubleshooting/_category_.json new file mode 100644 index 0000000000..42c604c5d7 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/issues-troubleshooting/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Issues Troubleshooting", + "position": "21", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.2-organizations/issues-troubleshooting/img/AnalysisConfigurations.png b/versioned_docs/version-26.2-organizations/issues-troubleshooting/img/AnalysisConfigurations.png new file mode 100644 index 0000000000..90597bfbeb Binary files /dev/null and b/versioned_docs/version-26.2-organizations/issues-troubleshooting/img/AnalysisConfigurations.png differ diff --git a/versioned_docs/version-26.2-organizations/issues-troubleshooting/img/AutoanalyzerGenerateIndex.gif b/versioned_docs/version-26.2-organizations/issues-troubleshooting/img/AutoanalyzerGenerateIndex.gif new file mode 100644 index 0000000000..cb24e3bb57 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/issues-troubleshooting/img/AutoanalyzerGenerateIndex.gif differ diff --git a/versioned_docs/version-26.2-organizations/issues-troubleshooting/img/TipAndTricksStackTrace.png b/versioned_docs/version-26.2-organizations/issues-troubleshooting/img/TipAndTricksStackTrace.png new file mode 100644 index 0000000000..ba7f5b60ac Binary files /dev/null and b/versioned_docs/version-26.2-organizations/issues-troubleshooting/img/TipAndTricksStackTrace.png differ diff --git a/versioned_docs/version-26.2-organizations/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool1.png b/versioned_docs/version-26.2-organizations/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool1.png new file mode 100644 index 0000000000..6bfd1118e3 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool1.png differ diff --git a/versioned_docs/version-26.2-organizations/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool2.png b/versioned_docs/version-26.2-organizations/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool2.png new file mode 100644 index 0000000000..f83208e7a6 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool2.png differ diff --git a/versioned_docs/version-26.2-organizations/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool3.png b/versioned_docs/version-26.2-organizations/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool3.png new file mode 100644 index 0000000000..0950fa30b5 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool3.png differ diff --git a/versioned_docs/version-26.2-organizations/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool4.png b/versioned_docs/version-26.2-organizations/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool4.png new file mode 100644 index 0000000000..7eec52bcd3 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool4.png differ diff --git a/versioned_docs/version-26.2-organizations/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool5.png b/versioned_docs/version-26.2-organizations/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool5.png new file mode 100644 index 0000000000..e6a07d9119 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool5.png differ diff --git a/versioned_docs/version-26.2-organizations/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool6.png b/versioned_docs/version-26.2-organizations/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool6.png new file mode 100644 index 0000000000..5b28d8f623 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/issues-troubleshooting/img/tuning-ci-tool/TuningCiTool6.png differ diff --git a/versioned_docs/version-26.2-organizations/issues-troubleshooting/index.md b/versioned_docs/version-26.2-organizations/issues-troubleshooting/index.md new file mode 100644 index 0000000000..1bcf7a6dce --- /dev/null +++ b/versioned_docs/version-26.2-organizations/issues-troubleshooting/index.md @@ -0,0 +1,16 @@ +--- +title: Issues Troubleshooting +description: Utilize ReportPortal's Issues Troubleshooting guide for improved test report generation and effective bug triage. +--- + +# Issues Troubleshooting + +The **Issues Troubleshooting** section is dedicated to helping testing teams identify and resolve common issues that may arise while using ReportPortal. This section provides targeted, practical guidance for understanding potential system challenges that can impact test automation processes. Here, you’ll find practical advice and step-by-step troubleshooting techniques for tackling various errors and system alerts, designed to ensure that your workflows run smoothly, minimizing disruptions and maximizing productivity. + +Each guide focuses on **a range of frequent issues that teams encounter and offers clear solutions** that can be implemented quickly. By using these troubleshooting resources, you’ll gain the insight and skills needed to assess problems effectively and take corrective actions before they escalate. This proactive approach can save valuable time and resources, allowing your team to concentrate on improving efficiency, optimizing test coverage, and improving software quality. + +Additionally, this section covers advanced tips for recognizing patterns in recurring issues, enabling you to adjust configurations and workflows for greater reliability. Whether you're managing large volumes of test data or troubleshooting integration issues, the Issues Troubleshooting section equips you with the skills and techniques to enhance stability and resilience across your test automation processes. By staying prepared and knowledgeable, you can ensure a smoother, more efficient testing experience with ReportPortal. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/HowToGetAnAccessTokenInReportPortal.mdx b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/HowToGetAnAccessTokenInReportPortal.mdx new file mode 100644 index 0000000000..57c0993e7a --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/HowToGetAnAccessTokenInReportPortal.mdx @@ -0,0 +1,98 @@ +--- +sidebar_position: 6 +sidebar_label: How to get an access token in ReportPortal +description: Learn how to obtain an access token in ReportPortal using your login credentials or API key, enabling secure interactions with the ReportPortal REST API. +--- + +# How to get an access token in ReportPortal + +There are two ways to authorize in the ReportPortal API: + +## 1. Authorization with user’s login and password + +This is the main and **recommended way** to get access to ReportPortal API. + +Make the following HTTP request to get user's access token using login and password: + +``` +POST /uat/sso/oauth/token + +BODY with parameters: +grant_type: password +username: +password: +``` + + +Or you can use the following curl request: + +```curl +curl --header "Content-Type: application/x-www-form-urlencoded" \ + --request POST \ + --data "grant_type=password&username=&password=" \ + --user "ui:uiman" \ + /uat/sso/oauth/token +``` + +Then you will receive a response with an access token: + +```json +{ + "access_token": , + "token_type": "bearer", + "expires_in": , + "refresh_token": , + ... +} +``` +Now you can use “access_token” with any request to API by sending it as HTTP Authorization header: + +```http +HTTP Header: +Authorization: Bearer + +``` + +## 2. Authorization with user's API Key (for agents) + +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 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. +::: + +Thus, you can use several API keys at the same time. And revoke unused, expired or publicly exposed keys. + + + +To generate a new API key in the ReportPortal app, click on the "Generate API Key" button. + +You are free to assign any name to this API key, as long as it is unique and consists of 1 to 40 characters. Keep in mind that duplicate API key names are not allowed. + +The system will automatically prefix the generated API key with its assigned name for easy identification. If the API key name contains spaces or underscores, these will be replaced by hyphens in the API key prefix. + +It's crucial to understand that the API key will be visible only at the point of creation. We strongly recommend copying and securely storing it for future use, as it will be impossible to retrieve later. This practice aligns with stringent security measures and standards. + + + +You have the ability to create multiple API keys for various purposes, such as for automation or for integration with third-party services. However, it's important to note that all API keys generated from the user's Profile page are functionally equivalent from the permissions standpoint. + +Users can also revoke an API key at any time. Upon revocation, all related information will be removed from the database, and the revoked API key will no longer be usable. + +An API key functions similarly to a regular token. When making requests to the ReportPortal API, simply include it in the HTTP Authorization header as follows: + +```http +HTTP Header:
+Authorization: Bearer +``` + + + + +:::note +Please be aware that this type of token is specifically designed for use by ReportPortal client tools (agents). We do not recommend using it to provide direct access to API endpoints. +::: diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/HowToReportAttributesToReportPortal.mdx b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/HowToReportAttributesToReportPortal.mdx new file mode 100644 index 0000000000..06b7f79706 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/HowToReportAttributesToReportPortal.mdx @@ -0,0 +1,144 @@ +--- +sidebar_label: How to report attributes to ReportPortal +description: Learn how to report attributes to ReportPortal to categorize, filter, and analyze test data effectively, enhancing your test management process. +--- + +# How to report attributes to ReportPortal + +Attributes are essential for categorizing, filtering, and analyzing test data. This article will guide you through the process of reporting attributes to our test results reporting service. + +Be sure to check out our dedicated article for [best practices on using attributes](/work-with-reports/LaunchesTestItemsAttributes) effectively. + +## Parameters of attributes + +* Format – Key : Value +* Key – any string value, optional field +* Value – any string value, mandatory field +* The maximum limit is 512 symbols each for both key and value + +Multiple values can be associated with a single key. For example, if we have a `jira_id` key, the value can differ based on the Jira ticket. + + + +:::important +The only valid use of the colon is to split the key and value.
+When a colon is present in the key or in the value, it breaks the string into two parts. +::: + +### Colon scenarios + +**1.** Key and value reported, colon used in key only. + +**Example:**
+```{"key": "la:bel", "value": "smoke"}``` + +**Behavior on UI:**
+Key: la
+Value: bel + +The original value "smoke" is not transmitted at all. + +**2.** Key and value reported, colon used in both key and value. + +**Example:**
+```{"key": "la:bel", "value": "smo:ke"}``` + +**Behavior on UI:**
+Key: la
+Value: bel + +The original value "smoke" is not transmitted at all. + +**3.** Key and value reported, colon used in value only. + +**Example:**
+```{"key": "label", "value": "smo:ke"}``` + +**Behavior on UI:**
+Key: label
+Value: smo + +The value is truncated at the colon, and only the part before the colon is transmitted. + +**4.** Value reported, colon used in value only. + +**Example:**
+```{"value": "smo:ke"}``` + +**Behavior on UI:**
+Value: smo + +The value is truncated at the colon, and only the part before the colon is transmitted. + +## Adding attributes via test framework integration + +### JavaScript + +Here is an example of adding attributes for a Playwright agent. + +You can add attributes for the Launch in ReportPortal [agent config](https://github.com/reportportal/examples-js/blob/main/example-playwright/playwright.config.ts#L8): + + + +You can add attributes for the test item in your [test file](https://github.com/reportportal/examples-js/blob/main/example-playwright/tests/rp-features/attributes-and-description.spec.ts#L33): + + + +### .NET + +Attributes in .NET agents can be added declaratively or at runtime. To add launch attributes via standard [ReportPortal.json config file](https://github.com/reportportal/example-net-nunit/blob/68f596712e153fd67e45cbd479a9aa40a7d5423a/src/Example/ReportPortal.config.json#L15): + +```json +{ + "launch": { + "attributes": ["platform:unix", "arch:x64" ] + } +} +``` + +And to add test attributes ([sample for NUnit](https://github.com/reportportal/example-net-nunit/blob/68f596712e153fd67e45cbd479a9aa40a7d5423a/src/Example/Tests/Class1.cs#L142)): + +```csharp +[Test, Category("browser:chrome")] +public void Test1() +{ + ReportPortal.Shared.Context.Current.Metadata.Attributes.Add("browser", "chrome"); +} +``` + +In Gherkin: + +``` +@browser:chrome +Scenario: Scenario1 +``` + +## Adding attributes via API + +You can initiate (launch, suite, test, or step) with one set of attributes and finish with a different set. + +Importantly, the new attributes do not overwrite the old ones; instead, they are added. + + + +## System attributes + +In the ReportPortal, there is an opportunity to influence specific processes and data processing rules. To this end, ReportPortal supports system attributes. These attributes can be applied to the selected test items and trigger ReportPortal to take certain actions. System attributes are not visible on the UI (for that, the attribute should be sent with `system: true`). + +### immediateAutoAnalysis + +If `immediateAutoAnalysis=true`, then each test item will be analyzed right after it is completed, without waiting for the whole launch to finish. + + + +### immediatePatternAnalysis + +When `immediatePatternAnalysis=true`, then each test item will be analyzed right after it is completed, without waiting for the whole launch to finish. + + + +### skippedIsNotIssue + +If `skippedIsNotIssue=true` during launch import, then all test items with the SKIPPED status will be processed without applying a `To Investigate` defect type. + + diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/HowToRunYourTests.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/HowToRunYourTests.md new file mode 100644 index 0000000000..0b4bf9164b --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/HowToRunYourTests.md @@ -0,0 +1,11 @@ +--- +sidebar_label: How to run your tests +description: Learn how to run your tests with ReportPortal test automation reporting tools integration in any CI/CD pipeline. +--- + +# How to run your tests + +Automated tests can be executed in the any CI tool you are using on the project (Jenkins, Bamboo, Azure DevOps, GitHub Actions, CircleCI, TeamCity, GitLab, Travis CI, Codeship, Buddy, GoCD, Wercker and more). +It doesn't require any settings from ReportPortal. + +So that the test results get into the ReportPortal, you need to perform [test framework integration](/log-data-in-reportportal/test-framework-integration/) or [implement own integration](/log-data-in-reportportal/ImplementOwnIntegration). diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/ImplementOwnIntegration.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/ImplementOwnIntegration.md new file mode 100644 index 0000000000..2c2a38d5c0 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/ImplementOwnIntegration.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 2 +sidebar_label: Implement own integration +description: Learn how to implement custom integration with ReportPortal using the developer guide. +--- + +# Implement own integration + +You can find a detailed description of how report results to ReportPortal in our [developers` guide](/developers-guides/ReportingDevelopersGuide). + +Based on this information you can create your integration with a test framework. + +:::note +We can propose a paid support for integration with a new framework or supporting an existing one. If you need more details, please drop a letter on support@reportportal.io. +::: diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/ImportDataToReportPortal.mdx b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/ImportDataToReportPortal.mdx new file mode 100644 index 0000000000..c345228a38 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/ImportDataToReportPortal.mdx @@ -0,0 +1,169 @@ +--- +sidebar_position: 4 +sidebar_label: Import data to ReportPortal +description: Import test logs into ReportPortal using the UI or API, supporting JUnit and RobotFramework formats for streamlined test data integration. +--- + +# Import data to ReportPortal + +## Import via UI + +Import functionality gives the opportunity to upload log files via UI. + +To start the import process, you should have at least one import plugin enabled: either [JUnit](/plugins/import/JUnit) or [RobotFramework](/plugins/import/RobotFramework). + +To import launch via UI: + +1. Log in to ReportPortal. + +2. Go to the Launches page. + +3. Click ‘Import’ button. + +4. Select appropriate option in the ‘Report Type’ dropdown on the ‘Import launch’ modal window. + +5. Click the drag-and-drop area to add .xml or .zip file under 32MB. + +6. Click ‘Import’ button and then ‘OK’ button on the ‘Import launch’ modal window. + +ReportPortal checks file size and format first. Imported files should meet the following requirements: + +* File format is zip archive or XML file. +* File size is up to 32Mb. +* Timestamp format is 2022-11-17T10:15:43 + +If the file format is incorrect, it is marked in red, and the reason is shown in the tooltip on hovering over the file in the pop-up window. This is to prevent any incorrect files from being run through the import process. + +If all the files added are correct you may click the 'Import' or 'Cancel' buttons: + +* The Cancel button closes the pop-up window without any operation under log files. +* The Import button starts copying files into the RP file storage. + +The System will start copying files into the RP file storage if the files meet the following requirements: + +* The File format is a zip archive or XML file. +* The File size is up to 32Mb. +* The XML files must have the JUnit or RobotFramework structure in the zip archive and in XML files depend on Report Type you have chosen. + +The system copies valid XML files into RP file storage and marked them in green in the ‘Import launches’ pop-up window. + +If files from the zip archive have formats other than XML, the system will skip them. + +If the XML file is not in the correct structure (depend on Report Type – JUnit or RobotFramework), the system will interrupt the process of copying and mark the file in red. The reason is then shown on the tooltip when hovering the file in the pop-up window. + +:::note +Files that were copied earlier stay in the RP file storage. +::: + +When all valid log files are downloaded and processed, the 'OK' button is enabled. The 'OK' button closes the ‘Import launches’ pop-up window. + + + +You can only interrupt the import in UI when files are being downloaded into the RP file storage. In this case, you should click the 'Cancel' button (or X button in the pop-up window) and confirm the cancellation of import and then click the 'Cancel' button again. + + + +## Import via API + +The details about import via API you can find on the ReportPortal menu at the bottom: API -> Plugin Controller -> Send report to the specified plugin for importing + + + +You can configure parameters (name, description, attributes) for the imported launch by specifying these values in your API request. + +The endpoint ```POST /v1/plugin/{projectName}/{pluginName}/import``` allows importing a launch into the specified project using an XML or ZIP file. + +**Permissions:** Admin, PM, Member, Customer, Operator. + +Here's an example of a request to the endpoint: + +```yaml +curl -L -X POST 'http://localhost:8080/api/v1/plugin/superadmin_personal/junit/import' \ +-H 'Content-Type: multipart/form-data' \ +-H 'Authorization: Bearer {token}' \ +-F 'file=@"file_path.zip";type=application/x-zip-compressed' \ +-F 'launchImportRq="{ + \"attributes\": [ + { + \"key\": \"skippedIsNotIssue\", + \"system\": true, + \"value\": \"true\" + } + ], + \"description\": \"Custom launch description\", + \"mode\": \"DEFAULT\", + \"name\": \"Custom launch name\", + \"startTime\": \"2023-11-08T10:23:34.259Z\" +}";type=application/json' +``` + +**Query parameters:** + +**pluginName** – mandatory field to specify import plugin + +**projectName** – mandatory field to specify project name + +**file** – mandatory area to upload file for import + +**launchImportRq** is application/json part of the request where you can specify needed custom information about launch. + +**attributes** – array of attributes + +**description** – custom launch description + +**name** – custom launch name + +**startTime** – if launch start time needed, or will be used first time in imported report + + + +If the array of attributes contains the next "skippedIsNotIssue" attribute marked as system, then all test items with SKIPPED status will be processed without applying a "To Investigate" defect type. + +```yaml + "attributes": [ + { + "key": "skippedIsNotIssue", + "system": true, + "value": "true" + } + ] +``` + +When set to "false", test items with SKIPPED status will be processed and marked with the defect type "To Investigate". If the parameter is not set, the default behavior is equivalent to "false". + +**Scenario 1** (Test items with SKIPPED status have "To Investigate" status): + +```yaml +curl -L -X POST 'http://localhost:8080/api/v1/plugin/superadmin_personal/junit/import' \ +-H 'Content-Type: multipart/form-data' \ +-H 'Authorization: Bearer {token}' \ +-F 'file=@Launch.zip;type=application/x-zip-compressed' \ +-F 'launchImportRq="{ + \"description\": \"Launch description\", + \"mode\": \"DEFAULT\", + \"name\": \"Launch\" +}";type=application/json' +``` + +**Scenario 2** (Test items with SKIPPED status don't have "To Investigate" status) + +```yaml +curl -L -X POST 'http://localhost:8080/api/v1/plugin/superadmin_personal/junit/import' \ +-H 'Content-Type: multipart/form-data' \ +-H 'Authorization: Bearer {token}' \ +-F 'file=@Launch.zip;type=application/x-zip-compressed' \ +-F 'launchImportRq="{ + \"attributes\": [ + { + \"key\": \"skippedIsNotIssue\", + \"system\": true, + \"value\": \"true\" + } + ], + \"description\": \"Launch description\", + \"mode\": \"DEFAULT\", + \"name\": \"Launch\" +}";type=application/json' +``` + + diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/ReportingSDK.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/ReportingSDK.md new file mode 100644 index 0000000000..edd21cf87c --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/ReportingSDK.md @@ -0,0 +1,21 @@ +--- +sidebar_position: 3 +sidebar_label: Reporting SDK +description: Integrate your test framework with ReportPortal using the Reporting SDK to log detailed test data, including nested steps and test case IDs, for enhanced reporting. +--- + +# Reporting SDK + +How to report tests with nested steps? + +**JAVA** +* https://github.com/reportportal/client-java/wiki/Nested-steps +* https://github.com/reportportal/client-java/wiki/Step-template-and-step-template-config + +**.NET** +* https://github.com/reportportal/commons-net/blob/master/docs/Logging.md + +How to report tests with Test case ID. How to add TestID from your Test Management System to reported execution. + + * https://github.com/reportportal/client-java/wiki/Test-case-ID + * https://github.com/reportportal/client-java/wiki/Test-case-ID-Key diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/_category_.json b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/_category_.json new file mode 100644 index 0000000000..02c28977dc --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Log data in ReportPortal", + "position": "9", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/APISection.png b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/APISection.png new file mode 100644 index 0000000000..b662f69cf6 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/APISection.png differ diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/AccessToken/APIKeyUsing.png b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/AccessToken/APIKeyUsing.png new file mode 100644 index 0000000000..6bee8fe8d4 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/AccessToken/APIKeyUsing.png differ diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/AccessToken/AccessToken1.png b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/AccessToken/AccessToken1.png new file mode 100644 index 0000000000..7189f1882b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/AccessToken/AccessToken1.png differ diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/AccessToken/LegacyAPIKey.png b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/AccessToken/LegacyAPIKey.png new file mode 100644 index 0000000000..905bffd418 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/AccessToken/LegacyAPIKey.png differ diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/AccessToken/NewAPIKeys.png b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/AccessToken/NewAPIKeys.png new file mode 100644 index 0000000000..5d451a9b5a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/AccessToken/NewAPIKeys.png differ diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/ImportViaAPI.png b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/ImportViaAPI.png new file mode 100644 index 0000000000..af6ae2c995 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/ImportViaAPI.png differ diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/parameters.png b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/parameters.png new file mode 100644 index 0000000000..6e1f624ebe Binary files /dev/null and b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/parameters.png differ diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/report-attributes/ReportAttributes1.png b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/report-attributes/ReportAttributes1.png new file mode 100644 index 0000000000..a4604b2cd0 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/report-attributes/ReportAttributes1.png differ diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/report-attributes/ReportAttributes2.png b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/report-attributes/ReportAttributes2.png new file mode 100644 index 0000000000..e041b08837 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/report-attributes/ReportAttributes2.png differ diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/report-attributes/ReportAttributes3.png b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/report-attributes/ReportAttributes3.png new file mode 100644 index 0000000000..e5a41e2586 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/report-attributes/ReportAttributes3.png differ diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/report-attributes/ReportAttributes4.png b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/report-attributes/ReportAttributes4.png new file mode 100644 index 0000000000..c4b9ba47ba Binary files /dev/null and b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/report-attributes/ReportAttributes4.png differ diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/report-attributes/ReportAttributes5.png b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/report-attributes/ReportAttributes5.png new file mode 100644 index 0000000000..793ae90a88 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/report-attributes/ReportAttributes5.png differ diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/report-attributes/ReportAttributes6.png b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/report-attributes/ReportAttributes6.png new file mode 100644 index 0000000000..80264abe61 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/report-attributes/ReportAttributes6.png differ diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/report-attributes/ReportAttributes7.png b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/report-attributes/ReportAttributes7.png new file mode 100644 index 0000000000..af24849df1 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/img/report-attributes/ReportAttributes7.png differ diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/index.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/index.md new file mode 100644 index 0000000000..487f1500a5 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/index.md @@ -0,0 +1,26 @@ +--- +title: Log data in ReportPortal +description: Discover how to efficiently import data, integrate test frameworks, and run your tests with our test reporting tool. +--- + +# Log data in ReportPortal + +ReportPortal is a CI/CD agnostic tool. Therefore, you can continue using your favorite CI/CD tool (GitLab, Jenkins, GitHub, Azure DevOps, Bamboo) to send data to ReportPortal and get test results of execution. + +The data transmission is regulated not by the CI/CD process, but by the test framework. The only requirement is to ensure that the machine where your CI/CD is located has access to the ReportPortal instance to which you are trying to send the data. + +As for test frameworks, a generic approach is to set the address of ReportPortal and other data in your test framework via properties or a configuration file, and your test framework will start reporting data to ReportPortal. + +ReportPortal supports various frameworks: +* [Java frameworks](/log-data-in-reportportal/test-framework-integration/Java/) ([TestNG](/log-data-in-reportportal/test-framework-integration/Java/TestNG), [Jbehave](/log-data-in-reportportal/test-framework-integration/Java/JBehave), etc.) +* [Python frameworks](/log-data-in-reportportal/test-framework-integration/Python/) ([Pytest](/log-data-in-reportportal/test-framework-integration/Python/pytest), [Robot Framework](/log-data-in-reportportal/test-framework-integration/Python/RobotFramework), etc.) +* [JavaScript frameworks](/log-data-in-reportportal/test-framework-integration/JavaScript/) ([Playwright](/log-data-in-reportportal/test-framework-integration/JavaScript/Playwright), [Postman](/log-data-in-reportportal/test-framework-integration/JavaScript/Postman), etc.) +* [.NET frameworks](/log-data-in-reportportal/test-framework-integration/Net/) ([NUnit](/log-data-in-reportportal/test-framework-integration/Net/NUnit), [VSTest](/log-data-in-reportportal/test-framework-integration/Net/VSTest), etc.). + +Integration with ReportPortal is not dependent on the type of tests you run. It can be API tests, integration tests, or UI tests such as Selenium, Cypress, so, you can run different types of tests and get test results. + +ReportPortal can be integrated with external services, enabling you to report test results from platforms like Browserstack, Sauce Labs, and other third-party services. For Sauce Labs integration, we have a [plugin](/plugins/other/SauceLabs). + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/Cucumber.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/Cucumber.md new file mode 100644 index 0000000000..0706089046 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/Cucumber.md @@ -0,0 +1,27 @@ +--- +sidebar_position: 4 +sidebar_label: Cucumber +description: Integrate Cucumber BDD framework with ReportPortal for comprehensive test automation reporting tools and behavior-driven testing analysis. +--- + +# ReportPortal Cucumber Integration + +There is an agent to integrate [Cucumber](https://cucumber.io/) (Cucumber-JVM) with ReportPortal. + +Cucumber is a popular open-source framework for behavior-driven development (BDD) which based on Gherkin language and allows developers, testers, and business stakeholders to work together and define an application's behavior. + +## Compatibility matrix for cucumber agents + +| Version(s) of cucumber java and cucumber junit | Gherkin's version(s) | Link to agent's github | +| - | - | - | +| 1.2.5 | 2.12.2 | [sources/cucumber1](https://github.com/reportportal/agent-java-cucumber) | +| 2.0.0 - 2.4.0 | 3.2.0 - 5.1.0 | [sources/cucumber2](https://github.com/reportportal/agent-java-cucumber2) | +| 3.0.0 - 3.0.2 | _ | [sources/cucumber3](https://github.com/reportportal/agent-java-cucumber3) | +| 4.4.0 - 4.8.1 | 3.2.0 - 5.1.0 | [sources/cucumber4](https://github.com/reportportal/agent-java-cucumber4) | +| 5.0.0 - 5.7.0 | _ | [sources/cucumber5](https://github.com/reportportal/agent-java-cucumber5) | +| 6.0.0 - 7.0.0 | 6.0.0 - 7.0.0 | [sources/cucumber6](https://github.com/reportportal/agent-java-cucumber6) | +| 6.0.0 - 7.0.0 | 6.0.0 - 7.0.0 | [sources/cucumber7](https://github.com/reportportal/agent-java-cucumber7) | + +[Installation guide](https://github.com/reportportal/agent-java-cucumber#readme) + +[Examples](https://github.com/reportportal/examples-java/tree/master/example-cucumber) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/JBehave.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/JBehave.md new file mode 100644 index 0000000000..027e4e2c09 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/JBehave.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 5 +sidebar_label: JBehave +description: Integrate JBehave with ReportPortal to automate acceptance testing, enhance BDD workflows, and gain real-time insights into test results. +--- + +# ReportPortal JBehave Integration + +There is an agent to integrate [JBehave](https://jbehave.org/) with ReportPortal. + +JBehave is a Java framework which can be used for creating clear and readable automated acceptance tests in behavior-driven development (BDD) style. The agent supports both JBehave story syntax and Gherkin. + +[Installation guide](https://github.com/reportportal/agent-java-jbehave#readme) + +[Examples](https://github.com/reportportal/examples-java/tree/master/example-jbehave) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/JUnit4.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/JUnit4.md new file mode 100644 index 0000000000..909297d375 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/JUnit4.md @@ -0,0 +1,17 @@ +--- +sidebar_position: 2 +sidebar_label: JUnit4 +description: Integrate JUnit4 with ReportPortal to automate test execution, track results in real-time, and enhance your QA workflow with detailed analytics. +--- + +# ReportPortal JUnit4 Integration + +There is an agent to integrate [JUnit4](https://junit.org/junit4/) with ReportPortal. + +JUnit4 is one of the most popular unit testing framework which has a significant role in the test-driven development process. + +Using JUnit4 developers can write and execute automated tests to ensure that their applications are reliable and function as expected. + +[Installation guide](https://github.com/reportportal/agent-java-junit#readme) + +[Examples](https://github.com/reportportal/examples-java/tree/master/example-junit) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/JUnit5.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/JUnit5.md new file mode 100644 index 0000000000..024a94f1d8 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/JUnit5.md @@ -0,0 +1,17 @@ +--- +sidebar_position: 1 +sidebar_label: JUnit5 +description: Integrate JUnit5 testing framework with ReportPortal for comprehensive test automation reporting and modern Java testing analysis. +--- + +# ReportPortal JUnit5 Integration + +There is an agent to integrate [JUnit5](https://junit.org/junit5/docs/current/user-guide/#extensions) with ReportPortal. + +The most recent JUnit testing framework for Java-based applications is JUnit5. + +Compared to JUnit4, it offers a number of additional features and enhancements, such as enhanced support for dynamic and parameterized tests and an improved extension model. + +[Installation guide](https://github.com/reportportal/agent-java-junit5#readme) + +[Examples](https://github.com/reportportal/examples-java/tree/master/example-junit5) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/Karate.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/Karate.md new file mode 100644 index 0000000000..c8db90de9c --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/Karate.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 7 +sidebar_label: Karate +description: Integrate Karate BDD framework with ReportPortal to automate API, UI, and performance tests, enhancing reporting and API testing analysis. +--- + +# ReportPortal Karate Integration + +There is an agent to integrate [Karate](https://www.karatelabs.io) with ReportPortal. + +Karate is a BDD-based open-source framework that allows for the testing of complex scenarios in a user-friendly language called Gherkin. + +Karate enables the writing of API tests by combining API test automation, mocking, performance testing, and even UI automation into a single framework. + +[Installation guide](https://github.com/reportportal/agent-java-karate#readme) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/Loggers/ApacheHttpComponents.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/Loggers/ApacheHttpComponents.md new file mode 100644 index 0000000000..76b2dce8a4 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/Loggers/ApacheHttpComponents.md @@ -0,0 +1,11 @@ +--- +sidebar_position: 6 +sidebar_label: Apache HttpComponents +description: Integrate Apache HttpComponents with ReportPortal for comprehensive test automation reporting tools and HTTP request/response logging. +--- + +# ReportPortal Apache HttpComponents Integration + +The logger intercept and logs all Requests and Responses issued by [Apache HttpComponents](https://hc.apache.org/) into ReportPortal in Markdown format, including multipart requests. It recognizes payload types and attach them in corresponding manner: image types will be logged as images with thumbnails, binary types will be logged as entry attachments, text types will be formatted and logged in Markdown code blocks. + +[Installation guide](https://github.com/reportportal/logger-java-httpcomponents#readme) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/Loggers/Log4J.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/Loggers/Log4J.md new file mode 100644 index 0000000000..ad4e96fe66 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/Loggers/Log4J.md @@ -0,0 +1,13 @@ +--- +sidebar_position: 2 +sidebar_label: Log4J +description: Integrate Log4J with ReportPortal to capture and manage application logs efficiently, enhancing test analysis and reporting in your Java projects. +--- + +# ReportPortal Log4J Integration + +[Log4j](https://logging.apache.org/log4j/2.x/index.html) is one of several Java logging frameworks that provides a flexible and configurable way to capture and manage application logs. + +[Installation guide](https://github.com/reportportal/logger-java-log4j#readme) + +[Examples](https://github.com/reportportal/examples-java/tree/master/example-testng-log4j) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/Loggers/Logback.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/Loggers/Logback.md new file mode 100644 index 0000000000..6b091d57dd --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/Loggers/Logback.md @@ -0,0 +1,13 @@ +--- +sidebar_position: 1 +sidebar_label: Logback +description: Integrate Logback with ReportPortal to automatically capture and send application logs for real-time analysis, enhancing test reporting and debugging efficiency. +--- + +# ReportPortal Logback Integration + +Using the [Logback appender](https://logback.qos.ch/) for ReportPortal, developers can collect and send the logs generated by their application to ReportPortal for additional analysis and reporting. Using this appender, developers can configure Logback to send logs directly to ReportPortal, where they can be examined alongside other testing data to understand the behavior of the application and identify any issues. + +[Installation guide](https://github.com/reportportal/logger-java-logback#readme) + +[Examples](https://github.com/reportportal/examples-java/tree/master/example-testng-logback) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/Loggers/OkHttp3.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/Loggers/OkHttp3.md new file mode 100644 index 0000000000..c8423074f0 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/Loggers/OkHttp3.md @@ -0,0 +1,11 @@ +--- +sidebar_position: 5 +sidebar_label: OkHttp3 +description: Integrate OkHttp3 with ReportPortal to automatically log HTTP requests and responses, including images and binary data, for enhanced test analysis. +--- + +# ReportPortal OkHttp3 Integration + +The logger intercept and logs all Requests and Responses issued by OkHttp into ReportPortal in Markdown format, including multipart requests. It recognizes payload types and attach them in corresponding manner: image types will be logged as images with thumbnails, binary types will be logged as entry attachments, text types will be formatted and logged in Markdown code blocks. + +[Installation guide](https://github.com/reportportal/logger-java-okhttp3#readme) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/Loggers/RestAssured.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/Loggers/RestAssured.md new file mode 100644 index 0000000000..0ae256bf3a --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/Loggers/RestAssured.md @@ -0,0 +1,13 @@ +--- +sidebar_position: 3 +sidebar_label: Rest Assured +description: Integrate REST Assured with ReportPortal for comprehensive test automation reporting and API testing request/response logging. +--- + +# ReportPortal Rest Assured Integration + +The logger intercept and logs all Requests and Responses issued by [REST Assured](https://rest-assured.io/) into ReportPortal in Markdown format, including multipart +requests. It recognizes payload types and attach them in corresponding manner: image types will be logged as images with thumbnails, binary +types will be logged as entry attachments, text types will be formatted and logged in Markdown code blocks. + +[Installation guide](https://github.com/reportportal/logger-java-rest-assured#readme) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/Loggers/Selenide.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/Loggers/Selenide.md new file mode 100644 index 0000000000..d0abdd43c0 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/Loggers/Selenide.md @@ -0,0 +1,11 @@ +--- +sidebar_position: 4 +sidebar_label: Selenide +description: Integrate Selenide with ReportPortal to automatically log test steps, capture screenshots on failure, and attach WebDriver logs for enhanced test analysis. +--- + +# ReportPortal Selenide Integration + +[Selenide](https://selenide.org/) step logging listener for ReportPortal. The listener listen for Selenide log events and send them to Report Portal as steps. It has ability to log screenshots and page sources on failure, this is enabled by default. Also, it is possible to attach different types of WebDriver logs on failure. + +[Installation guide](https://github.com/reportportal/logger-java-selenide#readme) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/Loggers/_category_.json b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/Loggers/_category_.json new file mode 100644 index 0000000000..645a8343db --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/Loggers/_category_.json @@ -0,0 +1,5 @@ +{ + "link": { + "type": "generated-index" + } +} diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/SoapUI.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/SoapUI.md new file mode 100644 index 0000000000..832fa58c5c --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/SoapUI.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 8 +sidebar_label: SoapUI (outdated) +description: Integrate SoapUI API testing with ReportPortal for test automation reporting and SOAP/REST API analysis. +--- + +# ReportPortal SoapUI Integration + +There is an agent to integrate [SoapUI](https://www.soapui.org/) with ReportPortal. + +SoapUI is the most popular testing tool for SOAP and REST APIs. It offers clear interface for the creation and execution of automated functional, regression, and load tests. + +[Installation guide](https://github.com/reportportal/agent-java-soapui#readme) + +[Examples](https://github.com/reportportal/examples-java/tree/master/example-soapui/project) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/Spock.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/Spock.md new file mode 100644 index 0000000000..e6113dc080 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/Spock.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 6 +sidebar_label: Spock +description: Integrate Spock testing framework with ReportPortal for test execution reporting and Java/Groovy testing analysis. +--- + +# ReportPortal Spock Integration + +There is an agent to integrate [Spock](https://spockframework.org/) with ReportPortal. + +Spock is an open-source testing framework for Java and Groovy applications. It allows to write automated tests and specifications using a simple and intuitive syntax. + +[Installation guide](https://github.com/reportportal/agent-java-spock#readme) + +[Examples](https://github.com/reportportal/examples-java/tree/master/example-spock) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/TestNG.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/TestNG.md new file mode 100644 index 0000000000..8e4a331e89 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/TestNG.md @@ -0,0 +1,34 @@ +--- +sidebar_position: 3 +sidebar_label: TestNG +description: Integrating TestNG test results with ReportPortal provides comprehensive analysis and insights. +--- + +# ReportPortal TestNG Integration + +There is an agent to integrate [TestNG](https://testng.org/#_testng_documentation) with ReportPortal. + +TestNG provides support for attaching custom listeners, reporters, annotation transformers and method interceptors to your tests. + +TestNG agent can handle next events: + +- Start launch +- Finish launch +- Start suite +- Finish suite +- Start test +- Finish test +- Start test step +- Successful finish of test step +- Fail of test step +- Skip of test step +- Start configuration (All «before» and «after» methods) +- Fail of configuration +- Successful finish of configuration +- Skip configuration + +Elevate your TestNG test automation reporting with ReportPortal! + +[Installation guide](https://github.com/reportportal/agent-java-testNG#readme) + +[Examples](https://github.com/reportportal/examples-java/tree/master/example-testng-fork-execution) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/index.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/index.md new file mode 100644 index 0000000000..8a053cea93 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Java/index.md @@ -0,0 +1,43 @@ +--- +sidebar_label: Java +sidebar_position: 1 +description: Enhance your test automation with advanced Java reporting in ReportPortal. +--- + +# Java + +To integrate your Java test framework with ReportPortal, you need to create a file named `reportportal.properties` in your in your Java project in a source folder `src/main/resources` or `src/test/resources` (depending on where your tests are located): + +**reportportal.properties** + +``` +rp.endpoint={RP_SERVER_URL} + +rp.api.key={YOUR_TOKEN} + +rp.project={YOUR_PROJECT} + +rp.launch={NAME_OF_YOUR_LAUNCH} +``` + +**Property description** + +`rp.endpoint` - the URL for the report portal server (actual link). + +`rp.api.key` - an access token for Report Portal which is used for user identification. It can be found on your report portal user profile page. + +`rp.project` - a project code on which the agent will report test launches. Must be set to one of your assigned projects. + +`rp.launch` - a user-selected identifier of test launches. + +:::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](https://github.com/reportportal/client-java#property-file) available for fine grain tuning of integration. + +If you need a sophisticated and full-featured integration with a test framework, you can configure it by your self. + +All agents use [client-java](https://github.com/reportportal/client-java) to communicate with ReportPortal API and as common code library. Also you can use any combination of agent and logger. + +Advance your Java reporting with ReportPortal! diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/Codecept.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/Codecept.md new file mode 100644 index 0000000000..8a30b4c0a0 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/Codecept.md @@ -0,0 +1,13 @@ +--- +sidebar_position: 3 +sidebar_label: Codecept +description: Use ReportPortal with CodeceptJS to send test results, logs, and screenshots automatically to a centralized dashboard for easier debugging and analysis. +--- + +# ReportPortal Codecept Integration + +There is an agent to integrate [Codecept](https://codecept.io/) with ReportPortal. + +Codecept is a testing framework for Node.js applications that provides a unified API for end-to-end testing. Codecept can be used to write and run acceptance tests, functional tests, and end-to-end tests. + +[Installation guide](https://github.com/reportportal/agent-js-codecept#readme) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/CucumberJS.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/CucumberJS.md new file mode 100644 index 0000000000..fb6ec782cc --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/CucumberJS.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 2 +sidebar_label: CucumberJS +description: Integrate CucumberJS BDD framework with ReportPortal for comprehensive test automation reporting and JavaScript behavior-driven testing. +--- + +# ReportPortal CucumberJS Integration + +There is an agent to integrate [CucumberJS](https://cucumber.io/docs/installation/javascript/) with ReportPortal. + +CucumberJS is an open-source JavaScript testing framework for writing and running automated tests in plain language. + +[Installation guide](https://github.com/reportportal/agent-js-cucumber#readme) + +[Examples](https://github.com/reportportal/examples-js/tree/master/example-cucumber) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/Cypress.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/Cypress.md new file mode 100644 index 0000000000..ba14f28c2f --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/Cypress.md @@ -0,0 +1,19 @@ +--- +sidebar_position: 6 +sidebar_label: Cypress +description: Effortlessly monitor test execution using Cypress test reporting with ReportPortal. +--- + +# ReportPortal Cypress Integration + +There is an agent to integrate [Cypress](https://www.cypress.io/) with ReportPortal. + +Cypress is a testing framework for web applications. + +Using Cypress, it is possible to write and run automated tests with simulation of user interactions with their application (clicking buttons, filling forms, navigating between pages). + +Examine your Cypress reporting with ReportPortal! + +[Installation guide](https://github.com/reportportal/agent-js-cypress#readme) + +[Examples](https://github.com/reportportal/examples-js/tree/master/example-cypress) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/Jasmine.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/Jasmine.md new file mode 100644 index 0000000000..727ea3627d --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/Jasmine.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 10 +sidebar_label: Jasmine +description: Integrate Jasmine testing framework with ReportPortal for testing analysis. +--- + +# ReportPortal Jasmine Integration + +There is an agent to integrate [Jasmine](https://jasmine.github.io/) with ReportPortal. + +Jasmine is a testing framework for JavaScript with intuitive way to write and run tests for web applications. + +[Installation guide](https://github.com/reportportal/agent-js-jasmine#readme) + +[Examples](https://github.com/reportportal/examples-js/tree/master/example-jasmine) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/Jest.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/Jest.md new file mode 100644 index 0000000000..83f9c8c534 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/Jest.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 8 +sidebar_label: Jest +description: Integrate Jest with ReportPortal to log test results, capture failures and trace details, and improve debugging and insight into your test runs. +--- + +# ReportPortal Jest Integration + +There is an agent to integrate [Jest](https://jestjs.io/) with ReportPortal. + +Jest is a flexible JavaScript testing framework with a focus on simplicity. + +[Installation guide](https://github.com/reportportal/agent-js-jest#readme) + +[Examples](https://github.com/reportportal/examples-js/tree/master/example-jest) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/Mocha.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/Mocha.md new file mode 100644 index 0000000000..c64d627883 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/Mocha.md @@ -0,0 +1,17 @@ +--- +sidebar_position: 7 +sidebar_label: Mocha +description: Mocha reporting with ReportPortal provides detailed insights and seamless test result management for JavaScript applications. +--- + +# ReportPortal Mocha Integration + +There is an agent to integrate [Mocha](https://mochajs.org/) with ReportPortal. It was designed to work with mocha programmatically, in order to be able to parametrize each test run. + +Mocha is a popular JavaScript testing framework for both front-end and back-end applications. + +Analyze your Mocha test results with ReportPortal! + +[Installation guide](https://github.com/reportportal/agent-js-mocha#readme) + +[Examples](https://github.com/reportportal/examples-js/tree/master/example-mocha) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/Nightwatch.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/Nightwatch.md new file mode 100644 index 0000000000..8adeddde16 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/Nightwatch.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 11 +sidebar_label: Nightwatch +description: Integrate Nightwatch testing framework web/mobile testing analysis. +--- + +# ReportPortal Nightwatch Integration + +There is an agent to integrate [Nightwatch](https://nightwatchjs.org/) with ReportPortal. + +Nightwatch is a testing framework to automate tests for web applications, supports testing on mobile browsers and native apps as well. + +[Installation guide](https://github.com/reportportal/agent-js-nightwatch#readme) + +[Examples](https://github.com/reportportal/examples-js/tree/master/example-nightwatch) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/Playwright.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/Playwright.md new file mode 100644 index 0000000000..49b8d7d551 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/Playwright.md @@ -0,0 +1,19 @@ +--- +sidebar_position: 1 +sidebar_label: Playwright +description: Integrate Playwright test reporting with ReportPortal to track automation results and optimize testing workflows. +--- + +# ReportPortal Playwright Integration + +There is an agent to integrate [Playwright](https://playwright.dev/) with ReportPortal. + +Playwright is an open-source JavaScript framework for web testing. + +It offers a high-level API for automating web browser actions, including page navigation, element interaction, and more. + +Improve your Playwright reporting with ReportPortal! + +[Installation guide](https://github.com/reportportal/agent-js-playwright#readme) + +[Examples](https://github.com/reportportal/examples-js/tree/master/example-playwright) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/Postman.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/Postman.md new file mode 100644 index 0000000000..2bd48d5be5 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/Postman.md @@ -0,0 +1,17 @@ +--- +sidebar_position: 5 +sidebar_label: Postman +description: Postman reporting with ReportPortal streamlines API testing and development workflows. +--- + +# ReportPortal Postman Integration + +There is an agent to integrate [Postman](https://www.postman.com/) (based on Newman collection runner) with ReportPortal. + +Postman is a popular API development tool for the building, testing and documenting APIs. + +Optimize your Postman test reporting with ReportPortal! + +[Installation guide](https://github.com/reportportal/agent-js-postman#readme) + +[Examples](https://github.com/reportportal/examples-js/tree/master/example-postman) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/TestCafe.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/TestCafe.md new file mode 100644 index 0000000000..f08def9365 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/TestCafe.md @@ -0,0 +1,17 @@ +--- +sidebar_position: 9 +sidebar_label: TestCafe +description: Simplify TestCafe test reporting with ReportPortal. +--- + +# ReportPortal TestCafe Integration + +There is an agent to integrate [TestCafe](https://testcafe.io/) with ReportPortal. + +TestCafe is a popular end-to-end testing framework for web applications that provides simplified way to automate tests in modern web browsers. + +Review your TestCafe test results with ReportPortal! + +[Installation guide](https://github.com/reportportal/agent-js-testcafe#readme) + +[Examples](https://github.com/reportportal/examples-js/tree/master/example-testcafe) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/Vitest.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/Vitest.md new file mode 100644 index 0000000000..c0b02ee820 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/Vitest.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 12 +sidebar_label: Vitest +description: Integrate Vitest with ReportPortal to capture logs, analyze failed tests, and gain clear insights into JavaScript test execution and quality. +--- + +# ReportPortal Vitest Integration + +There is an agent to integrate [Vitest](https://vitest.dev/) with ReportPortal. + +Vitest is fast open-source Vite-native testing framework. + +With Vitest, developers can execute tests within Node.js to speed up the testing process. + +[Installation guide](https://github.com/reportportal/agent-js-vitest#readme) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/WebdriverIO.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/WebdriverIO.md new file mode 100644 index 0000000000..41ac5f7bd1 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/WebdriverIO.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 4 +sidebar_label: WebdriverIO +description: Use WebdriverIO to send detailed test logs, screenshots, and steps to ReportPortal, so failures are clear and debugging is faster. +--- + +# ReportPortal WebdriverIO Integration + +There is an agent to integrate [Webdriver.io](https://webdriver.io/) with ReportPortal. + +WebdriverIO is a JavaScript test automation framework for browser and mobile automation. + +[Installation guide](https://github.com/reportportal/agent-js-webdriverio#readme) + +[Examples](https://github.com/reportportal/examples-js/tree/master/example-webdriverio) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/index.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/index.md new file mode 100644 index 0000000000..8e69afe082 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/JavaScript/index.md @@ -0,0 +1,55 @@ +--- +sidebar_label: JavaScript +sidebar_position: 2 +description: ReportPortal integrates with JavaScript frameworks, enabling better test management with a real-time test results dashboard. +--- + +# JavaScript + +ReportPortal provides robust integration with many JavaScript testing frameworks, helping you manage tests better with real-time test results dashboard. By connecting ReportPortal to your test frameworks, you can collect all your test results in one place to track issues, see patterns, and improve test performance. + +ReportPortal supports seamless integration with the following JavaScript test frameworks: + +- [Playwright](/log-data-in-reportportal/test-framework-integration/JavaScript/Playwright)
+An advanced testing framework for web applications, Playwright offers comprehensive end-to-end testing. Playwright integration with ReportPortal enhances the clarity and tracking of your test results. + +- [CucumberJS](/log-data-in-reportportal/test-framework-integration/JavaScript/CucumberJS)
+A behavior-driven development (BDD) framework that emphasizes collaboration between developers and non-developers. By integrating with ReportPortal, CucumberJS allows you to track your Gherkin test scenarios and their results in real time. + +- [CodeceptJS](/log-data-in-reportportal/test-framework-integration/JavaScript/Codecept)
+A modern end-to-end testing framework with an easy-to-use syntax. CodeceptJS integration with ReportPortal centralizes all your test execution data, providing detailed analytics and reporting for better test management. + +- [WebdriverIO](/log-data-in-reportportal/test-framework-integration/JavaScript/WebdriverIO)
+A robust automation framework. This integration enables seamless reporting of UI test executions, complete with logs and screenshots, which are sent directly to ReportPortal for real-time analysis. + +- [Cypress](/log-data-in-reportportal/test-framework-integration/JavaScript/Cypress)
+An open-source, front-end testing tool designed for the modern web. Cypress integration with ReportPortal enhances test management by providing detailed logging of test executions and real-time analytics for efficient debugging and insights. + +- [Mocha](/log-data-in-reportportal/test-framework-integration/JavaScript/Mocha)
+A flexible testing framework ideal for unit and integration tests. ReportPortal integration with Mocha captures test execution logs and generates comprehensive reports. + +- [Jest](/log-data-in-reportportal/test-framework-integration/JavaScript/Jest)
+A feature-rich testing framework. Jest’s integration with ReportPortal allows for the reporting of unit test results, tracking of errors, and monitoring of test automation metrics. + +- [Vitest](/log-data-in-reportportal/test-framework-integration/JavaScript/Vitest)
+A modern unit testing framework designed specifically for Vite projects. Thanks to this integration, Vitest sends detailed test execution results to ReportPortal, enabling automated defect triaging and test failure analytics. + +- [Nightwatch](/log-data-in-reportportal/test-framework-integration/JavaScript/Nightwatch)
+A browser automation framework. With integration with ReportPortal, you can get the results of Nightwatch UI test executions immediately for analysis. + +- [Jasmine](/log-data-in-reportportal/test-framework-integration/JavaScript/Jasmine)
+A behavior-driven development (BDD) testing framework. Jasmine’s integration with ReportPortal logs test results and enables you to track test performance and failures. + +- [TestCafe](/log-data-in-reportportal/test-framework-integration/JavaScript/TestCafe)
+An open-source, end-to-end testing framework for web applications. TestCafe’s integration with ReportPortal ensures test results are automatically sent for reporting, providing a clear overview of test performance across browsers. + +- [Postman](/log-data-in-reportportal/test-framework-integration/JavaScript/Postman)
+Widely used for API testing, Postman’s integration with ReportPortal helps track and log API test results for enhanced analytics and real-time reporting. + +If you need a sophisticated and full-featured integration with a test framework, you can configure it by your self. + +Choose which combination of agent and client you need, and then follow the instructions provided for each agent. + +All agents use [client-javascript](https://github.com/reportportal/client-javascript) to communicate with ReportPortal API. + +Each agent can be installed from [npm](https://www.npmjs.com/settings/reportportal/packages?page=1&perPage=10) or [GitHub packages](https://github.com/orgs/reportportal/packages?ecosystem=npm) registry. diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/Loggers/Log4Net.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/Loggers/Log4Net.md new file mode 100644 index 0000000000..9d7804dd41 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/Loggers/Log4Net.md @@ -0,0 +1,13 @@ +--- +sidebar_position: 2 +sidebar_label: Log4Net +description: Learn how to set up Log4Net in .NET tests to capture detailed logs, track issues, and centralize reporting for faster troubleshooting and quality assurance. +--- + +# ReportPortal Log4Net Integration + +[Log4net](https://logging.apache.org/log4net/) is a logging library for .NET applications. It offers a versatile and customizable architecture for recording application events to a number of locations, including files, databases, and remote servers. + +[Installation guide](https://github.com/reportportal/logger-net-log4net#readme) + +[Examples](https://github.com/reportportal/example-net-specflow-nunit2-log4net) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/Loggers/NLog.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/Loggers/NLog.md new file mode 100644 index 0000000000..8b9424de9e --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/Loggers/NLog.md @@ -0,0 +1,11 @@ +--- +sidebar_position: 3 +sidebar_label: NLog +description: Integrate NLog with .NET tests to record detailed logs, monitor application health, and enhance debugging workflows for more efficient issue resolution. +--- + +# ReportPortal NLog Integration + +[NLog](https://nlog-project.org/) is a logging platform for .NET platforms. It supports a range of logging formats, including plain text and JSON. + +[Installation guide](https://github.com/reportportal/logger-net-nlog#readme) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/Loggers/Serilog.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/Loggers/Serilog.md new file mode 100644 index 0000000000..499e79ee63 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/Loggers/Serilog.md @@ -0,0 +1,11 @@ +--- +sidebar_position: 1 +sidebar_label: Serilog +description: Integrate Serilog with .NET to log structured events, capture detailed test information, and enhance debugging and analysis in your testing workflows. +--- + +# ReportPortal Serilog Integration + +[Serilog](https://serilog.net/) is a logging library for .Net. Serilog was created with powerful organized event data in mind, unlike other logging libraries. + +[Installation guide](https://github.com/reportportal/logger-net-serilog#readme) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/Loggers/TraceListener.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/Loggers/TraceListener.md new file mode 100644 index 0000000000..9b520fd8b3 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/Loggers/TraceListener.md @@ -0,0 +1,11 @@ +--- +sidebar_position: 4 +sidebar_label: TraceListener +description: Capture .NET TraceListener logs to track application behavior, monitor test execution, and gain actionable insights for faster and more efficient QA. +--- + +# ReportPortal TraceListener Integration + +[TraceListener](https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.tracelistener?view=net-8.0) is a component of the .NET Framework's logging system. Provides receiving and handling trace messages and forwarding them to the appropriate destination. + +[Installation guide](https://github.com/reportportal/logger-net-tracelistener#readme) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/Loggers/_category_.json b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/Loggers/_category_.json new file mode 100644 index 0000000000..645a8343db --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/Loggers/_category_.json @@ -0,0 +1,5 @@ +{ + "link": { + "type": "generated-index" + } +} diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/NUnit.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/NUnit.md new file mode 100644 index 0000000000..cae9728238 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/NUnit.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 1 +sidebar_label: NUnit +description: Monitor NUnit tests in real time, record failures with screenshots, and gain actionable insights to speed up .NET application testing. +--- + +# ReportPortal NUnit Integration + +There is an agent to integrate [NUnit](https://nunit.org/) with ReportPortal. + +NUnit is a testing framework to write and run unit tests for .NET applications. Supports all .Net languages. + +[Installation guide](https://github.com/reportportal/agent-net-nunit#readme) + +[Examples](https://github.com/reportportal/example-net-nunit) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/Reqnroll.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/Reqnroll.md new file mode 100644 index 0000000000..7c17bd1309 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/Reqnroll.md @@ -0,0 +1,17 @@ +--- +sidebar_position: 5 +sidebar_label: Reqnroll +description: Track, analyze, and manage your Reqnroll test results with structured Given-When-Then scenarios. +--- + +# ReportPortal Reqnroll Integration + +There is an agent to integrate [Reqnroll](https://reqnroll.net/) with ReportPortal. + +Reqnroll is an open-source Cucumber-style BDD test automation framework for .NET. + +It allows to outline your requirements using simple Given-When-Then scenarios and then transform them into automated tests to confirm they've been carried out correctly. + +Enhance your Reqnroll test automation reporting with ReportPortal! + +[Installation guide](https://github.com/reportportal/agent-dotnet-reqnroll#readme) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/SpecFlow.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/SpecFlow.md new file mode 100644 index 0000000000..361209c088 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/SpecFlow.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 3 +sidebar_label: SpecFlow +description: Integrate SpecFlow BDD framework for test automation reporting. +--- + +# ReportPortal SpecFlow Integration + +There is an agent to integrate [SpecFlow](https://specflow.org/) with ReportPortal. + +Can be integrated with popular development tools (for example, Visual Studio). Thus, developers can write and execute acceptance tests directly from their development environment. + +[Installation guide](https://github.com/reportportal/agent-net-specflow#readme) + +[Examples](https://github.com/reportportal/example-net-specflow) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/VSTest.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/VSTest.md new file mode 100644 index 0000000000..de58018d3f --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/VSTest.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 2 +sidebar_label: VSTest +description: Integrate VSTest with ReportPortal to centralize .NET test results, monitor execution trends, and enhance test analysis across platforms like Windows and Linux. +--- + +# ReportPortal VSTest Integration + +There is an agent to integrate [VSTest](https://github.com/microsoft/vstest) with ReportPortal. + +VSTest is a cross-platform testing framework for writing and running unit tests, integration tests, and functional tests for .NET applications on various platforms, including Windows, Linux, and macOS. + +[Installation guide](https://github.com/reportportal/agent-net-vstest#readme) + +[Examples](https://github.com/reportportal/example-net-vstest) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/index.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/index.md new file mode 100644 index 0000000000..e8e150bfc0 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/index.md @@ -0,0 +1,32 @@ +--- +sidebar_label: .Net +sidebar_position: 3 +description: Use .NET frameworks with ReportPortal for real-time test monitoring, trend tracking, failure management, result analysis, and test automation reports. +--- + +# .Net + +By integrating .NET frameworks with ReportPortal, you can monitor test executions in real-time, identify trends, manage test failures, analyze test results and create test automation report. + +ReportPortal supports seamless integration with the following dotnet testing test frameworks: + +- [NUnit](/log-data-in-reportportal/test-framework-integration/Net/NUnit)
+One of the most popular unit testing frameworks in net projects, NUnit is highly customizable and supports a variety of test cases. With ReportPortal integration, NUnit test results can be visualized in real-time. This allows you to monitor the progress of your unit tests and quickly identify issues. + +- [VSTest](/log-data-in-reportportal/test-framework-integration/Net/VSTest)
+The built-in test runner for Visual Studio, VSTest, is commonly used for running unit tests, integration tests, and functional tests. Integration VSTest with ReportPortal allows you to centralize test execution data, ensuring you have a complete view of your test suite. + +- [SpecFlow](/log-data-in-reportportal/test-framework-integration/Net/SpecFlow)
+SpecFlow is a behavior-driven development (BDD) framework for .NET that enables collaboration between developers, testers, and business stakeholders by using Gherkin syntax for writing test scenarios. By integrating SpecFlow with ReportPortal, you can track and report on your BDD scenarios and feature files in real-time. + +- [xUnit](/log-data-in-reportportal/test-framework-integration/Net/xUnit)
+A widely used unit testing framework in the .NET ecosystem, xUnit is favored for its flexibility and extensibility. With ReportPortal, you can capture real-time xUnit test execution results, visualize test trends, and quickly identify failure patterns, all within ReportPortal’s interactive test automation metrics dashboard. + +- [Reqnroll](/log-data-in-reportportal/test-framework-integration/Net/Reqnroll)
+A relatively newer test automation framework for .NET, Reqnroll focuses on automation and reliability. ReportPortal integration with Reqnroll helps centralize test execution data, enabling comprehensive reporting and analysis for automation test cases, which improves test management and traceability. + +If you need a sophisticated and full-featured integration with a test framework, you can configure it by your self. + +Choose which combination of agent, client, and logger you need, and then follow the instructions provided for each agent. + +All agents use [Rest api client](https://github.com/reportportal/client-net) or [Multi-threaded client](https://github.com/reportportal/commons-net). diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/xUnit.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/xUnit.md new file mode 100644 index 0000000000..25bd1e14b9 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Net/xUnit.md @@ -0,0 +1,21 @@ +--- +sidebar_position: 4 +sidebar_label: xUnit +description: Integrate xUnit with ReportPortal to capture real-time test results, visualize trends, and identify failures efficiently, enhancing your .NET test automation. +--- + +# ReportPortal xUnit Integration + +There is an agent to integrate [xUnit](https://xunit.net/) with ReportPortal. + +xUnit is a testing framework for .NET applications. The "Arrange, Act, Assert" (AAA) pattern, which is a systematic method of designing test cases, is the foundation of xUnit. The AAA pattern places emphasis on how each test should clearly distinguish between how the test environment and data are set up, how the test code is executed, and how the test result is verified (Assert). + +Currently, we have 2 xUnit agents: + +* [agent-net-xunit](https://github.com/reportportal/agent-net-xunit#readme)
+Old version. It supports xUnit v2 and earlier .NET frameworks. + +* [agent-dotnet-xunit.v3](https://github.com/reportportal/agent-dotnet-xunit.v3#readme)
+New version. It aligns with xUnit v3. + +[Examples](https://github.com/reportportal/example-net-xunit) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Other/gauge.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Other/gauge.md new file mode 100644 index 0000000000..037eaf0e17 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Other/gauge.md @@ -0,0 +1,14 @@ +--- +sidebar_position: 3 +sidebar_label: Gauge +description: Connect Gauge test results with ReportPortal to monitor specifications execution, analyze automation outcomes, and enhance testing efficiency. +--- + +# Gauge + +There is an agent to integrate [Gauge](https://gauge.org/) with ReportPortal. + +Gauge is an open-source test automation framework by ThoughtWorks that focuses on readable, specification-style tests written in Markdown. +It supports multiple programming languages and helps teams create maintainable tests that align closely with business requirements. + +[Installation guide](https://github.com/reportportal/agent-net-gauge#readme) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Other/index.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Other/index.md new file mode 100644 index 0000000000..a2c8293c61 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Other/index.md @@ -0,0 +1,17 @@ +--- +sidebar_label: Other +sidebar_position: 6 +description: Integrate unsupported or custom test frameworks by implementing your own integration with ReportPortal, enabling centralized test result visualization. +--- + +# Other + +ReportPortal is an open-source test automation reporting tool with a public API. + +Some integrations with test frameworks are developed and maintained by the ReportPortal team, while others are created and supported by external contributors. If you don’t see your test framework listed in our documentation or repositories, try searching on GitHub. Additionally, you can ask within your framework’s community - someone there might be able to guide you on integrating it with ReportPortal. + +What can you do if you cannot find your test framework? You can create custom integrations! To get started, please visit our [Implement own integration page](/log-data-in-reportportal/ImplementOwnIntegration/). + +:::note +We offer paid support for new or existing integrations. For more details, please [contact us](https://reportportal.io/contact-us/general/). +::: diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Other/silktest.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Other/silktest.md new file mode 100644 index 0000000000..464dac2323 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Other/silktest.md @@ -0,0 +1,14 @@ +--- +sidebar_position: 1 +sidebar_label: SilkTest +description: Track and analyze SilkTest automation results in one place, get clear insights into test execution. +--- + +# SilkTest + +There is an agent to integrate [SilkTest](https://www.microfocus.com/documentation/silk-test/200/en/silk4j-help-en/SILKTEST-4C899BC5-SILKTESTPRODUCTSUITE-CON.html) with ReportPortal. + +SilkTest is a functional test automation framework for web, mobile, and enterprise applications. +It supports multiple technologies and allows creating robust, maintainable automated tests across different platforms. + +[Installation guide](https://github.com/reportportal/agent-silktest) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Other/xctest.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Other/xctest.md new file mode 100644 index 0000000000..91320f2c55 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Other/xctest.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 2 +sidebar_label: XCTest Agent +description: Collect, analyze, and visualize XCTest execution results in our test automation reporting dashboard. +--- + +# XCTest Agent + +There is an agent to integrate [XCTest Agent](https://developer.apple.com/documentation/xctest) with ReportPortal. + +XCTest is Apple’s native testing framework for iOS, iPadOS, macOS, watchOS, and tvOS applications. +XCTest Agent enables collecting and sending test execution results from XCTest-based tests to ReportPortal. + +[Installation guide](https://github.com/reportportal/agent-swift-XCTest#readme) + diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/PHP/Behat.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/PHP/Behat.md new file mode 100644 index 0000000000..ccb1889692 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/PHP/Behat.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 2 +sidebar_label: Behat +description: Integrate Behat with ReportPortal to log Gherkin scenarios, track feature execution, and streamline test reporting for PHP applications. +--- + +# ReportPortal Behat Integration + +There is an agent to integrate [Behat](https://docs.behat.org/en/latest/) with ReportPortal. + +Behat is a test framework for PHP. + +Behat uses domain-specific language (DSL) Gherkin to describe the application behavior in a human-readable format. + +[Installation guide](https://github.com/reportportal/agent-php-Behat#readme) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/PHP/Codeception.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/PHP/Codeception.md new file mode 100644 index 0000000000..23b0e9fe8d --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/PHP/Codeception.md @@ -0,0 +1,14 @@ +--- +sidebar_position: 3 +sidebar_label: Codeception +description: Integrate Codeception for PHP test execution analysis. +--- + +# ReportPortal Codeception Integration + +There is an agent to integrate [Codeception](https://codeception.com/)-based test framework with ReportPortal. + +Codeception is a modern PHP testing framework for web applications. One of its primary advantages is ability to integrate with various testing tools. So, developers can write tests in different environments. + +[Installation guide](https://github.com/reportportal/agent-php-Codeception#readme) + diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/PHP/PHPUnit.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/PHP/PHPUnit.md new file mode 100644 index 0000000000..689f7b04a4 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/PHP/PHPUnit.md @@ -0,0 +1,13 @@ +--- +sidebar_position: 1 +sidebar_label: PHPUnit +description: Integrate PHPUnit with ReportPortal for comprehensive test automation reporting. +--- + +# ReportPortal PHPUnit Integration + +There is an agent to integrate [PHPUnit](https://phpunit.de/) with ReportPortal. + +PHPUnit is a programmer-oriented testing framework for PHP. Support for testing PHP code in isolation is one of PHPUnit's core capabilities. + +[Installation guide](https://github.com/reportportal/agent-php-PHPUnit#readme) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/PHP/index.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/PHP/index.md new file mode 100644 index 0000000000..b4996eebbc --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/PHP/index.md @@ -0,0 +1,26 @@ +--- +sidebar_label: PHP +sidebar_position: 5 +description: ReportPortal integrates with popular PHP frameworks, helping teams manage test results, visualize trends, and optimize testing efficiently. +--- + +# PHP + +ReportPortal provides smooth integration with the most popular PHP testing frameworks, enabling teams to efficiently manage their test execution results, visualize trends, and optimize the testing process. + +ReportPortal supports seamless integration with the following PHP test frameworks: + +- [PHPUnit](/log-data-in-reportportal/test-framework-integration/PHP/PHPUnit)
+As the de facto standard testing framework for PHP, PHPUnit is widely used for unit testing and test-driven development (TDD). Integrating PHPUnit with ReportPortal allows you to capture detailed test execution data. This real-time reporting gives you immediate feedback on test results and enables tracking of test trends, which improves the overall quality and stability of your application. + +- [Behat](/log-data-in-reportportal/test-framework-integration/PHP/Behat)
+A behavior-driven development (BDD) framework. Behat is used to test the behavior of your PHP application through scenarios written in Gherkin syntax. With Behat integration, ReportPortal logs and displays results for each feature and scenario, allowing both developers and non-technical stakeholders to collaborate more effectively. This integration helps teams track scenario execution, understand application behavior, and identify issues early in the development cycle. + +- [Codeception](/log-data-in-reportportal/test-framework-integration/PHP/Codeception)
+Codeception supports multiple testing types, including unit, functional, and acceptance testing. By integrating Codeception with ReportPortal, you can centralize all test results from different types of tests, improving overall visibility into the testing process. ReportPortal captures detailed test execution data, screenshots, logs, and failure reports, allowing for comprehensive analysis and debugging. + +If you need a sophisticated and full-featured integration with a test framework, you can configure it by your self. + +Choose which combination of agent and client you need, and then follow the instructions provided for each agent. + +All agents use [client-php](https://github.com/reportportal/client-php). diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Python/RobotFramework.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Python/RobotFramework.md new file mode 100644 index 0000000000..2d0110aaea --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Python/RobotFramework.md @@ -0,0 +1,17 @@ +--- +sidebar_position: 2 +sidebar_label: Robot Framework +description: Enable seamless result tracking and analysis using Robot Framework reporting in ReportPortal. +--- + +# ReportPortal Robot Framework Integration + +There is a Listener for [RobotFramework](https://robotframework.org/) to report results to ReportPortal. + +Robot Framework is a generic test automation framework for test automation and robotic process automation (RPA). Robot has a simple syntax with keywords that are easy to understand. + +Boost your Robot Framework test reporting with ReportPortal! + +[Installation guide](https://github.com/reportportal/agent-Python-RobotFramework#readme) + +[Examples](https://github.com/reportportal/examples-python/tree/master/robotframework) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Python/behave.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Python/behave.md new file mode 100644 index 0000000000..716c7561d3 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Python/behave.md @@ -0,0 +1,16 @@ +--- +sidebar_position: 3 +sidebar_label: behave +description: Track and visualize Behave test results automatically, view Gherkin scenario outcomes, and streamline team collaboration for faster issue resolution. +--- + +# ReportPortal behave Integration + +There is [behave](https://behave.readthedocs.io/en/stable/) extension for reporting test results of behave to the ReportalPortal. + +Behave is a popular Python-based testing framework. It can be used for testing different types of applications: web applications, APIs, desktop. Behave has a syntax which is easy to understand even for non-technical users. + +[Installation guide](https://github.com/reportportal/agent-python-behave#readme) + +[Examples](https://github.com/reportportal/examples-python/tree/master/behave) + diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Python/index.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Python/index.md new file mode 100644 index 0000000000..439077d64b --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Python/index.md @@ -0,0 +1,29 @@ +--- +sidebar_label: Python +sidebar_position: 4 +description: Use Python test frameworks with automation testing reporting tools to centralize results, analyze failures, and improve test management and QA processes. +--- + +# Python + +By integrating Python test frameworks with automation testing reporting tools, you can centralize test results, track trends, and analyze failures across all your tests, which enhances overall test management and quality assurance processes. + +ReportPortal supports integration with the following Python testing frameworks: + +- [pytest](/log-data-in-reportportal/test-framework-integration/Python/pytest)
+One of the most widely used Python testing frameworks, pytest is known for its simplicity and flexibility in writing both unit and functional tests. Integrating pytest with ReportPortal allows you to capture detailed logs, test results, and execution data. With real-time reporting, you can monitor test outcomes and get insights into test failures. + +- [Robot Framework](/log-data-in-reportportal/test-framework-integration/Python/RobotFramework)
+A keyword-driven test automation framework, Robot Framework is popular for acceptance testing and behavior-driven development (BDD). By integrating Robot Framework with ReportPortal, you can track keyword-driven test results in real-time to obtain visibility into each test case and scenario. The detailed reporting helps non-technical stakeholders and developers collaborate effectively, improving communication and test failure analysis. + +- [behave](/log-data-in-reportportal/test-framework-integration/Python/behave)
+A behavior-driven development (BDD) framework for Python, behave allows teams to write tests in Gherkin syntax to describe application behavior. When integrated with ReportPortal, behave provides real-time insights into test scenarios and their results. + +- [nosetests](/log-data-in-reportportal/test-framework-integration/Python/nosetests)
+A Python testing framework designed to make writing and running tests easy, nosetests can handle both unit and functional testing. By integrating nosetests with ReportPortal, you can capture comprehensive detailed test execution report. The real-time reporting capabilities of ReportPortal provide visibility into test execution and allow you to track trends and improve software quality by identifying issues early in the development cycle. + +If you need a sophisticated and full-featured integration with a test framework, you can configure it by your self. + +Choose which combination of agent and client you need, and then follow the instructions provided for each agent. + +All agents use [client-python](https://github.com/reportportal/client-Python). diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Python/nosetests.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Python/nosetests.md new file mode 100644 index 0000000000..9d34e6d707 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Python/nosetests.md @@ -0,0 +1,13 @@ +--- +sidebar_position: 4 +sidebar_label: nosetests +description: Integrate nosetests with ReportPortal to capture detailed test results, monitor trends, and enhance test analysis for improved software quality. +--- + +# ReportPortal nosetests Integration + +There is [Nose](https://nose.readthedocs.io/en/latest/) plugin for reporting test results of Nose to the ReportalPortal. + +nosetests is the command-line tool used for running tests with the Nose testing framework. It makes it simple to run all tests with a single command. + +[Installation guide](https://github.com/reportportal/agent-python-nosetests#readme) diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Python/pytest.md b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Python/pytest.md new file mode 100644 index 0000000000..ce7b7d5bdb --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/Python/pytest.md @@ -0,0 +1,215 @@ +--- +sidebar_position: 1 +sidebar_label: pytest +description: Automatically log pytest test steps, capture failures with screenshots, and attach detailed logs to simplify test analysis and improve debugging efficiency. +--- + +# ReportPortal pytest Integration + +There is an [agent](https://github.com/reportportal/agent-python-pytest) to integrate [pytest](https://docs.pytest.org/en/7.3.x/) with ReportPortal. + +Pytest is a popular testing framework for Python applications. One of its advantages is the ability to run tests automatically without the manual configuration. + +## Installation + +To install the pytest plugin, run the following command in the terminal: + +```python + pip install pytest-reportportal +``` + +Look through the [CONTRIBUTING.rst](https://github.com/reportportal/agent-python-pytest/blob/develop/CONTRIBUTING.rst) for contribution guidelines. + +## Configuration + +Create the configuration file `pytest.ini` in the root directory of tests, or alternatively, specify one using a pytest command line option: + +```python + py.test -c config.cfg +``` + +The `pytest.ini` file should have next mandatory fields: + +- `rp_project` - name of project in ReportPortal +- `rp_endpoint` - address of ReportPortal Server + +And one type of authorization: API Key or OAuth 2.0 Password grant. You can do this by setting: +- `rp_api_key` or `RP_API_KEY` environment variable. You can get it in the User Profile section on the UI. + +Or: +- `rp_oauth_uri` - OAuth 2.0 token endpoint URL for password grant authentication. **Required** if API key is not used. +- `rp_oauth_username` - OAuth 2.0 username for password grant authentication. **Required** if OAuth 2.0 is used. +- `rp_oauth_password` - OAuth 2.0 password for password grant authentication. **Required** if OAuth 2.0 is used. +- `rp_oauth_client_id` - OAuth 2.0 client identifier. **Required** if OAuth 2.0 is used. +- `rp_oauth_client_secret` - OAuth 2.0 client secret. **Optional** for OAuth 2.0 authentication. +- `rp_oauth_scope` - OAuth 2.0 access token scope. **Optional** for OAuth 2.0 authentication. + +Example of `pytest.ini`: + +```python + [pytest] + rp_api_key = fb586627-32be-47dd-93c1-678873458a5f + rp_endpoint = http://192.168.1.10:8080 + rp_project = user_personal + rp_launch = AnyLaunchName + rp_launch_attributes = 'PyTest' 'Smoke' + rp_launch_description = 'Smoke test' + rp_ignore_attributes = 'xfail' 'usefixture' +``` + +The following parameters are optional: + +- `rp_client_type = SYNC` - Type of the under-the-hood ReportPortal client implementation. Possible values: [SYNC, ASYNC_THREAD, ASYNC_BATCHED]. +- `rp_launch = AnyLaunchName` - launch name (could be overridden by pytest --rp-launch option, default value is 'Pytest Launch'). +- `rp_launch_id = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` - id of the existing launch (the session will not handle the lifecycle of the given launch). +- `rp_launch_attributes = 'PyTest' 'Smoke' 'Env:Python3'` - list of attributes for launch. +- `rp_launch_description = 'Smoke test'` - launch description (could be overridden by pytest --rp-launch-description option, default value is ''). +- `rp_launch_timeout = 86400` - Maximum time to wait for child processes finish, default value: 86400 seconds (1 day). +- `rp_launch_uuid_print = True` - Enables printing Launch UUID on test run start. Default `False`. +- `rp_launch_uuid_print_output = stderr` - Launch UUID print output. Default `stdout`. Possible values: [stderr, stdout]. +- `rp_parent_item_id = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` - id of the existing test item for session to use as parent item for the tests (the session will not handle the lifecycle of the given test item). +- `rp_tests_attributes = 'PyTest' 'Smoke'` - list of attributes that will be added for each item in the launch. +- `rp_report_fixtures = False` - Enable reporting fixtures as test items. Possible values: [True, False]. +- `rp_connect_timeout = 15` - Connection timeout to ReportPortal server. Default value is "10.0". +- `rp_read_timeout = 15` - Response read timeout for ReportPortal connection. Default value is "10.0". +- `rp_log_batch_size = 20` - size of batch log request. +- `rp_log_batch_payload_limit = 65000000` - maximum payload size in bytes of async batch log requests. +- `rp_log_level = INFO` - The log level that will be reported. +- `rp_log_format = [%(levelname)7s] (%(name)s) %(message)s (%(filename)s:%(lineno)s)` - Format string to be used for logs sent to the service. +- `rp_log_custom_levels = 35:ASSUMPTION 37:ASSERTION` - Custom log levels specified as 'int level:string'. Overrides existing level if int level matches. +- `rp_ignore_attributes = 'xfail' 'usefixture'` - Ignore specified pytest markers. +- `rp_is_skipped_an_issue = False` - Treat skipped tests as required investigation. Default `True`. +- `rp_hierarchy_dirs_level = 0` - Directory starting hierarchy level (from pytest.ini level) (default `0`). +- `rp_hierarchy_dirs = True` - Enables hierarchy for tests directories, default `False`. Doesn't support 'xdist' plugin. +- `rp_hierarchy_dir_path_separator` - Path separator to display directories in test hierarchy. In case of empty value current system path separator will be used (os.path.sep). +- `rp_hierarchy_code` - Enables hierarchy for inner classes and parametrized tests, default `False`. Doesn't support 'xdist' plugin. +- `rp_hierarchy_test_file` - Controls display of test file name in the hierarchy and Item Name, default `True`. +- `rp_bts_issue_url = https://bugzilla.some.com/show_bug.cgi?id={issue_id}` - issue URL (issue_id will be filled by parameter from `@pytest.mark.issue` decorator). Fill this parameter if you want to automatically link failed test with an external issue or put a comment into ReportPortal defect. +- `rp_bts_project = PROJECT` - Bug Tracking System Project name to use along with `@pytest.mark.issue` decorator. Fill this parameter if you want to automatically link failed test with an external issue. Should be the same as in corresponding integration. +- `rp_bts_url = https://bugzilla.some.com/` - Bug Tracking System base URL to use along with `@pytest.mark.issue` decorator. Fill this parameter if you want to automatically link failed test with an external issue. Should be the same as in corresponding integration. +- `rp_issue_id_marks = True` - Enables adding marks for issue ids (e.g. "issue:123456"). +- `rp_verify_ssl = True` - Verify SSL when connecting to the server. +- `rp_mode = DEFAULT` - DEBUG or DEFAULT launch mode. DEBUG launches are displayed in a separate tab and not visible to anyone except owner. +- `rp_thread_logging` - EXPERIMENTAL - Enables support for reporting logs from threads by patching the builtin Thread class. Use with caution. +- `rp_api_retries = 0` - Amount of retries for performing REST calls to RP server. + +If you like to override the above parameters from command line, or from CI environment based on your build, then pass `-o "rp_launch_attributes=Smoke Tests"` during invocation. + +## Examples + +To log the test item flow to ReportPortal, use the Python logging handler provided by the plugin, as shown below: + +in conftest.py: + +```python + import logging + import sys + + import pytest + + from reportportal_client import RPLogger + + + @pytest.fixture(scope="session") + def rp_logger(): + logger = logging.getLogger(__name__) + logger.setLevel(logging.DEBUG) + logging.setLoggerClass(RPLogger) + return logger +``` + +in tests: + +```python + + # In this case only INFO messages will be sent to the ReportPortal. + def test_one(rp_logger): + rp_logger.info("Case1. Step1") + x = "this" + rp_logger.info("x is: %s", x) + assert 'h' in x + + # Message with an attachment. + import subprocess + free_memory = subprocess.check_output("free -h".split()) + rp_logger.info( + "Case1. Memory consumption", + attachment={ + "name": "free_memory.txt", + "data": free_memory, + "mime": "application/octet-stream", + }, + ) + + # This debug message will not be sent to the ReportPortal. + rp_logger.debug("Case1. Debug message") +``` + +Plugin can report doc-strings of tests as `descriptions`: + +```python + def test_one(): + """ + Description of the test case which will be sent to ReportPortal + """ + pass +``` + +Pytest markers will be attached as `attributes` to ReportPortal items. +In the following example attributes 'linux' and 'win32' will be used: + +```python + import pytest + + @pytest.mark.win32 + @pytest.mark.linux + def test_one(): + pass +``` + +If you don't want to attach specific markers, list them in `rp_ignore_attributes` parameter. + +## Launching + +To execute a test with ReportPortal, you need to include the '--reportportal' flag: + +```python + py.test ./tests --reportportal +``` + +## Test issue info + +Some pytest marks could be used to specify information about skipped or failed test result. + +The following mark fields are used to get information about test issue: + +- `issue_id` - issue id (or list) in tracking system. This id will be added as comment to test fail result. If URL is specified in pytest ini file (see `rp_issue_system_url`), id will added as link to tracking system. +- `reason` - some comment that will be added to test fail description. +- `issue_type` - short name of RP issue type that should be assigned to failed or skipped test. + +Example: + +```python + @pytest.mark.issue(issue_id="111111", reason="Some bug", issue_type="PB") + def test(): + assert False +``` + +## Send attachment (screenshots) + +Screenshots [can be added](https://github.com/reportportal/client-Python#send-attachment-screenshots) to pytest tests for better debugging and visualization. + +## Test internal steps, aka "Nested steps" + +To implement Nested steps reporting please follow [our guide](https://github.com/reportportal/client-Python/wiki/Nested-steps). + +Also, there are examples of usage: [example 1](https://github.com/reportportal/examples-python/blob/master/pytest/tests/test_nested_steps.py) and [example 2](https://github.com/reportportal/examples-python/blob/master/pytest/tests/test_nested_steps_ui.py). + +## Troubleshooting + +If you would like to temporary disable integrations with ReportPortal just +deactivate `pytest_reportportal` plugin with command like: + +```python + py.test -p no:pytest_reportportal ./tests +``` diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/img/Integrations.png b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/img/Integrations.png new file mode 100644 index 0000000000..0698e3918d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/img/Integrations.png differ diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/img/LoggingDiagram.png b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/img/LoggingDiagram.png new file mode 100644 index 0000000000..c623d6608c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/img/LoggingDiagram.png differ diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/img/Pic234.jpg b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/img/Pic234.jpg new file mode 100644 index 0000000000..5639ffb7fe Binary files /dev/null and b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/img/Pic234.jpg differ diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/img/SoapuiProperties.png b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/img/SoapuiProperties.png new file mode 100644 index 0000000000..c127827a5f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/img/SoapuiProperties.png differ diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/img/UserProfilePage.png b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/img/UserProfilePage.png new file mode 100644 index 0000000000..01a9fb6475 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/img/UserProfilePage.png differ diff --git a/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/index.mdx b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/index.mdx new file mode 100644 index 0000000000..45466a3cb9 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/log-data-in-reportportal/test-framework-integration/index.mdx @@ -0,0 +1,66 @@ +--- +sidebar_label: Test Framework Integration +description: Integrate your test framework with ReportPortal. Configure agents, send results, and enrich logs, attachments, and attributes for a clear automation test report. +--- + +# Test Framework Integration + +ReportPortal is a system that **integrates with your Test Framework**, listens for events and visualizes test results. You cannot execute results right from ReportPortal. + +**[Agent](/glossary/#agent)** is a self-sufficient integration with a test framework that automatically sends test results and metadata after minimal configuration. + +**[Client](/glossary/#client)** is a REST API library that helps send data programmatically, but requires you to implement the logic and manage metadata yourself. + + + + +How can ReportPortal be integrated with Test Framework? + +:::tip +Check out our useful resources for ReportPortal integration and test result visualization.
+**Blog posts:**
+[ReportPortal integration with Playwright](https://reportportal.io/blog/reportportal-integration-with-playwright)
+[Reporting Cypress test results to ReportPortal](https://reportportal.io/blog/reporting-cypress-test-results-to-reportportal)
+[Test results visualization](https://reportportal.io/blog/test-results-visualization)
+**Video guides:**
+[Integrating Playwright with ReportPortal](https://www.youtube.com/watch?v=UdeRKqFVcuU)
+[Integrating Cypress with ReportPortal](https://www.youtube.com/watch?v=BNQpsVDMQ4E)
+[From Reporting to Insights: Visualize Your Test Results with ReportPortal](https://www.youtube.com/watch?v=CMDa5ZUUOh0) +::: + +## Integration steps + +To do this, you need to follow a few simple steps. + +1. Installation
+Add an agent to your project that corresponds to the Test Framework you use. +2. Configuration
+Provide parameters such as ReportPortal URL, API key/token, project, launch name, etc. + +:::tip +After completing these two steps, the report will be available on the ReportPortal side.
+But if you want to use all the features of ReportPortal, you need to take one more step. +::: + +3. Update tests with additional data
+Fill your reports with valuable attributes, descriptions, logs, attachments, and more. + +:::note +Each step may differ depending on the language and Test Framework.
+For specific tool details, select your language and Test Framework in the sections below. +::: + +## Examples + +If you do not know anything about ReportPortal. +If you just want to integrate ReportPortal with your Test Framework and view info about test case executions: a name, a status, a duration, parameters, attachments (files, screenshots, video and other), logs and others. +So this section for you. + +You can review and mimic the following examples to start your integration with the ReportPortal. + +| **Test frameworks** | **Examples**| +|----------------------------------| ------------- | +| Java Test Frameworks |https://github.com/reportportal/examples-java | +| JavaScript based Test Frameworks | https://github.com/reportportal/examples-js | +| .Net based Test Frameworks | https://github.com/reportportal?q=example-net&type=&language=&sort=| +| Python based Test Frameworks | https://github.com/reportportal/examples-python| diff --git a/versioned_docs/version-26.2-organizations/plugins/ManagePlugins.mdx b/versioned_docs/version-26.2-organizations/plugins/ManagePlugins.mdx new file mode 100644 index 0000000000..68b163a050 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/ManagePlugins.mdx @@ -0,0 +1,151 @@ +--- +sidebar_position: 1 +sidebar_label: Manage plugins +description: Install, configure, and manage plugins to extend ReportPortal functionality for enhanced test execution reporting capabilities. +--- + +# Manage plugins + +ReportPortal as a test management system can be reinforced by uploading plugins. For now, you can install the next plugins from the box: + +* Bug Tracking Systems plugins: Jira Server, Jira Cloud, Azure DevOps, GitLab, Monday and Rally +* Notification plugins: E-mail server, Slack, Telegram +* Authorization plugins: LDAP, Active directory, SAML +* Import plugins: JUnit, RobotFramework +* Sauce Labs + +| **Plugin** | **Features** | +|---|---| +| Jira Server/Jira Cloud/Azure DevOps/GitLab/Monday/Rally | This plugin can be required for projects that collect defects in a separate tracking tool. The integration provides an exchange of information between ReportPortal and Jira or Rally, for example: posting new issues to BTS, linking test failures with the existing issue in BTS, track issue statuses.| +|E-mail server/Slack/Telegram| 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.| +|JUnit/RobotFramework | This plugin is essential for importing tests into ReportPortal.| +| Implement your own plugin |[Plugin developers guide](/developers-guides/PluginDevelopersGuide)| + +## Upload plugin + +**Permissions:** +Only ADMINISTRATOR can upload plugin. + +You can find the latest version of all ReportPortal plugins by the [link](https://search.maven.org/search?q=g:com.epam.reportportal%20plugin). Then you should download the latest version of a needed plugin. Or you can use a direct link to the needed plugin from the table below. + +|Plugin | Link to download | +| ------------- | ------------- | +| JIRA Server | https://search.maven.org/artifact/com.epam.reportportal/plugin-bts-jira or https://github.com/reportportal/plugin-bts-jira/packages | +| JIRA Cloud | https://github.com/reportportal/plugin-bts-jira-cloud/packages | +| Azure DevOps | https://github.com/reportportal/plugin-bts-azure/packages | +| GitLab | https://github.com/reportportal/plugin-bts-gitlab/packages | +| Monday | https://github.com/reportportal/plugin-bts-monday/packages | +| Rally | https://search.maven.org/artifact/com.epam.reportportal/plugin-bts-rally or https://github.com/reportportal/plugin-bts-rally/packages | +| SauceLabs | https://search.maven.org/artifact/com.epam.reportportal/plugin-saucelabs or https://github.com/reportportal/plugin-saucelabs/packages | +| Slack | https://github.com/reportportal/plugin-slack/packages | +| Telegram | https://github.com/reportportal/plugin-telegram/packages | +| JUnit | https://github.com/reportportal/plugin-import-junit/packages | +| RobotFramework | https://github.com/reportportal/plugin-import-robot/packages | +|E-mail/LDAP/Active directory/SAML| You do not need to download these plugins, there are already available on the Plugin page| + + + +For a plugin uploading please perform the following actions: +* log in to ReportPortal as administrator +* go to Administrate -> Plugins section +* click on Upload button +* choose .jar file which should be uploaded +* and click Upload + +> **Technical requirements for the plugin:** +> +>* a plugin should have the format: .jar +>* a plugin file size is up to 128Mb +>* a plugin should have a version +>* a plugin should have a Manifest +>* a plugin should have a plugin Extensions +>* Admin cannot upload a plugin with existing ID and existing version to the system + +## Update a plugin + +**Permissions:** +Only ADMINISTRATOR can update the plugin. +It is the same procedure as for Uploading. You can upload a plugin with the latest version to the ReportPortal, and an existing version will be updated to the latest one. + +## Enable / Disable a plugin + +**Permissions:** +Only ADMINISTRATOR can enable / disable plugin. + + + +If you do not want to remove a plugin from project settings, but want to save plugin configurations, you can use an enable/disable function. +For that: +* log in to ReportPortal as administrator +* go to Administrate -> Plugins section -> find plugin +* click a switcher to disable + +The plugin will be removed from Project Settings on the project spaces. But all plugin configurations will be saved in the DataBase and you can return them back if you need by clicking on the switcher enable the plugin. + +## Uninstall a plugin + +**Permissions:** +Only ADMINISTRATOR can uninstall the plugin. + +Users can remove a plugin from the system. For that you should: +* log in to ReportPortal as administrator +* go to Administrate > Plugins tab > click on Plugin +* click Uninstall button + +The plugin will be successfully deleted. All plugin configurations will be deleted from the DataBase. +E-mail plugin can not be uninstalled. + + + +## Configure a plugin + +**Permissions:** +Only ADMINISTRATOR can make global configurations of a plugin. +ADMINISTRATOR and PROJECT MANAGER can make project configurations of a plugin. + +Users can configure a plugin on the **instance-level** (global configuration) and also on the **project level** (project configuration). The configuration is the same for both levels. + +If a user configures plugin on the **global level**, then these configurations will be applied to all projects on the instance, which do not have their own configurations. + +If the user configures a plugin on the **project level**, then these configurations will be applied to only this project and replace global configurations, in case they are. + +Details on how to configure a specific plugin please find in the [Integration section](/configuration/IntegrationViaPlugin): + +* [integration with Jira Server](/plugins/bug-tracking/AtlassianJiraServer) +* [integration with Jira Cloud](/plugins/bug-tracking/AtlassianJiraCloud) +* [integration with Azure DevOps](/plugins/bug-tracking/AzureDevOps) +* [integration with GitLab](/plugins/bug-tracking/GitLab) +* [integration with Monday](/plugins/bug-tracking/Monday) +* [integration with Rally](/plugins/bug-tracking/Rally) +* [integration with SauceLabs](/plugins/other/SauceLabs) +* [integration with E-mail server](/plugins/notifications/EmailServer) +* [integration with Slack](/plugins/notifications/Slack) +* [integration with Telegram](/plugins/notifications/Telegram) +* [integration with LDAP](/plugins/authorization/LDAP) +* [integration with Active directory](/plugins/authorization/ActiveDirectory) +* [integration with Okta SAML](/plugins/authorization/SamlProviders/OktaSaml) +* [integration with Azure SAML](/plugins/authorization/SamlProviders/AzureSaml) +* [integration with JUnit](/plugins/import/JUnit) +* [integration with RobotFramework](/plugins/import/RobotFramework) + +> **Use case 1:** +> +> **Situation:** A small team, on ReportPortal instance there are several projects. Separate projects are added for different test types (UI, API, Unit and other). The team works with one project in Jira (or Rally). Different projects post new bugs in the same Jira (or Rally) project. +> **Solution:** configure global integration for Jira (or Rally) plugin on the "Administrate" section. +>**Pros:** Administrator configures integration once, and should not perform the same action several times. If the integration requires some changes, the Administrator can easily edit an integration, and the changes will apply to all projects on the instance. + + +> **Use case 2:** +> +> **Situation:** On ReportPortal instance there are several projects. Separate projects are added for different teams. Each team works with its project in Jira (or Rally) and posts new bugs in different Jira (or Rally) projects. Each team should not have access to the Jira (or Rally) project of other teams. +> **Solution:** configure project integrations for Jira (or Rally) plugin on the Project settings. +>**Pros:** Project Manager or Administrator configures integrations per project, team members from different projects can not see configurations of each other. + + +> **Use case 3:** +> +> **Situation:** On ReportPortal instance there are several projects. Separate projects are added for different teams. But for one team has been added several projects. So several projects on ReportPortal have connections with one Jira (or Rally) project and several projects have a connection with different Jira (or Rally) projects. +> **Solution:** configure global integrations on the Management board, and configure project integrations for Jira (or Rally) plugin on the Project settings. +>**Pros:** Administrator configures integration once for those who need the same settings, and Project Manager or Administrator configures integrations per project, for those projects who need to limit access. diff --git a/versioned_docs/version-26.2-organizations/plugins/_category_.json b/versioned_docs/version-26.2-organizations/plugins/_category_.json new file mode 100644 index 0000000000..acf497d517 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Plugins", + "position": "17", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/ActiveDirectory.md b/versioned_docs/version-26.2-organizations/plugins/authorization/ActiveDirectory.md new file mode 100644 index 0000000000..df353a03ea --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/authorization/ActiveDirectory.md @@ -0,0 +1,54 @@ +--- +sidebar_label: Active Directory +description: Configure Active Directory integration for secure authentication in ReportPortal with enterprise SSO. +--- + +# Active Directory + +The Active Directory plugin is available in ReportPortal on the Plugins page, enhancing the efficiency of our test report dashboard. + +To set up access with Active Directory, follow these steps: + +1. Log in to ReportPortal as an ADMIN user. + +2. Click on the dropdown menu located to the right of the user's image. + +3. Select the 'Administrative' link. + +4. From the left-hand sidebar, click on 'Plugins'. + +5. Navigate to the 'Active Directory' tab. + +6. Click on 'Add new integration'. + +At this point, several fields should be displayed. + +```javascript +'Domain*': text +'URL*': text +'Base DN*': text +'Email attribute*': text +'Full name attribute' : text +'Photo attribute' : text +'UserSearchFilter' (the same as for LDAP): text + ``` + +Fields marked in red are mandatory. Once filled, click the 'Submit' button. Completing this process grants all Active Directory users access to the ReportPortal instance. + +To access ReportPortal, users should utilize their domain credentials (Login and password). + +Refer to the example provided below featuring configurations for Microsoft Active Directory that have been successfully utilized by our users: + +**Table with properties and values for LDAP Microsoft Active Directory** + +| Property | Value | +|:---------------------:|:----------------------------------------------------------------------------------------------------------------------:| +| Url | `auth-servers.domain.org.int:3358` | +| Base DN | `OU=MAIN,DC=DOMAIN,DC=ORG,DC=INT` | +| Manager DN | `cn=Service UserBind,ou=Service Accounts,ou=Colombia,ou=America,ou=ServiceAccounts,dc=DOMAIN,dc=ORG,dc=INT` | +| User search filter | `(&(objectClass=user)(sAMAccountName={0}))` | +| Password encoder type | `NO` | +| Email attribute | `mail` | +| Full name attribute | `displayName` | +| Photo attribute | `thumbnailPhoto` | + diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/GitHub.md b/versioned_docs/version-26.2-organizations/plugins/authorization/GitHub.md new file mode 100644 index 0000000000..2c5b968d88 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/authorization/GitHub.md @@ -0,0 +1,67 @@ +--- +sidebar_label: GitHub +description: Enable GitHub OAuth login in ReportPortal to streamline access management, allowing developers to sign in using their GitHub credentials for seamless authentication. +--- + +# GitHub + +Our open source test reporting tool allows logging in via GitHub OAuth Web Application Flow. + +### Presequences + +To enable this feature you need to [register new application in Github](https://github.com/settings/applications/new) + +Fill the following fields: + +| Name | Value | Description | +|----------------------------|--------------------------------------------|-------------------------------------------------------| +| Application name | `Report Portal` | Just something which allow you recognize what's this. | +| Homepage URL | `https://{HOST}:{PORT}/uat/sso/user` | Replace with `{HOST}` and `{PORT}` with appropriate values of your instance. Naturally you can omit `:{PORT}` if it's default port for HTTPS protocol. | +| Authorization callback URL | `https://{HOST}:{PORT}/uat/sso/login/github` | As in the previous field replace with `{HOST}` and `{PORT}` with your appropriate values. | + +Once new application is created, you will have Client ID. Click on "Generate a new client secret" to get Client Secret, but do not close the window until you configure the Authorization on RP, since it will never show you the Secret again. + +### ReportPortal configuration + +To setup access with GitHub auth on ReportPortal: +1. Log in to the ReportPortal as an ADMIN user +2. Open the list on the right of the user's image. +3. Click the 'Administrative' link +4. Click the 'Server Settings' from the left-hand sidebar +5. Go to the 'Authorization Configuration' tab +6. Then change the switcher position of 'Activate GitHub Authorization' to ON +7. The Next fields should appear: + +```javascript +'Client ID': +'Client Secret': +'Add GitHub Organization' button-link: (optional) + ``` + +:::note +In case the 'Organization Name' is not added, all GitHub users will have access to the ReportPortal instance.
+If the 'Organization Name' is specified, only users of this organization will have an access to ReportPortal instance.
+If the Name of GitHub organization is not validated, verify that the name is correct. +::: +Example of GitHub auth configuration: +Fill in the form: + + ```javascript +'Client Id': 8767988c424a0e7a2640 +'Client Secret': ef22c9f804257afaf399a2dada7c8f22dee5fd1b +'Organization Name': reportportal + ``` +Click on 'Submit' button. +A confirmation message in status bar should be shown. +A 'Login with GitHub' button will appear on login form. + +### Resolving organization restrictions for OAuth Apps + +If you’ve specified an **Organization Name** in your configuration, ensure the organization allows access to your OAuth app. + +To do this: + +1. Navigate to your organization’s **Settings → Third-party access → OAuth app policy**. +2. Choose one of the following actions:
+ * **Remove restrictions** to allow all verified OAuth apps, **OR**
+ * **Transfer ownership** of your OAuth app to the organization, **or create a new OAuth app** directly under the organization via **Developer Settings**. diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/LDAP.mdx b/versioned_docs/version-26.2-organizations/plugins/authorization/LDAP.mdx new file mode 100644 index 0000000000..fc323ef8b4 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/authorization/LDAP.mdx @@ -0,0 +1,92 @@ +--- +sidebar_label: LDAP +description: Configure LDAP integration in your test automation results dashboard with secure encryption. +--- + +# LDAP + +LDAP plugin is available in ReportPortal on the Plugins page. + +In a version 24.2, two step flow of adding LDAP integration is implemented. + +To set up access with LDAP: + +1. Log in to the ReportPortal as an ADMIN user. +2. Open the menu at the bottom by clicking on the user’s icon. +3. Click the 'Administrate' link. +4. Click the 'Plugins' from the left-hand sidebar. +5. Click on the 'LDAP' tab. +6. Click on 'Add new integration'. +7. Fill in the necessary fields: + +**1. Server settings** + +```javascript +'URL' (mandatory field): text +'Base DN' (mandatory field): text +'Manager DN': text +'Manager password': text +'User DN pattern': text +'User search filter': text +'Group search base': text +'Group search filter': text +'Password encoder type': dropdown +``` + +In a version 24.2, PBKDF2 encryption type has been added to the list of possible encryptions for LDAP integration. +Now have the following options for password encoding type: + +- No - the password is not encoded +- PLAIN +- SHA +- LDAP_SHA +- MD4 +- MD5 +- PBKDF2_SHA1 +- PBKDF2_SHA256 +- PBKDF2_SHA512 + +On the LDAP provider side, we encrypt the password using one of the selected types. +When we enter the password, we encrypt it using the same method and then compare it with the encrypted password +stored by the LDAP provider. + + + +**2. Field settings** + +```javascript +'Email attribute' (mandatory field): text +'Name attributes mode': dropdown +'Full name attribute / First name & Last name': options +'Photo attribute': text +``` + +You can create LDAP integration either with **'Full name attribute'** +(if you select 'Full name' option in the 'Name attributes mode' dropdown) or with separate fields for **'First name'** +and **'Last name'** (if you select 'First & last name' option in the 'Name attributes mode' dropdown). + + + + + +You can provide a valid attribute for 'First name' and 'Last name'. +When the user logs in with LDAP for the first time, their full name will be saved as the combination of the First name and Last name. + +:::important +Old integrations will work correctly. +You can change the 'Name attributes mode' for old integrations from Full name to First & Last name. +::: + +8. Click the 'Create' button. + +Now, all users of LDAP will have access to the ReportPortal instance. + +To access ReportPortal, users should use their domain credentials (login and password). + +You can edit your LDAP integration by clicking pencil icon: + + + + + +If you are experiencing issues, [check the LDAP connection](/issues-troubleshooting/HowToCheckLDAPConnection/). diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/AzureSaml.mdx b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/AzureSaml.mdx new file mode 100644 index 0000000000..f21b2fd2fa --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/AzureSaml.mdx @@ -0,0 +1,109 @@ +--- +sidebar_position: 2 +sidebar_label: Azure SAML +description: Seamlessly integrate Azure SAML with ReportPortal for secure single sign-on, automatic user synchronization, and simplified access management in enterprise environments. +--- + +# Azure SAML + +SAML plugin is available in ReportPortal on the Plugins page. + +***If you have a pre-created Internal user, you can't log in by SAML using their credentials (Email or Name).*** + +Login to ReportPortal via Azure SAML is available starting from version 5.7 (SAML Okta was implemented in versions before 5.7). + +Azure SAML is a useful authorization method for big companies with 100+ employees, especially if this organization is already presented in Azure service. The main benefit here is no need for manual account creation. Users can log in to the ReportPortal using Azure SAML in an uncomplicated way: select login with SAML, then choose Azure, and upon login users’ data is synchronized with ReportPortal automatically. + +If your organization is using Azure SAML and some employees left, there is no need to remove their accounts from ReportPortal and from other Azure applications – just clearing their accounts in Azure will be enough. + +To configure authorization via Azure SAML we need to synchronize Azure and ReportPortal. + +Firstly, configure SAML on Azure side. + +## Configure SAML on Azure side + +1. Log in to [Azure portal](https://portal.azure.com) using your organization creds. +2. Click ```App Services```. + +3. Click ```View``` in the ```Manage Azure Active Directory``` section. + +4. Click ```Manage Tenants```. + + +### Create organization in Azure + +5. If you haven’t configured organization in Azure yet, click ```Create```. + :::note + if you have configured organization in Azure, please, go to step 9. + ::: + +6. Select a tenant type (```Azure Active Directory```) and click ```Next: Configuration >``` button. + +7. Fill in the necessary fields and click ```Next: Review + create >``` button. + +8. Pass the Captcha verification and click the ```Create``` button. + + +### Create your application in Azure + +9. After the creation of an organization go to the ```Enterprise Applications``` section. + +10. Click ```New application```. + +11. Click ```Create your own application```. + +12. Enter the name of your application, choose ```Integrate any other application you don't find in the gallery (Non-gallery)``` bullet and click ```Create``` button. + + +### Assign users to the application in Azure + +13. Assign users (e.g., yourself) to this application. Please, follow the next screenshots: + + + + +### Configure Single sign-on on Azure + +14. Go to the ```Single sign-on``` section. + +15. Choose SAML. + + +### Basic SAML Configuration + +16. Configure ```Basic SAML Configuration``` settings as follows: + + +### Add Azure attributes + +17. Edit ```Attributes & Claims``` settings and add ***email***, ***firstName*** and ***lastName*** attributes (default Azure attributes have ugly format). Please follow the next screenshots: + + + + +SAML configuration is completed on Azure side after adding these attributes. + +Ensure that your Advanced SAML claims options match those shown in the screenshots below. + + + +Lastly, configure SAML on ReportPortal side. + +## Configure SAML on ReportPortal side + +1. Log in to **ReportPortal** as Admin. +2. Open Menu at the bottom and choose ```Administrate``` section. + +3. Select ```Plugins```. + +4. Open ```SAML```. + +5. Click the ```Add integration``` button. + + +## Synchronize Azure SAML and ReportPortal + +6. Synchronize Azure SAML and ReportPortal as follows: + + +Finally, you can log in to ReportPortal using Azure SAML. diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/GoogleWorkspaceSso.mdx b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/GoogleWorkspaceSso.mdx new file mode 100644 index 0000000000..7115118ec1 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/GoogleWorkspaceSso.mdx @@ -0,0 +1,59 @@ +--- +sidebar_position: 4 +sidebar_label: Google Workspace SSO +description: Simplify user access to ReportPortal by configuring Google Workspace SSO, enabling secure, seamless login and centralized identity management. +--- + +# Google Workspace SSO + +:::note +This guide was provided by a [contributor](https://github.com/reportportal/reportportal/issues/2598).
+This integration has not been tested by our team. +::: + +## Configuration on Google side + +1. Open Google Workspace Admin panel. +2. Navigate to Apps -> Web and mobile apps. +3. Select Add app -> Add custom SAML App. + + + +4. Enter App Name (for example, `ReportPortal`). +5. Enter Description (optional field). +6. Upload icon. +7. Click "Download Metadata" button. + + + +8. Host the metadata somewhere so that it is accessible to ReportPortal via HTTPS. +9. Enter the ACS URL: `https:///uat/login/saml2/sso/GoogleSSO` + +:::note +GoogleSSO will be used as the ReportPortal SAML Provider name.
+::: + +10. Enter the Entity ID: `report.portal.sp.id` +11. Leave the bottom part untouched. + +## Configuration on ReportPortal side + +1. Log in to ReportPortal as Admin. +2. Open the menu at the bottom by clicking on the user’s icon. +3. Click the "Administrate" link. +4. Click the "Plugins" from the left-hand sidebar. +5. Click on the "SAML" tab. +6. Click on "Add integration" button. +7. Fill in the fields: + +* Identity provider name ID: `urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified` +* Provider name: `GoogleSSO` (same as in ACS URL) +* Metadata URL: URL with the hosted metadata file +* Email: `email` +* Name attributes mode: `First and last name` +* First name: `firstname` +* Last name: `lastname` + +## SAML attribute mapping + + diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/OktaSaml.mdx b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/OktaSaml.mdx new file mode 100644 index 0000000000..278ea77a4f --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/OktaSaml.mdx @@ -0,0 +1,207 @@ +--- +sidebar_position: 3 +sidebar_label: Okta SAML +description: Enable secure single sign-on (SSO) in ReportPortal by integrating with Okta SAML, streamlining user authentication and enhancing access management. +--- + +# Okta SAML + +:::important +Before starting, please read about the [SAML provider](/plugins/authorization/SamlProviders/Overview). +::: + +This guide will help you to configure the connection between ReportPortal and Okta. + +You can use it as high-level steps for reference. To get more information about Okta configuration, read the [official documentation](https://developer.okta.com/docs/guides/saml-application-setup/overview/). + +SAML plugin is available in ReportPortal on the Plugins page. + +## Requirements + +1. Okta account +2. ReportPortal instance +3. Access to the ReportPortal instance and Okta account +4. Available connection between Okta and ReportPortal + +## Configuration Okta + +### Step 1: Create a new App Integration + +#### Go to the Okta dashboard + + + +Click on the `Applications` in the sidebar menu and click on the +`Create App Integration` button. + +#### Choose integration type + + + +Pick `SAML 2.0` and click `Next`. + +#### Fill the general settings + + + +In the `App name` field, enter the application's name. Click `Next`. + +### Step 2: Configure SAML + +#### Fill in the SAML settings + + + +In the `Single sign-on URL` field, enter the following URL: + +```url +https:///uat/login/saml2/sso/{providerName} +``` +In the example below, ReportPortal was deployed on the local machine using the following URL: + +```url +http://localhost:8080/uat/login/saml2/sso/Okta +``` + +for ReportPortal version older than 25.1, you can use the following URL: + +```url +https:///uat/saml/sp/SSO/alias/report-portal-sp +``` + +More details about the ACS URL you can find in the [SAML Overview](/plugins/authorization/SamlProviders/Overview#identity-provider-configuration). + +In the `Audience URI (SP Entity ID)` field, enter the following identifier: + +``` +report.portal.sp.id +``` + +You can change this identifier when you deploy ReportPortal. More information +about the identifier you can find in the [SAML Overview](/plugins/authorization/SamlProviders/Overview#identifier). + +In the `Name ID format` field, select `EmailAddress`. You can use the UNSPECIFIED format as well. +More information about the Name ID format you can find in the [SAML Overview](/plugins/authorization/SamlProviders/Overview#reportportal-configuration). + +#### Fill in the Attribute Statements + + + +Add the following attributes: + +- `email` with the value `user.email` +- `firstName` with the value `user.firstName` +- `lastName` with the value `user.lastName` + +Click `Next`. + +#### Provide feedback + + + +In this case, the 'I'm an Okta customer adding an internal app' option was selected, along with the 'This is an internal app that we have created' option in the `App type` field. + +Click `Finish`. + + +#### Copy metadata URL + + + +After the App Integration is created, you will see the `Settings` tab with the +`Sign on methods` section. + +Copy the ' Metadata URL ' in the `SAML 2.0` section. You will need it to +configure the ReportPortal SAML plugin. + +### Step 3: Assign users + + + +:::note +You can't provision a user from Okta to ReportPortal if you already have +a pre-created internal user in ReportPortal with the same email and a different +login. Read more about [JIT provisioning](/plugins/authorization/SamlProviders/Overview#user-jit-provisioning) +::: + +You can add a user by clicking on the `Assignments` tab and then clicking on +the `Assign` button. + +In the case above, a user with the email baba_yaga@continental.com doesn't exist in the deployed ReportPortal instance. + +## ReportPortal configuration + +### Step 1: Open the SAML plugin + + + +Log-in to the ReportPortal by Admin account and go to the `Administrate` -> `Plugins` -> `SAML`. + +### Step 2: Add a new integration + + + +Click on the `Add integration` button. + +### Step 3: Fill in the form + + + +#### Identity provider name ID + +In the `Identity provider name ID` field, enter the +`urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress` if you chose the +`EmailAddress` format for the `Name ID format` in the Okta configuration. +If you choose the `UNSPECIFIED` format, keep this field empty. + +You can find more information about the Name ID format in the +[SAML Overview](/plugins/authorization/SamlProviders/Overview#reportportal-configuration) + +#### Provider name + +In the `Provider name` field, enter any name you want, for example `Okta`. + +#### Metadata URL + +In the `Metadata URL` field, paste the copied Okta metadata URL. + +#### Attribute mapping + +You need to map the attributes from the Okta configuration to the ReportPortal. + +1. Enter the `email` attribute name in the 'Email' field. +2. In the `First name` field, enter the `firstName` attribute name. +3. In the `Last name` field, enter the `lastName` attribute name. + +#### RP callback URL + +In the `RP callback URL` field, enter the URL: + +```url +https:///uat +``` + +In the case below, the following URL was used: `http://192.168.49.2/uat`. + +#### Create the integration + + + +After you fill in the form and clicked on the `Create` button, you will see the +new integration in the list. + +### Step 4: Test the integration + + + +Log-out from the ReportPortal and go to login page. You will see the +`Login with SAML` button. + + + +Click on the button, and you will be redirected to the Okta login page. + + + +After successful login, SAML plugin will create the user to the ReportPortal +and you can see the user in the `Users` section on the `Administrate` page. diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/Overview.mdx b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/Overview.mdx new file mode 100644 index 0000000000..86d59798cf --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/Overview.mdx @@ -0,0 +1,196 @@ +--- +sidebar_label: Overview +sidebar_position: 1 +description: Enable secure SSO in ReportPortal with SAML providers, streamline user authentication, support Just-in-Time provisioning, and simplify access management. +--- + +# SAML Overview + +This plugin allows you to configure a connection with a SAML provider. + +Integration with SAML will allow you to log in to ReportPortal using SSO +instead of tedious manual user creation. + +The plugin provides a mechanism for exchanging information between ReportPortal +and the SAML provider, such as the possibility of logging in to ReportPortal +with SAML credentials. + +## User JIT provisioning + +:::note +If you have a pre-created Internal user, you can't login by SAML using their +credentials (Email or Name). +::: + +Just-in-time (JIT) provisioning is a feature that creates a user account in +ReportPortal when a user logs in for the first time. This feature is available +for SAML integrations. + +However, you can't provision a user from SAML Provider to ReportPortal if you +already have a pre-created internal user in ReportPortal with the same email +and different login. The login must be the email name without the domain part. +For instance, if the email is `john_weak@babayaga.com` the login should be +`john_weak`. +In the opposite case, the user cannot log in to ReportPortal. +You can fix it by changing the login name or email or deleting the user from +the ReportPortal. + +## SAML provider requirements + +:::tip +There are detailed manuals for the configuration of +[Azure SAML](/plugins/authorization/SamlProviders/AzureSaml) +and [Okta SAML](/plugins/authorization/SamlProviders/OktaSaml). +::: + +- SAML 2.0 version +- HTTP-POST Binding +- URL to download [SAML IdP Metadata](https://en.wikipedia.org/wiki/SAML_metadata#Identity_provider_metadata) +- HTTPS connection for SAML Metadata +- Support SAML attributes: + - email + - first name + - last name + - full name (instead of first and last name) + +## Add integration + +ReportPortal contains the SAML Plugin by default. + +1. Go to `Administration` -> `Plugins` -> `SAML` +2. Select `Add integration`. + +## Set up connection + +### Identity provider configuration + +#### ReportPortal Assertion Consumer Service URL + +You have to provide a URL for a SAML provider to deliver SAML data to the +identity federation. + +For ReportPortal version 25.1 with Service authorization 5.14.0 and newer, the ACS URL is: + +```url +https:///uat/login/saml2/sso/{your-provider-name} +``` + +You can find the `{your-provider-name}` in the ReportPortal SAML plugin configuration. +The field is called **Provider name**. + + + +:::note +The provider name must not contain spaces. +Use only alphanumeric characters, dashes, and underscores. +::: + +For ReportPortal version 25.0.6 with Service authorization 5.13.2 and older, the ACS URL is: + +```url +https:///uat/saml/sp/SSO/alias/report-portal-sp +``` + +#### Identifier + +Set up identifier (aka Audience Restriction, aka Entity ID) for application as +`report.portal.sp.id`. +When you deploy the authorization service, you can specify your entity ID using +the environment variable `RP_AUTH_SAML_ENTITYID`. + +#### Custom attributes + +The IDp app user profile must provide attributes like this: + +``` +- user.email +- user.firstName +- user.lastName +``` + +Also, Make sure there is a mapping created according to the values that you use +in the ReportPortal SAML plugin like this: + +``` +- user.email -> Email +- user.firstName -> FirstName +- user.lastName -> LastName +``` + +#### Service provider initial URL (SP-Initiated SSO) + +Some Identity Providers can request a URL for the initial login page. You can +provide the URL to the ReportPortal login page. + +```url +https:///ui/#login +``` + +### ReportPortal configuration + + + +***Identity provider name ID (Optional)*** + +**Identity provider name ID** (aka name identifier formats) controls how the +users at identity providers are mapped to users at service providers. + +We support the following formats: + +1. `UNSPECIFIED` - used by default + +```urn +urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified +``` + +2. `EMAIL` + +```urn +urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress +``` + +***Provider name*** - Provider name associated with IDP. + +***Metadata URL*** - URL that provides data with information about SAML Provider. + +***Email*** - Attribute name from SAML metadata which contains an user email. + +```xml + + neuromancer@cyberspace.net + +``` + +***ReportPortal Callback URL*** - This field provides a redirect base path. + +Once you submit an integration with the "RP callback URL," the URL will be +applied to all SAML integrations. + +```url +https:///uat +``` + +***First name*** - Attribute name from SAML metadata which contains an user first/given name. + +```xml + +William + +``` + +***Last name*** - Attribute name from SAML metadata which contains an user last/family name. + +```xml + +Gibson + +``` + +***Full name*** - Attribute name from SAML metadata which contains a full user name. You can use either two separate attributes for first name and last name or a combined first and last name attribute. This solely depends on your SAML provider. + +```xml + +William Gibson + +``` diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/_category_.json b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/_category_.json new file mode 100644 index 0000000000..a61c8fdfc6 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "SAML Providers", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/OktaSAML.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/OktaSAML.png new file mode 100644 index 0000000000..09db098bb4 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/OktaSAML.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/OktaSide.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/OktaSide.png new file mode 100644 index 0000000000..6918a68996 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/OktaSide.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/SAMLPlugin.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/SAMLPlugin.png new file mode 100644 index 0000000000..e9211162d5 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/SAMLPlugin.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML1.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML1.png new file mode 100644 index 0000000000..fea53ffe30 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML1.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML10.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML10.png new file mode 100644 index 0000000000..1cde6fe939 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML10.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML11.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML11.png new file mode 100644 index 0000000000..e0466ddcc3 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML11.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML12.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML12.png new file mode 100644 index 0000000000..3dfaaa4db5 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML12.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML13.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML13.png new file mode 100644 index 0000000000..870f3ee7e2 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML13.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML14.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML14.png new file mode 100644 index 0000000000..76dd465e6d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML14.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML15.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML15.png new file mode 100644 index 0000000000..3c98043dad Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML15.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML16.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML16.png new file mode 100644 index 0000000000..9d0852ea00 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML16.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML17.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML17.png new file mode 100644 index 0000000000..b56461743e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML17.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML18.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML18.png new file mode 100644 index 0000000000..5123bfe1ca Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML18.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML19.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML19.png new file mode 100644 index 0000000000..966dea270f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML19.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML2.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML2.png new file mode 100644 index 0000000000..c815f9ab54 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML2.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML20.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML20.png new file mode 100644 index 0000000000..090f8b3bd8 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML20.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML21.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML21.png new file mode 100644 index 0000000000..132df2b0ad Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML21.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML22.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML22.png new file mode 100644 index 0000000000..0f49af8fe1 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML22.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML23.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML23.png new file mode 100644 index 0000000000..4dd27ea2e8 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML23.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML24.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML24.png new file mode 100644 index 0000000000..1a7a7aeb3f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML24.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML3.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML3.png new file mode 100644 index 0000000000..7210c1a327 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML3.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML4.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML4.png new file mode 100644 index 0000000000..73cbd14e2e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML4.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML5.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML5.png new file mode 100644 index 0000000000..a4d169de1d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML5.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML6.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML6.png new file mode 100644 index 0000000000..3b1b7327fd Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML6.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML7.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML7.png new file mode 100644 index 0000000000..7c78df7326 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML7.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML8.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML8.png new file mode 100644 index 0000000000..475b74face Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML8.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML9.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML9.png new file mode 100644 index 0000000000..fad07f87c8 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAML9.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAMLadvanced.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAMLadvanced.png new file mode 100644 index 0000000000..b9d878b0ba Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/AzureSAMLadvanced.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/SAMLIntegration.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/SAMLIntegration.png new file mode 100644 index 0000000000..aeabe628c4 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/azure-saml/SAMLIntegration.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/google-workspace-sso/GoogleWorkspaceSSO1.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/google-workspace-sso/GoogleWorkspaceSSO1.png new file mode 100644 index 0000000000..4274b8ebfb Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/google-workspace-sso/GoogleWorkspaceSSO1.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/google-workspace-sso/GoogleWorkspaceSSO2.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/google-workspace-sso/GoogleWorkspaceSSO2.png new file mode 100644 index 0000000000..a9208e17fb Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/google-workspace-sso/GoogleWorkspaceSSO2.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/google-workspace-sso/GoogleWorkspaceSSO3.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/google-workspace-sso/GoogleWorkspaceSSO3.png new file mode 100644 index 0000000000..da8f1b422c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/google-workspace-sso/GoogleWorkspaceSSO3.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-1.0.jpg b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-1.0.jpg new file mode 100644 index 0000000000..8744da3347 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-1.0.jpg differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-1.1.jpg b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-1.1.jpg new file mode 100644 index 0000000000..db15f50fde Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-1.1.jpg differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-1.2.jpg b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-1.2.jpg new file mode 100644 index 0000000000..a439962b0d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-1.2.jpg differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-2.0.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-2.0.png new file mode 100644 index 0000000000..036e6fb70f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-2.0.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-2.1.jpg b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-2.1.jpg new file mode 100644 index 0000000000..68275c0e6d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-2.1.jpg differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-2.2.jpg b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-2.2.jpg new file mode 100644 index 0000000000..444ab57133 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-2.2.jpg differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-2.3.jpg b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-2.3.jpg new file mode 100644 index 0000000000..b82f6786d8 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-2.3.jpg differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-3.0.jpg b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-3.0.jpg new file mode 100644 index 0000000000..1d2eeb2adf Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-3.0.jpg differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.0.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.0.png new file mode 100644 index 0000000000..a6edd85830 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.0.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.1.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.1.png new file mode 100644 index 0000000000..9dba9c4912 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.1.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.2.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.2.png new file mode 100644 index 0000000000..eb5a7fab16 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.2.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.3.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.3.png new file mode 100644 index 0000000000..c6e34700fb Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.3.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.4.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.4.png new file mode 100644 index 0000000000..6906c61d98 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.4.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.5.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.5.png new file mode 100644 index 0000000000..daf308bf3b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.5.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.6.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.6.png new file mode 100644 index 0000000000..850e6b8493 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/okta-saml/okta-step-4.6.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/saml-provider-name.png b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/saml-provider-name.png new file mode 100644 index 0000000000..b611c704dc Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/img/saml-provider-name.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/index.md b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/index.md new file mode 100644 index 0000000000..150c947cee --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/authorization/SamlProviders/index.md @@ -0,0 +1,18 @@ +--- +sidebar_label: SAML Providers +description: Use SAML SSO with Azure or Okta to securely access your test automation metrics dashboard and simplify user login. +--- + +# SAML Providers + +The **SAML Providers** category in ReportPortal enables efficient and secure user authentication using popular SAML providers like Azure SAML and Okta SAML. These services allow ReportPortal to connect seamlessly with existing identity management frameworks, making login processes faster and more reliable while meeting enterprise-grade security standards. + +When using Azure SAML as an authentication provider, users can log in with the credentials they already use within their organization. This setup offers a single sign-on (SSO) experience, making access management more efficient and reducing the need for password resets. Similarly, Okta SAML leverages Okta’s identity management platform to facilitate secure and simple login. With Okta SAML, ReportPortal users can also enjoy SSO functionality, boosting productivity and providing robust identity verification for consistent security. + +Setting up SAML-based authentication in ReportPortal is simple, with dedicated configuration options for Azure and Okta in the settings menu. Each guide offers step-by-step instructions to ensure a quick and accurate setup, allowing teams to link their ReportPortal accounts with their chosen provider easily. This flexibility in choosing an SSO provider simplifies access to the platform and reduces administrative overhead. + +By using SAML Providers like Azure SAML and Okta SAML, organizations can ensure that access to their test reporting and analytics remains secure, streamlined, and aligned with existing identity management policies, ultimately providing a more cohesive and productive user experience. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/_category_.json b/versioned_docs/version-26.2-organizations/plugins/authorization/_category_.json new file mode 100644 index 0000000000..8a8b5918cb --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/authorization/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Authorization", + "position": "2", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/img/LDAP1.png b/versioned_docs/version-26.2-organizations/plugins/authorization/img/LDAP1.png new file mode 100644 index 0000000000..95fdef1297 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/img/LDAP1.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/img/LDAP2.png b/versioned_docs/version-26.2-organizations/plugins/authorization/img/LDAP2.png new file mode 100644 index 0000000000..27f97b90b8 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/img/LDAP2.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/img/LDAP3.png b/versioned_docs/version-26.2-organizations/plugins/authorization/img/LDAP3.png new file mode 100644 index 0000000000..2baa006261 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/img/LDAP3.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/img/LDAP4.png b/versioned_docs/version-26.2-organizations/plugins/authorization/img/LDAP4.png new file mode 100644 index 0000000000..4e9a34c8ea Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/img/LDAP4.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/img/LDAP5.png b/versioned_docs/version-26.2-organizations/plugins/authorization/img/LDAP5.png new file mode 100644 index 0000000000..15e041098c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/authorization/img/LDAP5.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/authorization/index.md b/versioned_docs/version-26.2-organizations/plugins/authorization/index.md new file mode 100644 index 0000000000..3f9d41263d --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/authorization/index.md @@ -0,0 +1,28 @@ +--- +sidebar_label: Authorization +description: Set up secure logins with Active Directory, GitHub, LDAP, and SAML. Manage authentication to keep ReportPortal access safe and simple for every role. +--- + +# Authorization + +The **Authorization section** in ReportPortal provides detailed guidance on supported methods for user authentication, offering secure and streamlined access management within your test automation reporting dashboard. ReportPortal supports multiple authorization options, including Active Directory, GitHub, LDAP, and SAML providers like Azure SAML and Okta SAML, allowing teams to choose the method that best integrates with their existing security infrastructure. + +**Active Directory** + +For organizations using Microsoft’s Active Directory (AD), ReportPortal provides an integration that allows users to authenticate using their AD credentials. This method leverages the organization’s current user management system, ensuring secure access control and reducing the need for additional login information. By logging in with their AD credentials, users can access ReportPortal in alignment with the organization’s security policies. + +**GitHub** + +ReportPortal also supports GitHub-based authentication, allowing users to sign in with their GitHub credentials. This is particularly useful for teams managing code repositories and workflows on GitHub, providing a seamless login experience and reducing the need for separate credentials. GitHub authentication simplifies access management for developers, enabling quick, direct entry into the test report dashboard. + +**LDAP** + +ReportPortal’s LDAP integration enables authentication through an organization’s existing directory, making it ideal for teams with established LDAP setups. This method links ReportPortal to company directory services, providing centralized user management and enhanced security by allowing users to sign in quickly with their directory credentials. + +**SAML Providers** + +ReportPortal supports SAML authentication through Azure SAML and Okta SAML. These integrations enable users to authenticate via a central identity provider, which simplifies access control across multiple platforms. Azure SAML and Okta SAML provide single-click access to ReportPortal through an organization’s SSO setup, which both reduces password fatigue and aligns with enterprise security standards. This method is particularly valuable for larger teams managing numerous tools and applications within their tech ecosystem. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/AtlassianJiraCloud.mdx b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/AtlassianJiraCloud.mdx new file mode 100644 index 0000000000..3ad085c724 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/AtlassianJiraCloud.mdx @@ -0,0 +1,251 @@ +--- +sidebar_position: 4 +sidebar_label: Jira Cloud +description: Integrate Jira Cloud with your test reporting tool to streamline issue tracking, link defects, and sync updates across your QA process. +--- + +# Atlassian Jira Cloud + +To install the Jira Cloud plugin, see [Upload plugin](/plugins/ManagePlugins#upload-plugin) section. + +Integration with the JIRA Cloud can be required for projects that collect defects in a separate tracking tool. The integration provides an exchange of information between our centralized test automation tool and the JIRA Cloud, such as posting issues and linking issues, getting updates on their statuses. + + +## Global JIRA Cloud integration + +### Add new global Jira Cloud integration + +If all projects on your instance are using the same Jira projects, you will be able to configure **global integrations** which will be applied on all projects. + +1. Log in as ADMIN + +2. Go to Administrative > Plugins + +3. Click on JIRA Cloud plugin panel + +4. Click on "Add integration" button + +5. Fill and confirm the authorization form + +```javascript +'Integration Name': - should be unique +'Link to BTS': +'Project key in BTS': +'Email': +'API Token': +``` + +After you have created a connection with the JIRA project, you can choose predefined JIRA ticket fields. These fields will be shown to you all the time when you post the issue in Jira Cloud. + +This feature gives you the ability to choose which type you will post a ticket. + +To choose a needed issue type and predefined field for the chosen issue, you should perform the following actions: + +1. Click on "Configure" button + +2. Choose issue type from the drop-down + +3. Check the needed fields and fill them in if necessary + +4. Click on "Submit" button + + +Now team members on all your projects will be able to submit issues in Jira Cloud. Options for Post Issue / Link issue are activated. + + + +You can add more integrations by clicking on "Add integration" button. + +User can add several integrations, but with a different name to the **one JIRA project**. + + +>**Use case:** +> +> **Situation:** User wants to post to JIRA Cloud issues with type **Defect** and **Task** to the project NNN-MMM in Jira. Is it possible? +> Yes! +> +> **Solution:** Add two integrations to the project NNN-MMM in Jira with names f.e. "Project -1" and "Project -2". +> Add to the "Project -1" issue type **Defect** and for "Project -2" - issue type **Task**. +> While posing issue procedure, choose integration with needed type. + + +### Update global Jira Cloud integration + +If you need to edit Jira Cloud integration authorization parameters, please perform actions: + +1. Log in as ADMIN + +2. Go to Administrative > Plugins + +3. Click on JIRA Cloud plugin panel + +4. Click on a tab with existing integration + +5. Click on "Edit authorization" link + +6. Change "Integration name" + +7. Submit the form + +:::note +You can edit the "Integration name" only. If you need other changes, please submit new integration. +::: + +If you need to edit fields which should be posted in Jira Cloud, please perform actions: + +1. Log in as ADMIN + +2. Go to Administrative > Plugins + +3. Click on JIRA Cloud plugin panel + +4. Click on a tab with existing integration + +5. Click on "Configure" button + +6. Choose issue type from the drop-down + +7. Check the needed fields and fill them in if necessary + +8. Click on "Submit" button + +### Remove global Jira Cloud integration + +If you need to remove Jira Cloud integration, please perform actions: + +1. Log in as ADMIN + +2. Go to Administrative > Plugins + +3. Click on JIRA Cloud plugin panel + +4. Click on a tab with existing integration + +5. Click on "Remove integration" + +6. Submit the action + +## Project JIRA Cloud integration + +### Add new project Jira Cloud integration + +If any project needs different Jira Cloud configurations, you should unlink a project from Global configurations and add a project configuration. It means that now when a new global integration is added to our test automation results dashboard, it won't be applied to the unlinked project. + +For that, + +1. Log in as an ADMIN or Project Manager + +2. Go to Project Settings > Integrations + +3. Click on the JIRA Cloud integration panel + +4. Click on "Unlink and setup manually" button + +5. Fill and confirm the authorization form + +```javascript +'Integration Name': - should be unique +'Link to BTS': +'Project key in BTS': +'Email': +'API Token': +``` + +After you have created a connection with the JIRA project, you can choose predefined JIRA ticket fields. These fields will be shown to you all the time when you post the issue in Jira Cloud. + +This feature gives you the ability to choose which type you will post a ticket. + +To choose a needed issue type and predefined field for the chosen issue, you should perform the following actions: + +1. Click on "Configure" button + +2. Choose issue type from the drop-down + +3. Check the needed fields and fill them in if necessary + +4. Click on "Submit" button + +Now team members on **this project** will be able to submit issues in Jira Cloud. Options for Post Issue / Link issue are activated. + +You can add more integrations by clicking on "Add integration" button. + +### Reset to project Jira Cloud Integrations + +If you want to delete project integrations with Jira Cloud and link your project with global configurations, please perform actions described below: + +1. Log in as an ADMIN or Project Manager + +2. Go to Project Settings > Integrations + +3. Click on the JIRA Cloud integration panel + +4. Click on "Reset to global settings" button + +5. Confirm the action + +## Post issue to Jira Cloud + +Posting an issue to Jira Cloud means to create a new issue in Jira from ReportPortal and upload logs and attachments from an execution. + +If you want to post a new issue to Jira, you need to have a project or global integration with Jira Cloud. + + + +Post issue via Step view + +1. Log in to ReportPortal as Admin, PM, Member, Customer or Operator + +2. Go to a Step view + +3. Choose a needed item + +4. Click on "Actions" button + +5. Choose "Post issue" option + +6. Fill in the "Post issue" form with valid data + +```javascript +`BTS`: if you have configured BTS integrations, you will be able to choose between them +`Integration name`: from the drop-down, you can choose any of integrations for chosen earlier BTS +`Predefined fields`: fields which you choose on Project Settings/ or Plugins +`Included data`: which data should be posted to BTS (attachments, logs, comments) +``` + +7. Submit the form + +8. A new issue will be posted in BTS with information from ReportPortal + +9. A label with issue ID will be added to the test item + + +## Link an issue with an issue in Jira Cloud + +Linking an issue with an issue in Jira Cloud means adding a clickable link to an existing issue in Jira from ReportPortal that will show a status of this issue. + + + +Link issue via Step view + +1. Log in to ReportPortal as Admin, PM, Member, Customer or Operator + +2. Go to a Step view + +3. Choose a needed item + +4. Click on "Actions" button + +5. Choose "Link issue" option + +6. Fill in the "Link issue" form with valid data + +```javascript +`BTS`: if you have configured BTS integrations, you will be able to choose between them +`Integration name`: from the drop-down, you can choose any of integrations for chosen earlier BTS +`Link to issue`: a full link to the item in BTS +`Issue ID`: information which will be displayed on the label in ReportPortal +``` + +7. Submit the form + +8. A label with issue ID will be added to the test item diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/AtlassianJiraServer.mdx b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/AtlassianJiraServer.mdx new file mode 100644 index 0000000000..f35e5b448c --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/AtlassianJiraServer.mdx @@ -0,0 +1,294 @@ +--- +sidebar_position: 3 +sidebar_label: Jira Server +description: Integrate Jira Server with your test automation reporting tool to track defects, sync statuses, and streamline bug reporting. +--- + +# Atlassian Jira Server + +To install the Jira Server plugin, see [Upload plugin](/plugins/ManagePlugins#upload-plugin) section. + +Integration with the JIRA Server can be required for projects that collect defects in a separate tracking tool. The integration provides an exchange of information between our test automation reporting dashboard and the JIRA Server, such as posting issues and linking issues, getting updates on their statuses. + +:::important +The Administrator can upload Jira Server plugin and create global integrations on the Plugins tab in the Administrate section.
+The Project Manager can work only on the project level. He can unlink and re-write global configuration with project ones on Project Settings > Integrations. +::: + +## Global JIRA Server integration + +### Add new global Jira Server integration + +If all projects on your instance are using the same Jira projects, you will be able to configure **global integrations** which will be applied on all projects. + +1. Log in as ADMIN. + +2. Go to Administrate > Plugins. + +3. Click on JIRA Server plugin panel. + +4. Click on "Add integration" button. + + + +5. Fill in required parameters for integration. + + + +```javascript +'Integration Name': - should be unique +'Link to BTS': +'Project key in BTS': +'Authorization Type': Basic (predefined) +'BTS Username': +'BTS Password or API Token': +``` + +Depending on how Jira Server is configured, it's either allowed to integrate with it using password or API Token. While Jira Server does not natively support API tokens like Jira Cloud, there are third-party plugins that can add this functionality, for example **API Token Authentication for Jira**, which allows users to generate API tokens for Jira Server. + +After you have created a connection with the JIRA project, you can choose predefined JIRA ticket fields. These fields will be shown to you all the time when you post the issue in Jira. + +This feature gives you the ability to choose which type you will post a ticket. + +To select a needed issue type and predefined fields for the chosen issue, you should perform the following actions: + +1. In the Configuration section, choose issue type from the drop-down. + +2. Check the required fields and fill them in if necessary (if you want them to be prepopulated). + +3. Click on "Submit" button. + + + +Now team members on all your projects will be able to submit issues in Jira. Options for Post Issue / Link issue are activated. + +You can add more integrations by clicking on "Add integration" button. + +Users can add several integrations, but with a different name to the **one JIRA project**. + +>**Use case:** +> +> **Situation:** User wants to post to JIRA Server issues with type **Defect** and **Task** to the project NNN-MMM in Jira. Is it possible? +> Yes! +> +> **Solution:** Add two integrations to the project NNN-MMM in Jira with names e.g. "Project -1" and "Project -2". +> Add to the "Project -1" issue type **Defect** and for "Project -2" - issue type **Task**. +> While posing issue procedure, choose integration with needed type. + +### Update global Jira Server integration + +If you need to edit Jira Server integration parameters, please perform actions: + +1. Log in as ADMIN. + +2. Go to Administrate > Plugins. + +3. Click on Jira Server plugin panel. + +4. Click on the tab with existing integration. + +5. Click on "Edit" icon. + + + +6. Change "Integration name". + +7. Type your BTS password or API Token. + +8. Click on "Save" button. + + + +If you need to edit fields which should be posted in Jira Server, please perform actions: + +1. Log in as ADMIN. + +2. Go to Administrate > Plugins. + +3. Click on Jira Server plugin panel. + +4. Click on the tab with existing integration. + +5. Click on "Edit" button in Configuration section. + + + +6. Choose issue type from the drop-down. + +7. Check the needed fields and fill them in if necessary. + +8. Click on "Submit" button. + +### Remove global Jira Server integration + +If you need to remove Jira Server integration, please perform actions: + +1. Log in as ADMIN. + +2. Go to Administrate > Plugins. + +3. Click on Jira Server plugin panel. + +4. Click on the tab with existing integration. + +5. Click on "Remove" icon. + +6. Click "Delete" button. + + + + + +## Project JIRA Server integration + +### Add new project Jira Server integration + +If any project needs different Jira Server configurations, you should unlink a project from Global configurations and add a project configuration. It means that now when a new global integration is added to our centralized test automation tool, it won't be applied to the unlinked project. + +For that, + +1. Log in as an ADMIN or Project Manager. + +2. Go to Project Settings > Integrations. + +3. Click on the Jira Server integration panel. + +4. Click on "Add Project integration" button. + + + +5. Fill in the necessary fields. + +6. Click "Create" button. + + + +```javascript +'Integration Name': - should be unique +'Link to BTS': +'Project key in BTS': +'Authorization Type': Basic (predefined) +'BTS Username': +'BTS Password or API Token': +``` + +After you have created a connection with the JIRA project, you can choose predefined JIRA ticket fields. These fields will be shown to you all the time when you post the issue in Jira. + +This feature gives you the ability to choose which type you will post a ticket. + +To choose a needed issue type and predefined field for the chosen issue, you should perform the following actions: + +1. In the Configuration section, choose issue type from the drop-down. + +2. Check the needed fields and fill them in if necessary. + +3. Click on "Submit" button. + + + +Now team members on **this project** will be able to submit issues in Jira. Options for Post issue / Link issue are activated. + +You can add more integrations by clicking on "Add integration" button. + +### Reset to global Jira Server Integrations + +If you want to delete project integrations with Jira Server and link your project with global configurations, please perform actions described below: + +1. Log in as an ADMIN or Project Manager. + +2. Go to Project Settings > Integrations. + +3. Click on the JIRA Server integration panel. + +4. Click on "Reset to Global Integrations" button. + +5. Confirm the action. + + + + + +## Some tricks when you create a new connection: + +1. Verify that the link to the JIRA Server system is correct. There are several possible variants are possible, for instance: + +``` +https://jira.company.com/jira +https://jiraeu.company.com +``` + +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. + +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. To do this, log in to the JIRA Server using the same credentials that you are trying to use for the integration with ReportPortal. If the user is valid, you should be able to log in through the UI without any issues. + +4. In some cases, Jira API token is required instead of the user’s password. This depends on the Jira configuration, as the use of a password is often not permitted for third-party system integrations. In such cases, API token should work. + +## Post issue to Jira Server + +Posting an issue to Jira Server means to create a new issue in Jira from ReportPortal and upload logs and attachments from an execution. + +If you want to post a new issue to Jira, you need to have a project or global integration with Jira Server. + +1. Log in to ReportPortal as Admin, Project Manager, Member, Customer or Operator. + +2. Go to a Test view. + +3. Click on the pencil icon near a needed item to open "Make decision" modal. + + + +4. Select "Post issue" option and then "Apply & Continue". + + + +5. Fill in the "Post issue" form with valid data. + +6. Click "Post issue" button. + + + +A new issue will be posted in Jira with information from ReportPortal. + +As a result, a ticket of the selected issue type was created in the Jira project specified in the integration, including logs, screenshots, a link to ReportPortal, and other details. + + + +A label with Jira Issue ID will be added to the test item. Details of the created Jira ticket (summary and status) are also visible. + + + +## Link an issue with an issue in Jira Server + +You can also link ReportPortal item to already existing issue in Jira. + +1. Log in to ReportPortal as Admin, Project Manager, Member, Customer or Operator. + +2. Go to a Test view. + +3. Click on the pencil icon near a needed item to open "Make decision" modal. + +4. Select "Link issue" option and then "Apply & Continue". + +5. Fill in the "Link issue" form with valid data. + +6. Click "Link issue" button. + + + +A label with issue ID will be added to the test item. + + + +## Unlink an issue in Jira Server + +You can also unlink an issue. + +1. Click on the "remove" icon near issue ID. + + + +2. Click on "Unlink Issue" button. + + + +The link to the issue in Jira Server is removed. diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/AzureDevOps.mdx b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/AzureDevOps.mdx new file mode 100644 index 0000000000..d125e98fd0 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/AzureDevOps.mdx @@ -0,0 +1,321 @@ +--- +sidebar_position: 5 +sidebar_label: Azure DevOps +description: Connect Azure DevOps with your test report dashboard to post, link, and manage issue in just a few clicks. +--- + +# Azure DevOps + +To install the Azure DevOps (ADO) plugin, see [Upload plugin](/plugins/ManagePlugins#upload-plugin) section. + +Integration with our centralized test automation tool can be helpful for projects which are already using Azure DevOps BTS (Bug Tracking System) as a tracking tool. This feature allows posting issues and linking/unlinking issues, getting updates on their statuses. For example, just a few clicks – and bug with detailed logs is created! + +Azure DevOps BTS integration can be configured on the global level (for all projects on the instance) or on the project level (only for one project). + +## Global Azure DevOps BTS integration + +### Add new global Azure DevOps BTS integration + +You might want to configure **global integrations** which will be applied on all projects if all projects on your instance are using the same Azure DevOps BTS projects. + +1. Log in as ADMIN. + +2. Go to Administrate > Plugins. + +3. Click on Azure DevOps plugin. + +4. Click on the “Add integration” button. + + + +5. Fill and Save the authorization form. + + + +Please, follow the steps below to get a token for Azure DevOps integration: + + + + + + + + + +You can choose predefined Azure DevOps ticket fields after you have created a connection with the Azure DevOps BTS project. These fields will be shown to you all the time when you post an issue to the Azure DevOps BTS. + +This feature also gives you the ability to choose proper issue type for newly created issues in Azure DevOps BTS. + +To choose a needed issue type and predefined field for the chosen issue, you should perform the following actions on the opened **Configuration** form: + +1. Choose issue type from the drop-down. + +2. 2.Check the fields needed and fill them in if necessary. + +3. Click on “Submit” button. + + + +Now team members on all your projects will be able to submit issues in Azure DevOps BTS. Options for Post Issue/Link issue are activated. + +You can add more integrations by clicking on “Add integration”. + + + +User can add several integrations, but with a different name to the **one Azure DevOps BTS project**. + +**Use case:** + +**Situation:** User wants to post to Azure DevOps BTS issues with type **Issue** and **Task** to the project NNN-MMM in Azure DevOps BTS. Is it possible? Yes! + +**Solution:** Add two integrations to the project NNN-MMM in Azure DevOps BTS with names e.g., “Project -1” and “Project -2”. Add to the “Project -1” issue type **Issue** and for “Project -2” - issue type **Task**. While posing issue procedure, choose integration with needed type. + +### Update global Azure DevOps BTS integration + +If you need to edit Azure DevOps BTS integration authorization parameters, please perform actions: + +1. Log in as ADMIN. + +2. Go to Administrate > Plugins. + +3. Click on Azure DevOps plugin. + +4. Click on a tab with existing integration. + +5. Click on “Edit authorization” link. + + + +6. Change “Integration name”. + +7. Type your Azure DevOps credentials. + +8. Submit the form. + +:::note +You can edit only “Integration name”. If you need other changes, please submit new integration. +::: +If you need to edit fields which should be posted in Azure DevOps BTS, please perform actions: + +1. Log in as ADMIN. + +2. Go to Administrate > Plugins. + +3. Click on Azure DevOps plugin. + +4. Click on the tab with existing integration. + +5. Click on “Configure” button. + + + +6. Choose issue type from the drop-down. + +7. Check the fields needed and fill them in if necessary. + +8. Click on “Submit” button. + +### Remove global Azure DevOps BTS integration + +If you need to remove Azure DevOps BTS integration, please perform actions: + +1. Log in as ADMIN. + +2. Go to Administrate > Plugins. + +3. Click on Azure DevOps plugin. + +4. Click on the tab with existing integration. + +5. Click on “Remove integration”. + + + +6. Submit the action. + +## Project Azure DevOps BTS integration + +### Add new project Azure DevOps BTS integration + +If any project needs different Azure DevOps BTS configurations, you should unlink a project from Global configurations and add a Project configuration. It means that now when a new global integration is added to the ReportPortal, it won't be applied to the unlinked project. + +For that, + +1. Log in as an ADMIN or Project Manager. + +2. Go to Project Settings > Integrations. + +3. Click on the Azure DevOps integration panel. + +4. Click on “Unlink and setup manually” button. + + + +5. Fill and confirm the authorization form. + + + +:::note +Please, have a look at **Global Azure DevOps BTS** integration for detailed configuration steps. +::: +You can choose predefined Azure DevOps ticket fields after you have created a connection with the Azure DevOps BTS project. These fields will be shown to you all the time when you post an issue to the Azure DevOps BTS. + +This feature also gives you the ability to choose proper issue type for newly created issues in Azure DevOps BTS. + +To choose a needed issue type and predefined field for the chosen issue, you should perform the following actions on the opened **Configuration** form: + +1. Choose issue type from the drop-down. + +2. Check the needed fields and fill them in if necessary. + +3. Click on “Submit” button. + +Now team members on this project will be able to submit issues in Azure DevOps BTS. Options for Post Issue/Link issue are activated. + +You can add more integrations by clicking on “Add integration” button. + +### Reset to project Azure DevOps BTS Integrations + +If you want to delete project integrations with Azure DevOps BTS and link your project with global configurations, please perform actions described below: + +1. Log in as an ADMIN or Project Manager. + +2. Go to Project Settings > Integrations. + +3. Click on the Azure DevOps integration panel. + +4. Click on “Reset to global settings” button. + +5. Confirm the action. + + + +## Post issue to Azure DevOps BTS + +Posting an issue to Azure DevOps BTS means creating a new issue in Azure DevOps BTS from ReportPortal and uploading logs and attachments from an execution. + +If you want to post a new issue to Azure DevOps BTS, you need to have a project or global integration with Azure DevOps BTS. + +1. Log in to ReportPortal as Admin, PM, Member, Customer or Operator. + +2. Go to Launches. + +3. Choose a needed item. + + + +4. Click on the pencil icon to open “Make decision” modal. + + + +5. Choose “Post issue” option and then “Apply & Continue”. + + + +6. Fill in the “Post Issue” form with valid data and submit the form. + + + +7. A new issue will be posted in Azure DevOps BTS with information from ReportPortal. + + + +8. A label with issue ID will be added to the test item. + + + +## Link an issue with an issue in Azure DevOps BTS + +Linking an issue with an issue in Azure DevOps BTS means adding a clickable link to an existing issue in Azure DevOps BTS from ReportPortal that will show a status of this issue. + +1. Log in to ReportPortal as Admin, PM, Member, Customer or Operator. + +2. Go to Launches. + +3. Choose a needed item. + + + +4. Click on the pencil icon to open “Make decision” modal. + + + +5. Choose “Link issue” option and then “Apply & Continue”. + + + +6. Fill in the “Link issue” form with valid data and submit the form. + + + +7. A label with issue ID will be added to the test item. + + + +8. Link is redirected to this issue in Azure DevOps BTS. + + + +## Unlink an issue in Azure DevOps BTS + +You can also unlink an issue. + +1. Click on the “remove” icon. + + + +2. Click “Unlink Issue”. + + + +3. Link to the issue in Azure DevOps BTS is removed. + +## Custom issue type in Azure DevOps BTS + +You can configure any custom issue type (e.g., Bug for Adam) in Azure DevOps BTS and then choose it as predefined Azure DevOps ticket field. So, developer Adam will see on the Azure DevOps BTS all issues from ReporPortal which assigned to him. + +Follow the steps below to configure custom issue type: + +1. Log in to [Azure portal](https://dev.azure.com). + +2. Go to Organization settings. + + + +3. Click on the “Process” menu item. + + + +4. Select three dots near the current process and create a new one. + + + + + +5. Click on the name of the just created process. + + + +6. Create custom issue type. + + + + + +7. Click on the project quantity and change the process for your project. + + + + + + + +8. Change Issue Type for Azure DevOps BTS integration on ReportPortal. + + + +9. Post issues to Azure DevOps BTS. + +10. Now you can see issues with custom issue type on Azure DevOps BTS. + + diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/GitLab.mdx b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/GitLab.mdx new file mode 100644 index 0000000000..c865942cf4 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/GitLab.mdx @@ -0,0 +1,299 @@ +--- +sidebar_position: 6 +sidebar_label: GitLab +description: Integrate GitLab to post issues, link defects, and sync status updates seamlessly. +--- + +# GitLab + +To install the GitLab plugin, see [Upload plugin](/plugins/ManagePlugins#upload-plugin) section. + +Integration with the GitLab Bug Tracking System (BTS) can be helpful for projects which are already using GitLab BTS as a tracking tool. The integration provides an exchange of information between our test automation reporting dashboard and the GitLab Server, such as posting issues and linking issues, getting updates on their statuses. + +**Permission:** + +The Administrator can upload a plugin and create global integrations on the Plugin tab in the Administrate section. The Project Manager can work only on the project level. He can unlink and re-write global configuration with project ones on Project Settings > Integrations. + +GitLab BTS integration can be configured on the global level (for all projects on the instance) or on the project level (only for one project). + +## Global GitLab BTS integration + +### Add new global GitLab BTS integration + +You might want to configure global integrations which will be applied on all projects if all projects on your instance are using the same GitLab BTS projects. + +1. Log in as ADMIN. + +2. Go to Administrate > Plugins. + +3. Click on GitLab plugin panel. + +4. Click on "Add integration" button. + + + +5. Fill and confirm the authorization form. + +```javascript +'Integration Name': - should be unique +'Link to BTS': +'Project ID in BTS': +'Access Token': +``` + + + +How to find Access Token in Gitlab? Please, see the image below. + + + +After you have created a connection with the GitLab project, you can choose predefined GitLab ticket fields. These fields will be shown to you all the time when you post the issue in GitLab. + +* Issue type: dropdown with options "issue" (default) or "incident" +* Title (required) +* Description +* Confidential: dropdown with options "Yes" or "No" +* Assignee(s) +* Due date +* Labels +* Milestone +* Epic – **GitLab Enterprise Version** +* Weight – **GitLab Enterprise Version** + +:::important +You can fill in the fields marked as 'GitLab Enterprise Version,' but this data will only appear in GitLab if you have the Paid Enterprise version. + +In the free version of GitLab, you can only enter one Assignee. +::: + +:::note +The Assignee(s) field searches both by login and by name. + +The Milestone, Epic, Assignee(s), Label fields work through autocomplete. +::: + + + +Now team members on all your projects will be able to submit issues in GitLab. Options for Post Issue/Link issue are activated. + +You can add more integrations by clicking on "Add integration" button. + + + +### Update global GitLab BTS integration + +If you need to edit GitLab BTS integration authorization parameters, perform actions described below: + +1. Log in as ADMIN. + +2. Go to Administrative > Plugins. + +3. Click on GitLab plugin panel. + +4. Click on a tab with existing integration. + +5. Click on "Edit" icon. + +6. Change "Integration name". + +7. Type your Access Token. + +8. Click "Save" button. + + + +If you need to edit fields which should be posted in GitLab BTS, perform actions described below: + +1. Log in as ADMIN. + +2. Go to Administrative > Plugins. + +3. Click on GitLab plugin panel. + +4. Click on a tab with existing integration. + +5. Click on "Edit" button in Configuration section. + +6. Check the needed fields and fill them in if necessary. + +7. Click on "Submit" button. + + + +### Remove global GitLab BTS integration + +If you need to remove GitLab BTS integration, perform actions described below: + +1. Log in as ADMIN. + +2. Go to Administrative > Plugins. + +3. Click on GitLab plugin panel. + +4. Click on a tab with existing integration. + +5. Click on "Remove" icon. + +6. Click "Delete" button. + + + +## Project GitLab BTS integration + +### Add new project GitLab BTS integration + +If any project needs different GitLab BTS configurations, you should unlink a project from Global configurations and add a project configuration. It means that now when a new global integration is added to our test automation results dashboard tool, it won't be applied to the unlinked project. + +For that, + +1. Log in as an ADMIN or Project Manager. + +2. Go to Project Settings > Integrations. + +3. Click on the GitLab integration panel. + +4. Click on "Add Project Integration" button. + +5. Fill necessary fields and click "Create" button. + +```javascript +'Integration Name': - should be unique +'Link to BTS': +' Project ID in BTS': +'Access Token': +``` + + + +After you have created a connection with the GitLab project, you can choose predefined GitLab ticket fields. These fields will be shown to you all the time when you post the issue in GitLab. + +* Issue type: dropdown with options "issue" (default) or "incident" +* Title (required) +* Description +* Confidential: dropdown with options "Yes" or "No" +* Assignee(s) +* Due date +* Labels +* Milestone +* Epic – **GitLab Enterprise Version** +* Weight – **GitLab Enterprise Version** + +:::important +You can fill in the fields marked as 'GitLab Enterprise Version,' but this data will only appear in GitLab if you have the Paid Enterprise version. + +In the free version of GitLab, you can only enter one Assignee. +::: + +:::note +The Assignee(s) field searches both by login and by name. + +The Milestone, Epic, Assignee(s), Label fields work through autocomplete. +::: + + + +You can add more integrations by clicking on "Add Project Integration" button. + + + +### Reset to global GitLab BTS Integration + +If you want to delete project integrations with GitLab BTS and link your project with global configurations, perform actions described below: + +1. Log in as an ADMIN or Project Manager. + +2. Go to Project Settings > Integrations. + +3. Click on the GitLab integration panel. + +4. Click on "Reset to Global Integrations" button. + + + +5. Click "Reset" button. + + + +## Post issue to GitLab BTS + +Posting an issue to GitLab BTS means to create a new issue in GitLab BTS from ReportPortal. + +If you want to post a new issue to GitLab BTS, you need to have a project or global integration with GitLab. + +**Post issue via Step view** + +1. Log in to ReportPortal as Admin, Project Manager, Member, Customer or Operator + +2. Go to a Step view. + +3. Click on the pencil icon near a needed item to open “Make decision” modal. + + + +4. Set defect type, add comment, select “Post issue” option and then “Apply & Continue”. + + + +5. Fill in the “Post issue” form with valid data and submit the form. + + + +:::note +You can add labels from the dropdown while configuring GitLab integration and during the issue posting. Labels lift from the project in GitLab. +::: + + + +6. Click “Post issue” button. + +A new issue will be posted in GitLab BTS with information from ReportPortal. + + + +A label with issue ID will be added to the test item. + + + + + +## Link an issue with an issue in GitLab BTS + +Linking an issue with an issue in GitLab BTS means adding a clickable link to an existing issue in GitLab BTS from ReportPortal that will show a status of this issue. + +**Link issue via Step view** + +1. Log in to ReportPortal as Admin, Project Manager, Member, Customer or Operator. + +2. Go to a Step view. + +3. Click on the pencil icon near a needed item to open “Make decision” modal. + +4. Set defect type, select “Link issue” option and then “Apply & Continue”. + + + +5. Fill in the “Link issue” form with valid data and submit the form. + + + +6. Click “Link issue” button. + +A label with issue ID will be added to the test item. + + + +## Unlink an issue in GitLab BTS + +You can also unlink an issue. + +1. Click on the “remove” icon. + + + +2. Click “Unlink Issue”. + + + +Link to the issue in GitLab BTS is removed. + + diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/Monday.mdx b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/Monday.mdx new file mode 100644 index 0000000000..f5fc41f7c8 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/Monday.mdx @@ -0,0 +1,256 @@ +--- +sidebar_position: 7 +sidebar_label: Monday +description: Integrate ReportPortal with Monday to streamline issue reporting, link test failures, and synchronize statuses between your test results and Monday boards. +--- + +# Monday + +To install the Monday plugin, see [Upload plugin](/plugins/ManagePlugins#upload-plugin) section. + +Integration with the Monday Bug Tracking System (BTS) can be helpful for projects which are already using Monday BTS as a tracking tool. The integration provides an exchange of information between our test results reporting service and the Monday Server, such as posting issues and linking issues, getting updates on their statuses. + +:::important +The Administrator can upload a plugin and create global integrations on the Plugin tab in the Administrate section.
+The Project Manager can work only on the project level. He can unlink and re-write global configuration with project ones on Project Settings > Integrations. +::: + +Monday BTS integration can be configured on the global level (for all projects on the instance) or on the project level (only for one project). + +## Global Monday BTS integration + +### Add new global Monday BTS integration + +You might want to configure global integrations which will be applied on all projects if all projects in your instance are using the same Monday BTS projects. + +1. Log in as ADMIN. + +2. Go to Administrate > Plugins. + +3. Click on Monday plugin panel. + +4. Click on ‘Add integration’ button. + + + +5. Fill and confirm the authorization form. + + + +```javascript +'Integration Name': - should be unique +'Link to BTS': +'Board ID in BTS': +'API Token': +``` + +How to find API Token in Monday: + +1. Click on the user icon at the top right corner. + +2. Open ‘Developers’ section. + +3. Open ‘My access tokens’ tab. + + + +After you have created a connection with the Monday project, you can choose predefined Monday ticket fields. These fields will be shown to you all the time when you post the issue in Monday. + + + +Now team members on all your projects will be able to submit issues in Monday. Options for Post Issue/Link issue are activated. + +You can add more integrations by clicking on ‘Add integration’ button. + +### Update global Monday BTS integration + +If you need to edit Monday BTS integration parameters, perform actions described below: + +1. Log in as ADMIN. + +2. Go to Administrative > Plugins. + +3. Click on Monday plugin panel. + +4. Click on the tab with existing integration. + +5. Click on ‘Edit’ icon. + +6. Change ‘Integration name’. + +7. Type your API Token. + +8. Click ‘Save’ button. + + + +If you need to edit fields which should be posted in Monday BTS, perform actions described below: + +1. Log in as ADMIN. + +2. Go to Administrative > Plugins. + +3. Click on Monday plugin panel. + +4. Click on the tab with existing integration. + +5. Click on ‘Edit’ button in Configuration section. + +6. Check the needed fields and fill them in if necessary. + +7. Click on ‘Submit’ button. + + + +### Remove global Monday BTS integration + +If you need to remove Monday BTS integration, perform actions described below: + +1. Log in as ADMIN. + +2. Go to Administrative > Plugins. + +3. Click on Monday plugin panel. + +4. Click on the tab with existing integration. + +5. Click on ‘Remove’ icon. + +6. Click ‘Delete’ button. + + + + + +## Project Monday BTS integration + +### Add new project Monday BTS integration + +If any project needs different Monday BTS configurations, you should unlink a project from Global configurations and add a project configuration. It means that now when a new global integration is added, it won't be applied to the unlinked project. + +For that, + +1. Log in as an ADMIN or Project Manager. + +2. Go to Project Settings > Integrations. + +3. Click on the Monday integration panel. + +4. Click on ‘Add Project Integration’ button. + +5. Fill in the necessary fields and click ‘Create’ button. + + + +```javascript +'Integration Name': - should be unique +'Link to BTS': +'Board ID in BTS': +'API Token': +``` + +After you have created a connection with the Monday project, you can choose predefined Monday ticket fields. These fields will be shown to you all the time when you post the issue in Monday. + + + +Now team members on this project will be able to submit issues in Monday. Options for Post Issue/Link issue are activated. + +You can add more integrations by clicking on ‘Add Project Integration’ button. + +### Reset to global Monday BTS Integration + +If you want to delete project integrations with Monday BTS and link your project with global configurations, perform actions described below: + +1. Log in as an ADMIN or Project Manager. + +2. Go to Project Settings > Integrations. + +3. Click on the Monday integration panel. + +4. Click on ‘Reset to Global Integrations’ button. + +5. Click ‘Reset’ button. + + + + + +### Post issue to Monday BTS + +Posting an issue to Monday BTS means creating a new issue in Monday BTS from ReportPortal. + +If you want to post a new issue to Monday BTS, you need to have a project or global integration with Monday. + +**Post issue via Step view** + +1. Log in to ReportPortal as Admin, Project Manager, Member, Customer or Operator. + +2. Go to a Step view. + +3. Click on the pencil icon near a needed item to open ‘Make decision’ modal. + + + +4. Set defect type, add comment, select ‘Post issue’ option and then ‘Apply & Continue’. + + + +5. Fill in the ‘Post issue’ form with valid data. + +6. Click ‘Post issue’ button. + + + +A new issue will be posted in Monday BTS with information from ReportPortal. + + + +A label with issue ID will be added to the test item. + + + + + +### Link an issue with an issue in Monday BTS + +Linking an issue with an issue in Monday BTS means adding a clickable link to an existing issue in Monday BTS from ReportPortal that will show a status of this issue. + +**Link issue via Step view** + +1. Log in to ReportPortal as Admin, Project Manager, Member, Customer or Operator. + +2. Go to a Step view. + +3. Click on the pencil icon near a needed item to open ‘Make decision’ modal. + +4. Select ‘Link issue’ option and then ‘Apply & Continue’. + + + +5. Fill in the ‘Link issue’ form with valid data. + +6. Click ‘Link issue’ button. + + + +A label with issue ID will be added to the test item. + + + + + +### Unlink an issue in Monday BTS + +You can also unlink an issue. + +1. Click on the ‘remove’ icon. + + + +2. Click ‘Unlink Issue’. + + + +The link to the issue in Monday BTS is removed. + + diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/Rally.mdx b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/Rally.mdx new file mode 100644 index 0000000000..cfac1efa4a --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/Rally.mdx @@ -0,0 +1,251 @@ +--- +sidebar_position: 8 +sidebar_label: Rally +description: Integrate Rally with your QA automation dashboard to track, post, and manage defects efficiently from test results. +--- + +# Rally + +To install the Rally plugin, see [Upload plugin](/plugins/ManagePlugins#upload-plugin) section. + +## Global RALLY integration + +### Add new global RALLY integration + +If all projects on your instance are using the same RALLY projects, you will be able to configure **global integrations** which will be applied on all projects. + +1. Log in as ADMIN + +2. Go to Administrative > Plugins + +3. Click on RALLY plugin panel + +4. Click on "Add integration" button + +5. Fill and confirm the authorization form + +```javascript +'Integration Name': - should be unique +'Link to BTS': +'Project ID in BTS': +'Authorization Type': ApiKey (predefined) +'ApiKey': +``` + +After you have created a connection with the RALLY project, you can choose predefined RALLY ticket fields. These fields will be shown to you all the time when you post the issue in the RALLY. + +This feature gives you the ability to choose which type you will post a ticket. + +To choose a needed issue type and predefined field for the chosen issue, you should perform the following actions: + +1. Click on "Configure" button + +2. Choose issue type from the drop-down + +3. Check the needed fields and fill them in if necessary + +4. Click on "Submit" button + + +Now team members on all your projects will be able to submit issues in RALLY. Options for Post Issue / Link issue are activated. + +You can add more integrations by clicking on "Add integration" + +User can add several integrations, but with a different name to the **one RALLY project**. + + +>**Use case:** +> +> **Situation:** User wants to post to RALLY issues with type **Defect** and **Task** to the project NNN-MMM in RALLY. Is it possible? +> Yes! +> +> **Solution:** Add two integrations to the project NNN-MMM in RALLY with names f.e. "Project -1" and "Project -2". +> Add to the "Project -1" issue type **Defect** and for "Project -2" - issue type **Task**. +> While posing issue procedure, choose integration with needed type. + + +### Update global RALLY integration + +If you need to edit RALLY integration authorization parameters, please perform actions: + +1. Log in as ADMIN + +2. Go to Administrative > Plugins + +3. Click on RALLY plugin panel + +4. Click on a tab with existing integration + +5. Click on "Edit authorization" link + +6. Change "Integration name" + +7. Type your RALLY credentials + +8. Submit the form + +:::note +You can edit only "Integration name". If you need other changes, please submit new integration. +::: + +If you need to edit fields which should be posted in RALLY, please perform actions: + +1. Log in as ADMIN + +2. Go to Administrative > Plugins + +3. Click on RALLY plugin panel + +4. Click on a tab with existing integration + +5. Click on "Configure" button + +6. Choose issue type from the drop-down + +7. Check the needed fields and fill them in if necessary + +8. Click on "Submit" button + + +### Remove global RALLY integration + +If you need to remove RALLY integration, please perform actions: + +1. Log in as ADMIN + +2. Go to Administrative > Plugins + +3. Click on RALLY plugin panel + +4. Click on a tab with existing integration + +5. Click on "Remove integration" + +6. Submit the action + +## Project RALLY integration + +### Add new project RALLY integration + +If any project needs different RALLY configurations, you should unlink a project from Global configurations and add a project configuration. It means that now when a new global integration is added to the ReportPortal, it won't be applied to the unlinked project. + +For that, + +1. Log in as an ADMIN or Project Manager + +2. Go to Project Settings > Integrations + +3. Click on the RALLY integration panel + +4. Click on "Unlink and setup manually" button + +5. Fill and confirm the authorization form + +```javascript +'Integration Name ': - should be unique +'Link to BTS': +'Project ID in BTS': +'Authorization Type': Basic (predefined) +'BTS Username': +'BTS Password': +``` + +After you have created a connection with the RALLY project, you can choose predefined RALLY ticket fields. These fields will be shown to you all the time when you post the issue in the RALLY. + +This feature gives you the ability to choose which type you will post a ticket with. + +To choose a needed issue type and predefined field for the chosen issue, you should perform the following actions: + +1. Click on "Configure" button + +2. Choose issue type from the drop-down + +3. Check the needed fields and fill them in if necessary + +4. Click on "Submit" button + + +Now team members on **this project** will be able to submit issues in RALLY. Options for Post Issue / Link issue are activated. + +You can add more integrations by clicking on "Add integration" button. + +### Reset to project RALLY Integrations + +If you want to delete project integrations with RALLY and link your project with global configurations, please perform actions described below: + +1. Log in as an ADMIN or Project Manager + +2. Go to Project Settings > Integrations + +3. Click on the RALLY integration panel + +4. Click on "Reset to global settings" button + +5. Confirm the action + +## Post issue to Rally + +Posting an issue to Rally means to create a new issue in Rally from ReportPortal and upload logs and attachments from an execution. + +If you want to post a new issue to Rally, you need to have a project or global integration with Rally. + + + +Post issue via Step view + +1. Log in to ReportPortal as Admin, PM, Member, Customer or Operator + +2. Go to a Step view + +3. Choose a needed item + +4. Click on "Actions" button + +5. Choose "Post issue" option + +6. Fill in the "Post issue" form with valid data + +```javascript +`BTS`: if you have configured BTS integrations, you will be able to choose between them +`Integration name`: from the drop-down, you can choose any of integrations for chosen earlier BTS +`Predefined fields`: fields which you choose on Project Settings/ or Plugins +`Included data`: which data should be posted to BTS (attachments, logs, comments) +`ApiKey`: user apikey +``` + +7. Submit the form + +8. A new issue will be posted in BTS with information from ReportPortal + +9. A label with issue ID will be added to the test item + +## Link an issue with an issue in Rally + +Linking an issue with an issue in Rally means adding a clickable link to an existing issue in Rally from ReportPortal that will show a status of this issue. + + + +Link issue via Step view + +1. Log in to ReportPortal as Admin, PM, Member, Customer or Operator + +2. Go to a Step view + +3. Choose a needed item + +4. Click on "Actions" button + +5. Choose "Link issue" option + +6. Fill in the "Link issue" form with valid data + +```javascript +`BTS`: if you have configured BTS integrations, you will be able to choose between them +`Integration name`: from the drop-down, you can choose any of integrations for chosen earlier BTS +`Link to issue`: a full link to the item in BTS +`Issue ID`: information which will be displayed on the label in ReportPortal +``` + +7. Submit the form + +8. A label with issue ID will be added to the test item diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/_category_.json b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/_category_.json new file mode 100644 index 0000000000..60b833471e --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Bug Tracking", + "position": "3", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps1.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps1.png new file mode 100644 index 0000000000..6e3a38460d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps1.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps10.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps10.png new file mode 100644 index 0000000000..46900f63ab Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps10.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps11.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps11.png new file mode 100644 index 0000000000..052e737c30 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps11.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps12.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps12.png new file mode 100644 index 0000000000..b4a406faf0 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps12.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps13.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps13.png new file mode 100644 index 0000000000..be84bcb32c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps13.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps14.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps14.png new file mode 100644 index 0000000000..972cccce1f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps14.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps15.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps15.png new file mode 100644 index 0000000000..d9ff3bcca1 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps15.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps16.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps16.png new file mode 100644 index 0000000000..652d6c6f82 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps16.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps17.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps17.png new file mode 100644 index 0000000000..6106feac2e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps17.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps18.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps18.png new file mode 100644 index 0000000000..a9996162da Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps18.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps19.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps19.png new file mode 100644 index 0000000000..04140002c8 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps19.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps2.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps2.png new file mode 100644 index 0000000000..63fe8abd5d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps2.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps20.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps20.png new file mode 100644 index 0000000000..34a1ad7e00 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps20.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps21.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps21.png new file mode 100644 index 0000000000..63c8900ab4 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps21.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps22.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps22.png new file mode 100644 index 0000000000..38940e7b29 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps22.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps23.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps23.png new file mode 100644 index 0000000000..b8a54a910f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps23.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps24.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps24.png new file mode 100644 index 0000000000..34ca8b7cf4 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps24.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps25.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps25.png new file mode 100644 index 0000000000..9b76774292 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps25.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps26.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps26.png new file mode 100644 index 0000000000..ebe662ee46 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps26.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps27.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps27.png new file mode 100644 index 0000000000..47786d7a6c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps27.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps28.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps28.png new file mode 100644 index 0000000000..3df20b5fd1 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps28.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps29.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps29.png new file mode 100644 index 0000000000..27cf509714 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps29.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps3.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps3.png new file mode 100644 index 0000000000..0b7ce03faa Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps3.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps30.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps30.png new file mode 100644 index 0000000000..97966af9ae Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps30.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps31.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps31.png new file mode 100644 index 0000000000..c837fe2bba Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps31.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps32.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps32.png new file mode 100644 index 0000000000..b0703b54d5 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps32.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps33.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps33.png new file mode 100644 index 0000000000..67de1e4200 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps33.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps34.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps34.png new file mode 100644 index 0000000000..aaf541728f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps34.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps35.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps35.png new file mode 100644 index 0000000000..6c6f6103d0 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps35.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps36.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps36.png new file mode 100644 index 0000000000..ab88d53086 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps36.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps37.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps37.png new file mode 100644 index 0000000000..d551ad29c6 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps37.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps38.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps38.png new file mode 100644 index 0000000000..43b976a7fa Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps38.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps39.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps39.png new file mode 100644 index 0000000000..d2edaad75a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps39.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps4.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps4.png new file mode 100644 index 0000000000..100454680f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps4.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps40.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps40.png new file mode 100644 index 0000000000..5e2dc16abe Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps40.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps5.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps5.png new file mode 100644 index 0000000000..d9c83fa4ff Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps5.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps6.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps6.png new file mode 100644 index 0000000000..20795264cb Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps6.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps7.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps7.png new file mode 100644 index 0000000000..50546d9217 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps7.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps8.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps8.png new file mode 100644 index 0000000000..10c5a5faa5 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps8.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps9.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps9.png new file mode 100644 index 0000000000..1bb8a68d99 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/azure-dev-ops/AzureDevOps9.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab1.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab1.png new file mode 100644 index 0000000000..cf10796b6d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab1.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab10.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab10.png new file mode 100644 index 0000000000..1f4ad47e0c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab10.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab11.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab11.png new file mode 100644 index 0000000000..98f715261d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab11.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab12.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab12.png new file mode 100644 index 0000000000..5aae443410 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab12.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab13.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab13.png new file mode 100644 index 0000000000..41af12ec6c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab13.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab14.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab14.png new file mode 100644 index 0000000000..75c1f07e0b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab14.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab15.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab15.png new file mode 100644 index 0000000000..344114a56f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab15.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab16.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab16.png new file mode 100644 index 0000000000..00785b00ed Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab16.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab17.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab17.png new file mode 100644 index 0000000000..f3aab7f7f4 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab17.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab18.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab18.png new file mode 100644 index 0000000000..a1fedd5b93 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab18.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab19.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab19.png new file mode 100644 index 0000000000..d134d3ed9d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab19.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab2.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab2.png new file mode 100644 index 0000000000..d198d0a824 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab2.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab20.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab20.png new file mode 100644 index 0000000000..0c8fa7ba5b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab20.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab21.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab21.png new file mode 100644 index 0000000000..e4ef708de3 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab21.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab3.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab3.png new file mode 100644 index 0000000000..86710f0691 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab3.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab4.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab4.png new file mode 100644 index 0000000000..210a4dc56e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab4.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab5.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab5.png new file mode 100644 index 0000000000..7dcbcd2ff6 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab5.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab6.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab6.png new file mode 100644 index 0000000000..b4fd9638b8 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab6.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab7.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab7.png new file mode 100644 index 0000000000..becb383e4b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab7.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab8.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab8.png new file mode 100644 index 0000000000..bb0a1ae96c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab8.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab9.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab9.png new file mode 100644 index 0000000000..43c07fe24a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/gitlab/GitLab9.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraCloudIntegrationCreation.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraCloudIntegrationCreation.png new file mode 100644 index 0000000000..3567c1de94 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraCloudIntegrationCreation.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer1.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer1.png new file mode 100644 index 0000000000..bbf3e52e10 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer1.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer10.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer10.png new file mode 100644 index 0000000000..8c109a59da Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer10.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer11.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer11.png new file mode 100644 index 0000000000..7ad36ab912 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer11.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer12.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer12.png new file mode 100644 index 0000000000..ae145073ff Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer12.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer13.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer13.png new file mode 100644 index 0000000000..d082c11d6f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer13.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer14.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer14.png new file mode 100644 index 0000000000..23f5a804b6 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer14.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer15.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer15.png new file mode 100644 index 0000000000..8a709abb25 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer15.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer16.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer16.png new file mode 100644 index 0000000000..9748ce4bfc Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer16.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer17.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer17.png new file mode 100644 index 0000000000..e935c4df29 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer17.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer18.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer18.png new file mode 100644 index 0000000000..a50eceaf9a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer18.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer19.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer19.png new file mode 100644 index 0000000000..01522049ef Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer19.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer2.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer2.png new file mode 100644 index 0000000000..1f5cbdcbbf Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer2.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer20.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer20.png new file mode 100644 index 0000000000..3d9ed9b37b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer20.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer3.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer3.png new file mode 100644 index 0000000000..b11eff4f81 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer3.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer4.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer4.png new file mode 100644 index 0000000000..5cffdbb3e0 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer4.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer5.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer5.png new file mode 100644 index 0000000000..6663774636 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer5.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer6.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer6.png new file mode 100644 index 0000000000..49c2d65f53 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer6.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer7.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer7.png new file mode 100644 index 0000000000..6e6726ba97 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer7.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer8.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer8.png new file mode 100644 index 0000000000..aed56411d3 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer8.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer9.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer9.png new file mode 100644 index 0000000000..20a574240a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/JiraServer9.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/LinkIssueJiraCloud.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/LinkIssueJiraCloud.png new file mode 100644 index 0000000000..6fa17cdbdd Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/LinkIssueJiraCloud.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/PostIssueJiraCloud.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/PostIssueJiraCloud.png new file mode 100644 index 0000000000..1a8f60661f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/jira/PostIssueJiraCloud.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday1.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday1.png new file mode 100644 index 0000000000..8e6fee981a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday1.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday10.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday10.png new file mode 100644 index 0000000000..9589401086 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday10.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday11.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday11.png new file mode 100644 index 0000000000..d888b325dc Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday11.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday12.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday12.png new file mode 100644 index 0000000000..14410d59a6 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday12.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday13.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday13.png new file mode 100644 index 0000000000..bf88a83828 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday13.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday14.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday14.png new file mode 100644 index 0000000000..c8d14d03fa Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday14.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday15.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday15.png new file mode 100644 index 0000000000..63ecf7d212 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday15.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday16.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday16.png new file mode 100644 index 0000000000..578d11f28d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday16.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday17.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday17.png new file mode 100644 index 0000000000..6b41253f07 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday17.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday18.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday18.png new file mode 100644 index 0000000000..3ff896b948 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday18.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday19.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday19.png new file mode 100644 index 0000000000..495692d680 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday19.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday2.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday2.png new file mode 100644 index 0000000000..8d558223cd Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday2.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday20.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday20.png new file mode 100644 index 0000000000..b8e076f34b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday20.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday3.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday3.png new file mode 100644 index 0000000000..91ef9476f9 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday3.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday4.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday4.png new file mode 100644 index 0000000000..781f2212eb Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday4.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday5.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday5.png new file mode 100644 index 0000000000..adc159ff62 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday5.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday6.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday6.png new file mode 100644 index 0000000000..0962882f66 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday6.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday7.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday7.png new file mode 100644 index 0000000000..f1fdc68f2a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday7.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday8.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday8.png new file mode 100644 index 0000000000..ecc4b11deb Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday8.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday9.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday9.png new file mode 100644 index 0000000000..63b7547237 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/monday/Monday9.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/rally/LinkIssueRally.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/rally/LinkIssueRally.png new file mode 100644 index 0000000000..2eee2504f5 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/rally/LinkIssueRally.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/rally/PostIssueRally.png b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/rally/PostIssueRally.png new file mode 100644 index 0000000000..098c33c235 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/img/rally/PostIssueRally.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/bug-tracking/index.md b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/index.md new file mode 100644 index 0000000000..e5f26a106e --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/bug-tracking/index.md @@ -0,0 +1,20 @@ +--- +sidebar_label: Bug tracking +description: Integrate Jira, Azure DevOps, GitLab, Monday, and Rally to link, post, and sync issues from ReportPortal for faster defect triage and clearer ownership. +--- + +# Bug tracking + +Our bug tracking plugins are useful for projects that already use one of the following systems: **Jira Server**, **Jira Cloud**, **Azure DevOps**, **GitLab**, **Monday**, or **Rally**. + +They allow you to post issues, link and unlink them, and get updates on their statuses in a simple and efficient way. + +These plugins streamline communication between developers, testers, and project managers by automating the flow of data between systems. Instead of manually copying issue details from one platform to another, the plugins keep everything in sync and up to date in real time. + +They also improve visibility across teams, making it easier to see the status of an issue, and who's working on it. + +No matter which bug tracking system you use on your project, our plugins help you stay connected, keep your data synchronized, and make sure no issue is missed. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.2-organizations/plugins/import/JUnit.mdx b/versioned_docs/version-26.2-organizations/plugins/import/JUnit.mdx new file mode 100644 index 0000000000..f28621257f --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/import/JUnit.mdx @@ -0,0 +1,113 @@ +--- +sidebar_position: 13 +sidebar_label: JUnit +description: Easily import JUnit test results into ReportPortal via UI or API, enabling streamlined test analysis and enhanced reporting capabilities. +--- + +# JUnit + +The JUnit plugin is essential for importing JUnit tests into ReportPortal. + +The JUnit plugin is pre-installed automatically. However, if for any reason you have removed it, you can upload it again. + +## Upload plugin + +1. Log in to ReportPortal as administrator. + +2. Go to Administrate -> Plugins section. + +3. Click ‘Upload’ button at the top of the page. + +4. Add [.jar file](https://github.com/reportportal/plugin-import-junit/packages) and click ‘Upload’ button. + + + +## Launch import via UI with JUnit plugin + +:::important +JUnit plugin should be enabled. +::: + +1. Log in to ReportPortal. + +2. Go to the Launches page. + +3. Click ‘Import’ button. + +4. Select ‘JUnit’ in the ‘Report type’ dropdown on the ‘Import launch’ modal window. + +5. Click the drug-and-drop area to add .xml or .zip file under 32MB. + +6. Click ‘Import’ button and then ‘OK’ button on the ‘Import launch’ modal window. + + + + + +:::note +Make sure to select JUnit file for the 'JUnit' Report type.
+If you attempt to upload a file of any other agent for the 'JUnit' Report type, an error will occur. +::: + +If files from the zip archive have formats other than XML, the system will skip them. + +If the XML file is not in the JUnit structure, the system will interrupt the process of copying and mark the file in red. The reason is then shown on the tooltip when hovering the file in the pop-up window. + + + +## Launch import via API with JUnit plugin + +:::important +JUnit plugin should be enabled. +::: + +The endpoint ```POST /v1/plugin/{projectName}/junit/import``` allows importing a launch into the specified project using an XML or ZIP file. + +You can configure parameters (name, description, attributes) for the imported launch by specifying these values in your API request. + + + +There is the ability to read attributes and descriptions for Suite and Test level from XUnit reports while importing. + +**Description and attributes:** + +``` + + Lorem ipsum … + + +``` + + + + + + + + + +## Disable plugin + +1. Log in to ReportPortal as administrator. + +2. Go to Administrate -> Plugins section -> Import Launches tab. + +3. Find JUnit plugin and click on it. + +4. Click toggle OFF. + + + +## Uninstall plugin + +1. Log in to ReportPortal as administrator. + +2. Go to Administrate -> Plugins section -> Import Launches tab. + +3. Find JUnit plugin and click on it. + +4. Click ‘Uninstall’ button and confirm your choice. + + + +Following these steps, you can easily import JUnit test results into ReportPortal for further analysis and enhanced test automation reporting capabilities. diff --git a/versioned_docs/version-26.2-organizations/plugins/import/RobotFramework.mdx b/versioned_docs/version-26.2-organizations/plugins/import/RobotFramework.mdx new file mode 100644 index 0000000000..45f83066ab --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/import/RobotFramework.mdx @@ -0,0 +1,114 @@ +--- +sidebar_position: 14 +sidebar_label: RobotFramework +description: Import RobotFramework test results into ReportPortal for comprehensive test execution reporting integration and analysis. +--- + +# RobotFramework + +The RobotFramework plugin is essential for integrating RobotFramework test results into ReportPortal. + +To install the RobotFramework plugin, see [Upload plugin](/plugins/ManagePlugins#upload-plugin) section. + +## Upload plugin + +1. Log in to ReportPortal as administrator. + +2. Go to Administrate -> Plugins section. + +3. Click ‘Upload’ button at the top of the page. + +4. Add [.jar file](https://github.com/reportportal/plugin-import-robot/packages) and click ‘Upload’ button. + + + +## Launch import via UI with RobotFramework plugin + +:::important +RobotFramework plugin should be enabled. +::: + +1. Log in to ReportPortal. + +2. Go to the Launches page. + +3. Click ‘Import’ button. + +4. Select ‘RobotFramework’ in the ‘Report Type’ dropdown on the ‘Import launch’ modal window. + +5. Click the drug-and-drop area to add .xml or .zip file under 32MB. + +6. Click ‘Import’ button and then ‘OK’ button on the ‘Import launch’ modal window. + + + + + +:::note +Make sure to select RobotFramework file for the 'RobotFramework' Report type.
+If you attempt to upload a file of any other agent for the 'RobotFramework' Report type, an error will occur. +::: + +If files from the zip archive have formats other than XML, the system will skip them. + +If the XML file is not in the RobotFramework structure, the system will interrupt the process of copying and mark the file in red. The reason is then shown on the tooltip when hovering the file in the pop-up window. + + + +## Launch import via API with RobotFramework plugin + +:::important +RobotFramework plugin should be enabled. +::: + +The endpoint ```POST /v1/plugin/{projectName}/RobotFramework/import``` allows importing a launch into the specified project using XML file or ZIP archive with the report file. + +You can configure parameters (name, description, attributes) for the imported launch by specifying these values in your API request. + + + +There is the ability to add description for the Suite level and attributes and descriptions for the Test level while importing RobotFramework XML report. + +**Description:** + +```Example of setting test tags in runtime``` + +**Attributes:** + +```dynamic_tag``` + + + + + + + + + + + +## Disable plugin + +1. Log in to ReportPortal as administrator. + +2. Go to Administrate -> Plugins section -> Import Launches tab. + +3. Find RobotFramework plugin and click on it. + +4. Click toggle OFF. + + + +## Uninstall plugin + +1. Log in to ReportPortal as administrator. + +2. Go to Administrate -> Plugins section -> Import Launches tab. + +3. Find RobotFramework plugin and click on it. + +4. Click ‘Uninstall’ button and confirm your choice. + + + +Therefore, by following these step-by-step guidelines, you can import RobotFramework test results into ReportPortal for effective test failure analysis. diff --git a/versioned_docs/version-26.2-organizations/plugins/import/_category_.json b/versioned_docs/version-26.2-organizations/plugins/import/_category_.json new file mode 100644 index 0000000000..ba077a8010 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/import/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Import", + "position": "5", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.2-organizations/plugins/import/img/junit/JUnit1.png b/versioned_docs/version-26.2-organizations/plugins/import/img/junit/JUnit1.png new file mode 100644 index 0000000000..83c27b0d44 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/import/img/junit/JUnit1.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/import/img/junit/JUnit2.png b/versioned_docs/version-26.2-organizations/plugins/import/img/junit/JUnit2.png new file mode 100644 index 0000000000..830b80a376 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/import/img/junit/JUnit2.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/import/img/junit/JUnit3.png b/versioned_docs/version-26.2-organizations/plugins/import/img/junit/JUnit3.png new file mode 100644 index 0000000000..fa8f40b26a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/import/img/junit/JUnit3.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/import/img/junit/JUnit4.png b/versioned_docs/version-26.2-organizations/plugins/import/img/junit/JUnit4.png new file mode 100644 index 0000000000..1f60ee2bb7 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/import/img/junit/JUnit4.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/import/img/junit/JUnit5.png b/versioned_docs/version-26.2-organizations/plugins/import/img/junit/JUnit5.png new file mode 100644 index 0000000000..e482784514 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/import/img/junit/JUnit5.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/import/img/junit/JUnit6.png b/versioned_docs/version-26.2-organizations/plugins/import/img/junit/JUnit6.png new file mode 100644 index 0000000000..5f81984826 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/import/img/junit/JUnit6.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/import/img/junit/JUnit7.png b/versioned_docs/version-26.2-organizations/plugins/import/img/junit/JUnit7.png new file mode 100644 index 0000000000..85e9078df0 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/import/img/junit/JUnit7.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/import/img/junit/JUnit8.png b/versioned_docs/version-26.2-organizations/plugins/import/img/junit/JUnit8.png new file mode 100644 index 0000000000..dacaf84f4f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/import/img/junit/JUnit8.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/import/img/junit/JUnit9.png b/versioned_docs/version-26.2-organizations/plugins/import/img/junit/JUnit9.png new file mode 100644 index 0000000000..f456d3fd37 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/import/img/junit/JUnit9.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/import/img/robot-framework/RobotFramework1.png b/versioned_docs/version-26.2-organizations/plugins/import/img/robot-framework/RobotFramework1.png new file mode 100644 index 0000000000..973bba33a8 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/import/img/robot-framework/RobotFramework1.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/import/img/robot-framework/RobotFramework10.png b/versioned_docs/version-26.2-organizations/plugins/import/img/robot-framework/RobotFramework10.png new file mode 100644 index 0000000000..0a0d284d95 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/import/img/robot-framework/RobotFramework10.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/import/img/robot-framework/RobotFramework2.png b/versioned_docs/version-26.2-organizations/plugins/import/img/robot-framework/RobotFramework2.png new file mode 100644 index 0000000000..441269c69f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/import/img/robot-framework/RobotFramework2.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/import/img/robot-framework/RobotFramework3.png b/versioned_docs/version-26.2-organizations/plugins/import/img/robot-framework/RobotFramework3.png new file mode 100644 index 0000000000..3145920b76 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/import/img/robot-framework/RobotFramework3.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/import/img/robot-framework/RobotFramework4.png b/versioned_docs/version-26.2-organizations/plugins/import/img/robot-framework/RobotFramework4.png new file mode 100644 index 0000000000..4040272360 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/import/img/robot-framework/RobotFramework4.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/import/img/robot-framework/RobotFramework5.png b/versioned_docs/version-26.2-organizations/plugins/import/img/robot-framework/RobotFramework5.png new file mode 100644 index 0000000000..aaba73f107 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/import/img/robot-framework/RobotFramework5.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/import/img/robot-framework/RobotFramework6.png b/versioned_docs/version-26.2-organizations/plugins/import/img/robot-framework/RobotFramework6.png new file mode 100644 index 0000000000..53b7766dda Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/import/img/robot-framework/RobotFramework6.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/import/img/robot-framework/RobotFramework7.png b/versioned_docs/version-26.2-organizations/plugins/import/img/robot-framework/RobotFramework7.png new file mode 100644 index 0000000000..67bc35a2f3 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/import/img/robot-framework/RobotFramework7.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/import/img/robot-framework/RobotFramework8.png b/versioned_docs/version-26.2-organizations/plugins/import/img/robot-framework/RobotFramework8.png new file mode 100644 index 0000000000..75696b1c2e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/import/img/robot-framework/RobotFramework8.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/import/img/robot-framework/RobotFramework9.png b/versioned_docs/version-26.2-organizations/plugins/import/img/robot-framework/RobotFramework9.png new file mode 100644 index 0000000000..b9bf56fff3 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/import/img/robot-framework/RobotFramework9.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/import/index.md b/versioned_docs/version-26.2-organizations/plugins/import/index.md new file mode 100644 index 0000000000..ddaa6ea4f3 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/import/index.md @@ -0,0 +1,25 @@ +--- +sidebar_label: Import +description: Import JUnit and RobotFramework results to centralize analysis in ReportPortal. Simplify reporting, reduce manual work, and keep your automation test report current. +--- + +# Import + +Import plugins are designed to help you bring test results from testing frameworks into your reporting system quickly and easily. They support popular formats like **JUnit XML** and **Robot Framework** output files, making it simple to centralize your test data. + +This feature can be useful if: + +* there is no agent available for your test framework +* your CI/CD system cannot send requests to the ReportPortal instance for some reason + +You can **import CI/CD results into ReportPortal** both manually or via API calls. + +With the **JUnit XML** import plugin, you can import results from unit and integration tests written in Java or other languages that use the JUnit XML format. The plugin reads the test report files and saves it as a launch in ReportPortal. + +The **RobotFramework** import plugin works in a similar way. You can upload RobotFramework output files, and the plugin will automatically extract the test results and make them available for reporting and analysis. + +These import plugins save time, reduce manual effort, and make it easier to track results from different sources in one place. Whether you’re using JUnit XML, RobotFramework, or both, the import plugins help you stay organized and keep your test data up to date. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.2-organizations/plugins/index.md b/versioned_docs/version-26.2-organizations/plugins/index.md new file mode 100644 index 0000000000..636ea535e6 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/index.md @@ -0,0 +1,24 @@ +--- +title: Plugins +description: Explore seamless connections to Jira Server, Jira Cloud, E-mail server and other plugins for enhanced test reporting tool. +--- + +# Plugins + +The **Plugins** section provides comprehensive guides for integrating a variety of plugins with ReportPortal, grouped into four main categories: Bug Tracking Systems plugins, Notification plugins, Authorization plugins, Import plugins, plus integration with Sauce Labs. These plugins enhance and customize the ReportPortal experience to meet the specific needs of your project, helping to streamline test workflows and reporting processes. + +**Bug Tracking Systems plugins** allow you to automatically create tasks for detected defects directly from ReportPortal. This eliminates the need to manually log issues in a bug tracker, enabling teams to resolve defects faster and ensuring a smooth, continuous workflow. + +**Notification plugins** enable integration with popular notification services such as Slack, Telegram, and E-mail. With these plugins, you can receive instant updates on test results and critical events, helping teams stay connected and respond to issues promptly. + +**Authorization plugins** provide flexible access control and security management within our qa metrics dashboard. This section includes instructions on integrating with various authorization systems, ensuring users have the correct access levels while protecting sensitive project data. + +**Import plugins** make it possible to upload test data from different sources directly into ReportPortal, simplifying data migration and consolidating test reports from multiple tools. These plugins are invaluable for teams using diverse testing platforms that need a centralized reporting solution. + +Additionally, the **Sauce Labs plugin** allows for seamless integration with this cloud-based testing platform. Integrating Sauce Labs with ReportPortal expands your reporting capabilities and provides comprehensive insights into tests executed in the cloud. + +Using these plugins, you can tailor ReportPortal to your specific workflows, boosting testing efficiency and enhancing team collaboration. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/EmailServer.mdx b/versioned_docs/version-26.2-organizations/plugins/notifications/EmailServer.mdx new file mode 100644 index 0000000000..d100d1b6d5 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/notifications/EmailServer.mdx @@ -0,0 +1,191 @@ +--- +sidebar_position: 10 +sidebar_label: Email Server +description: Configure email server settings for automated notifications in ReportPortal. +--- + +# Email Server + +Email Server plugin is available in ReportPortal on the Plugins page. + +You don't need to download. It is already available in ReportPortal on the Plugins page. + +## Add Email Server integration + +You can integrate our centralized test automation tool with an Email Server via the SMTP protocol. + +This integration enables you to perform functions such as: + +* inviting new users to the project +* configuring notification rules on launch finish +* receiving notifications about account deletion, creation of project Email Server integration, completion of index generation for the analyzer + +:::important +A user with the account role Administrator can configure email integration for the entire instance or on a per-project basis.
+A user with the account role Project Manager can configure email integration only for projects where they are assigned as the Project Manager. +::: + +## Global Email Server integration + +To configure the SMTP server for the whole instance: + +1. Log in as ADMIN. + +2. Go to Administrate > Plugins. + +3. Click on Email Server plugin panel. + +4. Click on "Add integration" button. + + + +5. Fill in required parameters for integration. + +6. Click "Create" button. + +```javascript +`Host`: (required) +`Protocol`: (predefined) +`From name`: (optional) +`From Email`: (required) +`Port`: (required) +`Authorization`: OFF/ON (dropdown) +`Username`: (required) +`Password`: (required) +`TLS` or `SSL`: (checkbox) +``` + +:::note +You can configure an Email Server using an email service provider (such as SendGrid) and enter a username in the `Username` field without including the @ symbol or undergoing additional validation. +::: + +Example of SMTP server configuration for Gmail email server (detailed info could be found [here](https://support.google.com/a/answer/176600?hl=en)). + +```javascript +`Host`: smtp.gmail.com +`Protocol`: SMTP +`From name`: reportportal +`From Email`: reportportal1@gmail.com +`Port`: 587 +`Authorization`: ON +`Username`: reportportal1 +`Password`: +`TLS`: checkbox should be checked +``` + + + +After Email Server integration is added, the configuration will apply to all projects within the instance. + +## Project Email Server integration + +If email integration has not been added to the project, or if a Project Manager or Administrator wants to specify unique configurations for a specific project, they can configure the Email Server in the project settings. + +To configure an SMTP server for a single project instance: + +1. Log in as an ADMIN or Project Manager. + +2. Go to Project Settings > Integrations. + +3. Click on the Email Server integration panel. + +4. Click on "Add Project integration" button. + + + +5. Fill in required parameters for integration. + +6. Click "Create" button. + +```javascript +`Host`: (required) +`Protocol`: (predefined) +`From name`: (optional) +`From Email`: (required) +`Port`: (required) +`Authorization`: OFF/ON (dropdown) +`Username`: (required) +`Password`: (required) +`TLS` or `SSL`: (checkbox) +``` + +Example of SMTP server configuration for Gmail email server (detailed info could be found [here](https://support.google.com/a/answer/176600?hl=en)): + +```javascript +`Host`: smtp.gmail.com +`Protocol`: SMTP +`From name`: reportportal +`From Email`: reportportal1@gmail.com +`Port`: 587 +`Authorization`: ON +`Username`: reportportal1 +`Password`: +`TLS`: checkbox should be checked +``` + + + + +## Create Email notification rule + +1. Go to the Project settings -> [Notifications](/configuration/ProjectSettings/#email-notifications). + +2. Choose Email Notification Group. + +3. Click ‘Create Rule’ button. + +4. Fill the form: + +**Rule name** – from 1 to 55 characters, mandatory field + +**Recipients** - optional field, user name on the project or valid email + +**Launch owner** - optional checkbox, who launched - that receives + +:::note +When the `Launch owner` checkbox is unchecked, you must fill in the `Recipients` field. +::: + +**In case** – optional field, dropdown with the options: + +* Always – notification will be sent in any case. +* 10% of items have issues – notification will be sent, if more than 10% of items have issues. +* 20% of items have issues – notification will be sent, if more than 20% of items have issues. +* 50% of items have issues – notification will be sent, if more than 50% of items have issues. +* Launch has issues – notification will be sent, if at least 1 item has issues +* Launch has ‘To Investigate’ items – notification will be sent, if at least 1 item has ‘To Investigate’ + +**Launch names** – optional field + +You can select only existing launch name. The field allows multi select. + +**Attributes** – optional checkbox + +When the ‘Attributes’ checkbox is checked, you can provide key/value for attributes and select the necessary radio button: + +* ‘All attributes should match’ +* ‘Any attribute should match’ + +5. Click on ‘Create’ button. + + + +## Disable Email notifications + +1. Go to the Project settings -> Notifications. + +2. Turn OFF for Email. + + + +## Disable plugin + +1. Log in to ReportPortal as administrator. + +2. Go to Administrate -> Plugins section -> Notifications tab. + +3. Find Email plugin and click on it. + +4. Turn OFF. + + diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/Slack.mdx b/versioned_docs/version-26.2-organizations/plugins/notifications/Slack.mdx new file mode 100644 index 0000000000..c5e59e3037 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/notifications/Slack.mdx @@ -0,0 +1,173 @@ +--- +sidebar_position: 11 +sidebar_label: Slack +description: Configure Slack notifications for real-time test execution reporting updates in ReportPortal. +--- + +# Slack + +Be informed about launch finish in real time in your Slack channel. + +To download the Slack plugin, see [Upload plugin](/plugins/ManagePlugins#upload-plugin) section. + +## Configuration on Slack side + +Create Slack workspace and channel + +1. Log in to your Slack account. + +2. Create Slack workspace and a channel in the workspace as shown on the screenshots below. + + + + + + + + + + + +### Create an application in Slack + +1. Go to https://api.slack.com/ to create an application in Slack. + +2. Click 'Your apps'. + +3. Click 'Create an App'. + + + +4. Select 'From scratch'. + + + +5. Input the app name and select the created workspace → click 'Create App'. + + + +6. Choose 'Incoming webhooks' in the left menu and verify that the webhooks are activated (toggle above). + + + +7. Go to the bottom of the page and click 'Add new Webhook to Workspace'. + + + +8. You will be redirected to the page where you need to choose from available channels in your workspace where you want to post notifications. + + + +9. Select a channel and click 'Allow' button. + + + +10. Your webhook is created and can be used to create notification rules in RP. + + + + + +## Configuration on ReportPortal side + +### Upload plugin + +1. Log in to ReportPortal as administrator. + +2. Go to Administrate -> Plugins section. + +3. Click ‘Upload’ button at the top of the page. + +4. Add Slack plugin [.jar file](https://github.com/reportportal/plugin-slack/packages) and click ‘Upload’ button. + + + +### Create notification rule + +1. Go to the Project settings -> [Notifications](/configuration/ProjectSettings#slack-notifications). + +2. Choose Slack Notification Group. + +3. Click ‘Create Rule’ button. + +4. Fill the form: + +**Rule name** – from 1 to 55 characters, mandatory field + +**Webhook URL** – mandatory field (it is configured on the [Slack side](/plugins/notifications/Slack#create-an-application-in-slack)) + +**In case** – optional field, dropdown with the options: + +* Always – notification will be sent in any case. +* 10% of items have issues – notification will be sent, if more than 10% of items have issues. +* 20% of items have issues – notification will be sent, if more than 20% of items have issues. +* 50% of items have issues – notification will be sent, if more than 50% of items have issues. +* Launch has issues – notification will be sent, if at least 1 item has issues +* Launch has ‘To Investigate’ items – notification will be sent, if at least 1 item has ‘To Investigate’ + +**Launch names** – optional field + +You can select only existing launch name. The field allows multi select. + +**Attributes** – optional checkbox + +When the ‘Attributes’ checkbox is checked, you can provide key/value for attributes and select the necessary radio button: + +* ‘All attributes should match’ +* ‘Any attribute should match’ + +5. Click on ‘Create’ button. + + + + + +### How to receive notifications in Slack + +When you have the plugin installed and Slack notification rules configured, you can start receiving notifications to the channel configured. For this you need to report a launch which matches the notification rule and after the launch is finished you will receive a corresponding message in the Slack channel with some details on the Launch results. Below you can find examples of how Passed and Failed launch notifications can look: + +**Passed Launch** + + + + + +**Failed Launch** + + + + + +### Disable Slack notifications + +1. Go to the Project settings -> Notifications. + +2. Turn OFF for Slack. + + + +### Disable plugin + +1. Log in to ReportPortal as administrator. + +2. Go to Administrate -> Plugins section -> Notifications tab. + +3. Find Slack plugin and click on it. + +4. Turn OFF. + + + +### Uninstall plugin + +1. Log in to ReportPortal as administrator. + +2. Go to Administrate -> Plugins section -> Notifications tab. + +3. Find Slack plugin and click on it. + +4. Click ‘Uninstall’ button and confirm your choice. + + + +Thanks to Slack plugin, you can ensure that everyone stays informed about project milestones. This real-time update mechanism helps to reduce the lag in communication, allowing teams to respond promptly to any issues. diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/Telegram.mdx b/versioned_docs/version-26.2-organizations/plugins/notifications/Telegram.mdx new file mode 100644 index 0000000000..0976c4f468 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/notifications/Telegram.mdx @@ -0,0 +1,167 @@ +--- +sidebar_position: 12 +sidebar_label: Telegram +description: Integrate Telegram with ReportPortal to receive real-time test updates, failure alerts, and launch summaries directly in your Telegram group. +--- + +# Telegram + +Get real-time updates on the launch completion in your Telegram. + +With the Telegram plugin, everyone instantly knows about important test automation updates. This helps avoid delays in communication and allows teams to respond quickly to issues. + +To download the Telegram plugin, see [Upload plugin](/plugins/ManagePlugins#upload-plugin) section. + +## Configuration on Telegram side + +1. Create your chatbot. + +For that, run message @BotFather on Telegram to register your bot and receive its authentication token (Bot Api Key for notification rule). + + + +2. Run the chatbot. + + + +3. Create a Group in Telegram. + + + + + +4. Add the chatbot to your group. + + + +5. Copy chat ID + +You can find the chat ID in two ways: + +* In the URL of the web version of Telegram + + + +* In the Telegram app under Advanced settings. + + + + + + + + + + + +:::important +Chat id can be used to create notification rules in RP. +::: + +## Configuration on ReportPortal side + +### Upload plugin + +1. Log in to ReportPortal as administrator. + +2. Go to Administrate -> Plugins section. + +3. Click ‘Upload’ button at the top of the page. + +4. Add Telegram plugin [.jar file](https://github.com/reportportal/plugin-telegram/packages/) and click ‘Upload’ button. + + + +### Create notification rule + +1. Go to the Project settings -> [Notifications](/configuration/ProjectSettings#telegram-notifications). + +2. Choose Telegram Notifications Group. + +3. Click ‘Create Rule’ button. + +4. Fill the form: + +**Rule name** – from 1 to 55 characters, mandatory field + +**Chat id** – mandatory field, copied from group info in Telegram (step 5 of [configuration on Telegram side](/plugins/notifications/Telegram#configuration-on-telegram-side)) + +:::important +Add ‘-’ before the chat id. +::: + +**Bot Api Key** - mandatory field, copied from the [step 1](/plugins/notifications/Telegram#configuration-on-telegram-side) + +**In case** – optional field, dropdown with the options: + +* Always – notification will be sent in any case. +* 10% of items have issues – notification will be sent, if more than 10% of items have issues. +* 20% of items have issues – notification will be sent, if more than 20% of items have issues. +* 50% of items have issues – notification will be sent, if more than 50% of items have issues. +* Launch has issues – notification will be sent, if at least 1 item has issues +* Launch has ‘To Investigate’ items – notification will be sent, if at least 1 item has ‘To Investigate’ + +**Launch names** – optional field + +You can select only existing launch name. The field allows multi-selection. + +**Attributes** – optional checkbox + +When the ‘Attributes’ checkbox is checked, you can provide key/value for attributes and select the necessary radio button: + +* ‘All attributes should match’ +* ‘Any attribute should match’ + +5. Click on ‘Create’ button. + + + +### How to receive notifications in Telegram + +When you have the plugin installed and Telegram notification rules configured, you can start receiving notifications to the channel configured. For this you need to report a launch which matches the notification rule and after the launch is finished you will receive a corresponding message in the Telegram channel with some details on the Launch results. + + + +### Disable Telegram notifications + +1. Log in to ReportPortal as administrator. + +2. Go to Administrate -> Plugins -> Notifications tab. + +3. Turn OFF for Telegram. + + + +### Disable Telegram rules + +1. Go to the Project settings -> Notifications. + +2. Find Telegram Notifications Group. + +3. Turn OFF for the rule. + + + +### Disable plugin + +1. Log in to ReportPortal as administrator. + +2. Go to Administrate -> Plugins section -> Notifications tab. + +3. Find Telegram plugin. + +4. Turn OFF. + + + +### Uninstall plugin + +1. Log in to ReportPortal as administrator. + +2. Go to Administrate -> Plugins section -> Notifications tab. + +3. Find Telegram plugin and click on it. + +4. Click ‘Uninstall’ button and confirm your choice. + + diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/_category_.json b/versioned_docs/version-26.2-organizations/plugins/notifications/_category_.json new file mode 100644 index 0000000000..ba1dada343 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/notifications/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Notifications", + "position": "4", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/email-server/EmailDisablePlugin.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/email-server/EmailDisablePlugin.png new file mode 100644 index 0000000000..8c17b6822b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/email-server/EmailDisablePlugin.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/email-server/EmailDisableRule.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/email-server/EmailDisableRule.png new file mode 100644 index 0000000000..7c74e006e4 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/email-server/EmailDisableRule.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/email-server/EmailNotificationRule.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/email-server/EmailNotificationRule.png new file mode 100644 index 0000000000..85de166b8b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/email-server/EmailNotificationRule.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/email-server/EmailServer1.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/email-server/EmailServer1.png new file mode 100644 index 0000000000..3ecfca1aa3 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/email-server/EmailServer1.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/email-server/EmailServer2.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/email-server/EmailServer2.png new file mode 100644 index 0000000000..580217ff5a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/email-server/EmailServer2.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/email-server/EmailServer3.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/email-server/EmailServer3.png new file mode 100644 index 0000000000..e5097e247d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/email-server/EmailServer3.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/email-server/EmailServer4.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/email-server/EmailServer4.png new file mode 100644 index 0000000000..62e6ca911c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/email-server/EmailServer4.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack1.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack1.png new file mode 100644 index 0000000000..c50e152857 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack1.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack10.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack10.png new file mode 100644 index 0000000000..8acbe04746 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack10.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack11.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack11.png new file mode 100644 index 0000000000..8dba588dc8 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack11.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack12.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack12.png new file mode 100644 index 0000000000..0297c6dbf8 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack12.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack13.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack13.png new file mode 100644 index 0000000000..c786c1a952 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack13.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack14.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack14.png new file mode 100644 index 0000000000..164cb22669 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack14.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack15.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack15.png new file mode 100644 index 0000000000..c702e6cfca Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack15.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack16.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack16.png new file mode 100644 index 0000000000..8f11a2f00d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack16.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack17.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack17.png new file mode 100644 index 0000000000..09ef931f9a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack17.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack18.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack18.png new file mode 100644 index 0000000000..bf751e2eaf Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack18.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack19.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack19.png new file mode 100644 index 0000000000..2d359f0ffb Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack19.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack2.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack2.png new file mode 100644 index 0000000000..007a683ce5 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack2.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack20.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack20.png new file mode 100644 index 0000000000..85d271b9cf Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack20.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack21.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack21.png new file mode 100644 index 0000000000..5333278965 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack21.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack22.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack22.png new file mode 100644 index 0000000000..f31d8b29e6 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack22.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack3.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack3.png new file mode 100644 index 0000000000..168ca1b659 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack3.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack4.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack4.png new file mode 100644 index 0000000000..cc80df3ebb Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack4.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack5.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack5.png new file mode 100644 index 0000000000..0fb842f95a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack5.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack6.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack6.png new file mode 100644 index 0000000000..c58afae23c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack6.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack7.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack7.png new file mode 100644 index 0000000000..0eea2bf94f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack7.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack8.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack8.png new file mode 100644 index 0000000000..f09c6892a2 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack8.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack9.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack9.png new file mode 100644 index 0000000000..f4cc2a82dd Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/slack/Slack9.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram0.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram0.png new file mode 100644 index 0000000000..86145c09ef Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram0.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram1.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram1.png new file mode 100644 index 0000000000..4352198bba Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram1.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram10.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram10.png new file mode 100644 index 0000000000..168952b8d1 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram10.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram11.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram11.png new file mode 100644 index 0000000000..161dad0623 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram11.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram12.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram12.png new file mode 100644 index 0000000000..24f91c4194 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram12.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram13.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram13.png new file mode 100644 index 0000000000..15c6d86ec7 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram13.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram14.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram14.png new file mode 100644 index 0000000000..9384a7d860 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram14.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram15.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram15.png new file mode 100644 index 0000000000..d6d03ea084 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram15.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram16.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram16.png new file mode 100644 index 0000000000..431ce07b7b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram16.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram17.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram17.png new file mode 100644 index 0000000000..014d80f98d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram17.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram2.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram2.png new file mode 100644 index 0000000000..6c4b3372c7 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram2.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram3.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram3.png new file mode 100644 index 0000000000..240c033a20 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram3.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram4.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram4.png new file mode 100644 index 0000000000..e936c1646b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram4.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram5.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram5.png new file mode 100644 index 0000000000..78f367eb32 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram5.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram6.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram6.png new file mode 100644 index 0000000000..62abef650e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram6.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram7.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram7.png new file mode 100644 index 0000000000..334f758c64 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram7.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram8.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram8.png new file mode 100644 index 0000000000..2ddd5ae481 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram8.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram9.png b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram9.png new file mode 100644 index 0000000000..e5ae2aae38 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/notifications/img/telegram/Telegram9.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/notifications/index.md b/versioned_docs/version-26.2-organizations/plugins/notifications/index.md new file mode 100644 index 0000000000..fe19fc769c --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/notifications/index.md @@ -0,0 +1,18 @@ +--- +sidebar_label: Notifications +description: Configure notification plugins for Email, Slack, and Telegram in ReportPortal for real-time alerts. +--- + +# Notifications + +Notifications plugins help teams stay informed about test results and project updates by sending messages directly to your preferred communication channels. These plugins support integration with **Email server**, **Slack**, and **Telegram**, allowing you to receive timely updates without constantly checking dashboards. + +You can set up notifications to be sent to a specific email address, Slack channel, or Telegram group. Once configured, the plugin will monitor your test launches and send a message when a launch matches a defined notification rule. After the launch is completed, you’ll receive a message with key details about the results. + +This setup helps teams react quickly to issues, stay in sync, and reduce delays in communication. Whether you're working from your inbox, chatting in Slack, or managing a remote team via Telegram, these plugins make sure you get the information you need, right when you need it. + +Notifications plugins are easy to configure and work well for both small teams and large-scale projects that require fast feedback and reliable alerts. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.2-organizations/plugins/other/SauceLabs.mdx b/versioned_docs/version-26.2-organizations/plugins/other/SauceLabs.mdx new file mode 100644 index 0000000000..4016895be8 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/other/SauceLabs.mdx @@ -0,0 +1,67 @@ +--- +sidebar_position: 9 +sidebar_label: Sauce Labs +description: Integrate Sauce Labs with ReportPortal to view test execution videos directly in your logs, enhancing test analysis and streamlining your QA workflow. +--- + +# Sauce Labs + +To install the Sauce Labs plugin, see [Upload plugin](/plugins/ManagePlugins#upload-plugin) section. + +## Add the Sauce Labs integration + +Configure the integration with Sauce Labs to watch a video of test executions in the our centralized test automation tool. + + +**Permissions:** + +- User with account role *ADMINISTRATOR* can configure the integration for the whole instance or per project. +- User with account role *PROJECT MANAGER* can configure the integration only on a project where they are assigned on as Project Manager. + +## Global Sauce Labs integration + +To configure Sauce Labs for the whole instance: + +1. Log in to ReportPortal as an ADMIN user. + +2. Open the list on the right of the user's image. + +3. Click the 'Administrative' link. + +4. Click 'Plugins' from the left-hand sidebar. + +5. Click the 'Sauce Labs' tab. + +6. Click 'Add integration'. + +7. The following fields should be present: + + ```javascript + `User name`: + `Access token`: + `Data center`: + ``` + +8. Confirm data in the form. + +After you've added the Sauce Labs integration, you can use the Sauce Labs in ReportPortal. + +## Project Sauce Labs integration + +If the plugin is configured on the global level, then all projects at this instance will use this configuration by default. + +However, you can unlink the integration from the global level and use a project level configuration instead. + +To unlink the integration, click 'Unlink & Setup Manually', then follow the on-screen instructions. + + + +## How to use the Sauce Labs integration + +Before using this feature, you should report test results to ReportPortal with the attribute: `SLID: XXXXXXXX`. + +Where: SLID = `Sauce Labs ID` and XXXXXXXX = `# of job in Sauce Labs` + +The `SLID: XXXXXXXX` attribute links the execution in ReportPortal and a job in Sauce Labs. If a test item has attribute `SLID: XXXXXXXX`, and there is a global or project integration with Sauce Labs, a user will be able to view a video from Sauce Labs for the appropriate job in ReportPortal on a log view. + + diff --git a/versioned_docs/version-26.2-organizations/plugins/other/_category_.json b/versioned_docs/version-26.2-organizations/plugins/other/_category_.json new file mode 100644 index 0000000000..48c8d96607 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/other/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Other", + "position": "6", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.2-organizations/plugins/other/img/SauceLabsUnlinkGlobal.png b/versioned_docs/version-26.2-organizations/plugins/other/img/SauceLabsUnlinkGlobal.png new file mode 100644 index 0000000000..1a94b28658 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/plugins/other/img/SauceLabsUnlinkGlobal.png differ diff --git a/versioned_docs/version-26.2-organizations/plugins/other/index.md b/versioned_docs/version-26.2-organizations/plugins/other/index.md new file mode 100644 index 0000000000..3803651f01 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/plugins/other/index.md @@ -0,0 +1,16 @@ +--- +sidebar_label: Other +description: The Other plugins section showcases add-ons that extend our test automation results dashboard. +--- + +# Other + +The Other Plugins section highlights extra plugins that make ReportPortal more flexible and powerful. + +The [Sauce Labs](/plugins/other/SauceLabs) plugin connects ReportPortal with Sauce Labs, a cloud service widely used for automated testing. Thanks to this integration, teams can keep all their results in one place while gaining more context about each test run. When a test is linked with a Sauce Labs job and the integration is enabled at either the global or project level, users can open the log view in ReportPortal and watch the actual video recording of the execution stored in Sauce Labs. Instead of switching between platforms, the video appears directly alongside the test logs, making it much easier to investigate issues, confirm behavior, and understand what happened during execution. + +The [Test Executions](/test-executions/) plugin introduces a refreshed approach to exploring and managing test results in ReportPortal. Instead of focusing on individual launches, it displays all test cases in a unified, easily searchable list. Users can apply multi-level filters, adjust the view to match their workflow, and analyze execution details with greater precision. This feature simplifies navigation across large datasets, enhances visibility into test progress, and supports more efficient decision-making during the testing process. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.2-organizations/releases/Version24.1.md b/versioned_docs/version-26.2-organizations/releases/Version24.1.md new file mode 100644 index 0000000000..81eca5748f --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/Version24.1.md @@ -0,0 +1,92 @@ +--- +sidebar_position: 23 +sidebar_label: Version 24.1 +description: ReportPortal v24.1 release notes with Immediate Auto-Analysis, Pattern Analysis, and features. +--- + +# Version 24.1 + +## 1. What's Changed: + +- **New feature – [Immediate Auto-Analysis](/analysis/ImmediateAutoAnalysis):**
+ This feature employs Auto-Analysis based on specific test cases immediately after their completion for proactive issue investigation. + +- **New feature – [Immediate Pattern-Analysis](/analysis/ImmediatePatternAnalysis):**
+ No more need to wait for the launch finish. Initiate Pattern Analysis immediately after completion of specific test cases. + +- **New Integration – [Gitlab Plugin](/plugins/bug-tracking/GitLab):**
+ New BTS plugin expanding ReportPortal BTS integration options for streamlined bugs reporting, issues. + +- **New feature – Retention Policy for Monitoring events**
+ Set a custom retention period for monitoring events via environmental variables to tailor data management to your organizational needs. + +- **Settings redesign**
+ Project Settings were redesigned completely, setting the stage for a whole new ReportPortal experience.
+ For an improved user experience, please ensure you are using the latest versions of ReportPortal plugins. + +- **New language introduced**
+ Users can now utilize the interface in Chinese and are encouraged to contribute to further translations or improve the existing ones. + +## 2. Small Updates: + +- Change in [Base for AA](/analysis/AutoAnalysisOfLaunches#base-for-analysis):
+ New options for Base for Auto Analysis have been introduced. + +- Enhanced Monitoring:
+ Improved Filtering on Monitoring page and expanded list of events being tracked + + +## 3. Technical Improvements: + +- ElasticSearch has been replaced with OpenSearch.
+ Following ElasticSearch's re-licensing in version 7.11, we've transitioned to OpenSearch to uphold our focus on open-source compatibility. + +:::important +Migration from ElasticSearch to OpenSearch is irrevocable. +::: + +:::note +Some of the environmental variables names are still ElasticSearch specific, but it will be corrected in the future versions. ` +::: + +- Service-api migration to Java 21 + +- Introduced JCloud provider for local file access, replacing the existing filesystem implementation. + +- Added support for providing a custom salt key using secret management tool to enhance security and flexibility. + +- A new engine for the frontend part of the plugins was created based on Webpack Module Federation to simplify the process of plugins development. + + +## 4. Enhancements Based on Community Feedback: + +- [#3132](https://github.com/reportportal/service-ui/issues/3132) Component Health Check widget improvements. + +- [#308](https://github.com/reportportal/reportportal/issues/308) Ability to specify filter parameters in the URL has been added. + +- [#2148](https://github.com/reportportal/reportportal/issues/2148) Duplicated error logs issue solved. + +- [#2159](https://github.com/reportportal/reportportal/issues/2159) Option to either include skipped test into Flaky test cases table (TOP 50) widget added. + +- [#520,](https://github.com/reportportal/reportportal/issues/520) [#2006](https://github.com/reportportal/reportportal/issues/2006) Launch import improvements. + +- [#64,](https://github.com/reportportal/service-jobs/issues/64) [#315](https://github.com/reportportal/kubernetes/issues/315) Service-jobs issue fix. + +- [#1841,](https://github.com/reportportal/service-api/pull/1841) [#1999](https://github.com/reportportal/reportportal/issues/1999) PR was rejected as it contained breaking changes. Instead new converter for openmetrics was added to configuration. + +## 5. CVE addressed: +[CVE-2023-44487](https://github.com/advisories/GHSA-qppj-fm5r-hxr3), [CVE-2023-3978](https://github.com/advisories/GHSA-2wrh-6pvc-2jm9), [CVE-2023-1436](https://github.com/advisories/GHSA-q6g2-g7f3-rr83), [CVE-2022-1471](https://github.com/advisories/GHSA-mjmj-j48q-9wg2), [CVE-2022-42003](https://github.com/advisories/GHSA-jjjh-jjxp-wpff), [CVE-2020-36518](https://github.com/advisories/GHSA-57j2-w4cx-62h2), [CVE-2022-45688](https://github.com/advisories/GHSA-3vqj-43w4-2q58), [CVE-2023-5072](https://github.com/advisories/GHSA-4jq9-2xhw-jpx7), [CVE-2022-22965](https://github.com/advisories/GHSA-36p3-wjmg-h94x), [CVE-2023-20863](https://github.com/advisories/GHSA-wxqc-pxw9-g2p8), [CVE-2022-1471](https://github.com/advisories/GHSA-mjmj-j48q-9wg2) + +## 6. Released versions +|Service Name|Repository|Tag| +|---|---| --- | +|Index|reportportal/service-index|5.11.0| +|Authorization|reportportal/service-authorization|5.11.0| +|UI|reportportal/service-ui|5.11.0| +|API|reportportal/service-api|5.11.0| +|Jobs|reportportal/service-jobs|5.11.0| +|Migrations|reportportal/migrations|5.11.0| +|Auto Analyzer|reportportal/service-auto-analyzer|5.11.0| +|Metrics Gatherer|reportportal/service-metrics-gatherer|5.11.0| + +## 7. [Migration Guide](https://github.com/reportportal/reportportal/wiki/Migration-to-ReportPortal-v.24.1) diff --git a/versioned_docs/version-26.2-organizations/releases/Version24.2.0.md b/versioned_docs/version-26.2-organizations/releases/Version24.2.0.md new file mode 100644 index 0000000000..03c5529cc3 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/Version24.2.0.md @@ -0,0 +1,157 @@ +--- +sidebar_position: 22 +sidebar_label: Version 24.2 +description: ReportPortal v24.2 release notes with PostgreSQL 15 support, enhanced test automation metrics dashboard, and improved performance. +--- + +# Version 24.2 + + + +:::important +To ensure that asynchronous reporting works correctly, please make sure the correct feature flag is enabled in RabbitMQ. +Open RabbitMQ Management, go to the Admin tab -> Feature Flags -> message_containers_deaths_v2. If it's disabled, enable it. +::: + +:::important +Due to the transition to a new plugin mechanism when updating ReportPortal to version 24.2, all the plugins need to be reinstalled manually. +Check out the updated plugins [UI development guides](/developers-guides/PluginDevelopersGuide/PluginUIDevelopersGuide). +::: + +:::important +Double entry removed. Review changes by comparing GitHub releases in [Docker]( +https://github.com/reportportal/reportportal/compare/v24.1...v24.2) or [Kubernetes](https://github.com/reportportal/kubernetes/compare/reportportal-24.1.0...reportportal-24.2.0). +::: + +## 1. What's Changed: + +1. **New features** - **[Extended launches retention policy](/configuration/LaunchesRetentionPolicy)**:
+ We've introduced an extended launches retention policy to allow important launches to be preserved beyond the existing retention periods. Previously, all launches were automatically deleted after a set time to save storage. With this update, you can now mark specific launches as important, ensuring they are never deleted, as long as there is sufficient storage available. This feature is useful for retaining critical data for compliance, auditing, or historical analysis. + +2. **New integrations** (Notifications) - **[Slack plugin](/plugins/notifications/Slack) and redesigned Notifications page**:
+ Teams using Slack can now set up Slack integration to receive ReportPortal notifications on launch event right in their Slack channel.
+ More details can be found in [Slack user guide](/plugins/notifications/Slack) and [blog post](https://reportportal.io/blog/report-test-results-in-real-time-to-slack). + +3. **New integrations** (Bug Tracking Systems) - **[Monday plugin](/plugins/bug-tracking/Monday)**:
+ Teams working with Monday as their BTS can now set up an integration to post and link issues from ReportPortal directly to Monday. + +4. **Import functionality moved to plugin**:
+ To provide more flexibility for launch import, the feature has been moved from the core application to a plugin. Users can now choose between the Robot and JUnit import plugins developed by the ReportPortal team, or create their own plugins to import results from other test frameworks.
+ More details about [JUnit import plugin](/plugins/import/JUnit).
+ More details about [Robot Framework import plugin](/plugins/import/RobotFramework).
+ [Guide on how to create import plugin](/developers-guides/PluginDevelopersGuide/DevelopACustomImportPlugin). + +5. **Microseconds added to timestamps** for better test items sequence tracking:
+ Microseconds have been added to timestamps to enable a more accurate sequence of logs, as some logs previously had identical timestamps at the millisecond level. + +6. **LDAP integration improvements**:
+- PBKDF2 encryption has been added to the list of possible encryptions for LDAP.
+- LDAP integration can now be created either with Full name attribute mode or with separate fields for First name and Last name. + +7. **Improved logic of [launch rerun](/developers-guides/RerunDevelopersGuide)**:
+ User can report rerun of the specified launch with no attributes and the attributes for the initial launch will remain. If user reports rerun of the specified launch with attributes, only new attributes will be added to the launch. + +8. **New language introduced:**
+ Users can now utilize the interface in Spanish, and we encourage everyone to contribute to further translations or improve the existing ones. + A special thank you to [@mg-diego](https://github.com/mg-diego) for his valuable contribution to the Spanish translation! + +## 2. Technical improvements: + +1. **Analyzer**:
+ **Added:**
+ Message-through logging with Correlation ID, to ease debugging and understanding of logs.
+ **Updated:**
+ Refactoring: data-preparation logic joined and put into common place.
+ Refactoring: model train logic standardised and prepared for future join.
+ Lots of type annotations added.
+ **Fixed**
+ Re-train logic. Custom re-trained models for big enough projects do not affect negatively auto-analysis now. + +2. **Asynchronous Reporting**:
+ ReportPortal now features 2x faster reporting under full load, thanks to a new asynchronous reporting approach. A key update includes switching from a Direct exchange to a Consistent-hashing exchange. The retry mechanism was also revamped to focus on handling messages related to the reporting order.
+ Read our latest [blog post](https://reportportal.io/blog/boost-asynchronous-test-reporting-speed-by-2x). + +:::important +To ensure that asynchronous reporting works correctly, please make sure the correct feature flag is enabled in RabbitMQ.
+Open RabbitMQ Management, go to the Admin tab -> Feature Flags -> message_containers_deaths_v2. If it's disabled, enable it. +::: + +3. Updated React to version 18. +4. PostgreSQL 16 support. +5. Updated Java to version 21 (Service-uat). + +## 3. Bugs fixed: + +1. **Saucelabs**: + +- Issue with Mobile tests videos (run on real devices in SauceLabs) is solved. +- Error when opening "Sauce Labs" tab from log view is fixed. + +2. **Jira Cloud**: + +- Functionality to add Assignee for issue by typing its name or email (in case of full match) has been added. +- Bug with posting issue with "Parent" field is fixed. +- Bug with saving multi-select field as empty is fixed. +- Bug with creating Integration without predefine Issue Type is fixed. +- Possibility to add "None" value for fields with predefined values has been added. + +3. **Quality Gates**: +- ‘'In progress' QG status doesn't change for merged launches, when 'New errors' rule is applied and no unique errors identified' is fixed. +- 'QG page is broken after editing Quality Gate, if it contains New failures/New error rules' is fixed. + +4. TypeError occurring when switching between "New errors" and "Known errors" options on "Unique errors" page is solved. +5. "Unique bugs table" widget is fixed. +6. Bug with Retry reported as a separate step is fixed. + +7. Issue with Resize widget functionality is solved. + +:::important +We made some changes in how we handle Unique Errors. Thus behaviour on some stack traces might change.
+We are going to review it in the upcoming updates to make sure that all cases are covered. +::: + +## 4. Enhancements Based on Community Feedback: + +- [#1914](https://github.com/reportportal/reportportal/issues/1914) Ability to exclude Skipped tests from statistics was added for Component health check widget (table view) and Component health check widget (table view). +- [#2168](https://github.com/reportportal/reportportal/issues/2168) The limit for the dashboards per project has been increased to 3000 dashboards. +- [#2219](https://github.com/reportportal/reportportal/issues/2219) On the Unique Errors page, error clusters have been introduced and sorted by size, allowing users to address the most impactful errors first. +- [#2249](https://github.com/reportportal/reportportal/issues/2249) Email configuration has been improved taking into account possible ReportPortal deployment to a specified path ensuring that the links in notifications and other emails are correct. +- [#2309](https://github.com/reportportal/reportportal/issues/2309), [#2245](https://github.com/reportportal/reportportal/issues/2245) Logics of importing empty suites has been adjusted: Launches with empty suites can now be imported successfully. Empty suite has status 'Passed’. +- [#1951](https://github.com/reportportal/reportportal/issues/1951) The issue with the launch description not being updated upon launch finish (when launch reporting started with no description and finished with any description) is fixed. +- [#2230](https://github.com/reportportal/reportportal/issues/2230) Issue with parent nested step turning in failed status if child nested step processed after it's finished and has status 'skipped' is solved. +- [#2120](https://github.com/reportportal/reportportal/issues/2120) Issue with broken links on filtered Launches page is solved. +- [#1020](https://github.com/reportportal/reportportal/issues/1020), [#36](https://github.com/reportportal/agent-js-jasmine/issues/36) Issue with logs sequence is solved. +## 5. CVE addressed: + +**Service auto-analyser:**
+[CVE-2023-45853](https://github.com/advisories/GHSA-mq29-j5xf-cjwr), [CVE-2023-6246](https://github.com/advisories/GHSA-p6rw-gvvh-q8v4), [CVE-2023-6779](https://github.com/advisories/GHSA-p5vr-h433-qhqr), [CVE-2023-6780](https://github.com/advisories/GHSA-jjr8-97p7-vmmg), [CVE-2023-49468](https://github.com/advisories/GHSA-6j48-hfg3-m4hg), [CVE-2023-49467](https://github.com/advisories/GHSA-x895-cm39-f6wq), [CVE-2023-49465](https://github.com/advisories/GHSA-xxjf-hhmr-jhmq) + +**Service-api:**
+[CVE-2024-1597](https://github.com/advisories/GHSA-24rp-q3w6-vc56), [CVE-2023-40827](https://github.com/advisories/GHSA-rvm8-j2cp-j592), [CVE-2023-40828](https://github.com/advisories/GHSA-cj8w-v588-p8wx), [CVE-2023-40826](https://github.com/advisories/GHSA-3r28-rgp9-qgv4), [CVE-2024-22243](https://github.com/advisories/GHSA-ccgv-vj62-xf9h), [CVE-2023-5072](https://github.com/advisories/GHSA-4jq9-2xhw-jpx7), [CVE-2022-45688](https://github.com/advisories/GHSA-3vqj-43w4-2q58), [CVE-2023-46589](https://github.com/advisories/GHSA-fccv-jmmp-qg76), [CVE-2024-24549](https://github.com/advisories/GHSA-7w75-32cg-r6g2), [CVE-2024-23672](https://github.com/advisories/GHSA-v682-8vv8-vpwr), [CVE-2024-25710](https://github.com/advisories/GHSA-4g9r-vxhx-9pgx), [CVE-2024-26308](https://github.com/advisories/GHSA-4265-ccf5-phj5), [CVE-2023-34050](https://github.com/advisories/GHSA-24f5-5fmf-pwmc), [CVE-2023-6378](https://github.com/advisories/GHSA-vmq6-5m68-f53m), [CVE-2023-6481](https://github.com/advisories/GHSA-gm62-rw4g-vrc4), [CVE-2023-6378](https://github.com/advisories/GHSA-vmq6-5m68-f53m), [CVE-2023-6481](https://github.com/advisories/GHSA-gm62-rw4g-vrc4), [CVE-2023-20883](https://github.com/advisories/GHSA-xf96-w227-r7c4) + +**Service-authorization:**
+[CVE-2023-20860](https://github.com/advisories/GHSA-7phw-cxx7-q9vq), [CVE-2024-1597](https://github.com/advisories/GHSA-24rp-q3w6-vc56), [CVE-2023-5072](https://github.com/advisories/GHSA-4jq9-2xhw-jpx7), [CVE-2022-45688](https://github.com/advisories/GHSA-3vqj-43w4-2q58), [CVE-2023-1370](https://github.com/advisories/GHSA-493p-pfq6-5258), [CVE-2023-46589](https://github.com/advisories/GHSA-fccv-jmmp-qg76), [CVE-2024-24549](https://github.com/advisories/GHSA-7w75-32cg-r6g2), [CVE-2024-23672](https://github.com/advisories/GHSA-v682-8vv8-vpwr), [CVE-2024-25710](https://github.com/advisories/GHSA-4g9r-vxhx-9pgx), [CVE-2024-26308](https://github.com/advisories/GHSA-4265-ccf5-phj5), [CVE-2023-34050](https://github.com/advisories/GHSA-24f5-5fmf-pwmc), [CVE-2023-6378](https://github.com/advisories/GHSA-vmq6-5m68-f53m), [CVE-2023-6481](https://github.com/advisories/GHSA-gm62-rw4g-vrc4), [CVE-2015-7501](https://github.com/advisories/GHSA-fjq5-5j5f-mvxh), [CVE-2015-4852](https://github.com/advisories/GHSA-7r6v-mxc2-pg49) + +**Service-metrics-gatherer:**
+[CVE-2023-45853](https://github.com/advisories/GHSA-mq29-j5xf-cjwr) + +**Service-jobs:**
+[CVE-2024-1597](https://github.com/advisories/GHSA-24rp-q3w6-vc56), [CVE-2023-46589](https://github.com/advisories/GHSA-fccv-jmmp-qg76), [CVE-2024-24549](https://github.com/advisories/GHSA-7w75-32cg-r6g2), [CVE-2024-23672](https://github.com/advisories/GHSA-v682-8vv8-vpwr), [CVE-2023-6378](https://github.com/advisories/GHSA-vmq6-5m68-f53m), [CVE-2023-6481](https://github.com/advisories/GHSA-gm62-rw4g-vrc4), [CVE-2024-22243](https://github.com/advisories/GHSA-ccgv-vj62-xf9h), [CVE-2024-25710](https://github.com/advisories/GHSA-4g9r-vxhx-9pgx), [CVE-2024-26308](https://github.com/advisories/GHSA-4265-ccf5-phj5), [CVE-2023-34050](https://github.com/advisories/GHSA-24f5-5fmf-pwmc), [CVE-2023-20883](https://github.com/advisories/GHSA-xf96-w227-r7c4) + +**Service-ui:**
+[CVE-2023-52425](https://github.com/advisories/GHSA-gh68-jm46-84rf), [CVE-2023-52426](https://github.com/advisories/GHSA-mp2w-hjcj-f5g9), [CVE-2024-25062](https://github.com/advisories/GHSA-x77r-6xxm-wjmx), [CVE-2023-45857](https://github.com/advisories/GHSA-wf5p-g6vw-rhxx) + +## 6. Released versions: + +|Service Name|Repository|Tag| +|---|---| --- | +|Index|reportportal/service-index|5.12.0| +|Authorization|reportportal/service-authorization|5.12.0| +|UI|reportportal/service-ui|5.12.0| +|API|reportportal/service-api|5.12.0| +|Jobs|reportportal/service-jobs|5.12.0| +|Migrations|reportportal/migrations|5.12.1| +|Auto Analyzer|reportportal/service-auto-analyzer|5.12.0-r1| +|Metrics Gatherer|reportportal/service-metrics-gatherer|5.12.0-r1| + +## 7. [Migration Guide](https://github.com/reportportal/reportportal/wiki/Migration-to-ReportPortal-v.24.2) diff --git a/versioned_docs/version-26.2-organizations/releases/Version24.2.2.md b/versioned_docs/version-26.2-organizations/releases/Version24.2.2.md new file mode 100644 index 0000000000..e0b5beb1e6 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/Version24.2.2.md @@ -0,0 +1,62 @@ +--- +sidebar_position: 21 +sidebar_label: Version 24.2.2 +description: ReportPortal v24.2.2 release notes with bug fixes and enhanced stability. +--- + +# Version 24.2.2 + +## 1. What's Changed: +1. **New Features - SCIM Server Integration:**
+ The [SCIM Server feature](https://reportportal.io/docs/features/SCIMServerFeature) has been introduced as part of our enterprise-level support services. If you're interested in enabling SCIM for your setup, please [reach out](https://reportportal.io/contact-us/general) to us for more information. + +2. **New Features - Instance Invitation Control:**
+ A new feature allows administrators to enable or disable [instance invitations](https://reportportal.io/docs/admin-panel/ServerSettings). You can now disable manual invitations for external users, ensuring that users can only access ReportPortal through an identity provider configured for the instance. + +3. **Minor Improvements - [Unique Errors Analysis](https://reportportal.io/docs/analysis/UniqueErrorAnalysis):**
+ Clusters with no tests are now filtered out and no longer displayed in the UI. + +## 2. Technical improvements: + +1. Service Jobs has been updated to Spring Boot 3. +2. Gitlab, Import plugin (RobotFramework), Import plugin (JUnit), Monday, Slack, Azure, Gitlab, Jira Cloud, Jira Server, Saucelabs, Rally plugins have been updated to Java 21. + +## 3. Bugs fixed: +1. Fixed an issue that caused an empty file to be downloaded when exporting a launch in PDF format. +2. Resolved an issue with log display in the Unique Error Analysis section. +3. Fixed a bug preventing users with a dot in their username from being added to the "Recipients" field in notification rules. + +## 4. Enhancements Based on Community Feedback: + +[#2389](https://github.com/reportportal/reportportal/issues/2389): Adjusted Email Server integration settings to support usernames (e.g., SendGrid and others).
+[#2381](https://github.com/reportportal/reportportal/issues/2381): Fixed incorrect sorting in the "Launch Statistics Chart" widget.
+[#2361](https://github.com/reportportal/reportportal/issues/2361): Enabled the "Show" button for fatal and error logs in nested steps.
+[#2405](https://github.com/reportportal/reportportal/issues/2405): Fixed issue with Time format support in .NET agents, and other agents. + +## 5. Released services and plugins: + +Released services: +|Service Name|Repository|Tag| +|---|---| --- | +|Authorization|reportportal/service-authorization|5.13.0| +|UI|reportportal/service-ui|5.12.1| +|API|reportportal/service-api|5.13.1| +|Index|reportportal/service-index|5.13.0| +|Jobs|reportportal/service-jobs|5.13.0| +|Migrations|reportportal/migrations|5.13.0| +|Auto Analyzer|reportportal/service-auto-analyzer|5.13.0| +|Metrics Gatherer|reportportal/service-metrics-gatherer|5.13.0| + +Released plugins: +|Plugin Name|Repository|Tag| +|---|---| --- | +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.12.1| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.0.1| +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.0.2| +|Monday|reportportal/plugin-bts-monday|1.0.1| +|Slack|reportportal/plugin-slack|1.0.1| +|Azure|reportportal/plugin-bts-azure|5.12.1| +|Jira|reportportal/plugin-bts-jira|5.12.1| +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.12.1| +|Saucelabs|reportportal/plugin-saucelabs|5.12.1| +|Rally|reportportal/plugin-bts-rally|5.12.2| diff --git a/versioned_docs/version-26.2-organizations/releases/Version24.2.3.md b/versioned_docs/version-26.2-organizations/releases/Version24.2.3.md new file mode 100644 index 0000000000..56e83b7483 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/Version24.2.3.md @@ -0,0 +1,21 @@ +--- +sidebar_position: 20 +sidebar_label: Version 24.2.3 +description: ReportPortal v24.2.3 release notes with bug fixes. +--- + +# Version 24.2.3 + +## 1. Bugs fixed: +1. Fixed an [issue](https://github.com/reportportal/service-auto-analyzer/issues/149) with bucket prefix in service-auto-analyzer. + +## 2. Other updates +1. Updated base image for service-auto-analyzer. + +## 3. Updated services and plugins: + +|Service Name|Repository|Tag| +|---|---| --- | +|Auto Analyzer|reportportal/service-auto-analyzer|5.13.1| + +Rest of services and plugins are the same version as in https://github.com/reportportal/reportportal/releases/tag/24.2.2 diff --git a/versioned_docs/version-26.2-organizations/releases/Version25.0.2.md b/versioned_docs/version-26.2-organizations/releases/Version25.0.2.md new file mode 100644 index 0000000000..f5e11045b4 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/Version25.0.2.md @@ -0,0 +1,46 @@ +--- +sidebar_position: 19 +sidebar_label: Version 25.0.2 +description: ReportPortal v25.0.2 release notes with bug fixes. +--- + +# Version 25.0.2 + +## 1. Enhancements Based on Community Feedback: +[#2402](https://github.com/reportportal/reportportal/issues/2402) Tests not reported correctly - V24.2, .Net (all dates in requests will now be truncated to microseconds precision)
+[#2424](https://github.com/reportportal/reportportal/issues/2424) Step duration is no longer displayed in ReportPortal 24.2 + +## 2. Technical updates: +The Axios library has been updated to version 1.7.9. + +## 3. Released services and plugins: + +**Released services:** +|Service Name|Repository|Tag| +|---|---| --- | +|UI|reportportal/service-ui|5.12.3| +|API|reportportal/service-api|5.13.2| + +**Rest of services and plugins have the same version as before:** +|Service Name|Repository|Tag| +|---|---| --- | +|Authorization|reportportal/service-authorization|5.13.0| +|Index|reportportal/service-index|5.13.0| +|Jobs|reportportal/service-jobs|5.13.0| +|Migrations|reportportal/migrations|5.13.0| +|Auto Analyzer|reportportal/service-auto-analyzer|5.13.1| +|Metrics Gatherer|reportportal/service-metrics-gatherer|5.13.0| + + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.12.1| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.0.1| +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.0.2| +|Monday|reportportal/plugin-bts-monday|1.0.1| +|Slack|reportportal/plugin-slack|1.0.1| +|Azure|reportportal/plugin-bts-azure|5.12.1| +|Jira|reportportal/plugin-bts-jira|5.12.1| +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.12.1| +|Saucelabs|reportportal/plugin-saucelabs|5.12.1| +|Rally|reportportal/plugin-bts-rally|5.12.2|| diff --git a/versioned_docs/version-26.2-organizations/releases/Version25.0.3.md b/versioned_docs/version-26.2-organizations/releases/Version25.0.3.md new file mode 100644 index 0000000000..72c4bf8404 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/Version25.0.3.md @@ -0,0 +1,41 @@ +--- +sidebar_position: 18 +sidebar_label: Version 25.0.3 +description: ReportPortal v25.0.3 release notes with bug fixes. +--- + +# Version 25.0.3 + +## 1. Technical updates: + +ReportPortal now supports M4-chip processors. + +## 2. Released services: +|Service Name|Repository|Tag| +|---|---| --- | +|API|reportportal/service-api|5.13.3| +|Authorization|reportportal/service-authorization|5.13.1| +|Jobs|reportportal/service-jobs|5.13.1| + +**Rest of services and plugins have the same version as before:** +|Service Name|Repository|Tag| +|---|---| --- | +|UI|reportportal/service-ui|5.12.3| +|Index|reportportal/service-index|5.13.0| +|Migrations|reportportal/migrations|5.13.0| +|Auto Analyzer|reportportal/service-auto-analyzer|5.13.1| +|Metrics Gatherer|reportportal/service-metrics-gatherer|5.13.0| + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.12.1| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.0.1| +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.0.2| +|Monday|reportportal/plugin-bts-monday|1.0.1| +|Slack|reportportal/plugin-slack|1.0.1| +|Azure|reportportal/plugin-bts-azure|5.12.1| +|Jira|reportportal/plugin-bts-jira|5.12.1| +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.12.1| +|Saucelabs|reportportal/plugin-saucelabs|5.12.1| +|Rally|reportportal/plugin-bts-rally|5.12.2|| + diff --git a/versioned_docs/version-26.2-organizations/releases/Version25.0.4.md b/versioned_docs/version-26.2-organizations/releases/Version25.0.4.md new file mode 100644 index 0000000000..ff4bbd22e7 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/Version25.0.4.md @@ -0,0 +1,40 @@ +--- +sidebar_position: 17 +sidebar_label: Version 25.0.4 +description: ReportPortal v25.0.4 release notes with bug fixes and enhanced test automation reporting tools stability. +--- + +# Version 25.0.4 + +## 1. New features: +**[Dashboard cloning feature](/dashboards-and-widgets/WorkWithDashboards#dashboard-cloning):**
+easily replicate dashboards across projects with the new Dashboard Cloning feature, saving time and effort when managing multiple projects. Clone via UI and API. + +## 2. Released services: +|Service Name|Repository|Tag| +|---|---| --- | +|API|reportportal/service-api|5.13.4| +|UI|reportportal/service-ui|5.12.4| +|Auto-Analyzer|reportportal/service-auto-analyzer|5.13.2| + +**Rest of services and plugins have the same version as before:** +|Service Name|Repository|Tag| +|---|---| --- | +|Jobs|reportportal/service-jobs|5.13.1| +|Authorization|reportportal/service-authorization|5.13.1| +|Index|reportportal/service-index|5.13.0| +|Migrations|reportportal/migrations|5.13.0| +|Metrics Gatherer|reportportal/service-metrics-gatherer|5.13.0| + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.12.1| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.0.1| +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.0.2| +|Monday|reportportal/plugin-bts-monday|1.0.1| +|Slack|reportportal/plugin-slack|1.0.1| +|Azure|reportportal/plugin-bts-azure|5.12.1| +|Jira|reportportal/plugin-bts-jira|5.12.1| +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.12.1| +|Saucelabs|reportportal/plugin-saucelabs|5.12.1| +|Rally|reportportal/plugin-bts-rally|5.12.2|| diff --git a/versioned_docs/version-26.2-organizations/releases/Version25.0.5.md b/versioned_docs/version-26.2-organizations/releases/Version25.0.5.md new file mode 100644 index 0000000000..318c3e2327 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/Version25.0.5.md @@ -0,0 +1,42 @@ +--- +sidebar_position: 16 +sidebar_label: Version 25.0.5 +description: ReportPortal v25.0.5 release notes with bug fixes. +--- + +# Version 25.0.5 + +## 1. New integrations: +**Telegram plugin** enabling real-time test execution updates and failure alerts within Telegram channels. +Learn more in our [documentation](/plugins/notifications/Telegram). + +## 2. Released services: +|Plugin Name|Repository|Tag| +|---|---| --- | +|Telegram|reportportal/plugin-telegram|1.0.0|| + + +**Rest of services and plugins have the same version as before:** +|Service Name|Repository|Tag| +|---|---| --- | +|Jobs|reportportal/service-jobs|5.13.1| +|Authorization|reportportal/service-authorization|5.13.1| +|Index|reportportal/service-index|5.13.0| +|Migrations|reportportal/migrations|5.13.0| +|Metrics Gatherer|reportportal/service-metrics-gatherer|5.13.0| +|API|reportportal/service-api|5.13.4| +|UI|reportportal/service-ui|5.12.4| +|Auto-Analyzer|reportportal/service-auto-analyzer|5.13.2| + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.12.1| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.0.1| +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.0.2| +|Monday|reportportal/plugin-bts-monday|1.0.1| +|Slack|reportportal/plugin-slack|1.0.1| +|Azure|reportportal/plugin-bts-azure|5.12.1| +|Jira|reportportal/plugin-bts-jira|5.12.1| +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.12.1| +|Saucelabs|reportportal/plugin-saucelabs|5.12.1| +|Rally|reportportal/plugin-bts-rally|5.12.2|| diff --git a/versioned_docs/version-26.2-organizations/releases/Version25.0.6.md b/versioned_docs/version-26.2-organizations/releases/Version25.0.6.md new file mode 100644 index 0000000000..fc68fc5bb0 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/Version25.0.6.md @@ -0,0 +1,61 @@ +--- +sidebar_position: 15 +sidebar_label: Version 25.0.6 +description: ReportPortal v25.0.6 release notes with bug fixes and enhanced stability. +--- + +# Version 25.0.6 + +## 1. New features: +- **[Test case search widget](/dashboards-and-widgets/TestCaseSearch):**
+ New widget enables searching test cases by name or attribute across all launches in a project. + +- **[Inactivity timeout](/admin-panel/ServerSettings/#inactivity-timeout):**
+ Admins can now set user session timeouts under Server Settings. Users will be logged out after inactivity timeout. + +## 2. Bugs fixed: +Resolved an issue where the "Slack" and "Telegram" notification toggles did not retain their state after page reload on a newly created project. + +## 3. Security updates: +- **Updates in password policy for user registration and password changes:**
+ New passwords must be at least 8 characters long and include at least one digit, one special character, one uppercase letter, and one lowercase letter. Existing users can continue logging in with their current passwords, but any password updates will need to comply with the new requirements. + +- **CVE addressed:**
+ + - Service-api:
+ [CVE-2024-50379](https://nvd.nist.gov/vuln/detail/cve-2024-50379), [CVE-2024-56337](https://nvd.nist.gov/vuln/detail/CVE-2024-56337), [CVE-2025-24813](https://nvd.nist.gov/vuln/detail/CVE-2025-24813) + + - Service-ui:
+ [CVE-2024-45296](https://www.cve.org/CVERecord?id=CVE-2024-45296), [CVE-2025-27152](https://www.cve.org/CVERecord?id=CVE-2025-27152), [CVE-2025-26791](https://www.cve.org/CVERecord?id=CVE-2025-26791), [CVE-2024-53382](https://www.cve.org/CVERecord?id=CVE-2024-53382) + +## 4. Technical updates: +Removed Service Metrics Gatherer. + +## 5. Released services: +|Plugin Name|Repository|Tag| +|---|---| --- | +|API|reportportal/service-api|5.13.5| +|UI|reportportal/service-ui|5.12.5| +|Jobs|reportportal/service-jobs|5.13.2| +|Authorization|reportportal/service-authorization|5.13.2| +|Migrations|reportportal/migrations|5.13.2| +|Index|reportportal/service-index|5.13.1| + +**Rest of services and plugins have the same version as before:** +|Service Name|Repository|Tag| +|---|---| --- | +|Auto-Analyzer|reportportal/service-auto-analyzer|5.13.2| + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.12.1| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.0.1| +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.0.2| +|Monday|reportportal/plugin-bts-monday|1.0.1| +|Slack|reportportal/plugin-slack|1.0.1| +|Azure|reportportal/plugin-bts-azure|5.12.1| +|Jira|reportportal/plugin-bts-jira|5.12.1| +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.12.1| +|Saucelabs|reportportal/plugin-saucelabs|5.12.1| +|Rally|reportportal/plugin-bts-rally|5.12.2|| +|Telegram|reportportal/plugin-telegram|1.0.0|| diff --git a/versioned_docs/version-26.2-organizations/releases/Version25.1.1.md b/versioned_docs/version-26.2-organizations/releases/Version25.1.1.md new file mode 100644 index 0000000000..a7ecbd539b --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/Version25.1.1.md @@ -0,0 +1,41 @@ +--- +sidebar_position: 13 +sidebar_label: Version 25.1.1 +description: ReportPortal Version 25.1.1 addresses SAML reply URL generation issues, enhancing security and compatibility. +--- + +# Version 25.1.1 + +## 1. Bugs fixed: + +[#382](https://github.com/reportportal/service-authorization/issues/382) Fixed SAML reply URL generation. + +## 2. Released services: + +| Service Name |Repository|Tag| +|---------------|---| --- | +| Authorization |reportportal/service-authorization|5.14.1| + +**Rest of services and plugins have the same version as before:** +|Service Name|Repository|Tag| +|---|---| --- | +|Index|reportportal/service-index|5.14.0| +|UI|reportportal/service-ui|5.14.1| +|API|reportportal/service-api|5.14.0| +|Jobs|reportportal/service-jobs|5.14.0| +|Migrations|reportportal/migrations|5.14.0| +|Auto Analyzer|reportportal/service-auto-analyzer|5.14.1| + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.1.0| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.1.0| +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.13.1| +|Saucelabs|reportportal/plugin-saucelabs|5.13.0| +|Monday|reportportal/plugin-bts-monday|1.1.0| +|Rally|reportportal/plugin-bts-rally|5.13.0| +|Jira|reportportal/plugin-bts-jira|5.13.0| +|Telegram|reportportal/plugin-telegram|1.1.0| +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.13.0| +|Azure|reportportal/plugin-bts-azure|5.13.0| +|Slack|reportportal/plugin-slack|1.1.0| diff --git a/versioned_docs/version-26.2-organizations/releases/Version25.1.10.md b/versioned_docs/version-26.2-organizations/releases/Version25.1.10.md new file mode 100644 index 0000000000..f89efa8f6e --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/Version25.1.10.md @@ -0,0 +1,38 @@ +--- +sidebar_position: 4 +sidebar_label: Version 25.1.10 +--- + +# Version 25.1.10 + +## 1. Bugs fixed: +Fixed IDOR in admin UI. + +## 2. Released services and plugins: +|Service Name|Repository|Tag| +|---|---| --- | +|Authorization|reportportal/service-authorization|5.14.7| + +## Rest of services and plugins have the same version as before: +|Service Name|Repository|Tag| +|---|---| --- | +|Api|reportportal/service-api|5.14.4| +|UI|reportportal/service-ui|5.14.5| +|Auto Analyzer|reportportal/service-auto-analyzer|5.14.5| +|Migrations|reportportal/migrations|5.14.2| +|Index|reportportal/service-index|5.14.0| +|Jobs|reportportal/service-jobs|5.14.0| + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Rally|reportportal/plugin-bts-rally|5.13.1| +|Monday|reportportal/plugin-bts-monday|1.1.1| +|Azure|reportportal/plugin-bts-azure|5.13.2| +|Jira|reportportal/plugin-bts-jira|5.13.1| +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.13.5| +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.1.0| +|Telegram|reportportal/plugin-telegram|1.1.0| +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.13.1| +|Sauce Labs|reportportal/plugin-saucelabs|5.13.1| +|Slack|reportportal/plugin-slack|1.1.1| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.1.1| diff --git a/versioned_docs/version-26.2-organizations/releases/Version25.1.11.md b/versioned_docs/version-26.2-organizations/releases/Version25.1.11.md new file mode 100644 index 0000000000..a850f99108 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/Version25.1.11.md @@ -0,0 +1,39 @@ +--- +sidebar_position: 3 +sidebar_label: Version 25.1.11 +--- + +# Version 25.1.11 + +## 1. Bugs fixed: +Jira Cloud Hover: Fixed 400 error on Issue ID hover — tooltip now shows SUMMARY / STATUS. +Jira Cloud Post Issue: Fixed 400 error when using Linked Issues or Affects version — issues post successfully with correct UI feedback. + +## 2. Released services and plugins: +|Plugin Name|Repository|Tag| +|---|---| --- | +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.13.6| + +## Rest of services and plugins have the same version as before: +|Service Name|Repository|Tag| +|---|---| --- | +|Authorization|reportportal/service-authorization|5.14.7| +|Api|reportportal/service-api|5.14.4| +|UI|reportportal/service-ui|5.14.5| +|Auto Analyzer|reportportal/service-auto-analyzer|5.14.5| +|Migrations|reportportal/migrations|5.14.2| +|Index|reportportal/service-index|5.14.0| +|Jobs|reportportal/service-jobs|5.14.0| + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Rally|reportportal/plugin-bts-rally|5.13.1| +|Monday|reportportal/plugin-bts-monday|1.1.1| +|Azure|reportportal/plugin-bts-azure|5.13.2| +|Jira|reportportal/plugin-bts-jira|5.13.1| +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.1.0| +|Telegram|reportportal/plugin-telegram|1.1.0| +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.13.1| +|Sauce Labs|reportportal/plugin-saucelabs|5.13.1| +|Slack|reportportal/plugin-slack|1.1.2| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.1.1| diff --git a/versioned_docs/version-26.2-organizations/releases/Version25.1.12.md b/versioned_docs/version-26.2-organizations/releases/Version25.1.12.md new file mode 100644 index 0000000000..6f6155864f --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/Version25.1.12.md @@ -0,0 +1,44 @@ +--- +sidebar_position: 2 +sidebar_label: Version 25.1.12 +--- + +# Version 25.1.12 + +## 1. Bugs fixed: +- Jira Cloud: Fixed 400 error when posting with Linked Issues/Affects versions; added proper support for array-type fields. +- Core Jobs: cleanLaunch now batches deletions to avoid PostgreSQL’s param limit, restoring reliable retention cleanup. + +## 2. Released services and plugins: +|Service Name|Repository|Tag| +|---|---| --- | +|UI|reportportal/service-ui|5.14.6| +|Auto Analyzer|reportportal/service-auto-analyzer|5.14.6| +|Jobs|reportportal/service-jobs|5.14.1| + + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.13.7| + + +## Rest of services and plugins have the same version as before: +|Service Name|Repository|Tag| +|---|---| --- | +|Authorization|reportportal/service-authorization|5.14.7| +|Api|reportportal/service-api|5.14.4| +|Migrations|reportportal/migrations|5.14.2| +|Index|reportportal/service-index|5.14.0| + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Rally|reportportal/plugin-bts-rally|5.13.1| +|Monday|reportportal/plugin-bts-monday|1.1.1| +|Azure|reportportal/plugin-bts-azure|5.13.2| +|Jira|reportportal/plugin-bts-jira|5.13.1| +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.1.0| +|Telegram|reportportal/plugin-telegram|1.1.0| +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.13.1| +|Sauce Labs|reportportal/plugin-saucelabs|5.13.1| +|Slack|reportportal/plugin-slack|1.1.2| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.1.1| diff --git a/versioned_docs/version-26.2-organizations/releases/Version25.1.2.md b/versioned_docs/version-26.2-organizations/releases/Version25.1.2.md new file mode 100644 index 0000000000..c98ca36d76 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/Version25.1.2.md @@ -0,0 +1,44 @@ +--- +sidebar_position: 12 +sidebar_label: Version 25.1.2 +description: Explore ReportPortal Version 25.1.2 release notes detailing bug fixes for Jira Cloud integration and component health check widget enhancements. +--- + +# Version 25.1.2 + +## 1. Bugs fixed: +1. Fixed component health check widget (table view). +2. Fixed post priority field in Jira Cloud. + +## 2. Released services: +|Service Name|Repository|Tag| +|---|---| --- | +|API|reportportal/service-api|5.14.1| +|UI|reportportal/service-ui|5.14.2| + +**Released plugins:** +|Plugin Name|Repository|Tag| +|---|---| --- | +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.13.2| + +**Rest of services and plugins have the same version as before:** +|Service Name|Repository|Tag| +|---|---| --- | +|Index|reportportal/service-index|5.14.0| +|Jobs|reportportal/service-jobs|5.14.0| +|Migrations|reportportal/migrations|5.14.0| +|Authorization|reportportal/service-authorization|5.14.1| +|Auto Analyzer|reportportal/service-auto-analyzer|5.14.1| + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.1.0| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.1.0| +|Saucelabs|reportportal/plugin-saucelabs|5.13.0| +|Monday|reportportal/plugin-bts-monday|1.1.0| +|Rally|reportportal/plugin-bts-rally|5.13.0| +|Jira|reportportal/plugin-bts-jira|5.13.0| +|Telegram|reportportal/plugin-telegram|1.1.0| +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.13.0| +|Azure|reportportal/plugin-bts-azure|5.13.0| +|Slack|reportportal/plugin-slack|1.1.0| diff --git a/versioned_docs/version-26.2-organizations/releases/Version25.1.3.md b/versioned_docs/version-26.2-organizations/releases/Version25.1.3.md new file mode 100644 index 0000000000..cd3c056bb7 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/Version25.1.3.md @@ -0,0 +1,39 @@ +--- +sidebar_position: 11 +sidebar_label: Version 25.1.3 +description: Explore ReportPortal Version 25.1.3 release notes, featuring Jira Cloud integration fixes, plugin updates, and enhanced system stability for improved test management. +--- + +# Version 25.1.3 + +## 1.Bugs fixed: +Fixed Jira Cloud posting issue related to 'Component' field. + +## 2. Released plugins: +|Plugin Name|Repository|Tag| +|---|---| --- | +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.13.3| + +**Rest of services and plugins have the same version as before:** +|Service Name|Repository|Tag| +|---|---| --- | +|API|reportportal/service-api|5.14.1| +|UI|reportportal/service-ui|5.14.2| +|Index|reportportal/service-index|5.14.0| +|Jobs|reportportal/service-jobs|5.14.0| +|Migrations|reportportal/migrations|5.14.0| +|Authorization|reportportal/service-authorization|5.14.1| +|Auto Analyzer|reportportal/service-auto-analyzer|5.14.1| + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.1.0| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.1.0| +|Saucelabs|reportportal/plugin-saucelabs|5.13.0| +|Monday|reportportal/plugin-bts-monday|1.1.0| +|Rally|reportportal/plugin-bts-rally|5.13.0| +|Jira|reportportal/plugin-bts-jira|5.13.0| +|Telegram|reportportal/plugin-telegram|1.1.0| +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.13.0| +|Azure|reportportal/plugin-bts-azure|5.13.0| +|Slack|reportportal/plugin-slack|1.1.0| diff --git a/versioned_docs/version-26.2-organizations/releases/Version25.1.4.md b/versioned_docs/version-26.2-organizations/releases/Version25.1.4.md new file mode 100644 index 0000000000..c6a99a2663 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/Version25.1.4.md @@ -0,0 +1,40 @@ +--- +sidebar_position: 10 +sidebar_label: Version 25.1.4 +description: Explore ReportPortal Version 25.1.4 release notes detailing bug fixes, plugin updates, and improvements, including SAML login issue resolution. +--- + +# Version 25.1.4 + +## 1. Bugs fixed: +Fixed an issue with SAML login when the email address contains uppercase letters. + +## 2. Released plugins: +| Service Name |Repository|Tag| +|---------------|---| --- | +| Authorization |reportportal/service-authorization|5.14.2| + +**Rest of services and plugins have the same version as before:** +|Service Name|Repository|Tag| +|---|---| --- | +|Index|reportportal/service-index|5.14.0| +|Jobs|reportportal/service-jobs|5.14.0| +|Migrations|reportportal/migrations|5.14.0| +|Authorization|reportportal/service-authorization|5.14.2| +|Api|reportportal/service-api|5.14.1| +|UI|reportportal/service-ui|5.14.2| +|Auto Analyzer|reportportal/service-auto-analyzer|5.14.1| + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.1.0| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.1.0| +|Saucelabs|reportportal/plugin-saucelabs|5.13.0| +|Monday|reportportal/plugin-bts-monday|1.1.0| +|Rally|reportportal/plugin-bts-rally|5.13.0| +|Jira|reportportal/plugin-bts-jira|5.13.0| +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.13.3| +|Telegram|reportportal/plugin-telegram|1.1.0| +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.13.0| +|Azure|reportportal/plugin-bts-azure|5.13.0| +|Slack|reportportal/plugin-slack|1.1.0| diff --git a/versioned_docs/version-26.2-organizations/releases/Version25.1.5.md b/versioned_docs/version-26.2-organizations/releases/Version25.1.5.md new file mode 100644 index 0000000000..929d5a9325 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/Version25.1.5.md @@ -0,0 +1,39 @@ +--- +sidebar_position: 9 +sidebar_label: Version 25.1.5 +description: Explore ReportPortal Version 25.1.5 release notes detailing bug fixes, plugin updates, and improvements to enhance your test automation experience. +--- + +# Version 25.1.5 + +## 1. Bugs fixed: +Fixed an issue with login of new users via AD/LDAP authorizations. + +## 2. Released plugins: +|Service Name|Repository|Tag| +|---|---| --- | +|Authorization|reportportal/service-authorization|5.14.3| + +**Rest of services and plugins have the same version as before:** +|Service Name|Repository|Tag| +|---|---| --- | +|Index|reportportal/service-index|5.14.0| +|Jobs|reportportal/service-jobs|5.14.0| +|Migrations|reportportal/migrations|5.14.0| +|Api|reportportal/service-api|5.14.1| +|UI|reportportal/service-ui|5.14.2| +|Auto Analyzer|reportportal/service-auto-analyzer|5.14.1| + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.1.0| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.1.0| +|Saucelabs|reportportal/plugin-saucelabs|5.13.0| +|Monday|reportportal/plugin-bts-monday|1.1.0| +|Rally|reportportal/plugin-bts-rally|5.13.0| +|Jira|reportportal/plugin-bts-jira|5.13.0| +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.13.3| +|Telegram|reportportal/plugin-telegram|1.1.0| +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.13.0| +|Azure|reportportal/plugin-bts-azure|5.13.0| +|Slack|reportportal/plugin-slack|1.1.0| diff --git a/versioned_docs/version-26.2-organizations/releases/Version25.1.6.md b/versioned_docs/version-26.2-organizations/releases/Version25.1.6.md new file mode 100644 index 0000000000..39d4871cff --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/Version25.1.6.md @@ -0,0 +1,110 @@ +--- +sidebar_position: 8 +sidebar_label: Version 25.1.6 +description: "Explore ReportPortal Version 25.1.6 release notes: PostgreSQL 17 upgrade, enhanced launch exports, improved RobotFramework imports, and analyzer updates." +--- + +# Version 25.1.6 + +:::important +**Action Required - Upgrade PostgreSQL:**
+We have upgraded PostgreSQL to version 17. +- Create a full database dump from the current PostgreSQL instance. +- Restore the dump into a PostgreSQL 17 instance. +- Follow the official [migration guide](https://github.com/reportportal/reportportal/wiki/Upgrading-PostgreSQL-for-ReportPortal). +::: + + +## 1. What's changed: +**1. [Launch export improvements](/work-with-reports/OperationsUnderLaunches#export-launches-reports):**
+We've improved the launch report export functionality with new attachment support, better user experience, and enhanced file formatting. These changes make it easier to share comprehensive test reports with stakeholders while providing better visibility into the export process. + +- **Export reports with attachments:**
+ Added the ability to include attachments when exporting launch reports +- **New export modal:**
+ Redesigned export interface with clear options for file format selection and attachment inclusion +- **Structured archive format:**
+ When attachments are included, reports are exported as ZIP files with organized folder structure matching the test hierarchy (Launch → Suite → Test → Step levels) +- **Flexible export formats:**
+ Choose from PDF, XLS, or HTML formats, with or without attachments +- **Real-time export progress notifications:**
+ Added notification banner and system notifications showing export generation status +- **Continuous layout:**
+ Removed page breaks from XLS and HTML export templates for better readability + +**2. [Important Launches feature management](/admin-panel/ServerSettings#features):**
+Administrators can now control the Important Launches functionality at the server level through a new toggle in Server Settings. When disabled, all launches are converted to regular launches and the 'Mark as Important' option is removed from launch menus across all projects. + +**3. RobotFramework import improvements:** +- Enhanced RobotFramework import to properly display HTML screenshots with security restrictions on file paths and attachment types. +- Added support for RobotFramework V7 XML reports with schema version 5, including ISO-8601 timestamps, start/elapsed time format, and updated attribute names (library → owner, timestamp → time). + +**4. Analyzer improvements:**
+Added:
+- Ability to use different ML models for Suggestions +- Ability to switch ML model for Suggestions with ML_MODEL_FOR_SUGGESTIONS environment variable + +Changed:
+- Handling of AMQP messages now moved to separate processes: "train" (only for model training) and "main" (for all other messages) +- Handling of AMQP messages now performed in two separate queues: train and all +- Handling of AMQP messages now performed in in strict order +- Analyzer exchange type is changed to fanout +- Many logging messages were refactored and improved +- Choosing custom/global ML model now performed by Launch ID hash only + +Fixed:
+- 11 Sonar issues + +Removed:
+- analyzer-train service, as it is no longer needed + + +## 2. Bugs fixed: +1. Fixed widget navigation issue where clicking on test items in the "Most failed test-cases table (TOP-50)" widget incorrectly redirected to the latest launch instead of the specific launch where the test item was last executed. +2. Fixed screenshot display issue for XML reports in RobotFramework import plugin. +3. Fixed Slack and Telegram notification toggle setting persistence issue where the enabled state would not save properly and would revert to disabled after page reload or navigation. +4. Fixed project assignment dialog scrolling issue where the "Project" field and "Role" dropdown were not visible when adding new projects to users with more than 5 existing project assignments. +6. Fixed missing "deleted_user" label issue where launches owned by deleted users would show no owner information instead of displaying the appropriate "deleted_user" label. +7. Fixed password validation issue where special symbols like underscore (_) and colon (:) were incorrectly rejected during user creation and password changes, despite being valid special characters. +8. Fixed unnecessary error display when importing empty (0 MB) RobotFramework XML files that would import successfully but show false error messages. +9. Fixed missing success notification when updating dashboard names. +10. Updated duplicate filter naming pattern to use consistent "_copy" and "_copy_N" suffixes, handling filters that already contain these suffixes in their names. +11. Fixed Safari browser error message when copying dashboard configuration to clipboard, now shows success notification instead of false permission error. +12. Added UI validation to prevent creating dashboards with duplicate names. +13. Fixed RobotFramework plugin date parsing error that prevented successful import of XML files. + +## 3. Enhancements Based on Community Feedback +[#2326](https://github.com/reportportal/service-api/issues/2326) Fixed Prometheus metrics export functionality restoring the /api/prometheus endpoint. + +## 4. Released services and plugins: +|Service Name|Repository|Tag| +|---|---| --- | +|Api|reportportal/service-api|5.14.2| +|UI|reportportal/service-ui|5.14.3| +|Migrations|reportportal/migrations|5.14.1| +|Authorization|reportportal/service-authorization|5.14.4| +|Auto Analyzer|reportportal/service-auto-analyzer|5.14.2| + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Azure|reportportal/plugin-bts-azure|5.13.1| +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.13.1| +|Sauce Labs|reportportal/plugin-saucelabs|5.13.1| +|Slack|reportportal/plugin-slack|1.1.1| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.1.1| + +**Rest of services and plugins have the same version as before:** +|Service Name|Repository|Tag| +|---|---| --- | +|Index|reportportal/service-index|5.14.0| +|Jobs|reportportal/service-jobs|5.14.0| + + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.1.0| +|Monday|reportportal/plugin-bts-monday|1.1.0| +|Rally|reportportal/plugin-bts-rally|5.13.0| +|Jira|reportportal/plugin-bts-jira|5.13.0| +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.13.3| +|Telegram|reportportal/plugin-telegram|1.1.0| diff --git a/versioned_docs/version-26.2-organizations/releases/Version25.1.7.md b/versioned_docs/version-26.2-organizations/releases/Version25.1.7.md new file mode 100644 index 0000000000..2746fdbb88 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/Version25.1.7.md @@ -0,0 +1,41 @@ +--- +sidebar_position: 7 +sidebar_label: Version 25.1.7 +description: Explore ReportPortal Version 25.1.7 release notes detailing bug fixes, updated services, and plugin versions to enhance your test automation experience. +--- + +# Version 25.1.7 + +## 1. Bugs fixed: +Fixed base URL generation with credentials for ES/OS healthcheck and indices endpoints. + +## 2. Released services and plugins: +|Service Name|Repository|Tag| +|---|---| --- | +|Auto Analyzer|reportportal/service-auto-analyzer|5.14.3| + + +**Rest of services and plugins have the same version as before:** +|Service Name|Repository|Tag| +|---|---| --- | +|Api|reportportal/service-api|5.14.2| +|UI|reportportal/service-ui|5.14.3| +|Migrations|reportportal/migrations|5.14.1| +|Authorization|reportportal/service-authorization|5.14.4| +|Index|reportportal/service-index|5.14.0| +|Jobs|reportportal/service-jobs|5.14.0| + + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.1.0| +|Monday|reportportal/plugin-bts-monday|1.1.0| +|Rally|reportportal/plugin-bts-rally|5.13.0| +|Jira|reportportal/plugin-bts-jira|5.13.0| +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.13.3| +|Telegram|reportportal/plugin-telegram|1.1.0| +|Azure|reportportal/plugin-bts-azure|5.13.1| +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.13.1| +|Sauce Labs|reportportal/plugin-saucelabs|5.13.1| +|Slack|reportportal/plugin-slack|1.1.1| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.1.1| diff --git a/versioned_docs/version-26.2-organizations/releases/Version25.1.8.md b/versioned_docs/version-26.2-organizations/releases/Version25.1.8.md new file mode 100644 index 0000000000..fd9467aa12 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/Version25.1.8.md @@ -0,0 +1,52 @@ +--- +sidebar_position: 6 +sidebar_label: Version 25.1.8 +description: "Explore ReportPortal Version 25.1.8 release notes: enhanced Auto-Analysis settings, improved retry handling, and updated service and plugin versions." +--- + +# Version 25.1.8 + +## 1. What's changed: +ReportPortal now lets you choose whether to analyze the latest retry or the longest retry for more accurate defect assignment. +Available in Auto-Analysis settings. Admins and Project Managers can modify; others can view. + +Docs updated: +- [Auto-Analysis Settings](/analysis/AutoAnalysisOfLaunches#defect-assignment-based-on-the-longest-retry) +- [Manual Auto-Analysis](/analysis/AutoAnalysisOfLaunches#manual-analysis) +- [Immediate Auto-Analysis](/analysis/ImmediateAutoAnalysis) + +## 2. Released services: +|Service Name|Repository|Tag| +|---|---| --- | +|Api|reportportal/service-api|5.14.3| +|UI|reportportal/service-ui|5.14.4| +|Authorization|reportportal/service-authorization|5.14.5| +|Migrations|reportportal/migrations|5.14.2| +|Auto Analyzer|reportportal/service-auto-analyzer|5.14.4| + + +**Released plugins:** +|Plugin Name|Repository|Tag| +|---|---| --- | +|Azure|reportportal/plugin-bts-azure|5.13.2| +|Jira|reportportal/plugin-bts-jira|5.13.1| +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.13.4| +|Rally|reportportal/plugin-bts-rally|5.13.1| +|Monday|reportportal/plugin-bts-monday|1.1.1| + + +**Rest of services and plugins have the same version as before:** +|Service Name|Repository|Tag| +|---|---| --- | +|Index|reportportal/service-index|5.14.0| +|Jobs|reportportal/service-jobs|5.14.0| + + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.1.0| +|Telegram|reportportal/plugin-telegram|1.1.0| +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.13.1| +|Sauce Labs|reportportal/plugin-saucelabs|5.13.1| +|Slack|reportportal/plugin-slack|1.1.1| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.1.1| diff --git a/versioned_docs/version-26.2-organizations/releases/Version25.1.9.md b/versioned_docs/version-26.2-organizations/releases/Version25.1.9.md new file mode 100644 index 0000000000..18c9364133 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/Version25.1.9.md @@ -0,0 +1,83 @@ +--- +sidebar_position: 5 +sidebar_label: Version 25.1.9 +--- + +# Version 25.1.9 + +## 1. What's changed: + +**1. Improved XLS Export Format**
+Redesigned XLS export template with removed merged cells and proper numeric data formatting. Numeric values are now exported as true numeric cell types, enabling proper calculations, sorting, and filtering operations while maintaining visual readability. + +**2. New Tab Navigation:**
+Test case links in the ["Most Failed Test-Cases (TOP-50)" widget](/dashboards-and-widgets/MostFailedTestCasesTableTop50) now open in new browser tabs with visual arrow indicators on hover, providing seamless navigation without losing your current context. + +**3. History Table Improvement - Cell Preview Options:**
+Introduced new monitoring capabilities in the History table with customizable cell preview options. Users can now: +- Monitor custom performance metrics and response rates +- Track any measurable attribute relevant to their workflow +- Set threshold-based highlighting to identify items that fall outside acceptable parameters +- Make data-driven decisions based on historical patterns and trend analysis + +Learn more about [cell preview improvements](/work-with-reports/HistoryOfLaunches#cell-preview-options). + +**4. Amazon Application Load Balancer (ALB) Support**
+We are excited to announce that our [Helm chart](https://github.com/reportportal/kubernetes) now supports deployment with Amazon Application Load Balancer (ALB). This enhancement makes it easier to integrate ReportPortal with AWS environments using ALB. For setup instructions, check out our [ALB deployment guide](https://github.com/reportportal/kubernetes/blob/master/docs/alb-deployment-guide.md) + +## 2. Bugs fixed: + +**1. Navigation improvements:**
+Fixed "Set up Own Integration" link to properly open in new browser tab instead of replacing current page. + +**2. Import & Export Fixes:** +- Fixed missing attachment file extensions in exported ZIP files, ensuring attachments can be opened correctly. +- Resolved issue where attachment names were missing from exported reports when including attachments +- Corrected export functionality for launches owned by deleted users - files now export properly with data instead of returning empty files with 500 errors. +- Resolved screenshot display issue for XML reports in RobotFramework import plugin. +- Fixed unnecessary error display when importing empty (0 MB) RobotFramework XML files. + +**3. User Authentication** +- Resolved password validation issue that incorrectly rejected valid special characters like underscore (_) and colon (:). +- Fixed API Key authentication issue for keys containing two dots in the name. + +**4. Performance & Integration Fixes:** +- Resolved Unique Errors Analysis failures for launches with large logs by addressing RabbitMQ message size limit constraints. +- Fixed JIRA Cloud integration issue preventing successful ticket posting (tickets are now created properly without error messages). + + +## 3. Released services and plugins: + +|Service Name|Repository|Tag| +|---|---| --- | +|Api|reportportal/service-api|5.14.4| +|UI|reportportal/service-ui|5.14.5| +|Authorization|reportportal/service-authorization|5.14.6| +|Auto Analyzer|reportportal/service-auto-analyzer|5.14.5| + + +|Plugin Name|Repository| Tag | +|---|---|--------| +|Jira Cloud|reportportal/plugin-bts-jira-cloud| 5.13.5 | + + +**Rest of services and plugins have the same version as before:** +|Service Name|Repository|Tag| +|---|---| --- | +|Migrations|reportportal/migrations|5.14.2| +|Index|reportportal/service-index|5.14.0| +|Jobs|reportportal/service-jobs|5.14.0| + + +|Plugin Name|Repository|Tag| +|---|---| --- | +|Rally|reportportal/plugin-bts-rally|5.13.1| +|Monday|reportportal/plugin-bts-monday|1.1.1| +|Azure|reportportal/plugin-bts-azure|5.13.2| +|Jira|reportportal/plugin-bts-jira|5.13.1| +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.1.0| +|Telegram|reportportal/plugin-telegram|1.1.0| +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.13.1| +|Sauce Labs|reportportal/plugin-saucelabs|5.13.1| +|Slack|reportportal/plugin-slack|1.1.1| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.1.1| diff --git a/versioned_docs/version-26.2-organizations/releases/Version25.1.md b/versioned_docs/version-26.2-organizations/releases/Version25.1.md new file mode 100644 index 0000000000..8e778c0371 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/Version25.1.md @@ -0,0 +1,138 @@ +--- +sidebar_position: 14 +sidebar_label: Version 25.1 +description: ReportPortal v25.1 release notes with Spring Boot 3 upgrade, enhanced test execution reporting, and improved performance. +--- + +# Version 25.1 + +**Action Required 1 - Update all the plugins on the instance:**
+In ReportPortal 25.1, we've upgraded to Spring Boot 3. Starting with this version, only plugins built with Spring Boot 3 are supported. Please install the latest plugin versions specified in the 25.1 release notes. + +**Action Required 2 - Change API key format:**
+API keys containing special characters are no longer supported and will not function correctly.
+If your API keys contain special characters, please regenerate them to ensure continued access. The updated format supports only these characters: ```[a-zA-Z0-9-._~+/]``` + +**Action Required 3 - Update your SAML integration:**
+Please update your existing SAML integration to use the new standard callback URL format: ```/uat/login/saml2/sso/{saml-provider-name}```
+This ensures compatibility with the latest updates and improved security practices.
+More details can be found in our [SAML documentation](/plugins/authorization/SamlProviders/Overview/). + +**Important Compatibility Notice:**
+Java agents released prior to 2022 may experience compatibility issues with ReportPortal 25.1. Please verify agent compatibility and consider upgrading to newer agent versions to ensure full functionality. + +## 1. What's Changed: + +1. **[Footer link updates](/admin-panel/ServerSettings#links--branding)**:
+ Admin users can now customize footer links in ReportPortal by adding new links, naming them, and rearranging their order. This allows users to easily access important shortcuts relevant to their organization. + +2. **Dashboard sorting**:
+ Dashboards are now sorted by creation date (newest first) in the UI. You can also sort the dashboard list by creation date via the API. + +3. **New system notifications**:
+ System notifications no longer overlap actionable items or block other elements. We've reworked them to be shorter (not full width) and added an 'x' button for easy dismissal. + +4. **Project Activity Panel update**:
A new criteria "Update test item" has been added to the Project Activity Panel widget. This displays activity when a user changes an item's defect type or status, or when Auto Analysis changes an item's defect type. + +6. **SCIM user filtering:**
+ For users of our enterprise "[SCIM server](/features/SCIMServerFeature)" feature, we've added the ability to filter SCIM-type users. + + +## 2. Technical improvements: + +1. **Spring Boot 3:**
+ ReportPortal and all plugins have migrated to Spring Boot 3. +2. **Improved launch importing mechanism for RobotFramework and JUnit:**
+ Now the launch import is handling like a regular launch reporting using the asynchronous endpoints, that increases stability and durability of the service-API and speeds up the import processing. +3. **New environment variable for JUnit import plugin:**
+ Introduced a new environment variable to regulate the loading of the default import plugin (JUnit import plugin) at startup. +4. **Analyzer updates:**
+ +Added: +- AMQP_MAX_RETRY_TIME, AMQP_INITIAL_RETRY_INTERVAL, AMQP_BACKOFF_FACTOR, AMQP_HEARTBEAT_INTERVAL environment variables to configure AMQP client +- ANALYZER_ENABLE_MEMORY_DUMP environment variable to print memory dump on healthcheck calls for debugging purpose +- ES_BOOST_MA environment variable to boost manually analyzed test cases in ES + +Changed: +- AMQP client was rewritten to better handle connection issues +- uWSGI version updated to 2.0.29 +- Improved the way of URL and path extraction on data preparation stage +- AMQP exchange declaration now performs on every connection, to avoid issues with exchange not being declared on RabbitMQ restarts +- ES_BOOST_AA environment variable default value changed to 0.0 +- ES_TIME_WEIGHT_DECAY environment variable default value changed to 0.999 +- flask-cors dependency updated to 6.0.0 to address vulnerabilities + +Fixed: +- 22 Sonar issues + +## 3. Bugs fixed: +1. **Dashboard cloning update**:
+ We've updated the UX flow for creating dashboards based on pasted configurations to ensure its smooth work. + +2. **Slack/Telegram notification timing fix**:
+ Fixed an issue where Slack and Telegram notifications were sent with incorrect defect type data before Auto Analysis completed. Notifications now wait for Auto Analysis to finish, ensuring accurate defect type information is included. + +3. **Dashboard management after page reload fix**:
Fixed an issue where newly created dashboards would disappear after page reload, making them impossible to manage. Dashboards now remain accessible and manageable after page refresh. + +4. **Slack Integration:**
+ Fixed launch finish issue when invalid webhook URL is configured, preventing 400/403 errors during launch finish. + +5. **Notifications:**
+ Fixed display of placeholder labels in Slack/Telegram notifications when launch has no attributes. + +6. **Jira Cloud issue:**
+ Fixed Jira Cloud integration validation issue where valid BTS links were incorrectly rejected. + +7. **Attributes:**
+ Fixed attribute key/value truncation when colon ":" symbol is present - attributes now display complete text as saved in database. + +8. **Timestamps issue:**
+ Fixed test reporting issue with incorrect timestamps where tests were not reported correctly due to "startTime" timestamp errors in V24.2 .Net integration. + +## 4. Enhancements Based on Community Feedback: + +[#80](https://github.com/reportportal/reportportal/issues/80): Jira Cloud Plugin: Fixed URL validation preventing connections to *.jira.com domains.
+[#2488](https://github.com/reportportal/reportportal/issues/2488): GitHub Authorization: Fixed organization membership validation preventing valid organization members from logging in.
+[#2454](https://github.com/reportportal/reportportal/issues/2454): JIRA Server Sub-task Creation Error: Fixed paren)t issue data formatting that prevented creating sub-tasks in JIRA Server integration. + +## 5. CVE addressed: + +**Service-api:** +[CVE-2024-38816](https://github.com/advisories/GHSA-cx7f-g6mp-7hqm), [CVE-2024-38819](https://github.com/advisories/GHSA-g5vr-rgqm-vf78), [CVE-2025-22228](https://github.com/advisories/GHSA-mg83-c7gq-rv5c), [CVE-2024-38827](https://github.com/advisories/GHSA-q3v6-hm2v-pw99), [CVE-2023-24998](https://github.com/advisories/GHSA-hfrx-6qgj-fp6c), [CVE-2023-3635](https://github.com/advisories/GHSA-w33c-445m-f8w7), [CVE-2023-34036](https://github.com/advisories/GHSA-7m5c-fgwf-mwph), [CVE-2023-46120](https://github.com/advisories/GHSA-mm8h-8587-p46h), [CVE-2024-12798](https://github.com/advisories/GHSA-pr98-23f8-jwxv) + +**Service-authorization:** +[CVE-2025-22228](https://github.com/advisories/GHSA-mg83-c7gq-rv5c), [CVE-2024-38816](https://github.com/advisories/GHSA-cx7f-g6mp-7hqm), [CVE-2024-38819](https://github.com/advisories/GHSA-g5vr-rgqm-vf78), [CVE-2023-24998](https://github.com/advisories/GHSA-hfrx-6qgj-fp6c), [CVE-2023-3635](https://github.com/advisories/GHSA-w33c-445m-f8w7), [CVE-2023-34036](https://github.com/advisories/GHSA-7m5c-fgwf-mwph), [CVE-2023-46120](https://github.com/advisories/GHSA-mm8h-8587-p46h), [CVE-2023-0833](https://github.com/advisories/GHSA-8fhc-q55v-jvx2), [CVE-2024-38829](https://github.com/advisories/GHSA-mqvr-2rp8-j7h4), [CVE-2024-38827](https://github.com/advisories/GHSA-q3v6-hm2v-pw99), [CVE-2023-1932](https://github.com/advisories/GHSA-x83m-pf6f-pf9g), [CVE-2024-12798](https://github.com/advisories/GHSA-pr98-23f8-jwxv), [CVE-2023-1370](https://github.com/advisories/GHSA-493p-pfq6-5258), [CVE-2024-38808](https://github.com/advisories/GHSA-9cmq-m9j5-mvww), [CVE-2023-34055](https://github.com/advisories/GHSA-jjfh-589g-3hjx), [CVE-2025-24970](https://github.com/advisories/GHSA-4g8c-wm8x-jfhw), [CVE-2020-13936](https://github.com/advisories/GHSA-59j4-wjwp-mw9m) + +**Service-jobs:** +[CVE-2024-12798](https://github.com/advisories/GHSA-pr98-23f8-jwxv) + + +## 6. Released services: +|Service Name|Repository| Tag | +|---|---|--------| +|Index|reportportal/service-index| 5.14.0 | +|Authorization|reportportal/service-authorization| 5.14.0 | +|UI|reportportal/service-ui| 5.14.1 | +|API|reportportal/service-api| 5.14.0 | +|Jobs|reportportal/service-jobs| 5.14.0 | +|Migrations|reportportal/migrations| 5.14.0 | +|Auto Analyzer|reportportal/service-auto-analyzer| 5.14.1 | + +**Released plugins:** +|Plugin Name|Repository|Tag| +|---|---| --- | +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.1.0| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.1.0| +|Jira Cloud|reportportal/plugin-bts-jira-cloud|5.13.1| +|Saucelabs|reportportal/plugin-saucelabs|5.13.0| +|Monday|reportportal/plugin-bts-monday|1.1.0| +|Rally|reportportal/plugin-bts-rally|5.13.0| +|Jira|reportportal/plugin-bts-jira|5.13.0| +|Telegram|reportportal/plugin-telegram|1.1.0| +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.13.0| +|Azure|reportportal/plugin-bts-azure|5.13.0| +|Slack|reportportal/plugin-slack|1.1.0| + + +## 7. Migration Guide. +- [How to migrate to Reportportal v25.1](https://github.com/reportportal/reportportal/wiki/%F0%9F%9A%80--Migration-guide-(NEW)#migration-to-251) diff --git a/versioned_docs/version-26.2-organizations/releases/Version25.2.md b/versioned_docs/version-26.2-organizations/releases/Version25.2.md new file mode 100644 index 0000000000..1c09e79b4b --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/Version25.2.md @@ -0,0 +1,98 @@ +--- +sidebar_position: 1 +sidebar_label: Version 25.2 +--- + +# Version 25.2 + +## 1. What's Changed: + +**1. [Premium feature](/terms-and-conditions/PremiumFeatures) (Subscribers-only): [Test Executions page](/features/TestExecutions)**
+View and manage individual test cases across multiple launches in one flat list — no need to drill through launch hierarchy. Includes launch-level filters, test-level search & rich filters and customizable columns. + +**2. [Improved Log experience](/configuration/ProjectSettings#log-types)**
+The Log view is now more powerful and customizable: +- Added per-user appearance settings (full-width layout, colorized backgrounds based on Log Types, disable log collapsing, adjustable log size, toggle pagination / infinite scroll). +- Navigation is faster with error log jumping (Prev/Next) and search + “jump to” highlighting across pages. +- Expanded Log Types management in Project Settings: create/edit/delete custom types and configure up to 6 types in the log filter slider. + +**3. Minimum password length setting**
+Added server setting + UI validation updates across registration, user creation, and password change flows (admin-only). + +## 2. Bugs fixed: + +**1. Project Settings - Notifications**
+Updated “All Notifications” toggle description; prevented adding attributes with empty Value. + +**2. UI loaders**
+Fixed vertical loader alignment for Export Report (Include Attachments) and Demo Data generation (now horizontal). + +**3. Server Settings UI**
+Fixed Backspace editing in Password length field. + +**4. Make decision modal**
+Fixed logs background color (no red background). + +**5. Backend performance**
+Sped up finish test_item path query by adding ti.launch_id (significant execution time reduction). + +**6. Jobs**
+Fixed InterruptBrokenLaunchesJob (job execution, replica concurrency/locks, null counter handling); added missing “finish” log entry; reduced irrelevant ERROR logs when email server isn’t configured. + +**7. Auth/API**
+Removed GET /api/v1/user/registration/info endpoint and related UI validation. + +**8. Swagger Logs API**
+Fixed 500 error on log creation; endpoints now return 201 Created. + +**9. Jira Server**
+Fixed Labels field to save multiple values (not just the first). + +**10. DeleteExpiredUsers job**
+Now deletes empty Personal projects correctly and avoids index deletion errors. + +## 3. CVE addressed: + +**Service-api**
+[CVE-2025-55752](https://github.com/advisories/GHSA-wmwf-9ccg-fff5), [CVE-2025-49124](https://github.com/advisories/GHSA-42wg-hm62-jcwg), [CVE-2025-48988](https://github.com/advisories/GHSA-h3gc-qfqq-6h8f), [CVE-2025-53506](https://github.com/advisories/GHSA-25xr-qj8w-c4vf), [CVE-2025-48989](https://github.com/advisories/GHSA-gqp3-2cvr-x8m3), [CVE-2025-52520](https://github.com/advisories/GHSA-wr62-c79q-cv37), [CVE-2025-61795](https://github.com/advisories/GHSA-hgrr-935x-pq79), [CVE-2025-55668](https://github.com/advisories/GHSA-23hv-mwm6-g8jf), [CVE-2025-49125](https://github.com/advisories/GHSA-wc4r-xq3c-5cf3), [CVE-2025-58056](https://github.com/advisories/GHSA-fghv-69vj-qj49), [CVE-2025-58057](https://github.com/advisories/GHSA-3p8m-j85q-pgmj), [CVE-2025-55163](https://github.com/advisories/GHSA-prj3-ccx8-p6x4), [CVE-2025-53864](https://github.com/advisories/GHSA-xwmg-2g98-w7v9), [CVE-2025-48924](https://github.com/advisories/GHSA-j288-q9x7-2f5v), [CVE-2025-49146](https://github.com/advisories/GHSA-hq9p-pm7w-8p54), [CVE-2025-59952](https://github.com/advisories/GHSA-h7rh-xfpj-hpcm), [CVE-2025-41249](https://github.com/advisories/GHSA-jmp9-x22r-554x), [CVE-2025-41248](https://github.com/advisories/GHSA-8v5q-rhf3-jphm), [CVE-2025-41242](https://github.com/advisories/GHSA-r936-gwx5-v52f), [CVE-2025-41234](https://github.com/advisories/GHSA-6r3c-xf4w-jxjm), [CVE-2025-7962](https://github.com/advisories/GHSA-9342-92gg-6v29), [CVE-2025-11226](https://github.com/advisories/GHSA-25qh-j22f-pwp8) + +**Service-authorization**
+[CVE-2025-55752](https://github.com/advisories/GHSA-wmwf-9ccg-fff5), [CVE-2025-49124](https://github.com/advisories/GHSA-42wg-hm62-jcwg), [CVE-2025-48988](https://github.com/advisories/GHSA-h3gc-qfqq-6h8f), [CVE-2025-53506](https://github.com/advisories/GHSA-25xr-qj8w-c4vf), [CVE-2025-48989](https://github.com/advisories/GHSA-gqp3-2cvr-x8m3), [CVE-2025-52520](https://github.com/advisories/GHSA-25xr-qj8w-c4vf), [CVE-2025-61795](https://github.com/advisories/GHSA-hgrr-935x-pq79), [CVE-2025-55668](https://github.com/advisories/GHSA-23hv-mwm6-g8jf), [CVE-2025-49125](https://github.com/advisories/GHSA-wc4r-xq3c-5cf3), [CVE-2025-58056](https://github.com/advisories/GHSA-fghv-69vj-qj49), [CVE-2025-58057](https://github.com/advisories/GHSA-3p8m-j85q-pgmj),[CVE-2025-55163](https://github.com/advisories/GHSA-prj3-ccx8-p6x4), [CVE-2025-48924](https://github.com/advisories/GHSA-j288-q9x7-2f5v), [CVE-2025-41249](https://github.com/advisories/GHSA-jmp9-x22r-554x), [CVE-2025-41248](https://github.com/advisories/GHSA-8v5q-rhf3-jphm), [CVE-2025-41242](https://github.com/advisories/GHSA-r936-gwx5-v52f), [CVE-2025-41234](https://github.com/advisories/GHSA-6r3c-xf4w-jxjm), [CVE-2025-11226](https://github.com/advisories/GHSA-25qh-j22f-pwp8) + +**Service-jobs**
+[CVE-2025-55752](https://github.com/advisories/GHSA-wmwf-9ccg-fff5), [CVE-2025-49124](https://github.com/advisories/GHSA-42wg-hm62-jcwg), [CVE-2025-48988](https://github.com/advisories/GHSA-h3gc-qfqq-6h8f), [CVE-2025-53506](https://github.com/advisories/GHSA-25xr-qj8w-c4vf), [CVE-2025-48989](https://github.com/advisories/GHSA-gqp3-2cvr-x8m3), [CVE-2025-52520](https://github.com/advisories/GHSA-25xr-qj8w-c4vf), [CVE-2025-61795](https://github.com/advisories/GHSA-hgrr-935x-pq79), [CVE-2025-55668](https://github.com/advisories/GHSA-23hv-mwm6-g8jf), [CVE-2025-49125](https://github.com/advisories/GHSA-wc4r-xq3c-5cf3), [CVE-2025-58056](https://github.com/advisories/GHSA-fghv-69vj-qj49), [CVE-2025-58057](https://github.com/advisories/GHSA-3p8m-j85q-pgmj),[CVE-2025-55163](https://github.com/advisories/GHSA-prj3-ccx8-p6x4), [CVE-2025-48924](https://github.com/advisories/GHSA-j288-q9x7-2f5v), [CVE-2025-41249](https://github.com/advisories/GHSA-jmp9-x22r-554x), [CVE-2025-41242](https://github.com/advisories/GHSA-r936-gwx5-v52f), [CVE-2025-41234](https://github.com/advisories/GHSA-6r3c-xf4w-jxjm), [CVE-2025-11226](https://github.com/advisories/GHSA-25qh-j22f-pwp8) + +**Service-migrations**
+[CVE-2025-30204](https://github.com/advisories/GHSA-mh63-6h87-95cp), [CVE-2025-22868](https://github.com/advisories/GHSA-6v2p-p543-phr9) + +# 4. **Released services:** +|Service Name|Repository|Tag| +|---|---| --- | +|Index|reportportal/service-index|5.15.0| +|Authorization|reportportal/service-authorization|5.15.0| +|UI|reportportal/service-ui|5.15.0| +|API|reportportal/service-api|5.15.0| +|Jobs|reportportal/service-jobs|5.15.0| +|Migrations|reportportal/migrations|5.15.0| +|Auto Analyzer|reportportal/service-auto-analyzer|5.15.0| + +**Released plugins:** +|Plugin Name|Repository|Tag| +|---|---| --- | +|Jira|reportportal/plugin-bts-jira|5.15.0| + +**Rest of services and plugins have the same version as before:** +|Plugin Name|Repository|Tag| +|---|---| --- | +|Rally|reportportal/plugin-bts-rally|5.13.1| +|Monday|reportportal/plugin-bts-monday|1.1.1| +|Azure|reportportal/plugin-bts-azure|5.13.2| +|Import Plugin (JUnit)|reportportal/plugin-import-robot|1.1.0| +|Telegram|reportportal/plugin-telegram|1.1.0| +|Gitlab Plugin|reportportal/plugin-bts-gitlab|5.13.1| +|Sauce Labs|reportportal/plugin-saucelabs|5.13.1| +|Slack|reportportal/plugin-slack|1.1.2| +|Import Plugin (RobotFramework)|reportportal/plugin-import-robot|1.1.1| + +# 5. Migration Guide. +[How to migrate to Reportportal v25.2.](https://github.com/reportportal/reportportal/wiki/Migration-v25) diff --git a/versioned_docs/version-26.2-organizations/releases/_category_.json b/versioned_docs/version-26.2-organizations/releases/_category_.json new file mode 100644 index 0000000000..8bdc4793b2 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Releases", + "position": "6", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.2-organizations/releases/archived-releases/Version23.1.md b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version23.1.md new file mode 100644 index 0000000000..72ad1873c7 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version23.1.md @@ -0,0 +1,84 @@ +--- +sidebar_position: 2 +sidebar_label: Version 23.1 +description: ReportPortal v23.1 archived release notes with new logo, enhanced features. +--- + +# Version 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). + +## 5. [Migration guide](https://github.com/reportportal/reportportal/wiki/Migration-to-ReportPortal-v.23.1) + +## 6. 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/versioned_docs/version-26.2-organizations/releases/archived-releases/Version23.2.md b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version23.2.md new file mode 100644 index 0000000000..456cb9a5cd --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version23.2.md @@ -0,0 +1,101 @@ +--- +sidebar_position: 1 +sidebar_label: Version 23.2 +description: ReportPortal v23.2 release notes with new monitoring features, data retention policies, and enhanced test automation reporting tools capabilities. +--- + +# Version 23.2 + +## 1. What's Changed: + +- **New feature - [Monitoring](/admin-panel/EventMonitoring):** + +A new Event Monitoring interface has been introduced, providing administrators with a convenient means to review all activities at the Project level through the Search & Filter functionality within the Admin panel. Events at the instance level are not visible on the UI, but they are securely stored in the database. This data can be easily transmitted to SIEM systems for future monitoring and analysis. + +- **[Project Activity Panel](/dashboards-and-widgets/ProjectActivityPanel) Adjustments:** + +The list of project activities displayed in the Project Activity Panel has been expanded. + +:::important + +Please take into account that starting from this point forward, all events will have a new format for their storing in the database. Consequently, all events which have been stored prior to version 23.2 will be deleted. +::: + +- **New feature – [Delete Account](/user-account/DeleteAccount):** + +Now instance administrators can empower users to delete their accounts and obfuscate associated personal data. + +- **New feature – Personal [Data Retention policy](/user-account/DataRetentionProcedure):** + +ReportPortal now offers the option to set a retention period for collected personal data during instance configuration. + +:::note +Please note that Features 3 and 4 are configurable, giving you the flexibility to decide whether you want to use these features or not. If you choose to utilize them, you can configure them using environmental variables. Further details can be found in the respective documentation. +::: + +- **New feature – [API Key](/log-data-in-reportportal/HowToGetAnAccessTokenInReportPortal#2-authorization-with-users-api-key-for-agents):** + +You can now generate as many API Keys as you need. You also have the ability to keep track of the creation date of API Keys and revoke any that are unused. Old tokens will still continue to function. Additionally, easy identification of the purpose of API Keys is facilitated through the use of prefixes. + +- **Gitlab CI integration Workaround:** + +## 2. Small updates: + +- **“Load current step” functionality adjustments:** + +Minor refinements have been applied to the "Load current step" functionality. Now, you can access the "Load current step" feature by hovering over a step. + +- **Download file name changes:** + +Attachment details and download format have been revised: files are now downloaded with the real file names. + +- **Configuration examples updates:** + +Configuration examples on the user profile page have been updated. + +## 3. Technical Improvements: + +- Storage layer now supports S3 storage, allowing data consolidation into a single bucket for the entire instance. + +- We’ve added postfix for bucket names in binary storage. + +- We’ve updated dependencies with security fixes: service-auto-analyzer and service-metrics-gatherer. + +- The issue of slow Log View loading when STEP has a complex structure of the nested steps nesting and count of them has been resolved and now up to 7x faster. + +- Service-jobs stability is improved during the reporting logs with the large stack traces. + +- We’ve optimized the attachments cleaning mechanism that allows us to increase the default value of the chunk_size by 20 times: from 1000 to 20000 in the docker compose and Kubernetes deployments. + +- Content Security Policy has been extended by adding the .browserstack.com. Now you can embed videos as a markdown from BrowserStack in order to ease failed tests troubleshooting. + +- Job for Flushing Demo data works as expected thanks to sql error fix. + +- We’ve updated react to version 17 and its dependencies to reduce the number of vulnerabilities and have a smooth transition to version 18. + +- Issues arising when service-api is starting (connected to bucket structure update or the binary storage type update) while there are integrations to external services like Jira have been resolved. Old logic for migrating integration salt has been removed. + +- Launches import via API is possible with additional parameters: name, description, attributes. + +- Rename notIssue parameter for import launch : For the end-point POST/v1 /{projectName} /launch /import parameter notIssue is renamed to skippedIsNotIssue. Logic remains the same. + +## 4. Enhancements Based on Community Feedback: + +- [#1815](https://github.com/reportportal/reportportal/issues/1815), [#1795](https://github.com/reportportal/reportportal/issues/1795), [#957](https://github.com/reportportal/reportportal/issues/957), [#1644](https://github.com/reportportal/reportportal/issues/1644), [#1590](https://github.com/reportportal/reportportal/issues/1590). All ReportPortal images now support multiple platforms: linux/amd64 + +- [#1970](https://github.com/reportportal/reportportal/issues/1970). Deserialization issue has been fixed. + +## 5. Released versions + +|Service Name|Repository|Tag| +|---|---| --- | +|Index|reportportal/service-index|5.10.0| +|Authorization|reportportal/service-authorization|5.10.0| +|UI|reportportal/service-ui|5.10.0| +|API|reportportal/service-api|5.10.0| +|Jobs|reportportal/service-jobs|5.10.0| +|Migrations|reportportal/migrations|5.10.0| +|Auto Analyzer|reportportal/service-auto-analyzer|5.10.0| +|Metrics Gatherer|reportportal/service-metrics-gatherer|5.10.0| + +## 6. [Migration guide](https://github.com/reportportal/reportportal/wiki/Migration-to-ReportPortal-v.23.2) diff --git a/versioned_docs/version-26.2-organizations/releases/archived-releases/Version3.3.2-1.md b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version3.3.2-1.md new file mode 100644 index 0000000000..e6f29955ed --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version3.3.2-1.md @@ -0,0 +1,14 @@ +--- +sidebar_position: 37 +sidebar_label: Version 3.3.2-1 +description: ReportPortal v3.3.2-1 archived release notes with bug fixes and enhanced test automation reporting tools stability. +--- + +# 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/versioned_docs/version-26.2-organizations/releases/archived-releases/Version3.3.2.md b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version3.3.2.md new file mode 100644 index 0000000000..2805643db8 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version3.3.2.md @@ -0,0 +1,20 @@ +--- +sidebar_position: 38 +sidebar_label: Version 3.3.2 +description: ReportPortal v3.3.2 archived release notes with new features and enhanced test automation reporting tools capabilities. +--- + +# 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/versioned_docs/version-26.2-organizations/releases/archived-releases/Version4.0.0.md b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version4.0.0.md new file mode 100644 index 0000000000..ffd8d45d48 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version4.0.0.md @@ -0,0 +1,149 @@ +--- +sidebar_position: 36 +sidebar_label: Version 4.0.0 +description: ReportPortal v4.0.0 archived release notes with major updates and enhanced test automation reporting tools features. +--- + +# 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/versioned_docs/version-26.2-organizations/releases/archived-releases/Version4.1.0.md b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version4.1.0.md new file mode 100644 index 0000000000..d005ae27d6 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version4.1.0.md @@ -0,0 +1,17 @@ +--- +sidebar_position: 35 +sidebar_label: Version 4.1.0 +description: ReportPortal v4.1.0 archived release notes with new features. +--- + +# 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/versioned_docs/version-26.2-organizations/releases/archived-releases/Version4.2.0.md b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version4.2.0.md new file mode 100644 index 0000000000..c8b79f30d1 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version4.2.0.md @@ -0,0 +1,41 @@ +--- +sidebar_position: 34 +sidebar_label: Version 4.2.0 +description: ReportPortal v4.2.0 archived release notes with new features. +--- + +# 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/versioned_docs/version-26.2-organizations/releases/archived-releases/Version4.3.md b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version4.3.md new file mode 100644 index 0000000000..c4857ed965 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version4.3.md @@ -0,0 +1,28 @@ +--- +sidebar_position: 33 +sidebar_label: Version 4.3 +description: ReportPortal v4.3 archived release notes with new features. +--- + +# 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/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.0.0.md b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.0.0.md new file mode 100644 index 0000000000..2104e24930 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.0.0.md @@ -0,0 +1,92 @@ +--- +sidebar_position: 31 +sidebar_label: Version 5.0.0 +description: ReportPortal v5.0.0 archived release notes with major updates. +--- + +# 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/DeployWithDocker) +- [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](/plugins/ManagePlugins#upload-plugin) from our Bintray repository, and drag-n-drop it ReportPortal in Administrative section -> Plugins. + +Available plugins to download: +- [Jira](/plugins/bug-tracking/AtlassianJiraServer) +- [Rally](/plugins/bug-tracking/Rally) +- [SauceLabs](/plugins/other/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/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.0RC.md b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.0RC.md new file mode 100644 index 0000000000..ddd2bb4b73 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.0RC.md @@ -0,0 +1,67 @@ +--- +sidebar_position: 32 +sidebar_label: Version 5.0RC +description: ReportPortal v5.0RC archived release candidate notes with new features. +--- + +# 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/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.1.0.md b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.1.0.md new file mode 100644 index 0000000000..9f4038900d --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.1.0.md @@ -0,0 +1,55 @@ +--- +sidebar_position: 30 +sidebar_label: Version 5.1.0 +description: ReportPortal v5.1.0 archived release notes with enhanced security, encryption updates. +--- + +# 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. +::: + +## 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 +[Migration guide](https://github.com/reportportal/reportportal/wiki/Migration-to-ReportPortal-v.5.1) diff --git a/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.2.0.md b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.2.0.md new file mode 100644 index 0000000000..a7bcf13b0d --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.2.0.md @@ -0,0 +1,19 @@ +--- +sidebar_position: 29 +sidebar_label: Version 5.2.0 +description: ReportPortal v5.2.0 archived release notes with new features. +--- + +# 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/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.2.1.md b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.2.1.md new file mode 100644 index 0000000000..25bebcef5c --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.2.1.md @@ -0,0 +1,9 @@ +--- +sidebar_position: 28 +sidebar_label: Version 5.2.1 +description: ReportPortal v5.2.1 archived release notes with bug fixes. +--- + +# Version 5.2.1 + +Fix reportportal/kubernetes [#115](https://github.com/reportportal/reportportal/issues/115) diff --git a/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.2.2.md b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.2.2.md new file mode 100644 index 0000000000..054082410a --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.2.2.md @@ -0,0 +1,16 @@ +--- +sidebar_position: 27 +sidebar_label: Version 5.2.2 +description: ReportPortal v5.2.2 archived release notes with bug fixes. +--- + +# 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/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.2.3.md b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.2.3.md new file mode 100644 index 0000000000..72a796d689 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.2.3.md @@ -0,0 +1,12 @@ +--- +sidebar_position: 26 +sidebar_label: Version 5.2.3 +description: ReportPortal v5.2.3 archived release notes with bug fixes and enhanced test automation reporting tools stability. +--- + +# 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/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.3.0.md b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.3.0.md new file mode 100644 index 0000000000..12399dd08c --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.3.0.md @@ -0,0 +1,31 @@ +--- +sidebar_position: 25 +sidebar_label: Version 5.3.0 +description: ReportPortal v5.3.0 archived release notes with new features and enhanced test automation reporting tools capabilities. +--- + +# 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/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.3.1.md b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.3.1.md new file mode 100644 index 0000000000..600856f963 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.3.1.md @@ -0,0 +1,17 @@ +--- +sidebar_position: 24 +sidebar_label: Version 5.3.1 +description: ReportPortal v5.3.1 archived release notes with bug fixes. +--- + +# 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/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.3.2.md b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.3.2.md new file mode 100644 index 0000000000..a368bbb285 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.3.2.md @@ -0,0 +1,14 @@ +--- +sidebar_position: 23 +sidebar_label: Version 5.3.2 +description: ReportPortal v5.3.2 archived release notes with bug fixes and enhanced test automation reporting tools stability. +--- + +# 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/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.3.3.md b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.3.3.md new file mode 100644 index 0000000000..1ba00279bd --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.3.3.md @@ -0,0 +1,39 @@ +--- +sidebar_position: 22 +sidebar_label: Version 5.3.3 +description: ReportPortal v5.3.3 archived release notes with bug fixes and enhanced test automation reporting tools stability. +--- + +# 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/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.3.5.md b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.3.5.md new file mode 100644 index 0000000000..911fbb3edf --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.3.5.md @@ -0,0 +1,12 @@ +--- +sidebar_position: 21 +sidebar_label: Version 5.3.5 +description: ReportPortal v5.3.5 archived release notes with bug fixes and enhanced test automation reporting tools stability. +--- + +# 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/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.4.0.md b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.4.0.md new file mode 100644 index 0000000000..b2cbfd9b37 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.4.0.md @@ -0,0 +1,29 @@ +--- +sidebar_position: 20 +sidebar_label: Version 5.4.0 +description: ReportPortal v5.4.0 archived release notes with new features and enhanced test automation reporting tools capabilities. +--- + +# 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/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.5.0.md b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.5.0.md new file mode 100644 index 0000000000..bac061e0d3 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.5.0.md @@ -0,0 +1,24 @@ +--- +sidebar_position: 19 +sidebar_label: Version 5.5.0 +description: ReportPortal v5.5.0 archived release notes with new features and enhanced test automation reporting tools capabilities. +--- + +# 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/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.6.0.md b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.6.0.md new file mode 100644 index 0000000000..63a006e098 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.6.0.md @@ -0,0 +1,42 @@ +--- +sidebar_position: 18 +sidebar_label: Version 5.6.0 +description: ReportPortal v5.6.0 archived release notes with new features and enhanced test automation reporting tools capabilities. +--- + +# 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/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.6.1.md b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.6.1.md new file mode 100644 index 0000000000..245d47294b --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.6.1.md @@ -0,0 +1,10 @@ +--- +sidebar_position: 17 +sidebar_label: Version 5.6.1 +description: ReportPortal v5.6.1 archived release notes with bug fixes and enhanced test automation reporting tools stability. +--- + +# 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/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.6.2.md b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.6.2.md new file mode 100644 index 0000000000..6026c9d51d --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.6.2.md @@ -0,0 +1,11 @@ +--- +sidebar_position: 16 +sidebar_label: Version 5.6.2 +description: ReportPortal v5.6.2 archived release notes with bug fixes and enhanced test automation reporting tools stability. +--- + +# 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/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.6.3.md b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.6.3.md new file mode 100644 index 0000000000..ad70caf342 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.6.3.md @@ -0,0 +1,10 @@ +--- +sidebar_position: 15 +sidebar_label: Version 5.6.3 +description: ReportPortal v5.6.3 archived release notes with bug fixes and enhanced test automation reporting tools stability. +--- + +# Version 5.6.3 + +## Bugfixing +- Log4J vulnerabilities: [CVE-2021-44832](https://github.com/advisories/GHSA-8489-44mv-ggj8) diff --git a/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.7.0.md b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.7.0.md new file mode 100644 index 0000000000..208d7bda6b --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.7.0.md @@ -0,0 +1,39 @@ +--- +sidebar_position: 7 +sidebar_label: Version 5.7.0 +description: ReportPortal v5.7.0 archived release notes with new features. +--- + +# 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/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.7.1.md b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.7.1.md new file mode 100644 index 0000000000..2365f54b02 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.7.1.md @@ -0,0 +1,10 @@ +--- +sidebar_position: 6 +sidebar_label: Version 5.7.1 +description: ReportPortal v5.7.1 archived release notes with bug fixes. +--- + +# Version 5.7.1 + +## Technical Improvements: +Functionality to configure virtual hosts in RabbitMQ for Analyzer was added diff --git a/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.7.2.md b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.7.2.md new file mode 100644 index 0000000000..3b7f522c16 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.7.2.md @@ -0,0 +1,52 @@ +--- +sidebar_position: 5 +sidebar_label: Version 5.7.2 +description: "Discover ReportPortal 5.7.2: introduces dual logging to ElasticSearch, new Jira and Azure DevOps plugins, enhanced UI, and performance improvements." +--- + +# 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/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.7.3.md b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.7.3.md new file mode 100644 index 0000000000..da8469886a --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.7.3.md @@ -0,0 +1,54 @@ +--- +sidebar_position: 4 +sidebar_label: Version 5.7.3 +description: "Explore ReportPortal Version 5.7.3: enhanced error log navigation, improved lazy loading, and optimized Elasticsearch performance for better test analysis." +--- + +# 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). + +## 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/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.7.4.md b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.7.4.md new file mode 100644 index 0000000000..1f89e0b1b5 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/Version5.7.4.md @@ -0,0 +1,32 @@ +--- +sidebar_position: 3 +sidebar_label: Version 5.7.4 +description: ReportPortal v5.7.4 archived release notes with MinIO client updates. +--- + +# 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/versioned_docs/version-26.2-organizations/releases/archived-releases/_category_.json b/versioned_docs/version-26.2-organizations/releases/archived-releases/_category_.json new file mode 100644 index 0000000000..9dc3a0b541 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Archived Releases", + "position": "24", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.2-organizations/releases/archived-releases/img/5.7.4.png b/versioned_docs/version-26.2-organizations/releases/archived-releases/img/5.7.4.png new file mode 100644 index 0000000000..19cede312b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/releases/archived-releases/img/5.7.4.png differ diff --git a/versioned_docs/version-26.2-organizations/releases/archived-releases/index.md b/versioned_docs/version-26.2-organizations/releases/archived-releases/index.md new file mode 100644 index 0000000000..34fb799a6b --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/archived-releases/index.md @@ -0,0 +1,13 @@ +--- +title: Archived Releases +description: Browse older ReportPortal versions for reference and long-term support needs. Review historic notes to trace changes across your test report dashboard. +--- + +# Archived Releases + +Welcome to the archive of past ReportPortal releases! Here, you’ll find versions that are over two years old, preserved for historical reference and long-term support needs. +They remain available for those who require access to older versions. For the latest features, improvements, and security updates, we recommend exploring the most recent releases. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.2-organizations/releases/img/24.2.png b/versioned_docs/version-26.2-organizations/releases/img/24.2.png new file mode 100644 index 0000000000..7e9e2ed41d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/releases/img/24.2.png differ diff --git a/versioned_docs/version-26.2-organizations/releases/index.md b/versioned_docs/version-26.2-organizations/releases/index.md new file mode 100644 index 0000000000..3daab74f3c --- /dev/null +++ b/versioned_docs/version-26.2-organizations/releases/index.md @@ -0,0 +1,20 @@ +--- +title: Releases +description: Check out the latest ReportPortal version, release notes, and updates. +--- + +# Releases + +The **Releases** section is dedicated to keeping users informed about the latest ReportPortal versions and updates. We are committed to regularly releasing new versions of the platform that introduce new functionalities, improve existing features, and address security vulnerabilities. Each release is designed to enhance the user experience, ensure optimal performance, and maintain the security and reliability of your test automation environment. + +In this section, you will find detailed release notes for each new version of ReportPortal. These notes provide a comprehensive overview of the updates, including descriptions of new features, improvements to current functionality, and bug fixes. Staying up to date with the latest releases allows you to take full advantage of ReportPortal’s capabilities, ensuring that your system is operating with the latest technology and best practices. + +Additionally, our release process includes critical security updates to fix vulnerabilities in the components used by ReportPortal. This ensures that your instance remains secure, protecting your data and maintaining the integrity of your test automation processes. + +Whether you're interested in new features, performance enhancements, or security patches, the Releases section is your go-to resource for understanding what’s new and how these updates can benefit your project. Keeping your system updated is essential for maintaining efficient and secure test automation, so be sure to review the release notes regularly. + +To test-drive ReportPortal’s functionality, you can review all the features introduced in each release on our [demo instance](https://demo.reportportal.io/). + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.2-organizations/saved-searches-filters/CreateFilters.mdx b/versioned_docs/version-26.2-organizations/saved-searches-filters/CreateFilters.mdx new file mode 100644 index 0000000000..8b2bdd2958 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/saved-searches-filters/CreateFilters.mdx @@ -0,0 +1,38 @@ +--- +sidebar_position: 1 +sidebar_label: Create filters +description: Create and manage saved search filters for launches. Use filters as independent objects or for creating widgets in your test execution reporting dashboard. +--- + +# Create filters + +Filters in the our test automation reporting dashboard are saved searches of the launches. + +Filters could be used as an independent object and for creating widgets as well. + +Permission: all users of the project despite their role. + +To create a filter, perform the following steps: + +1. Navigate to the "Launches" page. + +2. Click on the "Add Filter" button. + +3. The new tab will be opened. Now you can configure your filter. The unsaved filter is marked with an asterisk (\*). + +4. Add filtering parameters to have the relevant data. + +5. Click 'Save' button. + +6. 'ADD FILTER' popup will appear. + +7. Enter a new filter name (3-55 symbols long) and click "Add" button. + +Your new filter will be saved and shown on the "Filters" page. + + + +:::note +ReportPortal allows saving a filter on the "Launches" mode only. It's +impossible to save filters on the "Debug" tab. +::: diff --git a/versioned_docs/version-26.2-organizations/saved-searches-filters/FiltersPage.md b/versioned_docs/version-26.2-organizations/saved-searches-filters/FiltersPage.md new file mode 100644 index 0000000000..38d7eb28a4 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/saved-searches-filters/FiltersPage.md @@ -0,0 +1,34 @@ +--- +sidebar_position: 3 +sidebar_label: Filters page +description: Manage and organize saved searches on the filters page. View personal filters, streamline test data access, and focus on relevant information using test execution reporting tools. +--- + +# Filters page + +The **Filters page** in ReportPortal is a dedicated space for managing and organizing saved searches, providing a clear and accessible overview of all filters. This page shows your personal filters, making it easy to streamline test data access and focus on relevant information. + +The Filters page includes several key details for each filter: + +- **Filter name and description**
+ Each filter is labeled with a clear name and often a brief description, helping users quickly identify its purpose. + +- **Options**
+ Here, you’ll find the search criteria defined for each filter, showing how data will be sorted or prioritized when this filter is used. + +- **Owner**
+ The name of the team member who created the filter is displayed. + +- **Display on launches toggle**
+ This ON/OFF switch determines if the filter should be readily available on the Launches page. Activating this option makes the filter easily accessible for all users, while deactivating it keeps the filter private. + +- **Delete option**
+ Each filter has a delete icon, allowing users to remove unnecessary filters if no longer needed. + +To open launches based on a saved filter, click on the filter’s name. This action will open a new tab on the Launches page, pre-filtered according to the selected criteria, simplifying navigation through large datasets. + +This Filters page is the only location where filters can be permanently deleted from test automation results dashboard. To delete a filter, simply click the delete icon associated with it and confirm the action. Note that while this will remove the filter, it will not delete the test launches or results associated with it. + +By using the filters efficiently, you can improve test data organization, focus on specific issues or milestones, and better align test reporting with your project’s evolving requirements. + + diff --git a/versioned_docs/version-26.2-organizations/saved-searches-filters/ManageFilters.mdx b/versioned_docs/version-26.2-organizations/saved-searches-filters/ManageFilters.mdx new file mode 100644 index 0000000000..6ca0222d1f --- /dev/null +++ b/versioned_docs/version-26.2-organizations/saved-searches-filters/ManageFilters.mdx @@ -0,0 +1,73 @@ +--- +sidebar_position: 2 +sidebar_label: Manage filters +description: Manage saved filters with edit, copy, delete, and share operations. Organize filters for efficient test execution reporting and dashboard creation. +--- + +# Manage filters + +Filters feature is a base for data visualization in test automation because widgets are built on their basis. + +**OPERATIONS WITH FILTERS** + +After the filter is saved, there are some options to manage them. + +**EDIT FILTER** + +This option allows edit filter name and description. + +To edit a filter, perform the following steps: + +1. Open your filter from the tab on the "Launches" page. + +2. Click the "Edit" option on the tab menu. + +3. The Edit filter popup window will appear. + +4. Make changes. + +5. To save the updates, select the "Save" option from the filter context menu. + +Your changes for the filter will be saved. + + + +**CLONE** + +This option allows you to create a new tab with the same criteria. + +To clone an already existed filter, perform the following steps: + +1. Open any filter on the "Launches" page. + +2. Click the "Clone" option on the tab menu. + +3. Enter the unique name, description and submit. + +4. The content of filter will be the same as in original filter. + +**DISCARD** + +This option helps to reset unsaved filter changes. + +To discard unsaved changes, perform the following steps: + +1. Open any filter on the "Launches" page. + +2. Add new criteria to the filter options. + +3. Asterisk mark appears for the filter. + +4. Click 'Discard' to remove most recent changes. + +5. All unsaved changes are removed. + +6. Asterisk mark removed for the filter tab. + +**CLOSE** + +This option allows to close filter tab with all selected criteria. The option is available on the filter tab. + +**DELETE** option is available from 'Filters' page only. + + diff --git a/versioned_docs/version-26.2-organizations/saved-searches-filters/_category_.json b/versioned_docs/version-26.2-organizations/saved-searches-filters/_category_.json new file mode 100644 index 0000000000..466cb2ddef --- /dev/null +++ b/versioned_docs/version-26.2-organizations/saved-searches-filters/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "Saved searches (filters)", + "position": "14", + "link": {"type": "doc", "id": "index"} +} + diff --git a/versioned_docs/version-26.2-organizations/saved-searches-filters/index.md b/versioned_docs/version-26.2-organizations/saved-searches-filters/index.md new file mode 100644 index 0000000000..1d7934b192 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/saved-searches-filters/index.md @@ -0,0 +1,16 @@ +--- +title: Saved searches (filters) +description: Simplify filter management for your QA automation dashboard. Visit our Saved Searches section to streamline filter creation and optimization. +--- + +# Saved searches (filters) + +The **Saved searches (filters)** section in ReportPortal is designed to help you efficiently manage and organize your test data by creating and customizing filters. Filters provide a powerful way to quickly access the most relevant test results, allowing users to streamline their workflow and focus on the information that matters most. Whether you're looking to investigate specific test cases, analyze failure patterns, or track ongoing issues, filters help you concentrate on the data you need with just a few clicks. + +In this section, you'll find detailed guides that walk you through the process of creating new filters, customizing existing ones, and saving them for future use. You can set up filters based on various criteria available in ReportPortal, such as launch name, attributes, start time and other options. These filters can then be saved and reused, ensuring that you have instant access to the most important testing information without having to manually sort through large datasets every time. + +Filters allow you to organize complex test data more effectively, speeding up your analysis by isolating specific issues or areas of interest. By mastering the use of filters, you can enhance your test management practices, simplify report analysis, improve defect triage, and ensure a more efficient approach to handling large volumes of test data, ultimately boosting your overall productivity. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.2-organizations/terms-and-conditions/GoogleAnalyticsUsageByReportPortal.mdx b/versioned_docs/version-26.2-organizations/terms-and-conditions/GoogleAnalyticsUsageByReportPortal.mdx new file mode 100644 index 0000000000..6367554d48 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/terms-and-conditions/GoogleAnalyticsUsageByReportPortal.mdx @@ -0,0 +1,178 @@ +--- +sidebar_position: 2 +sidebar_label: Google Analytics usage by ReportPortal +description: Learn about Google Analytics usage in ReportPortal test automation reporting tools for web analytics and user experience improvement. +--- + +# Google Analytics usage by ReportPortal + +ReportPortal uses Google Analytics (GA) for web analytics capabilities. GA helps the ReportPortal Team to understand product usage and make ReportPortal more convenient and useful for our users. To address any concerns about the data we collect, we want to be transparent about which data is sent to GA, and assure you that no personal or confidential data is transferred. To be clear, we do not gather personal information at all through GA. In this article, we explain how Google Analytics works on ReportPortal, its benefits, and how you can turn it off if you want. + +## Google Analytics usage on ReportPortal UI + +We collect only the following data by using Google Analytics on ReportPortal UI: + +1. Device information: hardware model, operating system version, screen resolution, browser version. + +2. Behavior information: how user interacts with ReportPortal, where user clicks, what actions he or she does, app usage time. + +These analytics helps us to improve performance and user-friendliness. Based on analytics, for example, we can decide to write a new documentation or optimize our features and app navigation. + +:::note +We do not collect information that personally identifies you. We follow [privacy policy](https://privacy.epam.com/core/interaction/showpolicy?type=CommonPrivacyPolicy) in all cases. +::: + + + +## How to disable Google Analytics on ReportPortal UI + +You can turn off Google Analytics on ReportPortal UI as well. + +1. Log in to ReportPortal as Admin. + +2. Open Menu at the bottom and select “Administrate” section. + + + +3. Select “Server Settings”. + + + +4. Open “Analytics” tab. + +5. Uncheck “Help make ReportPortal better by automatically sending analytics to us” checkbox. + + + +:::note +You can enable Google Analytics if you check “Help make ReportPortal better by automatically sending analytics to us” checkbox. +::: +## Google Analytics usage on ReportPortal agents + +We collect only the following data by using Google Analytics on ReportPortal agents: + +1. Start of the Launch, and the calendar date of this event. + +2. ReportPortal SDK library name and it’s version, e.g., reportportal 5.0.6. + +3. ReportPortal Integration library (agent name), e.g., pytest-reportportal, version 5.0.11. + +4. Code Interpreter name, e.g., Python 3.6.9. + +We need this data to know what libraries and development platforms our users prefer. So, we can prioritize our work on agents in accordance to its actual usage. + + + +## How to disable Google Analytics gathering on ReportPortal agents + +### Basics + +At the nutshell you need to set `AGENT_NO_ANALYTICS` environment variable with any non-empty value. In Unix or Linux you +can use `export` command for that: +```shell +export AGENT_NO_ANALYTICS=1 +``` +For Windows systems there is analogue command `set`: +```shell +set AGENT_NO_ANALYTICS=1 +``` +Then you can run your tests in the same shell and analytics gathering will be disabled. + +To test that you actually have set the variable you can use `echo` command. + +Linux: +```shell +echo "${AGENT_NO_ANALYTICS}" +``` +Windows: +```shell +echo %AGENT_NO_ANALYTICS% +``` + +If you don't want to set that variable each time you start a shell, there are several technics you can use. + +### Constantly disabling analytics + +### Unix/Linux + +Everything what you export in `.bash_profile` file in your test user's home directory will be automatically set each +time you log in into console. To edit the file you can use `nano` - a simple text editor: +```shell +nano ~/.bash_profile +``` +Put export line somewhere in the file and hit `Ctrl+O` to save it and `Ctrl+X` to close. + +### Windows + +To set environment variable on Windows 10 family systems right-click on it icon in taskbar and choose `System`. In +opened window hit `Advanced system settings` in the right menu and then `Environment variables` button in opened +`System Properties` window. Click `New` button in `System variables` section, enter variable name and value and close +everything with `OK` button. The changes will be applied after the system restart. + +### Build systems + +Some build systems can set environment variables on their own we can use this feature to set the variable. + +### Gradle + +Gradle has `environment` keyword which sets variables for child processes, so all you need to do is to set it in `test` +task: +```groovy +test { + environment "AGENT_NO_ANALYTICS", "1" +} +``` + +### Maven + +`maven-surefire-plugin` has option to set environment variables for forked processes, so you can configure the plugin +accordingly: +```xml + + 4.0.0 + com.epam.reportportal.example + example-mute + 1.0-SNAPSHOT + + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.22.2 + + once + + 1 + + + + + + +``` + +### tox + +Python's tox automation tool also provides a way to set necessary variables with `setenv` parameter in `tox.ini` file: +```text +[testenv] +setenv = + AGENT_NO_ANALYTICS = 1 +``` + +### Docker + +If your tests are wrapped in a docker container you need to bypass this variable through command-line with `-e` flag: +```shell +docker run --rm -it \ + -e "AGENT_NO_ANALYTICS=1" + selenium/standalone-chrome:103.0 +``` +Or you can use `ENV` keyword in your `Dockerfile` when building the image: +```dockerfile +ENV AGENT_NO_ANALYTICS=1 +``` +Thanks to Google Analytics, we can deliver interesting and helpful features to ReportPortal. As a result, you will have effective working instruments and better customer support. diff --git a/versioned_docs/version-26.2-organizations/terms-and-conditions/PremiumFeatures.md b/versioned_docs/version-26.2-organizations/terms-and-conditions/PremiumFeatures.md new file mode 100644 index 0000000000..e0f2c6fe9b --- /dev/null +++ b/versioned_docs/version-26.2-organizations/terms-and-conditions/PremiumFeatures.md @@ -0,0 +1,17 @@ +--- +sidebar_position: 1 +sidebar_label: Premium Features +description: Explore ReportPortal premium features for enterprises, including SCIM, designed to scale continuous testing and streamline user management. +--- + +# Premium Features + +At ReportPortal, we understand that every enterprise's testing environment is unique, requiring tailored solutions that address specific needs. To cater to this demand, we've introduced our Premium Features, exclusively available to our Managed Services and SaaS subscription clients. + +Our Premium Features have been meticulously designed and developed with large-scale, enterprise-level needs in mind. They are the cornerstone for organizations seeking to establish true continuous testing within their operational setup. Whether it's the ability to navigate the complexities of testing at scale, or the demand for more granular insights to drive decision-making, these premium options are equipped to handle it all. + +We invite you to explore our Premium Features, understanding their objectives and benefits in detail on our documentation page. We are confident that you'll find the value they add to be well worth the investment. As always, we're here to answer any questions and assist you in getting the most out of your ReportPortal experience. + +**Available Premium Features:** + - [**SCIM Server feature**](/features/SCIMServerFeature) + - [**Test Executions**](/features/TestExecutions) diff --git a/versioned_docs/version-26.2-organizations/terms-and-conditions/_category_.json b/versioned_docs/version-26.2-organizations/terms-and-conditions/_category_.json new file mode 100644 index 0000000000..3c400b1075 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/terms-and-conditions/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "Terms & conditions", + "position": "25", + "link": {"type": "doc", "id": "index"} +} + diff --git a/versioned_docs/version-26.2-organizations/terms-and-conditions/img/GoogleAnalytics1.png b/versioned_docs/version-26.2-organizations/terms-and-conditions/img/GoogleAnalytics1.png new file mode 100644 index 0000000000..2a7982341c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/terms-and-conditions/img/GoogleAnalytics1.png differ diff --git a/versioned_docs/version-26.2-organizations/terms-and-conditions/img/GoogleAnalytics2.png b/versioned_docs/version-26.2-organizations/terms-and-conditions/img/GoogleAnalytics2.png new file mode 100644 index 0000000000..ba615c302b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/terms-and-conditions/img/GoogleAnalytics2.png differ diff --git a/versioned_docs/version-26.2-organizations/terms-and-conditions/img/GoogleAnalytics3.png b/versioned_docs/version-26.2-organizations/terms-and-conditions/img/GoogleAnalytics3.png new file mode 100644 index 0000000000..cfcb692783 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/terms-and-conditions/img/GoogleAnalytics3.png differ diff --git a/versioned_docs/version-26.2-organizations/terms-and-conditions/img/GoogleAnalytics4.png b/versioned_docs/version-26.2-organizations/terms-and-conditions/img/GoogleAnalytics4.png new file mode 100644 index 0000000000..0c1d6e791d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/terms-and-conditions/img/GoogleAnalytics4.png differ diff --git a/versioned_docs/version-26.2-organizations/terms-and-conditions/img/GoogleAnalytics5.png b/versioned_docs/version-26.2-organizations/terms-and-conditions/img/GoogleAnalytics5.png new file mode 100644 index 0000000000..eeb69284f7 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/terms-and-conditions/img/GoogleAnalytics5.png differ diff --git a/versioned_docs/version-26.2-organizations/terms-and-conditions/index.md b/versioned_docs/version-26.2-organizations/terms-and-conditions/index.md new file mode 100644 index 0000000000..8da7b5f9f2 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/terms-and-conditions/index.md @@ -0,0 +1,18 @@ +--- +title: Terms & conditions +description: Read Terms & Conditions for clear guidance on premium features and Google Analytics usage in our test automation reporting tool. +--- + +# Terms & conditions + +The **Terms & conditions** section provides essential information on the guidelines and requirements for using ReportPortal effectively. This section clarifies user responsibilities and boundaries, ensuring a transparent and secure experience. It helps set clear expectations about how ReportPortal operates, including details on data usage, premium features, and other key aspects relevant to both free and premium users. + +A key part of this section is a thorough explanation of how **Google Analytics** functions within ReportPortal’s test results dashboard. This ensures transparency by detailing how data is collected and used responsibly, providing users with peace of mind regarding data privacy. ReportPortal employs Google Analytics to help track platform usage and identify areas for improvement without impacting confidentiality of your test data. + +Another important aspect covered in this section is the **SCIM Server feature** that simplifies and automates user identity and access management. It serves as a bridge between your identity provider (such as Azure AD or Okta) and ReportPortal, ensuring seamless synchronization of user accounts, roles, and project memberships. + +By reviewing this section, users can gain a clear understanding of ReportPortal’s policies, enabling compliance and making it easier to leverage the platform’s full potential. The Terms & conditions help users make informed decisions and enjoy a streamlined experience, tailored to the needs of each project and organization. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.2-organizations/test-executions/img/AddColumn1.png b/versioned_docs/version-26.2-organizations/test-executions/img/AddColumn1.png new file mode 100644 index 0000000000..9985cdca5a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/test-executions/img/AddColumn1.png differ diff --git a/versioned_docs/version-26.2-organizations/test-executions/img/AddColumn2.png b/versioned_docs/version-26.2-organizations/test-executions/img/AddColumn2.png new file mode 100644 index 0000000000..98b77e69fc Binary files /dev/null and b/versioned_docs/version-26.2-organizations/test-executions/img/AddColumn2.png differ diff --git a/versioned_docs/version-26.2-organizations/test-executions/img/Attributes1.png b/versioned_docs/version-26.2-organizations/test-executions/img/Attributes1.png new file mode 100644 index 0000000000..715f80fd2d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/test-executions/img/Attributes1.png differ diff --git a/versioned_docs/version-26.2-organizations/test-executions/img/Attributes2.png b/versioned_docs/version-26.2-organizations/test-executions/img/Attributes2.png new file mode 100644 index 0000000000..13b8521aaa Binary files /dev/null and b/versioned_docs/version-26.2-organizations/test-executions/img/Attributes2.png differ diff --git a/versioned_docs/version-26.2-organizations/test-executions/img/Cancel.png b/versioned_docs/version-26.2-organizations/test-executions/img/Cancel.png new file mode 100644 index 0000000000..c928c95828 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/test-executions/img/Cancel.png differ diff --git a/versioned_docs/version-26.2-organizations/test-executions/img/Collapse.png b/versioned_docs/version-26.2-organizations/test-executions/img/Collapse.png new file mode 100644 index 0000000000..ebb482237c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/test-executions/img/Collapse.png differ diff --git a/versioned_docs/version-26.2-organizations/test-executions/img/CustomColumn1.png b/versioned_docs/version-26.2-organizations/test-executions/img/CustomColumn1.png new file mode 100644 index 0000000000..becf148f05 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/test-executions/img/CustomColumn1.png differ diff --git a/versioned_docs/version-26.2-organizations/test-executions/img/CustomColumn2.png b/versioned_docs/version-26.2-organizations/test-executions/img/CustomColumn2.png new file mode 100644 index 0000000000..c4eb7def96 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/test-executions/img/CustomColumn2.png differ diff --git a/versioned_docs/version-26.2-organizations/test-executions/img/CustomColumn3.png b/versioned_docs/version-26.2-organizations/test-executions/img/CustomColumn3.png new file mode 100644 index 0000000000..bdff140b76 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/test-executions/img/CustomColumn3.png differ diff --git a/versioned_docs/version-26.2-organizations/test-executions/img/Expand.png b/versioned_docs/version-26.2-organizations/test-executions/img/Expand.png new file mode 100644 index 0000000000..f5f6e5601e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/test-executions/img/Expand.png differ diff --git a/versioned_docs/version-26.2-organizations/test-executions/img/LaunchNames.png b/versioned_docs/version-26.2-organizations/test-executions/img/LaunchNames.png new file mode 100644 index 0000000000..2eb0093b50 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/test-executions/img/LaunchNames.png differ diff --git a/versioned_docs/version-26.2-organizations/test-executions/img/LaunchStartTime.png b/versioned_docs/version-26.2-organizations/test-executions/img/LaunchStartTime.png new file mode 100644 index 0000000000..ca4f72af4c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/test-executions/img/LaunchStartTime.png differ diff --git a/versioned_docs/version-26.2-organizations/test-executions/img/LaunchesReported.png b/versioned_docs/version-26.2-organizations/test-executions/img/LaunchesReported.png new file mode 100644 index 0000000000..c38cde00fe Binary files /dev/null and b/versioned_docs/version-26.2-organizations/test-executions/img/LaunchesReported.png differ diff --git a/versioned_docs/version-26.2-organizations/test-executions/img/NoResults.png b/versioned_docs/version-26.2-organizations/test-executions/img/NoResults.png new file mode 100644 index 0000000000..1333b61335 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/test-executions/img/NoResults.png differ diff --git a/versioned_docs/version-26.2-organizations/test-executions/img/Refresh.png b/versioned_docs/version-26.2-organizations/test-executions/img/Refresh.png new file mode 100644 index 0000000000..2b75e25c6e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/test-executions/img/Refresh.png differ diff --git a/versioned_docs/version-26.2-organizations/test-executions/img/RemoveColumn.png b/versioned_docs/version-26.2-organizations/test-executions/img/RemoveColumn.png new file mode 100644 index 0000000000..452f4bd33a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/test-executions/img/RemoveColumn.png differ diff --git a/versioned_docs/version-26.2-organizations/test-executions/img/Reorder.png b/versioned_docs/version-26.2-organizations/test-executions/img/Reorder.png new file mode 100644 index 0000000000..4406161bd1 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/test-executions/img/Reorder.png differ diff --git a/versioned_docs/version-26.2-organizations/test-executions/img/ResetToDefault.png b/versioned_docs/version-26.2-organizations/test-executions/img/ResetToDefault.png new file mode 100644 index 0000000000..c458b025a4 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/test-executions/img/ResetToDefault.png differ diff --git a/versioned_docs/version-26.2-organizations/test-executions/img/TestCasesFilter1.png b/versioned_docs/version-26.2-organizations/test-executions/img/TestCasesFilter1.png new file mode 100644 index 0000000000..0b5157a081 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/test-executions/img/TestCasesFilter1.png differ diff --git a/versioned_docs/version-26.2-organizations/test-executions/img/TestCasesFilter2.png b/versioned_docs/version-26.2-organizations/test-executions/img/TestCasesFilter2.png new file mode 100644 index 0000000000..cf8bef7713 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/test-executions/img/TestCasesFilter2.png differ diff --git a/versioned_docs/version-26.2-organizations/test-executions/img/TestName.png b/versioned_docs/version-26.2-organizations/test-executions/img/TestName.png new file mode 100644 index 0000000000..4b048f4a53 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/test-executions/img/TestName.png differ diff --git a/versioned_docs/version-26.2-organizations/test-executions/index.mdx b/versioned_docs/version-26.2-organizations/test-executions/index.mdx new file mode 100644 index 0000000000..327fc9b199 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/test-executions/index.mdx @@ -0,0 +1,222 @@ +--- +sidebar_position: 12 +sidebar_label: Test executions +description: Manage and analyze test executions across multiple launches with powerful filters, customizable columns, and fast data refresh. +--- + +# Test executions + +On the [Test Executions](/features/TestExecutions) page, you can conveniently view and manage individual test cases across multiple launches without navigating through hierarchical launch structures. + +## Page layout + +### No launches + +For a new project, or if no launches have been reported yet, "No results" is displayed. + + + +### Launches reported + +The "Last 7 days" option is pre-selected in the "Launch start time" dropdown, and the following columns are displayed in the Search results table: + +* Name +* Start time +* Status +* Defect type +* Defect comment + +At the top of the page, the following filtering options are available: + +* Launch start time +* Launch names +* Launch attributes + +Additionally, "Refresh" button is displayed. + + + +You can expand or collapse all rows in the Search Results table by clicking on the corresponding icon. + + + +In addition, you can expand or collapse an individual row as needed. + +:::note +The limit for the search results is 10.000 latest test cases. +::: + + + +## Launch level filtering + +You can filter test executions by the characteristics of the launch to which the tests belong. You can use one or more criteria. + +### Launch start time + +You can filter test executions by Launch start time using dropdown. + +In this case only tests which belong to the launches started in the specified range will be displayed regardless the launch status. + +:::note +Test of the launches in "In Progress" status will also be displayed. +::: + +Available options: + +* Today +* Last 2 Days +* Last 3 Days +* Last 7 Days +* Last 30 Days +* Last 60 Days +* Last 90 Days +* Custom range (date picker) + + + +### Launch names + +You can filter test executions by Launch names. In this case, only tests which belong to specified launches will be displayed. + + + +### Launch attributes + +You can filter test executions by one or more launch attributes. Only tests which belong to launches with all the specified attributes will be displayed. + +:::note +You can filter launch attributes in three ways: by **key**, by **value**, or by a **key:value** pair. +::: + + + + + + + +## Test level filtering + +You can apply both the launch level filters and the test level filters at the same time. + +### Search by test name + +You can search tests by the name. + + + +### Test cases filter + +You can filter test cases using the following criteria: + +* Status +* Defect type +* Start time +* Test attributes +* Description +* Defect comment +* Issue in BTS +* Method type +* Retry +* Pattern name +* Ignore in AA +* Analyzed by AA + +After you apply the filter, on the Test Executions page the tests will be filtered and the filter icon will indicate how many filter criteria are currently applied to the tests. When at least one test filter criterion is applied, the "Clear all" button becomes enabled in the Filter modal window, allowing you to clear the selected criteria. + + + + + + + +## Customize columns + +You can customize the columns displayed on the Test Execution page by adding new columns from a predefined list, removing existing columns, and reordering them. + +### Add New Column + +1. Open Test Executions page. +2. Click the "Customize Columns" button. +3. Click "Add Column" button. +4. Select a column from the dropdown and confirm. +5. Click the "Save" button. + + + + + +### Remove Column + +1. Open Test Executions page. +2. Click the "Customize Columns" button. +3. Click the "X" button next to a column name. +4. Click the "Save" button. + + + +### Reorder Columns + +1. Open Test Executions page. +2. Click the "Customize Columns" button. +3. Drag and drop a column name to reorder the list. +4. Click the "Save" button. + + + +### Cancel Changes + +1. Open Test Executions page. +2. Click the "Customize Columns" button. +3. Make some changes (for example, add new column). +4. Click the "Cancel" button. + + + +### Reset Columns + +1. Open Test Executions page. +2. Click the "Customize Columns" button. +3. Make some changes (for example, add new column). +4. Click the "Reset to Default" button. +5. Click the "Save" button. + + + +### Add custom column + +1. Open Test Executions page. +2. Click the "Customize Columns" button. +3. Click the "Add Column" button. +4. Select "Custom attribute" option from the dropdown. +5. Specify the key. +6. Click the "Tick" button. + + + +7. Click the "Save" button. + + + +The attribute key becomes the column header, and the attribute values are populated for each item. + +:::note +You can create multiple "Custom attribute" columns. +::: + + + + + +## Refresh + +You can update the list of test executions without reconfiguring filters. + +When new launches or test items that meet the active filter conditions (Launch level and Test level) are reported, using the "Refresh" button updates the Search results table to reflect the most recent data. + +To reload data on the Test Executions page: + +1. Open Test Executions page. +2. Click the "Refresh" button. + + diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/Attributes.png b/versioned_docs/version-26.2-organizations/tutorial/img/Attributes.png new file mode 100644 index 0000000000..e8a5e5293a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/Attributes.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/AutoAnalysis1.png b/versioned_docs/version-26.2-organizations/tutorial/img/AutoAnalysis1.png new file mode 100644 index 0000000000..c8f3113a81 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/AutoAnalysis1.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/AutoAnalysis2.png b/versioned_docs/version-26.2-organizations/tutorial/img/AutoAnalysis2.png new file mode 100644 index 0000000000..5ac2d66f9f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/AutoAnalysis2.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/AutoAnalysis3.png b/versioned_docs/version-26.2-organizations/tutorial/img/AutoAnalysis3.png new file mode 100644 index 0000000000..ba9977d415 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/AutoAnalysis3.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/AutoAnalysis4.png b/versioned_docs/version-26.2-organizations/tutorial/img/AutoAnalysis4.png new file mode 100644 index 0000000000..19596ac36c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/AutoAnalysis4.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/FilterTestExecutions.png b/versioned_docs/version-26.2-organizations/tutorial/img/FilterTestExecutions.png new file mode 100644 index 0000000000..e6b837fc1e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/FilterTestExecutions.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/Filters.png b/versioned_docs/version-26.2-organizations/tutorial/img/Filters.png new file mode 100644 index 0000000000..0b51b80fe6 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/Filters.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/FlakyTests1.png b/versioned_docs/version-26.2-organizations/tutorial/img/FlakyTests1.png new file mode 100644 index 0000000000..c65fba04a2 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/FlakyTests1.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/FlakyTests2.png b/versioned_docs/version-26.2-organizations/tutorial/img/FlakyTests2.png new file mode 100644 index 0000000000..e46b3d71de Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/FlakyTests2.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/GenerateFirstData.png b/versioned_docs/version-26.2-organizations/tutorial/img/GenerateFirstData.png new file mode 100644 index 0000000000..3429d46697 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/GenerateFirstData.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/HistoricalTrends1.png b/versioned_docs/version-26.2-organizations/tutorial/img/HistoricalTrends1.png new file mode 100644 index 0000000000..fc89f31fe0 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/HistoricalTrends1.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/HistoricalTrends2.png b/versioned_docs/version-26.2-organizations/tutorial/img/HistoricalTrends2.png new file mode 100644 index 0000000000..db5df9f3e7 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/HistoricalTrends2.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/HistoricalTrends3.png b/versioned_docs/version-26.2-organizations/tutorial/img/HistoricalTrends3.png new file mode 100644 index 0000000000..1cf70cbf50 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/HistoricalTrends3.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/HistoricalTrends4.png b/versioned_docs/version-26.2-organizations/tutorial/img/HistoricalTrends4.png new file mode 100644 index 0000000000..1dca4af455 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/HistoricalTrends4.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/InvestigatedPercentage1.png b/versioned_docs/version-26.2-organizations/tutorial/img/InvestigatedPercentage1.png new file mode 100644 index 0000000000..c32c87058b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/InvestigatedPercentage1.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/InvestigatedPercentage2.png b/versioned_docs/version-26.2-organizations/tutorial/img/InvestigatedPercentage2.png new file mode 100644 index 0000000000..58fcb3a839 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/InvestigatedPercentage2.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/InviteUsers.png b/versioned_docs/version-26.2-organizations/tutorial/img/InviteUsers.png new file mode 100644 index 0000000000..889e753868 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/InviteUsers.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/LaunchStatisticsChart1.png b/versioned_docs/version-26.2-organizations/tutorial/img/LaunchStatisticsChart1.png new file mode 100644 index 0000000000..fbe5b29e20 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/LaunchStatisticsChart1.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/LaunchStatisticsChart2.png b/versioned_docs/version-26.2-organizations/tutorial/img/LaunchStatisticsChart2.png new file mode 100644 index 0000000000..e1964bcfb6 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/LaunchStatisticsChart2.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/MLSuggestions.png b/versioned_docs/version-26.2-organizations/tutorial/img/MLSuggestions.png new file mode 100644 index 0000000000..11d3f699e4 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/MLSuggestions.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/MakeDecision.png b/versioned_docs/version-26.2-organizations/tutorial/img/MakeDecision.png new file mode 100644 index 0000000000..f6eb24fe93 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/MakeDecision.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/MostTime1.png b/versioned_docs/version-26.2-organizations/tutorial/img/MostTime1.png new file mode 100644 index 0000000000..20e08dbb5f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/MostTime1.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/MostTime2.png b/versioned_docs/version-26.2-organizations/tutorial/img/MostTime2.png new file mode 100644 index 0000000000..92a093bfdd Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/MostTime2.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/NestedSteps.png b/versioned_docs/version-26.2-organizations/tutorial/img/NestedSteps.png new file mode 100644 index 0000000000..b41d1204a0 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/NestedSteps.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/OverallStatistics1.png b/versioned_docs/version-26.2-organizations/tutorial/img/OverallStatistics1.png new file mode 100644 index 0000000000..ebd86f870a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/OverallStatistics1.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/OverallStatistics2.png b/versioned_docs/version-26.2-organizations/tutorial/img/OverallStatistics2.png new file mode 100644 index 0000000000..67502c1b3c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/OverallStatistics2.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/PatternAnalysis1.png b/versioned_docs/version-26.2-organizations/tutorial/img/PatternAnalysis1.png new file mode 100644 index 0000000000..dda0ca05a4 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/PatternAnalysis1.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/PatternAnalysis2.png b/versioned_docs/version-26.2-organizations/tutorial/img/PatternAnalysis2.png new file mode 100644 index 0000000000..b159ab233c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/PatternAnalysis2.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/PatternAnalysis3.png b/versioned_docs/version-26.2-organizations/tutorial/img/PatternAnalysis3.png new file mode 100644 index 0000000000..fca00eaa70 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/PatternAnalysis3.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/PatternAnalysis4.png b/versioned_docs/version-26.2-organizations/tutorial/img/PatternAnalysis4.png new file mode 100644 index 0000000000..251de9ebf7 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/PatternAnalysis4.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/PatternAnalysis5.png b/versioned_docs/version-26.2-organizations/tutorial/img/PatternAnalysis5.png new file mode 100644 index 0000000000..05c28eaa0b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/PatternAnalysis5.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/PatternAnalysis6.png b/versioned_docs/version-26.2-organizations/tutorial/img/PatternAnalysis6.png new file mode 100644 index 0000000000..7d23faadcf Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/PatternAnalysis6.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/PostLink.png b/versioned_docs/version-26.2-organizations/tutorial/img/PostLink.png new file mode 100644 index 0000000000..486687df23 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/PostLink.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/ProfileAttributes.png b/versioned_docs/version-26.2-organizations/tutorial/img/ProfileAttributes.png new file mode 100644 index 0000000000..79534c5619 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/ProfileAttributes.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/QualityGate1.png b/versioned_docs/version-26.2-organizations/tutorial/img/QualityGate1.png new file mode 100644 index 0000000000..656c08cf39 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/QualityGate1.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/QualityGate2.png b/versioned_docs/version-26.2-organizations/tutorial/img/QualityGate2.png new file mode 100644 index 0000000000..a204340f83 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/QualityGate2.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/QualityGate3.png b/versioned_docs/version-26.2-organizations/tutorial/img/QualityGate3.png new file mode 100644 index 0000000000..663c15c481 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/QualityGate3.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/QualityGate4.png b/versioned_docs/version-26.2-organizations/tutorial/img/QualityGate4.png new file mode 100644 index 0000000000..0b581e6de0 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/QualityGate4.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/QualityGate5.png b/versioned_docs/version-26.2-organizations/tutorial/img/QualityGate5.png new file mode 100644 index 0000000000..e9ff83041f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/QualityGate5.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/TestAttributes.png b/versioned_docs/version-26.2-organizations/tutorial/img/TestAttributes.png new file mode 100644 index 0000000000..774b81b66a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/TestAttributes.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/TriageTestFailures.png b/versioned_docs/version-26.2-organizations/tutorial/img/TriageTestFailures.png new file mode 100644 index 0000000000..1b960f9cb4 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/TriageTestFailures.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/UseCase1-1.png b/versioned_docs/version-26.2-organizations/tutorial/img/UseCase1-1.png new file mode 100644 index 0000000000..59ee778547 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/UseCase1-1.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/UseCase1-2.png b/versioned_docs/version-26.2-organizations/tutorial/img/UseCase1-2.png new file mode 100644 index 0000000000..165f6d9c55 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/UseCase1-2.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/UseCase1-3.png b/versioned_docs/version-26.2-organizations/tutorial/img/UseCase1-3.png new file mode 100644 index 0000000000..4e893f8da6 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/UseCase1-3.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/UseCase1-4.png b/versioned_docs/version-26.2-organizations/tutorial/img/UseCase1-4.png new file mode 100644 index 0000000000..dcaa12f328 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/UseCase1-4.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/UseCase2-1.png b/versioned_docs/version-26.2-organizations/tutorial/img/UseCase2-1.png new file mode 100644 index 0000000000..17ffad061e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/UseCase2-1.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/UseCase2-2.png b/versioned_docs/version-26.2-organizations/tutorial/img/UseCase2-2.png new file mode 100644 index 0000000000..e39bd49192 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/UseCase2-2.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/UseCase2-3.png b/versioned_docs/version-26.2-organizations/tutorial/img/UseCase2-3.png new file mode 100644 index 0000000000..d95a149000 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/UseCase2-3.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/UseCase2-4.png b/versioned_docs/version-26.2-organizations/tutorial/img/UseCase2-4.png new file mode 100644 index 0000000000..7a8255a319 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/UseCase2-4.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/UseCase3-1.png b/versioned_docs/version-26.2-organizations/tutorial/img/UseCase3-1.png new file mode 100644 index 0000000000..4d2566f79b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/UseCase3-1.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/UseCase3-2.png b/versioned_docs/version-26.2-organizations/tutorial/img/UseCase3-2.png new file mode 100644 index 0000000000..93780738bf Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/UseCase3-2.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/img/UseCase3-3.png b/versioned_docs/version-26.2-organizations/tutorial/img/UseCase3-3.png new file mode 100644 index 0000000000..18c51e6854 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/tutorial/img/UseCase3-3.png differ diff --git a/versioned_docs/version-26.2-organizations/tutorial/index.mdx b/versioned_docs/version-26.2-organizations/tutorial/index.mdx new file mode 100644 index 0000000000..d4ad3b4305 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/tutorial/index.mdx @@ -0,0 +1,275 @@ +--- +sidebar_position: 3 +sidebar_label: 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. +--- + +# Tutorial + +## Overview + +The goal of this tutorial is to introduce all ReportPortal capabilities. Along the way, you'll learn how to use ReportPortal features and how to get the most out of them, as well as expert tips for using our test automation results dashboard. + +## How to explore ReportPortal without installation + +One day you found ReportPortal which promises to simplify the analysis of failed tests and bring many more benefits. + +“Really? I don’t believe it”, – your first reaction. + +Do you just want to see how ReportPortal works to make sure you need it? It is easy! Just visit our [Demo instance](https://demo.reportportal.io/ui/) and use default ReportPortal Demo credentials for login: + +``` +login: default + +password: 1q2w3e +``` + +Or you can use a button "Login with GitHub" to login. + +## How to deploy ReportPortal instance + +You tried the demo session. You are impressed with ReportPortal features / possibilities and decided to install a ReportPortal. Excellent! Visit our detailed documentation on how deploy ReportPortal: +* [with Kubernetes](/installation-steps/DeployWithKubernetes) +* [with Docker](/installation-steps/DeployWithDocker) + +Please also check the [technical requirements for your system](/installation-steps/HardwareRequirements) + +If you don’t want to deal with technical details, we will be happy to [assist you](https://reportportal.io/pricing/saas). + +## How to invite Team to ReportPortal + +Finally, you logged into ReportPortal. And you see just empty tabs... Looks confusing for the first step. What can we do to get started? + +Let’s start by inviting your team members. You can also do it as a final step, but it would be nice to investigate ReportPortal together. + +In order to add other users to ReportPortal you can send invitations via email. To make sure that the Email service is configured, please follow the next steps (as an admin user): [E-mail server configuration](/plugins/notifications/EmailServer). Once emailing is configured, you can either [invite new users](/admin-panel/AllUsersPage#invite-user-on-the-all-users-page) or [create a new user](/admin-panel/AllUsersPage#add-user) in the project. + +After this step you will have emailing capabilities enabled, and several more users invited to ReportPortal. + + + +## How to generate first data in ReportPortal + +The main section for work with ReportPortal is Launches tab in the left menu. But Launches table is empty and it’s hard to understand what ReportPortal can do and what to do next. + +[Generate demo data](/configuration/ProjectSettings#demo-data) feature can help you with this, by generating a set of demo launches (test executions), filters and dashboards. + + + +Once generated, you will see 5 launches (each Launch is equivalent to a testing session, or testing execution, or one Jenkins job). On the Filters tab you will find 1 filter. And Dashboards will have a Demo dashboard with visualizations/widgets built on top of the data from launches. + +Let’s understand how ReportPortal works based on demo data, and later we can return to the upload of your actual data from your testing frameworks. You can [navigate to this section](/tutorial/#how-to-add-test-results-to-reportportal) right now if you wish. + +## How to triage test failures with ReportPortal + +So far you have Demo launches in ReportPortal. You see the list of test executions on the Launches page with Total/Passed/Failed/Skipped numbers of test cases, and some of the issues are already sorted: Product Bug, Auto Bug, System Issue. But some issues required the attention of engineers, and they are marked with the “To Investigate” flag. + + + +The next step and the main goal for QA engineers is defect triage. This means opening each test case, identifying the root of the failure reason, and categorizing/associating it with a particular defect type. We call this action [“Make decision”](/analysis/ManualAnalysis). + + + +Based on test results, you can make decisions on further steps to improve your product. For example, you can arrange a call with a Development Team Leader to discuss bug fixing, if you have a lot of Product Bugs. + +In case of a large number of System Issues, you can ask a DevOps engineer to fix the environment or to review the testing infrastructure. Thus, you won‘t waste your team's effort and time by receiving failed reports due to an inconsistent environment. + +If you have a lot of Automation Bugs, put more effort into the test cases stabilization, and convert test automation (flaky) fails into valuable test cases, which will test your application for real. + +Moreover, you can post and link issues in just a few clicks using Bug Tracking System plugins: + +* [Jira Server](/plugins/bug-tracking/AtlassianJiraServer) +* [Jira Cloud](/plugins/bug-tracking/AtlassianJiraCloud) +* [Azure DevOps](/plugins/bug-tracking/AzureDevOps) +* [Rally](/plugins/bug-tracking/Rally) +* [GitLab](/plugins/bug-tracking/GitLab) +* [Monday](/plugins/bug-tracking/Monday) + + + +## How to filter test executions in ReportPortal + +To distinguish executions by type and focus only on required or related to your team today, you can use filters. Filters have “tab” capabilities, so you can easily navigate between different selections. You can filter by different criteria like launch name, description, number of failed or passed test cases, attributes, etc. + + + + + +## How to add more attributes for filtering launches in ReportPortal + +There is also a possibility to filter by attributes. You can find an example of setting attributes in your [profile](/user-account/EditPersonalInformation). You can include them in the parameters of automation, then additional attributes will appear under the Launch name, and you can filter test executions by these attributes as well. + + + + + +## How to visualize test results in ReportPortal + +So, you’ve separated your own test data from others. Now let’s [visualize our test results](https://reportportal.io/blog/test-results-visualization). Navigate to the Dashboards tab and open the Demo Dashboard. Here you can see basic visualizations that will help you understand the state of the product. + +You can also create new Dashboards. Since managers love charts, [let’s practice building some self-updated charts](https://youtu.be/CMDa5ZUUOh0?si=B_QnhZMZbhHBs4Cz)! And let them see the actual statistics and value of your test automation along with you, at any given moment of the time, since dashboards and widgets will be updated in real-time. +The best widget to start from is [Investigated percentage of launches](/dashboards-and-widgets/InvestigatedPercentageOfLaunches) which shows how well the QA team analyzes failures. + + + + + +Once QA team categorized all issues, we can understand why automation tests fail. Create [Launch statistics chart](/dashboards-and-widgets/LaunchStatisticsChart) widget for that. It shows the reasons of failures, for example, broken environment, outdated tests, product bugs. + + + + + +The next step can be creating the [Overall statistics chart](/dashboards-and-widgets/OverallStatistics) to define the Total test cases number and how many of them are Passed/Failed/Skipped. This widget can be applied for all launches or for the latest launches only. + + + + + +We've reviewed basic widgets. How can I get some insights from launches? Our suggestion is to create a [Flaky test cases](/dashboards-and-widgets/FlakyTestCasesTableTop50) table to find tests that often change status from passed to failed in different launches. These unstable tests do not give any confidence. The widget allows you to identify them so that you can pay special attention to them and fix them faster. + + + + + +Next, you might want to understand how long it takes to pass each test case. [Most time-consuming test cases](/dashboards-and-widgets/MostTimeConsumingTestCasesWidgetTop20) widget helps to find the longest scenarios. + + + + + +## How to use ML power of ReportPortal + +[ML suggestions](/analysis/MLSuggestions) feature prompts similar tests and defect types they have. In this way we don’t waste time re-reading the log but use ML hints instead. + +ML suggestions analysis is running every time you enter "Make decision" editor. ML suggestions are executed for all test items no matter what defect type they currently have. + + + +## How to use Pattern Analysis + +[Pattern Analysis](/analysis/PatternAnalysis) feature helps to find static repeating patterns within automation. For example, you know that a 404 error in your application might be caused by a specific product bug. Create the rule with a problem phrase, launch a test run, and Pattern Analysis will find all failed items which have known patterns in error logs. This allows you to draw a quick conclusion. + + + + + + + + + + + + + +## How to run Auto-Analysis in ReportPortal + +ReportPortal has [Auto-Analysis](/analysis/AutoAnalysisOfLaunches) feature which makes it possible for the application to independently check and perform some of the routine tasks. + +When you have test executions on the Launches page, you might need to analyze them automatically using ML. You can **switch ON Auto-Analysis in the settings** – then it will start as soon as any launch finishes. Auto-Analysis takes a part of your routine work and defines the reason for the test item failure based on the previous launches and sets: a defect type; a link to BTS (in case it exists); comment (in case it exists). As a result, you save time, and you can create new test cases instead of analyzing test results. + + + +You can **run Auto-Analysis manually** as well. + + + + + +When the test item is analyzed by ReportPortal, a label “AA” is set on the test item on a Step Level. + + + +## How to see the historical trend of the causes of falls + +And now let's build a more detailed “Launch statistics chart” widget with the historical changes in tests results. So, I can see how the results of my launches have changed over time. + +**Use case** + +Goal: Create a widget to show historical changes in Passed/Failed test cases in my API tests. + +Follow the instructions below to create this [Launch statistics chart](/dashboards-and-widgets/LaunchStatisticsChart). + + + +Here you can see the historical distribution of your test results: there are Passed or Failed tests. + + + +Instead of just Failed tests, you can see the dynamics of the total number of Product bugs, Automation bugs, System issues and No Defect. + + + +In this way, you see the historical trend of the causes of falls. + + + +## How to use nested steps and attributes in ReportPortal + +Usually, you see the results of automation as a carpet of error logs, and only an automation engineer can understand what is happening inside. Adding nested steps ([Java](https://github.com/reportportal/client-java/wiki/Nested-steps), [Python](https://github.com/reportportal/client-Python/wiki/Nested-steps)) allows applying a one-time change in the test code to make a logical grouping of steps and make these error logs more readable for the whole team. + + + +You can also use [attributes](https://github.com/reportportal/client-java/wiki/Test-item-attributes) on any level (launch/suite/test/step) to provide more contextual information. + + + +## How to evaluate product health with ReportPortal + +You can create a [“Component health check”](/dashboards-and-widgets/ComponentHealthCheck) widget based on attributes to understand which components do not work well, and which areas we need to pay more attention to. + +**Use case 1** + +**Goal:** define which features are affected by failed scenarios. + + + +You can see scenarios on the first screenshot. + + + +Select failed scenario to see which features were affected. + + + +Finally, let’s see what is the priority of the failed test cases. + + + +**Use case 2** + +**Goal:** define the priority of failed test cases. + + + +You can see that failures occurred in test cases with critical priority. + + + +Select Critical to understand which operating system is having problems. + + + +Next, select Android to see the list of features that need more attention. + + + +**Use case 3** + +**Goal:** define state of test cases on mobile devices. + + + +On the screenshot below you can see that our trouble spot is Android. + + + +You can go to the test cases level and see what problems they had. + + + +## How to add test results to ReportPortal + +You have checked demo test results, dashboards and widgets. And now you want to see your real data in ReportPortal. + +ReportPortal is a TestOps service that integrates with your Test Framework, listens to events and visualizes test results. You cannot execute results right from ReportPortal, but you can [integrate ReportPortal with a Test Framework](/log-data-in-reportportal/test-framework-integration/) or [Implement own integration](/log-data-in-reportportal/ImplementOwnIntegration). diff --git a/versioned_docs/version-26.2-organizations/user-account/DataRetentionProcedure.md b/versioned_docs/version-26.2-organizations/user-account/DataRetentionProcedure.md new file mode 100644 index 0000000000..e98abde0ec --- /dev/null +++ b/versioned_docs/version-26.2-organizations/user-account/DataRetentionProcedure.md @@ -0,0 +1,57 @@ +--- +sidebar_position: 4 +sidebar_label: Data retention procedure +description: Configure data retention periods for PII data in ReportPortal. Set individual retention durations and manage data lifecycle using test execution reporting. +--- + +# Data retention procedure + +Starting from version 23.2, ReportPortal introduces an option to establish a retention period for collected Personally Identifiable Information (PII) data during instance configuration. This configuration allows for setting an individual retention duration for the instance in days, such as N=90, 180, 540 or any other number of days. + +**Docker** + +To activate data retention, add the following environment variables to Service Jobs: + +``` +# Int (days) +RP_ENVIRONMENT_VARIABLE_CLEAN_EXPIREDUSER_RETENTIONPERIOD: + +# CRON +RP_ENVIRONMENT_VARIABLE_CLEAN_EXPIREDUSER_CRON: +RP_ENVIRONMENT_VARIABLE_NOTIFICATION_EXPIREDUSER_CRON: +``` + +**Kubernetes** + +Fill in Service Jobs values in the [values.yaml](https://github.com/reportportal/kubernetes/blob/master/reportportal/values.yaml) + +``` +servicejobs: +coreJobs: + # Int (days) + notifyExpiredUserCron: + + # CRON + cleanExpiredUserCron: + cleanExpiredUserRetention: +``` + +If the data retention option is enabled but a specific number of days for deleting inactive users is not specified, no deletions will occur. In the case of specifying 0 or a negative value, an error will be displayed in the logs. + +When the data retention option is activated, the job will run daily to identify inactive users and obfuscate their data. + +Inactive users are defined as follows: + +1. Users who have not logged in for N days. + +2. Users who have not reported testing data for N days. + +Users are only classified as inactive if both conditions are satisfied. + +In cases where a user logs in but doesn’t submit any reports, they are not deleted as the second condition isn’t fulfilled. Similarly, if a user has not logged in but has submitted reports, they are still considered active. + +Before performing deletions, the system sends out email notifications as follows: notification №1 is dispatched to inactive users N-60 days before deletion, notification №2 is sent N-30 days prior, and notification №3 is sent 1 day before obfuscation. Notifications about account deletion are also sent by the system. + +Users will be able to return whenever they are invited to the project. + +In summary, a data retention policy optimizes resources and helps create a more efficient, secure, and effective environment for data management, which fosters business success. diff --git a/versioned_docs/version-26.2-organizations/user-account/DeleteAccount.mdx b/versioned_docs/version-26.2-organizations/user-account/DeleteAccount.mdx new file mode 100644 index 0000000000..b34904915f --- /dev/null +++ b/versioned_docs/version-26.2-organizations/user-account/DeleteAccount.mdx @@ -0,0 +1,27 @@ +--- +sidebar_position: 3 +sidebar_label: Delete account +description: Delete your ReportPortal account and personal data securely with proper data retention policies. +--- + +# Delete account + +Starting from version 23.2, ReportPortal users can delete their accounts along with their personal data. + +During the instance setup, the DevOps engineer (or whoever is deploying the instance) can use a variable to decide whether the "Delete account" button will appear in each user's profile or not. This setting is specific to each instance. + +``` +RP_ENVIRONMENT_VARIABLE_ALLOW_DELETE_ACCOUNT: true +``` + +When a user clicks on the **"Delete account" button**, a modal window with feedback options appears. The user can select from predefined options or choose "Other" and provide a specific reason for deleting their account. Alternatively, they can simply select "Other" without leaving any comments. + + + +To prevent accidental deletions, the user must enter "Delete" in capital letters to confirm their intention to delete the account. This extra step ensures that the user genuinely wants to proceed with the account deletion. Once the user clicks the "Delete" button, all personal information related to their account, including account name, email, and photo, will be removed from our test automation reporting platform. However, any data created or reported by the user in ReportPortal, such as launches, filters, widgets, and dashboards, will still be retained in the application but will no longer be accessible to the user. Additionally, the user will receive an email notification confirming the account deletion. + + + +In summary, allowing users to delete their accounts and personal data from our automated testing tool is a critical measure to protect user privacy. ReportPortal is committed to adhering to data protection regulations and staying up to date with industry trends to ensure compliance. + + diff --git a/versioned_docs/version-26.2-organizations/user-account/EditPersonalInformation.mdx b/versioned_docs/version-26.2-organizations/user-account/EditPersonalInformation.mdx new file mode 100644 index 0000000000..2985b5de52 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/user-account/EditPersonalInformation.mdx @@ -0,0 +1,68 @@ +--- +sidebar_position: 1 +sidebar_label: Edit personal information +description: Manage your personal profile information, preferences, and account settings in ReportPortal. +--- + +# Edit personal information + +To navigate to the User Profile page, open menu at the bottom of the page and select "Profile" option. + +The User Profile page consists of the following elements: + +- Personal information and photo – JPEG, PNG, GIF file, with a file size limit no more than 1 MB and 300x500px. + +- Project Assignment – is the list of your projects and the specified roles that are tied to them. This +is a read-only list. + +- API Keys - unique tokens that grant access to the ReportPortal REST API. + +- Configuration Examples + +## Edit name, email and password + +You can edit the name, email and password fields. + +:::note +The specified login at user +creation cannot be changed. +::: +To edit the full name and/or email, click on the "Edit personal information" button. The full +name and email fields will become available. + +The full name allows: 3-256 symbols, English, Latin, Cyrillic, numeric characters and the +following symbols: hyphen, underscore, dot, and space. The email should be unique in ReportPortal. + +Make changes and click the "Save" button. + + + +:::note +Personal information for a GitHub user cannot be changed. +::: +## Change password + +To change your password in ReportPortal, click on the "Change password" button +above the form and enter: + +- Old password +- New password +- Confirm new password + +Check the box "Show password" to verify the password entered is what you intended to enter. + +Fill in these fields and click the "Submit" button under the form. + + + +:::note +GitHub users cannot change the password on ReportPortal. +::: + +## Language setting + +In ReportPortal, you can personalize your experience by selecting a preferred interface language. + +The language settings are available on the Profile page, where users may choose from six supported languages: English (United States), Ukrainian, Russian, Belarusian, Chinese, Spanish. Once selected, the chosen language will be applied across the entire application interface. + + diff --git a/versioned_docs/version-26.2-organizations/user-account/RestoreAPassword.mdx b/versioned_docs/version-26.2-organizations/user-account/RestoreAPassword.mdx new file mode 100644 index 0000000000..e70b4eb6ea --- /dev/null +++ b/versioned_docs/version-26.2-organizations/user-account/RestoreAPassword.mdx @@ -0,0 +1,38 @@ +--- +sidebar_position: 2 +sidebar_label: Restore a password +description: Reset your ReportPortal password securely using email verification to regain access to your account. +--- + +# Restore a password + +The **Restore a password page** in ReportPortal offers a simple process for users who may have forgotten their password and need to regain access to their account quickly. + +:::note +GitHub user cannot restore the password on ReportPortal. +::: + +To start the password reset process, follow these steps: + +1. Navigate to the login page
+ On the ReportPortal login page, you’ll see a link labeled "Forgot password?". + +2. Click the "Forgot password?" link
+Selecting this link will open the password recovery form, which prompts you to enter the email address associated with your ReportPortal account. + +3. Enter your email address
+Type in the email address that you registered with on ReportPortal, ensuring there are no typos. Once entered, click the "Send email" button. + +4. Check your email for password recovery instructions
+After submitting your email, a message will be sent to your inbox with instructions to proceed. + +5. Follow the recovery link in the email
+Open the email, which will contain a secure link to reset your password. Clicking on this link will redirect you to the ReportPortal "Change password" form. + +6. Complete the "Change password" form
+Enter your new password in the form, taking care to choose a strong, unique password for security. Confirm the new password and click "Change password" to save it. + +7. Log in with your new password
+With your password successfully updated, you can now return to the login page and sign in with your new credentials. + + diff --git a/versioned_docs/version-26.2-organizations/user-account/_category_.json b/versioned_docs/version-26.2-organizations/user-account/_category_.json new file mode 100644 index 0000000000..f97b966176 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/user-account/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "User account", + "position": "8", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.2-organizations/user-account/api-key-revocation.mdx b/versioned_docs/version-26.2-organizations/user-account/api-key-revocation.mdx new file mode 100644 index 0000000000..66a48e0a37 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/user-account/api-key-revocation.mdx @@ -0,0 +1,41 @@ +--- +sidebar_label: API Key Revocation +description: Manage API key revocation for secure access control in ReportPortal with manual and automated options. +--- + +# API Key Revocation + +## Overview + +This document describes the API Key revocation process in our API, including manual revocation, automated revocation through SCIM, and possible future improvements related to token expiration policies. + +## Manual Token Revocation + +Users have the ability to manually revoke their API keys through the following methods: + +1. **UI Revocation:** Users can navigate to the API Keys section of their profile page and use the "Revoke" button to disable a specific key. +2. **API Revocation:** Users can revoke a key programmatically by making a DELETE request to: + +```http +DELETE /users/{{user_id}}/api-keys/{{key_id}} +``` + +This API call immediately invalidates the specified key, preventing further use. + +## SCIM and API Keys Revocation + +When SCIM (System for Cross-domain Identity Management) is enabled, user account changes impact key accessibility as follows: + +- **User Deactivation:** API keys are not deleted when a user is deactivated, but the user loses the ability to use them. +- **User Deletion:** When a user profile is permanently deleted, all associated API keys are also removed. + +## Future Enhancements + +We are considering adding key expiration policies, which would allow automatic key rotation or expiration after a defined period. This could be implemented through server-side configuration, providing additional security controls for API key management. + +## Summary + +- Users can revoke their keys manually via UI or API. +- SCIM deactivation restricts key usage without deleting them. +- Full user deletion removes all associated API keys. +- Future improvements may include key expiration mechanisms. diff --git a/versioned_docs/version-26.2-organizations/user-account/img/DeleteAccount1.png b/versioned_docs/version-26.2-organizations/user-account/img/DeleteAccount1.png new file mode 100644 index 0000000000..783c3841ab Binary files /dev/null and b/versioned_docs/version-26.2-organizations/user-account/img/DeleteAccount1.png differ diff --git a/versioned_docs/version-26.2-organizations/user-account/img/DeleteAccount2.png b/versioned_docs/version-26.2-organizations/user-account/img/DeleteAccount2.png new file mode 100644 index 0000000000..f551cc0b63 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/user-account/img/DeleteAccount2.png differ diff --git a/versioned_docs/version-26.2-organizations/user-account/img/LanguageSetting.png b/versioned_docs/version-26.2-organizations/user-account/img/LanguageSetting.png new file mode 100644 index 0000000000..74dc0bc551 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/user-account/img/LanguageSetting.png differ diff --git a/versioned_docs/version-26.2-organizations/user-account/index.md b/versioned_docs/version-26.2-organizations/user-account/index.md new file mode 100644 index 0000000000..9e8104e314 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/user-account/index.md @@ -0,0 +1,20 @@ +--- +title: User account +description: Manage your ReportPortal user account for an efficient real time dashboard open source. +--- + +# User account + +The **User Account** section provides comprehensive guidance on managing your personal account within ReportPortal. This section is essential for users who need to update their account details, manage security settings, or understand the data retention policies. Whether you're a new user or an experienced team member, knowing how to properly manage your account is crucial for maintaining secure and seamless access to our test report dashboard. + +In this section, you will find step-by-step instructions on how to update your personal information, such as changing your name, email, password, or other profile details. **It’s important to keep your information up to date** to ensure proper communication and secure access to ReportPortal. + +Additionally, if you ever forget your login credentials, this section provides clear instructions on **how to restore your password quickly and securely**. Following these steps will help you regain access to your account without any disruption to your work or productivity. + +For users who no longer need access to the system, this section also explains the process for removing an account easily and efficiently. + +Furthermore, the data retention policies are outlined here, explaining how ReportPortal stores and retains user data. These policies ensure that users have a clear understanding of how their data is managed within the test automation metrics dashboard, providing transparency and peace of mind. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-26.2-organizations/user-role-guides/img/PermissionMap.png b/versioned_docs/version-26.2-organizations/user-role-guides/img/PermissionMap.png new file mode 100644 index 0000000000..c392946272 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/user-role-guides/img/PermissionMap.png differ diff --git a/versioned_docs/version-26.2-organizations/user-role-guides/index.md b/versioned_docs/version-26.2-organizations/user-role-guides/index.md new file mode 100644 index 0000000000..72128a31d3 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/user-role-guides/index.md @@ -0,0 +1,68 @@ +--- +sidebar_position: 20 +sidebar_label: User role guides +description: Understand roles and permissions for admins, managers, members, operators, and customers. Configure access and responsibilities to keep projects secure and efficient. +--- + +# User role guides + +All accounts in ReportPortal are divided into two types according to **instance-level classification**: + +- Administrator +- Regular user + +In addition, each account in ReportPortal has a specific role on a project according to **project-level classification**: + +- Project Manager +- Member +- Operator +- Customer + +An account with the "Administrator" type has permission to configure the entire instance and access all projects. + +You can check the permissions for each other role on the Project Members page. + + + +## Administrator +[Installation steps](/installation-steps) +[Tutorial](/tutorial) +[User account](/user-account) +[Log data in ReportPortal](/log-data-in-reportportal) +[Logging Integration]( /configuration/IntegrationViaPlugin) +[Saved searches (Filters)](/saved-searches-filters) +[Dashboards and Widgets](/dashboards-and-widgets) +[Admin Panel](/admin-panel) +[Tips and tricks](/issues-troubleshooting) + +## Project Manager +[Tutorial](/tutorial) +[Admin Panel](/admin-panel) +[Work with reports](/work-with-reports) +[Saved searches (Filters)](/saved-searches-filters) +[Dashboards and Widgets](/dashboards-and-widgets) +[User account](/user-account) + +## Member +[Work with reports](/work-with-reports) +[Analysis](/analysis) +[Saved searches (Filters)](/saved-searches-filters) +[Dashboards and Widgets](/dashboards-and-widgets) +[User account](/user-account) +[Log data in ReportPortal](/log-data-in-reportportal) +[Logging Integration](/configuration/IntegrationViaPlugin) + +## Operator +[Work with reports](/work-with-reports) +[Analysis](/analysis) +[Saved searches (Filters)](/saved-searches-filters) +[Dashboards and Widgets](/dashboards-and-widgets) +[User account](/user-account) +[See list of project members](/configuration/UserManagement) + +## Customer +[Work with reports](/work-with-reports) +[Analysis](/analysis) +[Saved searches (Filters)](/saved-searches-filters) +[Dashboards and Widgets](/dashboards-and-widgets) +[User account](/user-account) diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/FilteringLaunches.mdx b/versioned_docs/version-26.2-organizations/work-with-reports/FilteringLaunches.mdx new file mode 100644 index 0000000000..49b1cd5974 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/work-with-reports/FilteringLaunches.mdx @@ -0,0 +1,318 @@ +--- +sidebar_position: 3 +sidebar_label: Filtering launches +description: Filter launches and test items using advanced criteria to quickly find specific test execution reporting data and analyze results efficiently. +--- + +# Filtering launches + +The data tables for the "Launches" and the "Debug" modes can be filtered with +a filtering block. Filters may be applied at all test item levels: +Launch/Suite/Test/Step. The "Launches" mode allows saving a filter +(a particular combination of filtering criteria) to the "Filters" tab. The +"Debug" mode does not allow saving filters. + +## Filtering parameters + +### Launch level filters + +You can filter launches by the following criteria: + +- **Name** - This filter is always displayed. At least 3 symbols are required for this search. +The system searches for the launches that contain the specified characters in the launch name. For example, a user sets Name = "abc", the system will output launches with names "abcd", "zabc", "zabcd", "abc". + +This filter has the next conditions: +* *contains* - shown all test items that contain a specified combination in the name; +* *not contains* - shown all test items that don't contain a specified combination in the name; +* *equals* - shown all test items with a name that is absolutely equal to the specified combination; +* *not equals* - shown all test items without items which name is absolutely equal to the specified combination; + +- **Launch number** - At least a symbol is required for this search. +The system searches for launches with the mentioned number. This filter has the next conditions: equals, greater than or equal; less than or equal. + +* *greater than or equal* - shown all test items with launch number equal or greater than specified; +* *less than or equal* - shown all test items with launch number equal or less than specified; +* *equals* - shown only test items with specified number; + +- **Description** - At least 3 symbols are required for this search. +The system searches for the launches that contain the specified characters in +the launch description. +This filter has the next conditions: contains, not contains, equals, not equals. + +* *contains* - shown all test items that contain specified combination in the description; +* *not contains* - shown all test items that don't contain specified combination in the description; +* *equals* - shown all test items which description is absolutely equal to the specified combination; +* *not equals* - shown all test items without items which description is absolutely equal to the specified combination; + +- **Owner** - At least 3 symbols are required for this search. The system searches for the launches owned by specified project members. This filter can filter launches by several owners. You can find launches by an owner in just one click. +To do this, click on a required owner under the launch name and the system will display all launches of the selected user. + +- **Start Time** - The system searches for the launches with a specified start time. + +The following values are available: +* *Today* - shown all test items with start time Today; filter contains a dynamic value and search launches with start time equals Today, i.e. current date; +* *Last 2 days* - shown all test items with start time Last 2 days; filter contains a dynamic value, which will be updated every day, and search launches with start time equal Last 2 days; +* *Last 7 days* - shown all test items with start time Last 7 days; filter contains a dynamic value, which will be updated every day, and search launches with start time equal Last 7 days; +* *Last 30 days* - shown all test items with start time Last 30 days; filter contains a dynamic value, which will be updated every day, and search launches with start time equal Last 30 days; +* *Custom range* - shown all test items with a start time in the custom period; the user can set strict period or dynamic value (filter will be a move to one day every day, where Today (current day) is the last day in period); + +- **Attribute** - It is allowed to search for the attributes with at least 1 symbol in it. The system searches for launches with the specified Attribute(s). Several attributes may be specified. +You can find launches by a Attribute in just one click. To do this, click on a required Attribute under the launch name and the system will display all launches that have this Attribute. +This filter has the next conditions: +* *all ( in API: 'filter.has.Attributes')* - shown all test items which contain all specified attributes; +* *without all( in API:'filter.!in.Attributes')* - shown all test items without specified attributes in any combinations; +* *any ( in API:filter.in.Attributes)* - shown all test items which contain any combinations of specified attributes; +* *without any ( in API:'filter.!has.Attributes')* - shown all test items without all specified attributes in case, when both of attributes present in the test item; + +- **Total**, **Passed**, **Failed**, **Skipped** - These criteria are equipped with conditions: ≥ and ≤ and =. +* *greater than or equal* - shown all launches with test cases equal or greater than specified; +* *less than or equal* - shown all launches with test cases equal or less than specified; +* *equals* - shown only launches with a specified number of test cases; + +- **Product Bug**, **Automation Bug**, **System Issue**, **To Investigate** - These criteria are equipped with conditions: ≥ and ≤ and =. +The list of filtering criteria depends on the use of project defect types. If you use a standard set of defects: Product Bug, Automation Bug, System Issue, you will see them on the list of filtered criteria. On projects with custom defects, the system can filter launches by each predefined defect type, each custom defect type and by a total number of defects that belong to the same group. +For example, if you create 2 custom Product Bugs, the total number of product bugs will be calculated as the sum of predefined *Product Bug* + your custom *Product Bug-1* and *Product Bug-2*. +* *greater than or equal* - shown all launches with test cases equal or greater than specified; +* *less than or equal* - shown all launches with test cases equal or less than specified; +* *equals* - shown only launches with a specified number of test cases; + + + +### Suite level filters + +You can use the ReportPortal filter by suite name to display only the relevant test items. + +All available filter options at the Suite level: + +- **Name** - This filter is always displayed. At least 3 symbols are required for this search. +The system searches for the launches that contain the specified characters in the launch name. For example, a user sets Name = "abc", the system will output launches with names "abcd", "zabc", "zabcd", "abc". + +This filter has the next conditions: +* *contains* - shown all test items that contain a specified combination in the name; +* *not contains* - shown all test items that don't contain a specified combination in the name; +* *equals* - shown all test items with a name that is absolutely equal to the specified combination; +* *not equals* - shown all test items without items which name is absolutely equal to the specified combination; + +- **Start Time** - The system searches for the launches with a specified start time. + +The following values are available: +* *Today* - shown all test items with start time Today; filter contains a dynamic value and search launches with start time equals Today, i.e. current date; +* *Last 2 days* - shown all test items with start time Last 2 days; filter contains a dynamic value, which will be updated every day, and search launches with start time equal Last 2 days; +* *Last 7 days* - shown all test items with start time Last 7 days; filter contains a dynamic value, which will be updated every day, and search launches with start time equal Last 7 days; +* *Last 30 days* - shown all test items with start time Last 30 days; filter contains a dynamic value, which will be updated every day, and search launches with start time equal Last 30 days; +* *Custom range* - shown all test items with a start time in the custom period; the user can set strict period or dynamic value (filter will be a move to one day every day, where Today (current day) is the last day in period); + +- **Description** - At least 3 symbols are required for this search. +The system searches for the launches that contain the specified characters in +the launch description. +This filter has the next conditions: contains, not contains, equals, not equals. + +* *contains* - shown all test items that contain specified combination in the description; +* *not contains* - shown all test items that don't contain specified combination in the description; +* *equals* - shown all test items which description is absolutely equal to the specified combination; +* *not equals* - shown all test items without items which description is absolutely equal to the specified combination; + +- **Attribute** - It is allowed to search for the attributes with at least 1 symbol in it. The system searches for launches with the specified Attribute(s). Several attributes may be specified. +You can find launches by a Attribute in just one click. To do this, click on a required Attribute under the launch name and the system will display all launches that have this Attribute. +This filter has the next conditions: +* *all ( in API: 'filter.has.Attributes')* - shown all test items which contain all specified attributes; +* *without all( in API:'filter.!in.Attributes')* - shown all test items without specified attributes in any combinations; +* *any ( in API:filter.in.Attributes)* - shown all test items which contain any combinations of specified attributes; +* *without any ( in API:'filter.!has.Attributes')* - shown all test items without all specified attributes in case, when both of attributes present in the test item; + +- **Total**, **Passed**, **Failed**, **Skipped** - These criteria are equipped with conditions: ≥ and ≤ and =. +* *greater than or equal* - shown all launches with test cases equal or greater than specified; +* *less than or equal* - shown all launches with test cases equal or less than specified; +* *equals* - shown only launches with a specified number of test cases; + +- **Product Bug**, **Automation Bug**, **System Issue**, **To Investigate** - These criteria are equipped with conditions: ≥ and ≤ and =. +The list of filtering criteria depends on the use of project defect types. If you use a standard set of defects: Product Bug, Automation Bug, System Issue, you will see them on the list of filtered criteria. On projects with custom defects, the system can filter launches by each predefined defect type, each custom defect type and by a total number of defects that belong to the same group. +For example, if you create 2 custom Product Bugs, the total number of product bugs will be calculated as the sum of predefined *Product Bug* + your custom *Product Bug-1* and *Product Bug-2*. +* *greater than or equal* - shown all launches with test cases equal or greater than specified; +* *less than or equal* - shown all launches with test cases equal or less than specified; +* *equals* - shown only launches with a specified number of test cases; + +### Test level filters + +At the Test level, the following options are available: + +- **Name** - This filter is always displayed. At least 3 symbols are required for this search. +The system searches for the launches that contain the specified characters in the launch name. For example, a user sets Name = "abc", the system will output launches with names "abcd", "zabc", "zabcd", "abc". + +This filter has the next conditions: +* *contains* - shown all test items that contain a specified combination in the name; +* *not contains* - shown all test items that don't contain a specified combination in the name; +* *equals* - shown all test items with a name that is absolutely equal to the specified combination; +* *not equals* - shown all test items without items which name is absolutely equal to the specified combination; + +- **Start Time** - The system searches for the launches with a specified start time. + +The following values are available: +* *Today* - shown all test items with start time Today; filter contains a dynamic value and search launches with start time equals Today, i.e. current date; +* *Last 2 days* - shown all test items with start time Last 2 days; filter contains a dynamic value, which will be updated every day, and search launches with start time equal Last 2 days; +* *Last 7 days* - shown all test items with start time Last 7 days; filter contains a dynamic value, which will be updated every day, and search launches with start time equal Last 7 days; +* *Last 30 days* - shown all test items with start time Last 30 days; filter contains a dynamic value, which will be updated every day, and search launches with start time equal Last 30 days; +* *Custom range* - shown all test items with a start time in the custom period; the user can set strict period or dynamic value (filter will be a move to one day every day, where Today (current day) is the last day in period); + +- **Description** - At least 3 symbols are required for this search. +The system searches for the launches that contain the specified characters in +the launch description. +This filter has the next conditions: contains, not contains, equals, not equals. + +* *contains* - shown all test items that contain specified combination in the description; +* *not contains* - shown all test items that don't contain specified combination in the description; +* *equals* - shown all test items which description is absolutely equal to the specified combination; +* *not equals* - shown all test items without items which description is absolutely equal to the specified combination; + +- **Attribute** - It is allowed to search for the attributes with at least 1 symbol in it. The system searches for launches with the specified Attribute(s). Several attributes may be specified. +You can find launches by a Attribute in just one click. To do this, click on a required Attribute under the launch name and the system will display all launches that have this Attribute. +This filter has the next conditions: +* *all ( in API: 'filter.has.Attributes')* - shown all test items which contain all specified attributes; +* *without all( in API:'filter.!in.Attributes')* - shown all test items without specified attributes in any combinations; +* *any ( in API:filter.in.Attributes)* - shown all test items which contain any combinations of specified attributes; +* *without any ( in API:'filter.!has.Attributes')* - shown all test items without all specified attributes in case, when both of attributes present in the test item; + +- **Total**, **Passed**, **Failed**, **Skipped** - These criteria are equipped with conditions: ≥ and ≤ and =. +* *greater than or equal* - shown all launches with test cases equal or greater than specified; +* *less than or equal* - shown all launches with test cases equal or less than specified; +* *equals* - shown only launches with a specified number of test cases; + +- **Product Bug**, **Automation Bug**, **System Issue**, **To Investigate** - These criteria are equipped with conditions: ≥ and ≤ and =. +The list of filtering criteria depends on the use of project defect types. If you use a standard set of defects: Product Bug, Automation Bug, System Issue, you will see them on the list of filtered criteria. On projects with custom defects, the system can filter launches by each predefined defect type, each custom defect type and by a total number of defects that belong to the same group. +For example, if you create 2 custom Product Bugs, the total number of product bugs will be calculated as the sum of predefined *Product Bug* + your custom *Product Bug-1* and *Product Bug-2*. +* *greater than or equal* - shown all launches with test cases equal or greater than specified; +* *less than or equal* - shown all launches with test cases equal or less than specified; +* *equals* - shown only launches with a specified number of test cases; + +### Step level filters + +Our qa automation dashboard allows the following filters on Step level: + +- **Name** - This filter is always displayed. At least 3 symbols are required for this search. +The system searches for the items containing specified characters in the test item name. For example, user sets Name = "abc", the system will output test items with names "abcd", "zabc", "zabcd", "abc". +This filter has the next conditions: contains, not contains, equals, not equals. +* *contains* - shown all test items that contain specified combination in the name; +* *not contains* - shown all test items that don't contain specified combination in the name; +* *equals* - shown all test items which name is absolutely equal to the specified combination; +* *not equals* - shown all test items without items which name is absolutely equal to the specified combination; + +- **Method Type** - System searches for test items on a current level with Method Type(s) specified. + +The following filtering options are available: +* *Before suite* +* *Before groups* +* *Before class* +* *Before test* +* *Before method* +* *Test* +* *After method* +* *After test* +* *After class* +* *After groups* +* *After suite* + +- **Description** - At least 3 symbols are required for this search. +The system searches items on the current level containing the specified value in the test item Description. For example, a user sets Description = "abc", the system will output test items with +Descriptions "abcd", "zabc", "zabcd", "abc". +This filter has the next conditions: contains, not contains, equals, not equals. +* *contains* - shown all test items that contain specified combination in the description; +* *not contains* - shown all test items that don't contain specified combination in the description; +* *equals* - shown all test items which description is absolutely equal to the specified combination; +* *not equals* - shown all test items without items which description is absolutely equal to the specified combination; + +- **Status** - The system searches for test items on a current level with Status(es) specified. + +- **Start Time** - The system searches for test items on the current level with specified Start Time values. +* *Today* - shown all test items with start time Today; filter contains a dynamic value and search launches with start time equals Today, i.e. current date; +* *Last 2 days* - shown all test items with start time Last 2 days; filter contains a dynamic value, which will be updated every day, and search launches with start time equal Last 2 days; +* *Last 7 days* - shown all test items with start time Last 7 days; filter contains a dynamic value, which will be updated every day, and search launches with start time equal Last 7 days; +* *Last 30 days* - shown all test items with start time Last 30 days; filter contains a dynamic value, which will be updated every day, and search launches with start time equal Last 30 days; +* *Custom range* - shown all test items with a start time in the custom period; the user can set strict period or dynamic value (filter will be a move to one day every day, where Today (current day) is the last day in period); + +- **Defect Type** - The system searches for test items on the current level with Defect Type(s) specified. +The list of filtering values depends on the use of project defect types. +On projects with defaults set to a specified defect type, "Defect Type" the criteria should contain the following values: To Investigate, Product Bug, Automation Bug, System Issue, No Defect. +On projects with customizable defects, the system will filter items by each predefined defect type and each custom defect type. + +- **Defect Comment** - At least 3 symbols are required for this search. +The system searches items on the current level containing specified values in the test item Defect Comment. +For example, a user sets Defect Comment = "abc", the system will output test items with +Defect Comments "abcd", "zabc", "zabcd", "abc". +* *contains* - shown all test items that contain specified combination in the defect comment; +* *not contains* - shown all test items that don't contain specified combination in the defect comment; +* *equals* - shown all test items which defect comment is absolutely equal to the specified combination; +* *not equals* - shown all test items without items which defect comment is absolutely equal to the specified combination; + +- **Attribute** - 1 symbol is enough for this search. +The system searches for the items with or without a specified Attribute(s). Multiple Attributes may be specified at once. The following filtering conditions are available: ALL/ANY and WITHOUT ALL/WITHOUT ANY. +* *all ( in API: 'filter.has.attributes')* - shown all test items which contain all specified Attributess; +* *without all( in API:'filter.!in.attributes')* - shown all test items without specified Attributess in any combinations; +* *any ( in API:filter.in.attributes)* - shown all test items which contain any combinations of specified attributes; +* *without any ( in API:'filter.!has.attributes')* - shown all test items without all specified attributes in case, when both of attributes present in the test item; + +- **Analysed by RP (AA)** - There are two options: With AA mark, Without AA mark. + +- **Ignored in AA** - There are two options: With Ignore mark, Without ignoring mark. + +- **Issue in BTS** - There are two options: 1 symbol is enough for autocomplete. +The system searches for the items with or without a specified Issue in BTS. Multiple Issues may be specified at once. The following filtering conditions are available: ALL/ANY and WITHOUT ALL/WITHOUT ANY. +* *all (has)* - shown all test items which contain all specified Issues; +* *without all(!has)* - shown test items without all specified Issies in any combinations; +* *any (in)* - shown all test items which contain any combinations of specified Issues; +* *without any (!in)* - shown all test items without any specified Issues + +- **Pattern name** - All patterns names, which a PM creates on Project Settings. + +- **Retry** - There are two options: Has retries/Has no retries. + + + +## Filtering by direct link + +To create a direct link with a predefined filter in the UI, follow these steps: + +1. Start with the standard project link structure, which remains unchanged: + + + +2. Append the **launchesParams** query parameter. This allows you to include all existing filters, e.g. *attributes, name,* etc. and generate shareable, direct links to launches based on specific values defined in the filter. + +:::note +Ensure that all special characters (e.g. “=”, “,”) are properly encoded as [URI component](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent) before using the link, e.g. +``` +https://demo.reportportal.io/ui/#default_personal/launches/all?launchesParams=filter.cnt.name%3Ddemo +``` +::: + +You can encode links either programmatically within your favorite programming language or manually using any [URL encoder](https://meyerweb.com/eric/tools/dencoder/). + +:::tip +This way, as a most common use case you can create a shareable direct URL for launches based on attribute values filter: +``` +https://demo.reportportal.io/ui/#default_personal/launches/all?launchesParams=filter.has.compositeAttribute%3Dplatform%3Alinux +``` +::: + + + +In the table below, you can see description of all the parameters that can be applied to filter launches and generate a direct URL for them. All these filters are the same as filter fields for the launches on ReportPortal UI. + +| **Filter name** | **URL parameter** | **Possible conditions** | **Example** | +|---|---|---|---| +|Launch name | `filter.{condition}.name` | `cnt,!cnt, eq, ne` | `filter.!cnt.name=demo`| +|Launch number | `filter.{condition}.number` | `eq, gte, lte` | `filter.gte.number=1`| +|Description | `filter.{condition}.description` | `cnt, !cnt, eq, ne` | `filter.eq.description=test`| +|Owner | `filter.{condition}.user` | `cnt` | `filter.cnt.user=Jon`| +|Attribute | `filter.{condition}.compositeAttribute` | `has, !has, any, !any` | `filter.has.compositeAttribute=platform:windows`| +|Start time | `filter.{condition}.startTime` | `btw` | `filter.btw.startTime=1757278800000%2C1757451600000`| +|Total | `filter.{condition}.statistics$executions$total` | `eq, gte, lte` | `filter.gte.statistics$executions$total=3`| +|Passed | `filter.{condition}.statistics$executions$passed` | `eq, gte, lte` | `filter.lte.statistics$executions$passed=4`| +|Failed | `filter.{condition}.statistics$executions$failed` | `eq, gte, lte` | `filter.gte.statistics$executions$failed=4`| +|Skipped | `filter.{condition}.statistics$executions$skipped` | `eq, gte, lte` | `filter.gte.statistics$executions$skipped=5`| +|Automation Bug Group | `filter.{condition}.statistics$defects$automation_bug$total` | `eq, gte, lte` | `filter.gte.statistics$defects$automation_bug$total=5`| +|System Issue Group | `filter.{condition}.statistics$defects$system_issue$total` | `eq, gte, lte` | `filter.gte.statistics$defects$system_issue$total=5`| +|To Investigate Group | `filter.{condition}.statistics$defects$to_investigate$total` | `eq, gte, lte` | `filter.gte.statistics$defects$to_investigate$total=5`| + +:::note +For the "Start time" parameter, both the start and end values are timestamps in milliseconds. +::: diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/HistoryOfLaunches.mdx b/versioned_docs/version-26.2-organizations/work-with-reports/HistoryOfLaunches.mdx new file mode 100644 index 0000000000..a303885939 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/work-with-reports/HistoryOfLaunches.mdx @@ -0,0 +1,284 @@ +--- +sidebar_position: 7 +sidebar_label: History of launches +description: Track test execution history and trends over time to identify patterns and improve test automation metrics dashboard insights. +--- + +# History of launches + +## Historical trend of executions + +The historical trend of executions represents your history view for the list of test items in our test execution dashboard. This feature can help you to find +the most unstable test cases in your suites/ launches/ builds. + +To see a table of the historical trend of executions, navigate to the "Launches" page and drill down to launch structure/ or launch statistics. + +### History table based on Test Case Hash + +Test case hash is a parameter that is automatically generated based on the Test Case ID (if specified) or the full path to the test. + +You can read about the Test Case ID [here](/work-with-reports/TestCaseId). + +### Test Case Hash history + +Run ReportPortal without env variable. + +## History table + +Where you can find History table. + +Drill down to the Step view (test executions list). + +Click the "History" button. + +You will see a historical trend in a table. + +History trends have the following color scheme: + + * Red - indicates the launches with failed or interrupted cases + + * Green - indicates passed launches + + * Yellow – indicates the launches with several equal test items present within a required level + + * Grey - indicates the test item with no descendants in this run. + + * Animated - still without state [in progress] + +You can select the depth of history: 3, 5, 10, 15, 20, 25 or 30 launches from the "History +Depth" drop-down menu. + +There are two options for a History table: + +- history for all launches +- history for launches with the same name + +If your are using History table based on Test Case Hash, you will be able to use both of this options. +In case you use a history table based on UID, a history table will show you results in mode: "History for launches with the same name". + +### History for all launches + +If you have configured ReportPortal with [TestCase History table](/work-with-reports/HistoryOfLaunches#history-table). +This option is for you. + +**How you can open a history table with execution from all launches?** + +- Open All launches tab +- Click on the Launch name/ Total/ Passed/ Failed/ Skipped /Product Bug/ Auto Bug/ System Issues/ To investigate statistics +- Click on the button 'History' +- Choose the option '**All launches'** in the drop-down 'BASE' + +**What information is shown on the table based on Test Case Hash?** + +On the history table, you can see the first 20 test cases their last 10 (or 3/5/10/15/20/25/30) executions from all launches on the project. +Each column on the history table is equaled to a number of the execution. + +Let's see an example. + +>**Use case:** You have a test suite for the regression. You want to perform regression testing in different environments. For those reasons, you are running your regression suite on macOS, Windows, and Linux. +After test runs finish, you will be able to see on the All launches tab on ReportPortal 3 launches with different names: *Regression_MacOS, Regression_Win, Regression_Linux*. +If you click on the Total statistic for the launch *Regression_MacOS* and click on the 'History' button, you will see a History table with all test cases in the suite and their 10 last executions from all launches on the project (e.g. from *Regression_MacOS, Regression_Win, Regression_Linux*) +> +> +> | Test case name | Execution #3 | Execution #2 | Execution #1| +> | ------------- | ------------- |------------- |------------- | +> | Test 1 | Passed |Failed |Passed | +> | Test 2 | Failed |Passed |Passed | +> | Test 3 | Failed |Passed |Passed | +> +> When you hover one of the cells on the table, you will be able to see to what launch this execution belongs to. + + + +### History table for launches with the same name + +If you have configured ReportPortal with [TestCase History table](/work-with-reports/HistoryOfLaunches#history-table). +This option is for you. + +**How you can open a history table with execution launches with the same name?** + +- Open All launches tab +- Click on the Launch name/ Total/ Passed/ Failed/ Skipped /Product Bug/ Auto Bug/ System Issues/ To investigate statistics +- Click on the button 'History' +- Choose the option **'Launches with the same name'** in the drop-down 'BASE' + +**What information is shown on the table based on Test Case Hash (with option "Launches with the same name"?)** + +On the history table, you can see the first 20 test cases their last 10 (or 3/5/10/15/20/25/30) executions from only launches with the same name on the project. +Each column on the history table is equaled to a number of the execution. + +Let's see an example. + +>**Use case:** You have a test suite for the regression. You want to perform regression testing in different environments. For those reasons, you are running your regression suite on macOS, Windows, and Linux. +After test runs finish, you will be able to see on the All launches tab on ReportPortal 3 launches with different names: *Regression_MacOS, Regression_Win, Regression_Linux*. +If you click on the Total statistic for the launch *Regression_MacOS* and click on the 'History' button and you choose the option **'Launches with the same name'**, you will see executions only from launches with name *Regression_MacOS*. +> +> +> | Test case name | Execution #2| +> | ------------- | ------------- | +> | Test 1 |Passed | +> | Test 2 | Passed | +> | Test 3 | Passed | +> + + + + +### Cell preview options + +"History" tab is available on all levels: Launch/Suite/Test/Step. + +By default, the History table is displayed in a **pass/fail view with defect types** shown. This happens when the Defect type option is selected in the Cell preview dropdown. + + + +But you can transform the History table view into a **powerful monitoring dashboard**, enabling teams to track custom metrics relevant to their workflows and quickly spot items that fall outside acceptable parameters. + +For that: + +1. Drill down to the Launch/Suite/Test/Step. +2. Click on the "History" tab. +3. Select the "Attribute" option in the "Cell preview" dropdown. +4. Add the key in "Attribute Key" field. +5. Provide a valid value in the "Highlight less than" field. + + + +Using this approach, you can monitor performance metrics: + +* Track response rates +* Identify bottlenecks and performance degradations +* Monitor system efficiency over time + +**Key Benefits:** + +- **Visual Prioritization**
+Instantly see which items need attention through highlighting + +- **Custom Flexibility**
+ Monitor any measurable attribute relevant to your workflow + +- **Trend Analysis**
+ Track improvements or issues over time + +- **Proactive Management**
+ Catch problems before they escalate + +- **Data-Driven Decisions**
+ Make informed choices based on historical patterns + + + +### Actions + +From the History table you will be able to perform the next actions: + +- edit items +- [edit defect](/work-with-reports/InvestigationOfFailure#set-defect-type) +- [post issue](/work-with-reports/InvestigationOfFailure#post-bug-to-bug-tracking-system) +- link / unlink issue +- delete items + +For that: +- Hover the cell on the history table +- Click on the checkbox +- Check needed item +- Click on the button 'Action' +- Choose needed action + +#### Compare launch results with the filter + +You can add a custom column with the latest filter results to the History table. + +>**Use case:** You have a test suite for the regression. You run this suite for different versions (version 1, version2, version 3). +When you run tests for the new version you need to find out if new bugs appeared in it in comparison with the previous version. +You can create a filter that includes test executions for the previous version (version 2). +Then you can open a history table for the launch with results for version 3 and add a custom column with the filter 'Version 2'. +The system adds the latest executions from filter 'Version 2' and you will be able to compare the latest results for version 2 and version 3. + + + +#### Historical line of executions + +The historical line of executions represents the statuses of the current test case in history. + +You can see the historical line of executions at the Log level. History is shown only for the +current item and there are 30 items max in history. +You can click on the item in the history and check the results in previous executions, read +the comments, find the bugs, posted to this fail. +This feature will save you time and help you to understand the reason for your failure. + +History line has the following color scheme: + + * Red - failed or interrupted. Contains a link to a related bug (it has it) + + * Grey - skipped. Contains a link to a related bug (it has it) + + * Green - passed. Contains only execution number + + * Animated - still without state [in progress] + +You can mark the current method or case with a defect type, and write a comment +using the defect editor block. + +To come into a certain execution of an appropriate launch, hit a launch number +above the item. + +Also on a History line, you can see an "i" label, it means that the item with this label has a defect comment or/and a link to the Bug Tracking System. + +#### History across All launches + +By default system shows history across Launches with the same name. + +But you can choose option "History across All Launches" and system will show you executions of the test cases which have been executed in launches with different names. + +On hover user can find launch name of test and all launch attributes. + + + +#### Duration fluctuation + +If test execution has duration growth in comparison with previous run, the system marks such items with red triangles: + +No duration growth - 0 triangles + +duration growh from 0 to 20% - 1 triangles + +duration growh from 21% - 50% - 2 trianges + +duration growh from 51% - 100% - 3 trianges + +duration growh from 101% and higher - 4 trianges + +#### Load more History + +By default the system shows 12 latest executions. If you need more history you can click on the button "Load more 9 items and the system loaded more executions on history line. Max number of items on History line is 30 executions. + +User can move on History line using horizontal scroll. + +### Test Item actions history + +Test Item actions history will show you the history of actions, which have been made to a +certain test item. You can see the kind of activity, and who performed it. + +The following actions are shown on the history of actions: + +> user changed defect type of test item + +> user posted a comment to the test item + +> user posted a bug to the Bug Tracking System or added a link to the existing in Bug Tracking System issue. + +> analyzer changed defect type of test item based on the item (where "item" is a link to a log view of an item which has been chosen by Analyzer as the most relevant result) + +> analyzer posted a comment to the test item + +> analyzer posted a bug to the Bug Tracking System or added a link to the existing in the Bug Tracking System issue. + +To see the history of actions, navigate to a certain child item. By default you +will see the last action in one line. + +Use spoiler to maximize actions history: + + + diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/InvestigationOfFailure.mdx b/versioned_docs/version-26.2-organizations/work-with-reports/InvestigationOfFailure.mdx new file mode 100644 index 0000000000..be8c7fec93 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/work-with-reports/InvestigationOfFailure.mdx @@ -0,0 +1,87 @@ +--- +sidebar_position: 6 +sidebar_label: Investigation of failure +description: Investigate test failures by setting defect types, linking bug tracking systems, and performing detailed test failure analysis for better quality control. +--- + +# Investigation of failure + +## Set defect type + +ReportPortal provides the possibility for test failure analysis of your runs. The investigation includes setting the appropriate defect type of failed items, posting a defect for them or linking the ID of a defect that is already created in the bug tracking system. + +Using [“Make decision” modal](/analysis/ManualAnalysis#make-decision-modal-redesign), you can choose the real reason of your failure and provide a comment for this fail. + +When a defect is found in a test, the bug triage should be performed and proper defect type should be assigned to it, in order to have accurate test runs statistics. You will be able to change a defect type for a test and mark it as a Product Bug/Automation Bug/System Issue/No Defect at any time. + +The available defect types: + +* “To investigate” +* “Product bug” +* “Automation bug” +* “System issue” +* “No defect” + +***“To investigate”*** means that no investigation has been made on this defect yet. + +***“Product bug”*** means that the defect was investigated and a production bug found as the reason for the failure of this test. + +***“Automation bug”*** means that the defect was investigated and the automation test is not correct. + +***“System issue”*** means that the defect was investigated and it turns out that a system-level issue, like an app crash, caused the test to fail. + +***“No defect”*** means that the defect was investigated and was defined to be not a defect. + +You can successfully work with basic defect types, or you can also create up to 70 custom defect types. Moreover, it is possible to have all custom groups of issues under 1 default defect type (if needed). + +## How to create a custom defect type? + +1. Open Project Settings +2. Navigate to “Defect Types” tab +3. Click “Create Defect Type” button at the top of the page or click the icon near the defect type group +4. Select the Defect Type Group +5. Fill the “Defect Type Name” and the “Abbreviation” fields +6. Select a color in the “Color of Defect” section (you can select any color from the color picker) + + + +Thanks to custom defect types, you can get the following benefits: + +1. More specific defect types to identify the most problematic product area +2. The ability to prioritize bugs based on more specific types of defects +3. A possibility to assign people / teams + +For example, there can be following custom defect types that are created on the project: + +**Product Bug Group** – Billing feature, Backend bug, UI issue, Not implemented feature + +**Automation Bug Group** – Test data issue, Timeout issue + +**System Issue Group** – Permission issue, Environment issue + +**No Defect Group** – New feature, Manually passed, Fixed (if the bug is fixed, but auto tests are not fixed yet) + +:::note +There is also To Investigate Group for the defects that have not been sorted out yet. +::: + +:::important +A small life hack: you can identify defects by the name of the team and, in doing so, assign them to the appropriate team. This method can be applied within any defect type group. +::: + + + + + +## Post bug to Bug Tracking System + +ReportPortal allows to connect some popular bug tracking systems with our test automation reporting platform and post a bug to them or link the ticket ID of the already posted defect to the test item in ReportPortal. + +Before posting/linking a bug, make sure that the bug tracking systems are connected to the project on the project settings page. To check it, please, find the user guides below: + +* [Jira Server](/plugins/bug-tracking/AtlassianJiraServer) +* [Jira Cloud](/plugins/bug-tracking/AtlassianJiraCloud) +* [Azure DevOps](/plugins/bug-tracking/AzureDevOps) +* [Rally](/plugins/bug-tracking/Rally) +* [GitLab](/plugins/bug-tracking/GitLab) +* [Monday](/plugins/bug-tracking/Monday) diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/LaunchesTestItemsAttributes.mdx b/versioned_docs/version-26.2-organizations/work-with-reports/LaunchesTestItemsAttributes.mdx new file mode 100644 index 0000000000..2c6dcb45b7 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/work-with-reports/LaunchesTestItemsAttributes.mdx @@ -0,0 +1,155 @@ +--- +sidebar_position: 4 +sidebar_label: Launches/test items attributes +description: Use attributes to organize and categorize test data for better test automation reporting tools performance and easier analysis across launches. +--- + +# Launches/test items attributes + +For more convenient and effective use of our test report dashboard, we recommend paying attention to attributes. + +## What are attributes? + +Attributes are specific data points that can be included at all levels in ReportPortal: + +* launch +* suite +* test +* step + +**Launch** + + +**Suite** + + +**Test** + + +**Step** + + +**The purposes of attributes are:** + +1. Attributes allow you to categorize, group, or classify tests, making them easier to manage in the future. +2. Attributes are used for filtering. +3. You can create a filter based on the attribute and then build widgets using this filter. + +You can [report attributes to ReportPortal](/log-data-in-reportportal/HowToReportAttributesToReportPortal) via test framework integrations or via API and add or edit them via the UI. For that, click on the pencil icon next to the desired launch/test item. Then click on the existing attribute to edit the key and value. + + + + + + + +## Best practices for using attributes + +1. Avoid having too many attributes on a single item. + +When there are too many attributes, they can become unreadable. + +Use attributes that will assist you in grouping tests, debugging them, or constructing widgets. + + + +2. The attribute name should be informative. + +Avoid making the attribute name excessively long, even though the field allows up to 512 characters. The name should be understandable and clearly indicate what the attribute refers to. + +For instance, in the example below, the attribute `v5: beta5_24.1` could have been divided into two separate attributes: `version` and `environment`. + + + +3. Examples of categorizing tests using attributes. + +Below you can find some examples of how attributes can describe launch/test item characteristics: + +* feature: Quality Gates +* feature: login +* feature: notifications +* Epic: @F1_functionality +* Story: @F11_functionality +* Use case: @F11_use_case_111 +* browser: Chrome +* configuration: Chrome desktop +* team: Sirius +* squad: 1 +* run.id: 12345 +* run.type: scheduled +* entity.id: 56789 +* Region: Canada +* test.type: UI +* branch: develop +* build: 3.24.16.17.5 +* priority: critical + + + + + +## Use Cases + +### Using attributes for filtering + +Let's consider the following example. In the launch below, there are 31 Failed tests. + + + +It is difficult to identify the most problematic area, so we can use filtering by attribute, for example, by different controller types. + + + + + +As a result of the investigation, we found that the least number of failures occurred with tests using controller type `contr_test_item` (1), and the most failures occurred with tests using controller type `contr_launch` (12). + + + + + +Thus, we understand that we need to focus on tests with controller type `contr_launch`. + +### Using attributes for creating widgets + +Widgets allow you to visually track [qa and test automation metrics metrics](/dashboards-and-widgets/ReportingAndMetricsInReportPortal/#qa-and-test-automation-metrics-in-reportportal) for launches. We can define these metrics using filters that can be created based on attributes. For example, to determine the growth trend of summary statistics of launches with the same attribute key, let's construct a [Cumulative trend chart widget](/dashboards-and-widgets/CumulativeTrendChart). + +There are some launches with the `smoke` attribute. + + + +You can create a filter based on this attribute. + + + +Afterwards, create a **Cumulative trend chart widget** using this filter. + + + +On the screenshot below, we can observe a growth in statistics on the platforms from one build to the next. + + + +Based on attributes specified for test items, you can also build a [Component Health Check widget](/dashboards-and-widgets/ComponentHealthCheck/) to visually represent the passing rate of different application components. + +For example, if there are some launches with the `demo` attribute, you can create a filter using this attribute. + + + +Next, construct a Component Health Check widget using this filter. Specify the components, functionality, platforms, or other criteria you want to monitor by defining the relevant attributes across different levels. + + + +As a result: + +- On the first level, you can view the passing rate for each build. + + + +- On the second level, you can see which platform has the highest number of failed test cases, helping you identify areas that may need more attention. + + + +Therefore, properly using attributes in ReportPortal can greatly optimize test management and assist in providing clearer visualizations of trends through widgets. + +There are also [system attributes](/log-data-in-reportportal/HowToReportAttributesToReportPortal#system-attributes) that allow to extend the functionality of ReportPortal. diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/LogLevel.mdx b/versioned_docs/version-26.2-organizations/work-with-reports/LogLevel.mdx new file mode 100644 index 0000000000..0bb8588ed9 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/work-with-reports/LogLevel.mdx @@ -0,0 +1,339 @@ +--- +sidebar_position: 5 +sidebar_label: Log level +--- + +# Log level + +The log level is used to store all data related to a test case, including execution logs and screenshots, making debugging and analysis easier. + +## Logs messages + +To see a table with log messages, navigate to the lowest level. + +Log object has the following levels: + +| Level | Value | +| -------- |:-------------:| +| Trace | >= 5 000 | +| Debug |>= 10 000 | +| Info | >= 20 000 | +| Warn |>= 30 000 | +| Error | >= 40 000 | +| Fatal | >= 50 000 | + +You can set a necessary log level using a slider. + +The table with log messages is painted in different colors depending on the log type: + +> red - for failed log steps + +> green - for log steps with positive validation made + +> blue - for system messages + +Error logs are always highlighted in red. The others are highlighted on mouse +hover only. + +Logs with *Trace*, *Debug*, *Error* labels are collapsed if the log has more +than 5 lines. You can expand the log message clicking on the special "Expand" icon. + +You can use a filter to specify the level. + +Also, you can use the logs sorting by time, and filtering logs to find a certain message in logs. + + + +## Timestamps + +In ReportPortal version 24.2, microseconds have been added to timestamps to provide a more precise log sequence. +Previously, some logs shared identical timestamps at the millisecond level, which led to issues with log ordering. + +With this update, you have the flexibility to view timestamps in two formats: + +1. Date & time + + + +2. Time with microseconds + + + +You can easily switch between these options with a simple click. + +The choice will be saved to `localStorage` to persist between sessions in a particular browser. + +## Stack trace + +On the Log view for the fast redirection to the last 5 error log messages, please click on the tab Stack trace, in this section you can find *5 last error logs". + +## Attachments + +In case you are interested in logs with attachments only, check the corresponding checkbox. + +Click on the file in log opens the preview of the attachment. + +The attachments could be rotated on a preview screen if needed. + +ReportPortal provides the possibility of preview for such types of attachments as: + - 'xml', + - 'javascript', + - 'json', + - 'css', + - 'php' + +Other types of attachments will be opened in a new browser tab or downloaded. + +The alternative way to view these files is by using the Attachments. + +To view data via the Attachments section, perform the following steps: + +1. Open Log view of launch for test items with attachments available + +2. Click 'Attachments' tab + +3. Select the required file by clicking on its thumbnail. + +4. To expand the area, click the view on the main box. + + + +## Items details + +In the section Items details, you can find information about test case such as: + +* Test Case name +* Test case status +* Test case start time +* Duration and duration fluctuation +* Description +* Parameters +* Attributes +* Code location (that can be easily copied by a user) + +## History of actions + +In this section, you can find all activities which were performed under the test case such as: + +* user changed defect type of test item +* user posted a comment to the test item +* user posted a bug to the Bug Tracking System +* user-added link to the existing in Bug Tracking System bug. +* analyzer changed defect type of test item based on the item (where "item" is a link to a log view of an item which has been chosen by the analyzer as the most relevant result) +* analyzer posted a comment to the test item +* analyzer posted a bug to the Bug Tracking System or added a link to the existing in Bug Tracking System issue. +* pattern analysis add a found pattern + +History of actions is not shown if nobody performed actions with the item. +By default, you will see the last action in one line. + +## Markdown mode on Logs view + +You can view logs in Markdown mode or in the Console view. + +To enable Markdown mode, please perform actions: + +* Click on "M" button on the log level + +To disable Markdown mode, please perform actions: + +* Click on "M" button on log level one more time + +The same logic applies to the Console view. + +## Log view for containers (for a launch or a suite) + +A user can report logs not only to the test execution but also to containers: + +* Launch +* Suite + +If user want to view attached logs: + +* Login ReportPortal +* Click on a launch name, or a suite name +* Click on Log tab + + + + + +## Log level settings + +The Log level settings (Full-width mode, Colorized background, No logs collapsing, Log Size, pagination off/on) are stored individually for each user, browser, and project, and remain active until you change them manually or clear your browser cache. If the cache is cleared, the settings must be configured again. + +### Full-width mode + +You can configure how log will be displayed by enabling or disabling the "Full-width mode" option. + +To **enable Full-width mode**: + +1. Go to the Log view (launch, suite, test, or step level). +2. Click the Log Settings button. +3. In the **Log Appearance block**, check the "Full-width mode" checkbox in the dropdown. + + + +When Full-width mode is enabled, all log-related tabs – including Stack trace, All logs, Attachments, Item details, and History of actions – automatically expand to use the full available screen width, providing a broader and more comfortable viewing area for detailed information. + +To **disable Full-width mode**: + +1. Go to the Log view (launch, suite, test, or step level). +2. Click the Log Settings button. +3. In the **Log Appearance block**, uncheck the "Full-width mode" checkbox in the dropdown. + +When the option is disabled, all tabs return to their standard layout with default width constraints. + + + +### Colorized background + +You can customize how log entries are visually highlighted by enabling or disabling the "Colorized background" option. + +To **enable Colorized background**: + +1. Go to the Log view (launch, suite, test, or step level). +2. Click the Log Settings button. +3. In the **Log Appearance block**, check the "Colorized background" checkbox in the dropdown. + +When "Colorized background" is enabled, all logs receive background colors according to the configuration defined in [Project settings -> Log types](/configuration/ProjectSettings#log-types). Log entries will display the appropriate label color, background color, text color, and text style (bold or normal), making it easier to distinguish log types visually. + + + +To **disable Colorized background**: + +1. Go to the Log view (launch, suite, test, or step level). +2. Click the Log Settings button. +3. In the **Log Appearance block**, uncheck the "Colorized background" checkbox in the dropdown. + +When this option is disabled, logs are displayed without background color highlighting, using the default styling. + + + +### No logs collapsing + +You can control whether logs appear collapsed or fully expanded. + +To **enable "No logs collapsing" option**: + +1. Go to the Log view (launch, suite, test, or step level). +2. Click the Log Settings button. +3. In the **Log Appearance block**, check the "No logs collapsing" checkbox. + +When "No logs collapsing" is enabled, all logs on the current item level are displayed expanded by default, allowing you to view details without manually opening each log entry. + +**Nested step logs** remain collapsed initially and require individual clicks to expand. + + + +To **disable No logs collapsing option**: + +1. Go to the Log view (launch, suite, test, or step level). +2. Click the Log Settings button. +3. In the **Log Appearance block**, uncheck the No logs collapsing checkbox. + +When this option is disabled, logs follow the standard collapsed view, and you can expand them individually as needed. + +:::important +The "No logs collapsing" option is not available when viewing logs in Console mode. In this mode, the checkbox will not appear in the Log Appearance section. +::: + + + +### Log Size + +You can adjust how large log text appears by selecting a preferred Log Size. + +To **change the Log Size**: + +1. Go to the Log view (launch, suite, test, or step level). +2. Click the Log Settings button. +3. In the **Log Size block**, choose one of the available radio buttons: Small, Medium, or Large. + + + +The **default value is Medium**. + +When you change the log size, the dropdown remains open so you can immediately see your selection. + +The chosen log size is applied consistently across all display modes – default, markdown, and console – and affects logs **for all item types: launch, suite, and test**. The selected size also applies to the **Stack trace tab**. + + + +### Turn Off pagination + +You can choose whether logs are displayed with standard pagination or loaded continuously as you scroll. + +To **turn OFF pagination**: + +1. Go to the Log view (launch, suite, test, or step level). +2. Click the Log Settings button. +3. In the **Pagination block**, select "Turn Off Pagination" option. + + + +4. Confirm the action by clicking "Turn Off & Reload". + + + +After the page reloads, pagination controls are removed, and logs load dynamically as you scroll. + +If pagination is turned off while you are on a later page (for example, page 3), the view resets to the first page after reload, and you can scroll down to load more logs continuously. + +To **turn ON pagination**: + +1. Go to the Log view (launch, suite, test, or step level). +2. Click the Log Settings button. +3. In the **Pagination block**, select "Turn Off Pagination" option. +4. Confirm the action by clicking "Turn Off & Reload". + +After the page reloads, the standard pagination controls become visible again. You are returned to the first page. + +**Additional behavior** + +A "Back to the Top" button is available when navigating deeper into the log feed. Clicking it brings you back to the first page (when pagination is ON) or to the top of the continuous log list (when pagination is OFF). + +When pagination is OFF, logs load in batches (50 items at a time) as you scroll down. + +The pagination setting affects all display modes – default, markdown, and console – and applies consistently across the item log view. + + + + + +### Error log navigation + +On the log view you can find the number of error logs found in current item. In case no error logs, the "Show" button will be disabled with "No error logs" message. In case only one error log is found, the "Show" button will be available and by clicking on it you will be navigated to the correspondent page, and the error log will be highlighted. In case there is more than one error log, you will be able to switch between "Previous" and "Next" error logs. + +You can move between error logs even when pagination is turned off. This helps you quickly jump to the next important error without scrolling through all logs manually. + +**Moving to the next error log** + +* If pagination is OFF and the next error log is not in the currently loaded part of the list, clicking the "Next error" button loads the required part of the logs and brings you directly to that error. +* The error log is highlighted, and you can continue scrolling up or down to load more logs if needed. + +**Using search with error navigation** + +* If you use the search bar while pagination is OFF, only logs that match your search are shown. +* You can still use the "Next error" button to move through the filtered error logs. +* The error counter updates to show how many error logs match your search. + + + + + +### Search and jump to log + +You can quickly find a specific log and jump directly to it, even if it’s located on another page. + +1. When you are on the log level and multiple pages of logs exist, you can enter a value into the Search field to filter logs. +2. The system shows all logs that match your search. +3. When you click the "Jump to" button for one of the found logs, you are taken straight to the page where that log is located. + + + +4. The log is highlighted so you can easily spot it. + + + + diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/OperationsUnderLaunches.mdx b/versioned_docs/version-26.2-organizations/work-with-reports/OperationsUnderLaunches.mdx new file mode 100644 index 0000000000..7936d98a27 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/work-with-reports/OperationsUnderLaunches.mdx @@ -0,0 +1,363 @@ +--- +sidebar_position: 2 +sidebar_label: Operations under launches +description: Manage launch operations including editing attributes, merging launches, and bulk actions to streamline test execution reporting workflows. +--- + +# Operations under launches + +There are several ways of how launches could be modified and managed in our test automation reporting dashboard. + +## Edit launch attributes and description + +The system allows editing attributes and descriptions for the launch on the "Launches" and "Debug" modes. + +Permission: next users can modify launches: + +- Administrator +- User with PROJECT MANAGER Project Role +- User with one of Project Role MEMBER, CUSTOMER on the project - Launch Owner + +To edit a launch, perform the following steps: + +1. Navigate to the "Launches" page. +2. Select "Edit" option ('pencil' icon) to the selected launch. +3. The launch editor will be opened with the following options. +4. Make the required changes and click the "Save" button. + + + +## Edit test item attributes and description + +The system allows to edit attributes and description for the test items on the "Launches" and "Debug" pages. + +Permission: next users can modify test items: + +- Administrator +- User with PROJECT MANAGER Project Role +- User with one of Project Role MEMBER, CUSTOMER on the project - Launch Owner + +To edit description of tests in ReportPortal or edit attributes, perform the following steps: + +1. Navigate to the "Launches" page. +2. Drill down to the test level of any launch. +3. Select the "Edit" option ('pencil' icon) to the selected test item. +4. Make the required changes and click the "Save" button. + + + +## Merge launches + +Merge launches feature can help you to merge the existing launches into one. If your project has a really huge number of regression suites and they cannot be in one particular launch, so, they divided into parts. As soon as they completed, they could be merged in one separate launch to represent this data on dashboards and create reports. + +ReportPortal provides two options for merge: Linear and Deep. The difference in merge options is described below. + +Basically, the merge models distinguished by how the launches elements are collected in a resulting launch as shown on a picture: + + + +**Linear merge** + +In case the user selects the "Linear merge" option, the new launch is created. The new launch contains elements of merging launches. Levels of elements stay the same as in origin launches. Status and issues statistics are calculated as the sum of statistics of all merged launches. The origin launches are deleted from the system. + +**Deep merge** + +In case the user selects the "Deep merge" option, the system creates a new launch and check items with the following conditions simultaneously: + +* test items with the same names +* test items have the same type (SUITE or TEST) +* test items are on the same path (number of parents) +* test items with descendants. + +If such elements are found only the earliest one is added to the new launch. All descendants are collected on their levels as in the original launches. The merge is started from the upper levels to the lower levels. In case the upper level is not merged, the lower levels will not be merged as well. Items without descendants are not merged despite their level. Status and issues statistics are calculated for a new launch. The original launches are deleted from the system. + +The Linear and Deep Merge algorithm, as described above, is shown on a scheme: + + + +For instance, we have Launch-1 and Launch-2 to be merged. If system founds that Suite_A in Launch-1 and Suite_A in Launch-2 have the same names and the same types and the same path and have descendants, so only the earliest Suite_A (according to start time) is added to the new launch. All descendants of merged suites are combined under the Suite_A. Then the system searches for the same matches on the next level (Test level). + +If items do not meet the conditions described for the "Deep Merge" option then they are collected the same way as described for the "Linear merge" option. + +Permission: Next users can merge launches: + +- Administrator +- User with PROJECT MANAGER Project Role +- User with one of Project Role MEMBER, CUSTOMER on the project - Launch Owner + +To merge launches, perform the following steps: + +1. Navigate to the "Launches" page. +2. Select required launches by clicking on their checkboxes. +3. Open 'Actions' list +4. Click the "Merge" button. +5. Merge launches popup will be opened. +6. Select the merge type 'Linear Merge' or 'Deep Merge' +7. Parameters fields become active. Merge popup contains: + +```javascript + Launch name: (editable) + Owner: The field is filled in with the current user. + Description: collect data from all launches + Attributes: collect unique attributes from all launches + Time Start/End: filled in and disabled. +Checkbox 'Extend child suites description with original launches names': Unchecked by default +``` + +8. Make changes and click the "Merge" button on the "Merge Launches" window. After the merge, a new run will be shown on the common launches list. + +:::note +The following launches cannot be merged: +- Launches in progress +- Launches with active "Analysis" process +- Launches with active "Match issues in launch" process +::: + +:::important +No fixed limit, but merging ~20 launches at a time is recommended for stable performance. +::: + + + +## Compare launches + +Compare launches feature in our test execution dashboard can help you to compare launches side by side to define differences between them. + +Permissions: All users on the project + +To compare launches, perform the following steps: + +1. Navigate to the "Launches" page. +2. Select required launches by clicking on their checkboxes. +3. Expand the 'Actions' list +4. Select the "Compare" option. +5. The system shows a window where a widget with bars is displayed, reflecting the Passed/Failed/Skipped and Product Bug/Automation Bug/System Issue/To Investigate test items. + +:::note +Launches can be compared on the 'Launches' page and not on the 'Debug' page. +::: + + +## Move launches to Debug + +The "Debug" section is used to hide incorrect launches from the CUSTOMER view. + +Permission: Next users can move launches to "Debug"/"Launches" mode: + +- Administrator +- User with PROJECT MANAGER Project Role +- User with MEMBER Project Role - Launch Owner + +To move a launch to the "Debug" section, perform the following steps: + +1. Navigate to the "Launches" page +2. Select the "Move to Debug" option from the context menu on the left hand of the launch name. +3. The warning popup will be opened +4. Click the 'Move' button +5. The launch gets to "Debug" page and removed from "Launches" page + +To return the launch to the "Launches" section, navigate to the "Debug" section and select the "Move to All Launches" from the context menu. + +To move some launches to the "Debug" section simultaneously, perform the following steps: + +1. Navigate to the "Launches" page +2. Select required launches by click on their checkboxes +3. Open 'Actions' list +4. Select "Move to Debug" from the list +5. The warning popup will be opened. +6. Confirm the action +7. The launches get to the "Debug" page and removed from the "Launches" page. + +To return the launches to the "Launches" section, navigate to the "Debug" section, select them and select "Move to All Launches" from the 'Actions' list. + + + +## Force finish launches + +The system allows finishing launches on the "Launches" and the "Debug" pages manually. + +Permission: Next users can stop launches: + +- Administrator +- User with PROJECT MANAGER Project Role +- User with one of Project Role MEMBER, CUSTOMER on the project - Launch Owner + +To finish a launch that is in progress now, perform the following steps: + +1. Navigate to the "Launches" page. +2. Select the "Force Finish" option in the context menu on the launch name's left hand. +3. The warning popup will be opened. +4. Click the "Finish" button. +5. The launch will be stopped and shown in the launches table with the "stopped" tag and the "stopped" description. All the statistics collected by this time will be displayed. + + + +To finish some launches simultaneously those are in progress now, perform the following steps: + +1. Navigate to the "Launches" page. +2. Select required launches that are in progress by click on their checkboxes +3. Open 'Actions' list +4. Select "Force Finish" from the list +5. The warning popup will be opened. +6. Confirm the action +7. All selected launches will be stopped and shown in the launches table with the "stopped" tag and the "stopped" description. All the statistics collected by this time will be displayed. + +## Export launches reports + +The system allows exporting launches reports on the 'Launches' and the 'Debug' modes. + +You can export the launch report in the following formats: PDF, XLS, HTML. This feature supports test results download as Excel (XLS), PDF, HTML, providing flexibility for further analysis or sharing. + +Launch structure being exported: + +* launch +* suit +* test +* step + +:::note +Nested steps and logs are not exported. +::: + +To export a launch, perform the following steps: + +1. Go to the 'Launches' page. +2. Open the burger menu for the launch. +3. Click on the 'Export report' option in the menu. + + + +4. Select export file format in the dropdown (PDF, XLS, HTML). +5. Check the 'Include Attachments' checkbox if needed. +6. Click 'Export' button. + + + +:::important +Do not refresh the page while export report is being generated. +::: + +System alerts appear at the bottom of the page and include: + +* Notification about the start of a launch report export + + + +* Notification about the completion of a launch report export + + + +The notification about report generation appears at the top of the page. It also displays the number of reports that are currently in progress. + + + +:::important +The export operation works for a separate launch only. You cannot export multiple launches at once. +::: + +:::note +The XLS and HTML reports are exported in a one-page format, while the PDF report is generated with page breaks. +::: + +**Export with attachments** + +When exporting with the 'Include Attachments' checkbox selected, the generated report is a ZIP archive. + +:::note +If you export launches with attachments and their total size is large, the export process will take longer.
+PDF is the fastest export format, regardless of whether attachments are included. HTML is slightly slower, while XLS is the slowest. +::: + +If the launch doesn't have attachments, then the ZIP file will contain only the launch report in the selected format. + +In case the launch has attachments, the ZIP archive will contain the launch report, parent folders, and subfolders for the test items with attachments. + +The hierarchical folder structure: + +* Launch level +* Suite level +* Test level +* Step level + + + + + + + +In the launch report, you can find the attachment names at the corresponding test item level. + + + + + +## Delete launches + +The system allows deleting launches on the "Launches" and "Debug" pages. + +Permission: next users can delete launches: + +- Administrator +- User with PROJECT MANAGER Project Role +- User with one of Project Role MEMBER, CUSTOMER on the project - Launch Owner + +There are two ways how the launch/es can be deleted. + +To delete a launch, perform the following steps: + +1. Navigate to the "Launches" page. +2. Select the "Delete" option in the context menu on the launch name's left. +3. The warning popup will be opened. +4. Click the "Delete" button. +5. The launch will be deleted from ReportPortal. All related content will be deleted: test items, logs, screenshots. + + + +To delete more than one launch simultaneously, perform the following steps: + +1. Navigate to the "Launches" page +2. Select required launches by click on their checkboxes +3. Open 'Actions' list +4. Click 'Delete' option +5. The warning popup will be opened. +6. Confirm the action +7. The launches will be deleted from ReportPortal. All related content will be deleted: test items, logs, screenshots. + +:::note +It is impossible to delete launches IN PROGRESS - "Delete" launch option will be disabled. +::: + +## Delete test item + +The system allows deleting test items in all levels of launch in the "Launches" and "Debug" pages. + +Permission: Next users can delete the test item: + +- Administrator +- User with PROJECT MANAGER Project Role +- User with one of Project Role MEMBER, CUSTOMER on the project - Launch Owner + +To delete a test item, perform the following steps: + +1. Navigate to the "Launches" page +2. Drill down to the test level of any item +3. Select the "Delete" option in the context menu next to the selected test item. +4. The warning popup will be opened. +5. Click the "Delete" button. +6. The test item will be deleted from ReportPortal with all related content (logs, screenshots). + + + +To delete some test items simultaneously, perform the following steps: + +1. Navigate to the "Launches" page +2. Drill down to the test level of any item +3. Select required test items by click on their checkboxes +4. If you are on SUITE or TEST view, click 'Delete' button from the header. If you are on STEP view, open 'Actions' list and select "Delete" option +5. The warning popup will be opened. +6. Confirm the action +7. Test items will be deleted from ReportPortal with all related content (logs, screenshots). + +:::note +It is impossible to delete test items in launches IN PROGRESS - "Delete" test item option is disabled for test items in launches IN PROGRESS. +::: diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/TestCaseId.md b/versioned_docs/version-26.2-organizations/work-with-reports/TestCaseId.md new file mode 100644 index 0000000000..439654a436 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/work-with-reports/TestCaseId.md @@ -0,0 +1,48 @@ +--- +sidebar_position: 8 +sidebar_label: Test case ID +description: Link test cases with external test management systems using unique test case IDs. Track and manage test execution reporting across platforms. +--- + +# Test case ID + +## What is it: Test case ID + +If you are using any of the Test Management System (such as TestRail, Jira, ALM, and any others), you have a unique identification of test cases in it. + +Starts from version 5.1 you can report test cases with TestCase ID from your TMS. That gives you an ability to link a source of the test case in TMS and its executions in ReportPortal. + +The benefit of this feature is that you will be able to see **the real history of your test cases**. + +>**Definition:** Test Case ID: +It is a unique identifier from your source test management system which help ReportPortal.io to identify the uniqueness of a test case + +## Where Test Case ID is using? + +Test case id is using for: +- The history line +- The history table + +You can find a test case ID in the 'Edit' modal. + +## How you can report items with Test case ID? + +You can [report test case id via agents](https://github.com/reportportal/client-java/wiki/Test-case-ID). + +If the test execution has test parameters, a test case ID will be generated on the base of: + +> Test case id in ReportPortal = reported 'TestCaseID + all test parameters + +## What does happen if you do not report items with Test case ID? + +In case a user doesn't report tests with Test Case ID, the system generates it automatically: + +* Auto-generation based on 'Code reference' and 'Parameters' +If users do not report test case ID, it is generated automatically on the base of: + +> Test case id in ReportPortal = 'Code reference' + all test parameters + +* Automatically based on Test Execution name, All parents name, Parameters +If users do not report Test Case ID and Code reference, then test case ID is generated on the base of: + +> Test case id in ReportPortal = Test Case Name + All parents Name (except Launch name) + All parameters diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/ViewLaunches.mdx b/versioned_docs/version-26.2-organizations/work-with-reports/ViewLaunches.mdx new file mode 100644 index 0000000000..3e54e9ec06 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/work-with-reports/ViewLaunches.mdx @@ -0,0 +1,191 @@ +--- +sidebar_position: 1 +sidebar_label: View launches +description: View and manage test launches with detailed execution data, filtering options, and real-time test reporting capabilities for comprehensive analysis. +--- + +# View launches + +## Viewing information about all launches + +A launch is an object in our test automation reporting platform, which contains your data for certain execution. Inside the launches, we have test items, structured in the same way as you have it in your automation. + +Launches are present in two modes – the Default mode on the "Launches" tab +and the Debug mode on the "Debug" tab. + +### "Debug" tab + +Although both modes share almost the same set of features, the "Debug" mode is +considered to be a more private one: it is not visible to the user with the +CUSTOMER role and all the filters created there cannot be saved to +"Filters". Filters are the base for building a widget, so widget charts are +not available for the launches from the "Debug" mode. + +### "Launches" tab + +A typical Launch structure comprises the following elements: **Suite** \> **Test** +\> **Step** \> **Log**. + +:::note +The maximum page size is 300 items per page for all collection endpoints, including Launches / Suites / Tests / Steps / Logs. +::: + +A suite may hierarchically lie under another suite. + +The data in the "Launches" section is present in a table. By default, the +user sees all runs. + +The "Launches" grid contains the following columns: + +| Field | Description | +| -------- |-------------| +| Runs (at all launches level) |A **Launch name** or a **Suite name** or a **Class name** (depends on a drill-down level)| +| Start time |A launch start time in the "time ago" format (e.g. "10 minutes ago"); on mouse hover the system displays the accurate start time| +| Duration |The launch duration. For launches in progress remaining time is shown| +| Total |The total number of issues. It is a sum of all items with the **Passed**, **Failed**, **Skipped** and **Interrupted** statuses| +| Passed |The total number of issues that were completed with the **Passed** status.| +| Failed |The total number of issues that were completed with the **Failed** status.| +| Skipped |The total number of issues that were completed with the **Skipped** status. Any ReportPortal user can investigate failed and skipped issues with one of the following values: **Product Bug**, **Automation Bug**, **System Issue**| +| Product Bug |This type of issue is selected manually if it's a **product issue**| +| Auto Bug |This type of issue is selected manually if it's an **automation test issue**| +| System Issue |This type of issue is selected manually if it's a **system bug**| +| To investigate |The total number of **Failed** and **Skipped** issues left to investigate| + +## Viewing all launches / latest launches +You have two options to browse all project launches. By default, the system displays all launches of the project in one list in order of start time. + +To filter launches, suites, tests by latest run, use the **‘Latest Launches’** option from the dropdown list (All Launches/Latest Launches) at the top of the page. + + + +In other words, when that option is turned on, you will see only launches with unique names with the last increment (#number). + +*For example, there are launches with names ‘Demo#1’, ‘Demo#2’, ‘Demo#3’ on a launches view. If you choose ‘Latest Launches’ option, the system will display ‘Demo#3’ launch only.* + +In a Latest Launches view you may perform any regular actions: add a filter, perform actions from Actions menu, edit attributes, and edit the description. + +## Viewing launch statistics + +The data in the "Launches" table is present as links in the following +columns: + +| Field | Description | +| -------- |-------------| +| Launch name |This link gives an opportunity to drill down to a specific launch| +| *Total* |This link takes you to the Test Cases view and shows all test cases within the launch in one table| +| *Passed* |This link takes you to the Test Cases view and shows all **passed** test cases within the launch in one table| +| *Failed* |This link takes you to the Test Cases view and shows all **failed** test cases within the launch in one table| +| *Skipped* |This link takes you to the Test Cases view and shows all **skipped** test cases within the launch in one table| +| *Product Bug* |This link takes you to the Test Cases view and shows all **failed** test cases marked as **"Product Bugs"** in the launch in one table| +| *Automation Bug* |this link takes you to the Test Cases view and shows all **failed** test cases marked as **"Automation Bugs"** in the launch in one table| +| *System Issue* |This link takes you to the Test Cases view and shows all **failed** test cases marked as **"System Issues"** in the launch in one table| +| *To Investigate* |This link takes you to the Test Cases view and shows all **failed** test cases with **no selected defect type** (marked as **"To Investigate"**) in the launch in one table| + +To drill down your structure, click the name of an item or numbers in the +columns (**Total**, **Passed**, **Failed**, etc.), which will open the items, filtered +by the column criteria. + +**"To investigate"** number - represents the number of items, which should be review +in this particular run. This value incorporates all the failed test cases and failed +preparation methods. + +> **Why the sum of the values is not equal?** + +> Total, Passed, Failed and Skipped columns counted in **TEST CASES**. + +> Product Bug (PB), Automation Bug (AB), System Issue (SI), To +> investigate (TI) columns counted in **TEST ITEMS**. + +> The hierarchy is as follows: Test Item \> Test Case. Test items can be marked +> with @Test Case annotation. + +> Test item includes: all preparation methods (all *Before* and *After* +> methods), system methods, test cases. + +> Test case is just a single test case. + +> The values in the **Total** column: Total = Passed + Failed + +> Skipped. + +> PB + AB + SI + TI = Failed\_Test\_Cases + Skipped\_Test\_Cases + +> other\_FAILED\_methods + +## Navigate to items + +You can navigate to certain items using clickable values and charts with the number of tests items with all statuses available within the system: +Total/Passed/Failed/Skipped/Production Bug/Automation Bug/System Issue/To Investigate (list view). + +Navigation is provided for both the "Launches" and the "Debug" modes. + +The system shows all relevant test cases within the launch in one table, +filtered by the column criteria. + +The system allows keeping track of your location in the hierarchical launch structure, and navigating back to parent items you went through to get to the current one (breadcrumb link). + +Breadcrumbs representation in the system may be different depending on away the child +item was reached. In case the child item was reached going through all upper +levels sequentially, all the hierarchical elements are reflected in the +breadcrumbs. + +In case a clickable number was used for navigation, then only the highest level +(Launch) and the lowest level (Step) are represented in the breadcrumbs. +But log view of any of the last items will have full path in breadcrumbs in brackets. + +One more useful feature is collapsing not failed precondition methods. +It could be set up on the STEP view of any launch. +The switcher is located on the left hand of the Name column header. + +Please note that that hidden item will not be visible on the LOG view for 'Next'/'Previous' listing. + + + +## Change Status on Step and Log level + +ReportPortal allows to manually change the execution status of Logs and Steps. +This functionality can be used to correct execution results or reflect the actual test behavior. + +You can change the status of a Step or Log to one of the following values: +- Passed +- Failed +- Skipped + +**Step level** + + + +**Log level** + + + +Changing the status on Log or Step level affects launch statistics and aggregated counters +(Passed, Failed, Skipped) displayed in the Launches and Debug views. + +:::note +Changing the execution status does not assign, modify, or remove a defect type.
+Defect classification (Product Bug, Automation Bug, System Issue, No Defect, To Investigate) is a separate operation and should be performed independently during failure analysis. +::: + +## Nested Steps + + + +## Retried test case (retry) + +[How can I report retry items](/developers-guides/RetriesReporting) +In case you implemented a retry logic for your tests in a test framework, ReportPortal will reflect it by adding a special retry structure. If there were a few invocations of the one test case, all these invocations will be shown as the one test case in ReportPortal. + +On a long view, you can see all logs and all information about all invocations. But in statistics and auto-analysis the ReportPortal will take into account only the last invocation. So that launch statistics will be more accurate. + +The defect type can be set for the last invocation only. + +On a Launch view, you can see a label, which means that the launch includes retries. + + + +On a step view, you can see the number of invocations and stack trace of each invocation. + + + +On a log view, you can see the number of invocations and logs, attachments of each invocation. + + diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/_category_.json b/versioned_docs/version-26.2-organizations/work-with-reports/_category_.json new file mode 100644 index 0000000000..41f4ff5a25 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/work-with-reports/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Work with reports", + "position": "11", + "link": {"type": "doc", "id": "index"} +} diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/defect-types/CustomDefectTypes1.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/defect-types/CustomDefectTypes1.png new file mode 100644 index 0000000000..7a8c975e08 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/defect-types/CustomDefectTypes1.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/defect-types/CustomDefectTypes2.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/defect-types/CustomDefectTypes2.png new file mode 100644 index 0000000000..cfa97da907 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/defect-types/CustomDefectTypes2.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/defect-types/CustomDefectTypes3.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/defect-types/CustomDefectTypes3.png new file mode 100644 index 0000000000..664d6826ad Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/defect-types/CustomDefectTypes3.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/filtering-launches/FilteringLaunches1.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/filtering-launches/FilteringLaunches1.png new file mode 100644 index 0000000000..5a8d097fda Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/filtering-launches/FilteringLaunches1.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/filtering-launches/FilteringLaunches2.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/filtering-launches/FilteringLaunches2.png new file mode 100644 index 0000000000..ba4a14fbd2 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/filtering-launches/FilteringLaunches2.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/history-of-launches/CellPreviewOptions1.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/history-of-launches/CellPreviewOptions1.png new file mode 100644 index 0000000000..82fb6d5c39 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/history-of-launches/CellPreviewOptions1.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/history-of-launches/CellPreviewOptions2.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/history-of-launches/CellPreviewOptions2.png new file mode 100644 index 0000000000..946179f300 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/history-of-launches/CellPreviewOptions2.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes1.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes1.png new file mode 100644 index 0000000000..3f5fa093fc Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes1.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes10.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes10.png new file mode 100644 index 0000000000..65b0107172 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes10.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes11.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes11.png new file mode 100644 index 0000000000..8600ce1e5c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes11.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes12.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes12.png new file mode 100644 index 0000000000..21d71b9a38 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes12.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes13.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes13.png new file mode 100644 index 0000000000..6e0da4b21b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes13.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes14.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes14.png new file mode 100644 index 0000000000..2dbb24b64a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes14.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes15.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes15.png new file mode 100644 index 0000000000..9a6c51c352 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes15.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes16.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes16.png new file mode 100644 index 0000000000..75fecae662 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes16.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes17.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes17.png new file mode 100644 index 0000000000..fc1198a33c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes17.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes18.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes18.png new file mode 100644 index 0000000000..a8fc15346b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes18.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes19.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes19.png new file mode 100644 index 0000000000..b2fc695507 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes19.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes2.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes2.png new file mode 100644 index 0000000000..4baed4f3d7 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes2.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes20.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes20.png new file mode 100644 index 0000000000..ca0f24ee39 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes20.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes21.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes21.png new file mode 100644 index 0000000000..589d344b6a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes21.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes22.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes22.png new file mode 100644 index 0000000000..14e7c5c38e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes22.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes3.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes3.png new file mode 100644 index 0000000000..4ac0960a2d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes3.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes4.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes4.png new file mode 100644 index 0000000000..3c573c7e69 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes4.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes5.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes5.png new file mode 100644 index 0000000000..6e64cc7099 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes5.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes6.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes6.png new file mode 100644 index 0000000000..9cdddae6f7 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes6.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes7.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes7.png new file mode 100644 index 0000000000..ac3d4a32f1 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/Attributes7.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/ComponentHealthCheck1.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/ComponentHealthCheck1.png new file mode 100644 index 0000000000..8252c1c028 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/ComponentHealthCheck1.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/ComponentHealthCheck2.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/ComponentHealthCheck2.png new file mode 100644 index 0000000000..553731874a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/ComponentHealthCheck2.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/ComponentHealthCheck3.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/ComponentHealthCheck3.png new file mode 100644 index 0000000000..955421c92b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/ComponentHealthCheck3.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/ComponentHealthCheck4.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/ComponentHealthCheck4.png new file mode 100644 index 0000000000..3d8e49b3f0 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/launches-test-items-attributes/ComponentHealthCheck4.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/BackToTheTop.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/BackToTheTop.png new file mode 100644 index 0000000000..37d014a194 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/BackToTheTop.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/ColorizedBackground.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/ColorizedBackground.png new file mode 100644 index 0000000000..22d1d5af5f Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/ColorizedBackground.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/FullWidthMode.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/FullWidthMode.png new file mode 100644 index 0000000000..92e6869a6c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/FullWidthMode.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/JumpToLog1.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/JumpToLog1.png new file mode 100644 index 0000000000..79c27f1abb Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/JumpToLog1.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/JumpToLog2.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/JumpToLog2.png new file mode 100644 index 0000000000..0664a9f9da Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/JumpToLog2.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/LogSize.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/LogSize.png new file mode 100644 index 0000000000..304355af53 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/LogSize.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/LogViewForContainers1.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/LogViewForContainers1.png new file mode 100644 index 0000000000..599f43a8a2 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/LogViewForContainers1.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/LogViewForContainers2.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/LogViewForContainers2.png new file mode 100644 index 0000000000..8e301d0a2d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/LogViewForContainers2.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/Microseconds.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/Microseconds.png new file mode 100644 index 0000000000..9085327b2e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/Microseconds.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/Milliseconds.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/Milliseconds.png new file mode 100644 index 0000000000..33e25bf818 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/Milliseconds.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/MovingToTheNextErrorLog.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/MovingToTheNextErrorLog.png new file mode 100644 index 0000000000..badd41eaa2 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/MovingToTheNextErrorLog.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/NoLogsCollapsing.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/NoLogsCollapsing.png new file mode 100644 index 0000000000..7c2afbc25a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/NoLogsCollapsing.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/TurnOffPagination1.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/TurnOffPagination1.png new file mode 100644 index 0000000000..c30d8ad37e Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/TurnOffPagination1.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/TurnOffPagination2.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/TurnOffPagination2.png new file mode 100644 index 0000000000..fc054c4987 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/log-level/TurnOffPagination2.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/manage-launches/MergeBasicModel.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/manage-launches/MergeBasicModel.png new file mode 100644 index 0000000000..f4b0d120ca Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/manage-launches/MergeBasicModel.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/manage-launches/MergeScheme.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/manage-launches/MergeScheme.png new file mode 100644 index 0000000000..4a9bd9ac4d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/manage-launches/MergeScheme.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/operations-under-launches/ExportLaunches1.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/operations-under-launches/ExportLaunches1.png new file mode 100644 index 0000000000..99869ab2ae Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/operations-under-launches/ExportLaunches1.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/operations-under-launches/ExportLaunches2.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/operations-under-launches/ExportLaunches2.png new file mode 100644 index 0000000000..3a30c4d91c Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/operations-under-launches/ExportLaunches2.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/operations-under-launches/ExportLaunches3.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/operations-under-launches/ExportLaunches3.png new file mode 100644 index 0000000000..df27c80af3 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/operations-under-launches/ExportLaunches3.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/operations-under-launches/ExportLaunches4.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/operations-under-launches/ExportLaunches4.png new file mode 100644 index 0000000000..98c5229a12 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/operations-under-launches/ExportLaunches4.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/operations-under-launches/ExportLaunches5.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/operations-under-launches/ExportLaunches5.png new file mode 100644 index 0000000000..4b83aecd34 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/operations-under-launches/ExportLaunches5.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/operations-under-launches/ExportLaunches6.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/operations-under-launches/ExportLaunches6.png new file mode 100644 index 0000000000..0bd8e3938d Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/operations-under-launches/ExportLaunches6.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/operations-under-launches/ExportLaunches7.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/operations-under-launches/ExportLaunches7.png new file mode 100644 index 0000000000..42b4a21237 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/operations-under-launches/ExportLaunches7.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/operations-under-launches/ExportLaunches8.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/operations-under-launches/ExportLaunches8.png new file mode 100644 index 0000000000..5ace047c6a Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/operations-under-launches/ExportLaunches8.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/operations-under-launches/ExportLaunches9.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/operations-under-launches/ExportLaunches9.png new file mode 100644 index 0000000000..dcf1499e53 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/operations-under-launches/ExportLaunches9.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/view-launches/FilterLatestRun.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/view-launches/FilterLatestRun.png new file mode 100644 index 0000000000..66a614ec31 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/view-launches/FilterLatestRun.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/view-launches/LogLevel.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/view-launches/LogLevel.png new file mode 100644 index 0000000000..5f3e283994 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/view-launches/LogLevel.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/view-launches/RetriedTestCase1.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/view-launches/RetriedTestCase1.png new file mode 100644 index 0000000000..9def26faaa Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/view-launches/RetriedTestCase1.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/view-launches/RetriedTestCase2.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/view-launches/RetriedTestCase2.png new file mode 100644 index 0000000000..c70f07a26b Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/view-launches/RetriedTestCase2.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/view-launches/RetriedTestCase3.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/view-launches/RetriedTestCase3.png new file mode 100644 index 0000000000..92b1f35038 Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/view-launches/RetriedTestCase3.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/view-launches/SearchWithErrorNavigation.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/view-launches/SearchWithErrorNavigation.png new file mode 100644 index 0000000000..fdb8fca3ce Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/view-launches/SearchWithErrorNavigation.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/img/view-launches/StepLevel.png b/versioned_docs/version-26.2-organizations/work-with-reports/img/view-launches/StepLevel.png new file mode 100644 index 0000000000..fb53ff33ab Binary files /dev/null and b/versioned_docs/version-26.2-organizations/work-with-reports/img/view-launches/StepLevel.png differ diff --git a/versioned_docs/version-26.2-organizations/work-with-reports/index.md b/versioned_docs/version-26.2-organizations/work-with-reports/index.md new file mode 100644 index 0000000000..429b2fc866 --- /dev/null +++ b/versioned_docs/version-26.2-organizations/work-with-reports/index.md @@ -0,0 +1,18 @@ +--- +title: Work with reports +description: Maximize your test automation results dashboard. Learn operations under launches, failure investigation and more. +--- + +# Work with reports + +The **Work with reports** section is dedicated to helping users efficiently view, manage, and analyze their test reports within ReportPortal. This section provides step-by-step guidance on managing launches, investigating test failures, and tracking the complete history of test executions. By mastering these tools, users can streamline their test reporting processes and gain deeper insights into their test automation performance. + +In this section, you will learn how to **effectively use launch attributes and test item attributes** to categorize and filter your test results, making it easier to focus on specific test executions or issues. These attributes allow for more detailed test management, helping you identify patterns and trends within your test results, which can lead to faster problem resolution and overall improvements in testing efficiency. + +Additionally, **system attributes** help to enhance your test management and test reporting in ReportPortal. These attributes can be applied to selected test items and trigger ReportPortal to take certain actions automatically. This enables a more automated and dynamic response to test results, improving how you interact with and manage your reports, and helping you ensure your processes are as efficient as possible. + +With the guidance provided in this section, you’ll be able to organize your test results more effectively, track recurring issues, and improve collaboration between team members. This will ultimately lead to more efficient test management and better overall quality in your software development processes. + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_sidebars/version-26.1-sidebars.json b/versioned_sidebars/version-26.1-sidebars.json new file mode 100644 index 0000000000..1fd014a287 --- /dev/null +++ b/versioned_sidebars/version-26.1-sidebars.json @@ -0,0 +1,8 @@ +{ + "docs": [ + { + "type": "autogenerated", + "dirName": "." + } + ] +} diff --git a/versioned_sidebars/version-26.2-organizations-sidebars.json b/versioned_sidebars/version-26.2-organizations-sidebars.json new file mode 100644 index 0000000000..1fd014a287 --- /dev/null +++ b/versioned_sidebars/version-26.2-organizations-sidebars.json @@ -0,0 +1,8 @@ +{ + "docs": [ + { + "type": "autogenerated", + "dirName": "." + } + ] +} diff --git a/versions.json b/versions.json new file mode 100644 index 0000000000..c2e6d49881 --- /dev/null +++ b/versions.json @@ -0,0 +1,4 @@ +[ + "26.2-organizations", + "26.1" +]