UNPKG

siesta-lite

Version:

Stress-free JavaScript unit testing and functional testing tool, works in NodeJS and browsers

69 lines (46 loc) 1.57 kB
/* Siesta 5.6.1 Copyright(c) 2009-2022 Bryntum AB https://bryntum.com/contact https://bryntum.com/products/siesta/license */ ;!function () { var properLockFile = require('proper-lockfile') var fs = require('fs') Role('Siesta.Launcher.Runner.WebDriverNodeJS.CanLockXvfbDisplayFile', { does : [ Siesta.Launcher.FileSystem.NodeJS ], has : { displayNumber : null, minDisplayNum : 99, maxDisplayNum : 599 }, methods : { getXvfbLockFileName : function (displayNum) { var path = process.env.HOME + '/.xvfb-locks/display-' + displayNum this.ensurePathExists(path) return path }, lockXvfbFile : function () { var me = this return new Promise(function (resolve, reject) { for (var i = me.minDisplayNum; i < me.maxDisplayNum; i++) { // avoid opened display if (fs.existsSync("/tmp/.X" + i + "-lock")) continue; try { var release = properLockFile.lockSync(me.getXvfbLockFileName(i), { realpath : false }) resolve({ displayNum : i, release : release }) return } catch (e) { } } reject("Can't acquire Xvfb lock file") }) } } }) }()