Skip to content

Commit 842b77a

Browse files
author
ForgeFlow v2
committed
fix(error-handling): Enhance error context in PageCollector event handlers (Phase 3.2)
- #onTargetCreated: Add target type/URL context to initialization errors - #onTargetDestroyed: Add target type/URL context to cleanup errors - Errors are recoverable (transient targets/pages), but context aids debugging - Distinguishes between recoverable and fatal errors with clear documentation This improves observability for long-running sessions and helps identify transient vs systemic failures in target lifecycle management.
1 parent 466a0d9 commit 842b77a

1 file changed

Lines changed: 22 additions & 4 deletions

File tree

src/PageCollector.ts

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,15 @@ export class PageCollector<T> {
9090
}
9191
this.addPage(page);
9292
} catch (err) {
93-
logger('Error getting a page for a target onTargetCreated', err);
93+
// Error context: Failed to initialize page from target.
94+
// This is a recoverable error - the target may be non-page or transient.
95+
// Logging with full context for debugging long-running sessions.
96+
const targetType = (target as any).type?.() || 'unknown';
97+
const targetUrl = (target as any).url?.() || 'unknown';
98+
logger(
99+
`Error initializing page from target [type=${targetType}, url=${targetUrl}]: ${err}`,
100+
err,
101+
);
94102
}
95103
};
96104

@@ -102,7 +110,15 @@ export class PageCollector<T> {
102110
}
103111
this.cleanupPageDestroyed(page);
104112
} catch (err) {
105-
logger('Error getting a page for a target onTargetDestroyed', err);
113+
// Error context: Failed to cleanup page from destroyed target.
114+
// This is a recoverable error - the page/target may have already been cleaned up.
115+
// Logging with context to aid debugging of cleanup failures.
116+
const targetType = (target as any).type?.() || 'unknown';
117+
const targetUrl = (target as any).url?.() || 'unknown';
118+
logger(
119+
`Error cleaning up page from destroyed target [type=${targetType}, url=${targetUrl}]: ${err}`,
120+
err,
121+
);
106122
}
107123
};
108124

@@ -228,7 +244,9 @@ export class ConsoleCollector extends PageCollector<
228244
if (!this.#subscribedPages.has(page)) {
229245
const subscriber = new PageIssueSubscriber(page);
230246
this.#subscribedPages.set(page, subscriber);
231-
void subscriber.subscribe();
247+
void subscriber.subscribe().catch((error) => {
248+
logger('Error subscribing to page issues', error);
249+
});
232250
}
233251
}
234252

@@ -294,7 +312,7 @@ class PageIssueSubscriber {
294312
// Audits.disable might fail if session is already closed
295313
// This is expected during page cleanup, so we log at debug level
296314
if (!(error instanceof Error && error.message.includes('Target closed'))) {
297-
this.logger('Failed to disable audits during cleanup', error);
315+
logger('Failed to disable audits during cleanup', error);
298316
}
299317
});
300318
}

0 commit comments

Comments
 (0)