Collect all env vars in one, easy-to-find place (#1149)

* Collect all env vars in one, easy-to-find place

Past state:
* Default environement variables were stored in both client/package.json
and client/__tests__/e2e/config.js
* Constants that should have been linked--like the cellxgene server port
during testing--were repeated.

With this commit:
* All environment variables are parameterized
* All environment variables are packaged in default env files

* Move npm scripts to client Makefile

* Respond to feedback from @seve and @bkmartinjr
This commit is contained in:
Matt Weiden
2020-02-12 12:50:48 -08:00
committed by GitHub
parent 5340a5f951
commit ac13b31e13
16 changed files with 777 additions and 287 deletions

View File

@@ -9,6 +9,12 @@
**All instructions are expected to be run from the top level cellxgene directory unless otherwise specified.**
### Environment
For all `make` commands, `common.mk` automatically checks whether required environment variables are set and, if they are not set, assigns them default values from `environment.default`.
You can set these environment variables manually with the `export` shell command, as in `export JEST_ENV=debug`.
## Running test suite
Client and server tests run on Travis CI for every push, PR, and commit to master on github. End to end tests run nightly on master only.
@@ -18,21 +24,19 @@ Steps to run the all unit tests:
1. `make dev-env`
1. `make unit-test`
To run unit tests for the `client` code only:
1. Start in the project root directory
1. `cd client`
1. `make unit-test`
### End to end tests
End to end tests use two env variables:
* `JEST_ENV` - environment to run end to end tests. Default `dev`
* `prod` - run headless with no slowdown, chromium will not open.
* `dev` - opens chromimum, runs tests with minimal slowdown, close on exit.
* `debug` - opens chromium, runs tests with 100ms slowdown, dev tools open, chrome stays open on exit.
* `JEST_CXG_PORT` - port that end to end tests are being run on. Default `3000` (client hosted port).
To run E2E tests, run `cd client` and `make smoke-test`
On CI the end to end tests are run with `JEST_ENV` set to `prod` using the `smoke-test` make target.
To run end to end tests as they will be run on CI use the following command:
```
JEST_ENV=prod JEST_CXG_PORT=5000 make pydist install-dist dev-env smoke-test
```
The `JEST_ENV` environment variable enables the following E2E test options:
* `dev` - opens chromimum, runs tests with minimal slowdown, close on exit.
* `debug` - opens chromium, runs tests with 100ms slowdown, dev tools open, chrome stays open on exit.
* `prod` - run headless with no slowdown, chromium will not open.
Run end to end tests interactively during development
1. cellxgene should be installed as [specified in client dev](#install-1)
@@ -40,6 +44,11 @@ Run end to end tests interactively during development
1. Run `npm run e2e` or `make e2e` from the `client` directory
1. To debug a failing test `export JEST_ENV='debug'` and re-run.
To run end to end tests _exactly_ as they will be run on CI use the following command:
```
JEST_ENV=prod make pydist install-dist dev-env smoke-test
```
## Server dev
### Install
* Build the client and put static files in place: `make build-for-server-dev`