mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 09:48:58 -04:00
* [Reporting/Screenshots] Do not fail the report if request is aborted * take pageRequestFailed out of pageExit observable
This commit is contained in:
parent
f2f047b537
commit
c4546be31f
1 changed files with 19 additions and 24 deletions
|
@ -15,7 +15,7 @@ import {
|
|||
} from 'puppeteer';
|
||||
import rimraf from 'rimraf';
|
||||
import * as Rx from 'rxjs';
|
||||
import { ignoreElements, mergeMap, tap } from 'rxjs/operators';
|
||||
import { ignoreElements, map, mergeMap, tap } from 'rxjs/operators';
|
||||
import { InnerSubscriber } from 'rxjs/internal/InnerSubscriber';
|
||||
|
||||
import { BrowserConfig, NetworkPolicy } from '../../../../types';
|
||||
|
@ -144,7 +144,7 @@ export class HeadlessChromiumDriverFactory {
|
|||
terminate$
|
||||
.pipe(
|
||||
tap(signal => {
|
||||
this.logger.debug(`Observer got signal: ${signal}`);
|
||||
this.logger.debug(`Termination signal received: ${signal}`);
|
||||
}),
|
||||
ignoreElements()
|
||||
)
|
||||
|
@ -156,7 +156,6 @@ export class HeadlessChromiumDriverFactory {
|
|||
this.getProcessLogger(browser).subscribe();
|
||||
|
||||
const driver$ = Rx.of(new HeadlessChromiumDriver(page, { inspect: this.browserConfig.inspect, networkPolicy: this.networkPolicy })); // prettier-ignore
|
||||
|
||||
const exit$ = this.getPageExit(browser, page);
|
||||
|
||||
observer.next({ driver$, exit$ });
|
||||
|
@ -177,9 +176,9 @@ export class HeadlessChromiumDriverFactory {
|
|||
});
|
||||
}
|
||||
|
||||
getBrowserLogger(page: Page): Rx.Observable<ConsoleMessage> {
|
||||
return Rx.fromEvent(page as NodeJS.EventEmitter, 'console').pipe(
|
||||
tap((line: ConsoleMessage) => {
|
||||
getBrowserLogger(page: Page): Rx.Observable<void> {
|
||||
const consoleMessages$ = Rx.fromEvent<ConsoleMessage>(page, 'console').pipe(
|
||||
map(line => {
|
||||
if (line.type() === 'error') {
|
||||
this.logger.error(line.text(), ['headless-browser-console']);
|
||||
} else {
|
||||
|
@ -187,6 +186,19 @@ export class HeadlessChromiumDriverFactory {
|
|||
}
|
||||
})
|
||||
);
|
||||
|
||||
const pageRequestFailed$ = Rx.fromEvent<PuppeteerRequest>(page, 'requestfailed').pipe(
|
||||
map(req => {
|
||||
const failure = req.failure && req.failure();
|
||||
if (failure) {
|
||||
this.logger.warning(
|
||||
`Request to [${req.url()}] failed! [${failure.errorText}]. This error will be ignored.`
|
||||
);
|
||||
}
|
||||
})
|
||||
);
|
||||
|
||||
return Rx.merge(consoleMessages$, pageRequestFailed$);
|
||||
}
|
||||
|
||||
getProcessLogger(browser: Browser): Rx.Observable<string> {
|
||||
|
@ -214,18 +226,6 @@ export class HeadlessChromiumDriverFactory {
|
|||
mergeMap((err: Error) => Rx.throwError(err))
|
||||
);
|
||||
|
||||
const pageRequestFailed$: Rx.Observable<never> = Rx.fromEvent(page, 'requestfailed').pipe(
|
||||
mergeMap((req: PuppeteerRequest) => {
|
||||
const failure = req.failure && req.failure();
|
||||
if (failure) {
|
||||
return Rx.throwError(
|
||||
new Error(`Request to [${req.url()}] failed! [${failure.errorText}]`)
|
||||
);
|
||||
}
|
||||
return Rx.throwError(new Error(`Unknown failure!`));
|
||||
})
|
||||
);
|
||||
|
||||
const browserDisconnect$ = Rx.fromEvent(browser, 'disconnected').pipe(
|
||||
mergeMap(() =>
|
||||
Rx.throwError(
|
||||
|
@ -236,11 +236,6 @@ export class HeadlessChromiumDriverFactory {
|
|||
)
|
||||
);
|
||||
|
||||
return Rx.merge(
|
||||
pageError$,
|
||||
uncaughtExceptionPageError$,
|
||||
pageRequestFailed$,
|
||||
browserDisconnect$
|
||||
);
|
||||
return Rx.merge(pageError$, uncaughtExceptionPageError$, browserDisconnect$);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue