[f, f])} />);
+
+ const input = page.getByLabelText("Fruit");
+ await input.click();
+
+ const menuItems = page.getByRole("option");
+ await expect.element(menuItems.first()).toBeVisible();
+ expect(menuItems.all()).toHaveLength(3);
+
+ await input.fill("ch");
+ await expect.element(page.getByText("cherry")).toBeVisible();
+ expect(page.getByRole("option").all()).toHaveLength(1);
+
+ await page.getByText("cherry").click();
+ await expect.element(input).toHaveValue("cherry");
});
diff --git a/tsconfig.json b/tsconfig.json
index 7b974a42..9fc9ce62 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -3,7 +3,7 @@
"target": "ES2020",
"useDefineForClassFields": true,
"lib": ["ES2020", "DOM", "DOM.Iterable"],
- "types": ["geojson", "@types/wicg-file-system-access"],
+ "types": ["geojson", "@types/wicg-file-system-access", "node"],
"module": "ESNext",
"skipLibCheck": true,
@@ -21,14 +21,7 @@
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true
},
- "include": ["src", "cypress/e2e", "e2e/maputnik-cypress-helper.ts"],
+ "include": ["src", "e2e"],
"exclude": ["dist"],
- "references": [{ "path": "./tsconfig.node.json" }],
- // TODO: Remove when issue is resolved https://github.com/cypress-io/cypress/issues/27448
- "ts-node": {
- "compilerOptions": {
- "module": "ESNext",
- "moduleResolution": "Node",
- }
- }
+ "references": [{ "path": "./tsconfig.node.json" }]
}
diff --git a/vite.config.ts b/vite.config.ts
index f5f41973..25103303 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -12,10 +12,9 @@ export default defineConfig(({ mode }) => ({
plugins: [
react(),
istanbul({
- cypress: true,
requireEnv: false,
nycrcPath: "./.nycrc.json",
- forceBuildInstrument: true, //Instrument the source code for cypress runs
+ forceBuildInstrument: true, // Instrument the source so e2e runs can collect coverage
}),
],
base: mode === "desktop" ? "/" : "/maputnik/",
diff --git a/vitest.config.ts b/vitest.config.ts
index 7c7dffc9..b9a412c0 100644
--- a/vitest.config.ts
+++ b/vitest.config.ts
@@ -1,11 +1,37 @@
import { defineConfig } from "vitest/config";
+import react from "@vitejs/plugin-react";
+import { playwright } from "@vitest/browser-playwright";
export default defineConfig({
+ plugins: [react()],
test: {
- // Only the unit tests that live next to the source are run by Vitest. The
- // e2e specs (*.spec.ts) are run by their own runner, and the component
- // browser test is run separately.
- include: ["src/**/*.test.{ts,tsx}"],
- exclude: ["**/node_modules/**", "e2e/**", "**/*.browser.test.tsx"],
+ projects: [
+ {
+ extends: true,
+ test: {
+ name: "unit",
+ environment: "node",
+ include: ["src/**/*.test.{ts,tsx}"],
+ exclude: ["src/**/*.browser.test.{ts,tsx}"],
+ },
+ },
+ {
+ extends: true,
+ test: {
+ name: "browser",
+ include: ["src/**/*.browser.test.{ts,tsx}"],
+ browser: {
+ enabled: true,
+ provider: playwright(),
+ headless: true,
+ instances: [{ browser: "chromium" }],
+ },
+ },
+ },
+ ],
+ coverage: {
+ provider: "v8",
+ reporter: ["json", "lcov", "text-summary"],
+ },
},
});
From 320f94b707d026d297473d76aa7a022d55b3119b Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 10 Jul 2026 18:25:26 +0000
Subject: [PATCH 5/6] chore(deps): Bump uuid and istanbul-lib-processinfo
(#1995)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps [uuid](https://github.com/uuidjs/uuid) and
[istanbul-lib-processinfo](https://github.com/istanbuljs/istanbul-lib-processinfo).
These dependencies needed to be updated together.
Updates `uuid` from 8.3.2 to 14.0.1
Release notes
Sourced from uuid's
releases.
v14.0.1
14.0.1
(2026-06-20)
Bug Fixes
- add types condition to node export for moduleResolution bundler (#961) (27ffae5)
v14.0.0
14.0.0
(2026-04-19)
⚠ BREAKING CHANGES
- expect
crypto to be global everywhere (requires
node@20+) (#935)
- drop node@18 support (#934)
Features
Bug Fixes
- expect
crypto to be global everywhere (requires
node@20+) (#935) (f2c235f)
- Use GITHUB_TOKEN for release-please and enable npm provenance (#925) (ffa3138)
v13.0.2
13.0.2
(2026-05-04)
Bug Fixes
- rerelease to fix provenance. (49ccb35)
v13.0.1
13.0.1
(2026-04-27)
Bug Fixes
- backport fix for GHSA-w5hq-g745-h8pq (9d27ddf)
v13.0.0
13.0.0
(2025-09-08)
⚠ BREAKING CHANGES
- make browser exports the default (#901)
... (truncated)
Changelog
Sourced from uuid's
changelog.
14.0.1
(2026-06-20)
Bug Fixes
- add types condition to node export for moduleResolution bundler (#961) (27ffae5)
14.0.0
(2026-04-19)
Security
- Fixes GHSA-w5hq-g745-h8pq:
v3(), v5(), and v6() did not
validate that writes would remain within the bounds of a caller-supplied
buffer, allowing out-of-bounds writes when an invalid
offset was provided. A RangeError is now
thrown if offset < 0 or offset + 16 >
buf.length.
⚠ BREAKING CHANGES
crypto is now expected to be globally defined (requires
node@20+) (#935)
- drop node@18 support (#934)
- upgrade minimum supported TypeScript version to 5.4.3, in keeping
with the project's policy of supporting TypeScript versions released
within the last two years
13.0.0
(2025-09-08)
⚠ BREAKING CHANGES
- make browser exports the default (#901)
Bug Fixes
12.0.0
(2025-09-05)
⚠ BREAKING CHANGES
- update to typescript@5.2 (#887)
- remove CommonJS support (#886)
- drop node@16 support (#883)
Features
Bug Fixes
... (truncated)
Commits
Maintainer changes
This version was pushed to npm by GitHub Actions, a new
releaser for uuid since your current version.
Install script changes
This version adds prepare script that runs during
installation. Review the package contents before updating.
Updates `istanbul-lib-processinfo` from 3.0.0 to 3.0.1
Changelog
Sourced from istanbul-lib-processinfo's
changelog.
Changelog
All notable changes to this project will be documented in this file.
See standard-version
for commit guidelines.
Commits
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/maplibre/maputnik/network/alerts).
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package-lock.json | 19 ++++---------------
1 file changed, 4 insertions(+), 15 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 6ced4a55..5ae005fd 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8387,9 +8387,9 @@
}
},
"node_modules/istanbul-lib-processinfo": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-3.0.0.tgz",
- "integrity": "sha512-P7nLXRRlo7Sqinty6lNa7+4o9jBUYGpqtejqCOZKfgXlRoxY/QArflcB86YO500Ahj4pDJEG34JjMRbQgePLnQ==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-3.0.1.tgz",
+ "integrity": "sha512-s3mX05h5wGZeScG6XnOanygPh4SJu5ujMc9YbvpnLGXWy1cRiGbp0NdVcjHxgoZt3WfQppfBsa0y+gWdYJ2pGQ==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -8397,8 +8397,7 @@
"cross-spawn": "^7.0.3",
"istanbul-lib-coverage": "^3.2.0",
"p-map": "^3.0.0",
- "rimraf": "^6.1.3",
- "uuid": "^8.3.2"
+ "rimraf": "^6.1.3"
},
"engines": {
"node": "20 || >=22"
@@ -8417,16 +8416,6 @@
"node": ">=8"
}
},
- "node_modules/istanbul-lib-processinfo/node_modules/uuid": {
- "version": "8.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
- "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "uuid": "dist/bin/uuid"
- }
- },
"node_modules/istanbul-lib-report": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
From 21e141542a880713bfff7ceaa423c9bc2e2ef4a8 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 10 Jul 2026 18:25:44 +0000
Subject: [PATCH 6/6] chore(deps): Bump qs from 6.14.2 to 6.15.3 (#1996)
Bumps [qs](https://github.com/ljharb/qs) from 6.14.2 to 6.15.3.
Changelog
Sourced from qs's
changelog.
6.15.3
- [Fix]
parse: enforce throwOnLimitExceeded
for cumulative array growth via
combine/merge
- [Fix]
utils: respect encoding of surrogate pairs across
chunks (#559)
- [Robustness]
parse: throw the arrayLimit
error before splitting oversized comma values
- [Robustness]
utils.merge / utils.assign:
avoid invoking __proto__ setter when copying own
properties
- [Robustness]
utils: enforce arrayLimit
consistently across merge's array paths
- [Perf]
utils: make compact O(n) via a
side-channel visited-set instead of Array.indexOf
- [Deps] update
side-channel
- [Dev Deps] update
eslint, mock-property,
tape
- [Tests]
parse: characterize current lenient handling of
unbalanced bracket keys (#558)
6.15.2
- [Fix]
stringify: skip null/undefined entries in
arrayFormat: 'comma' + encodeValuesOnly
instead of crashing in encoder
- [Fix]
stringify: use configured delimiter
after charsetSentinel (#555)
- [Fix]
stringify: apply formatter to
encoded key under strictNullHandling (#554)
- [Fix]
stringify: skip null/undefined filter-array
entries instead of crashing in encoder (#551)
- [Fix]
parse: handle nested bracket groups and add
regression tests (#530)
- [readme] fix grammar (#550)
- [Dev Deps] update
@ljharb/eslint-config
- [Tests] add regression tests for keys containing percent-encoded
bracket text
6.15.1
- [Fix]
parse: parameterLimit: Infinity with
throwOnLimitExceeded: true silently drops all
parameters
- [Deps] update
@ljharb/eslint-config
- [Dev Deps] update
@ljharb/eslint-config,
iconv-lite
- [Tests] increase coverage
6.15.0
- [New]
parse: add strictMerge option to
wrap object/primitive conflicts in an array (#425, #122)
- [Fix]
duplicates option should not apply to bracket
notation keys (#514)
Commits
18d085e
v6.15.3
c38af42
[Deps] update side-channel
adce539
[Dev Deps] update eslint, mock-property,
tape
74a0f6a
[Robustness] utils: enforce arrayLimit
consistently across merge's arra...
f4938f5
[Tests] parse: characterize current lenient handling of
unbalanced bracket ...
5d5f723
[Perf] utils: make compact O(n) via a
side-channel visited-set instead of...
52afe00
[Robustness] parse: throw the arrayLimit error
before splitting oversized...
963e538
[Fix] parse: enforce throwOnLimitExceeded for
cumulative array growth via...
59da434
[Fix] utils: respect encoding of surrogate pairs across
chunks
9532969
[Robustness] utils.merge / utils.assign: avoid
invoking __proto__ sette...
- Additional commits viewable in compare
view
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/maplibre/maputnik/network/alerts).
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package-lock.json | 27 ++++++++++++++-------------
1 file changed, 14 insertions(+), 13 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 5ae005fd..f55f9a3f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11064,12 +11064,13 @@
"license": "MIT"
},
"node_modules/qs": {
- "version": "6.14.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz",
- "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==",
+ "version": "6.15.3",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.3.tgz",
+ "integrity": "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==",
"license": "BSD-3-Clause",
"dependencies": {
- "side-channel": "^1.1.0"
+ "es-define-property": "^1.0.1",
+ "side-channel": "^1.1.1"
},
"engines": {
"node": ">=0.6"
@@ -11937,14 +11938,14 @@
}
},
"node_modules/side-channel": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
- "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz",
+ "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==",
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
- "object-inspect": "^1.13.3",
- "side-channel-list": "^1.0.0",
+ "object-inspect": "^1.13.4",
+ "side-channel-list": "^1.0.1",
"side-channel-map": "^1.0.1",
"side-channel-weakmap": "^1.0.2"
},
@@ -11956,13 +11957,13 @@
}
},
"node_modules/side-channel-list": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
- "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz",
+ "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==",
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
- "object-inspect": "^1.13.3"
+ "object-inspect": "^1.13.4"
},
"engines": {
"node": ">= 0.4"