Skip to content

Commit e71deb2

Browse files
authored
[Reporting/Screenshots] Do not fail the report if request is aborted (#52344)
* [Reporting/Screenshots] Do not fail the report if request is aborted * take pageRequestFailed out of pageExit observable
1 parent 8115e50 commit e71deb2

File tree

1 file changed

+19
-24
lines changed
  • x-pack/legacy/plugins/reporting/server/browsers/chromium/driver_factory

1 file changed

+19
-24
lines changed

x-pack/legacy/plugins/reporting/server/browsers/chromium/driver_factory/index.ts

Lines changed: 19 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import {
1515
} from 'puppeteer';
1616
import del from 'del';
1717
import * as Rx from 'rxjs';
18-
import { ignoreElements, mergeMap, tap } from 'rxjs/operators';
18+
import { ignoreElements, map, mergeMap, tap } from 'rxjs/operators';
1919
import { InnerSubscriber } from 'rxjs/internal/InnerSubscriber';
2020

2121
import { BrowserConfig, NetworkPolicy } from '../../../../types';
@@ -144,7 +144,7 @@ export class HeadlessChromiumDriverFactory {
144144
terminate$
145145
.pipe(
146146
tap(signal => {
147-
this.logger.debug(`Observer got signal: ${signal}`);
147+
this.logger.debug(`Termination signal received: ${signal}`);
148148
}),
149149
ignoreElements()
150150
)
@@ -156,7 +156,6 @@ export class HeadlessChromiumDriverFactory {
156156
this.getProcessLogger(browser).subscribe();
157157

158158
const driver$ = Rx.of(new HeadlessChromiumDriver(page, { inspect: this.browserConfig.inspect, networkPolicy: this.networkPolicy })); // prettier-ignore
159-
160159
const exit$ = this.getPageExit(browser, page);
161160

162161
observer.next({ driver$, exit$ });
@@ -173,16 +172,29 @@ export class HeadlessChromiumDriverFactory {
173172
});
174173
}
175174

176-
getBrowserLogger(page: Page): Rx.Observable<ConsoleMessage> {
177-
return Rx.fromEvent<ConsoleMessage>(page, 'console').pipe(
178-
tap(line => {
175+
getBrowserLogger(page: Page): Rx.Observable<void> {
176+
const consoleMessages$ = Rx.fromEvent<ConsoleMessage>(page, 'console').pipe(
177+
map(line => {
179178
if (line.type() === 'error') {
180179
this.logger.error(line.text(), ['headless-browser-console']);
181180
} else {
182181
this.logger.debug(line.text(), [`headless-browser-console:${line.type()}`]);
183182
}
184183
})
185184
);
185+
186+
const pageRequestFailed$ = Rx.fromEvent<PuppeteerRequest>(page, 'requestfailed').pipe(
187+
map(req => {
188+
const failure = req.failure && req.failure();
189+
if (failure) {
190+
this.logger.warning(
191+
`Request to [${req.url()}] failed! [${failure.errorText}]. This error will be ignored.`
192+
);
193+
}
194+
})
195+
);
196+
197+
return Rx.merge(consoleMessages$, pageRequestFailed$);
186198
}
187199

188200
getProcessLogger(browser: Browser) {
@@ -208,18 +220,6 @@ export class HeadlessChromiumDriverFactory {
208220
mergeMap(err => Rx.throwError(err))
209221
);
210222

211-
const pageRequestFailed$ = Rx.fromEvent<PuppeteerRequest>(page, 'requestfailed').pipe(
212-
mergeMap(req => {
213-
const failure = req.failure && req.failure();
214-
if (failure) {
215-
return Rx.throwError(
216-
new Error(`Request to [${req.url()}] failed! [${failure.errorText}]`)
217-
);
218-
}
219-
return Rx.throwError(new Error(`Unknown failure!`));
220-
})
221-
);
222-
223223
const browserDisconnect$ = Rx.fromEvent(browser, 'disconnected').pipe(
224224
mergeMap(() =>
225225
Rx.throwError(
@@ -230,11 +230,6 @@ export class HeadlessChromiumDriverFactory {
230230
)
231231
);
232232

233-
return Rx.merge(
234-
pageError$,
235-
uncaughtExceptionPageError$,
236-
pageRequestFailed$,
237-
browserDisconnect$
238-
);
233+
return Rx.merge(pageError$, uncaughtExceptionPageError$, browserDisconnect$);
239234
}
240235
}

0 commit comments

Comments
 (0)