RoostGPT

RoostGPT requires the following to operate successfully

RoostGPT Platform Feature Comparison

Supported Features Across Deployment Options

Feature Category Web Interface (UI) Command Line Interface (CLI) IDE Plugin
Workspace Integration Not Available ✅ Local workspace trigger supported ✅ Local workspace trigger supported
Version Control Integration ✅ Full Git activity support via web interface ✅ Full Git activity support via CLI commands ❌ Limited to local workspace operations
Notifications ✅ Real-time notifications when test generation completes ❌ No notification system ❌ No notification system
License Management ✅ Integrated license validation in UI ✅ API-based or license file validation ✅ API-based or license file validation
Event Monitoring ✅ Webhook support for Git events (PR creation, push, etc.) ❌ No Git event monitoring ❌ No Git event monitoring
User Management ✅ Role-based access control with separate admin and user views ⚠️ Individual user basis on local system ⚠️ Individual user basis on local system
Analytics & Reporting ✅ Comprehensive dashboard with detailed test generation reports and metrics ❌ No dashboard functionality ⚠️ Basic UI showing added tests only
Test Execution Environment ✅ Isolated Docker containers for secure test execution and compilation verification ⚠️ Local Mode: Manual dependency management
     Docker Mode: Requires Docker runtime
⚠️ Manual dependency management required
Ease of Use ✅ Intuitive web forms with one-click test generation ⚠️ env file configuration or download env from web UI for CLI trigger ✅ Context menu integration with code lens support
Test Comparison Tools ✅ Built-in comparison view for multiple test scenarios ❌ No comparison functionality ❌ No comparison functionality
API Server ✅ Dedicated API server for programmatic access ❌ No API server ❌ No API server
History & Audit Trail ✅ Comprehensive event history and audit logging ⚠️ CLI-based history for current user session ❌ No history management
Team Sharing ✅ Centralized credential sharing via connectors and team-wide test configuration distribution ❌ No sharing capabilities ❌ No sharing capabilities

Database

Persistence 

✅ Test configurations and connectors are stored in a central database ⚠️ No persistence. Configuration is persisted locally in the system. ⚠️ No persistence. Configuration is persisted locally in the system.

Stand-alone system

❌ UI can not be deployed as a stand-alone and will need to be hosted on a server ✅ CLI can be deployed as a stand-alone without any API Server or Hosted Server ✅ Plugin can be deployed as a stand-alone without any API Server or Hosted Server

Deployment

On Cloud and On Prem  On Linux, Windows, MacOS From VSCode Marketplace and IntelliJ Disk install

Legend

Deployment Options

Web Interface (UI)

Best for: Teams requiring comprehensive project management, detailed analytics, and centralized administration.

Command Line Interface (CLI)

Best for: Developers preferring terminal-based workflows and automated CI/CD pipeline integration.

IDE Plugin

Best for: Individual developers seeking seamless integration within their development environment.

Application Programming Interface (API)

Best for: Automated CI/CD pipeline integration (limited API are exposed to access the hosted RoostGPT API server).

Self Hosted RoostGPT - OnPrem

Install RoostGPT on Ubuntu Server

Self Hosted RoostGPT - OnPrem

Ubuntu Server Requirements

Ubuntu user should have preferably passwordless sudo access

Self Hosted RoostGPT - OnPrem

Download Roost Deployment Tool

Copy and execute the below bash snippet. The tool will prompt for the needed details and launch RoostGPT stack

curl -sLO https://github.com/roost-io/roost-support/releases/latest/download/roost-deployment-tool 
chmod +x roost-deployment-tool
Self Hosted RoostGPT - OnPrem

Network Configuration and SSL Certificates

SSL Certificates to the enterprise domain

Copy SSL Certificates to the Ubuntu Server and make a note of the key and cert file location.

It will have to be mentioned in the config.json 

 

Network Configuration

Allow incoming traffic to the below ports

Protocol Port Source IP
TCP (HTTPS) 443 All IP in the company network
SSH 22 Only to be used by IT Support Staff
TCP 60001 - 62120

 

Self Hosted RoostGPT - OnPrem

Launch RoostGPT stack

Execute the below command to update the stack

./roost-deployment-tool create-stack


To refresh/upgrade Roost version in the stack
./roost-deployment-tool refresh-stack

Self Hosted RoostGPT - Deploy on AWS using Terraform

To self-host RoostGPT stack, we need the below infrastructure resources. 

The below resources will be provisioned using Terraform script

Self Hosted RoostGPT - Deploy on AWS using Terraform

1. Getting Started

Roost provides terraform scripts to spin up and configure the RoostGPT platform easily. Below are the steps for  deploying Roost on AWS using Terraform 

High-Level Architecture

Roost Terraform scripts create the below components in the AWS cloud 

RoostGPT-architecture-multiple-ec2.jpg

Interactive diagram at https://docs.roost.ai/arch

Prerequisites 

Download the Terraform scripts

curl -LO https://github.com/roost-io/roost-support/raw/refs/heads/master/terraform-ec2.zip
Self Hosted RoostGPT - Deploy on AWS using Terraform

2. OAuth Provider Setup

Roost supports various authentication mechanisms as mentioned below

  1. Okta
  2. Google
  3. Microsoft Azure ADFS

OKTA Auth Client Setup

Google Auth Client Setup

Azure ADFS Auth Client Setup

Roost 0Auth2 Setup - Windows Server 2016/2019 - ADFS 4.0

  1. Open the Server Manager from Start Menu, Select Tools > AD FS Management

  2. From the AD FS Management screen, go to AD FS ➜ Application Groups

  3. Click Add Application Group on right panel

  1. Fill in a name (Roost) for the application group

  2. Select Server Application Web browser accessing a web API and click Next

  3. Make note of the Client Identifier value. This will be the value for the AZURE_ADFS_CLIENT_ID variable

  4. Fill the Redirect URI (https://<DNS_NAME>/login ) and click Add, then Next

  5. Check the Genrate a shared secret box

  6. Use the Copy to clipboard button to retrieve the secret. This will be the value for the AZURE_ADFS_CLIENT_SECRET variable. Click Next

  7. Enter the Web API identifier (Same as RedirectUri - https://<DNS_NAME>/login ) and click Add, then Next

  8. On the Access Control Policy screen, select a policy, usually Permit everyone and click Next

  9. On the Configure Application Permissions screen, select the scope openid and click Next

  10. Review the settings and click Next

  11. Close the wizard by clicking Close. Our application is now registered in ADFS.

  1. Now, we need to Configure the Claims for Application

  1. Open the Properties for the application group we just created.

  2. Select the Web application entry (Roost - Web API) and click Edit

  3. On the Issuance Transform Rules tab, click the Add Rule button

  4. Select Send LDAP Attributes as Claims and click Next

  5. Give the rule a name (Roost Claims) and select Active Directory as the attribute store.

  6. Now configure the below claims (LDAP Attribute => Outgoing Claim Type):

  1. E-Mail-Addresses => E-Mail Address

  2. Given-Name => Given Name

  3. Surname => Surname

  4. SAM-Account-Name => Windows Account Name

  5. User-Principal-Name => UPN

  1. Click Finish to save the claims

  2. You should now see the rule added. Click OK a couple of times to save the settings.

  1. Now the setup is complete. We set these 3 values as environment variables:

  1. AZURE_ADFS_CLIENT_ISSUER  - Domain of ADFS Server (https://adfs.contoso.com)

  2. AZURE_ADFS_CLIENT_ID  - Client Identifier of server application

  3. AZURE_ADFS_CLIENT_SECRET  - Client Secret we copied to clipboard

If don’t want to use Client Secret, then Add an Native Application and pass AZURE_ADFS_CLIENT_SECRET variable as empty

Self Hosted RoostGPT - Deploy on AWS using Terraform

3. Database Setup

Roost stores the status of the GPT workflow and other relevant information in Database. Roost supports MySQL, Postgres and Amazon Aurora DB. Any one database is needed for RoostGPT to work.

Below are the steps to setup an RDS in AWS

Amazon Aurora (MySQL Compatible) OR MySQL

  1. Select RDS

  2. Choose Create Database

  3. Select “Easy Create” for “Amazon Aurora with MYSQL compatibility" or "MySQL"

  4. Modify the RDS Security Group to allow TCP port 3306 access to the Control plane Instance security group only

  5. Make a note of the writer instance database end-point, user, and password (It is needed later in the config below)

Create a new user with read-write privileges and avoid using an admin login.

# Sample command to create a user using MySQL CLI 
# Provide password on prompt 

mysql -h <SQL Host URL> -u <root|master|admin> -p
CREATE USER 'Roost'@'%' identified WITH mysql_native_password by 'Roost#123'; 
CREATE DATABASE roostio;
GRANT ALL on roostio.* to 'Roost'@'%';

# Execute the Roost Schema file, if available
\. /var/tmp/Roost/db/roost.sql

 

Amazon Aurora (PostgreSQL Compatible) OR PostgreSQL

  1. Select RDS

  2. Choose Create Database

  3. Select “Easy Create” for “Amazon Aurora with PostgreSQL compatibility" or "PostgreSQL"

  4. Modify the RDS Security Group to allow TCP port 5432 access to the Control plane Instance security group only

  5. Make a note of the writer instance database end-point, user, and password (It is needed later in the config below)

  6. Create a new user with read-write privileges and avoid using an admin login.

psql "host=<PG Host URL> user=<admin> dbname=postgres port=5432 sslmode=require"

CREATE DATABASE roostio;                                  -- creates app database [5]
CREATE USER roost WITH PASSWORD 'Roost#123';              -- creates login role [3]
GRANT ALL PRIVILEGES ON DATABASE roostio TO roost;        -- DB-level grant [4]

-- Connect to the new DB (reconnect as admin or roost), then set schema privileges
\c roostio                                        
GRANT USAGE ON SCHEMA public TO roost;                   
GRANT ALL ON ALL TABLES IN SCHEMA public TO roost;     
GRANT USAGE ON ALL SEQUENCES IN SCHEMA public TO roost;   
ALTER DEFAULT PRIVILEGES IN SCHEMA public 
  GRANT ALL ON TABLES TO roost;                       
ALTER DEFAULT PRIVILEGES IN SCHEMA public 
  GRANT USAGE ON SEQUENCES TO roost;                   

-- Execute the Roost Schema file, if available
\i /var/tmp/Roost/db/roost.sql  

 

Self Hosted RoostGPT - Deploy on AWS using Terraform

4. Terraform variables

Please follow the below steps to modify terraform files to incorporate the  

Terraform Variable Definitions

Field

Values Description
roost_version "v1.1.17"
license_key

prefix "terraform-gpt"
region "us-west-1"
az1_suffix "b"
az2_suffix  "c"
deletion_protection false
route53_hosted_zone_id 

enterprise_dns  "roostgpt.example.com"
enterprise_ssl_certificate_path "/var/tmp/Roost/certs/server.cer"
enterprise_ssl_certificate_key_path "/var/tmp/Roost/certs/server.key"
certificate_arn ""
ec2_ami  "ami-03df6dea56f8aa618"
key_pair "roost-gpt-keypair"  
generate_key_pair  true
device_name  "sdh"
ip_block_vpc  "172.32.255.192"
instance_type_controlplane "c5a.2xlarge"
instance_type_jumphost  "t3.micro"
disk_roostgpt 150
disk_jumphost 150
disk_controlplane 150
google_client_id 

google_client_secret 

github_client_id 

github_client_secret 

linkedin_client_id

linkedin_client_secret

azure_tenant_id

azure_client_id

azure_client_secret

okta_client_id  "0oa4bweaxcqn2sfTu5d7"
okta_client_secret "D5oRtWXUWcl9gp1312dVtuSoumU4vrECO4wSsqAO"
okta_issuer 

roost_jwt_token

company 

company_logo "https://roost.ai/hubfs/logos/Roost.ai-logo-gold.svg"
enterprise_email_domain  "example.com"
admin_email  "admin@email"
admin_email_pass ""
senders_email  "sender@email"
is_own_mysql  false
db_type "mysql"
mysql_host  "mysqldb_host_url"
mysql_password  "Roost#123"
mysql_username  "Roost"
mysql_port  3306
mysql_db_name  "roostio"
mysql_root_password  "Admin#123"
senders_email_pass 

email_smtp_host 


Self Hosted RoostGPT - Deploy on AWS using Terraform

5. Upgrading/Maintaining RoostGPT Control-plane

There are multiple options available to refresh or upgrade the RoostGPT stack. The infrastructure engineer can use either of these approaches.

a. Using Terraform Script to upgrade RoostGPT version

Update Terraform Variables in "terraform.tfvars" to reflect the appropriate Roost Version

Field

Values

roost_version

v1.1.17

Run below commands:

terraform apply

b. Using Terraform Script to refresh control-plane (without any config change)

Run below commands

terraform apply --replace="null_resource.provision-controlplane-system" --replace="null_resource.provision-roostgpt-server" --replace="null_resource.run-controlplane-services"

c. Using SSH to control-plane instance

RoostGPT control-plane runs a docker compose script and the entire offering can be updated using the below given steps.

ssh cp "ROOST_VER='v1.1.17' /var/tmp/Roost/bin/roost-enterprise.sh -c /var/tmp/Roost/config.json -i roostai"

RoostGPT Command Line Interface (CLI)

Execute RoostGPT from your system as a local binary. The RoostGPT binary allows for unmatched flexibility during test generation, by allowing you to trigger test generation both locally and through git through the use of one simple .env file.

Executable is available for MacOS, Windows and Linux. 

RoostGPT binary is available at https://github.com/roost-io/roost-support/releases


RoostGPT Command Line Interface (CLI)

Download instructions

For Windows

Download the roostgpt-win.exe from https://github.com/roost-io/roost-support/releases/download/v1.1.17/roostgpt-win.exe

Add the "roostgpt-win.exe" binary to your PATH environment variable

For Ubuntu and MacOS

curl https://raw.githubusercontent.com/roost-io/roost-support/master/roostgpt.sh | sudo bash -

RoostGPT Command Line Interface (CLI)

CLI Commands

roostgpt   (for mac) &  ./roostGPT-win.exe (for windows)

This command is used to run the RoostGPT CLI on your operating system.

RoostGPT Command Line Interface (CLI)

Instructions for creating .env file

An easy way to download the .env file is to use https://app.roost.ai/gptCLIForm

The .env file should be in the same folder path as RoostGPT binary.
Here is what the content of your .env file will look like:

# GIT env vars
GIT_TYPE=github                                  # Default is github; Supports [github, gitlab, azure, bitbucket, local]
HOSTED_TYPE=cloud                                # Default is cloud; Supports [cloud, hosted]
GIT_HOSTED_URL=                                  # Required if HOSTED_TYPE=hosted
USE_SSH=false                                    # Optional; Default is false; Supports [true, false]; SSH based auth for Git
LOCAL_PROJECT_PATH=                              # Required if GIT_TYPE is local, Path to your workspace.
SOURCE_GIT_CLONE_URL=                            # Optional; the source repo clone URL
SOURCE_GIT_TOKEN=                                # Required
SOURCE_OWNER_NAME=                               # Required
SOURCE_REPO_NAME=                                # Required
SOURCE_REPO_ID=                                  # Required for GIT_TYPE=gitlab
SOURCE_PROJECT_NAME=                             # Required for GIT_TYPE=azure
SOURCE_PROJECT_ID=                               # Required for GIT_TYPE=bitbucket
SOURCE_BASE_BRANCH=                              # Required
SOURCE_RELATIVE_DIRECTORY=                       # Optional; the relative path of the repository
SAME_TARGET_DETAIL=true                          # Optional; Default true, Supports [true, false]
DESTINATION_GIT_CLONE_URL=                       # Optional; the destination repo clone URL
DESTINATION_GIT_TOKEN=                           # Required if SAME_TARGET_DETAIL=false
DESTINATION_OWNER_NAME=                          # Required if SAME_TARGET_DETAIL=false
DESTINATION_REPO_NAME=                           # Required if SAME_TARGET_DETAIL=false
DESTINATION_REPO_ID=                             # Required if SAME_TARGET_DETAIL=false and GIT_TYPE=gitlab
DESTINATION_PROJECT_NAME=                        # Required for GIT_TYPE=azure
DESTINATION_PROJECT_ID=                          # Required if SAME_TARGET_DETAIL=false and GIT_TYPE=bitbucket
DESTINATION_BASE_BRANCH=                         # Required if SAME_TARGET_DETAIL=false
ENABLE_SECRET_SCANNING_BYPASS=                    # Optional; Default is true; Supports [true, false]

# Open AI env vars
OPENAI_API_MODEL=gpt-4                           # Optional; Default is gpt-4
OPENAI_BASE_URL=                                  # Optional; Default is "https://api.openai.com/v1"
OPENAI_API_KEY=                                  # Required if AI_TYPE=openai

# Vertex AI env vars
VERTEX_FINE_TUNE=false                           # Optional; Default is false, Supports [true, false]
VERTEX_CREDENTIAL_TYPE=                          # Required if AI_TYPE=vertexai; Supports [file, token]
VERTEX_PROJECT_ID=                               # Required if AI_TYPE=vertexai
VERTEX_REGION=                                   # Required if AI_TYPE=vertexai and VERTEX_FINE_TUNE=true
VERTEX_BEARER_TOKEN=                             # Required if AI_TYPE=vertexai and VERTEX_CREDENTIAL_TYPE=token
VERTEX_MODEL=                                    # Required if AI_TYPE=vertexai; Supports [text-bison, code-bison, codechat-bison, text-bison-32k, code-bison-32k, codechat-bison-32k, gemini-pro]
VERTEX_SERVICE_ACCOUNT_KEY=                      # Required if AI_TYPE=vertexai and VERTEX_CREDENTIAL_TYPE=file; path to the service account key file

# Azure Open AI env vars
AZURE_OPENAI_ENDPOINT=                           # Required if AI_TYPE=azure_open_ai
AZURE_DEPLOYMENT_NAME=                           # Required if AI_TYPE=azure_open_ai
AZURE_OPENAI_KEY=                                # Required if AI_TYPE=azure_open_ai
AZURE_OPENAI_VERSION=2024-02-15-preview          # Optional Default is 2024-02-15-preview
AZURE_INFERENCE_AI=                              # Optional; Default is false; Supports [true, false]

# Open source env vars
OPEN_SOURCE_MODEL_ENDPOINT=                      # Required if AI_TYPE=open_source_ai
OPEN_SOURCE_MODEL=                               # Optional; Supports [meta-llama/Llama-2-13b-chat, HuggingFaceH4/starchat-beta]

# Sagemaker model env vars
SAGEMAKER_MODEL_ENDPOINT=                        # Required if AI_TYPE=sagemake_model

# Claude AI env vars
CLAUDE_AI_MODEL=                                 # Required if AI_TYPE=claude_ai
CLAUDE_AI_API_KEY=                               # Required if AI_TYPE=claude_ai

# DBRX AI env vars
DBRX_MODEL_ENDPOINT=                             # Required if AI_TYPE=dbrx
DBRX_AUTH_TOKEN=                                 # Required if AI_TYPE=dbrx
DBRX_MODEL_NAME=                                 # Required if AI_TYPE=dbrx

# AWS Bedrock env vars
AWS_BEDROCK_MODEL=                               # Required if AI_TYPE=AWS_BEDROCK
AWS_DEFAULT_REGION=                              # Required if AI_TYPE=AWS_BEDROCK
AWS_ACCESS_KEY_ID=                               # Optional if AI_TYPE=AWS_BEDROCK
AWS_SECRET_ACCESS_KEY=                           # Optional if AI_TYPE=AWS_BEDROCK
AWS_SESSION_TOKEN=                               # Optional if AI_TYPE=AWS_BEDROCK

# Advanced AI env vars
AI_TEMPERATURE=0.2                               # Optional; Default value is 0.2
USE_ASSISTANT=false                              # Optional; Use Assistant feature in openai. Default:false

# Jira board env vars
JIRA_HOST_NAME=                                  # Required if TEST_TYPE=functional and BOARD_TYPE=jira
JIRA_EMAIL=                                      # Required if TEST_TYPE=functional and BOARD_TYPE=jira
JIRA_TOKEN=                                      # Required if TEST_TYPE=functional and BOARD_TYPE=jira
JIRA_ID=                                         # Optional if TEST_TYPE=functional and BOARD_TYPE=jira

# Azure board env vars
AZURE_ORG=                                       # Required if TEST_TYPE=functional and BOARD_TYPE=azure
AZURE_PROJECT=                                   # Required if TEST_TYPE=functional and BOARD_TYPE=azure
AZURE_TOKEN=                                     # Required if TEST_TYPE=functional and BOARD_TYPE=azure
AZURE_WORK_ITEM_ID=                              # Optional if TEST_TYPE=functional and BOARD_TYPE=azure

# Advanced Jira/Azure board env vars
CREATE_API_SPEC=                                 # Optional; Used for TEST_TYPE=functional
CREATE_EXCEL=                                    # Optional; Default is false; Supports [true, false]
TICKET_INPUT_TYPE=                               # Optional; Default is id; Supports [id, file]
TICKET_FILES=                                    # Required if TICKET_INPUT_TYPE is file, List of comma separated files

# Log env vars
LOG_SOURCE=elks                                  # Optional; Default is elks
LOG_SOURCE_PATH=                                 # Optional; the log file path
LOG_FILE_ENCODING=                               # Optional; the log file encodeing; Default is utf-8
LOG_ELASTICSEARCH_URL=                           # Optional; the Elastic search URL
LOG_ELASTICSEARCH_USER=                          # Optional; the Elastic search user name
LOG_ELASTICSEARCH_TOKEN=                         # Optional; the Elastic search token
LOG_ELASTICSEARCH_API_KEY=                       # Optional; the Elastic search api key

# Behavioural test cases env vars
BEHAVIORAL_TEST_TYPE=                            # Optional; Supports [gherkin]
BEHAVIORAL_TEST_SOURCE=                          # Optional; Supports [file, gitpath, url]
BEHAVIORAL_TEST_FILE_PATH=                       # Optional; path of the source file if source is file/gitpath. Relative path in case of gitpath.
BEHAVIORAL_TEST_URL=                             # Optional; URL of the source file if source is url

# API Spec env vars
API_SPEC_TYPE=                                   # Optional; Supports [swagger, postman, raml]
API_SPEC_SOURCE=                                 # Optional; Supports [file, gitpath, url]
API_SPEC_FILE_PATH=                              # Optional; path of the source file if source is file/gitpath. Relative path in case of gitpath.
API_SPEC_URL=                                    # Optional; URL of the source file if source is url
API_SPEC_ALIAS=

# Proto Spec env cars
PROTO_SPEC_SOURCE=                               # Optional; Supports [file, gitpath, url, gitrepo]
PROTO_SPEC_FILE_PATH=                            # Optional; path of the source file if source is file/gitpath. Relative path in case of gitpath
PROTO_SPEC_URL=                                  # Optional; URL of the source file if source is url

PROTO_SPEC_GIT_REPO_URL=                         # Optional; the proto repo clone URL
PROTO_SPEC_GIT_BRANCH=                           # Required: branch of git repo of proto file
PROTO_SPEC_REPO_NAME=                            # Required; Repo name of proto file
PROTO_SPEC_REPO_ID=                              # Required if GIT_TYPE=gitlab
PROTO_SPEC_PROJECT_NAME=                         # Required for GIT_TYPE=azure
PROTO_SPEC_PROJECT_ID=                           # Required for GIT_TYPE=bitbucket

API_TEST_SERVER_CONFIG=                          # Optional; The api server config

# Cypress test env vars
SCREENSHOTS_SOURCE=                              # Optional; Used for cypress test. Supports [file, gitpath, url]
SCREENSHOTS_URL=                                 # Optional; URL of the source file if source is url
SCREENSHOTS_FILE_PATH=                           # Optional; path of the source file if source is file/gitpath. Relative path in case of gitpath

HTTP_VERBS_FOR_TESTING=get,post,put,patch,delete # Optional; Default is "get,post,put,patch,delete", Supports all the combinations of http verbs. The specific http methods to be tested for all APIs. Enter "," seperated values here.
REGEX_HTTP_ENDPOINTS_FOR_TESTING=                # Optional; Regex string that matches to specific endpoints that needs to be tested. If empty, all the endpoints will be tested.

# Application test env vars
APPLICATION_ENTRYPOINT=                          # Required; if you need to generate application tests along with unit tests. This feature is supported only for GPT Turbo models. Use a relative path from the project root.

# License env vars
ROOST_DOMAIN=app.roost.ai                        # Optional; Default is app.roost.ai
ROOST_TOKEN=                                     # Optional; the Roost token or license filepath, default $HOME/.roost/license.ral
TELEMETRY=true                                   # Optional; Default is true, Supports [true, false], send telemetry data to roost, no private information is shared.

# Additional env vars
TEST_NAME=roost-test                             # Optional; Default is roost-test
ROOST_DIR=/var/tmp/Roost/RoostGPT                # Optional; Default is /var/tmp/Roost/RoostGPT
LANGUAGE=java                                    # Optional; Default is java; Supports [java, go, python, csharp, nodejs, cpp]
AI_TYPE=openai                                   # Optional; Default is openai; Supports [openai, vertexai, azure_open_ai, open_source_ai, sagemaker_model, claude_ai, dbrx, bedrock_ai, deepseek_ai]
JAVA_BUILD_TOOL=maven                            # Optional; Default is maven; Supports [maven, gradle]
PACKAGES_TO_SCAN=*                               # Optional; Default is "*"; used for LANGUAGE=java, for generating tests for specific packages; Enter comma seperated values. E.g. "com.demo.sample,"com.example.products"
ITERATION=1                                      # Optional; Set VERIFY_TEST=true to enable iteration; Default value of ITERATION is 1
TIMEOUT=1                                        # Optional; Default is 1 hour
ROOST_USER_INPUT=                                # Optional; The user input will be used to generate tests.
TEST_TYPE=unit                                   # Optional; Default is unit Supports [unit, functional, artillery, integration, api-spec-test, ui-test, functional-source]
BOARD_TYPE=jira                                  # Optional; Default is jira; Supports [jira, azure, none]
MAX_DEPTH=-1                                     # Optional; Default is -1; if MAX_DEPTH is -1, it will traverse all the sub directories else the maximum depth directories to look for
TEST_FRAMEWORK=                                  # Optional; Default is "pytest" for Python, "gotest" for Golang, "JUnit4" for Java, "nunit" for CSharp, "jest" for Node.js, "postman" for Postman test-script. Supports [pytest, unittest] for Python, [gotest] for Golang, [JUnit4, JUnit5] for Java, [nunit] for Csharp, [jest] for Node.js, [postman, artillery, rest-assured, karate, playwright] for [test_type: api-spec-test]
FUNCTIONS_TO_TEST=                               # Optional; List of function names to be tested, separated by comma. Name to be specified as module.[class.]method OR module.function
VERIFY_TEST=false                                # Optional; Default is false, Supports [true, false]
VULNERABILITY_GEN=false                          # Optional; Default is false, Supports [true, false]
CUSTOM_TAGS=                                     # Optional; The tags to be attached to test code, so that the test's can run based on tags
CONSIDER_EXISTING_TEST=false                     # Optional; Default is false, Supports [true, false], used for Java, python, Golang unit test generation, It scans your repository to identify any existing tests for the specified function. If tests are found, it incorporates them into its consideration and generates additional test cases as needed
CREATE_UNIQUE_BRANCH_FOR_REPORT=                 # Optional; Default is false; Supports [true, false]
ONE_TEST_FILE_PER_SOURCEFILE=                    # Optional; valid for LANGUAGE=go , if user want to generate a single test file per source file
GRADING_NOTES=
USER_SCENARIOS=
USE_CACHE=

# UI Test vars
BROWSER_USE_HEADLESS=true                        # Optional; Default is false; Supports [true, false]
URLS_TO_TEST=                                    # Required if TEST_TYPE="ui-test" and TEST_FRAMEWORK="playwright"

# User can provide additional env var starting with "UI_" prefix
UI_LOGIN_TYPE=                                   # Optional; use only if TEST_TYPE="ui-test" and TEST_FRAMEWORK="playwright"
UI_SITE_USERNAME=                                # Optional; use only if TEST_TYPE="ui-test" and TEST_FRAMEWORK="playwright"
UI_SITE_PASSWORD=                                # Optional; use only if TEST_TYPE="ui-test" and TEST_FRAMEWORK="playwright"                                       # 

# Language version env vars, Used when RoostGPT is run in docker mode, visit https://docs.roost.ai/topics/roostgpt/page/cli to check the supported language versions
JAVA_VERSION=17                                  # Optional; Default is 17, Used for TEST_FRAMEWORK "JUnit4, "JUnit5", "karate", "rest-assured"
MAVEN_VERSION=3.8.6                              # Optional; Default is 3.8.6, Used for TEST_FRAMEWORK "JUnit4, "JUnit5", "karate", "rest-assured"
GRADLE_VERSION=8.6                               # Optional; Default is 8.6, Used for TEST_FRAMEWORK "JUnit4, "JUnit5", "karate", "rest-assured"
GO_VERSION=1.19.9                                # Optional; Default is 1.19.9, Used for TEST_FRAMEWORK "gotest"
PYTHON_VERSION=3                                 # Optional; Default is 3, Used for TEST_FRAMEWORK "pytest", "unittest"
DOTNET_VERSION=8                                 # Optional; Default is 8, Used for TEST_FRAMEWORK "nunit"
NODE_VERSION=18.18.0                             # Optional; Default is 18.18.0, Used for TEST_FRAMEWORK "artillery", "postman", "rest-assured", "karate", "jest", "mocha"
KARATE_VERSION=1.5.1                             # Optional; Default is 1.5.1, Used for TEST_FRAMEWORK "karate",

Note: If a value in your .env file contains the '#' character, enclose the entire value in quotes. This prevents the '#' from being interpreted as the start of a comment.
Example: SECRET_KEY="my#secret#key"

RoostGPT Command Line Interface (CLI)

Details about env variables

Here's a description of each variable:

# Git env vars
# Open AI env vars
  • OPENAI_API_MODEL
    Description: Specifies the type of the OpenAI API model to be used.
    Default Value: "gpt-4"
    Supported Values: "gpt-4", "gpt-3.5-turbo", etc. (Availability of models depends on the OPENAI_API_KEY).
    Optional/Required: Optional
  • OPENAI_API_KEY
    Description: The API key required for accessing the OpenAI API.
    Optional/Required: Required if AI_TYPE is "openai"
# AZURE Open AI env vars
#Bedrock AI env vars
  • AWS_BEDROCK_MODEL
    Description: Indicates which bedrock model should be used.
    Optional/Required: Required if AI_TYPE is "bedrock_ai"

  • AWS_DEFAULT_REGION
    Description: The AWS region of the model hosted
    Optional/Required: Required if AI_TYPE is "bedrock_ai"
  • AWS_ACCESS_KEY_ID
    Description: AWS Access Key ID Credentials
    Optional/Required: Optional. Can be exported in the environment where Roost Binary will be running
  • AWS_SECRET_ACCESS_KEY
    Description: AWS Secret Access Key ID Credentials
    Optional/Required: Optional. Can be exported in the environment where Roost Binary will be running

  • AWS_SESSION_TOKEN
    Description: AWS Session Token Credentials
    Optional/Required: Optional. Can be exported in the environment where Roost Binary will be running
# Vertex AI env vars
  • VERTEX_FINE_TUNE
    Description: Indicates whether fine-tuning is enabled for the model.
    Default Value: "false"
    Supported Values: "true", "false"

  • VERTEX_PROJECT_ID
    Description: The ID of the Vertex project you are working with.
    Optional/Required: Required if AI_TYPE is "vertexai"
  • VERTEX_REGION
    Description: The region where the Vertex project is located. For example, "us-central1".
    Optional/Required: Required if AI_TYPE is "vertexai" and VERTEX_FINE_TUNE is "true"
  • VERTEX_BEARER_TOKEN
    Description: The bearer token used for authenticating requests to the Vertex API.
    Optional/Required: Required if AI_TYPE is "vertexai"
  • VERTEX_MODEL
    Description: The name of the Vertex model to be used.
    Supported Values: "text-bison", "code-bison"
    Optional/Required: Required if AI_TYPE is "vertexai"
# Open Source AI env vars
# SageMaker Model env vars
# Claude AI env vars
# DBRX AI env vars
# Advanced AI env vars
# Jira board env vars
# Azure board env vars
# Advanced Jira/Azure board env vars
# Log env vars
# Behavioural Test cases env vars
# API Spec env vars
# Application test env variables
# API test env vars
# License env vars
# Additional vars
#UI Test env vars

# Improve Test env vars
# Language version env vars

VS Code Extension

The Roost GPT VS code extension allows you to generate tests for your code using RoostGPT with just a click, straight from your VS Code workspace.

Download:

https://marketplace.visualstudio.com/items?itemName=RoostGPT.roostgpt

Installation:

To use the RoostGPT VS Code extension, you must have VS Code ready and installed in your system, as well as any dependencies that are required to run your code, as RoostGPT will often run its generated test code to improve it.

You can download and install VS Code for your Operating system here.

After VS Code is Successfully installed in your system, you can go ahead and download the Roost GPT VS Code extension from the VS Code marketplace, just simply search for Roost GPT in the extension store. Alternatively, you can download and install the VS code extension from here.

Once the extension is installed, you are ready to generate tests for your code.

Configuration:

Once the extension has been successfully installed in your system, you can then proceed with configuring the extension to start generating tests. This involves providing information that is required for test generation.
To configure the extension to use it, simply open the extension settings for Roost GPT, you can search for it in the extension store, or you can find it in the list of your installed extensions.

You can then set up the required values according to your workspace and needs. Following are the required fields which will be required for you to set no matter what:

Required Fields

Advanced Fields (optional):

Test Generation:

Once your extension configuration is complete, you can then start using the VS Code extension to generate tests for your workspace. To generate tests, simply right-click on a file in your Explorer menu and select the type of test you want to generate from the context menu that shows up. Note that each test type has some requirements to start test generation.
The test types currently supported are as follows:

Test Requirements

Following are the Required Fields, and other instructions for test generation according to each supported test type:

Improve and Analyze Generated Tests

After the test generation process is complete, a side panel will open, showing you all the generated test files, you can select the file you want to view by using the dropdown provided, if you want you can also edit the files in the panel itself and save your changes using the provided save button.
If you want to run the generated tests, you can do so from the provided run button in the side panel, doing so will run the selected test file. NOTE that you will need to have all the dependencies required for running the tests installed in your local system for test generation to take place. and for artillery tests, after you click the run button, you will be prompted to enter the target URL for the tests, if you want to provide a target URL, please provide so in the input box, and then you will be asked if you want to upload a .env file to provide environment variables, if yes then you can upload the env file for the same.
If you are not satisfied with the generated tests and want some improvements or changes in the test, then at the bottom of the side panel, you will find a feedback prompt, enter the feedback prompt that you want to give to the AI model and then click the improve button, this will trigger the test improvement.

RoostGPT Infrastructure

This section details the RoostGPT resources required

RoostGPT Infrastructure

RoostGPT Resources for Whitelisting

Terraform Resources Provisioned in AWS

Resource Name

Description

aws_key_pair

AWS EC2 keypair to SSH

aws_eip

An elastic ip to be used by NAT Gateway for public subnet

aws_ami

Ubuntu based AMI id - region specific

aws_vpc

VPC

aws_availability_zones

AZ preferred

aws_internet_gateway

IG for VPC to communicate with internet e.g. apt update

aws_subnet

private and public subnets 

aws_security_group

SG for bastion, backend and frontend service of RoostGPT

aws_lb_target_group

Target group for loadbalancer

aws_route_table

Route Table entries for inbound and outbound traffic

aws_instance

Instances to deploy RoostGPT frontend and backend services

aws_route_table_association

To allow network traffic for instance to instance communication

null_resource

To deploy and run RoostGPT installer scripts on instance


Docker Images (hub.docker.com)

Image Name Tag
zbio/roostai_mysql_db v1.1.17
zbio/roost-nginx latest
zbio/roost-app v1.1.17
zbio/roostai-server v1.1.17
zbio/roostgpt-go v1.1.17
zbio/roostgpt v1.1.17
zbio/roostgpt-ui v1.1.17
zbio/roost-proxy v1.1.17

RoostGPT scripts or executables from 

https://github.com/roost-io/roost-support/releases/tag/v1.1.17


Windows Linux MacOS
CLI roostgpt-win.exe roostgpt-linux
UI Test

 

RoostUITestGenerator-win.exe  RoostUITestGenerator-linux

RoostUITestGenerator-macos-amd

RoostUITestGenerator-macos-arm


Java RoostJavaASTParser.jar RoostJavaASTParser.jar RoostJavaASTParser.jar
Python RoostPythonASTParser-win.exe RoostPythonASTParser-linux RoostPythonASTParser-mac
CSharp RoostCSharpASTParser-win.exe RoostCSharpASTParser-linux RoostCSharpASTParser-macos
Golang RoostGolangASTParser-win.exe RoostGolangASTParser-linux RoostGolangASTParser-macos
       
Javascript RoostJavascriptASTParser-win.exe RoostJavascriptASTParser-linux


API (Karate Test)

karate-1.4.1.jar

karate-1.5.1.jar

karate-1.4.1.jar

karate-1.5.1.jar

karate-1.4.1.jar

karate-1.5.1.jar


RoostGPT Infrastructure

RoostGPT Database for Hosted Server

RoostGPT solution requires a RDBMS to 

 

For POC or limited trials, RoostGPT can also use a containerised database. However, it has limitations  related to

- Enterprise-grade reliability and security
- Advanced feature set and integrations
- Professional support and SLA guarantees
- Automated maintenance and updates