Skip to content

Commit 7e6ad03

Browse files
authored
Use Vitest for browser tests (#3236)
This migrates all browser tests which were previously run with WebdriverIO to Vitest. WebdriverIO had several issues like flakiness, lack of certain APIs since it uses Mocha, and performance in CI. Vitest does not seem to have these issues. Long term we can start migrating all tests to Vitest instead of Jest. The APIs are largely the same between the two, so the migration should be relatively straightforward, and it simplifies some of our custom logic like merging coverage.
1 parent 8e418f6 commit 7e6ad03

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+1715
-4028
lines changed

.github/dependabot.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ updates:
1010
time: '06:00'
1111
allow:
1212
- dependency-name: '@metamask/*'
13-
- dependency-name: 'chromedriver'
1413
target-branch: 'main'
1514
versioning-strategy: 'increase'
1615
open-pull-requests-limit: 10

.github/workflows/build-lint-test.yml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,15 +188,20 @@ jobs:
188188
uses: actions/download-artifact@v4
189189
with:
190190
name: build-source-${{ runner.os }}-${{ github.sha }}
191-
- name: Install Google Chrome
191+
- name: Install browsers
192192
if: ${{ matrix.package-name == '@metamask/snaps-controllers' || matrix.package-name == '@metamask/snaps-execution-environments' || matrix.package-name == '@metamask/snaps-utils' }}
193193
uses: MetaMask/action-retry-command@v1
194194
with:
195-
command: yarn install-chrome
195+
command: yarn playwright install --with-deps --only-shell chromium firefox
196196
- name: Run tests
197197
uses: MetaMask/action-retry-command@v1
198198
with:
199199
command: yarn workspace ${{ matrix.package-name }} run test
200+
- name: Run Firefox tests
201+
if: ${{ matrix.package-name == '@metamask/snaps-controllers' || matrix.package-name == '@metamask/snaps-execution-environments' || matrix.package-name == '@metamask/snaps-utils' }}
202+
uses: MetaMask/action-retry-command@v1
203+
with:
204+
command: yarn workspace ${{ matrix.package-name }} run test:browser:firefox
200205
- name: Get coverage folder
201206
id: get-coverage-folder
202207
run: |

.github/workflows/update-pull-request.yml

Lines changed: 0 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -179,39 +179,6 @@ jobs:
179179
.nvmrc
180180
packages/examples/packages
181181
182-
update-chrome:
183-
name: Update Chrome
184-
runs-on: ubuntu-latest
185-
if: ${{ inputs.dependabot == true && contains(inputs.pull-request-title, 'chromedriver') }}
186-
needs:
187-
- prepare
188-
- dedupe-yarn-lock
189-
steps:
190-
- name: Checkout repository
191-
uses: actions/checkout@v4
192-
- name: Checkout pull request
193-
run: gh pr checkout "${PR_NUMBER}"
194-
env:
195-
GITHUB_TOKEN: ${{ secrets.PULL_REQUEST_UPDATE_TOKEN }}
196-
PR_NUMBER: ${{ inputs.pull-request != 0 && inputs.pull-request || github.event.issue.number }}
197-
- name: Restore yarn.lock
198-
uses: actions/download-artifact@v4
199-
with:
200-
name: yarn-lock-${{ needs.prepare.outputs.COMMIT_SHA }}
201-
- name: Checkout and setup environment
202-
uses: MetaMask/action-checkout-and-setup@v1
203-
with:
204-
is-high-risk-environment: false
205-
- name: Update Chrome
206-
run: yarn update-chrome
207-
- name: Save install script
208-
uses: actions/upload-artifact@v4
209-
with:
210-
name: chrome-install-script-${{ needs.prepare.outputs.COMMIT_SHA }}
211-
path: |
212-
.nvmrc
213-
scripts/install-chrome.sh
214-
215182
commit-result:
216183
name: Commit result
217184
runs-on: ubuntu-latest
@@ -222,7 +189,6 @@ jobs:
222189
- dedupe-yarn-lock
223190
- regenerate-lavamoat-policies
224191
- update-examples
225-
- update-chrome
226192
steps:
227193
- name: Checkout repository
228194
uses: actions/checkout@v4
@@ -269,15 +235,5 @@ jobs:
269235
run: |
270236
git add packages/examples/packages
271237
git commit -m "${COMMIT_PREFIX}Update example snaps" || true
272-
- name: Restore install script
273-
if: ${{ inputs.dependabot == true && contains(inputs.pull-request-title, 'chromedriver') }}
274-
uses: actions/download-artifact@v4
275-
with:
276-
name: chrome-install-script-${{ needs.prepare.outputs.COMMIT_SHA }}
277-
- name: Commit install script
278-
if: ${{ inputs.dependabot == true && contains(inputs.pull-request-title, 'chromedriver') }}
279-
run: |
280-
git add scripts/install-chrome.sh
281-
git commit -m "${COMMIT_PREFIX}Update install Chrome script" || true
282238
- name: Push changes
283239
run: git push

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,3 +78,6 @@ packages/examples/examples/webpack/index.html
7878

7979
# Ubuntu package files
8080
.deb
81+
82+
# Vitest test failure screenshots
83+
__screenshots__

.yarnrc.yml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,6 @@ logFilters:
1212

1313
nodeLinker: node-modules
1414

15-
packageExtensions:
16-
'@wdio/browser-runner@*':
17-
dependencies:
18-
'@babel/core': '*'
19-
2015
plugins:
2116
- path: .yarn/plugins/@yarnpkg/plugin-allow-scripts.cjs
2217
spec: 'https://raw.githubusercontent.com/LavaMoat/LavaMoat/main/packages/yarn-plugin-allow-scripts/bundles/@yarnpkg/plugin-allow-scripts.js'

package.json

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,6 @@
9292
"@types/lodash": "^4",
9393
"@types/node": "18.14.2",
9494
"@yarnpkg/types": "^4.0.0",
95-
"chromedriver": "^135.0.0",
9695
"depcheck": "^1.4.7",
9796
"eslint": "^9.11.0",
9897
"eslint-config-prettier": "^9.1.0",
@@ -105,18 +104,19 @@
105104
"eslint-plugin-promise": "^7.1.0",
106105
"execa": "^5.1.1",
107106
"favicons": "^7.1.2",
108-
"geckodriver": "^4.2.0",
109107
"jest": "^29.0.2",
110108
"jest-silent-reporter": "^0.6.0",
111109
"lint-staged": "^12.4.1",
112110
"lodash": "^4.17.21",
113111
"minimatch": "^7.4.1",
112+
"playwright": "~1.49.0",
114113
"prettier": "^3.3.3",
115114
"prettier-2": "npm:prettier@^2.8.8",
116115
"prettier-plugin-packagejson": "^2.5.8",
117116
"rimraf": "^4.1.2",
118117
"semver": "^7.5.4",
119118
"simple-git-hooks": "^2.7.0",
119+
"supports-color": "^7.2.0",
120120
"ts-node": "^10.9.1",
121121
"tsx": "^4.19.1",
122122
"typescript": "~5.3.3",
@@ -132,9 +132,7 @@
132132
"@lavamoat/preinstall-always-fail": false,
133133
"simple-git-hooks": false,
134134
"$root$": false,
135-
"chromedriver": true,
136135
"jest>jest-cli>jest-config>ts-node>@swc/core": false,
137-
"geckodriver": true,
138136
"ts-node>@swc/core": true,
139137
"@swc/core": true,
140138
"favicons>sharp": true,

packages/snaps-browserify-plugin/src/__snapshots__/plugin.test.ts.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ exports[`plugin generates a source map 1`] = `
108108
};
109109
}, {}]
110110
}, {}, [1]);
111-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyIiwiZSIsIm4iLCJ0IiwibyIsImkiLCJmIiwiYyIsInJlcXVpcmUiLCJ1IiwiYSIsIkVycm9yIiwiY29kZSIsInAiLCJleHBvcnRzIiwiY2FsbCIsImxlbmd0aCIsIm1vZHVsZSIsIm9uUnBjUmVxdWVzdCIsInJlcXVlc3QiLCJjb25zb2xlIiwibG9nIiwibWV0aG9kIiwiaWQiXSwic291cmNlcyI6WyIuLi8uLi9ub2RlX21vZHVsZXMvYnJvd3Nlci1wYWNrL19wcmVsdWRlLmpzIiwiX3N0cmVhbV8wLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbigpe2Z1bmN0aW9uIHIoZSxuLHQpe2Z1bmN0aW9uIG8oaSxmKXtpZighbltpXSl7aWYoIWVbaV0pe3ZhciBjPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIWYmJmMpcmV0dXJuIGMoaSwhMCk7aWYodSlyZXR1cm4gdShpLCEwKTt2YXIgYT1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK2krXCInXCIpO3Rocm93IGEuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixhfXZhciBwPW5baV09e2V4cG9ydHM6e319O2VbaV1bMF0uY2FsbChwLmV4cG9ydHMsZnVuY3Rpb24ocil7dmFyIG49ZVtpXVsxXVtyXTtyZXR1cm4gbyhufHxyKX0scCxwLmV4cG9ydHMscixlLG4sdCl9cmV0dXJuIG5baV0uZXhwb3J0c31mb3IodmFyIHU9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxpPTA7aTx0Lmxlbmd0aDtpKyspbyh0W2ldKTtyZXR1cm4gb31yZXR1cm4gcn0pKCkiLCJcbiAgbW9kdWxlLmV4cG9ydHMub25ScGNSZXF1ZXN0ID0gKHsgcmVxdWVzdCB9KSA9PiB7XG4gICAgY29uc29sZS5sb2coXCJIZWxsbywgd29ybGQhXCIpO1xuXG4gICAgY29uc3QgeyBtZXRob2QsIGlkIH0gPSByZXF1ZXN0O1xuICAgIHJldHVybiBtZXRob2QgKyBpZDtcbiAgfTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7RUFBQSxTQUFBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQTtJQUFBLFNBQUFDLEVBQUFDLENBQUEsRUFBQUMsQ0FBQTtNQUFBLEtBQUFKLENBQUEsQ0FBQUcsQ0FBQTtRQUFBLEtBQUFKLENBQUEsQ0FBQUksQ0FBQTtVQUFBLElBQUFFLENBQUEsd0JBQUFDLE9BQUEsSUFBQUEsT0FBQTtVQUFBLEtBQUFGLENBQUEsSUFBQUMsQ0FBQSxTQUFBQSxDQUFBLENBQUFGLENBQUE7VUFBQSxJQUFBSSxDQUFBLFNBQUFBLENBQUEsQ0FBQUosQ0FBQTtVQUFBLElBQUFLLENBQUEsT0FBQUMsS0FBQSwwQkFBQU4sQ0FBQTtVQUFBLE1BQUFLLENBQUEsQ0FBQUUsSUFBQSx1QkFBQUYsQ0FBQTtRQUFBO1FBQUEsSUFBQUcsQ0FBQSxHQUFBWCxDQUFBLENBQUFHLENBQUE7VUFBQVMsT0FBQTtRQUFBO1FBQUFiLENBQUEsQ0FBQUksQ0FBQSxLQUFBVSxJQUFBLENBQUFGLENBQUEsQ0FBQUMsT0FBQSxZQUFBZCxDQUFBO1VBQUEsSUFBQUUsQ0FBQSxHQUFBRCxDQUFBLENBQUFJLENBQUEsS0FBQUwsQ0FBQTtVQUFBLE9BQUFJLENBQUEsQ0FBQUYsQ0FBQSxJQUFBRixDQUFBO1FBQUEsR0FBQWEsQ0FBQSxFQUFBQSxDQUFBLENBQUFDLE9BQUEsRUFBQWQsQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQTtNQUFBO01BQUEsT0FBQUQsQ0FBQSxDQUFBRyxDQUFBLEVBQUFTLE9BQUE7SUFBQTtJQUFBLFNBQUFMLENBQUEsd0JBQUFELE9BQUEsSUFBQUEsT0FBQSxFQUFBSCxDQUFBLE1BQUFBLENBQUEsR0FBQUYsQ0FBQSxDQUFBYSxNQUFBLEVBQUFYLENBQUEsSUFBQUQsQ0FBQSxDQUFBRCxDQUFBLENBQUFFLENBQUE7SUFBQSxPQUFBRCxDQUFBO0VBQUE7RUFBQSxPQUFBSixDQUFBO0FBQUE7RUFBQSxjQUFBUSxPQUFBLEVBQUFTLE1BQUEsRUFBQUgsT0FBQTtJQ0NBRyxNQUFBLENBQUFILE9BQUEsQ0FBQUksWUFBQTtNQUFBQztJQUFBO01BQ0FDLE9BQUEsQ0FBQUMsR0FBQTtNQUVBO1FBQUFDLE1BQUE7UUFBQUM7TUFBQSxJQUFBSixPQUFBO01BQ0EsT0FBQUcsTUFBQSxHQUFBQyxFQUFBO0lBQ0EifQ=="
111+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyIiwiZSIsIm4iLCJ0IiwibyIsImkiLCJmIiwiYyIsInJlcXVpcmUiLCJ1IiwiYSIsIkVycm9yIiwiY29kZSIsInAiLCJleHBvcnRzIiwiY2FsbCIsImxlbmd0aCIsIm1vZHVsZSIsIm9uUnBjUmVxdWVzdCIsInJlcXVlc3QiLCJjb25zb2xlIiwibG9nIiwibWV0aG9kIiwiaWQiXSwic291cmNlcyI6WyIuLi8uLi9ub2RlX21vZHVsZXMvYnJvd3Nlci1wYWNrL19wcmVsdWRlLmpzIiwiX3N0cmVhbV8wLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbigpe2Z1bmN0aW9uIHIoZSxuLHQpe2Z1bmN0aW9uIG8oaSxmKXtpZighbltpXSl7aWYoIWVbaV0pe3ZhciBjPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIWYmJmMpcmV0dXJuIGMoaSwhMCk7aWYodSlyZXR1cm4gdShpLCEwKTt2YXIgYT1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK2krXCInXCIpO3Rocm93IGEuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixhfXZhciBwPW5baV09e2V4cG9ydHM6e319O2VbaV1bMF0uY2FsbChwLmV4cG9ydHMsZnVuY3Rpb24ocil7dmFyIG49ZVtpXVsxXVtyXTtyZXR1cm4gbyhufHxyKX0scCxwLmV4cG9ydHMscixlLG4sdCl9cmV0dXJuIG5baV0uZXhwb3J0c31mb3IodmFyIHU9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxpPTA7aTx0Lmxlbmd0aDtpKyspbyh0W2ldKTtyZXR1cm4gb31yZXR1cm4gcn0pKCkiLCJcbiAgbW9kdWxlLmV4cG9ydHMub25ScGNSZXF1ZXN0ID0gKHsgcmVxdWVzdCB9KSA9PiB7XG4gICAgY29uc29sZS5sb2coXCJIZWxsbywgd29ybGQhXCIpO1xuXG4gICAgY29uc3QgeyBtZXRob2QsIGlkIH0gPSByZXF1ZXN0O1xuICAgIHJldHVybiBtZXRob2QgKyBpZDtcbiAgfTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7RUFBQSxTQUFBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQTtJQUFBLFNBQUFDLEVBQUFDLENBQUEsRUFBQUMsQ0FBQTtNQUFBLEtBQUFKLENBQUEsQ0FBQUcsQ0FBQTtRQUFBLEtBQUFKLENBQUEsQ0FBQUksQ0FBQTtVQUFBLElBQUFFLENBQUEsd0JBQUFDLE9BQUEsSUFBQUEsT0FBQTtVQUFBLEtBQUFGLENBQUEsSUFBQUMsQ0FBQSxTQUFBQSxDQUFBLENBQUFGLENBQUE7VUFBQSxJQUFBSSxDQUFBLFNBQUFBLENBQUEsQ0FBQUosQ0FBQTtVQUFBLElBQUFLLENBQUEsT0FBQUMsS0FBQSwwQkFBQU4sQ0FBQTtVQUFBLE1BQUFLLENBQUEsQ0FBQUUsSUFBQSx1QkFBQUYsQ0FBQTtRQUFBO1FBQUEsSUFBQUcsQ0FBQSxHQUFBWCxDQUFBLENBQUFHLENBQUE7VUFBQVMsT0FBQTtRQUFBO1FBQUFiLENBQUEsQ0FBQUksQ0FBQSxLQUFBVSxJQUFBLENBQUFGLENBQUEsQ0FBQUMsT0FBQSxZQUFBZCxDQUFBO1VBQUEsSUFBQUUsQ0FBQSxHQUFBRCxDQUFBLENBQUFJLENBQUEsS0FBQUwsQ0FBQTtVQUFBLE9BQUFJLENBQUEsQ0FBQUYsQ0FBQSxJQUFBRixDQUFBO1FBQUEsR0FBQWEsQ0FBQSxFQUFBQSxDQUFBLENBQUFDLE9BQUEsRUFBQWQsQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQTtNQUFBO01BQUEsT0FBQUQsQ0FBQSxDQUFBRyxDQUFBLEVBQUFTLE9BQUE7SUFBQTtJQUFBLFNBQUFMLENBQUEsd0JBQUFELE9BQUEsSUFBQUEsT0FBQSxFQUFBSCxDQUFBLE1BQUFBLENBQUEsR0FBQUYsQ0FBQSxDQUFBYSxNQUFBLEVBQUFYLENBQUEsSUFBQUQsQ0FBQSxDQUFBRCxDQUFBLENBQUFFLENBQUE7SUFBQSxPQUFBRCxDQUFBO0VBQUE7RUFBQSxPQUFBSixDQUFBO0FBQUE7RUFBQSxjQUFBUSxPQUFBLEVBQUFTLE1BQUEsRUFBQUgsT0FBQTtJQ0NBRyxNQUFBLENBQUFILE9BQUEsQ0FBQUksWUFBQTtNQUFBQztJQUFBO01BQ0FDLE9BQUEsQ0FBQUMsR0FBQTtNQUVBO1FBQUFDLE1BQUE7UUFBQUM7TUFBQSxJQUFBSixPQUFBO01BQ0EsT0FBQUcsTUFBQSxHQUFBQyxFQUFBO0lBQ0EiLCJpZ25vcmVMaXN0IjpbXX0="
112112
`;
113113

114114
exports[`plugin processes files using Browserify 1`] = `

packages/snaps-controllers/.depcheckrc.json

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,14 @@
77
"@metamask/eslint-*",
88
"@types/*",
99
"@typescript-eslint/*",
10-
"@wdio/*",
10+
"@vitest/coverage-istanbul",
1111
"eslint-config-*",
1212
"eslint-plugin-*",
1313
"jest-silent-reporter",
14-
"expect-webdriverio",
1514
"prettier-plugin-packagejson",
1615
"ts-node",
1716
"typedoc",
1817
"typescript",
19-
"vite",
20-
"wdio-*",
21-
"webdriverio"
18+
"vite"
2219
]
2320
}

packages/snaps-controllers/coverage.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"branches": 93.42,
2+
"branches": 93.44,
33
"functions": 97.38,
44
"lines": 98.34,
55
"statements": 98.08

packages/snaps-controllers/package.json

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,10 @@
7171
"publish:preview": "yarn npm publish --tag preview",
7272
"since-latest-release": "../../scripts/since-latest-release.sh",
7373
"test": "jest --reporters=jest-silent-reporter && yarn test:browser",
74-
"test:browser": "wdio run wdio.config.js",
74+
"test:browser": "vitest",
75+
"test:browser:firefox": "vitest --config ./vitest.config.firefox.mts",
7576
"test:clean": "jest --clearCache",
76-
"test:post": "ts-node scripts/coverage.ts && rimraf coverage/jest coverage/wdio",
77+
"test:post": "ts-node scripts/coverage.ts && rimraf coverage/jest coverage/vite",
7778
"test:pre": "yarn mkdirp test/fixtures && ./scripts/generate-fixtures.sh",
7879
"test:verbose": "jest --verbose",
7980
"test:watch": "jest --watch"
@@ -109,8 +110,6 @@
109110
"tar-stream": "^3.1.7"
110111
},
111112
"devDependencies": {
112-
"@esbuild-plugins/node-globals-polyfill": "^0.2.3",
113-
"@esbuild-plugins/node-modules-polyfill": "^0.2.2",
114113
"@lavamoat/allow-scripts": "^3.0.4",
115114
"@metamask/auto-changelog": "^5.0.1",
116115
"@metamask/browser-passworder": "^6.0.0",
@@ -124,22 +123,14 @@
124123
"@types/gunzip-maybe": "^1.4.0",
125124
"@types/jest": "^27.5.1",
126125
"@types/luxon": "^3",
127-
"@types/mocha": "^10.0.1",
128126
"@types/node": "18.14.2",
129127
"@types/readable-stream": "^4.0.15",
130128
"@types/semver": "^7.5.0",
131129
"@types/tar-stream": "^3.1.1",
132-
"@wdio/browser-runner": "^8.19.0",
133-
"@wdio/cli": "^8.19.0",
134-
"@wdio/globals": "^8.19.0",
135-
"@wdio/mocha-framework": "^8.19.0",
136-
"@wdio/spec-reporter": "^8.19.0",
137-
"@wdio/static-server-service": "^8.19.0",
130+
"@vitest/browser": "^3.0.8",
138131
"deepmerge": "^4.2.2",
139132
"depcheck": "^1.4.7",
140-
"esbuild": "^0.25.2",
141133
"eslint": "^9.11.0",
142-
"expect-webdriverio": "^4.4.1",
143134
"istanbul-lib-coverage": "^3.2.0",
144135
"istanbul-lib-report": "^3.0.0",
145136
"istanbul-reports": "^3.1.5",
@@ -152,10 +143,9 @@
152143
"ts-node": "^10.9.1",
153144
"typescript": "~5.3.3",
154145
"vite": "^6.2.3",
146+
"vite-plugin-node-polyfills": "^0.23.0",
155147
"vite-tsconfig-paths": "^4.0.5",
156-
"wdio-chromedriver-service": "^8.1.1",
157-
"wdio-geckodriver-service": "^5.0.2",
158-
"webdriverio": "^8.19.0"
148+
"vitest": "^3.0.8"
159149
},
160150
"peerDependencies": {
161151
"@metamask/snaps-execution-environments": "workspace:^"

0 commit comments

Comments
 (0)