An open API service indexing awesome lists of open source software.

https://github.com/rancher/rancher-turtles-e2e

end-to-end tests for the Rancher CAPI extension
https://github.com/rancher/rancher-turtles-e2e

capi rancher testing

Last synced: 6 months ago
JSON representation

end-to-end tests for the Rancher CAPI extension

Awesome Lists containing this project

README

          

# rancher-turtles-e2e

[![UI-E2E_head_2.13](https://github.com/rancher/rancher-turtles-e2e/actions/workflows/ui-e2e.yaml/badge.svg?event=schedule)](https://github.com/rancher/rancher-turtles-e2e/actions/workflows/ui-e2e.yaml)

What tests are doing:
1. Create the infra stack ( GCP runner, cert-manager, rancher )
2. Install the Turtles chart with locally built latest chart
3. Deploy the Turtles UI extension
4. Test the Turtles menu, namespaces import features
5. Perform CAPI setup prerequisites
6. Create & Import CAPI cluster using fleet by cluster, namespace annotation
7. Create & Import CAPI cluster using ClusterClass UI
8. Install App on imported CAPI cluster
9. Scale the imported CAPI cluster
10. Remove & Delete the imported CAPI cluster

## Running the tests locally

### Pre-requisites
1. Install Rancher.
2. Install Rancher Turtles chart.
3. Install CAPI UI Extension.

### Running the test
1. `cd tests/cypress/latest`
2. Install Cypress and its dependencies: `npm install`
3. Export the following ENV VAR: `RANCHER_URL` (format: `https:///dashboard`), `RANCHER_PASSWORD`, `RANCHER_USER`, `CYPRESS_TAGS=@install [@short @full|@vsphere]`, and provider specific env var:
1. CAPA - `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`
2. CAPG - `GCP_CREDENTIALS` and `GCP_PROJECT`
3. CAPZ - `AZURE_TENANT_ID`, `AZURE_CLIENT_ID`, `AZURE_CLIENT_SECRET`, and `AZURE_SUBSCRIPTION_ID`.
4. CAPV - `VSPHERE_ENDPOINTS_LIST` (workflow only, otherwise hardcoded endpoint_ip is part of the following var), `VSPHERE_SECRETS_JSON_BASE64`, see [here](tests/cypress/latest/e2e/capv_rke2_cluster.spec.ts#L15) for reference.
4. Start Cypress: `./node_modules/cypress/bin/cypress open -C cypress.config.ts` or `npx cypress open --env grepTags="@install @short"`

The Cypress GUI should now be visible.

---

# Test structure
We categorize our tests using tags such as `short`, `full`, `vsphere`, and `install`.
Tests tagged with `short` are local (docker-based) tests, while those tagged with `vsphere` are specific to vSphere.
Tests tagged with `full` are cloud provider-based tests. The `install` tag is used for initial setup tests ('install' tag is also to be included in setup tests title).

# Running tests using Cypress grep
We have implemented tags for more precise selection of tests using a Cypress plugin called [cypress-grep](https://github.com/cypress-io/cypress/tree/develop/npm/grep)

Note: the title can be either at `describe`, `context` or `it` level.

By default, daily runs will run test with the tags`@install`, `@short`

To use locally use the tag `--env grepTags=tag` along with the npx command

For example:
```
npx cypress run -C cypress.config.ts --env grepTags="@short" cypress/e2e/*.spec.ts
```