import logger from '@wdio/logger'
const log = logger('webdriver')
* Kill the driver process after `deleteSession` command is done
* @param capabilities - the capabilities of the driver
* @param shutdownDriver - whether to shutdown the driver
*/
export function killDriverProcess(capabilities: WebdriverIO.Capabilities, shutdownDriver: boolean) {
if (shutdownDriver && 'wdio:driverPID' in capabilities && capabilities['wdio:driverPID']) {
log.info(`Kill driver process with PID ${capabilities['wdio:driverPID']}`)
try {
const killedSuccessfully = process.kill(capabilities['wdio:driverPID'], 'SIGKILL')
if (!killedSuccessfully) {
log.warn('Failed to kill driver process, manually clean-up might be required')
}
} catch (err) {
log.warn('Failed to kill driver process', err)
}
setTimeout(() => {
* clear up potential leaked TLS Socket handles
* see https://github.com/puppeteer/puppeteer/pull/10667
*/
for (const handle of process._getActiveHandles()) {
if (handle.servername && handle.servername.includes('edgedl.me')) {
handle.destroy()
}
}
}, 10)
}
}