imposium-js-sdk 3.5.7 → 3.5.9

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.
Files changed (47) hide show
  1. package/coverage/cobertura-coverage.xml +206 -195
  2. package/coverage/coverage-final.json +4 -4
  3. package/coverage/coverage-summary.json +3 -3
  4. package/coverage/index.html +29 -29
  5. package/coverage/junit.xml +199 -177
  6. package/coverage/lcov-report/index.html +29 -29
  7. package/coverage/lcov-report/src/Entry.ts.html +1 -1
  8. package/coverage/lcov-report/src/client/Client.ts.html +123 -72
  9. package/coverage/lcov-report/src/client/DirectDeliveryPipe.ts.html +2 -2
  10. package/coverage/lcov-report/src/client/http/API.ts.html +1 -1
  11. package/coverage/lcov-report/src/client/http/index.html +1 -1
  12. package/coverage/lcov-report/src/client/index.html +19 -19
  13. package/coverage/lcov-report/src/index.html +1 -1
  14. package/coverage/lcov-report/src/scaffolding/ExceptionPipe.ts.html +57 -39
  15. package/coverage/lcov-report/src/scaffolding/Exceptions.ts.html +16 -16
  16. package/coverage/lcov-report/src/scaffolding/GoogleAnalytics.ts.html +1 -1
  17. package/coverage/lcov-report/src/scaffolding/Helpers.ts.html +10 -10
  18. package/coverage/lcov-report/src/scaffolding/Version.ts.html +1 -1
  19. package/coverage/lcov-report/src/scaffolding/index.html +20 -20
  20. package/coverage/lcov-report/src/video/FallbackPlayer.ts.html +1 -1
  21. package/coverage/lcov-report/src/video/Player.ts.html +1 -1
  22. package/coverage/lcov-report/src/video/VideoPlayer.ts.html +1 -1
  23. package/coverage/lcov-report/src/video/index.html +1 -1
  24. package/coverage/lcov.info +272 -255
  25. package/coverage/src/Entry.ts.html +1 -1
  26. package/coverage/src/client/Client.ts.html +123 -72
  27. package/coverage/src/client/DirectDeliveryPipe.ts.html +2 -2
  28. package/coverage/src/client/http/API.ts.html +1 -1
  29. package/coverage/src/client/http/index.html +1 -1
  30. package/coverage/src/client/index.html +19 -19
  31. package/coverage/src/index.html +1 -1
  32. package/coverage/src/scaffolding/ExceptionPipe.ts.html +57 -39
  33. package/coverage/src/scaffolding/Exceptions.ts.html +16 -16
  34. package/coverage/src/scaffolding/GoogleAnalytics.ts.html +1 -1
  35. package/coverage/src/scaffolding/Helpers.ts.html +10 -10
  36. package/coverage/src/scaffolding/Version.ts.html +1 -1
  37. package/coverage/src/scaffolding/index.html +20 -20
  38. package/coverage/src/video/FallbackPlayer.ts.html +1 -1
  39. package/coverage/src/video/Player.ts.html +1 -1
  40. package/coverage/src/video/VideoPlayer.ts.html +1 -1
  41. package/coverage/src/video/index.html +1 -1
  42. package/lib/imposium.js +79 -45
  43. package/lib/imposium.js.map +1 -1
  44. package/lib/imposium.min.js +1 -1
  45. package/lib/imposium.min.js.LICENSE.txt +1 -1
  46. package/lib/imposium.min.js.map +1 -1
  47. package/package.json +1 -1
@@ -1,355 +1,377 @@
1
1
  <?xml version="1.0" encoding="UTF-8" ?>
2
- <testsuites name="vitest tests" tests="166" failures="0" errors="0" time="0.255142548">
3
- <testsuite name="src/client/Client.test.ts" timestamp="2026-06-24T14:34:09.122Z" hostname="d537b62c7623" tests="32" failures="0" errors="0" skipped="0" time="0.039277967">
4
- <testcase classname="src/client/Client.test.ts" name="Client constructor / setup &gt; sets clientConfig when given a valid config" time="0.005716233">
2
+ <testsuites name="vitest tests" tests="177" failures="0" errors="0" time="0.091065699">
3
+ <testsuite name="src/client/Client.test.ts" timestamp="2026-09-11T18:54:40.340Z" hostname="e000f0bce3a8" tests="40" failures="0" errors="0" skipped="0" time="0.013909028">
4
+ <testcase classname="src/client/Client.test.ts" name="Client constructor / setup &gt; sets clientConfig when given a valid config" time="0.001823896">
5
5
  </testcase>
6
- <testcase classname="src/client/Client.test.ts" name="Client constructor / setup &gt; calls ExceptionPipe.trapError when config is not an object" time="0.001046616">
6
+ <testcase classname="src/client/Client.test.ts" name="Client constructor / setup &gt; calls ExceptionPipe.trapError when config is not an object" time="0.000274014">
7
7
  </testcase>
8
- <testcase classname="src/client/Client.test.ts" name="Client constructor / setup &gt; calls ExceptionPipe.trapError when storyId is missing" time="0.000425303">
8
+ <testcase classname="src/client/Client.test.ts" name="Client constructor / setup &gt; calls ExceptionPipe.trapError when storyId is missing" time="0.00010767">
9
9
  </testcase>
10
- <testcase classname="src/client/Client.test.ts" name="Client constructor / setup &gt; calls ExceptionPipe.trapError when accessToken is missing" time="0.000385751">
10
+ <testcase classname="src/client/Client.test.ts" name="Client constructor / setup &gt; calls ExceptionPipe.trapError when accessToken is missing" time="0.00009082">
11
11
  </testcase>
12
- <testcase classname="src/client/Client.test.ts" name="Client constructor / setup &gt; applies default environment of production" time="0.000509992">
12
+ <testcase classname="src/client/Client.test.ts" name="Client constructor / setup &gt; applies default environment of production" time="0.000118403">
13
13
  </testcase>
14
- <testcase classname="src/client/Client.test.ts" name="Client constructor / setup &gt; strips unknown keys from config" time="0.000514291">
14
+ <testcase classname="src/client/Client.test.ts" name="Client constructor / setup &gt; strips unknown keys from config" time="0.00011797">
15
15
  </testcase>
16
- <testcase classname="src/client/Client.test.ts" name="Client.on &gt; registers a callback for a valid event name" time="0.000913062">
16
+ <testcase classname="src/client/Client.test.ts" name="Client.on &gt; registers a callback for a valid event name" time="0.000222351">
17
17
  </testcase>
18
- <testcase classname="src/client/Client.test.ts" name="Client.on &gt; calls ExceptionPipe.trapError when callback is not a function" time="0.000535727">
18
+ <testcase classname="src/client/Client.test.ts" name="Client.on &gt; calls ExceptionPipe.trapError when callback is not a function" time="0.00011563">
19
19
  </testcase>
20
- <testcase classname="src/client/Client.test.ts" name="Client.on &gt; calls ExceptionPipe.trapError for an invalid event name" time="0.000790043">
20
+ <testcase classname="src/client/Client.test.ts" name="Client.on &gt; calls ExceptionPipe.trapError for an invalid event name" time="0.000131017">
21
21
  </testcase>
22
- <testcase classname="src/client/Client.test.ts" name="Client.off &gt; clears a specific event delegate when given a valid event name" time="0.000762583">
22
+ <testcase classname="src/client/Client.test.ts" name="Client.off &gt; clears a specific event delegate when given a valid event name" time="0.000157041">
23
23
  </testcase>
24
- <testcase classname="src/client/Client.test.ts" name="Client.off &gt; does not clear other event delegates when removing one" time="0.000630341">
24
+ <testcase classname="src/client/Client.test.ts" name="Client.off &gt; does not clear other event delegates when removing one" time="0.000131099">
25
25
  </testcase>
26
- <testcase classname="src/client/Client.test.ts" name="Client.off &gt; clears all event delegates when called with no arguments" time="0.000834385">
26
+ <testcase classname="src/client/Client.test.ts" name="Client.off &gt; clears all event delegates when called with no arguments" time="0.000220815">
27
27
  </testcase>
28
- <testcase classname="src/client/Client.test.ts" name="Client.off &gt; calls ExceptionPipe.trapError for an invalid event name" time="0.000620777">
28
+ <testcase classname="src/client/Client.test.ts" name="Client.off &gt; calls ExceptionPipe.trapError for an invalid event name" time="0.000127597">
29
29
  </testcase>
30
- <testcase classname="src/client/Client.test.ts" name="Client.bindPlayer &gt; stores the player reference" time="0.000622902">
30
+ <testcase classname="src/client/Client.test.ts" name="Client.bindPlayer &gt; stores the player reference" time="0.000140621">
31
31
  </testcase>
32
- <testcase classname="src/client/Client.test.ts" name="Client.bindPlayer &gt; calls player.setStoryId with the config storyId" time="0.002609014">
32
+ <testcase classname="src/client/Client.test.ts" name="Client.bindPlayer &gt; calls player.setStoryId with the config storyId" time="0.001068177">
33
33
  </testcase>
34
- <testcase classname="src/client/Client.test.ts" name="Client.bindPlayer &gt; sets playerIsFallback when isFallback=true" time="0.000560323">
34
+ <testcase classname="src/client/Client.test.ts" name="Client.bindPlayer &gt; sets playerIsFallback when isFallback=true" time="0.000199377">
35
35
  </testcase>
36
- <testcase classname="src/client/Client.test.ts" name="Client.bindPlayer &gt; calls player.setGaProperty when gaProperty is already set" time="0.000632901">
36
+ <testcase classname="src/client/Client.test.ts" name="Client.bindPlayer &gt; calls player.setGaProperty when gaProperty is already set" time="0.0001864">
37
37
  </testcase>
38
- <testcase classname="src/client/Client.test.ts" name="Client.captureAnalytics &gt; creates a FallbackPlayer and binds it when given an HTMLVideoElement" time="0.003020445">
38
+ <testcase classname="src/client/Client.test.ts" name="Client.captureAnalytics &gt; creates a FallbackPlayer and binds it when given an HTMLVideoElement" time="0.001123389">
39
39
  </testcase>
40
- <testcase classname="src/client/Client.test.ts" name="Client.captureAnalytics &gt; calls ExceptionPipe.trapError when given a non-HTMLVideoElement" time="0.000741822">
40
+ <testcase classname="src/client/Client.test.ts" name="Client.captureAnalytics &gt; calls ExceptionPipe.trapError when given a non-HTMLVideoElement" time="0.000234685">
41
41
  </testcase>
42
- <testcase classname="src/client/Client.test.ts" name="Client.getExperience &gt; calls directDeliveryPipe.getExperience with the id" time="0.00077033">
42
+ <testcase classname="src/client/Client.test.ts" name="Client.getExperience &gt; calls directDeliveryPipe.getExperience with the id" time="0.000258563">
43
43
  </testcase>
44
- <testcase classname="src/client/Client.test.ts" name="Client.getExperience &gt; truncates experienceId longer than 36 chars" time="0.000653365">
44
+ <testcase classname="src/client/Client.test.ts" name="Client.getExperience &gt; truncates experienceId longer than 36 chars" time="0.00027885">
45
45
  </testcase>
46
- <testcase classname="src/client/Client.test.ts" name="Client.getExperience &gt; calls ExceptionPipe.trapError when player is null and no GOT_EXPERIENCE callback" time="0.000793961">
46
+ <testcase classname="src/client/Client.test.ts" name="Client.getExperience &gt; calls ExceptionPipe.trapError when player is null and no GOT_EXPERIENCE callback" time="0.00021415">
47
47
  </testcase>
48
- <testcase classname="src/client/Client.test.ts" name="Client.createExperience &gt; calls directDeliveryPipe.createExperience with inventory and render flag" time="0.001650956">
48
+ <testcase classname="src/client/Client.test.ts" name="Client.getExperience &gt; calls ExceptionPipe.trapError instead of the network layer when experienceId is undefined" time="0.000216921">
49
49
  </testcase>
50
- <testcase classname="src/client/Client.test.ts" name="Client.createExperience &gt; defaults render to true when not provided" time="0.000737557">
50
+ <testcase classname="src/client/Client.test.ts" name="Client.getExperience &gt; calls ExceptionPipe.trapError instead of the network layer when experienceId is null" time="0.000142107">
51
51
  </testcase>
52
- <testcase classname="src/client/Client.test.ts" name="Client.renderExperience &gt; calls directDeliveryPipe.fetchExperience with inventory" time="0.000832153">
52
+ <testcase classname="src/client/Client.test.ts" name="Client.getExperience &gt; calls ExceptionPipe.trapError instead of the network layer when experienceId is " time="0.000122167">
53
53
  </testcase>
54
- <testcase classname="src/client/Client.test.ts" name="Client.renderExperienceFromId &gt; calls directDeliveryPipe.fetchExperience with null inventory and experienceId" time="0.000927547">
54
+ <testcase classname="src/client/Client.test.ts" name="Client.getExperience &gt; calls ExceptionPipe.trapError instead of the network layer when experienceId is undefined" time="0.000120983">
55
55
  </testcase>
56
- <testcase classname="src/client/Client.test.ts" name="Client internal delegates &gt; gotExperience &gt; calls the GOT_EXPERIENCE callback on an approved experience" time="0.00081231">
56
+ <testcase classname="src/client/Client.test.ts" name="Client.createExperience &gt; calls directDeliveryPipe.createExperience with inventory and render flag" time="0.000475512">
57
57
  </testcase>
58
- <testcase classname="src/client/Client.test.ts" name="Client internal delegates &gt; gotExperience &gt; calls player.experienceGenerated when a player is bound" time="0.000853627">
58
+ <testcase classname="src/client/Client.test.ts" name="Client.createExperience &gt; defaults render to true when not provided" time="0.000238227">
59
59
  </testcase>
60
- <testcase classname="src/client/Client.test.ts" name="Client internal delegates &gt; gotExperience &gt; calls ExceptionPipe.trapError for a rejected experience" time="0.001071815">
60
+ <testcase classname="src/client/Client.test.ts" name="Client.renderExperience &gt; calls directDeliveryPipe.fetchExperience with inventory" time="0.000224609">
61
61
  </testcase>
62
- <testcase classname="src/client/Client.test.ts" name="Client internal delegates &gt; experienceCreated &gt; calls the EXPERIENCE_CREATED callback when set" time="0.000775897">
62
+ <testcase classname="src/client/Client.test.ts" name="Client.renderExperienceFromId &gt; calls directDeliveryPipe.fetchExperience with null inventory and experienceId" time="0.000250415">
63
63
  </testcase>
64
- <testcase classname="src/client/Client.test.ts" name="Client internal delegates &gt; experienceCreated &gt; runs without error when EXPERIENCE_CREATED is not set" time="0.001926844">
64
+ <testcase classname="src/client/Client.test.ts" name="Client.renderExperienceFromId &gt; calls ExceptionPipe.trapError instead of the network layer when experienceId is undefined" time="0.000174869">
65
65
  </testcase>
66
- <testcase classname="src/client/Client.test.ts" name="Client internal delegates &gt; internalError &gt; calls ExceptionPipe.trapError with the error" time="0.001026934">
66
+ <testcase classname="src/client/Client.test.ts" name="Client.renderExperienceFromId &gt; calls ExceptionPipe.trapError instead of the network layer when experienceId is null" time="0.000149204">
67
+ </testcase>
68
+ <testcase classname="src/client/Client.test.ts" name="Client.renderExperienceFromId &gt; calls ExceptionPipe.trapError instead of the network layer when experienceId is " time="0.000133143">
69
+ </testcase>
70
+ <testcase classname="src/client/Client.test.ts" name="Client.renderExperienceFromId &gt; calls ExceptionPipe.trapError instead of the network layer when experienceId is undefined" time="0.000130925">
71
+ </testcase>
72
+ <testcase classname="src/client/Client.test.ts" name="Client internal delegates &gt; gotExperience &gt; calls the GOT_EXPERIENCE callback on an approved experience" time="0.000196382">
73
+ </testcase>
74
+ <testcase classname="src/client/Client.test.ts" name="Client internal delegates &gt; gotExperience &gt; calls player.experienceGenerated when a player is bound" time="0.000686873">
75
+ </testcase>
76
+ <testcase classname="src/client/Client.test.ts" name="Client internal delegates &gt; gotExperience &gt; calls ExceptionPipe.trapError for a rejected experience" time="0.000235492">
77
+ </testcase>
78
+ <testcase classname="src/client/Client.test.ts" name="Client internal delegates &gt; experienceCreated &gt; calls the EXPERIENCE_CREATED callback when set" time="0.000407583">
79
+ </testcase>
80
+ <testcase classname="src/client/Client.test.ts" name="Client internal delegates &gt; experienceCreated &gt; runs without error when EXPERIENCE_CREATED is not set" time="0.000613022">
81
+ </testcase>
82
+ <testcase classname="src/client/Client.test.ts" name="Client internal delegates &gt; internalError &gt; calls ExceptionPipe.trapError with the error" time="0.000473359">
67
83
  </testcase>
68
84
  </testsuite>
69
- <testsuite name="src/client/DirectDeliveryPipe.test.ts" timestamp="2026-06-24T14:34:09.128Z" hostname="d537b62c7623" tests="11" failures="0" errors="0" skipped="0" time="0.024269349">
70
- <testcase classname="src/client/DirectDeliveryPipe.test.ts" name="createExperience &gt; calls experienceCreated delegate on success" time="0.009897967">
85
+ <testsuite name="src/client/DirectDeliveryPipe.test.ts" timestamp="2026-09-11T18:54:40.343Z" hostname="e000f0bce3a8" tests="11" failures="0" errors="0" skipped="0" time="0.009291882">
86
+ <testcase classname="src/client/DirectDeliveryPipe.test.ts" name="createExperience &gt; calls experienceCreated delegate on success" time="0.004018623">
71
87
  </testcase>
72
- <testcase classname="src/client/DirectDeliveryPipe.test.ts" name="createExperience &gt; calls internalError on non-5xx HTTP error" time="0.001737654">
88
+ <testcase classname="src/client/DirectDeliveryPipe.test.ts" name="createExperience &gt; calls internalError on non-5xx HTTP error" time="0.00078258">
73
89
  </testcase>
74
- <testcase classname="src/client/DirectDeliveryPipe.test.ts" name="createExperience &gt; retries on 5xx error and eventually calls internalError" time="0.001075447">
90
+ <testcase classname="src/client/DirectDeliveryPipe.test.ts" name="createExperience &gt; retries on 5xx error and eventually calls internalError" time="0.000436544">
75
91
  </testcase>
76
- <testcase classname="src/client/DirectDeliveryPipe.test.ts" name="fetchExperience &gt; calls gotExperience delegate on success" time="0.001131796">
92
+ <testcase classname="src/client/DirectDeliveryPipe.test.ts" name="fetchExperience &gt; calls gotExperience delegate on success" time="0.000416906">
77
93
  </testcase>
78
- <testcase classname="src/client/DirectDeliveryPipe.test.ts" name="fetchExperience &gt; calls internalError when response contains an error field" time="0.00103058">
94
+ <testcase classname="src/client/DirectDeliveryPipe.test.ts" name="fetchExperience &gt; calls internalError when response contains an error field" time="0.000412414">
79
95
  </testcase>
80
- <testcase classname="src/client/DirectDeliveryPipe.test.ts" name="fetchExperience &gt; falls back to polling on 408 timeout" time="0.001577329">
96
+ <testcase classname="src/client/DirectDeliveryPipe.test.ts" name="fetchExperience &gt; falls back to polling on 408 timeout" time="0.00058207">
81
97
  </testcase>
82
- <testcase classname="src/client/DirectDeliveryPipe.test.ts" name="fetchExperience &gt; calls internalError with render error when axios error has error body" time="0.000887922">
98
+ <testcase classname="src/client/DirectDeliveryPipe.test.ts" name="fetchExperience &gt; calls internalError with render error when axios error has error body" time="0.000281477">
83
99
  </testcase>
84
- <testcase classname="src/client/DirectDeliveryPipe.test.ts" name="getExperience (pollForExperience) &gt; calls gotExperience when api.get returns a completed experience" time="0.000743983">
100
+ <testcase classname="src/client/DirectDeliveryPipe.test.ts" name="getExperience (pollForExperience) &gt; calls gotExperience when api.get returns a completed experience" time="0.000280477">
85
101
  </testcase>
86
- <testcase classname="src/client/DirectDeliveryPipe.test.ts" name="getExperience (pollForExperience) &gt; calls internalError when api.get rejects with non-5xx" time="0.001212917">
102
+ <testcase classname="src/client/DirectDeliveryPipe.test.ts" name="getExperience (pollForExperience) &gt; calls internalError when api.get rejects with non-5xx" time="0.00031579">
87
103
  </testcase>
88
- <testcase classname="src/client/DirectDeliveryPipe.test.ts" name="getExperience (pollForExperience) &gt; calls internalError with RenderError when experience has error field" time="0.001214909">
104
+ <testcase classname="src/client/DirectDeliveryPipe.test.ts" name="getExperience (pollForExperience) &gt; calls internalError with RenderError when experience has error field" time="0.000342034">
89
105
  </testcase>
90
- <testcase classname="src/client/DirectDeliveryPipe.test.ts" name="getExperience (pollForExperience) &gt; polls again when experience is still rendering" time="0.00093945">
106
+ <testcase classname="src/client/DirectDeliveryPipe.test.ts" name="getExperience (pollForExperience) &gt; polls again when experience is still rendering" time="0.000404505">
91
107
  </testcase>
92
108
  </testsuite>
93
- <testsuite name="src/scaffolding/ExceptionPipe.test.ts" timestamp="2026-06-24T14:34:09.130Z" hostname="d537b62c7623" tests="10" failures="0" errors="0" skipped="0" time="0.014682583">
94
- <testcase classname="src/scaffolding/ExceptionPipe.test.ts" name="ExceptionPipe.logWarning &gt; calls console.warn with the warning message" time="0.003459705">
109
+ <testsuite name="src/scaffolding/ExceptionPipe.test.ts" timestamp="2026-09-11T18:54:40.343Z" hostname="e000f0bce3a8" tests="13" failures="0" errors="0" skipped="0" time="0.007973055">
110
+ <testcase classname="src/scaffolding/ExceptionPipe.test.ts" name="ExceptionPipe.logWarning &gt; calls console.warn with the warning message" time="0.001506536">
111
+ </testcase>
112
+ <testcase classname="src/scaffolding/ExceptionPipe.test.ts" name="ExceptionPipe.trapError &gt; wraps a plain Error in UncaughtError and calls log()" time="0.000630941">
113
+ </testcase>
114
+ <testcase classname="src/scaffolding/ExceptionPipe.test.ts" name="ExceptionPipe.trapError &gt; calls log() on an ImposiumError directly without wrapping" time="0.000204829">
115
+ </testcase>
116
+ <testcase classname="src/scaffolding/ExceptionPipe.test.ts" name="ExceptionPipe.trapError &gt; invokes the callback when one is provided" time="0.00106903">
95
117
  </testcase>
96
- <testcase classname="src/scaffolding/ExceptionPipe.test.ts" name="ExceptionPipe.trapError &gt; wraps a plain Error in UncaughtError and calls log()" time="0.001704808">
118
+ <testcase classname="src/scaffolding/ExceptionPipe.test.ts" name="ExceptionPipe.trapError &gt; calls setStoryId on the error when a storyId is provided" time="0.000227521">
97
119
  </testcase>
98
- <testcase classname="src/scaffolding/ExceptionPipe.test.ts" name="ExceptionPipe.trapError &gt; calls log() on an ImposiumError directly without wrapping" time="0.000453353">
120
+ <testcase classname="src/scaffolding/ExceptionPipe.test.ts" name="ExceptionPipe.trapError &gt; does not call setStoryId when storyId is empty" time="0.000205415">
99
121
  </testcase>
100
- <testcase classname="src/scaffolding/ExceptionPipe.test.ts" name="ExceptionPipe.trapError &gt; invokes the callback when one is provided" time="0.002943161">
122
+ <testcase classname="src/scaffolding/ExceptionPipe.test.ts" name="ExceptionPipe.beforeSend (private Sentry beforeSend hook) &gt; returns null for moderation type events" time="0.000456701">
101
123
  </testcase>
102
- <testcase classname="src/scaffolding/ExceptionPipe.test.ts" name="ExceptionPipe.trapError &gt; calls setStoryId on the error when a storyId is provided" time="0.000651525">
124
+ <testcase classname="src/scaffolding/ExceptionPipe.test.ts" name="ExceptionPipe.beforeSend (private Sentry beforeSend hook) &gt; passes non-moderation events through to cleanDucktype" time="0.000147263">
103
125
  </testcase>
104
- <testcase classname="src/scaffolding/ExceptionPipe.test.ts" name="ExceptionPipe.trapError &gt; does not call setStoryId when storyId is empty" time="0.000758776">
126
+ <testcase classname="src/scaffolding/ExceptionPipe.test.ts" name="ExceptionPipe.beforeSend (private Sentry beforeSend hook) &gt; passes events with no tags through to cleanDucktype" time="0.000115904">
105
127
  </testcase>
106
- <testcase classname="src/scaffolding/ExceptionPipe.test.ts" name="ExceptionPipe.cleanDucktype (private Sentry beforeSend hook) &gt; returns the event unchanged when extra is undefined" time="0.000433673">
128
+ <testcase classname="src/scaffolding/ExceptionPipe.test.ts" name="ExceptionPipe.cleanDucktype (private Sentry beforeSend hook) &gt; returns the event unchanged when extra is undefined" time="0.000051913">
107
129
  </testcase>
108
- <testcase classname="src/scaffolding/ExceptionPipe.test.ts" name="ExceptionPipe.cleanDucktype (private Sentry beforeSend hook) &gt; deletes log, logHeader, and setStoryId from the Error extra field" time="0.000519559">
130
+ <testcase classname="src/scaffolding/ExceptionPipe.test.ts" name="ExceptionPipe.cleanDucktype (private Sentry beforeSend hook) &gt; deletes log, logHeader, and setStoryId from the Error extra field" time="0.000129935">
109
131
  </testcase>
110
- <testcase classname="src/scaffolding/ExceptionPipe.test.ts" name="ExceptionPipe.cleanDucktype (private Sentry beforeSend hook) &gt; deletes axiosError from the Error extra field when present" time="0.00035863">
132
+ <testcase classname="src/scaffolding/ExceptionPipe.test.ts" name="ExceptionPipe.cleanDucktype (private Sentry beforeSend hook) &gt; deletes axiosError from the Error extra field when present" time="0.000062347">
111
133
  </testcase>
112
- <testcase classname="src/scaffolding/ExceptionPipe.test.ts" name="ExceptionPipe.cleanDucktype (private Sentry beforeSend hook) &gt; deletes closeEvent from the Error extra field when present" time="0.000311527">
134
+ <testcase classname="src/scaffolding/ExceptionPipe.test.ts" name="ExceptionPipe.cleanDucktype (private Sentry beforeSend hook) &gt; deletes closeEvent from the Error extra field when present" time="0.000058573">
113
135
  </testcase>
114
136
  </testsuite>
115
- <testsuite name="src/scaffolding/Exceptions.test.ts" timestamp="2026-06-24T14:34:09.131Z" hostname="d537b62c7623" tests="16" failures="0" errors="0" skipped="0" time="0.01579232">
116
- <testcase classname="src/scaffolding/Exceptions.test.ts" name="RenderError &gt; is an instance of Error" time="0.003320084">
137
+ <testsuite name="src/scaffolding/Exceptions.test.ts" timestamp="2026-09-11T18:54:40.344Z" hostname="e000f0bce3a8" tests="16" failures="0" errors="0" skipped="0" time="0.004434514">
138
+ <testcase classname="src/scaffolding/Exceptions.test.ts" name="RenderError &gt; is an instance of Error" time="0.001102083">
117
139
  </testcase>
118
- <testcase classname="src/scaffolding/Exceptions.test.ts" name="RenderError &gt; stores the message passed to the constructor" time="0.000513198">
140
+ <testcase classname="src/scaffolding/Exceptions.test.ts" name="RenderError &gt; stores the message passed to the constructor" time="0.000164474">
119
141
  </testcase>
120
- <testcase classname="src/scaffolding/Exceptions.test.ts" name="RenderError &gt; defaults experienceId to &lt;not_set&gt; when null is passed" time="0.002510879">
142
+ <testcase classname="src/scaffolding/Exceptions.test.ts" name="RenderError &gt; defaults experienceId to &lt;not_set&gt; when null is passed" time="0.000782062">
121
143
  </testcase>
122
- <testcase classname="src/scaffolding/Exceptions.test.ts" name="RenderError &gt; log() calls console.error" time="0.000921723">
144
+ <testcase classname="src/scaffolding/Exceptions.test.ts" name="RenderError &gt; log() calls console.error" time="0.000145183">
123
145
  </testcase>
124
- <testcase classname="src/scaffolding/Exceptions.test.ts" name="ModerationError &gt; uses the message from errors.json" time="0.00048769">
146
+ <testcase classname="src/scaffolding/Exceptions.test.ts" name="ModerationError &gt; uses the message from errors.json" time="0.000124104">
125
147
  </testcase>
126
- <testcase classname="src/scaffolding/Exceptions.test.ts" name="ModerationError &gt; log() calls console.error" time="0.000416997">
148
+ <testcase classname="src/scaffolding/Exceptions.test.ts" name="ModerationError &gt; log() calls console.error" time="0.000107974">
127
149
  </testcase>
128
- <testcase classname="src/scaffolding/Exceptions.test.ts" name="ClientConfigurationError &gt; uses the message from errors.json" time="0.000454056">
150
+ <testcase classname="src/scaffolding/Exceptions.test.ts" name="ClientConfigurationError &gt; uses the message from errors.json" time="0.000094823">
129
151
  </testcase>
130
- <testcase classname="src/scaffolding/Exceptions.test.ts" name="ClientConfigurationError &gt; log() calls console.error" time="0.00044469">
152
+ <testcase classname="src/scaffolding/Exceptions.test.ts" name="ClientConfigurationError &gt; log() calls console.error" time="0.000097534">
131
153
  </testcase>
132
- <testcase classname="src/scaffolding/Exceptions.test.ts" name="PlayerConfigurationError &gt; uses the message from errors.json" time="0.000786873">
154
+ <testcase classname="src/scaffolding/Exceptions.test.ts" name="PlayerConfigurationError &gt; uses the message from errors.json" time="0.000099184">
133
155
  </testcase>
134
- <testcase classname="src/scaffolding/Exceptions.test.ts" name="PlayerConfigurationError &gt; log() calls console.error" time="0.000434894">
156
+ <testcase classname="src/scaffolding/Exceptions.test.ts" name="PlayerConfigurationError &gt; log() calls console.error" time="0.000086719">
135
157
  </testcase>
136
- <testcase classname="src/scaffolding/Exceptions.test.ts" name="HTTPError &gt; uses the default message from errors.json when no axios error is passed" time="0.000468235">
158
+ <testcase classname="src/scaffolding/Exceptions.test.ts" name="HTTPError &gt; uses the default message from errors.json when no axios error is passed" time="0.000093087">
137
159
  </testcase>
138
- <testcase classname="src/scaffolding/Exceptions.test.ts" name="HTTPError &gt; overrides the message with the API error body when present" time="0.000307475">
160
+ <testcase classname="src/scaffolding/Exceptions.test.ts" name="HTTPError &gt; overrides the message with the API error body when present" time="0.000060296">
139
161
  </testcase>
140
- <testcase classname="src/scaffolding/Exceptions.test.ts" name="HTTPError &gt; log() calls console.error" time="0.000464686">
162
+ <testcase classname="src/scaffolding/Exceptions.test.ts" name="HTTPError &gt; log() calls console.error" time="0.000080491">
141
163
  </testcase>
142
- <testcase classname="src/scaffolding/Exceptions.test.ts" name="UncaughtError &gt; uses the message from errors.json" time="0.000386892">
164
+ <testcase classname="src/scaffolding/Exceptions.test.ts" name="UncaughtError &gt; uses the message from errors.json" time="0.000080154">
143
165
  </testcase>
144
- <testcase classname="src/scaffolding/Exceptions.test.ts" name="UncaughtError &gt; log() calls console.error" time="0.000664119">
166
+ <testcase classname="src/scaffolding/Exceptions.test.ts" name="UncaughtError &gt; log() calls console.error" time="0.000154984">
145
167
  </testcase>
146
- <testcase classname="src/scaffolding/Exceptions.test.ts" name="ImposiumError.setStoryId &gt; updates the storyId on the error instance" time="0.000379432">
168
+ <testcase classname="src/scaffolding/Exceptions.test.ts" name="ImposiumError.setStoryId &gt; updates the storyId on the error instance" time="0.000102967">
147
169
  </testcase>
148
170
  </testsuite>
149
- <testsuite name="src/scaffolding/GoogleAnalytics.test.ts" timestamp="2026-06-24T14:34:09.134Z" hostname="d537b62c7623" tests="7" failures="0" errors="0" skipped="0" time="0.010160641">
150
- <testcase classname="src/scaffolding/GoogleAnalytics.test.ts" name="GoogleAnalytics.initialize &gt; sets gaPlacement to the provided value" time="0.003876362">
171
+ <testsuite name="src/scaffolding/GoogleAnalytics.test.ts" timestamp="2026-09-11T18:54:40.344Z" hostname="e000f0bce3a8" tests="7" failures="0" errors="0" skipped="0" time="0.004070559">
172
+ <testcase classname="src/scaffolding/GoogleAnalytics.test.ts" name="GoogleAnalytics.initialize &gt; sets gaPlacement to the provided value" time="0.001597823">
151
173
  </testcase>
152
- <testcase classname="src/scaffolding/GoogleAnalytics.test.ts" name="GoogleAnalytics.initialize &gt; runs without error on first call (no cached UUID)" time="0.001443429">
174
+ <testcase classname="src/scaffolding/GoogleAnalytics.test.ts" name="GoogleAnalytics.initialize &gt; runs without error on first call (no cached UUID)" time="0.000655916">
153
175
  </testcase>
154
- <testcase classname="src/scaffolding/GoogleAnalytics.test.ts" name="GoogleAnalytics.initialize &gt; uses a cached UUID if present and not expired" time="0.000454256">
176
+ <testcase classname="src/scaffolding/GoogleAnalytics.test.ts" name="GoogleAnalytics.initialize &gt; uses a cached UUID if present and not expired" time="0.000151431">
155
177
  </testcase>
156
- <testcase classname="src/scaffolding/GoogleAnalytics.test.ts" name="GoogleAnalytics.initialize &gt; generates a fresh UUID when the cached one is expired" time="0.000404476">
178
+ <testcase classname="src/scaffolding/GoogleAnalytics.test.ts" name="GoogleAnalytics.initialize &gt; generates a fresh UUID when the cached one is expired" time="0.000165308">
157
179
  </testcase>
158
- <testcase classname="src/scaffolding/GoogleAnalytics.test.ts" name="GoogleAnalytics.send &gt; calls axios.get exactly once" time="0.000825069">
180
+ <testcase classname="src/scaffolding/GoogleAnalytics.test.ts" name="GoogleAnalytics.send &gt; calls axios.get exactly once" time="0.000307847">
159
181
  </testcase>
160
- <testcase classname="src/scaffolding/GoogleAnalytics.test.ts" name="GoogleAnalytics.send &gt; includes event action in the request URL" time="0.000494703">
182
+ <testcase classname="src/scaffolding/GoogleAnalytics.test.ts" name="GoogleAnalytics.send &gt; includes event action in the request URL" time="0.000154677">
161
183
  </testcase>
162
- <testcase classname="src/scaffolding/GoogleAnalytics.test.ts" name="GoogleAnalytics.send &gt; includes event category in the request URL" time="0.000267544">
184
+ <testcase classname="src/scaffolding/GoogleAnalytics.test.ts" name="GoogleAnalytics.send &gt; includes event category in the request URL" time="0.000079033">
163
185
  </testcase>
164
186
  </testsuite>
165
- <testsuite name="src/scaffolding/Helpers.test.ts" timestamp="2026-06-24T14:34:09.135Z" hostname="d537b62c7623" tests="27" failures="0" errors="0" skipped="0" time="0.016794237">
166
- <testcase classname="src/scaffolding/Helpers.test.ts" name="prepConfig &gt; removes keys not present in defaults" time="0.00434465">
187
+ <testsuite name="src/scaffolding/Helpers.test.ts" timestamp="2026-09-11T18:54:40.345Z" hostname="e000f0bce3a8" tests="27" failures="0" errors="0" skipped="0" time="0.00504812">
188
+ <testcase classname="src/scaffolding/Helpers.test.ts" name="prepConfig &gt; removes keys not present in defaults" time="0.001386223">
167
189
  </testcase>
168
- <testcase classname="src/scaffolding/Helpers.test.ts" name="prepConfig &gt; preserves keys that exist in defaults" time="0.001079644">
190
+ <testcase classname="src/scaffolding/Helpers.test.ts" name="prepConfig &gt; preserves keys that exist in defaults" time="0.00049407">
169
191
  </testcase>
170
- <testcase classname="src/scaffolding/Helpers.test.ts" name="inRangeNumeric &gt; returns true when value is within range" time="0.000387745">
192
+ <testcase classname="src/scaffolding/Helpers.test.ts" name="inRangeNumeric &gt; returns true when value is within range" time="0.000142965">
171
193
  </testcase>
172
- <testcase classname="src/scaffolding/Helpers.test.ts" name="inRangeNumeric &gt; returns true at the lower boundary" time="0.000156272">
194
+ <testcase classname="src/scaffolding/Helpers.test.ts" name="inRangeNumeric &gt; returns true at the lower boundary" time="0.000057956">
173
195
  </testcase>
174
- <testcase classname="src/scaffolding/Helpers.test.ts" name="inRangeNumeric &gt; returns true at the upper boundary" time="0.000212835">
196
+ <testcase classname="src/scaffolding/Helpers.test.ts" name="inRangeNumeric &gt; returns true at the upper boundary" time="0.000047712">
175
197
  </testcase>
176
- <testcase classname="src/scaffolding/Helpers.test.ts" name="inRangeNumeric &gt; returns false when value is below range" time="0.000144501">
198
+ <testcase classname="src/scaffolding/Helpers.test.ts" name="inRangeNumeric &gt; returns false when value is below range" time="0.000041586">
177
199
  </testcase>
178
- <testcase classname="src/scaffolding/Helpers.test.ts" name="inRangeNumeric &gt; returns false when value is above range" time="0.000121723">
200
+ <testcase classname="src/scaffolding/Helpers.test.ts" name="inRangeNumeric &gt; returns false when value is above range" time="0.000038365">
179
201
  </testcase>
180
- <testcase classname="src/scaffolding/Helpers.test.ts" name="isFunc &gt; returns true for arrow functions" time="0.000258165">
202
+ <testcase classname="src/scaffolding/Helpers.test.ts" name="isFunc &gt; returns true for arrow functions" time="0.000064428">
181
203
  </testcase>
182
- <testcase classname="src/scaffolding/Helpers.test.ts" name="isFunc &gt; returns true for regular functions" time="0.000271747">
204
+ <testcase classname="src/scaffolding/Helpers.test.ts" name="isFunc &gt; returns true for regular functions" time="0.000056668">
183
205
  </testcase>
184
- <testcase classname="src/scaffolding/Helpers.test.ts" name="isFunc &gt; returns false for strings" time="0.000201738">
206
+ <testcase classname="src/scaffolding/Helpers.test.ts" name="isFunc &gt; returns false for strings" time="0.000037892">
185
207
  </testcase>
186
- <testcase classname="src/scaffolding/Helpers.test.ts" name="isFunc &gt; returns false for numbers" time="0.000195284">
208
+ <testcase classname="src/scaffolding/Helpers.test.ts" name="isFunc &gt; returns false for numbers" time="0.00003795">
187
209
  </testcase>
188
- <testcase classname="src/scaffolding/Helpers.test.ts" name="isFunc &gt; returns false for null" time="0.000200728">
210
+ <testcase classname="src/scaffolding/Helpers.test.ts" name="isFunc &gt; returns false for null" time="0.000034413">
189
211
  </testcase>
190
- <testcase classname="src/scaffolding/Helpers.test.ts" name="isFunc &gt; returns false for plain objects" time="0.000148179">
212
+ <testcase classname="src/scaffolding/Helpers.test.ts" name="isFunc &gt; returns false for plain objects" time="0.00003545">
191
213
  </testcase>
192
- <testcase classname="src/scaffolding/Helpers.test.ts" name="keyExists &gt; returns truthy when the value exists in the object" time="0.000203093">
214
+ <testcase classname="src/scaffolding/Helpers.test.ts" name="keyExists &gt; returns truthy when the value exists in the object" time="0.000080736">
193
215
  </testcase>
194
- <testcase classname="src/scaffolding/Helpers.test.ts" name="keyExists &gt; returns falsy when the value does not exist in the object" time="0.000148085">
216
+ <testcase classname="src/scaffolding/Helpers.test.ts" name="keyExists &gt; returns falsy when the value does not exist in the object" time="0.000048783">
195
217
  </testcase>
196
- <testcase classname="src/scaffolding/Helpers.test.ts" name="cloneWithKeys &gt; returns an object with the same keys as the input" time="0.0002791">
218
+ <testcase classname="src/scaffolding/Helpers.test.ts" name="cloneWithKeys &gt; returns an object with the same keys as the input" time="0.000095761">
197
219
  </testcase>
198
- <testcase classname="src/scaffolding/Helpers.test.ts" name="cloneWithKeys &gt; sets all values to null" time="0.000435055">
220
+ <testcase classname="src/scaffolding/Helpers.test.ts" name="cloneWithKeys &gt; sets all values to null" time="0.000081389">
199
221
  </testcase>
200
- <testcase classname="src/scaffolding/Helpers.test.ts" name="calculateAverageMbps &gt; returns the correct average rounded to 2 decimal places" time="0.000302739">
222
+ <testcase classname="src/scaffolding/Helpers.test.ts" name="calculateAverageMbps &gt; returns the correct average rounded to 2 decimal places" time="0.000080856">
201
223
  </testcase>
202
- <testcase classname="src/scaffolding/Helpers.test.ts" name="calculateAverageMbps &gt; rounds to 2 decimal places" time="0.000235195">
224
+ <testcase classname="src/scaffolding/Helpers.test.ts" name="calculateAverageMbps &gt; rounds to 2 decimal places" time="0.000057867">
203
225
  </testcase>
204
- <testcase classname="src/scaffolding/Helpers.test.ts" name="calculateAverageMbps &gt; handles a single value" time="0.000280669">
226
+ <testcase classname="src/scaffolding/Helpers.test.ts" name="calculateAverageMbps &gt; handles a single value" time="0.000040169">
205
227
  </testcase>
206
- <testcase classname="src/scaffolding/Helpers.test.ts" name="generateUUID &gt; returns a string matching UUID v4 format" time="0.000691608">
228
+ <testcase classname="src/scaffolding/Helpers.test.ts" name="generateUUID &gt; returns a string matching UUID v4 format" time="0.000198077">
207
229
  </testcase>
208
- <testcase classname="src/scaffolding/Helpers.test.ts" name="generateUUID &gt; returns a unique value on each call" time="0.000628293">
230
+ <testcase classname="src/scaffolding/Helpers.test.ts" name="generateUUID &gt; returns a unique value on each call" time="0.000168976">
209
231
  </testcase>
210
- <testcase classname="src/scaffolding/Helpers.test.ts" name="inventoryToFormData &gt; appends story_id to the FormData" time="0.001008594">
232
+ <testcase classname="src/scaffolding/Helpers.test.ts" name="inventoryToFormData &gt; appends story_id to the FormData" time="0.000385361">
211
233
  </testcase>
212
- <testcase classname="src/scaffolding/Helpers.test.ts" name="inventoryToFormData &gt; appends composition_id when provided" time="0.000314223">
234
+ <testcase classname="src/scaffolding/Helpers.test.ts" name="inventoryToFormData &gt; appends composition_id when provided" time="0.000068284">
213
235
  </testcase>
214
- <testcase classname="src/scaffolding/Helpers.test.ts" name="inventoryToFormData &gt; does not append composition_id when omitted" time="0.000407896">
236
+ <testcase classname="src/scaffolding/Helpers.test.ts" name="inventoryToFormData &gt; does not append composition_id when omitted" time="0.000066447">
215
237
  </testcase>
216
- <testcase classname="src/scaffolding/Helpers.test.ts" name="inventoryToFormData &gt; appends string inventory values" time="0.000204286">
238
+ <testcase classname="src/scaffolding/Helpers.test.ts" name="inventoryToFormData &gt; appends string inventory values" time="0.000062221">
217
239
  </testcase>
218
- <testcase classname="src/scaffolding/Helpers.test.ts" name="inventoryToFormData &gt; skips falsy inventory values" time="0.000215099">
240
+ <testcase classname="src/scaffolding/Helpers.test.ts" name="inventoryToFormData &gt; skips falsy inventory values" time="0.000046734">
219
241
  </testcase>
220
242
  </testsuite>
221
- <testsuite name="src/scaffolding/Version.test.ts" timestamp="2026-06-24T14:34:09.139Z" hostname="d537b62c7623" tests="2" failures="0" errors="0" skipped="0" time="0.005973467">
222
- <testcase classname="src/scaffolding/Version.test.ts" name="printVersion &gt; calls console.log once" time="0.003478396">
243
+ <testsuite name="src/scaffolding/Version.test.ts" timestamp="2026-09-11T18:54:40.347Z" hostname="e000f0bce3a8" tests="2" failures="0" errors="0" skipped="0" time="0.002769977">
244
+ <testcase classname="src/scaffolding/Version.test.ts" name="printVersion &gt; calls console.log once" time="0.001656153">
223
245
  </testcase>
224
- <testcase classname="src/scaffolding/Version.test.ts" name="printVersion &gt; includes the version string in the log output" time="0.000493836">
246
+ <testcase classname="src/scaffolding/Version.test.ts" name="printVersion &gt; includes the version string in the log output" time="0.000225393">
225
247
  </testcase>
226
248
  </testsuite>
227
- <testsuite name="src/video/FallbackPlayer.test.ts" timestamp="2026-06-24T14:34:09.140Z" hostname="d537b62c7623" tests="14" failures="0" errors="0" skipped="0" time="0.025457759">
228
- <testcase classname="src/video/FallbackPlayer.test.ts" name="FallbackPlayer constructor &gt; creates a player instance from an HTMLVideoElement" time="0.006945425">
249
+ <testsuite name="src/video/FallbackPlayer.test.ts" timestamp="2026-09-11T18:54:40.347Z" hostname="e000f0bce3a8" tests="14" failures="0" errors="0" skipped="0" time="0.010581524">
250
+ <testcase classname="src/video/FallbackPlayer.test.ts" name="FallbackPlayer constructor &gt; creates a player instance from an HTMLVideoElement" time="0.003331241">
229
251
  </testcase>
230
- <testcase classname="src/video/FallbackPlayer.test.ts" name="FallbackPlayer constructor &gt; calls ExceptionPipe.trapError when given a non-video node" time="0.001964466">
252
+ <testcase classname="src/video/FallbackPlayer.test.ts" name="FallbackPlayer constructor &gt; calls ExceptionPipe.trapError when given a non-video node" time="0.000815806">
231
253
  </testcase>
232
- <testcase classname="src/video/FallbackPlayer.test.ts" name="setStoryId &gt; stores the story id" time="0.000904405">
254
+ <testcase classname="src/video/FallbackPlayer.test.ts" name="setStoryId &gt; stores the story id" time="0.00032713">
233
255
  </testcase>
234
- <testcase classname="src/video/FallbackPlayer.test.ts" name="setGaProperty &gt; stores the GA property" time="0.000651833">
256
+ <testcase classname="src/video/FallbackPlayer.test.ts" name="setGaProperty &gt; stores the GA property" time="0.000224821">
235
257
  </testcase>
236
- <testcase classname="src/video/FallbackPlayer.test.ts" name="setGaProperty &gt; flushes queued GA calls when a property is first set" time="0.00208084">
258
+ <testcase classname="src/video/FallbackPlayer.test.ts" name="setGaProperty &gt; flushes queued GA calls when a property is first set" time="0.000910246">
237
259
  </testcase>
238
- <testcase classname="src/video/FallbackPlayer.test.ts" name="remove &gt; removes event listeners from the video node without throwing" time="0.001734399">
260
+ <testcase classname="src/video/FallbackPlayer.test.ts" name="remove &gt; removes event listeners from the video node without throwing" time="0.00082642">
239
261
  </testcase>
240
- <testcase classname="src/video/FallbackPlayer.test.ts" name="experienceGenerated &gt; sets the experience id for analytics" time="0.000739108">
262
+ <testcase classname="src/video/FallbackPlayer.test.ts" name="experienceGenerated &gt; sets the experience id for analytics" time="0.000275762">
241
263
  </testcase>
242
- <testcase classname="src/video/FallbackPlayer.test.ts" name="VideoPlayer DOM event handlers &gt; onPlay: starts a playback interval and queues a GA call" time="0.001601285">
264
+ <testcase classname="src/video/FallbackPlayer.test.ts" name="VideoPlayer DOM event handlers &gt; onPlay: starts a playback interval and queues a GA call" time="0.000817264">
243
265
  </testcase>
244
- <testcase classname="src/video/FallbackPlayer.test.ts" name="VideoPlayer DOM event handlers &gt; onPause: clears the playback interval and queues a GA call" time="0.001175091">
266
+ <testcase classname="src/video/FallbackPlayer.test.ts" name="VideoPlayer DOM event handlers &gt; onPause: clears the playback interval and queues a GA call" time="0.000371969">
245
267
  </testcase>
246
- <testcase classname="src/video/FallbackPlayer.test.ts" name="VideoPlayer DOM event handlers &gt; onEnded: resets prevPlaybackEvent to 0" time="0.000739305">
268
+ <testcase classname="src/video/FallbackPlayer.test.ts" name="VideoPlayer DOM event handlers &gt; onEnded: resets prevPlaybackEvent to 0" time="0.000241656">
247
269
  </testcase>
248
- <testcase classname="src/video/FallbackPlayer.test.ts" name="VideoPlayer DOM event handlers &gt; onVolumeChange: detects mute" time="0.000837254">
270
+ <testcase classname="src/video/FallbackPlayer.test.ts" name="VideoPlayer DOM event handlers &gt; onVolumeChange: detects mute" time="0.000233683">
249
271
  </testcase>
250
- <testcase classname="src/video/FallbackPlayer.test.ts" name="VideoPlayer DOM event handlers &gt; onVolumeChange: detects unmute" time="0.000661517">
272
+ <testcase classname="src/video/FallbackPlayer.test.ts" name="VideoPlayer DOM event handlers &gt; onVolumeChange: detects unmute" time="0.000197229">
251
273
  </testcase>
252
- <testcase classname="src/video/FallbackPlayer.test.ts" name="VideoPlayer DOM event handlers &gt; checkPlayback: emits playback milestone when threshold crossed" time="0.001487788">
274
+ <testcase classname="src/video/FallbackPlayer.test.ts" name="VideoPlayer DOM event handlers &gt; checkPlayback: emits playback milestone when threshold crossed" time="0.000567732">
253
275
  </testcase>
254
- <testcase classname="src/video/FallbackPlayer.test.ts" name="VideoPlayer DOM event handlers &gt; checkPlayback: clears interval when node is null" time="0.00084962">
276
+ <testcase classname="src/video/FallbackPlayer.test.ts" name="VideoPlayer DOM event handlers &gt; checkPlayback: clears interval when node is null" time="0.000260202">
255
277
  </testcase>
256
278
  </testsuite>
257
- <testsuite name="src/video/Player.test.ts" timestamp="2026-06-24T14:34:09.142Z" hostname="d537b62c7623" tests="35" failures="0" errors="0" skipped="0" time="0.077506397">
258
- <testcase classname="src/video/Player.test.ts" name="ImposiumPlayer constructor &gt; calls client.bindPlayer" time="0.017327226">
279
+ <testsuite name="src/video/Player.test.ts" timestamp="2026-09-11T18:54:40.348Z" hostname="e000f0bce3a8" tests="35" failures="0" errors="0" skipped="0" time="0.024817188">
280
+ <testcase classname="src/video/Player.test.ts" name="ImposiumPlayer constructor &gt; calls client.bindPlayer" time="0.005503119">
259
281
  </testcase>
260
- <testcase classname="src/video/Player.test.ts" name="ImposiumPlayer constructor &gt; initialises config from defaults" time="0.00168793">
282
+ <testcase classname="src/video/Player.test.ts" name="ImposiumPlayer constructor &gt; initialises config from defaults" time="0.000613795">
261
283
  </testcase>
262
- <testcase classname="src/video/Player.test.ts" name="ImposiumPlayer constructor &gt; calls ExceptionPipe.trapError when client has no clientConfig" time="0.001976828">
284
+ <testcase classname="src/video/Player.test.ts" name="ImposiumPlayer constructor &gt; calls ExceptionPipe.trapError when client has no clientConfig" time="0.000487774">
263
285
  </testcase>
264
- <testcase classname="src/video/Player.test.ts" name="ImposiumPlayer constructor &gt; calls ExceptionPipe.trapError when client is null" time="0.001323146">
286
+ <testcase classname="src/video/Player.test.ts" name="ImposiumPlayer constructor &gt; calls ExceptionPipe.trapError when client is null" time="0.000295303">
265
287
  </testcase>
266
- <testcase classname="src/video/Player.test.ts" name="init &gt; applies config to the video node" time="0.002010332">
288
+ <testcase classname="src/video/Player.test.ts" name="init &gt; applies config to the video node" time="0.000802462">
267
289
  </testcase>
268
- <testcase classname="src/video/Player.test.ts" name="on / off &gt; registers a native event callback" time="0.001357813">
290
+ <testcase classname="src/video/Player.test.ts" name="on / off &gt; registers a native event callback" time="0.000406854">
269
291
  </testcase>
270
- <testcase classname="src/video/Player.test.ts" name="on / off &gt; calls ExceptionPipe.trapError for an invalid event name" time="0.001219412">
292
+ <testcase classname="src/video/Player.test.ts" name="on / off &gt; calls ExceptionPipe.trapError for an invalid event name" time="0.000314222">
271
293
  </testcase>
272
- <testcase classname="src/video/Player.test.ts" name="on / off &gt; calls ExceptionPipe.trapError when callback is not a function" time="0.001101936">
294
+ <testcase classname="src/video/Player.test.ts" name="on / off &gt; calls ExceptionPipe.trapError when callback is not a function" time="0.000245765">
273
295
  </testcase>
274
- <testcase classname="src/video/Player.test.ts" name="on / off &gt; clears a registered callback via off()" time="0.001581212">
296
+ <testcase classname="src/video/Player.test.ts" name="on / off &gt; clears a registered callback via off()" time="0.000408399">
275
297
  </testcase>
276
- <testcase classname="src/video/Player.test.ts" name="on / off &gt; calls ExceptionPipe.trapError when off() receives an invalid event" time="0.00107917">
298
+ <testcase classname="src/video/Player.test.ts" name="on / off &gt; calls ExceptionPipe.trapError when off() receives an invalid event" time="0.000243041">
277
299
  </testcase>
278
- <testcase classname="src/video/Player.test.ts" name="play / pause &gt; play calls node.play()" time="0.001289621">
300
+ <testcase classname="src/video/Player.test.ts" name="play / pause &gt; play calls node.play()" time="0.000293179">
279
301
  </testcase>
280
- <testcase classname="src/video/Player.test.ts" name="play / pause &gt; pause calls node.pause()" time="0.001042171">
302
+ <testcase classname="src/video/Player.test.ts" name="play / pause &gt; pause calls node.pause()" time="0.000278048">
281
303
  </testcase>
282
- <testcase classname="src/video/Player.test.ts" name="getPlaybackState / getPosition / getDuration &gt; returns &quot;paused&quot; when node is paused" time="0.000936914">
304
+ <testcase classname="src/video/Player.test.ts" name="getPlaybackState / getPosition / getDuration &gt; returns &quot;paused&quot; when node is paused" time="0.000226081">
283
305
  </testcase>
284
- <testcase classname="src/video/Player.test.ts" name="getPlaybackState / getPosition / getDuration &gt; returns &quot;playing&quot; when node is not paused" time="0.000987698">
306
+ <testcase classname="src/video/Player.test.ts" name="getPlaybackState / getPosition / getDuration &gt; returns &quot;playing&quot; when node is not paused" time="0.000338483">
285
307
  </testcase>
286
- <testcase classname="src/video/Player.test.ts" name="getPlaybackState / getPosition / getDuration &gt; getPosition returns current time" time="0.001065207">
308
+ <testcase classname="src/video/Player.test.ts" name="getPlaybackState / getPosition / getDuration &gt; getPosition returns current time" time="0.000302282">
287
309
  </testcase>
288
- <testcase classname="src/video/Player.test.ts" name="getPlaybackState / getPosition / getDuration &gt; getDuration returns video duration" time="0.00097626">
310
+ <testcase classname="src/video/Player.test.ts" name="getPlaybackState / getPosition / getDuration &gt; getDuration returns video duration" time="0.000245697">
289
311
  </testcase>
290
- <testcase classname="src/video/Player.test.ts" name="seek &gt; sets currentTime when seek is in range" time="0.001125017">
312
+ <testcase classname="src/video/Player.test.ts" name="seek &gt; sets currentTime when seek is in range" time="0.000353487">
291
313
  </testcase>
292
- <testcase classname="src/video/Player.test.ts" name="seek &gt; logs a warning when seek is out of range" time="0.001230181">
314
+ <testcase classname="src/video/Player.test.ts" name="seek &gt; logs a warning when seek is out of range" time="0.000579696">
293
315
  </testcase>
294
- <testcase classname="src/video/Player.test.ts" name="seek &gt; logs a warning when duration is NaN (video not loaded)" time="0.00101536">
316
+ <testcase classname="src/video/Player.test.ts" name="seek &gt; logs a warning when duration is NaN (video not loaded)" time="0.000427107">
295
317
  </testcase>
296
- <testcase classname="src/video/Player.test.ts" name="getMute / setMute &gt; getMute returns the node muted state" time="0.000920872">
318
+ <testcase classname="src/video/Player.test.ts" name="getMute / setMute &gt; getMute returns the node muted state" time="0.000265108">
297
319
  </testcase>
298
- <testcase classname="src/video/Player.test.ts" name="getMute / setMute &gt; setMute updates the node muted state" time="0.001222236">
320
+ <testcase classname="src/video/Player.test.ts" name="getMute / setMute &gt; setMute updates the node muted state" time="0.000579599">
299
321
  </testcase>
300
- <testcase classname="src/video/Player.test.ts" name="getMute / setMute &gt; setMute invokes the muted callback when registered" time="0.000971136">
322
+ <testcase classname="src/video/Player.test.ts" name="getMute / setMute &gt; setMute invokes the muted callback when registered" time="0.000299195">
301
323
  </testcase>
302
- <testcase classname="src/video/Player.test.ts" name="getVolume / setVolume &gt; getVolume returns the node volume" time="0.000924298">
324
+ <testcase classname="src/video/Player.test.ts" name="getVolume / setVolume &gt; getVolume returns the node volume" time="0.000455512">
303
325
  </testcase>
304
- <testcase classname="src/video/Player.test.ts" name="getVolume / setVolume &gt; setVolume updates the node volume within range" time="0.001471503">
326
+ <testcase classname="src/video/Player.test.ts" name="getVolume / setVolume &gt; setVolume updates the node volume within range" time="0.000298988">
305
327
  </testcase>
306
- <testcase classname="src/video/Player.test.ts" name="getVolume / setVolume &gt; logs a warning for volume out of range" time="0.000921943">
328
+ <testcase classname="src/video/Player.test.ts" name="getVolume / setVolume &gt; logs a warning for volume out of range" time="0.000272237">
307
329
  </testcase>
308
- <testcase classname="src/video/Player.test.ts" name="getControls / setControls &gt; getControls returns the node controls state" time="0.000880014">
330
+ <testcase classname="src/video/Player.test.ts" name="getControls / setControls &gt; getControls returns the node controls state" time="0.000240211">
309
331
  </testcase>
310
- <testcase classname="src/video/Player.test.ts" name="getControls / setControls &gt; setControls updates the node controls state" time="0.001381386">
332
+ <testcase classname="src/video/Player.test.ts" name="getControls / setControls &gt; setControls updates the node controls state" time="0.000434766">
311
333
  </testcase>
312
- <testcase classname="src/video/Player.test.ts" name="experienceGenerated &gt; sets the experience id and assigns a src when only mp4 is available" time="0.011465963">
334
+ <testcase classname="src/video/Player.test.ts" name="experienceGenerated &gt; sets the experience id and assigns a src when only mp4 is available" time="0.00430055">
313
335
  </testcase>
314
- <testcase classname="src/video/Player.test.ts" name="experienceGenerated &gt; sets the poster when present" time="0.002197911">
336
+ <testcase classname="src/video/Player.test.ts" name="experienceGenerated &gt; sets the poster when present" time="0.000804773">
315
337
  </testcase>
316
- <testcase classname="src/video/Player.test.ts" name="doQualityOverride &gt; sets src to the overridden quality URL" time="0.001926761">
338
+ <testcase classname="src/video/Player.test.ts" name="doQualityOverride &gt; sets src to the overridden quality URL" time="0.000548097">
317
339
  </testcase>
318
- <testcase classname="src/video/Player.test.ts" name="doQualityOverride &gt; calls ExceptionPipe.trapError when the qualityOverride key does not exist in videos" time="0.001278203">
340
+ <testcase classname="src/video/Player.test.ts" name="doQualityOverride &gt; calls ExceptionPipe.trapError when the qualityOverride key does not exist in videos" time="0.000378772">
319
341
  </testcase>
320
- <testcase classname="src/video/Player.test.ts" name="replay &gt; resets currentTime to 0 and calls node.play()" time="0.001296606">
342
+ <testcase classname="src/video/Player.test.ts" name="replay &gt; resets currentTime to 0 and calls node.play()" time="0.000329088">
321
343
  </testcase>
322
- <testcase classname="src/video/Player.test.ts" name="replay &gt; pauses before replaying if the node is currently playing" time="0.001168984">
344
+ <testcase classname="src/video/Player.test.ts" name="replay &gt; pauses before replaying if the node is currently playing" time="0.000440066">
323
345
  </testcase>
324
- <testcase classname="src/video/Player.test.ts" name="remove &gt; sets the node reference to null" time="0.001995345">
346
+ <testcase classname="src/video/Player.test.ts" name="remove &gt; sets the node reference to null" time="0.000603201">
325
347
  </testcase>
326
- <testcase classname="src/video/Player.test.ts" name="remove &gt; resets imposiumPlayerConfig to defaults" time="0.002572099">
348
+ <testcase classname="src/video/Player.test.ts" name="remove &gt; resets imposiumPlayerConfig to defaults" time="0.000727256">
327
349
  </testcase>
328
350
  </testsuite>
329
- <testsuite name="src/client/http/API.test.ts" timestamp="2026-06-24T14:34:09.147Z" hostname="d537b62c7623" tests="12" failures="0" errors="0" skipped="0" time="0.025227828">
330
- <testcase classname="src/client/http/API.test.ts" name="API constructor &gt; creates an axios instance with the production base URL" time="0.008756583">
351
+ <testsuite name="src/client/http/API.test.ts" timestamp="2026-09-11T18:54:40.349Z" hostname="e000f0bce3a8" tests="12" failures="0" errors="0" skipped="0" time="0.008169852">
352
+ <testcase classname="src/client/http/API.test.ts" name="API constructor &gt; creates an axios instance with the production base URL" time="0.002909863">
331
353
  </testcase>
332
- <testcase classname="src/client/http/API.test.ts" name="API constructor &gt; creates an axios instance with the staging base URL" time="0.000858544">
354
+ <testcase classname="src/client/http/API.test.ts" name="API constructor &gt; creates an axios instance with the staging base URL" time="0.000371146">
333
355
  </testcase>
334
- <testcase classname="src/client/http/API.test.ts" name="API constructor &gt; uses the JWT Authorization header when token decodes successfully" time="0.000563224">
356
+ <testcase classname="src/client/http/API.test.ts" name="API constructor &gt; uses the JWT Authorization header when token decodes successfully" time="0.000164301">
335
357
  </testcase>
336
- <testcase classname="src/client/http/API.test.ts" name="API constructor &gt; falls back to HMAC header when jwt_decode throws" time="0.000629551">
358
+ <testcase classname="src/client/http/API.test.ts" name="API constructor &gt; falls back to HMAC header when jwt_decode throws" time="0.000159722">
337
359
  </testcase>
338
- <testcase classname="src/client/http/API.test.ts" name="API.getGAProperty &gt; resolves with story data on success" time="0.001043806">
360
+ <testcase classname="src/client/http/API.test.ts" name="API.getGAProperty &gt; resolves with story data on success" time="0.00033629">
339
361
  </testcase>
340
- <testcase classname="src/client/http/API.test.ts" name="API.getGAProperty &gt; rejects when the HTTP call fails" time="0.002993138">
362
+ <testcase classname="src/client/http/API.test.ts" name="API.getGAProperty &gt; rejects when the HTTP call fails" time="0.000963394">
341
363
  </testcase>
342
- <testcase classname="src/client/http/API.test.ts" name="API.get &gt; resolves with experience data on success" time="0.000712604">
364
+ <testcase classname="src/client/http/API.test.ts" name="API.get &gt; resolves with experience data on success" time="0.000289291">
343
365
  </testcase>
344
- <testcase classname="src/client/http/API.test.ts" name="API.get &gt; rejects when the HTTP call fails" time="0.001572476">
366
+ <testcase classname="src/client/http/API.test.ts" name="API.get &gt; rejects when the HTTP call fails" time="0.000502995">
345
367
  </testcase>
346
- <testcase classname="src/client/http/API.test.ts" name="API.fetch &gt; resolves with experience data on success" time="0.001591463">
368
+ <testcase classname="src/client/http/API.test.ts" name="API.fetch &gt; resolves with experience data on success" time="0.000497643">
347
369
  </testcase>
348
- <testcase classname="src/client/http/API.test.ts" name="API.fetch &gt; calls the progress callback when upload progress fires" time="0.001033882">
370
+ <testcase classname="src/client/http/API.test.ts" name="API.fetch &gt; calls the progress callback when upload progress fires" time="0.000271688">
349
371
  </testcase>
350
- <testcase classname="src/client/http/API.test.ts" name="API.create &gt; posts to /experience/render when render=true" time="0.001202612">
372
+ <testcase classname="src/client/http/API.test.ts" name="API.create &gt; posts to /experience/render when render=true" time="0.000360706">
351
373
  </testcase>
352
- <testcase classname="src/client/http/API.test.ts" name="API.create &gt; posts to /experience when render=false" time="0.000686232">
374
+ <testcase classname="src/client/http/API.test.ts" name="API.create &gt; posts to /experience when render=false" time="0.000227216">
353
375
  </testcase>
354
376
  </testsuite>
355
377
  </testsuites>