vitest-playwright-bridge has 7 recorded weekly downloads on npm, a decrease of 56.3% over the past 30 days, ranking #2136 of 2,322 tracked listings.
About vitest-playwright-bridge
vitest-playwright-bridge
Bridge to interact with Playwright directly from Vitest browser tests, enabling advanced browser control and access to Playwright features. It provides utilities like pageHandle, which allow direct interaction with the Playwright Page object.
Example
test/media.test.ts for CSS media emulation:
import { describe, test, expect } from 'vitest'
import { pageHandle } from 'vitest-playwright-bridge/browser'
describe('CSS media emulation', () => {
test.afterEach(async () => {
await pageHandle.evaluate(async (page) => {
await page.emulateMedia({
colorScheme: null,
contrast: null,
forcedColors: null,
media: null,
reducedMotion: null,
})
})
})
test('should set dark mode', async () => {
expect(window.matchMedia('(prefers-color-scheme: dark)').matches).toBe(false)
await pageHandle.evaluate(async (page) => {
await page.emulateMedia({ colorScheme: 'dark' })
})
expect(window.matchMedia('(prefers-color-scheme: dark)').matches).toBe(true)
})
})
Configuration
vitest.config.ts example:
import { defineConfig } from 'vitest/config'
import { playwright } from '@vitest/browser-playwright'
import { playwrightBridge } from 'vitest-playwright-bridge/plugin'
export default defineConfig({
plugins: [playwrightBridge()],
test: {
browser: {
provider: playwright(),
enabled: true,
instances: [
{ browser: 'chromium' },
],
},
},
})
API
import { pageHandle, contextHandle, route, unroute, unrouteAll, bypassFetch } from 'vitest-playwright-bridge/browser'
HostHandle
HostHandle is similar to JSHandle in Playwright.
Just like we pass functions from Node to browsers via JSHandle.evaluate in Playwright, we can pass functions from browsers to Node via HostHandle.evaluate in this bridge.
The bridge provides two initial HostHandle instances:
pageHandle: represents the current PlaywrightPageobject.contextHandle: represents the current PlaywrightBrowserContextobject.
Network Routing
To support fast, flexible network request matching and routing, the bridge provides direct browser equivalents for Playwright's Page.route.
route(url, handler): adds a route to match network requests.unroute(url, handler?): removes a specific route or all routes matching the URL.unrouteAll(): removes all routes.
import { describe, test, expect } from 'vitest'
import { route, unrouteAll } from 'vitest-playwright-bridge/browser'
describe('network request routing', () => {
test.afterEach(async () => {
await unrouteAll({ behavior: 'wait' })
})
test('should reply with Hello World', async () => {
await route('/hello', async (route) => {
await route.fulfill({ body: 'Hello World' })
})
const response = await fetch('/hello')
const text = await response.text()
expect(text).toBe('Hello World')
})
})
License
MIT
Description from the npm listing.
- vitest
- playwright
- bridge
- browser
- testing
- plugin
- vitest-plugin
- network
- routing
- page
- context
README badge
Show your rank in a README or on your website. The badge updates automatically.
Charts
Images: 30d · 1y · all time · 1600×900 dark
Adoption over time
7/30/90-day growth
Ranking history
Listing placement
Listing placement
Filled points are observed values; hollow points come from Internet Archive snapshots of the listing page. Dashed segments span periods with no observations — values between points are not interpolated.
Each band is one page of 20. Weekly downloads on a linear scale. Placement is projected from weekly downloads, so it can differ from the marketplace's own sort order. Hover a dot to see the listing.
Recent observations
Full history (122)Similar npm Testing plugins
All 20 vitest-playwright-bridge alternativesData source
Weekly downloads (trailing 7 complete days) come from the official npm downloads API. Downloads include CI and mirrors and are not equivalent to installs or users. npm publishes no ratings.
Listing: https://www.npmjs.com/package/vitest-playwright-bridge. First seen Oct 16, 2026; last successful collection Oct 20, 2026. See the methodology.