Fix session loading: a no-op capture stop aborted the load (v2.4.1)
- `loadSession` begins by stopping a running capture; when there is nothing to stop the server answers 400 'No active capture' (or 403 with capture disabled) — and since the v2.3.1 `_fetch` status fix those answers throw, so the whole load was skipped and the UI alerted "Failed to load session": no session could be opened at all - new `stopCaptureIfRunning()` swallows exactly that no-op answer; both `loadSession` and the capture button use it, and the button now resets its state outside the try so a tolerated stop still clears the UI - the `_fetch` status check stays — real errors keep surfacing (an unknown session still throws 'Session not found') - tests: the helper resolves on a 400 and still calls once; source pins that `loadSession` uses the tolerant helper (the regression guard) and that `stopCapture` resets the state - v2.4.1; SW cache simtrace-analyser-v66
This commit is contained in:
1 parent
cad3999307
commit
407821ab3d
6 files changed
+48
-14
No files matched your search
@@ -498,3 +498,29 @@ test('Change details modal: header, summary, legend and both views', () => {
|
||||
assert.match(el('file-diff-sub').textContent, /Record 2 \/ 5/);
|
||||
assert.match(el('file-diff-body').innerHTML, /image is frozen/);
|
||||
});
|
||||
|
||||
// ── Session loading must survive "no active capture" ───────────────────
|
||||
eval(extractFunc(src, 'stopCaptureIfRunning'));
|
||||
|
||||
test('stopCaptureIfRunning tolerates "no active capture" (400)', async () => {
|
||||
let calls = 0;
|
||||
API.stopCapture = async () => {
|
||||
calls++;
|
||||
throw Object.assign(new Error('No active capture'), {status: 400});
|
||||
};
|
||||
await stopCaptureIfRunning(); // must resolve, not reject
|
||||
assert.equal(calls, 1);
|
||||
API.stopCapture = async () => { calls++; };
|
||||
await stopCaptureIfRunning();
|
||||
assert.equal(calls, 2);
|
||||
});
|
||||
|
||||
test('loadSession stops a capture tolerantly', () => {
|
||||
const body = extractFunc(src, 'loadSession');
|
||||
assert.match(body, /await stopCaptureIfRunning\(\)/);
|
||||
assert.doesNotMatch(body, /await API\.stopCapture\(\)/);
|
||||
// The capture button also resets its state after a tolerated stop.
|
||||
const stop = extractFunc(src, 'stopCapture');
|
||||
assert.match(stop, /await stopCaptureIfRunning\(\)/);
|
||||
assert.match(stop, /STATE\.captureActive = false;/);
|
||||
});
|
||||
Reference in new issue
Block a user