@@ -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 ( ) => {
@@ -185,14 +183,13 @@ suite('e2e/events', () => {
185183
186184 test ( 'Using a random string in the api key setting should throw Forbidden' , async ( ) => {
187185 destroyBKTClient ( )
188- localStorage . clear ( )
189186
190187 config = defineBKTConfig ( {
191188 apiEndpoint : import . meta. env . VITE_BKT_API_ENDPOINT ,
192189 apiKey : 'some-random-string' ,
193190 featureTag : 'javascript' ,
194191 appVersion : '1.2.3' ,
195- fetch : window . fetch ,
192+ fetch : fetchLike ,
196193 } )
197194
198195 user = defineBKTUser ( {
@@ -237,7 +234,7 @@ suite('e2e/events', () => {
237234 apiKey : import . meta. env . VITE_BKT_API_KEY ,
238235 featureTag : 'javascript' ,
239236 appVersion : '1.2.3' ,
240- fetch : window . fetch ,
237+ fetch : fetchLike ,
241238 } )
242239
243240 await initializeBKTClient ( config , user )
@@ -247,39 +244,45 @@ suite('e2e/events', () => {
247244 const component2 = getDefaultComponent ( client )
248245
249246 const events3 = component2 . dataModule . eventStorage ( ) . getAll ( )
250- // 2 events - latency and response size
251- expect ( events3 ) . toHaveLength ( 2 )
252- // ForbiddenError should not exist
253- expect (
254- events . some ( ( e ) => {
255- return (
247+
248+ if ( isNodeEnvironment ) {
249+ // on the node environment, no events should be stored after destroying the client
250+ // because it's using in-memory storage
251+ expect ( events3 ) . toHaveLength ( 0 )
252+ } else {
253+ // on the browser environment, we should have 2 events - latency and response size
254+ expect ( events3 ) . toHaveLength ( 2 )
255+ // ForbiddenError should not exist
256+ expect (
257+ events3 . some ( ( e ) => {
258+ return (
256259 e . type === EventType . METRICS &&
257260 e . event . event [ '@type' ] === MetricsEventType . ForbiddenError &&
258261 e . event . event . apiId === ApiId . GET_EVALUATIONS &&
259262 e . event . sdkVersion === SDK_VERSION &&
260263 e . event . sourceId === SourceId . JAVASCRIPT
261- )
262- } ) ,
263- ) . toBe ( false )
264+ )
265+ } ) ,
266+ ) . toBe ( false )
264267
265- await client2 . flush ( )
268+ await client2 . flush ( )
266269
267- const events4 = component2 . dataModule . eventStorage ( ) . getAll ( )
270+ const events4 = component2 . dataModule . eventStorage ( ) . getAll ( )
268271
269- // error from /register_events does not get stored
270- expect ( events4 ) . toHaveLength ( 0 )
272+ // error from /register_events does not get stored
273+ expect ( events4 ) . toHaveLength ( 0 )
274+ }
271275 } )
272276
273277 test ( 'Using a random string in the featureTag setting should not affect api request' , async ( ) => {
274278 destroyBKTClient ( )
275- localStorage . clear ( )
276279
277280 config = defineBKTConfig ( {
278281 apiEndpoint : import . meta. env . VITE_BKT_API_ENDPOINT ,
279282 apiKey : import . meta. env . VITE_BKT_API_KEY ,
280283 featureTag : 'some-random-feature-tag' ,
281284 appVersion : '1.2.3' ,
282- fetch : window . fetch ,
285+ fetch : fetchLike ,
283286 } )
284287
285288 user = defineBKTUser ( {
@@ -291,16 +294,14 @@ suite('e2e/events', () => {
291294
292295 test ( 'Timeout' , async ( ) => {
293296 // setting a very low value for the timeout
294-
295297 destroyBKTClient ( )
296- localStorage . clear ( )
297298
298299 config = defineBKTConfig ( {
299300 apiEndpoint : import . meta. env . VITE_BKT_API_ENDPOINT ,
300301 apiKey : import . meta. env . VITE_BKT_API_KEY ,
301302 featureTag : 'javascript' ,
302303 appVersion : '1.2.3' ,
303- fetch : window . fetch ,
304+ fetch : fetchLike ,
304305 } )
305306
306307 user = defineBKTUser ( {
0 commit comments