@@ -41,23 +41,22 @@ describe('PerformanceObserverSink', () => {
4141 expect ( ( ) => new PerformanceObserverSink ( options ) ) . not . toThrow ( ) ;
4242 } ) ;
4343
44- it ( 'internal PerformanceObserver should process observed entries' , ( ) => {
44+ it ( 'internal PerformanceObserver should process observed entries' , async ( ) => {
4545 const observer = new PerformanceObserverSink ( options ) ;
4646 observer . subscribe ( ) ;
4747
4848 performance . mark ( 'test-mark' ) ;
4949 performance . measure ( 'test-measure' ) ;
50+ await awaitObserverCallback ( ) ;
5051 observer . flush ( ) ;
5152 expect ( encode ) . toHaveBeenCalledTimes ( 2 ) ;
52- expect ( encode ) . toHaveBeenNthCalledWith (
53- 1 ,
53+ expect ( encode ) . toHaveBeenCalledWith (
5454 expect . objectContaining ( {
5555 name : 'test-mark' ,
5656 entryType : 'mark' ,
5757 } ) ,
5858 ) ;
59- expect ( encode ) . toHaveBeenNthCalledWith (
60- 2 ,
59+ expect ( encode ) . toHaveBeenCalledWith (
6160 expect . objectContaining ( {
6261 name : 'test-measure' ,
6362 entryType : 'measure' ,
@@ -81,28 +80,30 @@ describe('PerformanceObserverSink', () => {
8180 expect ( encode ) . toHaveBeenCalledTimes ( 3 ) ;
8281 } ) ;
8382
84- it ( 'flush flushes observed entries when subscribed' , ( ) => {
83+ it ( 'flush flushes observed entries when subscribed' , async ( ) => {
8584 const observer = new PerformanceObserverSink ( options ) ;
8685 observer . subscribe ( ) ;
8786
8887 performance . mark ( 'test-mark1' ) ;
8988 performance . mark ( 'test-mark2' ) ;
9089 expect ( sink . getWrittenItems ( ) ) . toStrictEqual ( [ ] ) ;
9190
91+ await awaitObserverCallback ( ) ;
9292 observer . flush ( ) ;
9393 expect ( sink . getWrittenItems ( ) ) . toStrictEqual ( [
9494 'test-mark1:mark' ,
9595 'test-mark2:mark' ,
9696 ] ) ;
9797 } ) ;
9898
99- it ( 'flush calls encode for each entry' , ( ) => {
99+ it ( 'flush calls encode for each entry' , async ( ) => {
100100 const observer = new PerformanceObserverSink ( options ) ;
101101 observer . subscribe ( ) ;
102102
103103 performance . mark ( 'test-mark1' ) ;
104104 performance . mark ( 'test-mark2' ) ;
105105
106+ await awaitObserverCallback ( ) ;
106107 observer . flush ( ) ;
107108
108109 expect ( encode ) . toHaveBeenCalledWith (
@@ -138,32 +139,28 @@ describe('PerformanceObserverSink', () => {
138139 expect ( encode ) . toHaveBeenCalledTimes ( 2 ) ;
139140 } ) ;
140141
141- it ( 'should observe performance entries and write them to the sink on flush' , ( ) => {
142+ it ( 'should observe performance entries and write them to the sink on flush' , async ( ) => {
142143 const observer = new PerformanceObserverSink ( options ) ;
143144
144145 observer . subscribe ( ) ;
145146 performance . mark ( 'test-mark' ) ;
147+ await awaitObserverCallback ( ) ;
146148 observer . flush ( ) ;
147149 expect ( sink . getWrittenItems ( ) ) . toHaveLength ( 1 ) ;
148150 } ) ;
149151
150- it ( 'should observe buffered performance entries when buffered is enabled' , async ( ) => {
151- const observer = new PerformanceObserverSink ( {
152- ...options ,
153- captureBufferedEntries : true ,
154- } ) ;
152+ it ( 'should observe performance entries when subscribed' , async ( ) => {
153+ const observer = new PerformanceObserverSink ( options ) ;
155154
155+ observer . subscribe ( ) ;
156156 performance . mark ( 'test-mark-1' ) ;
157157 performance . mark ( 'test-mark-2' ) ;
158- await new Promise ( resolve => setTimeout ( resolve , 10 ) ) ;
159- observer . subscribe ( ) ;
160- await new Promise ( resolve => setTimeout ( resolve , 10 ) ) ;
161- expect ( performance . getEntries ( ) ) . toHaveLength ( 2 ) ;
158+ await awaitObserverCallback ( ) ;
162159 observer . flush ( ) ;
163160 expect ( sink . getWrittenItems ( ) ) . toHaveLength ( 2 ) ;
164161 } ) ;
165162
166- it ( 'handles multiple encoded items per performance entry' , ( ) => {
163+ it ( 'handles multiple encoded items per performance entry' , async ( ) => {
167164 const multiEncodeFn = vi . fn ( e => [
168165 `${ e . entryType } -item1` ,
169166 `${ e . entryType } item2` ,
@@ -176,56 +173,12 @@ describe('PerformanceObserverSink', () => {
176173 observer . subscribe ( ) ;
177174
178175 performance . mark ( 'test-mark' ) ;
176+ await awaitObserverCallback ( ) ;
179177 observer . flush ( ) ;
180178
181179 expect ( sink . getWrittenItems ( ) ) . toHaveLength ( 2 ) ;
182180 } ) ;
183181
184- it ( 'cursor logic prevents duplicate processing of performance entries' , ( ) => {
185- const observer = new PerformanceObserverSink ( options ) ;
186- observer . subscribe ( ) ;
187-
188- performance . mark ( 'first-mark' ) ;
189- performance . mark ( 'second-mark' ) ;
190- expect ( encode ) . not . toHaveBeenCalled ( ) ;
191- observer . flush ( ) ;
192- expect ( sink . getWrittenItems ( ) ) . toStrictEqual ( [
193- 'first-mark:mark' ,
194- 'second-mark:mark' ,
195- ] ) ;
196-
197- expect ( encode ) . toHaveBeenCalledTimes ( 2 ) ;
198- expect ( encode ) . toHaveBeenNthCalledWith (
199- 1 ,
200- expect . objectContaining ( { name : 'first-mark' } ) ,
201- ) ;
202- expect ( encode ) . toHaveBeenNthCalledWith (
203- 2 ,
204- expect . objectContaining ( { name : 'second-mark' } ) ,
205- ) ;
206-
207- performance . mark ( 'third-mark' ) ;
208- performance . measure ( 'first-measure' ) ;
209-
210- observer . flush ( ) ;
211- expect ( sink . getWrittenItems ( ) ) . toStrictEqual ( [
212- 'first-mark:mark' ,
213- 'second-mark:mark' ,
214- 'third-mark:mark' ,
215- 'first-measure:measure' ,
216- ] ) ;
217-
218- expect ( encode ) . toHaveBeenCalledTimes ( 4 ) ;
219- expect ( encode ) . toHaveBeenNthCalledWith (
220- 3 ,
221- expect . objectContaining ( { name : 'third-mark' } ) ,
222- ) ;
223- expect ( encode ) . toHaveBeenNthCalledWith (
224- 4 ,
225- expect . objectContaining ( { name : 'first-measure' } ) ,
226- ) ;
227- } ) ;
228-
229182 it ( 'throws error when subscribing with sink that is not open' , ( ) => {
230183 const closedSink = new MockSink ( ) ;
231184 const observer = new PerformanceObserverSink ( {
0 commit comments