mirror of
https://github.com/jjbrunton/Sauci.git
synced 2026-10-31 10:19:43 +00:00
fix(mobile): record xprem_js_crash only for fatal JS errors
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
659cee76b6
commit
5c4a4608b1
2 files changed
+21
-4
No files matched your search
@@ -75,12 +75,26 @@ describe('observe', () => {
|
||||
expect.objectContaining({
|
||||
severity: 'fatal',
|
||||
body: 'boom',
|
||||
attributes: { isFatal: true },
|
||||
})
|
||||
);
|
||||
expect(previousHandler).toHaveBeenCalledWith(error, true);
|
||||
});
|
||||
|
||||
it('does not log xprem_js_crash for non-fatal errors but still delegates', () => {
|
||||
const previousHandler = jest.fn();
|
||||
const getInstalledHandler = installFakeErrorUtils(previousHandler);
|
||||
|
||||
withFreshObserveModule(({ installObserveGlobalErrorHandler }) => {
|
||||
installObserveGlobalErrorHandler();
|
||||
});
|
||||
|
||||
const error = new Error('handled');
|
||||
getInstalledHandler()(error, false);
|
||||
|
||||
expect(logEventMock).not.toHaveBeenCalled();
|
||||
expect(previousHandler).toHaveBeenCalledWith(error, false);
|
||||
});
|
||||
|
||||
it('still calls the previous handler when Observe.logEvent throws', () => {
|
||||
const previousHandler = jest.fn();
|
||||
const getInstalledHandler = installFakeErrorUtils(previousHandler);
|
||||
@@ -92,8 +106,8 @@ describe('observe', () => {
|
||||
installObserveGlobalErrorHandler();
|
||||
});
|
||||
|
||||
getInstalledHandler()(new Error('boom'), false);
|
||||
getInstalledHandler()(new Error('boom'), true);
|
||||
|
||||
expect(previousHandler).toHaveBeenCalledWith(expect.any(Error), false);
|
||||
expect(previousHandler).toHaveBeenCalledWith(expect.any(Error), true);
|
||||
});
|
||||
});
|
||||
@@ -50,16 +50,19 @@ export function installObserveGlobalErrorHandler() {
|
||||
const previousHandler = errorUtils.getGlobalHandler();
|
||||
|
||||
errorUtils.setGlobalHandler((error, isFatal) => {
|
||||
// Only fatal errors count as a crash; non-fatal handled errors would
|
||||
// otherwise skew update-health tracking.
|
||||
if (isFatal) {
|
||||
try {
|
||||
const message = error instanceof Error ? error.message : String(error);
|
||||
Observe.logEvent("xprem_js_crash", {
|
||||
severity: "fatal",
|
||||
body: message,
|
||||
attributes: { isFatal: Boolean(isFatal) },
|
||||
});
|
||||
} catch (observeError) {
|
||||
console.warn("[Observe] Failed to log xprem_js_crash:", observeError);
|
||||
}
|
||||
}
|
||||
|
||||
previousHandler(error, isFatal);
|
||||
});
|
||||
|
||||
Reference in new issue
Block a user