{"id":23651871,"url":"https://github.com/microfocus/alm-octane-github-actions-integration","last_synced_at":"2025-10-16T00:42:57.122Z","repository":{"id":166370496,"uuid":"621791735","full_name":"MicroFocus/alm-octane-github-actions-integration","owner":"MicroFocus","description":"Custom GitHub action which facilitates communication between GitHub and ALM Octane regarding CI/CD.","archived":false,"fork":false,"pushed_at":"2025-05-14T12:51:37.000Z","size":1416,"stargazers_count":1,"open_issues_count":1,"forks_count":1,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-08-01T03:53:47.389Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MicroFocus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-03-31T11:53:18.000Z","updated_at":"2025-05-14T12:40:17.000Z","dependencies_parsed_at":null,"dependency_job_id":"ac5be936-83b9-4e40-9282-d63192c60e01","html_url":"https://github.com/MicroFocus/alm-octane-github-actions-integration","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/MicroFocus/alm-octane-github-actions-integration","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MicroFocus%2Falm-octane-github-actions-integration","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MicroFocus%2Falm-octane-github-actions-integration/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MicroFocus%2Falm-octane-github-actions-integration/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MicroFocus%2Falm-octane-github-actions-integration/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MicroFocus","download_url":"https://codeload.github.com/MicroFocus/alm-octane-github-actions-integration/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MicroFocus%2Falm-octane-github-actions-integration/sbom","scorecard":{"id":93701,"data":{"date":"2025-08-11","repo":{"name":"github.com/MicroFocus/alm-octane-github-actions-integration","commit":"01cb9dab1fb5643d89bcf97f5eebd80b03abbb3b"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.7,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/14 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"1 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":0,"reason":"14 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-h5c3-5r3r-rr8q","Warn: Project is vulnerable to: GHSA-rmvr-2pp2-xj38","Warn: Project is vulnerable to: GHSA-xx4v-prfh-6cgc","Warn: Project is vulnerable to: GHSA-v88g-cgmw-v5xw","Warn: Project is vulnerable to: GHSA-8hc4-vh64-cxmj","Warn: Project is vulnerable to: GHSA-jr5f-v2jv-69x6","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-p8p7-x288-28g6","Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3","Warn: Project is vulnerable to: GHSA-c76h-2ccp-4975","Warn: Project is vulnerable to: GHSA-cxrh-j4jr-qwg3"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-15T08:25:03.700Z","repository_id":166370496,"created_at":"2025-08-15T08:25:03.700Z","updated_at":"2025-08-15T08:25:03.700Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273065038,"owners_count":25039274,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-01T02:00:09.058Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-28T16:48:46.415Z","updated_at":"2025-10-16T00:42:52.084Z","avatar_url":"https://github.com/MicroFocus.png","language":"TypeScript","readme":"## 1. Introduction 🚀\n\nIn the following documentation, the **OpenText Core Software Delivery Platform** and **OpenText Software Delivery Management** will collectively be referred to as 'the product'.\n\nThis is a custom GitHub Action which facilitates communication between GitHub and the product (formelly known as ALM Octane/ValueEdge) regarding CI/CD. The action will monitor an automation workflow and will reflect it into the product.\n\n## 2. Table of Contents\n\n- [1. Introduction](#1-introduction-)\n- [2. Table of Contents](#2-table-of-contents)\n- [3. Requirements](#3-requirements)\n- [4. Workflow Configuration](#4-workflow-configuration)\n  - [4.1. Example Workflow Configuration](#41-example-workflow-configuration)\n  - [4.2. Pipeline name pattern](#42-pipeline-name-pattern)\n  - [4.3. Injecting Gherkin (BDD) test results](#43-injecting-gherkin-bdd-test-results)\n  - [4.4. Debugging](#44-debugging)\n- [5. Credential Configuration](#5-credential-configuration-into-the-product)\n  - [5.1. Creating a GitHub App](#51-creating-a-github-app)\n  - [5.2. Installing a GitHub App to specific repositories](#52-installing-a-github-app-to-specific-repositories)\n  - [5.3. Configure the credential into the product](#53-configure-the-credential-into-the-product)\n- [6. Running Automated Tests](#6-running-automated-tests-from-the-product)\n- [7. OpenText Functional Testing](#7-opentext-functional-testing-framework)\n- [8. Limitations](#8-limitations)\n- [9. Change log](#9-change-log)\n  - [v25.2.0](#v2520)\n  - [v25.1.1](#v2511)\n  - [v25.1.0](#v2510)\n  - [v24.4.1](#v2441)\n  - [Older versions](#v2440)\n\n## 3. Requirements\n\n- At least one GitHub Actions runner allocated for running the integration.\n- the product version should be **16.1.200** or **higher** (certain features require a newer version - see documentation)\n- API access to the product with **CI/CD Integration** or **DevOps Admin** roles.\n\n## 4. Workflow Configuration\n\u003e [!NOTE]\n\u003e These steps should be done inside your GitHub repository.\n\n- Create a new workflow (.yml file).\n- Add `workflow_run` trigger on the desired workflow(s) on request and complete events.\n- Add `pull_request` event trigger to also notify the integration of any PR related event.\n\n```yaml\non:\n  workflow_run:\n    workflows: [\u003cworkflow_name1\u003e, \u003cworkflow_name2\u003e, ...]\n    types: [requested, in_progress, completed]\n  pull_request:\n    types: [opened, edited, closed, reopened]\n```\n- If the product is configured on HTTPS with a self-signed certificate, configure node to allow requests to the server.\n\n```yaml\nenv: \n    NODE_TLS_REJECT_UNAUTHORIZED: 0\n```\n- Add a job for the product's integration and configure details about the runner.\n- Configure two secret variables named ALM_OCTANE_CLIENT_ID and ALM_OCTANE_CLIENT_SECRET with the credential values, inside your GitHub repository (more details about\nsecret variables configuration [here](https://docs.github.com/en/actions/security-guides/encrypted-secrets)).\n- Set integration config params (the product's URL, Shared Space, Workspace, credentials) and repository (Token and URL).\n- Set `unitTestResultsGlobPattern` to match desired **JUnit** test results path or set `gherkinTestResultsGlobPattern` to match **Gherkin (BDD)** test results path ([see more](#injecting-gherkin-bdd-test-results)).\n- For Private repositories go to ```Settings -\u003e Actions -\u003e General``` and set your GITHUB_TOKEN permissions to Read and write. This is necessary to access the actions scope. (more details about GITHUB_TOKEN permissions [here](https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token))\n\n```yaml\njobs:\n  octane_integration_job:\n    runs-on: \u003crunner_tags\u003e\n    name: OctaneIntegration#${{github.event.action}}#${{github.event.workflow_run.id}}\n    steps:\n      - name: GitHub Actions ALM Octane Integration\n        uses: MicroFocus/alm-octane-github-actions-integration\n        id: gitHubActionsIntegration\n        with:\n          octaneUrl: \u003calm_octane_URL\u003e\n          octaneSharedSpace: \u003calm_octane_shared_space\u003e\n          octaneWorkspace: \u003calm_octane_workspace\u003e\n          octaneClientId: ${{secrets.ALM_OCTANE_CLIENT_ID}}\n          octaneClientSecret: ${{secrets.ALM_OCTANE_CLIENT_SECRET}}\n          githubToken: ${{secrets.GITHUB_TOKEN}}\n          serverBaseUrl: \u003cgithub_repository_URL\u003e\n          pipelineNamePattern: '${workflow_name}'\n          unitTestResultsGlobPattern: \u003cpattern_for_junit_test_result_path\u003e\n          gherkinTestResultsGlobPattern: \u003cpattern_for_gherkin_test_result_path\u003e\n```\n\n### 4.1. Example Workflow Configuration\n\nExample of complete integration workflow configuration file:\n\n```yaml\nname: OpenText Software Delivery Platform Integration\n# Events the integration should be triggered on\non:\n  pull_request:\n    types: [opened, edited, closed, reopened]\n  workflow_run:\n    # List of workflows to integrate with OpenText Core SDP / SDM\n    workflows: [CI]\n    # For automated tests, the requested and in_progress types are not required\n    types: [requested, in_progress, completed]\n# Node configuration for allowing HTTPS requests\nenv: \n    NODE_TLS_REJECT_UNAUTHORIZED: 0\njobs:\n  octane_integration_job:\n    # List of runner tags\n    runs-on: [self-hosted]\n    name: OctaneIntegration#${{github.event.action}}#${{github.event.workflow_run.id}}\n    steps:\n      - name: GitHub Actions ALM Octane Integration\n        # Reference to our public GitHub action\n        uses: MicroFocus/alm-octane-github-actions-integration\n        id: gitHubActionsIntegration\n        # Config parameters for the integration\n        with:\n          # OpenText Core SDP / SDM connection data\n          octaneUrl: 'http://myOctaneUrl.com'\n          octaneSharedSpace: 1001\n          octaneWorkspace: 1002\n          octaneClientId: ${{secrets.ALM_OCTANE_CLIENT_ID}}\n          octaneClientSecret: ${{secrets.ALM_OCTANE_CLIENT_SECRET}}\n          # Automatically provided GitHub token\n          githubToken: ${{secrets.GITHUB_TOKEN}}\n          # The url that the CI Server in OpenText Core SDP will point to\n          serverBaseUrl: https://github.com/MyUser/MyCustomRepository\n          # Pattern for building the name of the pipeline (see README for full list of placeholders)\n          pipelineNamePattern: '${workflow_name}'\n          # Pattern for identifying JUnit style report files for test result injection in OpenText Core SDP\n          unitTestResultsGlobPattern: \"**/*.xml\"\n```\n\n- In order to save the parameters of the pipelines and reflect them in the product, update your pipeline's configuration to contain this step in one of the pipeline's jobs:\n\n```yaml\n    - name: Log workflow execution parameters\n      run: |\n        echo \"execution_parameter:: $(echo '${{ toJson(github.event.inputs) }}' | jq -c .)\"\n```\n\n- Run the desired workflow(s) from Actions Tab. This will create a new CI Server and pipeline inside the product, reflecting the status of the executed workflow.\n\n### 4.2. Pipeline name pattern\n\n- The `pipelineNamePattern` parameter from the integration workflow configuration represents the format of the pipeline name that will be displayed in the product.\n\n- This parameter can contain any combination of the following placeholders:\n1. `${repository_name}` - the name of the repository\n2. `${repository_owner}` - the name of the account or organization owning the repository.\n1. `${workflow_name}` - the name of the workflow.\n2. `${workflow_file_name}` - the name of the workflow's configuration file.\n\n- Example: `NEW - ${repository_name} - ${workflow_name}`\n\n\n### 4.3. Injecting Gherkin (BDD) test results\n\n- To inject **Gherkin** test results, follow these steps:\n  1. The automation workflow must contain an additional step for converting the BDD test results to a format accepted by the product. This step must run the [bdd2octane](https://github.com/MicroFocus/bdd2octane?tab=readme-ov-file#a-tool-that-enables-importing-bdd-test-results-into-alm-octane) tool.\n  ```yaml\n  - name: Convert BDD test results\n    run: mvn com.microfocus.adm.almoctane.bdd:bdd2octane:run -DreportFiles=\"**/target/surefire-reports/*.xml\" -DfeatureFiles=\"**/src/test/resources/features/*.feature\" -Dframework=\"cucumber-jvm\" -DresultFile=\"target/surefire-reports/cucumber-jvm-result.xml\"\n  ```\n  2. Set up the `gherkinTestResultsGlobPattern` parameter in the integration workflow to match the converted test results.\n\n### 4.4. Debugging\n\n- In order to get more information on the execution of the integration workflow, add this parameter for the integration job: `logLevel: '3'`.\n- These are the available values for this parameter:\n  - `1` - trace level\n  - `2` - debug level\n  - `3` - info level\n  - `4` - warning level\n  - `5` - error level\n\n## 5. Credential Configuration into the product\n\n- To use certain features, the product needs to send requests to GitHub. This requires configuring a GitHub App credential and adding it to the application.\n\n### 5.1. Creating a GitHub App\n\n1. On GitHub, go to your organization (or account, if the repository containing the workflows is owned by an account) settings.\n2. In the left-side menu, go to **Developer Settings -\u003e GitHub Apps**.\n3. Create a new GitHub App by clicking on **New GitHub App**.\n4. In the **GitHub App name** field, enter a name of your choice.\n5. In the **Homepage URL** field, enter the URL of the Opentext Software Delivery Platform.\n6. In the **Webhook** section, uncheck the **Active** option. No webhook is needed.\n7. In the **Permissions** section, grant the following repository permissions:\n  - Actions: Read and write\n  - Content: Read-only\n8. Click on the **Create GitHub App** button at the bottom of the page. Leave any other fields unchanged.\n\n### 5.2. Installing a GitHub App to specific repositories\n\n1. On GitHub, go to your organization (or account, if the repository containing the workflows is owned by an account) settings.\n2. Go to **Developer settings -\u003e GitHub App**.\n3. Select the credential you created in the previous step by clicking on its name.\n4. In the left-side menu, go to **Install App**.\n5. For the organization (or account) you want to configure the credential for, click on the **Install** button.\n6. Select the repositories you want to grant access to: **All repositories** or **Only select repositories**\n7. Click on the `Install` button to complete the installation.\n\n### 5.3. Configure the credential into the product\n\n1. On GitHub, go to your organization (or account, if the repository containing the workflows is owned by an account) settings.\n2. Go to **Developer Settings -\u003e GitHub Apps** and select the GitHub App you installed by clicking on its name.\n3. On the current page, note the value of the **Client ID**.\n4. In the **Private keys** section, click on **Generate a private key**. A file containing the private key will be downloaded to your device.\n5. Go to the OpenText Software Delivery Platform.\n6. Navigate to **Settings -\u003e Spaces** (select the desired workspace containing the CI servers) **-\u003e Credentials**.\n7. Create a new credential.\n8. Enter a name of your choice. In the **User Name** field, enter the **Client ID** from the GitHub App, and in the **Password** field, enter the private key generated for this GitHub App.\n9. Click on the `Add` button to create the credential.\n10. In workspace settings, go to **DevOps -\u003e CI Servers**.\n11. For the desired CI server (it has the name of the organization on GitHub), double-click on the cell in the **Credential** column and select the newly created credential. If the **Credential** column is not visible, click on the **Choose Columns** button (near the **Filter** button) and make the column visible.\n\n## 6. Running Automated Tests from the product\n\n1. **Configure Workflow Parameters:**\n   - Ensure the parameters required for automated tests are properly set up in **automation** workflow as described earlier.\n   - The workflow must include the following parameters:\n     - `testsToRun` (type: string)\n     - `suiteId` (type: number)\n     - `suiteRunId` (type: number)\n     - `executionId` (type: number)  \n   - For numerical parameters, it is recommended to set a default value of `0`.\n\n2. **Configure the `testToRun` conversion job**:\n   - To run the tests selected into the product, include a job for converting the `testsToRun` parameter to a format accepted by your testing framework. This should be done into your automation framework.\n   - More details on how to do this step can be found here: [@opentext/sdp-sdm-tests-to-run-conversion](https://github.com/MicroFocus/sdp-sdm-tests-to-run-conversion?tab=readme-ov-file#42-running-the-tool-with-github-actions).\n\n3. **Set Up for GitHub Actions Integration:**\n   - To integrate GitHub Actions with the product as a test runner, include the `testingFramework` parameter in your workflow configuration.  \n   - The `testingFramework` parameter should be set to one of the following values, based on the testing tool used:\n\n        |  Framework Name               | Parameter Value  |\n        |-------------------------------|------------------|\n        | Cucumber                      | `cucumber`       |\n        | Cucumber with BDD Scenario    | `bddScenario`    |\n        | Gradle                        | `gradle`         |\n        | JBehave                       | `jbehave`        |\n        | JUnit                         | `junit`          |\n        | Protractor                    | `protractor`     |\n        | Robot Framework               | `robotFramework` |\n        | Selenium (TestNG)             | `testNG`         |\n        | OpenText Functional Testing   | `uft`            |\n\n   - Based on the test results format, you should configure at least one of the following parameters to see the test results in the product:\n     - If you want to inject **JUnit** or **XUnit** test results, set the `unitTestResultsGlobPattern` parameter.\n     - If you want to inject **Gherkin (BDD)** test results, set the `gherkinTestResultsGlobPattern` parameter. ([see more](#injecting-gherkin-bdd-test-results))\n\n4. **Run the Workflow:**\n   - After completing the configuration, run your workflow. This will create a **test runner entity** in the product.\n\n5. **Link Automated Test Entities:**\n   - In the product, navigate to the **Tests** module, and link **Automated Test** entities to the newly created test runner.  \n   - Automated test entities can be created in two ways:\n     - Manually within the product.\n     - Automatically by running tests once in GitHub Actions without configuring the test runner parameters mentioned above (the integration should be configured for the pipeline flow, not the test runner flow).\n\n6. **Create a Test Suite:**\n   - In the **Tests** module, create a **Test Suite** entity if you don't have one, then assign the relevant **Automated Test** entities to it.\n\n7. **Run the Automated Tests from the Product:**\n   - In the product, select or open the test suite and click `Run`, respectively `Run Suite`.\n\n## 7. OpenText Functional Testing framework\n\n- To configure an automation workflow that runs tests using the OpenText Functional Testing *(formerly UFT One)* framework, follow the steps outlined in the following documentation: [Set Up OpenText Functional Testing](https://github.com/MicroFocus/alm-octane-github-actions-integration/blob/main/docs/set-up-opentext-functional-testing.md).\n\n## 8. Limitations\n\n- Needs at least one dedicated GitHub runner to execute the integration workflow.\n- On each pipeline run, the commits that happened since the previous build in the product will be injected. For that, at least one build needs to exist in the product (the commits will be injected starting from the second run of the workflow with the integration).\n- Commits from secondary branches will be injected by running the workflow on the desired branch.\n\n## 9. Change log\n\n### v25.2.1\n\n- Added support for XUnit-formatted test results.\n- Added a new value for the `testingFramework` configuration parameter: `robotFramework`\n- Fixed issue regarding the injection of test results for automated tests triggered from the product.\n\n### v25.2.0\n\n - Added support for OpenText Functional Testing *(formerly UFT One)*. See how to configure the automation workflow [here](https://github.com/MicroFocus/alm-octane-github-actions-integration/blob/main/docs/set-up-opentext-functional-testing.md).\n - Saving the `artifact ID` and `external run ID` for each automated run in the product. The `Test Run Report URL` field in the workflow (pipeline) topology could include these values.\n - Enhanced multi-branch test runner support.\n\n### v25.1.1\n\n - Added functionality for running automated tests from the product.\n - Added support for injecting Gherkin test results from GitHub Actions.\n\n### v25.1.0\n\n - Added functionality for saving pipeline parameters in the product.\n\n### v24.4.1\n - Added a new configuration parameter for configuring logging level. It's named `logLevel` and is an optional parameter.\n - Fixed issue with workflows running in serial mode not being fully reflected in the product.\n\n### v24.4.0\n - Added a new configuration parameter for customizing the pipeline's name. (the one displayed in the product)\n - Added migration process for multi-branch pipelines.\n - Added migration process for splitting existing CI servers to per-organization or per-account CI servers.\n - Running GitHub workflows from the OpenText Software Delivery Platform is now available.\n\n### v24.2.0\n - Added support for multi branch pipelines.\n - Fixed issue that caused completion workflows not to finish.\n - Updated Node.js to v20.\n\n### v23.3.0\n - Rebranding.\n - Fixed issue with logs when connection to the product was failing.\n \n### v1.0\n- Creates CI server and pipelines, and reflects pipeline run status in the product.\n- Injects JUnit test results.\n- Injects SCM data (commits and branches).\n- Injects pull requests on GitHub PR events.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmicrofocus%2Falm-octane-github-actions-integration","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmicrofocus%2Falm-octane-github-actions-integration","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmicrofocus%2Falm-octane-github-actions-integration/lists"}