@@ -2,10 +2,8 @@ import { suite, test, expect, beforeEach, afterEach, assert } from 'vitest'
22import {
33 BKTClient ,
44 BKTClientImpl ,
5- destroyBKTClient ,
6- getBKTClient ,
75} from '../src/BKTClient'
8- import { initializeBKTClient } from '../src/main.browser '
6+ import { initializeBKTClient , getBKTClient , destroyBKTClient } from './module '
97import { BKTConfig , defineBKTConfig } from '../src/BKTConfig'
108import { BKTUser , defineBKTUser } from '../src/BKTUser'
119import { DefaultComponent } from '../src/internal/di/Component'
@@ -25,6 +23,7 @@ import { ForbiddenException, TimeoutException } from '../src/BKTExceptions'
2523import { ApiId , MetricsEventType } from '../src/internal/model/MetricsEventData'
2624import { SDK_VERSION } from '../src/internal/version'
2725import { SourceId } from '../src/internal/model/SourceId'
26+ import { fetchLike , isNodeEnvironment } from './environment'
2827
2928function getDefaultComponent ( client : BKTClient ) : DefaultComponent {
3029 return ( client as BKTClientImpl ) . component as DefaultComponent
@@ -40,7 +39,7 @@ suite('e2e/events', () => {
4039 apiKey : import . meta. env . VITE_BKT_API_KEY ,
4140 featureTag : 'javascript' ,
4241 appVersion : '1.2.3' ,
43- fetch : window . fetch ,
42+ fetch : fetchLike ,
4443 // DO NOT remove this line
4544 // Because the tests are asynchronous and share the same local storage,
4645 // It might fail randomly, having more or fewer events in the storage when checking the test.
@@ -57,7 +56,6 @@ suite('e2e/events', () => {
5756
5857 afterEach ( ( ) => {
5958 destroyBKTClient ( )
60- localStorage . clear ( )
6159 } )
6260
6361 test ( 'goal event' , async ( ) => {
@@ -187,14 +185,13 @@ suite('e2e/events', () => {
187185
188186 test ( 'Using a random string in the api key setting should throw Forbidden' , async ( ) => {
189187 destroyBKTClient ( )
190- localStorage . clear ( )
191188
192189 config = defineBKTConfig ( {
193190 apiEndpoint : import . meta. env . VITE_BKT_API_ENDPOINT ,
194191 apiKey : 'some-random-string' ,
195192 featureTag : 'javascript' ,
196193 appVersion : '1.2.3' ,
197- fetch : window . fetch ,
194+ fetch : fetchLike ,
198195 } )
199196
200197 user = defineBKTUser ( {
@@ -239,7 +236,7 @@ suite('e2e/events', () => {
239236 apiKey : import . meta. env . VITE_BKT_API_KEY ,
240237 featureTag : 'javascript' ,
241238 appVersion : '1.2.3' ,
242- fetch : window . fetch ,
239+ fetch : fetchLike ,
243240 } )
244241
245242 await initializeBKTClient ( config , user )
@@ -249,39 +246,45 @@ suite('e2e/events', () => {
249246 const component2 = getDefaultComponent ( client )
250247
251248 const events3 = await component2 . dataModule . eventStorage ( ) . getAll ( )
252- // 2 events - latency and response size
253- expect ( events3 ) . toHaveLength ( 2 )
254- // ForbiddenError should not exist
255- expect (
256- events . some ( ( e ) => {
257- return (
249+
250+ if ( isNodeEnvironment ) {
251+ // on the node environment, no events should be stored after destroying the client
252+ // because it's using in-memory storage
253+ expect ( events3 ) . toHaveLength ( 0 )
254+ } else {
255+ // on the browser environment, we should have 2 events - latency and response size
256+ expect ( events3 ) . toHaveLength ( 2 )
257+ // ForbiddenError should not exist
258+ expect (
259+ events3 . some ( ( e ) => {
260+ return (
258261 e . type === EventType . METRICS &&
259262 e . event . event [ '@type' ] === MetricsEventType . ForbiddenError &&
260263 e . event . event . apiId === ApiId . GET_EVALUATIONS &&
261264 e . event . sdkVersion === SDK_VERSION &&
262265 e . event . sourceId === SourceId . JAVASCRIPT
263- )
264- } ) ,
265- ) . toBe ( false )
266+ )
267+ } ) ,
268+ ) . toBe ( false )
266269
267- await client2 . flush ( )
270+ await client2 . flush ( )
268271
269- const events4 = await component2 . dataModule . eventStorage ( ) . getAll ( )
272+ const events4 = await component2 . dataModule . eventStorage ( ) . getAll ( )
270273
271- // error from /register_events does not get stored
272- expect ( events4 ) . toHaveLength ( 0 )
274+ // error from /register_events does not get stored
275+ expect ( events4 ) . toHaveLength ( 0 )
276+ }
273277 } )
274278
275279 test ( 'Using a random string in the featureTag setting should not affect api request' , async ( ) => {
276280 destroyBKTClient ( )
277- localStorage . clear ( )
278281
279282 config = defineBKTConfig ( {
280283 apiEndpoint : import . meta. env . VITE_BKT_API_ENDPOINT ,
281284 apiKey : import . meta. env . VITE_BKT_API_KEY ,
282285 featureTag : 'some-random-feature-tag' ,
283286 appVersion : '1.2.3' ,
284- fetch : window . fetch ,
287+ fetch : fetchLike ,
285288 } )
286289
287290 user = defineBKTUser ( {
@@ -293,16 +296,14 @@ suite('e2e/events', () => {
293296
294297 test ( 'Timeout' , async ( ) => {
295298 // setting a very low value for the timeout
296-
297299 destroyBKTClient ( )
298- localStorage . clear ( )
299300
300301 config = defineBKTConfig ( {
301302 apiEndpoint : import . meta. env . VITE_BKT_API_ENDPOINT ,
302303 apiKey : import . meta. env . VITE_BKT_API_KEY ,
303304 featureTag : 'javascript' ,
304305 appVersion : '1.2.3' ,
305- fetch : window . fetch ,
306+ fetch : fetchLike ,
306307 } )
307308
308309 user = defineBKTUser ( {
0 commit comments