[READ-ONLY] Mirror of https://github.com/vitest-dev/vitest. Next generation testing framework powered by Vite. vitest.dev
test testing-tools vite
12

Configure Feed

Select the types of activity you want to include in your feed.

fix(browser): avoid safaridriver collision (#4863)

authored by

Mike Bland and committed by
GitHub
(Jan 4, 2024, 9:30 AM +0100) 345a25d6 1efc29b6

+6 -12
-1
packages/browser/package.json
··· 51 51 }, 52 52 "peerDependencies": { 53 53 "playwright": "*", 54 - "safaridriver": "*", 55 54 "vitest": "^1.0.0", 56 55 "webdriverio": "*" 57 56 },
+1
test/browser/package.json
··· 6 6 "test": "pnpm run test:webdriverio && pnpm run test:playwright", 7 7 "test:webdriverio": "PROVIDER=webdriverio node --test specs/", 8 8 "test:playwright": "PROVIDER=playwright node --test specs/", 9 + "test:safaridriver": "PROVIDER=webdriverio BROWSER=safari node --test specs/", 9 10 "coverage": "vitest --coverage.enabled --coverage.provider=istanbul --browser.headless=yes" 10 11 }, 11 12 "devDependencies": {
+5 -1
test/browser/specs/runner.test.mjs
··· 4 4 import { execa } from 'execa' 5 5 6 6 const browser = process.env.BROWSER || (process.env.PROVIDER === 'playwright' ? 'chromium' : 'chrome') 7 + const argv = ['vitest', '--run', `--browser.name=${browser}`] 7 8 8 - const { stderr, stdout } = await execa('npx', ['vitest', '--run', `--browser.name=${browser}`, '--browser.headless'], { 9 + if (browser !== 'safari') 10 + argv.push('--browser.headless') 11 + 12 + const { stderr, stdout } = await execa('npx', argv, { 9 13 env: { 10 14 ...process.env, 11 15 CI: 'true',
-10
packages/browser/src/node/providers/webdriver.ts
··· 14 14 public name = 'webdriverio' 15 15 16 16 private cachedBrowser: WebdriverIO.Browser | null = null 17 - private stopSafari: () => void = () => {} 18 17 private browser!: WebdriverBrowser 19 18 private ctx!: WorkspaceProject 20 19 ··· 39 38 if (this.browser === 'safari') { 40 39 if (options.headless) 41 40 throw new Error('You\'ve enabled headless mode for Safari but it doesn\'t currently support it.') 42 - 43 - const safaridriver = await import('safaridriver') 44 - safaridriver.start({ diagnose: true }) 45 - this.stopSafari = () => safaridriver.stop() 46 - 47 - process.on('beforeExit', () => { 48 - safaridriver.stop() 49 - }) 50 41 } 51 42 52 43 const { remote } = await import('webdriverio') ··· 97 88 98 89 async close() { 99 90 await Promise.all([ 100 - this.stopSafari(), 101 91 this.cachedBrowser?.sessionId ? this.cachedBrowser?.deleteSession?.() : null, 102 92 ]) 103 93 // TODO: right now process can only exit with timeout, if we use browser