提交测试
This commit is contained in:
101
tests/integration/experimental/dash3d/README.md
Normal file
101
tests/integration/experimental/dash3d/README.md
Normal file
@@ -0,0 +1,101 @@
|
||||
# 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.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user