mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 17:28:26 -04:00
parent
62cfb2eecf
commit
af5e7c8941
4 changed files with 14 additions and 6 deletions
|
@ -20,10 +20,11 @@ const compactWhitespace = (str) => {
|
|||
};
|
||||
|
||||
export class HeadlessChromiumDriverFactory {
|
||||
constructor(binaryPath, logger, browserConfig) {
|
||||
constructor(binaryPath, logger, browserConfig, queueTimeout) {
|
||||
this.binaryPath = binaryPath;
|
||||
this.logger = logger.clone(['chromium-driver-factory']);
|
||||
this.browserConfig = browserConfig;
|
||||
this.queueTimeout = queueTimeout;
|
||||
}
|
||||
|
||||
type = 'chromium';
|
||||
|
@ -80,6 +81,12 @@ export class HeadlessChromiumDriverFactory {
|
|||
});
|
||||
|
||||
page = await browser.newPage();
|
||||
|
||||
// All navigation/waitFor methods default to 30 seconds,
|
||||
// which can cause the job to fail even if we bump timeouts in
|
||||
// the config. Help alleviate errors like
|
||||
// "TimeoutError: waiting for selector ".application" failed: timeout 30000ms exceeded"
|
||||
page.setDefaultTimeout(this.queueTimeout);
|
||||
} catch (err) {
|
||||
observer.error(new Error(`Error spawning Chromium browser: ${err}`));
|
||||
throw err;
|
||||
|
|
|
@ -8,10 +8,10 @@ import { HeadlessChromiumDriverFactory } from './driver_factory';
|
|||
|
||||
export { paths } from './paths';
|
||||
|
||||
export async function createDriverFactory(binaryPath, logger, browserConfig) {
|
||||
export async function createDriverFactory(binaryPath, logger, browserConfig, queueTimeout) {
|
||||
if (browserConfig.disableSandbox) {
|
||||
logger.warning(`Enabling the Chromium sandbox provides an additional layer of protection.`);
|
||||
}
|
||||
|
||||
return new HeadlessChromiumDriverFactory(binaryPath, logger, browserConfig);
|
||||
return new HeadlessChromiumDriverFactory(binaryPath, logger, browserConfig, queueTimeout);
|
||||
}
|
||||
|
|
|
@ -17,13 +17,14 @@ export async function createBrowserDriverFactory(server) {
|
|||
const BROWSER_TYPE = CAPTURE_CONFIG.browser.type;
|
||||
const BROWSER_AUTO_DOWNLOAD = CAPTURE_CONFIG.browser.autoDownload;
|
||||
const BROWSER_CONFIG = CAPTURE_CONFIG.browser[BROWSER_TYPE];
|
||||
const REPORTING_TIMEOUT = config.get('xpack.reporting.queue.timeout');
|
||||
|
||||
if (BROWSER_AUTO_DOWNLOAD) {
|
||||
await ensureBrowserDownloaded(BROWSER_TYPE);
|
||||
}
|
||||
|
||||
try {
|
||||
const browserDriverFactory = await installBrowser(logger, BROWSER_CONFIG, BROWSER_TYPE, DATA_DIR);
|
||||
const browserDriverFactory = await installBrowser(logger, BROWSER_CONFIG, BROWSER_TYPE, DATA_DIR, REPORTING_TIMEOUT);
|
||||
logger.debug(`Browser installed at ${browserDriverFactory.binaryPath}`);
|
||||
return browserDriverFactory;
|
||||
} catch (error) {
|
||||
|
|
|
@ -22,7 +22,7 @@ const chmod = promisify(fs.chmod);
|
|||
* @param {String} installsPath
|
||||
* @return {Promise<undefined>}
|
||||
*/
|
||||
export async function installBrowser(logger, browserConfig, browserType, installsPath) {
|
||||
export async function installBrowser(logger, browserConfig, browserType, installsPath, queueTimeout) {
|
||||
const browser = BROWSERS_BY_TYPE[browserType];
|
||||
const pkg = browser.paths.packages.find(p => p.platforms.includes(process.platform));
|
||||
|
||||
|
@ -40,5 +40,5 @@ export async function installBrowser(logger, browserConfig, browserType, install
|
|||
await chmod(binaryPath, '755');
|
||||
}
|
||||
|
||||
return browser.createDriverFactory(binaryPath, logger, browserConfig);
|
||||
return browser.createDriverFactory(binaryPath, logger, browserConfig, queueTimeout);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue