Run Prerequisites first. These tests verify connectivity and authentication before testing product features.
Jump to Prerequisites ↓Prerequisites
vip verify --categories prerequisites Authentication is configured 1 scenario
As a Posit Team administrator I want to verify that authentication credentials are available So that login-dependent tests can proceed
tests/prerequisites/test_auth_configured.feature
-
Test credentials are provided
- Given VIP is configured with test user credentials
- Then the username is not empty
- And the password is not empty
Posit Team components are installed and reachable 1 scenario
As a Posit Team administrator I want to verify that all configured components are running So that I know the basic installation is healthy before running deeper tests
tests/prerequisites/test_components.feature
-
<product> server is reachable
- Given <product> is configured in vip.toml
- When I request the <product> health endpoint
- Then the server responds with a successful status code
Expected failure for report demonstration 1 scenario
As a VIP developer I want to see what a failed test looks like in the report So that I can verify the report renders failures correctly
tests/prerequisites/test_expected_failure.feature
-
Workbench server is reachable but not configured
- Given Workbench is expected to be configured
- When I check the Workbench configuration
- Then Workbench should be reachable
Product versions match configuration 3 scenarios
As a Posit Team administrator I want to verify that the running product versions match the configured expectations So that I know the correct software versions are deployed
tests/prerequisites/test_versions.feature
-
Connect version matches configuration
- Given Connect is configured in vip.toml with a version expectation
- When I fetch the Connect server version
- Then the Connect version matches the configured value
-
Workbench version matches configuration
- Given Workbench is configured in vip.toml with a version expectation
- When I fetch the Workbench server version
- Then the Workbench version matches the configured value
-
Package Manager version matches configuration
- Given Package Manager is configured in vip.toml with a version expectation
- When I fetch the Package Manager server version
- Then the Package Manager version matches the configured value
Connect
vip verify --categories connect Connect authentication 2 scenarios
As a Posit Team administrator I want to verify that users can log in to Connect So that I know authentication is properly configured
tests/connect/test_auth.feature
-
User can log in via the web UI
- Given Connect is accessible at the configured URL
- When a user navigates to the Connect login page
- And enters valid credentials
- Then the user is successfully authenticated
- And the Connect dashboard is displayed
-
API key authentication works
- Given Connect is accessible at the configured URL
- And a valid API key is configured
- When I request the current user via the API
- Then the API returns user information
Connect content deployment 8 scenarios
As a Posit Team administrator I want to verify that content can be deployed and executed So that I know the Connect publishing pipeline is functional
tests/connect/test_content_deploy.feature
-
Deploy and execute a Quarto document
- Given Connect is accessible at the configured URL
- When I create a VIP test content item named "vip-quarto-test"
- And I upload and deploy a minimal Quarto bundle
- And I wait for the deployment to complete
- Then the content is accessible via HTTP
- And the content renders expected output
- And I clean up the test content
-
Deploy and execute a Plumber API
- Given Connect is accessible at the configured URL
- When I create a VIP test content item named "vip-plumber-test"
- And I upload and deploy a minimal Plumber bundle
- And I wait for the deployment to complete
- Then the content is accessible via HTTP
- And the content renders expected output
- And I clean up the test content
-
Deploy and execute a Shiny application
- Given Connect is accessible at the configured URL
- When I create a VIP test content item named "vip-shiny-test"
- And I upload and deploy a minimal Shiny bundle
- And I wait for the deployment to complete
- Then the content is accessible via HTTP
- And the content renders expected output
- And I clean up the test content
-
Deploy and execute a Dash application
- Given Connect is accessible at the configured URL
- When I create a VIP test content item named "vip-dash-test"
- And I upload and deploy a minimal Dash bundle
- And I wait for the deployment to complete
- Then the content is accessible via HTTP
- And the content renders expected output
- And I clean up the test content
-
Deploy and execute an R Markdown document
- Given Connect is accessible at the configured URL
- When I create a VIP test content item named "vip-rmarkdown-test"
- And I upload and deploy a minimal R Markdown bundle
- And I wait for the deployment to complete
- Then the content is accessible via HTTP
- And the content renders expected output
- And I clean up the test content
-
Deploy and execute a Jupyter Notebook
- Given Connect is accessible at the configured URL
- When I create a VIP test content item named "vip-jupyter-test"
- And I upload and deploy a minimal Jupyter Notebook bundle
- And I wait for the deployment to complete
- Then the content is accessible via HTTP
- And the content renders expected output
- And I clean up the test content
-
Deploy and execute a FastAPI application
- Given Connect is accessible at the configured URL
- When I create a VIP test content item named "vip-fastapi-test"
- And I upload and deploy a minimal FastAPI bundle
- And I wait for the deployment to complete
- Then the content is accessible via HTTP
- And the content renders expected output
- And I clean up the test content
-
Deploy and execute a git-backed Quarto document
- Given Connect is accessible at the configured URL
- When I create a VIP test content item named "vip-gitbacked-test"
- And I link the content item to a public test git repository
- And I trigger a git-backed deployment
- And I wait for the deployment to complete
- Then the content is accessible via HTTP
- And the content renders expected output
- And I clean up the test content
Connect external data sources 1 scenario
As a Posit Team administrator I want to verify that external data sources connect and function So that published content can access the databases and services it needs
tests/connect/test_data_sources.feature
-
External data sources are reachable from Connect
- Given Connect is accessible at the configured URL
- And external data sources are configured in vip.toml
- When I test connectivity to each data source
- Then all data sources respond successfully
Connect email delivery 1 scenario
As a Posit Team administrator I want to verify that Connect can send emails So that scheduled report delivery and notifications work
tests/connect/test_email.feature
-
Connect can send a test email
- Given Connect is accessible at the configured URL
- And email delivery is enabled
- When I send a test email via the Connect API
- Then the email task completes without error
Connect package installation source 2 scenarios
As a Posit Team administrator I want to verify that Connect installs packages from the correct source So that package provenance is as expected (PPPM, PPM, CRAN, etc.)
tests/connect/test_packages.feature
-
Connect is configured to use the expected package repository
- Given Connect is accessible at the configured URL
- When I query the Connect server settings for package repositories
- Then the configured R repository URL is present in the settings
-
Package Manager URL is the default repository source
- Given Connect is accessible at the configured URL
- And Package Manager is configured in vip.toml
- When I deploy a content item that installs R packages
- Then the deployment logs show packages installed from Package Manager
- And I clean up the deployed content
Connect R and Python versions 3 scenarios
As a Posit Team administrator I want to verify that the expected R and Python versions are available So that content can be deployed with the correct runtime
tests/connect/test_runtime_versions.feature
-
Expected R versions are available on Connect
- Given Connect is accessible at the configured URL
- And expected R versions are specified in vip.toml
- When I query Connect for available R versions
- Then all expected R versions are present
-
Expected Python versions are available on Connect
- Given Connect is accessible at the configured URL
- And expected Python versions are specified in vip.toml
- When I query Connect for available Python versions
- Then all expected Python versions are present
-
Expected Quarto versions are available
- Given Connect is accessible at the configured URL
- When I query Connect for available Quarto versions
- Then at least one Quarto version is available
Connect user management 3 scenarios
As a Posit Team administrator I want to verify that user and group management APIs are functional So that I know access control is properly configured
tests/connect/test_users.feature
-
Admin user exists and has admin privileges
- Given Connect is accessible at the configured URL
- When I retrieve the current user profile
- Then the user has admin privileges
-
Users can be listed
- Given Connect is accessible at the configured URL
- When I list all users
- Then the user list is not empty
- And the test user exists in the user list
-
Groups can be listed
- Given Connect is accessible at the configured URL
- When I list all groups
- Then the response is successful
Cross-Product
vip verify --categories cross_product Cross-product integration 1 scenario
As a Posit Team administrator I want to verify that products are integrated with each other So that the deployment functions as a cohesive platform
tests/cross_product/test_integration.feature
-
Content deployed on Connect uses packages from Package Manager
- Given Connect is configured in vip.toml
- And Package Manager is configured in vip.toml
- When I deploy a content item that installs R packages on Connect
- Then the deployment logs mention the Package Manager URL as the package source
- And I clean up the integration test content
Monitoring and logging 1 scenario
As a Posit Team administrator I want to verify that monitoring and logging are configured So that operational issues can be detected and diagnosed
tests/cross_product/test_monitoring.feature
-
Monitoring is configured
- Given monitoring is enabled in vip.toml
- When I check product health endpoints
- Then all configured products respond to health checks
Product server health 1 scenario
As a Posit Team administrator I want to verify that all configured product servers respond to health checks So that I know the services are running and reachable
tests/cross_product/test_resources.feature
-
All configured products respond to health checks
- Given at least one product is configured
- When I check the health of each configured product
- Then all products respond with a healthy status
SSL certificates and HTTPS 3 scenarios
As a Posit Team administrator I want to verify that SSL certificates are valid and HTTPS is enforced So that all traffic is encrypted
tests/cross_product/test_ssl.feature
-
SSL certificate is valid for <product>
- Given <product> is configured in vip.toml
- When I check the SSL certificate for <product>
- Then the certificate is valid and not expired
- And the certificate chain is complete
-
HTTP redirects to HTTPS for <product>
- Given <product> is configured in vip.toml
- When I request the HTTP URL for <product>
- Then the response redirects to HTTPS
- And the HTTP port is not open
-
TLS 1.2 or higher is enforced for <product>
- Given <product> is configured in vip.toml
- When I attempt a TLS connection to <product>
- Then TLS 1.0 and TLS 1.1 connections are rejected
- And TLS 1.2 or higher succeeds
Package Manager
vip verify --categories package_manager Private package repositories 1 scenario
As a Posit Team administrator I want to verify that private package repos resolve correctly So that internal packages can be installed
tests/package_manager/test_private_repos.feature
-
Private repositories are reachable
- Given Package Manager is running
- And private repositories are configured
- When I query each private repository
- Then each repository responds successfully
Package Manager repositories 4 scenarios
As a Posit Team administrator I want to verify that CRAN and PyPI mirrors are working So that R and Python packages can be installed from the correct source
tests/package_manager/test_repos.feature
-
CRAN mirror is accessible
- Given Package Manager is running
- When I query the CRAN repository for the "Matrix" package
- Then the package is found in the repository
-
PyPI mirror is accessible
- Given Package Manager is running
- When I query the PyPI repository for the "requests" package
- Then the package is found in the repository
-
Bioconductor mirror is accessible
- Given Package Manager is running
- When I query the Bioconductor repository for the "BiocGenerics" package
- Then the package is found in the repository
-
At least one repository is configured
- Given Package Manager is running
- When I list all repositories
- Then at least one repository exists
Performance
vip verify --categories performance Concurrent workload stability 3 scenarios
As a Posit Team administrator I want to verify system stability under concurrent usage So that the deployment can handle multiple simultaneous users
tests/performance/test_concurrency.feature
-
Multiple concurrent API requests to Connect succeed
- Given Connect is configured in vip.toml
- When I send concurrent health-check requests to Connect
- Then all requests succeed
- And the average response time is within the configured threshold
-
Multiple concurrent requests to Package Manager succeed
- Given Package Manager is configured in vip.toml
- When I send concurrent status requests to Package Manager
- Then all requests succeed
- And the average response time is within the configured threshold
-
Workbench handles concurrent health check requests
- Given Workbench is configured in vip.toml
- When I send concurrent health-check requests to Workbench
- Then all requests succeed
- And the average response time is within the configured threshold
Login and page load times 1 scenario
As a Posit Team administrator I want to verify that login and page load times are acceptable So that users have a responsive experience
tests/performance/test_login_load_times.feature
-
<product> login page loads within acceptable time
- Given <product> is configured in vip.toml
- When I measure the <product> login page load time
- Then the page loads within the configured timeout
Package installation speed 2 scenarios
As a Posit Team administrator I want to verify that package downloads from Package Manager are fast So that users and deployments are not blocked by slow installs
tests/performance/test_package_install_speed.feature
-
CRAN package downloads within acceptable time
- Given Package Manager is running and has a CRAN repo
- When I download a small CRAN package
- Then the download completes within the configured timeout
-
PyPI package downloads within acceptable time
- Given Package Manager is running and has a PyPI repo
- When I download a small PyPI package
- Then the download completes within the configured timeout
Remote product performance under load 2 scenarios
As a Posit Team administrator I want to verify that products respond quickly under moderate load So that users experience acceptable performance
tests/performance/test_resource_usage.feature
-
Products respond within acceptable time under moderate load
- Given at least one product is configured
- When I generate moderate API traffic for 10 seconds
- Then the p95 response time is within the configured threshold
- And the error rate is below 10 percent
-
Prometheus metrics endpoint is enabled
- Given at least one product is configured
- Then each product has a working Prometheus metrics endpoint
Security
vip verify --categories security Authentication policy alignment 2 scenarios
As a Posit Team administrator I want to verify that authentication aligns with organizational policy So that access controls meet compliance requirements
tests/security/test_auth_policy.feature
-
Auth provider matches expected configuration
- Given the expected auth provider is specified in vip.toml
- When I check the auth configuration
- Then the configured provider matches expectations
-
Unauthenticated API access is denied
- Given Connect is configured in vip.toml
- When I make an unauthenticated API request to Connect
- Then the request is rejected with 401 or 403
API error handling 3 scenarios
As a Posit Team administrator I want to verify that the API returns correct error responses So that authentication failures and bad requests are handled correctly
tests/security/test_error_handling.feature
-
Unauthenticated API request returns 401
- Given Connect is configured in vip.toml
- When I make an unauthenticated API request to Connect
- Then the response status is 401
-
Invalid API key returns 401
- Given Connect is configured in vip.toml
- When I make an API request to Connect with an invalid key
- Then the response status is 401
-
Non-existent endpoint returns 404
- Given Connect is configured in vip.toml
- When I request a non-existent endpoint on Connect
- Then the response status is 404
HTTPS enforcement 2 scenarios
As a Posit Team administrator I want to verify that HTTPS is enforced across all products So that traffic is encrypted in transit
tests/security/test_https.feature
-
<product> enforces HTTPS
- Given <product> is configured with an HTTPS URL
- When I make an HTTP request to <product>
- Then the connection is refused or redirected to HTTPS
-
<product> does not expose sensitive headers
- Given <product> is configured in vip.toml
- When I inspect response headers from <product>
- Then the server does not expose version information in headers
Secure storage of secrets and tokens 2 scenarios
As a Posit Team administrator I want to verify that secrets and tokens are stored securely So that credentials are not exposed
tests/security/test_secrets.feature
-
API keys are not stored in the VIP config file
- Given a VIP configuration file is in use
- When I inspect the configuration file contents
- Then no plaintext API keys or passwords are present in the file
-
Connect API key is provided via environment variable
- Given Connect is configured with an API key
- Then the API key was loaded from the VIP_CONNECT_API_KEY environment variable
Workbench
vip verify --categories workbench Workbench authentication 1 scenario
As a Posit Team administrator I want to verify that users can log in to Workbench So that I know authentication is properly configured
tests/workbench/test_auth.feature
-
User can log in to Workbench via the web UI
- Given Workbench is accessible at the configured URL
- When a user navigates to the Workbench login page and enters valid credentials
- Then the Workbench homepage is displayed
- And the current user is shown in the header
Workbench external data sources 1 scenario
As a Posit Team administrator I want to verify that external data sources are accessible from Workbench So that users can connect to databases and services from their sessions
tests/workbench/test_data_sources.feature
-
External data sources are reachable from Workbench
- Given Workbench is accessible at the configured URL
- And external data sources are configured in vip.toml
- When I verify data source connectivity
- Then all data sources are reachable
Workbench IDE launch 4 scenarios
As a Posit Team administrator I want to verify that all configured IDEs launch properly So that users can start working in their preferred environment
tests/workbench/test_ide_launch.feature
-
RStudio IDE session can be launched
- Given the user is logged in to Workbench
- When the user starts a new RStudio session
- Then the session transitions to Active state
- And the RStudio IDE is displayed and functional
- And the RStudio IDE can execute R code
- And the session is cleaned up
-
VS Code session can be launched
- Given the user is logged in to Workbench
- When the user starts a new VS Code session
- Then the session transitions to Active state
- And the VS Code IDE is displayed
- And the VS Code terminal is accessible
- And the session is cleaned up
-
JupyterLab session can be launched
- Given the user is logged in to Workbench
- When the user starts a new JupyterLab session
- Then the session transitions to Active state
- And the JupyterLab IDE is displayed
- And JupyterLab can execute code in a notebook
- And the session is cleaned up
-
Positron session can be launched
- Given the user is logged in to Workbench
- When the user starts a new Positron session
- Then the session transitions to Active state
- And the Positron IDE is displayed
- And the Positron console is accessible
- And the session is cleaned up
Workbench package installation source 1 scenario
As a Posit Team administrator I want to verify that Workbench installs packages from the correct source So that package provenance matches organizational policy
tests/workbench/test_packages.feature
-
R repos.conf points to the expected repository
- Given the user is logged in to Workbench
- When I check R repository configuration in an RStudio session
- Then the expected package repository URL is present
Workbench session management 1 scenario
tests/workbench/test_sessions.feature
-
Session can be suspended and resumed
- Given the user is logged in to Workbench
- When the user starts a new RStudio Pro session
- And the session reaches Active state
- And the user suspends the session
- Then the session reaches Suspended state
- When the user resumes the session
- Then the session reaches Active state again
- And the session is cleaned up