From f310abe4e1d2687e912f179a662cf8a6e847495f Mon Sep 17 00:00:00 2001 From: rotempasharel1 Date: Sun, 24 May 2026 13:05:28 +0300 Subject: [PATCH 1/2] fix(webdriverio): allow gpu in headless chrome (#10376) --- packages/browser-webdriverio/src/webdriverio.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/browser-webdriverio/src/webdriverio.ts b/packages/browser-webdriverio/src/webdriverio.ts index 796390080370..5c08e62b3bee 100644 --- a/packages/browser-webdriverio/src/webdriverio.ts +++ b/packages/browser-webdriverio/src/webdriverio.ts @@ -190,9 +190,18 @@ export class WebdriverBrowserProvider implements BrowserProvider { const options = this.project.config.browser const browser = this.browserName if (browser !== 'safari' && options.headless) { - const [key, args] = headlessMap[browser] + const [key, defaultArgs] = headlessMap[browser] const currentValues = (this.options?.capabilities as any)?.[key] || {} - const newArgs = [...(currentValues.args || []), ...args] + const currentArgs: string[] = currentValues.args || [] + + const hasEnableGpu = browser === 'chrome' && (currentArgs.includes('--enable-gpu') || currentArgs.includes('enable-gpu')) + + const argsToAdd = hasEnableGpu + ? defaultArgs.filter(arg => arg !== 'disable-gpu') + : defaultArgs + + const newArgs = [...currentArgs, ...argsToAdd] + capabilities[key] = { ...currentValues, args: newArgs as any } } From 8c154c07e3d79cdb322286422c6f02992adb5082 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Sun, 24 May 2026 19:21:53 +0900 Subject: [PATCH 2/2] docs: update vitest-browser-vue/svelte async render (#10441) Co-authored-by: Codex --- docs/api/browser/svelte.md | 15 +----------- docs/api/browser/vue.md | 23 +++---------------- docs/guide/browser/index.md | 4 ++-- packages/ui/client/test.ts | 6 ++--- .../vitest/src/create/browser/examples.ts | 4 ++-- 5 files changed, 11 insertions(+), 41 deletions(-) diff --git a/docs/api/browser/svelte.md b/docs/api/browser/svelte.md index 4ae2c964f820..9db5c7071013 100644 --- a/docs/api/browser/svelte.md +++ b/docs/api/browser/svelte.md @@ -39,20 +39,11 @@ export function render( Component: ComponentImport, options?: ComponentOptions, renderOptions?: SetupOptions -): RenderResult & PromiseLike> +): Promise> ``` The `render` function records a `svelte.render` trace mark, visible in the [Trace View](/guide/browser/trace-view). -::: warning -Synchronous usage of `render` is deprecated and will be removed in the next major version. Please always `await` the result: - -```ts -const screen = render(Component) // [!code --] -const screen = await render(Component) // [!code ++] -``` -::: - ### Options The `render` function supports either options that you can pass down to [`mount`](https://svelte.dev/docs/svelte/imperative-component-api#mount) or props directly: @@ -174,10 +165,6 @@ function unmount(): Promise Unmount and destroy the Svelte component. Also records a `svelte.unmount` trace mark in the [Trace View](/guide/browser/trace-view). This is useful for testing what happens when your component is removed from the page (like testing that you don't leave event handlers hanging around causing memory leaks). -::: warning -Synchronous usage of `unmount` is deprecated and will be removed in the next major version. Please always `await` the result. -::: - ```ts import { render } from 'vitest-browser-svelte' diff --git a/docs/api/browser/vue.md b/docs/api/browser/vue.md index 4695a47f787a..af3b47ac36d2 100644 --- a/docs/api/browser/vue.md +++ b/docs/api/browser/vue.md @@ -40,20 +40,11 @@ The package exposes two entry points: `vitest-browser-vue` and `vitest-browser-v export function render( component: Component, options?: ComponentRenderOptions, -): RenderResult & PromiseLike +): Promise ``` The `render` function records a `vue.render` trace mark, visible in the [Trace View](/guide/browser/trace-view). -::: warning -Synchronous usage of `render` is deprecated and will be removed in the next major version. Please always `await` the result: - -```ts -const screen = render(Component) // [!code --] -const screen = await render(Component) // [!code ++] -``` -::: - ### Options The `render` function supports all [`mount` options](https://test-utils.vuejs.org/api/#mount) from `@vue/test-utils` (except `attachTo` - use `container` instead). In addition to them, there are also `container` and `baseElement`. @@ -136,17 +127,13 @@ This method is a shortcut for `console.log(prettyDOM(baseElement))`. It will pri #### rerender ```ts -function rerender(props: Partial): void & PromiseLike +function rerender(props: Partial): Promise ``` Also records a `vue.rerender` trace mark in the [Trace View](/guide/browser/trace-view). It is better if you test the component that's doing the prop updating to ensure that the props are being updated correctly to avoid relying on implementation details in your tests. That said, if you'd prefer to update the props of a rendered component in your test, this function can be used to update props of the rendered component. -::: warning -Synchronous usage of `rerender` is deprecated and will be removed in the next major version. Please always `await` the result. -::: - ```js import { render } from 'vitest-browser-vue' @@ -159,15 +146,11 @@ await rerender({ number: 2 }) #### unmount ```ts -function unmount(): void & PromiseLike +function unmount(): Promise ``` This will cause the rendered component to be unmounted. Also records a `vue.unmount` trace mark in the [Trace View](/guide/browser/trace-view). This is useful for testing what happens when your component is removed from the page (like testing that you don't leave event handlers hanging around causing memory leaks). -::: warning -Synchronous usage of `unmount` is deprecated and will be removed in the next major version. Please always `await` the result. -::: - #### emitted ```ts diff --git a/docs/guide/browser/index.md b/docs/guide/browser/index.md index d13f882c6524..7f7fee18d417 100644 --- a/docs/guide/browser/index.md +++ b/docs/guide/browser/index.md @@ -432,7 +432,7 @@ import { render } from 'vitest-browser-vue' import Component from './Component.vue' test('properly handles v-model', async () => { - const screen = render(Component) + const screen = await render(Component) // Asserts initial state. await expect.element(screen.getByText('Hi, my name is Alice')).toBeInTheDocument() @@ -454,7 +454,7 @@ import { expect, test } from 'vitest' import Greeter from './greeter.svelte' test('greeting appears on click', async () => { - const screen = render(Greeter, { name: 'World' }) + const screen = await render(Greeter, { name: 'World' }) const button = screen.getByRole('button') await button.click() diff --git a/packages/ui/client/test.ts b/packages/ui/client/test.ts index 13815a19c578..a8afda632c69 100644 --- a/packages/ui/client/test.ts +++ b/packages/ui/client/test.ts @@ -10,13 +10,13 @@ export { page } from 'vitest/browser' export const render = vi.defineHelper(( component: C, options?: ComponentRenderOptions, -): PromiseLike> => { - return _render(component, { +): Promise> => { + return Promise.resolve(_render(component, { ...options, global: { directives: { tooltip: vTooltip, }, }, - }) + })) }) diff --git a/packages/vitest/src/create/browser/examples.ts b/packages/vitest/src/create/browser/examples.ts index 0268eca1373c..81a9399e1e50 100644 --- a/packages/vitest/src/create/browser/examples.ts +++ b/packages/vitest/src/create/browser/examples.ts @@ -68,7 +68,7 @@ import { render } from 'vitest-browser-vue' import HelloWorld from './HelloWorld.vue' test('renders name', async () => { - const { getByText } = render(HelloWorld, { + const { getByText } = await render(HelloWorld, { props: { name: 'Vitest' }, }) await expect.element(getByText('Hello Vitest!')).toBeInTheDocument() @@ -98,7 +98,7 @@ import { render } from 'vitest-browser-svelte' import HelloWorld from './HelloWorld.svelte' test('renders name', async () => { - const { getByText } = render(HelloWorld, { name: 'Vitest' }) + const { getByText } = await render(HelloWorld, { name: 'Vitest' }) await expect.element(getByText('Hello Vitest!')).toBeInTheDocument() }) `,