@prosopo/procaptcha-puzzle 2.14.3 → 2.14.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build$colon$cjs.log +4 -4
- package/.turbo/turbo-build$colon$tsc.log +19 -19
- package/.turbo/turbo-build.log +5 -5
- package/CHANGELOG.md +46 -0
- package/dist/cjs/components/procaptchaWidget.cjs +11 -2
- package/dist/cjs/services/Manager.cjs +17 -2
- package/dist/components/procaptchaWidget.d.ts.map +1 -1
- package/dist/components/procaptchaWidget.js +11 -2
- package/dist/components/procaptchaWidget.js.map +1 -1
- package/dist/services/Manager.d.ts.map +1 -1
- package/dist/services/Manager.js +17 -2
- package/dist/services/Manager.js.map +1 -1
- package/dist/tests/manager.unit.test.js +45 -0
- package/dist/tests/manager.unit.test.js.map +1 -1
- package/dist/tests/procaptchaWidget.unit.test.js +40 -0
- package/dist/tests/procaptchaWidget.unit.test.js.map +1 -1
- package/package.json +8 -8
- package/src/components/procaptchaWidget.ts +32 -2
- package/src/services/Manager.ts +38 -2
- package/src/tests/manager.unit.test.ts +59 -0
- package/src/tests/procaptchaWidget.unit.test.ts +58 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -331,6 +331,31 @@ describe("finishing the drag", () => {
|
|
|
331
331
|
submitting: false,
|
|
332
332
|
});
|
|
333
333
|
});
|
|
334
|
+
test("a rejected solution on a frictionless session re-mints rather than re-requesting", async () => {
|
|
335
|
+
mocks.submitSolution.mockResolvedValue(false);
|
|
336
|
+
const onReload = vi.fn();
|
|
337
|
+
await openPuzzle(props({
|
|
338
|
+
frictionlessState: frictionless({ sessionId: "session-one" }),
|
|
339
|
+
onReload,
|
|
340
|
+
}));
|
|
341
|
+
await complete();
|
|
342
|
+
expect(onReload).toHaveBeenCalledTimes(1);
|
|
343
|
+
expect(onReload).toHaveBeenCalledWith(expect.any(Number), expect.any(Number), { showRetry: true });
|
|
344
|
+
expect(mocks.start).toHaveBeenCalledTimes(1);
|
|
345
|
+
});
|
|
346
|
+
test("a rejected solution still re-requests when there is no session to re-mint", async () => {
|
|
347
|
+
mocks.submitSolution.mockResolvedValue(false);
|
|
348
|
+
const onReload = vi.fn();
|
|
349
|
+
await openPuzzle(props({ frictionlessState: frictionless(), onReload }));
|
|
350
|
+
await complete();
|
|
351
|
+
expect(onReload).not.toHaveBeenCalled();
|
|
352
|
+
expect(mocks.start).toHaveBeenCalledTimes(2);
|
|
353
|
+
});
|
|
354
|
+
test("a re-minted widget keeps the retry prompt on the replacement puzzle", async () => {
|
|
355
|
+
render(props({ autoStart: true, startShowRetry: true }));
|
|
356
|
+
await settle();
|
|
357
|
+
expect(mocks.canvasProps.current).toMatchObject({ showRetry: true });
|
|
358
|
+
});
|
|
334
359
|
test("a rejected solution with no replacement challenge closes the puzzle", async () => {
|
|
335
360
|
mocks.submitSolution.mockResolvedValue(false);
|
|
336
361
|
mocks.start
|
|
@@ -490,6 +515,21 @@ describe("an invalidated session", () => {
|
|
|
490
515
|
await new Promise((resolve) => setTimeout(resolve, 200));
|
|
491
516
|
expect(restart).not.toHaveBeenCalled();
|
|
492
517
|
});
|
|
518
|
+
test("a lost session that will be re-minted shows no error", async () => {
|
|
519
|
+
render(props({ frictionlessState: frictionless({ restart: () => { } }) }));
|
|
520
|
+
await click();
|
|
521
|
+
await invalidate();
|
|
522
|
+
expect(mounted.container.textContent).not.toContain("session gone");
|
|
523
|
+
expect(spinner()).not.toBeNull();
|
|
524
|
+
});
|
|
525
|
+
test("a lost session handed to the wrapper shows no error either", async () => {
|
|
526
|
+
const onSessionInvalidated = vi.fn();
|
|
527
|
+
render(props({ onSessionInvalidated }));
|
|
528
|
+
await click();
|
|
529
|
+
await invalidate();
|
|
530
|
+
expect(onSessionInvalidated).toHaveBeenCalledTimes(1);
|
|
531
|
+
expect(mounted.container.textContent).not.toContain("session gone");
|
|
532
|
+
});
|
|
493
533
|
test("a lost session with nothing to recover it is simply surfaced", async () => {
|
|
494
534
|
render(props());
|
|
495
535
|
await invalidate();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"procaptchaWidget.unit.test.js","sourceRoot":"","sources":["../../src/tests/procaptchaWidget.unit.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"procaptchaWidget.unit.test.js","sourceRoot":"","sources":["../../src/tests/procaptchaWidget.unit.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prosopo/procaptcha-puzzle",
|
|
3
|
-
"version": "2.14.
|
|
3
|
+
"version": "2.14.5",
|
|
4
4
|
"author": "PROSOPO LIMITED <info@prosopo.io>",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -33,17 +33,17 @@
|
|
|
33
33
|
"browserslist": ["> 0.5%, last 2 versions, not dead"],
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"@polkadot/util": "14.0.3",
|
|
36
|
-
"@prosopo/api": "4.3.
|
|
37
|
-
"@prosopo/common": "3.1.
|
|
38
|
-
"@prosopo/locale": "3.6.
|
|
39
|
-
"@prosopo/procaptcha-common": "2.
|
|
40
|
-
"@prosopo/types": "5.
|
|
41
|
-
"@prosopo/util": "3.3.
|
|
36
|
+
"@prosopo/api": "4.3.6",
|
|
37
|
+
"@prosopo/common": "3.1.60",
|
|
38
|
+
"@prosopo/locale": "3.6.1",
|
|
39
|
+
"@prosopo/procaptcha-common": "2.18.0",
|
|
40
|
+
"@prosopo/types": "5.11.0",
|
|
41
|
+
"@prosopo/util": "3.3.12",
|
|
42
42
|
"@prosopo/util-crypto": "13.5.33",
|
|
43
43
|
"@prosopo/widget-skeleton": "2.10.0"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"@prosopo/config": "3.4.
|
|
46
|
+
"@prosopo/config": "3.4.2",
|
|
47
47
|
"@types/node": "22.5.5",
|
|
48
48
|
"@vitest/coverage-v8": "4.1.11",
|
|
49
49
|
"concurrently": "9.0.1",
|
|
@@ -63,7 +63,9 @@ export const mountProcaptchaPuzzleWidget = (
|
|
|
63
63
|
let loading = false;
|
|
64
64
|
let puzzlePhase: PuzzlePhase = "checkbox";
|
|
65
65
|
let challengeData: GetPuzzleCaptchaResponse | null = null;
|
|
66
|
-
|
|
66
|
+
// A re-mint after a wrong answer builds a brand new widget, so the miss is
|
|
67
|
+
// only still on screen if the wrapper hands it back to us.
|
|
68
|
+
let showRetry = true === props.startShowRetry;
|
|
67
69
|
let lastError: ProcaptchaState["error"] = store.state.error;
|
|
68
70
|
// See procaptcha-pow's widget — same session-invalidation recovery contract
|
|
69
71
|
// with coords preservation across a re-mint.
|
|
@@ -124,6 +126,20 @@ export const mountProcaptchaPuzzleWidget = (
|
|
|
124
126
|
puzzlePhase = "dragging";
|
|
125
127
|
scheduler.schedule();
|
|
126
128
|
|
|
129
|
+
// A frictionless session is single-use: the provider consumed it when it
|
|
130
|
+
// issued the puzzle the user just got wrong, so asking `manager.start()`
|
|
131
|
+
// for a replacement on the same sessionId can only ever come back
|
|
132
|
+
// CAPTCHA.NO_SESSION_FOUND — a wasted round trip that surfaces an error
|
|
133
|
+
// on the checkbox before the wrapper recovers. Go straight to the
|
|
134
|
+
// re-mint instead; the wrapper mints a new session and re-mounts us with
|
|
135
|
+
// `autoStart`, so a fresh puzzle appears in place.
|
|
136
|
+
if (frictionlessState?.sessionId && props.onReload) {
|
|
137
|
+
puzzlePhase = "submitting";
|
|
138
|
+
scheduler.schedule();
|
|
139
|
+
props.onReload(lastCoords?.x, lastCoords?.y, { showRetry: true });
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
|
|
127
143
|
try {
|
|
128
144
|
const newChallenge = await manager.start();
|
|
129
145
|
if (newChallenge) {
|
|
@@ -187,6 +203,19 @@ export const mountProcaptchaPuzzleWidget = (
|
|
|
187
203
|
if ("CAPTCHA.NO_SESSION_FOUND" !== store.state.error.key) {
|
|
188
204
|
return;
|
|
189
205
|
}
|
|
206
|
+
// Suppressed only when something is actually going to re-mint: this is
|
|
207
|
+
// an internal recovery signal, not something the user should read, so
|
|
208
|
+
// hold the spinner rather than paint a support code that is about to
|
|
209
|
+
// stop being true. Clearing it re-enters this effect once, which returns
|
|
210
|
+
// at the `!error` guard. With no recovery route the error stands — a
|
|
211
|
+
// spinner that never resolves is worse than a message.
|
|
212
|
+
const willRecover =
|
|
213
|
+
(props.onSessionInvalidated && !sessionInvalidatedFired) ||
|
|
214
|
+
undefined !== frictionlessState;
|
|
215
|
+
if (willRecover) {
|
|
216
|
+
loading = true;
|
|
217
|
+
store.update({ error: undefined });
|
|
218
|
+
}
|
|
190
219
|
if (props.onSessionInvalidated && !sessionInvalidatedFired) {
|
|
191
220
|
sessionInvalidatedFired = true;
|
|
192
221
|
props.onSessionInvalidated(lastCoords?.x, lastCoords?.y);
|
|
@@ -356,7 +385,8 @@ export const mountProcaptchaPuzzleWidget = (
|
|
|
356
385
|
|
|
357
386
|
if (props.autoStart) {
|
|
358
387
|
loading = true;
|
|
359
|
-
|
|
388
|
+
// Deliberately not cleared: an autoStart mount is how a re-mint after a
|
|
389
|
+
// wrong answer arrives, and `startShowRetry` says whether it was one.
|
|
360
390
|
const coords = props.startCoords;
|
|
361
391
|
lastCoords = coords ?? null;
|
|
362
392
|
scheduler.schedule();
|
package/src/services/Manager.ts
CHANGED
|
@@ -82,6 +82,15 @@ export const Manager = (
|
|
|
82
82
|
// resetState-cleared closure state so a retry can exclude it from the
|
|
83
83
|
// candidate pool and land on a different provider.
|
|
84
84
|
let previousProviderUrl: string | undefined;
|
|
85
|
+
// The sessionId this manager has already exchanged for a challenge. The
|
|
86
|
+
// provider consumes a session the moment it issues a challenge against it
|
|
87
|
+
// (`checkAndRemoveSession`), so asking for a second challenge with the same
|
|
88
|
+
// id is a guaranteed 400 CAPTCHA.NO_SESSION_FOUND. Mirrors the image
|
|
89
|
+
// manager's guard: the id lives on `frictionlessState`, which `resetState()`
|
|
90
|
+
// does not own, so every path that re-enters `start()` — a wrong answer, a
|
|
91
|
+
// providerRetry after a late failure, a `procaptcha:execute` event — would
|
|
92
|
+
// otherwise re-send it.
|
|
93
|
+
let spentSessionId: string | undefined;
|
|
85
94
|
|
|
86
95
|
const defaultState = (): Partial<ProcaptchaState> => {
|
|
87
96
|
return {
|
|
@@ -272,6 +281,23 @@ export const Manager = (
|
|
|
272
281
|
|
|
273
282
|
const providerApi = new ProviderApi(providerUrl, getDappAccount());
|
|
274
283
|
|
|
284
|
+
// Short-circuit a challenge fetch we already know the provider
|
|
285
|
+
// will reject, and route straight to the recovery path the
|
|
286
|
+
// wrapper listens for — re-minting a session is the only way
|
|
287
|
+
// forward, and the doomed round trip only delays it.
|
|
288
|
+
const challengeSessionId = frictionlessState?.sessionId;
|
|
289
|
+
if (challengeSessionId && challengeSessionId === spentSessionId) {
|
|
290
|
+
updateState({
|
|
291
|
+
loading: false,
|
|
292
|
+
error: {
|
|
293
|
+
message: "No session found",
|
|
294
|
+
key: "CAPTCHA.NO_SESSION_FOUND",
|
|
295
|
+
},
|
|
296
|
+
});
|
|
297
|
+
events.onError(new Error("No session found"));
|
|
298
|
+
return;
|
|
299
|
+
}
|
|
300
|
+
|
|
275
301
|
// Non-blocking check — attach SIMD readings only if the
|
|
276
302
|
// prefetched benchmark has already resolved.
|
|
277
303
|
const simdReadingsOnChallenge = frictionlessState?.getSimdReadings
|
|
@@ -280,9 +306,17 @@ export const Manager = (
|
|
|
280
306
|
const challenge = await providerApi.getPuzzleCaptchaChallenge(
|
|
281
307
|
userAccount,
|
|
282
308
|
getDappAccount(),
|
|
283
|
-
|
|
309
|
+
challengeSessionId,
|
|
284
310
|
simdReadingsOnChallenge,
|
|
285
311
|
);
|
|
312
|
+
// The provider answered, so it has seen the id and consumed it —
|
|
313
|
+
// a challenge and a 4xx mean the same thing here. Marked after
|
|
314
|
+
// the await rather than before it on purpose: a throw is the one
|
|
315
|
+
// case where the request may never have landed, and that is
|
|
316
|
+
// exactly when `providerRetry` re-enters `start()` to fail over
|
|
317
|
+
// onto a different provider. Marking it spent up front would
|
|
318
|
+
// turn every transport blip into "No session found".
|
|
319
|
+
if (challengeSessionId) spentSessionId = challengeSessionId;
|
|
286
320
|
|
|
287
321
|
if (challenge.error) {
|
|
288
322
|
updateState({
|
|
@@ -372,13 +406,15 @@ export const Manager = (
|
|
|
372
406
|
frictionlessState?.encryptBehavioralData &&
|
|
373
407
|
(frictionlessState?.behaviorCollector1 ||
|
|
374
408
|
frictionlessState?.behaviorCollector2 ||
|
|
375
|
-
frictionlessState?.behaviorCollector3
|
|
409
|
+
frictionlessState?.behaviorCollector3 ||
|
|
410
|
+
frictionlessState?.behaviorCollector4)
|
|
376
411
|
) {
|
|
377
412
|
try {
|
|
378
413
|
const behavioralData = {
|
|
379
414
|
collector1: frictionlessState.behaviorCollector1?.getData() || [],
|
|
380
415
|
collector2: frictionlessState.behaviorCollector2?.getData() || [],
|
|
381
416
|
collector3: frictionlessState.behaviorCollector3?.getData() || [],
|
|
417
|
+
collector4: frictionlessState.behaviorCollector4?.getData() || [],
|
|
382
418
|
deviceCapability: frictionlessState.deviceCapability || "unknown",
|
|
383
419
|
};
|
|
384
420
|
|
|
@@ -405,6 +405,65 @@ describe("start: getting to a challenge", () => {
|
|
|
405
405
|
});
|
|
406
406
|
});
|
|
407
407
|
|
|
408
|
+
// The provider consumes a frictionless session the moment it issues a
|
|
409
|
+
// challenge against it, so a second challenge fetch on the same id can only
|
|
410
|
+
// come back CAPTCHA.NO_SESSION_FOUND. The manager has to recognise its own
|
|
411
|
+
// spent id rather than spend a round trip discovering it again.
|
|
412
|
+
describe("start: a session that has already bought a challenge", () => {
|
|
413
|
+
test("short-circuits instead of re-requesting on the spent id", async () => {
|
|
414
|
+
const harness = build({
|
|
415
|
+
frictionlessState: frictionless({ sessionId: "session-1" }),
|
|
416
|
+
});
|
|
417
|
+
await harness.manager.start();
|
|
418
|
+
await harness.manager.start();
|
|
419
|
+
expect(mocks.getPuzzleCaptchaChallenge).toHaveBeenCalledTimes(1);
|
|
420
|
+
expect(lastUpdate(harness, "error")).toEqual({
|
|
421
|
+
message: "No session found",
|
|
422
|
+
key: "CAPTCHA.NO_SESSION_FOUND",
|
|
423
|
+
});
|
|
424
|
+
expect(lastUpdate(harness, "loading")).toBe(false);
|
|
425
|
+
});
|
|
426
|
+
|
|
427
|
+
// A throw is the one case where the request may never have reached the
|
|
428
|
+
// provider, so the id may still be live — and it is exactly when
|
|
429
|
+
// providerRetry fails over onto a second provider. Short-circuiting there
|
|
430
|
+
// would turn every transport blip into "No session found".
|
|
431
|
+
test("still fails over to another provider when the request throws", async () => {
|
|
432
|
+
mocks.getPuzzleCaptchaChallenge
|
|
433
|
+
.mockRejectedValueOnce(new Error("transport"))
|
|
434
|
+
.mockResolvedValue(challengeResponse());
|
|
435
|
+
const harness = build({
|
|
436
|
+
frictionlessState: frictionless({ sessionId: "session-1" }),
|
|
437
|
+
});
|
|
438
|
+
await harness.manager.start();
|
|
439
|
+
expect(mocks.getPuzzleCaptchaChallenge).toHaveBeenCalledTimes(2);
|
|
440
|
+
expect(lastUpdate(harness, "error")).toBeUndefined();
|
|
441
|
+
});
|
|
442
|
+
|
|
443
|
+
// A 4xx means the provider saw the id, so it is gone even though no
|
|
444
|
+
// challenge came back.
|
|
445
|
+
test("counts the id as spent when the provider answers with an error", async () => {
|
|
446
|
+
mocks.getPuzzleCaptchaChallenge.mockResolvedValue({
|
|
447
|
+
...challengeResponse(),
|
|
448
|
+
error: { message: "nope", key: "API.BAD_REQUEST", code: 400 },
|
|
449
|
+
});
|
|
450
|
+
const harness = build({
|
|
451
|
+
frictionlessState: frictionless({ sessionId: "session-1" }),
|
|
452
|
+
});
|
|
453
|
+
await harness.manager.start();
|
|
454
|
+
mocks.getPuzzleCaptchaChallenge.mockClear();
|
|
455
|
+
await harness.manager.start();
|
|
456
|
+
expect(mocks.getPuzzleCaptchaChallenge).not.toHaveBeenCalled();
|
|
457
|
+
});
|
|
458
|
+
|
|
459
|
+
test("leaves a sessionless manager free to ask again", async () => {
|
|
460
|
+
const harness = build({ withFrictionless: false });
|
|
461
|
+
await harness.manager.start();
|
|
462
|
+
await harness.manager.start();
|
|
463
|
+
expect(mocks.getPuzzleCaptchaChallenge).toHaveBeenCalledTimes(2);
|
|
464
|
+
});
|
|
465
|
+
});
|
|
466
|
+
|
|
408
467
|
describe("start: when the provider will not issue a challenge", () => {
|
|
409
468
|
test("surfaces the provider's error to the widget", async () => {
|
|
410
469
|
mocks.getPuzzleCaptchaChallenge.mockResolvedValue(
|
|
@@ -498,6 +498,45 @@ describe("finishing the drag", () => {
|
|
|
498
498
|
});
|
|
499
499
|
});
|
|
500
500
|
|
|
501
|
+
// The provider consumes a frictionless session when it issues the puzzle,
|
|
502
|
+
// so re-requesting on the same sessionId can only return
|
|
503
|
+
// CAPTCHA.NO_SESSION_FOUND. The widget must hand back to the wrapper for a
|
|
504
|
+
// re-mint instead of making that request.
|
|
505
|
+
test("a rejected solution on a frictionless session re-mints rather than re-requesting", async () => {
|
|
506
|
+
mocks.submitSolution.mockResolvedValue(false);
|
|
507
|
+
const onReload = vi.fn<NonNullable<ProcaptchaProps["onReload"]>>();
|
|
508
|
+
await openPuzzle(
|
|
509
|
+
props({
|
|
510
|
+
frictionlessState: frictionless({ sessionId: "session-one" }),
|
|
511
|
+
onReload,
|
|
512
|
+
}),
|
|
513
|
+
);
|
|
514
|
+
await complete();
|
|
515
|
+
expect(onReload).toHaveBeenCalledTimes(1);
|
|
516
|
+
expect(onReload).toHaveBeenCalledWith(
|
|
517
|
+
expect.any(Number),
|
|
518
|
+
expect.any(Number),
|
|
519
|
+
{ showRetry: true },
|
|
520
|
+
);
|
|
521
|
+
// One call to open the puzzle, and none to replace it.
|
|
522
|
+
expect(mocks.start).toHaveBeenCalledTimes(1);
|
|
523
|
+
});
|
|
524
|
+
|
|
525
|
+
test("a rejected solution still re-requests when there is no session to re-mint", async () => {
|
|
526
|
+
mocks.submitSolution.mockResolvedValue(false);
|
|
527
|
+
const onReload = vi.fn<NonNullable<ProcaptchaProps["onReload"]>>();
|
|
528
|
+
await openPuzzle(props({ frictionlessState: frictionless(), onReload }));
|
|
529
|
+
await complete();
|
|
530
|
+
expect(onReload).not.toHaveBeenCalled();
|
|
531
|
+
expect(mocks.start).toHaveBeenCalledTimes(2);
|
|
532
|
+
});
|
|
533
|
+
|
|
534
|
+
test("a re-minted widget keeps the retry prompt on the replacement puzzle", async () => {
|
|
535
|
+
render(props({ autoStart: true, startShowRetry: true }));
|
|
536
|
+
await settle();
|
|
537
|
+
expect(mocks.canvasProps.current).toMatchObject({ showRetry: true });
|
|
538
|
+
});
|
|
539
|
+
|
|
501
540
|
test("a rejected solution with no replacement challenge closes the puzzle", async () => {
|
|
502
541
|
mocks.submitSolution.mockResolvedValue(false);
|
|
503
542
|
mocks.start
|
|
@@ -692,6 +731,25 @@ describe("an invalidated session", () => {
|
|
|
692
731
|
expect(restart).not.toHaveBeenCalled();
|
|
693
732
|
});
|
|
694
733
|
|
|
734
|
+
// A re-mint is already under way, so the error describes a state the widget
|
|
735
|
+
// is about to leave. Spinner, not support code.
|
|
736
|
+
test("a lost session that will be re-minted shows no error", async () => {
|
|
737
|
+
render(props({ frictionlessState: frictionless({ restart: () => {} }) }));
|
|
738
|
+
await click();
|
|
739
|
+
await invalidate();
|
|
740
|
+
expect(mounted.container.textContent).not.toContain("session gone");
|
|
741
|
+
expect(spinner()).not.toBeNull();
|
|
742
|
+
});
|
|
743
|
+
|
|
744
|
+
test("a lost session handed to the wrapper shows no error either", async () => {
|
|
745
|
+
const onSessionInvalidated = vi.fn<(x?: number, y?: number) => void>();
|
|
746
|
+
render(props({ onSessionInvalidated }));
|
|
747
|
+
await click();
|
|
748
|
+
await invalidate();
|
|
749
|
+
expect(onSessionInvalidated).toHaveBeenCalledTimes(1);
|
|
750
|
+
expect(mounted.container.textContent).not.toContain("session gone");
|
|
751
|
+
});
|
|
752
|
+
|
|
695
753
|
test("a lost session with nothing to recover it is simply surfaced", async () => {
|
|
696
754
|
render(props());
|
|
697
755
|
await invalidate();
|