The page stops recursing when a tap ends long after its answer (#378)
endTap reported the tap before clearing it; report's traceparent starts a new trace when the last is over a minute old, and newTrace ends the open tap again, so hiding the page (switching apps on the phone) a minute after using it recursed until the stack ran out. Timings are never throttled, so nothing broke the loop. Introduced in #376. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -242,3 +242,10 @@ test('a tap is its trace\'s root span, reported with its ids once it has an answ
|
||||
assert.equal(run(`sent.at(-1)[0]`), '/api/client');
|
||||
assert.deepEqual([body.ev, body.ms, body.msg, body.span.length, body.trace.length], ['tap', 250, 'keydown', 16, 32]);
|
||||
});
|
||||
|
||||
test('a tap ended over a minute after its last request reports once, without recursing (#378)', () => {
|
||||
run(`globalThis.sent = []; fetch = (url, o) => { sent.push([url, o]); return Promise.resolve({ ok: true, status: 204 }); }`);
|
||||
run(`newTrace('pointerdown'); answeredAt = rootAt + 100; traceAt = Date.now() - 120_000`);
|
||||
run('endTap()');
|
||||
assert.equal(run(`sent.filter(([u, o]) => JSON.parse(o.body).ev === 'tap').length`), 1);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user