Files
iptvnator/apps/electron-backend-e2e/src/performance/xtream-renderer-console-errors.spec.ts
T
4gray a2fafcfc08 test(performance): add end-to-end Xtream benchmark harness (#1300)
* docs(performance): plan Xtream benchmark

* feat(xtream-mock-server): add deterministic 100k fixture

* style(xtream-mock-server): apply repository formatting

* fix(xtream-mock-server): harden performance fixture data

* feat(xtream-mock-server): add performance control plane

* docs(performance): correct Xtream capture plan

* fix(xtream-mock-server): harden performance controls

* fix(xtream-mock-server): harden control lifecycle

* feat(performance): add Xtream preload markers

* feat(performance): trace Xtream main phases

* feat(performance): mark Xtream store publications

* feat(performance): trace Xtream database phases

* feat(performance): trace Xtream delete cancellation

* feat(performance): capture Xtream phase attribution

* feat(performance): mark Sources Xtream refresh

* test(performance): define Xtream benchmark evidence contracts

* test(performance): add Xtream benchmark runner

* test(performance): surface failure evidence writes

* test(performance): align database read clock

* test(performance): preserve capture failure contracts
2026-07-28 08:08:07 +02:00

89 lines
3.1 KiB
TypeScript

import assert from 'node:assert/strict';
import { describe, it } from 'node:test';
import { XTREAM_SCENARIO_ID } from './xtream-benchmark-contract';
import {
createXtreamRendererConsoleErrorBreakdown,
recordXtreamRendererConsoleError,
validXtreamRendererConsoleErrorEvidence,
} from './xtream-renderer-console-errors';
const cancelledInvoke =
'Error invoking remote method DB_SAVE_CONTENT: AbortError: ' +
'Operation "save-content" was cancelled';
describe('Xtream renderer console error evidence', () => {
it('accepts only the exact three current IPC cancellation errors', () => {
const exact = createXtreamRendererConsoleErrorBreakdown();
for (const message of [
`Error saving Xtream content: ${cancelledInvoke}`,
`[withContent] Error fetching content ${cancelledInvoke}`,
`[withContent] Error initializing content ${cancelledInvoke}`,
]) {
recordXtreamRendererConsoleError(
exact,
XTREAM_SCENARIO_ID.CANCEL_IMPORT,
message
);
}
assert.equal(
validXtreamRendererConsoleErrorEvidence(
3,
exact,
XTREAM_SCENARIO_ID.CANCEL_IMPORT
),
true
);
assert.equal(
validXtreamRendererConsoleErrorEvidence(
3,
exact,
XTREAM_SCENARIO_ID.INITIAL_IMPORT_LARGE
),
false
);
for (const messages of [
['generic error', 'generic error', 'generic error'],
[
`Error saving Xtream content: ${cancelledInvoke}`,
`[withContent] Error fetching content ${cancelledInvoke}`,
],
[
`Error saving Xtream content: ${cancelledInvoke}`,
`[withContent] Error fetching content ${cancelledInvoke}`,
`[withContent] Error fetching content ${cancelledInvoke}`,
],
[
'Error saving Xtream content: request failed',
'[withContent] Error fetching content request failed',
'[withContent] Error initializing content request failed',
],
[
`Error saving Xtream content: ${cancelledInvoke}`,
`[withContent] Error fetching content ${cancelledInvoke}`,
`[withContent] Error initializing content ${cancelledInvoke}`,
'unexpected fourth error',
],
]) {
const candidate = createXtreamRendererConsoleErrorBreakdown();
for (const message of messages) {
recordXtreamRendererConsoleError(
candidate,
XTREAM_SCENARIO_ID.CANCEL_IMPORT,
message
);
}
assert.equal(
validXtreamRendererConsoleErrorEvidence(
messages.length,
candidate,
XTREAM_SCENARIO_ID.CANCEL_IMPORT
),
false
);
}
});
});