102 lines
3.4 KiB
Markdown
102 lines
3.4 KiB
Markdown
# Dash3D Integration Testing (beta)
|
|
|
|
Because Dash3d is still in experimental stage, we opt for only
|
|
high-level integration testing at this point.
|
|
|
|
## Dependencies
|
|
|
|
To run tests, install [node js](https://nodejs.org/):
|
|
```
|
|
conda install -c conda-forge nodejs
|
|
```
|
|
|
|
Make sure to install system dependencies required by
|
|
[Cypress](https://docs.cypress.io/guides/getting-started/installing-cypress.html#System-requirements).
|
|
|
|
Most front end dependencies are managed by [npm](https://www.npmjs.com/),
|
|
automatically installed with node. To install front end dependencies, run
|
|
the following from the **root of kaolin**:
|
|
```
|
|
npm install
|
|
```
|
|
|
|
## How to run all tests
|
|
|
|
All integration tests are wrapped in python. To run all tests
|
|
from the root of kaolin:
|
|
```
|
|
pytest --capture=tee-sys tests/integration/experimental/dash3d/
|
|
```
|
|
|
|
## Under the Hood
|
|
|
|
Currently, the only javascript tests are integration, and we call
|
|
the javascript test from a python test file. In the future, this
|
|
may change.
|
|
|
|
#### Mocha Tests
|
|
|
|
Javascript tests that can run *outside of the browser* are
|
|
implemented using [Mocha](https://mochajs.org/). Note that
|
|
currently, **all js tests are called from python**. To run
|
|
Mocha tests manually, run:
|
|
```
|
|
npx mocha "./tests/integration/experimental/dash3d/*.js"
|
|
```
|
|
*Note:* his will fail, because it expects
|
|
data generated by python wrapper tests.
|
|
|
|
Failing mocha tests can be debugged in Chrome by running:
|
|
```
|
|
./node_modules/mocha/bin/mocha --inspect --inspect-brk path/to/test.js
|
|
```
|
|
Then, in Chrome navigate to [chrome://inspect/](chrome://inspect/) and
|
|
click "Open dedicated DevTools for Node". You may need to manually add
|
|
the test and `static` sibdirectories under sources.
|
|
|
|
#### Cypress Tests
|
|
|
|
End-to-end tests that *require a browser* are implemented
|
|
using [Cypress](https://www.cypress.io/). Note that currently, **all cypress
|
|
tests are called from python**, but the tests themselves
|
|
are written in javascript and located in `tests/integration/experimental/dash3d/cypress/integration/`. It is essential to be able
|
|
to run them manually for debugging.
|
|
|
|
First run a python test that spins up a dash3d instance in the
|
|
background (note that multiple invokations of this may require you
|
|
to set `--skip_start_dash3d` at the end of the command in case
|
|
dash3d is already running):
|
|
```
|
|
python -m tests.integration.experimental.dash3d.run_e2e_test
|
|
```
|
|
This test also runs cypress tests, but in case they fail it's useful to invoke cypress manually.
|
|
|
|
To open cypress UI:
|
|
```
|
|
npx cypress open --config-file tests/integration/experimental/dash3d/cypress.json
|
|
```
|
|
|
|
Alternatively, run cypress tests automatically (this is called from `run_e2e_test`):
|
|
```
|
|
npx cypress run --config-file tests/integration/experimental/dash3d/cypress.json
|
|
```
|
|
|
|
#### Debugging Cypress Tests
|
|
|
|
Cypress writes a lot of diagnostic information during testing. Opening debug console in the browser during test execution is helpful. Also, check
|
|
out the following directories:
|
|
* screenshots: `tests/integration/experimental/dash3d/cypress/screenshots/`
|
|
* videos: `tests/integration/experimental/dash3d/cypress/videos/`
|
|
* renderings from tests: `tests/integration/experimental/dash3d/cypress/test_output/`
|
|
|
|
Most of the tests perform visual regression to ensure that the right
|
|
geometry is passed from the server to the client. As a consequence,
|
|
changes to rendering properties will break the test and require
|
|
change to golden files. The `test_output` directory will contain
|
|
the updated golden files.
|
|
|
|
|
|
|
|
|
|
|