2c2e9d1ce5
Here we look for a TESTEM_AUTOLAUNCH environment variable, which can be set to either Chrome, Firefox or Safari, which will control which browser to automatically start when running testem tests. If the variable is set to anything else, then it will not automatically start a browser in order to run the tests and you will need to visit the tests manually. e.g.: TESTEM_AUTOLAUNCH=0 make test-oss-view Previously we only ever tested in Chrome and therefore there are no specific settings for Firefox or Safari. If specific settings are required for these browsers they can be added at a later date. |
||
---|---|---|
.. | ||
.storybook | ||
app | ||
blueprints | ||
config | ||
lib | ||
mock-api | ||
node-tests/config | ||
public | ||
server | ||
tests | ||
translations | ||
vendor | ||
.dev.eslintrc.js | ||
.editorconfig | ||
.ember-cli | ||
.eslintignore | ||
.eslintrc.js | ||
.istanbul.yml | ||
.nvmrc | ||
.prettierrc | ||
.template-lintrc.js | ||
.watchmanconfig | ||
GNUmakefile | ||
README.md | ||
ember-cli-build.js | ||
package.json | ||
testem.js |
README.md
consul-ui
Prerequisites
You will need the following things properly installed on your computer.
-
Node.js (with npm)
Installation
git clone https://github.com/hashicorp/consul.git
this repositorycd ui/packages/consul-ui
make start
oryarn && yarn start
Yarn Commands
Most used tooling scripts below primarily use make
which will yarn install
and in turn call node package scripts.
List of available project commands. yarn run <command-name>
Command | Description |
---|---|
build:staging | Builds the UI in staging mode (ready for PR preview site). |
build:ci | Builds the UI for CI. |
build | Builds the UI for production. |
lint | Runs all lint commands. |
lint:hbs | Lints hbs template files. |
lint:js | Lints js files. |
format | Runs all auto-formatters. |
format:js | Auto-formats js files using Prettier. |
format:sass | Auto-formats scss files using Prettier. |
start | Runs the development app on a local server using the mock API. |
start:consul | Runs the development app local server using a real consul instance as the backend. |
start:staging | Runs the staging app local server. |
test | Runs the ember tests in a headless browser. |
test:view | Runs the ember tests in a non-headless browser. |
test:oss | Runs only the OSS ember tests in a headless browser. |
test:oss:view | Runs only the OSS ember tests in a non-headless browser. |
test:coverage:view | Runs only the test specified for coverage in a non-headless browser. |
test:node | Runs tests that can't be run in ember using node. |
doc:toc | Automatically generates a table of contents for this README file. |
Running / Development
The source code comes with a small development mode that runs enough of the consul API as a set of mocks/fixtures to be able to run the UI without having to run consul.
make start
oryarn start
to start the ember app- Visit your app at http://localhost:4200.
You can also run the UI against a normal Consul installation.
consul server -dev
to start consul listening on http://localhost:8500make start-consul
to start the ember app proxying toconsul
(this will respect theCONSUL_HTTP_ADDR
environment variable to locate the Consul installation.- Visit your app at http://localhost:4200.
Example:
CONSUL_HTTP_ADDR=http://10.0.0.1:8500 make start-consul
Browser 'Environment' Variables
In order to configure different configurations of Consul you can use Web Inspector in your browser to set various cookie which to emulate different configurations whislt using the mock API.
For example: to enable ACLs, use Web Inspector to set a cookie as follows:
CONSUL_ACLS_ENABLE=1
This will enable the ACLs login page, to which you can login with any ACL token/secret.
Variable | Default Value | Description |
---|---|---|
CONSUL_ACLS_ENABLE |
false | Enable/disable ACLs support. |
CONSUL_ACLS_LEGACY |
false | Enable/disable legacy ACLs support. |
CONSUL_NSPACES_ENABLE |
false | Enable/disable Namespace support. |
CONSUL_SSO_ENABLE |
false | Enable/disable SSO support. |
CONSUL_OIDC_PROVIDER_URL |
undefined | Provide a OIDC provider URL for SSO. |
CONSUL_LATENCY |
0 | Add a latency to network requests (milliseconds) |
CONSUL_METRICS_POLL_INTERVAL |
10000 | Change the interval between requests to the metrics provider (milliseconds) |
CONSUL_METRICS_PROXY_ENABLE |
false | Enable/disable the metrics proxy |
CONSUL_METRICS_PROVIDER |
Set the metrics provider to use for the Topology Tab | |
CONSUL_SERVICE_DASHBOARD_URL |
Set the template URL to use for Service Dashboard links | |
CONSUL_UI_CONFIG |
Set the entire ui_config for the UI as JSON if you don't want to use the above singular variables |
|
CONSUL_SERVICE_COUNT |
(random) | Configure the number of services that the API returns. |
CONSUL_NODE_COUNT |
(random) | Configure the number of nodes that the API returns. |
CONSUL_KV_COUNT |
(random) | Configure the number of KV entires that the API returns. |
CONSUL_INTENTION_COUNT |
(random) | Configure the number of intentions that the API returns. |
CONSUL_POLICY_COUNT |
(random) | Configure the number of policies that the API returns. |
CONSUL_ROLE_COUNT |
(random) | Configure the number of roles that the API returns. |
CONSUL_NSPACE_COUNT |
(random) | Configure the number of namespaces that the API returns. |
CONSUL_UPSTREAM_COUNT |
(random) | Configure the number of upstreams that the API returns. |
CONSUL_EXPOSED_COUNT |
(random) | Configure the number of exposed paths that the API returns. |
CONSUL_CHECK_COUNT |
(random) | Configure the number of health checks that the API returns. |
CONSUL_OIDC_PROVIDER_COUNT |
(random) | Configure the number of OIDC providers that the API returns. |
CONSUL_RESOURCE_<singular-resource-name>_<access-type> |
true | Configure permissions e.g CONSUL_RESOURCE_INTENTION_WRITE=false . |
DEBUG_ROUTES_ENDPOINT |
undefined | When using the window.Routes() debug utility (see utility functions), use a URL to pass the route DSL to. %s in the URL will be replaced with the route DSL - http://url.com?routes=%s |
See ./mock-api
for more details.
Browser 'Debug Utility' Functions
We currently have one 'debug utility', that only exists during development (they
are removed from the production build using Embers runInDebug
). You can call
these either straight from the console in WebInspector, or by using javascript
URLs i.e. javascript:Routes()
Variable | Arguments | Description |
---|---|---|
Routes(url) |
url: The url to pass the DSL to, if left undefined just use a blank tab |
Provides a way to easily print out Embers Route DSL for the application or to pass it straight to any third party utility such as ember-diagonal |
Scenario(str) |
str: 'Cookie formatted' string, if left undefined open a new tab with a link/bookmarklet to the current Scenario |
Provides a way to easily save and reload scenarios of configurations via URLs or bookmarklets |
Code Generators
Many classes used in the UI can be generated with ember generators, try ember help generate
for more details
Running Tests
Tests use the mock api (see ./mock-api for details)
make test
oryarn run test
make test-view
oryarn run test:view
to view the tests running in Chrome
OSS only tests can also be run using:
make test-oss
oryarn run test:oss
make test-oss-view
oryarn run test:oss:view
to view the tests running in Chrome
Linting
make lint
currently runs linting on the majority of js files and hbs files (using ember-template-lint
).
See .eslintrc.js
and .eslintignore
for specific configuration.
Building
make build
builds the UI for production usage (env=production)make build-ci
builds the UI for CI/test usage (env=test)
Static files are built into ./dist
Running Tests in Parallel
Alternatively, ember-exam
can be used to split the tests across multiple browser instances for faster results. Most options are the same as ember test
. To see a full list of options, run ember exam --help
.
Note: The EMBER_EXAM_PARALLEL
environment variable must be set to override the default parallel
value of 1
browser instance in testem.js.
To quickly run the tests across 4 parallel browser instances:
make test-parallel
To run manually:
$ EMBER_EXAM_PARALLEL=true ./node_modules/.bin/ember exam --split <num> --parallel
More ways to split tests can be found in the ember-exam README.md.