Adopt cargo-make (#1541)

* format and cleanup

* remove bash scripts

* update pr template

* ignore router examples

* add pr-flow task

* I really don't know what I'm doing

* add wasm_bench feature

* well that explains one of my issues

also, that Geckodriver issue seems to be resolved

* run macro tests on 1.45.2

* update the documentation

* test flags no longer necessary

* remove benchmark instructions

* finishing touch
This commit is contained in:
Simon 2020-09-14 15:39:27 +02:00 committed by GitHub
parent 69016bb990
commit b6e98adac0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 240 additions and 318 deletions

View File

@ -1,25 +1,15 @@
#### Description #### Description
<!-- Please include a summary of the change and which issue is fixed. --> <!-- Please include a summary of the change. -->
Fixes # (issue) Fixes #0000 <!-- replace with issue number or remove if not applicable -->
#### Checklist: #### Checklist
- [ ] I have run `./ci/run_stable_checks.sh` <!-- For further details, please read CONTRIBUTING.md -->
- [ ] I have run `cargo make pr-flow`
- [ ] I have reviewed my own code - [ ] I have reviewed my own code
- [ ] I have added tests - [ ] I have added tests
<!-- If this is a bug fix, these tests will fail if the bug is present (to stop it from cropping up again) --> <!-- If this is a bug fix, these tests will fail if the bug is present (to stop it from cropping up again) -->
<!-- If this is a feature, my tests prove that the feature works --> <!-- If this is a feature, my tests prove that the feature works -->
<!-- Testing instructions -->
<!-- Check out the link below on how to setup and run tests -->
<!-- https://github.com/yewstack/yew/blob/master/CONTRIBUTING.md#test -->
<!-- If you're not sure how to test, let us know and we can provide guidance :) -->
<!-- Benchmark instructions -->
<!-- 1. Fork and clone https://github.com/yewstack/js-framework-benchmark -->
<!-- 2. Update `frameworks/yew/Cargo.toml` with your fork of Yew and the branch for this PR -->
<!-- 3. Open a new PR with your `Cargo.toml` changes -->
<!-- 4. Paste a link to the benchmark results: -->
<!-- - [ ] I have opened a PR against https://github.com/yewstack/js-framework-benchmark -->

View File

@ -160,15 +160,6 @@ jobs:
restore-keys: | restore-keys: |
cargo-${{ runner.os }}- cargo-${{ runner.os }}-
# FIXME: Only needed because of <https://github.com/rustwasm/wasm-bindgen/issues/2261>
- name: Install geckodriver
run: |
cd ~
mkdir geckodriver
curl --retry 5 -LO https://github.com/mozilla/geckodriver/releases/download/v0.26.0/geckodriver-v0.26.0-linux64.tar.gz
tar -xzf geckodriver-*-linux64.tar.gz -C geckodriver
echo "::add-path::$HOME/geckodriver"
- name: Run tests - yew - name: Run tests - yew
env: env:
HTTPBIN_URL: "http://localhost:8080" HTTPBIN_URL: "http://localhost:8080"

View File

@ -2,18 +2,26 @@
## Setting up your local development environment ## Setting up your local development environment
### Add the wasm target ### Add the WASM target
```bash ```bash
rustup target add wasm32-unknown-unknown rustup target add wasm32-unknown-unknown
``` ```
### Build ### Install [cargo-make](https://github.com/sagiegurari/cargo-make)
```bash ```bash
cargo build --target wasm32-unknown-unknown cargo install cargo-make
``` ```
You can use the following command to list all available tasks for Yew:
```bash
cargo make --list-all-steps
```
The most important tasks are outlined below.
#### stdweb #### stdweb
To run the examples in `./yew-stdweb`, you may wish to install [cargo-web](https://github.com/koute/cargo-web): To run the examples in `./yew-stdweb`, you may wish to install [cargo-web](https://github.com/koute/cargo-web):
@ -24,92 +32,64 @@ cargo install cargo-web
## Tests ## Tests
Yew has unit tests which run via `cargo test`. However, a browser is required to run a large portion of the tests. To run all tests, use the following command:
This section will guide you through the process of running these tests locally.
### Integration Tests
First, install `wasm-pack`.
[Instructions](https://rustwasm.github.io/wasm-pack/installer/)
`wasm-pack` automatically takes care of installing the correct `wasm-bindgen` version and downloading a WebDriver for the browser.
The following command is all you need to run the tests:
```bash ```bash
wasm-pack test --firefox --headless -- --features wasm_test cargo make tests
``` ```
You can replace `--firefox` with `--chrome` or `--safari` if you want to run the tests in a different browser. Currently, Yew's CI tests use Firefox. ### Browser tests
Make sure to run the command in the directory of the crate you wish to test (e.g. `yew` or `yewtil`). `cargo make tests` will automatically download Geckodriver to a temporary location if it isn't in the PATH.
If you run the command in the repository root you will get an error like this:
```bash ### Fetch service tests
Error: failed to parse manifest: yew/Cargo.toml
Caused by: missing field `package`
```
#### Manually installing a WebDriver The tests for the fetch service require a local [httpbin](https://httpbin.org/) server.
If you have [Docker](https://www.docker.com/) installed,
`cargo make tests` will automatically run httpbin in a container for you.
`wasm-pack` automatically downloads the selected WebDriver for you. Alternatively, you can manually run an httpbin instance however you want and set the `HTTPBIN_URL` environment variable to the URL.
If desired, you can download a WebDriver manually. For instructions, please consult the documentation of the WebDriver you wish to install.
You might want to pass the argument `--mode no-install` to `wasm-pack` to make sure it doesn't try to install something. Please note that the public httpbin instance can't be used for these tests.
If the WebDriver binary is in the path, you can use the same command as above to run the tests.
If not, you need to tell `wasm-pack test` where to find it using the `--geckodriver`, `--chromedriver`, or `--safaridriver` option.
Run `wasm-pack test --help` to learn more.
#### Running all tests
You can use the `/ci/run_tests.sh` script to run all tests, which is the same script that is used by Yew's CI to run the whole test suite.
The script currently always runs the tests in Firefox.
#### Fetch service tests
The following only applies to the `yew` (and `yew-stdweb`) crate.
The tests for the fetch service require a local httpbin server. We recommend running this with [Docker](https://www.docker.com/):
```bash
docker run -p 8000:80 kennethreitz/httpbin
```
Before running the tests, you need to set the `HTTPBIN_URL` environment variable to the URL of your httpbin instance.
If you used the previous command to start the server the value should be "http://localhost:8000" (You mustn't add a trailing slash).
```shell
# Unix-like
export HTTPBIN_URL="http://localhost:8000"
# Windows
set HTTPBIN_URL=http://localhost:8000
```
You also need to activate the `httpbin_test` feature for the tests to run:
```bash
wasm-pack test --firefox --headless -- --features wasm_test,httpbin_test
```
If you're using the `/ci/run_tests.sh` script you only need to set the environment variable. The script will automatically add the feature.
### Macro tests ### Macro tests
When adding or updating tests, please make sure you have updated the appropriate `stderr` file, which you can find [here](https://github.com/yewstack/yew/tree/master/yew-macro/tests/macro) for the `html!` macro. These files ensure that macro compilation errors are correct and easy to understand. When adding or updating tests, please make sure to update the appropriate `stderr` file, which you can find [here](https://github.com/yewstack/yew/tree/master/yew-macro/tests/macro) for the `html!` macro.
These files ensure that macro compilation errors are correct and easy to understand.
These errors can change with each release of the compiler so they should be generated with the MSRV (currently 1.45).
To update or generate a new `stderr` file you can run `TRYBUILD=overwrite cargo test --test macro_test` or `TRYBUILD=overwrite cargo test --test derive_props_test` from the `yew-macro` directory. To update or generate a new `stderr` file you can run `TRYBUILD=overwrite cargo +1.45.2 test` in the `yew-macro` directory.
## Linting
The following command checks the code using Rustfmt and Clippy:
```bash
cargo make lint
```
To automatically fix formatting issues, run `cargo fmt` first.
## Benchmarks ## Benchmarks
If you wish to improve the performance of Yew, we ask you to prove the improvements of your changes through benchmarking. If you wish to improve the performance of Yew, we ask you to prove the improvements of your changes through benchmarking.
Some components of Yew have dedicated benchmarks which can be run with the following command:
```bash
cargo make benchmarks
```
There's also a benchmark for the framework as a whole. Running it is a bit more involved:
1. Fork and clone [yewstack/js-framework-benchmark](https://github.com/yewstack/js-framework-benchmark) 1. Fork and clone [yewstack/js-framework-benchmark](https://github.com/yewstack/js-framework-benchmark)
2. Update `frameworks/yew/Cargo.toml` with your fork of Yew and the branch for your changes 2. Update `frameworks/yew/Cargo.toml` with your fork of Yew and the branch for your changes
3. Open a new PR with your `Cargo.toml` changes 3. Open a new PR with your `Cargo.toml` changes
Feel free to add new benchmark tests if the current benchmark coverage is insufficient! Feel free to add new benchmark tests if the current benchmark coverage is insufficient!
> See #1453 for a discussion on how to make this easier.
## Writing APIs ## Writing APIs
When building new APIs, think about what it would be like to use them. Would this API cause confusing and hard to pin error mesages? Would this API integrate well with other APIs? Is it intuitive to use this API? When building new APIs, think about what it would be like to use them. Would this API cause confusing and hard to pin error mesages? Would this API integrate well with other APIs? Is it intuitive to use this API?

View File

@ -1,12 +1,14 @@
###################### ######################
# #
# public tasks: # public tasks:
# * stable-checks # * pr-flow
# * run-tests # * lint
# * tests
# * benchmarks
#
# Run `cargo make --list-all-steps` for more details.
# #
###################### ######################
[config] [config]
min_version = "0.32.4" min_version = "0.32.4"
default_to_workspace = false default_to_workspace = false
@ -14,23 +16,44 @@ default_to_workspace = false
[env] [env]
CARGO_MAKE_EXTEND_WORKSPACE_MAKEFILE = true CARGO_MAKE_EXTEND_WORKSPACE_MAKEFILE = true
CARGO_MAKE_CLIPPY_ARGS = "-- --deny=warnings" CARGO_MAKE_CLIPPY_ARGS = "-- --deny=warnings"
CARGO_MAKE_CARGO_BUILD_TEST_FLAGS = ""
[config.modify_core_tasks] [config.modify_core_tasks]
private = true private = true
namespace = "core" namespace = "core"
[tasks.stable-checks] [tasks.pr-flow]
description = "Runs all validations for both workspaces on rust stable only." category = "Checks"
condition = { channels = [ "stable" ] } description = "Lint and test"
run_task = { name = [ "stable-checks-flow", "stable-checks-stdweb" ], fork = true } run_task = { name = ["lint", "tests"], fork = true }
[tasks.run-tests] [tasks.lint]
category = "Checks"
description = "Check formatting and run Clippy"
run_task = { name = ["lint-flow", "lint-stdweb"], fork = true }
[tasks.tests]
category = "Testing"
description = "Run all tests"
dependencies = ["tests-setup"] dependencies = ["tests-setup"]
env = { CARGO_MAKE_WORKSPACE_SKIP_MEMBERS = ["examples/*", "yewtil/examples/*"] } env = { CARGO_MAKE_WORKSPACE_SKIP_MEMBERS = ["**/examples/*"] }
run_task = { name = [ "run-tests-flow", "run-tests-stdweb" ], fork = true, cleanup_task = "tests-cleanup" } run_task = { name = [
"test-flow",
"tests-stdweb",
"doc-test-flow",
], fork = true, cleanup_task = "tests-cleanup" }
[tasks.stable-checks-stdweb] [tasks.benchmarks]
category = "Testing"
description = "Run benchmarks"
env = { CARGO_MAKE_WORKSPACE_SKIP_MEMBERS = ["**/examples/*"] }
run_task = { name = "bench-flow", fork = true }
[tasks.lint-flow]
private = true
workspace = true
dependencies = ["core::check-format-flow", "core::clippy-flow"]
[tasks.lint-stdweb]
private = true private = true
cwd = "yew-stdweb" cwd = "yew-stdweb"
command = "cargo" command = "cargo"
@ -40,115 +63,96 @@ args = [
"${CARGO_MAKE_LOG_LEVEL}", "${CARGO_MAKE_LOG_LEVEL}",
"--profile", "--profile",
"${CARGO_MAKE_PROFILE}", "${CARGO_MAKE_PROFILE}",
"stable-checks-flow" "lint-flow",
] ]
[tasks.stable-checks-flow]
private = true
workspace = true
dependencies = [
"core::check-format-flow",
"core::check-flow",
"core::clippy-flow",
"post-stable-checks"
]
[tasks.post-stable-checks]
[tasks.web-check]
command = "cargo"
args = ["web", "check", "--target", "wasm32-unknown-unknown"]
[tasks.tests-setup] [tasks.tests-setup]
private = true
script_runner = "@duckscript"
script = [ script = [
''' """
#!@duckscript test_flags = array --headless --firefox
test_flags= array --headless --firefox yew_test_features = set wasm_test
yew_test_features= set wasm_test
fn set_httpbin_test_features fn set_httpbin_test_features
HTTPBIN_URL = get_env HTTPBIN_URL HTTPBIN_URL = get_env HTTPBIN_URL
echo INFO: using ${HTTPBIN_URL} for fetch service tests echo INFO: using ${HTTPBIN_URL} for fetch service tests
yew_test_features = set "${yew_test_features},httpbin_test" yew_test_features = set "${yew_test_features},httpbin_test"
end end
if is_defined HTTPBIN_URL if is_defined HTTPBIN_URL
set_httpbin_test_features set_httpbin_test_features
else else
# only enable docker if docker executable is available # only enable docker if docker executable is available
# and --skip-httpbin cli argument not provided to cargo make # and --skip-httpbin cli argument not provided to cargo make
docker_path = which docker docker_path = which docker
start_docker = is_defined docker_path start_docker = is_defined docker_path
args_provided = not is_empty ${CARGO_MAKE_TASK_ARGS} args_provided = not is_empty ${CARGO_MAKE_TASK_ARGS}
if ${args_provided} if ${args_provided}
args = split ${CARGO_MAKE_TASK_ARGS} ; args = split ${CARGO_MAKE_TASK_ARGS} ;
for arg in ${args} for arg in ${args}
if eq ${arg} --skip-httpbin if eq ${arg} --skip-httpbin
start_docker = set false start_docker = set false
release ${args} release ${args}
end
end end
end end
end
if ${start_docker} if ${start_docker}
echo Starting httpbin docker image... echo Starting httpbin docker image...
mkdir ./target mkdir ./target
cidfile = set ./target/httpbin_container.cid cidfile = set ./target/httpbin_container.cid
# if container already running, stop it # if container already running, stop it
if is_file ${cidfile} if is_file ${cidfile}
container_id = readfile ${cidfile}
rm ${cidfile}
set_env HTTPBIN_CONTAINER_ID ${container_id}
cm_run_task tests-cleanup
end
# get local port
docker_port = get_env YEW_HTTPBIN_PORT
if not is_defined docker_port
docker_port = set 7117
end
exec --fail-on-error docker run -d --cidfile ${cidfile} -p "${docker_port}:80" kennethreitz/httpbin
container_id = readfile ${cidfile} container_id = readfile ${cidfile}
rm ${cidfile} container_id = trim ${container_id}
set_env HTTPBIN_CONTAINER_ID ${container_id} set_env HTTPBIN_CONTAINER_ID ${container_id}
cm_run_task tests-cleanup
end
# get local port set_env HTTPBIN_URL http://localhost:${docker_port}
docker_port = get_env YEW_HTTPBIN_PORT set_httpbin_test_features
if not is_defined docker_port
docker_port = set 7117
end
# bind to a random free port # wait for docker container to boot before running tests
exec docker run -d --cidfile ${cidfile} -p "${docker_port}:80" kennethreitz/httpbin if is_defined HTTPBIN_WAIT
container_id = readfile ${cidfile} sleep ${HTTPBIN_WAIT}
container_id = trim ${container_id} else
set_env HTTPBIN_CONTAINER_ID ${container_id} sleep 500
end
set_env HTTPBIN_URL http://localhost:${docker_port}
set_httpbin_test_features
# wait for docker container to boot before running tests
if is_defined HTTPBIN_WAIT
sleep ${HTTPBIN_WAIT}
else else
sleep 500 echo "INFO: HTTPBIN_URL isn't set, won't run fetch service tests"
echo " please see the CONTRIBUTING.md file for instructions"
end end
else
echo INFO: HTTPBIN_URL isn't set, won't run fetch service tests
echo " please see the CONTRIBUTING.md file for instructions"
end end
end
yew_test_flags = array_join ${test_flags} " " yew_test_flags = array_join ${test_flags} " "
echo "running tests with flags: ${yew_test_flags} and features: ${yew_test_features}" echo "running tests with flags: ${yew_test_flags} and features: ${yew_test_features}"
set_env YEW_TEST_FLAGS ${yew_test_flags} set_env YEW_TEST_FLAGS ${yew_test_flags}
set_env YEW_TEST_FEATURES ${yew_test_features} set_env YEW_TEST_FEATURES ${yew_test_features}
''' """,
] ]
[tasks.tests-cleanup] [tasks.tests-cleanup]
private = true
condition = { env_set = ["HTTPBIN_CONTAINER_ID"] } condition = { env_set = ["HTTPBIN_CONTAINER_ID"] }
ignore_errors = true ignore_errors = true
command = "docker" command = "docker"
args = ["rm", "--force", "${HTTPBIN_CONTAINER_ID}"] args = ["rm", "--force", "${HTTPBIN_CONTAINER_ID}"]
[tasks.run-tests-flow] [tasks.tests-stdweb]
workspace = true
dependencies = [ "test" ]
[tasks.run-tests-stdweb]
private = true private = true
extend = "core::wasm-pack-base" extend = "core::wasm-pack-base"
cwd = "yew-stdweb" cwd = "yew-stdweb"
@ -157,9 +161,35 @@ args = [
"@@split(YEW_TEST_FLAGS, )", "@@split(YEW_TEST_FLAGS, )",
"--", "--",
"--features", "--features",
"${YEW_TEST_FEATURES}" "${YEW_TEST_FEATURES}",
] ]
[tasks.test-flow]
private = true
workspace = true
dependencies = ["test"]
[tasks.test] [tasks.test]
private = true
command = "cargo" command = "cargo"
args = ["test"] args = ["test", "--all-targets"]
[tasks.doc-test-flow]
private = true
workspace = true
dependencies = ["doc-test"]
[tasks.doc-test]
private = true
command = "cargo"
args = ["test", "--doc"]
[tasks.bench-flow]
private = true
workspace = true
dependencies = ["bench"]
[tasks.bench]
private = true
command = "cargo"
args = ["bench"]

View File

@ -1,18 +0,0 @@
#!/usr/bin/env bash
set -euo pipefail # https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/
# SETUP
test_flags=("--headless" "--firefox")
test_features="wasm_bench"
echo "running benchmarks with flags: ${test_flags[*]} and features: ${test_features}"
# TESTS
set -x
(cd yew &&
wasm-pack test "${test_flags[@]}" --release \
-- --features "${test_features}" bench
)

View File

@ -1,28 +0,0 @@
#!/usr/bin/env bash
echo "$(rustup default)" | grep -q "stable"
if [ "$?" != "0" ]; then
# only run checks on stable
exit 0
fi
set -euxo pipefail
cargo fmt --all -- --check
cargo clippy --all -- --deny=warnings
cargo check --all
# Enable all optional features
(cd yew \
&& cargo check --features cbor,msgpack,toml,yaml \
&& cargo clippy --features cbor,msgpack,toml,yaml -- --deny=warnings)
# Check stdweb
pushd yew-stdweb
cargo fmt --all -- --check
cargo clippy --all -- --deny=warnings
cargo check --all --target wasm32-unknown-unknown
# webgl_stdweb doesn't play nice with wasm-bindgen
(cd examples/webgl && cargo web check --target wasm32-unknown-unknown)
popd

View File

@ -1,46 +0,0 @@
#!/usr/bin/env bash
set -euo pipefail # https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/
# SETUP
test_flags=("--headless" "--firefox")
test_features="wasm_test"
if [[ -z "${HTTPBIN_URL-}" ]]; then
echo "INFO: HTTPBIN_URL isn't set, won't run fetch service tests"
echo " please see the CONTRIBUTING.md file for instructions"
else
echo "INFO: using '$HTTPBIN_URL' for fetch service tests"
test_features+=",httpbin_test"
fi
echo "running tests with flags: ${test_flags[*]} and features: ${test_features}"
# TESTS
set -x
(cd yew &&
wasm-pack test "${test_flags[@]}" -- --features "${test_features}" &&
cargo test --doc --features doc_test,wasm_test,yaml,msgpack,cbor,toml &&
cargo test --doc --features doc_test,wasm_test,yaml,msgpack,cbor,toml \
--features std_web,agent,services --no-default-features)
(cd yew-functional && wasm-pack test "${test_flags[@]}")
(cd yew-macro &&
cargo test --test macro_test &&
cargo test --test derive_props_test &&
cargo test --doc)
(cd yew-router && cargo test)
(cd yew-router-macro && cargo test)
(cd yew-router-route-parser && cargo test)
(cd yew-stdweb && wasm-pack test "${test_flags[@]}" -- --features "${test_features}")
(cd yewtil && cargo test)
(cd yew-components && cargo test)
(cd yew-validation && cargo test)

View File

@ -1,8 +1,4 @@
[tasks.test] [tasks.test]
clear = true
extend = "core::wasm-pack-base" extend = "core::wasm-pack-base"
args = [ command = "wasm-pack"
"test", args = ["test", "@@split(YEW_TEST_FLAGS, )"]
"@@split(YEW_TEST_FLAGS, )"
]

View File

@ -1,16 +1,25 @@
[env]
MSRV = "1.45.2"
[tasks.install-msrv-toolchain]
script_runner = "@duckscript"
script = [
"""
output = exec --fail-on-error rustup toolchain list
stdout = set ${output.stdout}
already_installed = contains ${stdout} ${MSRV}
if not ${already_installed}
echo "Installing toolchain for ${MSRV} (Yew MSRV) to run macro compilation tests"
exec --fail-on-error rustup toolchain install --profile minimal ${MSRV}
end
"""
]
[tasks.test] [tasks.test]
clear = true clear = true
dependencies = ["test-macro", "test-derive-props", "test-doc"] dependencies = ["install-msrv-toolchain"]
script = [
[tasks.test-macro] """
command = "cargo" cargo +${MSRV} test
args = ["test", "--test", "macro_test"] """
]
[tasks.test-derive-props]
command = "cargo"
args = ["test", "--test", "derive_props_test"]
[tasks.test-doc]
command = "cargo"
args = ["test", "--doc"]

View File

@ -1,3 +0,0 @@
[tasks.post-stable-checks]
alias = "web-check"

View File

@ -1,29 +1,50 @@
[env] [env]
CARGO_MAKE_CLIPPY_ARGS = "--features cbor,msgpack,toml,yaml -- --deny=warnings" CARGO_MAKE_CLIPPY_ARGS = "--features cbor,msgpack,toml,yaml -- --deny=warnings"
[tasks."core::check"]
args = ["check", "--features", "cbor,msgpack,toml,yaml"]
[tasks.test] [tasks.test]
clear = true
dependencies = ["test-wasm", "test-doc-partial-features", "test-doc-all-features"]
[tasks.test-wasm]
private = true
extend = "core::wasm-pack-base" extend = "core::wasm-pack-base"
command = "wasm-pack"
args = [ args = [
"test", "test",
"@@split(YEW_TEST_FLAGS, )", "@@split(YEW_TEST_FLAGS, )",
"--", "--",
"--features", "--features",
"${YEW_TEST_FEATURES}" "${YEW_TEST_FEATURES}",
] ]
[tasks.test-doc-partial-features] [tasks.doc-test]
command = "cargo" clear = true
args = ["test", "--doc", "--features", "doc_test,wasm_test,yaml,msgpack,cbor,toml"] run_task = { name = ["doc-test-normal", "doc-test-stdweb"], fork = true }
[tasks.test-doc-all-features] [tasks.doc-test-normal]
command = "cargo" command = "cargo"
args = ["test", "--doc", "--features", "doc_test,wasm_test,yaml,msgpack,cbor,toml,std_web,agent,services", "--no-default-features"] args = [
"test",
"--doc",
"--features",
"doc_test,wasm_test,yaml,msgpack,cbor,toml",
]
[tasks.doc-test-stdweb]
command = "cargo"
args = [
"test",
"--doc",
"--features",
"doc_test,wasm_test,yaml,msgpack,cbor,toml,std_web,agent,services",
"--no-default-features",
]
[tasks.bench]
extend = "core::wasm-pack-base"
command = "wasm-pack"
args = [
"test",
"--release",
"--firefox",
"--headless",
"--",
"--features",
"wasm_bench",
"bench",
]