Skip to content

Commit

Permalink
[Reporting/Screenshots] Do not fail the report if request is aborted (#…
Browse files Browse the repository at this point in the history
…52344)

* [Reporting/Screenshots] Do not fail the report if request is aborted

* take pageRequestFailed out of pageExit observable
  • Loading branch information
tsullivan authored Dec 10, 2019
1 parent 8115e50 commit e71deb2
Showing 1 changed file with 19 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import {
} from 'puppeteer';
import del from 'del';
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';
Expand Down Expand Up @@ -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()
)
Expand All @@ -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$ });
Expand All @@ -173,16 +172,29 @@ export class HeadlessChromiumDriverFactory {
});
}

getBrowserLogger(page: Page): Rx.Observable<ConsoleMessage> {
return Rx.fromEvent<ConsoleMessage>(page, 'console').pipe(
tap(line => {
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 {
this.logger.debug(line.text(), [`headless-browser-console:${line.type()}`]);
}
})
);

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) {
Expand All @@ -208,18 +220,6 @@ export class HeadlessChromiumDriverFactory {
mergeMap(err => Rx.throwError(err))
);

const pageRequestFailed$ = Rx.fromEvent<PuppeteerRequest>(page, 'requestfailed').pipe(
mergeMap(req => {
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(
Expand All @@ -230,11 +230,6 @@ export class HeadlessChromiumDriverFactory {
)
);

return Rx.merge(
pageError$,
uncaughtExceptionPageError$,
pageRequestFailed$,
browserDisconnect$
);
return Rx.merge(pageError$, uncaughtExceptionPageError$, browserDisconnect$);
}
}

0 comments on commit e71deb2

Please sign in to comment.