mirror of
https://github.com/hanzoai/vitest.git
synced 2026-09-24 17:04:25 +00:00
69 lines
2.0 KiB
TypeScript
69 lines
2.0 KiB
TypeScript
import { fileURLToPath } from 'node:url'
|
|
import { playwright } from '@vitest/browser-playwright'
|
|
import { x } from 'tinyexec'
|
|
import { expect, test } from 'vitest'
|
|
import { Cli } from '../../test-utils/cli'
|
|
import { provider } from '../settings'
|
|
import { runBrowserTests } from './utils'
|
|
|
|
test.runIf(provider.name === 'playwright')('[playwright] runs in connect mode', async ({ onTestFinished }) => {
|
|
const cliPath = fileURLToPath(new URL('./cli.js', import.meta.resolve('@playwright/test')))
|
|
const subprocess = x(process.execPath, [
|
|
cliPath,
|
|
'run-server',
|
|
'--port',
|
|
'9898',
|
|
'--host',
|
|
'127.0.0.1',
|
|
'--unsafe',
|
|
]).process!
|
|
const cli = new Cli({
|
|
stdin: subprocess.stdin,
|
|
stdout: subprocess.stdout,
|
|
stderr: subprocess.stderr,
|
|
})
|
|
let setDone: (value?: unknown) => void
|
|
const isDone = new Promise(resolve => (setDone = resolve))
|
|
subprocess.on('exit', () => setDone())
|
|
onTestFinished(async () => {
|
|
subprocess.kill('SIGILL')
|
|
await isDone
|
|
})
|
|
|
|
await cli.waitForStdout('Listening on ws://127.0.0.1:9898')
|
|
|
|
const result = await runBrowserTests(
|
|
{
|
|
root: './fixtures/playwright-connect',
|
|
browser: {
|
|
instances: [
|
|
{
|
|
browser: 'chromium',
|
|
name: 'chromium',
|
|
provider: playwright({
|
|
connectOptions: {
|
|
wsEndpoint: 'ws://127.0.0.1:9898',
|
|
},
|
|
launchOptions: {
|
|
args: [`--user-agent=VitestLaunchOptionsTester`],
|
|
},
|
|
}),
|
|
},
|
|
],
|
|
},
|
|
},
|
|
['basic.test.js'],
|
|
)
|
|
|
|
expect(result.stderr).toMatchInlineSnapshot(`""`)
|
|
expect(result.errorTree()).toMatchInlineSnapshot(`
|
|
{
|
|
"basic.test.js": {
|
|
"[playwright] Run basic test in browser via connect mode": "passed",
|
|
"[playwright] Run browser-only test in browser via connect mode": "passed",
|
|
"[playwright] applies launch options from connect header": "passed",
|
|
},
|
|
}
|
|
`)
|
|
})
|