|
|
# wasm-pack test
|
|
|
|
|
|
The `wasm-pack test` command wraps the [wasm-bindgen-test-runner](https://rustwasm.github.io/wasm-bindgen/wasm-bindgen-test/index.html)
|
|
|
CLI allowing you to run wasm tests in different browsers without needing to install the different
|
|
|
webdrivers yourself.
|
|
|
|
|
|
```
|
|
|
wasm-pack test --help
|
|
|
```
|
|
|
|
|
|
## Path
|
|
|
|
|
|
The `wasm-pack test` command can be given an optional path argument.
|
|
|
|
|
|
This path should point to a directory that contains a `Cargo.toml` file. If no
|
|
|
path is given, the `test` command will run in the current directory.
|
|
|
|
|
|
```
|
|
|
# Run tests for the current directory's crate
|
|
|
wasm-pack test
|
|
|
|
|
|
# Run tests for a specified crate
|
|
|
wasm-pack test crates/crate-in-my-workspace
|
|
|
```
|
|
|
|
|
|
## Profile
|
|
|
|
|
|
The `test` command accepts an optional profile argument: `--release`.
|
|
|
|
|
|
If none is supplied, then a debug test build will be used.
|
|
|
|
|
|
## Test environment
|
|
|
|
|
|
Choose where to run your tests by passing in any combination of testing environment flags.
|
|
|
|
|
|
`--headless` is useful for running browser tests in a headless browser as part of a CI process.
|
|
|
|
|
|
```
|
|
|
wasm-pack test --node --firefox --chrome --safari --headless
|
|
|
```
|
|
|
|
|
|
## Extra options
|
|
|
|
|
|
The `test` command can pass extra options straight to `cargo test` even if they are not
|
|
|
supported in wasm-pack.
|
|
|
|
|
|
To use them you should add standalone `--` argument at the very
|
|
|
end of your command, and all the arguments you want to pass to cargo should go after.
|
|
|
|
|
|
`cargo test -h` for a list of all options that you can pass through.
|
|
|
|
|
|
## Running only some tests
|
|
|
|
|
|
When debugging a specific issue, you may find yourself wanting to run a subset of tests, instead of your entire suite of tests.
|
|
|
|
|
|
Here are a few examples of how to run a subset of your tests:
|
|
|
|
|
|
```
|
|
|
# Example directory structure
|
|
|
$ tree crates/foo
|
|
|
├── Cargo.toml
|
|
|
├── README.md
|
|
|
├── src
|
|
|
│ ├── diff
|
|
|
│ │ ├── diff_test_case.rs
|
|
|
│ │ └── mod.rs
|
|
|
│ ├── lib.rs
|
|
|
└── tests
|
|
|
├── diff_patch.rs
|
|
|
└── node.rs
|
|
|
```
|
|
|
|
|
|
```
|
|
|
# Run all tests in tests/diff_patch.rs in Firefox
|
|
|
wasm-pack test crates/foo --firefox --headless -- --test diff_patch
|
|
|
|
|
|
# Run all tests in tests/diff_patch.rs that contain the word "replace"
|
|
|
wasm-pack test crates/foo --firefox --headless -- --test diff_patch replace
|
|
|
|
|
|
# Run all tests inside of a `tests` module inside of src/lib/diff.rs
|
|
|
wasm-pack test crates/foo --firefox --headless -- --lib diff::tests
|
|
|
|
|
|
# Same as the above, but only if they contain the word replace
|
|
|
wasm-pack test crates/foo --firefox --headless -- --lib diff::tests::replace
|
|
|
```
|
|
|
|
|
|
Note that you can also filter tests by location in which they're supposed to
|
|
|
run. For example:
|
|
|
|
|
|
```
|
|
|
# Run all tests which are intended to execute in Node.js
|
|
|
wasm-pack test --node
|
|
|
|
|
|
# Run all tests which are intended to be executed in a browser
|
|
|
wasm-pack test --firefox --headless
|
|
|
```
|
|
|
|