diff --git a/examples/lit/package.json b/examples/lit/package.json
index 54bb31465caa..aa6218770d7f 100644
--- a/examples/lit/package.json
+++ b/examples/lit/package.json
@@ -1,5 +1,6 @@
{
"name": "@vitest/example-lit",
+ "type": "module",
"private": true,
"files": [
"dist",
@@ -12,13 +13,15 @@
"test:ui": "vitest --ui"
},
"dependencies": {
- "lit": "^2.2.5"
+ "lit": "^3.0.1"
},
"devDependencies": {
+ "@vitest/browser": "latest",
"@vitest/ui": "latest",
"jsdom": "latest",
"vite": "latest",
- "vitest": "latest"
+ "vitest": "latest",
+ "webdriverio": "^8.21.0"
},
"stackblitz": {
"startCommand": "npm run test:ui"
diff --git a/examples/lit/test/basic.test.ts b/examples/lit/test/basic.test.ts
index ae4eab061874..47a128458c87 100644
--- a/examples/lit/test/basic.test.ts
+++ b/examples/lit/test/basic.test.ts
@@ -1,22 +1,14 @@
import { beforeEach, describe, expect, it, vi } from 'vitest'
-import '../src/my-button'
+import '../src/my-button.js'
describe('Button with increment', async () => {
function getInsideButton(): HTMLElement | null | undefined {
return document.body.querySelector('my-button')?.shadowRoot?.querySelector('button')
}
- beforeEach(async () => {
+ beforeEach(() => {
document.body.innerHTML = ''
- await new Promise((resolve) => {
- const interval = setInterval(() => {
- if (getInsideButton()) {
- clearInterval(interval)
- resolve()
- }
- })
- })
})
it('should increment the count on each click', () => {
diff --git a/examples/lit/tsconfig.json b/examples/lit/tsconfig.json
index 93f02b62c176..ce9c274a30cc 100644
--- a/examples/lit/tsconfig.json
+++ b/examples/lit/tsconfig.json
@@ -1,7 +1,10 @@
{
"compilerOptions": {
+ "module": "node16",
+ "target": "es2020",
+ "moduleResolution": "Node16",
"experimentalDecorators": true,
"useDefineForClassFields": false,
- "importsNotUsedAsValues": "preserve"
+ "verbatimModuleSyntax": true
}
}
diff --git a/examples/lit/vite.config.ts b/examples/lit/vite.config.ts
index e546d108f118..3f79995620ff 100644
--- a/examples/lit/vite.config.ts
+++ b/examples/lit/vite.config.ts
@@ -5,7 +5,9 @@ import { defineConfig } from 'vite'
// https://vitejs.dev/config/
export default defineConfig({
test: {
- globals: true,
- environment: 'jsdom',
+ browser: {
+ enabled: true,
+ name: 'chrome',
+ },
},
})
diff --git a/packages/browser/providers.d.ts b/packages/browser/providers.d.ts
index b2b8f375cd26..ea14bc4d78b1 100644
--- a/packages/browser/providers.d.ts
+++ b/packages/browser/providers.d.ts
@@ -2,5 +2,6 @@ import type { BrowserProvider } from 'vitest/nide'
declare var webdriverio: BrowserProvider
declare var playwright: BrowserProvider
+declare var none: BrowserProvider
-export { webdriverio, playwright }
+export { webdriverio, playwright, none }
diff --git a/packages/browser/src/node/providers/index.ts b/packages/browser/src/node/providers/index.ts
index 26f3c240c5e0..aca17df8fde6 100644
--- a/packages/browser/src/node/providers/index.ts
+++ b/packages/browser/src/node/providers/index.ts
@@ -1,5 +1,7 @@
import { PlaywrightBrowserProvider } from './playwright'
import { WebdriverBrowserProvider } from './webdriver'
+import { NoneBrowserProvider } from './none'
export const webdriverio = WebdriverBrowserProvider
export const playwright = PlaywrightBrowserProvider
+export const none = NoneBrowserProvider
diff --git a/packages/browser/src/node/providers/none.ts b/packages/browser/src/node/providers/none.ts
new file mode 100644
index 000000000000..92156ce837f7
--- /dev/null
+++ b/packages/browser/src/node/providers/none.ts
@@ -0,0 +1,40 @@
+import type { Awaitable } from 'vitest'
+import type { BrowserProvider, WorkspaceProject } from 'vitest/node'
+
+export class NoneBrowserProvider implements BrowserProvider {
+ public name = 'none'
+ private ctx!: WorkspaceProject
+ private open = false
+
+ getSupportedBrowsers() {
+ // `none` is not restricted to certain browsers.
+ return []
+ }
+
+ isOpen() {
+ return this.open
+ }
+
+ async initialize(ctx: WorkspaceProject) {
+ this.ctx = ctx
+ this.open = false
+ }
+
+ catchError(_cb: (error: Error) => Awaitable) {
+ return () => {}
+ }
+
+ async openPage(_url: string) {
+ this.open = true
+ if (!this.ctx.browser)
+ throw new Error('Browser is not initialized')
+ const options = this.ctx.browser.config.server
+ const _open = options.open
+ options.open = _url
+ this.ctx.browser.openBrowser()
+ options.open = _open
+ }
+
+ async close() {
+ }
+}
diff --git a/packages/vitest/src/integrations/browser.ts b/packages/vitest/src/integrations/browser.ts
index d0d25db12074..71dae0e971b6 100644
--- a/packages/vitest/src/integrations/browser.ts
+++ b/packages/vitest/src/integrations/browser.ts
@@ -6,14 +6,17 @@ interface Loader {
executeId: (id: string) => any
}
+const builtinProviders = ['webdriverio', 'playwright', 'none']
+
export async function getBrowserProvider(options: ResolvedBrowserOptions, loader: Loader): Promise {
- if (options.provider == null || options.provider === 'webdriverio' || options.provider === 'playwright') {
+ if (options.provider == null || builtinProviders.includes(options.provider)) {
await ensurePackageInstalled('@vitest/browser', loader.root)
const providers = await loader.executeId('@vitest/browser/providers') as {
webdriverio: BrowserProviderModule
playwright: BrowserProviderModule
+ none: BrowserProviderModule
}
- const provider = (options.provider || 'webdriverio') as 'webdriverio' | 'playwright'
+ const provider = (options.provider || 'webdriverio') as 'webdriverio' | 'playwright' | 'none'
return providers[provider]
}
diff --git a/packages/vitest/src/node/config.ts b/packages/vitest/src/node/config.ts
index 2e2e4a6576cf..511407bf970b 100644
--- a/packages/vitest/src/node/config.ts
+++ b/packages/vitest/src/node/config.ts
@@ -5,7 +5,7 @@ import type { ResolvedConfig as ResolvedViteConfig } from 'vite'
import type { ApiConfig, ResolvedConfig, UserConfig, VitestRunMode } from '../types'
import { defaultBrowserPort, defaultPort } from '../constants'
import { benchmarkConfigDefaults, configDefaults } from '../defaults'
-import { isCI, toArray } from '../utils'
+import { isCI, stdProvider, toArray } from '../utils'
import { VitestCache } from './cache'
import { BaseSequencer } from './sequencers/BaseSequencer'
import { RandomSequencer } from './sequencers/RandomSequencer'
@@ -386,6 +386,9 @@ export function resolveConfig(
resolved.browser.slowHijackESM ??= false
resolved.browser.isolate ??= true
+ if (resolved.browser.enabled && stdProvider === 'stackblitz')
+ resolved.browser.provider = 'none'
+
resolved.browser.api = resolveApiServerConfig(resolved.browser) || {
port: defaultBrowserPort,
}
diff --git a/packages/vitest/src/node/workspace.ts b/packages/vitest/src/node/workspace.ts
index 614d84611981..3f5bc5755610 100644
--- a/packages/vitest/src/node/workspace.ts
+++ b/packages/vitest/src/node/workspace.ts
@@ -376,7 +376,7 @@ export class WorkspaceProject {
const supportedBrowsers = this.browserProvider.getSupportedBrowsers()
if (!browser)
throw new Error(`[${this.getName()}] Browser name is required. Please, set \`test.browser.name\` option manually.`)
- if (!supportedBrowsers.includes(browser))
+ if (supportedBrowsers.length && !supportedBrowsers.includes(browser))
throw new Error(`[${this.getName()}] Browser "${browser}" is not supported by the browser provider "${this.browserProvider.name}". Supported browsers: ${supportedBrowsers.join(', ')}.`)
const providerOptions = this.config.browser.providerOptions
await this.browserProvider.initialize(this, { browser, options: providerOptions })
diff --git a/packages/vitest/src/types/browser.ts b/packages/vitest/src/types/browser.ts
index 1a464f046c05..cc819744ac3f 100644
--- a/packages/vitest/src/types/browser.ts
+++ b/packages/vitest/src/types/browser.ts
@@ -40,7 +40,7 @@ export interface BrowserConfigOptions {
*
* @default 'webdriverio'
*/
- provider?: 'webdriverio' | 'playwright' | (string & {})
+ provider?: 'webdriverio' | 'playwright' | 'none' | (string & {})
/**
* Options that are passed down to a browser provider.
diff --git a/packages/vitest/src/utils/env.ts b/packages/vitest/src/utils/env.ts
index cafe9b01256e..58a747258f64 100644
--- a/packages/vitest/src/utils/env.ts
+++ b/packages/vitest/src/utils/env.ts
@@ -1,3 +1,3 @@
export const isNode: boolean = typeof process < 'u' && typeof process.stdout < 'u' && !process.versions?.deno && !globalThis.window
export const isBrowser: boolean = typeof window !== 'undefined'
-export { isCI } from 'std-env'
+export { isCI, provider as stdProvider } from 'std-env'
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index c9d7d39e846d..e81c9501952d 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -245,9 +245,12 @@ importers:
examples/lit:
dependencies:
lit:
- specifier: ^2.2.5
- version: 2.3.1
+ specifier: ^3.0.1
+ version: 3.0.1
devDependencies:
+ '@vitest/browser':
+ specifier: latest
+ version: link:../../packages/browser
'@vitest/ui':
specifier: latest
version: link:../../packages/ui
@@ -260,6 +263,9 @@ importers:
vitest:
specifier: workspace:*
version: link:../../packages/vitest
+ webdriverio:
+ specifier: ^8.21.0
+ version: 8.21.0(typescript@5.1.6)
examples/marko:
devDependencies:
@@ -7155,7 +7161,7 @@ packages:
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
dependencies:
'@jest/types': 27.5.1
- '@types/node': 18.18.6
+ '@types/node': 20.8.10
chalk: 4.1.2
jest-message-util: 27.5.1
jest-util: 27.5.1
@@ -7176,7 +7182,7 @@ packages:
'@jest/test-result': 27.5.1
'@jest/transform': 27.5.1
'@jest/types': 27.5.1
- '@types/node': 18.18.6
+ '@types/node': 20.8.10
ansi-escapes: 4.3.2
chalk: 4.1.2
emittery: 0.8.1
@@ -7213,7 +7219,7 @@ packages:
dependencies:
'@jest/fake-timers': 27.5.1
'@jest/types': 27.5.1
- '@types/node': 18.18.6
+ '@types/node': 20.8.10
jest-mock: 27.5.1
dev: true
@@ -7230,7 +7236,7 @@ packages:
dependencies:
'@jest/types': 27.5.1
'@sinonjs/fake-timers': 8.1.0
- '@types/node': 18.18.6
+ '@types/node': 20.8.10
jest-message-util: 27.5.1
jest-mock: 27.5.1
jest-util: 27.5.1
@@ -7259,7 +7265,7 @@ packages:
'@jest/test-result': 27.5.1
'@jest/transform': 27.5.1
'@jest/types': 27.5.1
- '@types/node': 18.18.6
+ '@types/node': 20.8.10
chalk: 4.1.2
collect-v8-coverage: 1.0.2
exit: 0.1.2
@@ -7372,7 +7378,7 @@ packages:
dependencies:
'@types/istanbul-lib-coverage': 2.0.4
'@types/istanbul-reports': 3.0.1
- '@types/node': 20.8.8
+ '@types/node': 18.18.6
'@types/yargs': 15.0.14
chalk: 4.1.2
dev: true
@@ -7383,7 +7389,7 @@ packages:
dependencies:
'@types/istanbul-lib-coverage': 2.0.5
'@types/istanbul-reports': 3.0.3
- '@types/node': 18.18.6
+ '@types/node': 20.8.10
'@types/yargs': 16.0.7
chalk: 4.1.2
dev: true
@@ -7395,7 +7401,7 @@ packages:
'@jest/schemas': 29.4.3
'@types/istanbul-lib-coverage': 2.0.4
'@types/istanbul-reports': 3.0.1
- '@types/node': 20.8.8
+ '@types/node': 18.18.6
'@types/yargs': 17.0.12
chalk: 4.1.2
dev: true
@@ -7492,8 +7498,14 @@ packages:
type-detect: 4.0.8
dev: true
- /@lit/reactive-element@1.4.1:
- resolution: {integrity: sha512-qDv4851VFSaBWzpS02cXHclo40jsbAjRXnebNXpm0uVg32kCneZPo9RYVQtrTNICtZ+1wAYHu1ZtxWSWMbKrBw==}
+ /@lit-labs/ssr-dom-shim@1.1.2:
+ resolution: {integrity: sha512-jnOD+/+dSrfTWYfSXBXlo5l5f0q1UuJo3tkbMDCYA2lKUYq79jaxqtGEvnRoh049nt1vdo1+45RinipU6FGY2g==}
+ dev: false
+
+ /@lit/reactive-element@2.0.1:
+ resolution: {integrity: sha512-eu50SQXHRthFwWJMp0oAFg95Rvm6MTPjxSXWuvAu7It90WVFLFpNBoIno7XOXSDvVgTrtKnUV4OLJqys2Svn4g==}
+ dependencies:
+ '@lit-labs/ssr-dom-shim': 1.1.2
dev: false
/@marko/babel-utils@6.3.1:
@@ -10413,7 +10425,7 @@ packages:
resolution: {integrity: sha512-N7UDG0/xiPQa2D/XrVJXjkWbpqHCd2sBaB32ggRF2l83RhPfamgKGF8gwwqyksS95qUS5ZYF9aF+lLPRlwI2UA==}
dependencies:
'@types/connect': 3.4.37
- '@types/node': 18.18.6
+ '@types/node': 20.8.10
dev: true
/@types/braces@3.0.1:
@@ -10440,7 +10452,7 @@ packages:
/@types/connect@3.4.37:
resolution: {integrity: sha512-zBUSRqkfZ59OcwXon4HVxhx5oWCJmc0OtBTK05M+p0dYjgN6iTwIL2T/WbsQZrEsdnwaF9cWQ+azOnpPvIqY3Q==}
dependencies:
- '@types/node': 18.18.6
+ '@types/node': 20.8.10
dev: true
/@types/cookie@0.4.1:
@@ -10522,7 +10534,7 @@ packages:
/@types/express-serve-static-core@4.17.39:
resolution: {integrity: sha512-BiEUfAiGCOllomsRAZOiMFP7LAnrifHpt56pc4Z7l9K6ACyN06Ns1JLMBxwkfLOjJRlSf06NwWsT7yzfpaVpyQ==}
dependencies:
- '@types/node': 18.18.6
+ '@types/node': 20.8.10
'@types/qs': 6.9.9
'@types/range-parser': 1.2.6
'@types/send': 0.17.3
@@ -10564,26 +10576,26 @@ packages:
resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==}
dependencies:
'@types/minimatch': 5.1.1
- '@types/node': 20.8.8
+ '@types/node': 18.18.6
dev: true
/@types/glob@8.0.0:
resolution: {integrity: sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA==}
dependencies:
'@types/minimatch': 5.1.1
- '@types/node': 20.8.8
+ '@types/node': 18.18.6
dev: true
/@types/graceful-fs@4.1.5:
resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==}
dependencies:
- '@types/node': 20.8.8
+ '@types/node': 18.18.6
dev: true
/@types/graceful-fs@4.1.8:
resolution: {integrity: sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw==}
dependencies:
- '@types/node': 18.18.6
+ '@types/node': 20.8.10
dev: true
/@types/hast@2.3.4:
@@ -10748,14 +10760,14 @@ packages:
/@types/node-fetch@2.6.2:
resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==}
dependencies:
- '@types/node': 20.8.8
+ '@types/node': 18.18.6
form-data: 3.0.1
dev: true
/@types/node-fetch@2.6.7:
resolution: {integrity: sha512-lX17GZVpJ/fuCjguZ5b3TjEbSENxmEk1B2z02yoXSK9WMEWRivhdSY73wWMn6bpcCDAOh6qAdktpKHIlkDk2lg==}
dependencies:
- '@types/node': 18.18.6
+ '@types/node': 20.8.10
form-data: 4.0.0
dev: true
@@ -10774,6 +10786,12 @@ packages:
resolution: {integrity: sha512-wf3Vz+jCmOQ2HV1YUJuCWdL64adYxumkrxtc+H1VUQlnQI04+5HtH+qZCOE21lBE7gIrt+CwX2Wv8Acrw5Ak6w==}
dev: true
+ /@types/node@20.8.10:
+ resolution: {integrity: sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w==}
+ dependencies:
+ undici-types: 5.26.5
+ dev: true
+
/@types/node@20.8.2:
resolution: {integrity: sha512-Vvycsc9FQdwhxE3y3DzeIxuEJbWGDsnrxvMADzTDF/lcdR9/K+AQIeAghTQsHtotg/q0j3WEOYS/jQgSdWue3w==}
dev: true
@@ -10921,7 +10939,7 @@ packages:
/@types/resolve@1.17.1:
resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==}
dependencies:
- '@types/node': 18.18.6
+ '@types/node': 20.8.10
dev: true
/@types/resolve@1.20.2:
@@ -10939,7 +10957,7 @@ packages:
resolution: {integrity: sha512-/7fKxvKUoETxjFUsuFlPB9YndePpxxRAOfGC/yJdc9kTjTeP5kRCTzfnE8kPUKCeyiyIZu0YQ76s50hCedI1ug==}
dependencies:
'@types/mime': 1.3.4
- '@types/node': 18.18.6
+ '@types/node': 20.8.10
dev: true
/@types/serve-static@1.15.4:
@@ -10947,13 +10965,13 @@ packages:
dependencies:
'@types/http-errors': 2.0.3
'@types/mime': 3.0.3
- '@types/node': 18.18.6
+ '@types/node': 20.8.10
dev: true
/@types/set-cookie-parser@2.4.2:
resolution: {integrity: sha512-fBZgytwhYAUkj/jC/FAV4RQ5EerRup1YQsXQCh8rZfiHkc4UahC192oH0smGwsXol3cL3A5oETuAHeQHmhXM4w==}
dependencies:
- '@types/node': 20.8.8
+ '@types/node': 18.18.6
dev: true
/@types/sinonjs__fake-timers@8.1.1:
@@ -11045,7 +11063,7 @@ packages:
/@types/webpack-sources@3.2.0:
resolution: {integrity: sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==}
dependencies:
- '@types/node': 20.8.8
+ '@types/node': 18.18.6
'@types/source-list-map': 0.1.2
source-map: 0.7.4
dev: true
@@ -11053,7 +11071,7 @@ packages:
/@types/webpack@4.41.32:
resolution: {integrity: sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg==}
dependencies:
- '@types/node': 20.8.8
+ '@types/node': 18.18.6
'@types/tapable': 1.0.8
'@types/uglify-js': 3.17.0
'@types/webpack-sources': 3.2.0
@@ -12235,6 +12253,22 @@ packages:
- supports-color
dev: true
+ /@wdio/config@8.21.0:
+ resolution: {integrity: sha512-ilq880hg+q/MpDqn03bwZruFG0+C5t21XjGbDxdGmpf2aJMFVZdWk6tjlbnwjJ7nDTufIYidp/LWyG7Ro/W7FA==}
+ engines: {node: ^16.13 || >=18}
+ dependencies:
+ '@wdio/logger': 8.16.17
+ '@wdio/types': 8.21.0
+ '@wdio/utils': 8.21.0
+ decamelize: 6.0.0
+ deepmerge-ts: 5.1.0
+ glob: 10.3.10
+ import-meta-resolve: 3.0.0
+ read-pkg-up: 10.1.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/@wdio/logger@8.16.17:
resolution: {integrity: sha512-zeQ41z3T+b4IsrriZZipayXxLNDuGsm7TdExaviNGojPVrIsQUCSd/FvlLHM32b7ZrMyInHenu/zx1cjAZO71g==}
engines: {node: ^16.13 || >=18}
@@ -12253,11 +12287,15 @@ packages:
resolution: {integrity: sha512-TABA0mksHvu5tE8qNYYDR0fDyo90NCANeghbGAtsI8TUsJzgH0dwpos3WSSiB97J9HRSZuWIMa7YuABEkBIjWQ==}
dev: true
+ /@wdio/protocols@8.20.4:
+ resolution: {integrity: sha512-9PwA2xgjsoB/9Fm8UWRhJlw61O69ckRICuBn0bzoHmMF7uMzYgDvDTekzYKn8JfjzvLm/MnWXL8raCZfQQ0P5g==}
+ dev: true
+
/@wdio/repl@8.10.1:
resolution: {integrity: sha512-VZ1WFHTNKjR8Ga97TtV2SZM6fvRjWbYI2i/f4pJB4PtusorKvONAMJf2LQcUBIyzbVobqr7KSrcjmSwRolI+yw==}
engines: {node: ^16.13 || >=18}
dependencies:
- '@types/node': 20.8.8
+ '@types/node': 20.8.10
dev: true
/@wdio/types@8.16.12:
@@ -12274,6 +12312,13 @@ packages:
'@types/node': 20.8.8
dev: true
+ /@wdio/types@8.21.0:
+ resolution: {integrity: sha512-mZFOipmu541z0BXBW7mBAUjM4zZWhNnP/w321OSYx082Jy4d0UHMFXYWaOC98DIMBPahJu/yLX2WH5iCrazKSA==}
+ engines: {node: ^16.13 || >=18}
+ dependencies:
+ '@types/node': 20.8.10
+ dev: true
+
/@wdio/utils@8.16.17:
resolution: {integrity: sha512-jDyOrxbQRDJO0OPt9UBgnwpUIKqtRn4+R0gR5VSDrIG/in5ZZg28yer8urrIVY4yY9ut5r/22VaMHZI9LEXF5w==}
engines: {node: ^16.13 || >=18}
@@ -12318,6 +12363,28 @@ packages:
- supports-color
dev: true
+ /@wdio/utils@8.21.0:
+ resolution: {integrity: sha512-bEmOL9wRsDXnHxh/FYH/rHv/3pJdNIZ8SL0vbBFl3m3ZvKWBJ0xZgpW6XUYXK5S0xi20Y2T7zf2URifp+AOlPg==}
+ engines: {node: ^16.13 || >=18}
+ dependencies:
+ '@puppeteer/browsers': 1.7.0
+ '@wdio/logger': 8.16.17
+ '@wdio/types': 8.21.0
+ decamelize: 6.0.0
+ deepmerge-ts: 5.1.0
+ edgedriver: 5.3.6
+ geckodriver: 4.2.0
+ get-port: 7.0.0
+ got: 13.0.0
+ import-meta-resolve: 3.0.0
+ locate-app: 2.1.0
+ safaridriver: 0.1.0
+ split2: 4.2.0
+ wait-port: 1.0.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/@webassemblyjs/ast@1.11.1:
resolution: {integrity: sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==}
dependencies:
@@ -15895,6 +15962,10 @@ packages:
resolution: {integrity: sha512-z4eehc+fhmptqhxwreLcg9iydszZGU4Q5FzaaElXVGp3KyfXbjtXeUCmo4l8FxBJbyXtCz4VRIJsGW2ekApyUQ==}
dev: true
+ /devtools-protocol@0.0.1213968:
+ resolution: {integrity: sha512-o4n/beY+3CcZwFctYapjGelKptR4AuQT5gXS1Kvgbig+ArwkxK7f8wDVuD1wsoswiJWCwV6OK+Qb7vhNzNmABQ==}
+ dev: true
+
/devtools-protocol@0.0.981744:
resolution: {integrity: sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==}
dev: true
@@ -18506,7 +18577,7 @@ packages:
foreground-child: 3.1.1
jackspeak: 2.3.6
minimatch: 9.0.3
- minipass: 5.0.0
+ minipass: 7.0.4
path-scurry: 1.10.1
dev: true
@@ -20109,7 +20180,7 @@ packages:
'@jest/environment': 27.5.1
'@jest/test-result': 27.5.1
'@jest/types': 27.5.1
- '@types/node': 18.18.6
+ '@types/node': 20.8.10
chalk: 4.1.2
co: 4.6.0
dedent: 0.7.0
@@ -20244,7 +20315,7 @@ packages:
'@jest/environment': 27.5.1
'@jest/fake-timers': 27.5.1
'@jest/types': 27.5.1
- '@types/node': 18.18.6
+ '@types/node': 20.8.10
jest-mock: 27.5.1
jest-util: 27.5.1
jsdom: 16.7.0
@@ -20262,7 +20333,7 @@ packages:
'@jest/environment': 27.5.1
'@jest/fake-timers': 27.5.1
'@jest/types': 27.5.1
- '@types/node': 18.18.6
+ '@types/node': 20.8.10
jest-mock: 27.5.1
jest-util: 27.5.1
dev: true
@@ -20283,7 +20354,7 @@ packages:
dependencies:
'@jest/types': 26.6.2
'@types/graceful-fs': 4.1.5
- '@types/node': 20.8.8
+ '@types/node': 18.18.6
anymatch: 3.1.3
fb-watchman: 2.0.1
graceful-fs: 4.2.11
@@ -20306,7 +20377,7 @@ packages:
dependencies:
'@jest/types': 27.5.1
'@types/graceful-fs': 4.1.8
- '@types/node': 18.18.6
+ '@types/node': 20.8.10
anymatch: 3.1.3
fb-watchman: 2.0.2
graceful-fs: 4.2.11
@@ -20346,7 +20417,7 @@ packages:
'@jest/source-map': 27.5.1
'@jest/test-result': 27.5.1
'@jest/types': 27.5.1
- '@types/node': 18.18.6
+ '@types/node': 20.8.10
chalk: 4.1.2
co: 4.6.0
expect: 27.5.1
@@ -20426,7 +20497,7 @@ packages:
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
dependencies:
'@jest/types': 27.5.1
- '@types/node': 18.18.6
+ '@types/node': 20.8.10
dev: true
/jest-pnp-resolver@1.2.3(jest-resolve@27.5.1):
@@ -20487,7 +20558,7 @@ packages:
'@jest/test-result': 27.5.1
'@jest/transform': 27.5.1
'@jest/types': 27.5.1
- '@types/node': 18.18.6
+ '@types/node': 20.8.10
chalk: 4.1.2
emittery: 0.8.1
graceful-fs: 4.2.11
@@ -20544,7 +20615,7 @@ packages:
resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==}
engines: {node: '>= 10.14.2'}
dependencies:
- '@types/node': 20.8.8
+ '@types/node': 18.18.6
graceful-fs: 4.2.11
dev: true
@@ -20552,7 +20623,7 @@ packages:
resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
dependencies:
- '@types/node': 18.18.6
+ '@types/node': 20.8.10
graceful-fs: 4.2.11
dev: true
@@ -20591,7 +20662,7 @@ packages:
engines: {node: '>= 10.14.2'}
dependencies:
'@jest/types': 26.6.2
- '@types/node': 20.8.8
+ '@types/node': 18.18.6
chalk: 4.1.2
graceful-fs: 4.2.11
is-ci: 2.0.0
@@ -20603,7 +20674,7 @@ packages:
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
dependencies:
'@jest/types': 27.5.1
- '@types/node': 18.18.6
+ '@types/node': 20.8.10
chalk: 4.1.2
ci-info: 3.9.0
graceful-fs: 4.2.11
@@ -20615,7 +20686,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@jest/types': 29.0.1
- '@types/node': 20.8.8
+ '@types/node': 18.18.6
chalk: 4.1.2
ci-info: 3.8.0
graceful-fs: 4.2.11
@@ -20640,7 +20711,7 @@ packages:
dependencies:
'@jest/test-result': 27.5.1
'@jest/types': 27.5.1
- '@types/node': 18.18.6
+ '@types/node': 20.8.10
ansi-escapes: 4.3.2
chalk: 4.1.2
jest-util: 27.5.1
@@ -20651,7 +20722,7 @@ packages:
resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==}
engines: {node: '>= 10.13.0'}
dependencies:
- '@types/node': 20.8.8
+ '@types/node': 18.18.6
merge-stream: 2.0.0
supports-color: 7.2.0
dev: true
@@ -20660,7 +20731,7 @@ packages:
resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
engines: {node: '>= 10.13.0'}
dependencies:
- '@types/node': 20.8.8
+ '@types/node': 18.18.6
merge-stream: 2.0.0
supports-color: 8.1.1
dev: true
@@ -21293,25 +21364,26 @@ packages:
wrap-ansi: 7.0.0
dev: true
- /lit-element@3.2.2:
- resolution: {integrity: sha512-6ZgxBR9KNroqKb6+htkyBwD90XGRiqKDHVrW/Eh0EZ+l+iC+u+v+w3/BA5NGi4nizAVHGYvQBHUDuSmLjPp7NQ==}
+ /lit-element@4.0.1:
+ resolution: {integrity: sha512-OxRMJem4HKZt0320HplLkBPoi4KHiEHoPHKd8Lzf07ZQVAOKIjZ32yPLRKRDEolFU1RgrQBfSHQMoxKZ72V3Kw==}
dependencies:
- '@lit/reactive-element': 1.4.1
- lit-html: 2.3.1
+ '@lit-labs/ssr-dom-shim': 1.1.2
+ '@lit/reactive-element': 2.0.1
+ lit-html: 3.0.1
dev: false
- /lit-html@2.3.1:
- resolution: {integrity: sha512-FyKH6LTW6aBdkfNhNSHyZTnLgJSTe5hMk7HFtc/+DcN1w74C215q8B+Cfxc2OuIEpBNcEKxgF64qL8as30FDHA==}
+ /lit-html@3.0.1:
+ resolution: {integrity: sha512-1nmGaNNQg9rBvE1yJ6oS3ZNbLs3FXtlG4+jgGkix8O740qVEwwiFVTgDGIIH8N5TcQ8V9tBk5T+sxqBgffcjJg==}
dependencies:
'@types/trusted-types': 2.0.2
dev: false
- /lit@2.3.1:
- resolution: {integrity: sha512-TejktDR4mqG3qB32Y8Lm5Lye3c8SUehqz7qRsxe1PqGYL6me2Ef+jeQAEqh20BnnGncv4Yxy2njEIT0kzK1WCw==}
+ /lit@3.0.1:
+ resolution: {integrity: sha512-CYFv7/gwrs6bfPm299O9LD/HB4dgHvsEf/yqUOI//fi469i2OrT4xaptUcmhr05DNQEgsBFecFH8EJnN5So8oQ==}
dependencies:
- '@lit/reactive-element': 1.4.1
- lit-element: 3.2.2
- lit-html: 2.3.1
+ '@lit/reactive-element': 2.0.1
+ lit-element: 4.0.1
+ lit-html: 3.0.1
dev: false
/load-json-file@1.1.0:
@@ -27280,6 +27352,10 @@ packages:
resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==}
dev: true
+ /undici-types@5.26.5:
+ resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
+ dev: true
+
/undici@5.22.1:
resolution: {integrity: sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==}
engines: {node: '>=14.0'}
@@ -28530,6 +28606,27 @@ packages:
- utf-8-validate
dev: true
+ /webdriver@8.21.0:
+ resolution: {integrity: sha512-jQ3Me9lEAD+rQWg2g+YfTi2rADCfg7sl02jji9eVRJKJ7Vji7ceGJ6xXfj5+gEZZW8EJt7tpXILJi3etMAYwvA==}
+ engines: {node: ^16.13 || >=18}
+ dependencies:
+ '@types/node': 20.8.10
+ '@types/ws': 8.5.5
+ '@wdio/config': 8.21.0
+ '@wdio/logger': 8.16.17
+ '@wdio/protocols': 8.20.4
+ '@wdio/types': 8.21.0
+ '@wdio/utils': 8.21.0
+ deepmerge-ts: 5.1.0
+ got: 12.6.1
+ ky: 0.33.3
+ ws: 8.13.0
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+ dev: true
+
/webdriverio@8.16.20(typescript@5.1.6):
resolution: {integrity: sha512-2xSJDrMxwPF1kucB/r7Wc8yF689GGi7iSKrog7vkkoIiRY25vd3U129iN2mTYgNDyM6SM0kw+GP5W1s73khpYw==}
engines: {node: ^16.13 || >=18}
@@ -28612,6 +28709,47 @@ packages:
- utf-8-validate
dev: true
+ /webdriverio@8.21.0(typescript@5.1.6):
+ resolution: {integrity: sha512-vLpQMOQ9eGyrihkVpuFfd4X83MB8RhfAhhSKnEVAzWn/2CRNlwQSQ4vdNXKhv/kmmBdJOckJThbpV905AQSXFA==}
+ engines: {node: ^16.13 || >=18}
+ peerDependencies:
+ devtools: ^8.14.0
+ peerDependenciesMeta:
+ devtools:
+ optional: true
+ dependencies:
+ '@types/node': 20.8.10
+ '@wdio/config': 8.21.0
+ '@wdio/logger': 8.16.17
+ '@wdio/protocols': 8.20.4
+ '@wdio/repl': 8.10.1
+ '@wdio/types': 8.21.0
+ '@wdio/utils': 8.21.0
+ archiver: 6.0.1
+ aria-query: 5.3.0
+ css-shorthand-properties: 1.1.1
+ css-value: 0.0.1
+ devtools-protocol: 0.0.1213968
+ grapheme-splitter: 1.0.4
+ import-meta-resolve: 3.0.0
+ is-plain-obj: 4.1.0
+ lodash.clonedeep: 4.5.0
+ lodash.zip: 4.2.0
+ minimatch: 9.0.3
+ puppeteer-core: 20.9.0(typescript@5.1.6)
+ query-selector-shadow-dom: 1.0.1
+ resq: 1.11.0
+ rgb2hex: 0.2.5
+ serialize-error: 11.0.2
+ webdriver: 8.21.0
+ transitivePeerDependencies:
+ - bufferutil
+ - encoding
+ - supports-color
+ - typescript
+ - utf-8-validate
+ dev: true
+
/webidl-conversions@3.0.1:
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}