https://github.com/onecommons/unfurl-gui
vue + apollo + gitlab-ui
https://github.com/onecommons/unfurl-gui
Last synced: about 1 year ago
JSON representation
vue + apollo + gitlab-ui
- Host: GitHub
- URL: https://github.com/onecommons/unfurl-gui
- Owner: onecommons
- License: other
- Created: 2020-10-16T19:32:04.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2024-11-08T03:57:01.000Z (over 1 year ago)
- Last Synced: 2024-11-08T04:31:16.615Z (over 1 year ago)
- Language: JavaScript
- Size: 30.9 MB
- Stars: 5
- Watchers: 13
- Forks: 0
- Open Issues: 21
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[//]: # (README.md is generated by ./scripts/src/generate-readme.js, do not edit directly)
[//]: # (Edit files under ./.readme/ to change the contents of this README)
**Node LTS is recommended**
# Notes
`src/gitlab-oc` is a symlink to `packages/oc-pages`. The oc-pages package is also used in the gitlab-oc repo, so take care when making changes and make sure the code stays portable between gitlab-oc and unfurl-gui. When importing modules from inside oc-pages/ to other locations inside the src/ directory, use the appropriate aliases to prevent resolver errors on gitlab-oc. Check `vue.config.js` to see what the current aliases resolve to.
See Apollo boilerplate added with `vue add apollo`... see https://apollo.vuejs.org/
Need to run `yarn run apollo:start` first to start the apollo graphql server (runs on port 4000).
see https://gitlab-org.gitlab.io/gitlab-ui/ and https://gitlab-org.gitlab.io/gitlab-svgs/
gitlab-ui wraps https://bootstrap-vue.org/ which wraps bootstrap 4
It also depends on https://portal-vue.linusb.org/ which we could use to build a vs-code like minimap of a view using http://asvd.github.io/syncscroll/ or similar.
# Fixture/spec generation
Most integration tests hosted in this repository are based off of completed deployments or deployment drafts.
The easiest way to generate fixtures is to fill out a blueprint on [unfurl.cloud](https://unfurl.cloud) and export the deployment via Unfurl cli.
1. Navigate to https://unfurl.cloud/home#clone-instructions or `https://unfurl.cloud//dashboard#clone-instructions`
2. Copy and execute the command line snippet for "Clone this Unfurl project if you haven't already"
3. Run `unfurl export --format deployment --file /cypress/fixtures/generated/deployments/v2/.json `
# Jest patch/dryrun test
The test titled `ufsv-patch` mimics the workflow of a user filling out a deployment blueprint and triggering a dryrun deployment.
## Required envvars and params
**SPEC_GLOBS:** Whitespace separated globs indicating which deployments to be run. Spec are found in `cypress/fixtures/generated/deployments/v2` by default, but a different path will be searched depending on `TEST_VERSIONS`.
**GOOGLE_APPLICATION_CREDENTIALS:** Even dryrun tests fail when this variable is missing.
**--runInBand:** For now we do **NOT** want to try running tests in parallel.
## Supported envvars
All Unfurl environment variables pass through to `unfurl serve` and `unfurl deploy`.
**TEST_VERSIONS:** Which version of specs to run (default: v2)
**CI:** If present, log commands to curl artifacts, write deploy logs to `/tmp/${testName}-ufdryrun.log`. Outputs will be optimized for this test's companion `.gitlab-ci.yml` workflow.
**PORT:** The port to run `unfurl serve` on (default: 5001)
**OC_URL:** Base url for jest. Also used for `--cloud-server` (default https://unfurl.cloud)
**OC_NAMESPACE:** Namespace to run tests against; in other words - where the blueprints are located. (default: onecommons/blueprints)
**SAVE_DRYRUN_LOGS:** Write dry run logs to disk.
## Example invocation
```bash
env TF_PLUGIN_CACHE_DIR=/tmp/plugincache/ TF_DATA_DIR=/tmp/.terraform TF_PLUGIN_CACHE_MAY_BREAK_DEPENDENCY_LOCK_FILE=1 GOOGLE_APPLICATION_CREDENTIALS=/home/onecommons/oc-staging1-6aeb4c6ec6bc.json SPEC_GLOBS='*baserow*' yarn test ufsv-patch -- --runInBand
```
## Default Unfurl envvars
```javascript
const UNFURL_DEFAULT_ENV = {
UNFURL_LOGGING: 'trace',
UNFURL_HOME: '',
UNFURL_SKIP_SAVE: 'never',
}
```
## Test directory structure and outputs:
- `/tmp/ufsv`: The location of the test dashboard. Will be used as the working directory for `unfurl serve` and `unfurl deploy`.
- `/tmp/repos`: The location of `--clone-root` for `unfurl serve`.
- `/tmp/ufartifacts`: All deployments will be moved here between test runs, so as to not wipe debug information when the next spec is run. All `ensemble.yaml` files and artifacts will be present here after the suite has finished running.
- `/tmp/${testName}-ufsv.log`: Pattern for where `unfurl serve` logs will be written. Tip: use `less -r` to view.
- `/tmp/${testName}-ufdryrun.log`: Pattern for where `unfurl deploy` logs will be written when in CI (otherwise stdio). Tip: use `less -r` to view.
# Triggering a test pipeline
A test can be triggered via `curl | bash` as below. The first parameter to the bash script is the test to run (equivalent to the `$TEST` variable mentioned under [Cypress tests](#cypress-tests)).
Example:
`curl https://raw.githubusercontent.com/onecommons/unfurl-gui/cy-tests/scripts/trigger-pipeline.sh | bash -s baserow` will trigger the pipeline with `$TEST` set to `baserow`.
If successful the command will output the pipeline URL.
# Cypress tests
Cypress tests can be automatically run through gitlab ci by setting the `$TEST` pipeline variable
| Pattern | Spec | Description |
| ------- | ---- | ----------- |
| $TEST == "sanity" || $TEST == "visitor" || $TEST == "all" | ./cypress/e2e/00_visitor/*.js | Sanity checks for signed out users |
| $TEST == "nestedcloud" || $TEST == "all" | ./cypress/e2e/blueprints/*nestedcloud*.js | Run nestedcloud tests (must be <namespace>/nestedcloud) |
| $TEST == "nextcloud" || $TEST == "nextcloud_aws" || $TEST == "all" | ./cypress/e2e/blueprints/aws*nextcloud*.js | Runs all nextcloud tests on aws |
| $TEST == "nextcloud" || $TEST == "nextcloud_gcp" || $TEST == "all" | ./cypress/e2e/blueprints/gcp*nextcloud*.js | Runs all nextcloud tests on gcp |
| $TEST == "nextcloud" || $TEST == "nextcloud_do" || $TEST == "all" | ./cypress/e2e/blueprints/do*nextcloud*.js | Runs all nextcloud tests on digital ocean |
| $TEST =~ /baserow/ || $TEST == "all" | ./cypress/e2e/blueprints/*baserow*.js | Runs all baserow tests |
| $TEST =~ /minecraft/ || $TEST == "all" | ./cypress/e2e/blueprints/*minecraft*.js | Runs all minecraft tests |
| $TEST == "container_webapp" || $TEST == "all" | ./cypress/e2e/blueprints/*container-webapp*.js | Runs all container-webapp tests |
| $TEST == "container_webapp_gcp" | ./cypress/e2e/blueprints/gcp__container-webapp*.js | Runs container-webapp tests for gcp |
| $TEST == "container_webapp_aws" | ./cypress/e2e/blueprints/aws__container-webapp*.js | Runs container-webapp tests for aws |
| $TEST =~ /ghost/ || $TEST == "all" | ./cypress/e2e/blueprints/*ghost*.js | Runs all ghost tests |
| $TEST =~ /mediawiki/ || $TEST == "all" | ./cypress/e2e/blueprints/*mediawiki*.js | Runs all mediawiki tests |
| $TEST =~ /wordpress/ || $TEST == "all" | ./cypress/e2e/blueprints/*wordpress*.js | Runs all wordpress tests |
| $TEST =~ /k8s/ || ($TEST == "all" && $SKIP !~ /k8s/) | ./cypress/e2e/blueprints/k8s__wordpress*.js | Runs all kubernetes tests |
| $TEST =~ /uc_dns/ || $TEST == "all" | ./cypress/e2e/blueprints/aws__nextcloud__only-mail*.js | Runs aws nextcloud with unfurl cloud dns |
| $TEST == "cloud_redis" | cypress/e2e/blueprints/gcp__nextcloud__memorystore*.js
cypress/e2e/blueprints/aws__nextcloud__memorydb*.js | Runs all cloud redis tests |
| $TEST == "multiple_workflows" || $TEST == "misc" | cypress/e2e/deployments/multiple-workflows*.js | Tries to run multiple deployments simultaneously |
| $TEST == "smorgasbord" | cypress/e2e/deployments/smorgasbord*.js | Test inputs in smorgasbord blueprint |
| $TEST == "node_filter" || $TEST == "misc" | cypress/e2e/deployments/node-filter*.js | Test node filter on baserow |
| $TEST == "clone_draft" || $TEST == "misc" | cypress/e2e/deployments/clone-draft*.js | Clone and deploy a draft |
| $TEST == "drafts" || $TEST == "misc" | cypress/e2e/deployments/draft*.js | Try to trigger a state desync with drafts |
| $TEST == "dryrun" | cypress/e2e/blueprints/aws*
cypress/e2e/blueprints/az* | DRYRUN aws and azure |
| $TEST == "dryrun" | cypress/e2e/blueprints/gcp*
cypress/e2e/blueprints/do* | DRYRUN aws and azure |
| $TEST == "shared_volumes" || $TEST == "all" | cypress/e2e/deployments/shared-volume*.js | Runs all nextcloud shared volume tests
The test does the following:
1. Deploys nextcloud with a volume
2. Shares the volume
3. Tears down the first deployment
4. Creates a new nextcloud deployment with the shared volume
5. Asserts that admin credentials are the same on the new instance
|
| $TEST == "command" | N/A | evals $CY_COMMAND
## Running an arbitrary test examples with `$CY_COMMAND`
* Run a single spec by setting `$CY_COMMAND` to : yarn run integration-test run --namespace onecommons/blueprints -- --browser chrome -s cypress/e2e/deployments/drafts.cy.js