@@ -53,3 +53,148 @@ test('Creates a navigation transaction for app router routes', async ({ page })
5353  expect ( await  clientNavigationTransactionPromise ) . toBeDefined ( ) ; 
5454  expect ( await  serverComponentTransactionPromise ) . toBeDefined ( ) ; 
5555} ) ; 
56+ 
57+ test ( 'Creates a navigation transaction for `router.push()`' ,  async  ( {  page } )  =>  { 
58+   const  navigationTransactionPromise  =  waitForTransaction ( 'nextjs-app-dir' ,  transactionEvent  =>  { 
59+     return  ( 
60+       transactionEvent ?. transaction  ===  `/navigation/42/router-push`  && 
61+       transactionEvent . contexts ?. trace ?. op  ===  'navigation'  && 
62+       transactionEvent . contexts . trace . data ?. [ 'navigation.type' ]  ===  'router.push' 
63+     ) ; 
64+   } ) ; 
65+ 
66+   await  page . goto ( '/navigation' ) ; 
67+   await  page . waitForTimeout ( 3000 ) ; 
68+   await  page . getByText ( 'router.push()' ) . click ( ) ; 
69+ 
70+   expect ( await  navigationTransactionPromise ) . toBeDefined ( ) ; 
71+ } ) ; 
72+ 
73+ test ( 'Creates a navigation transaction for `router.replace()`' ,  async  ( {  page } )  =>  { 
74+   const  navigationTransactionPromise  =  waitForTransaction ( 'nextjs-app-dir' ,  transactionEvent  =>  { 
75+     return  ( 
76+       transactionEvent ?. transaction  ===  `/navigation/42/router-replace`  && 
77+       transactionEvent . contexts ?. trace ?. op  ===  'navigation'  && 
78+       transactionEvent . contexts . trace . data ?. [ 'navigation.type' ]  ===  'router.replace' 
79+     ) ; 
80+   } ) ; 
81+ 
82+   await  page . goto ( '/navigation' ) ; 
83+   await  page . waitForTimeout ( 3000 ) ; 
84+   await  page . getByText ( 'router.replace()' ) . click ( ) ; 
85+ 
86+   expect ( await  navigationTransactionPromise ) . toBeDefined ( ) ; 
87+ } ) ; 
88+ 
89+ test ( 'Creates a navigation transaction for `router.back()`' ,  async  ( {  page } )  =>  { 
90+   const  navigationTransactionPromise  =  waitForTransaction ( 'nextjs-app-dir' ,  transactionEvent  =>  { 
91+     return  ( 
92+       transactionEvent ?. transaction  ===  `/navigation/1337/router-back`  && 
93+       transactionEvent . contexts ?. trace ?. op  ===  'navigation' 
94+     ) ; 
95+   } ) ; 
96+ 
97+   await  page . goto ( '/navigation/1337/router-back' ) ; 
98+   await  page . waitForTimeout ( 3000 ) ; 
99+   await  page . getByText ( 'Go back home' ) . click ( ) ; 
100+   await  page . waitForTimeout ( 3000 ) ; 
101+   await  page . getByText ( 'router.back()' ) . click ( ) ; 
102+ 
103+   expect ( await  navigationTransactionPromise ) . toMatchObject ( { 
104+     contexts : { 
105+       trace : { 
106+         data : { 
107+           'navigation.type' : 'router.back' , 
108+         } , 
109+       } , 
110+     } , 
111+   } ) ; 
112+ } ) ; 
113+ 
114+ test ( 'Creates a navigation transaction for `router.forward()`' ,  async  ( {  page } )  =>  { 
115+   const  navigationTransactionPromise  =  waitForTransaction ( 'nextjs-app-dir' ,  transactionEvent  =>  { 
116+     return  ( 
117+       transactionEvent ?. transaction  ===  `/navigation/42/router-push`  && 
118+       transactionEvent . contexts ?. trace ?. op  ===  'navigation'  && 
119+       transactionEvent . contexts . trace . data ?. [ 'navigation.type' ]  ===  'router.forward' 
120+     ) ; 
121+   } ) ; 
122+ 
123+   await  page . goto ( '/navigation' ) ; 
124+   await  page . waitForTimeout ( 3000 ) ; 
125+   await  page . getByText ( 'router.push()' ) . click ( ) ; 
126+   await  page . waitForTimeout ( 3000 ) ; 
127+   await  page . goBack ( ) ; 
128+   await  page . waitForTimeout ( 3000 ) ; 
129+   await  page . getByText ( 'router.forward()' ) . click ( ) ; 
130+ 
131+   expect ( await  navigationTransactionPromise ) . toBeDefined ( ) ; 
132+ } ) ; 
133+ 
134+ test ( 'Creates a navigation transaction for `<Link />`' ,  async  ( {  page } )  =>  { 
135+   const  navigationTransactionPromise  =  waitForTransaction ( 'nextjs-app-dir' ,  transactionEvent  =>  { 
136+     return  ( 
137+       transactionEvent ?. transaction  ===  `/navigation/42/link`  && 
138+       transactionEvent . contexts ?. trace ?. op  ===  'navigation'  && 
139+       transactionEvent . contexts . trace . data ?. [ 'navigation.type' ]  ===  'router.push' 
140+     ) ; 
141+   } ) ; 
142+ 
143+   await  page . goto ( '/navigation' ) ; 
144+   await  page . getByText ( 'Normal Link' ) . click ( ) ; 
145+ 
146+   expect ( await  navigationTransactionPromise ) . toBeDefined ( ) ; 
147+ } ) ; 
148+ 
149+ test ( 'Creates a navigation transaction for `<Link replace />`' ,  async  ( {  page } )  =>  { 
150+   const  navigationTransactionPromise  =  waitForTransaction ( 'nextjs-app-dir' ,  transactionEvent  =>  { 
151+     return  ( 
152+       transactionEvent ?. transaction  ===  `/navigation/42/link-replace`  && 
153+       transactionEvent . contexts ?. trace ?. op  ===  'navigation'  && 
154+       transactionEvent . contexts . trace . data ?. [ 'navigation.type' ]  ===  'router.replace' 
155+     ) ; 
156+   } ) ; 
157+ 
158+   await  page . goto ( '/navigation' ) ; 
159+   await  page . waitForTimeout ( 3000 ) ; 
160+   await  page . getByText ( 'Link Replace' ) . click ( ) ; 
161+ 
162+   expect ( await  navigationTransactionPromise ) . toBeDefined ( ) ; 
163+ } ) ; 
164+ 
165+ test ( 'Creates a navigation transaction for browser-back' ,  async  ( {  page } )  =>  { 
166+   const  navigationTransactionPromise  =  waitForTransaction ( 'nextjs-app-dir' ,  transactionEvent  =>  { 
167+     return  ( 
168+       transactionEvent ?. transaction  ===  `/navigation/42/browser-back`  && 
169+       transactionEvent . contexts ?. trace ?. op  ===  'navigation'  && 
170+       transactionEvent . contexts . trace . data ?. [ 'navigation.type' ]  ===  'browser.popstate' 
171+     ) ; 
172+   } ) ; 
173+ 
174+   await  page . goto ( '/navigation/42/browser-back' ) ; 
175+   await  page . waitForTimeout ( 3000 ) ; 
176+   await  page . getByText ( 'Go back home' ) . click ( ) ; 
177+   await  page . waitForTimeout ( 3000 ) ; 
178+   await  page . goBack ( ) ; 
179+ 
180+   expect ( await  navigationTransactionPromise ) . toBeDefined ( ) ; 
181+ } ) ; 
182+ 
183+ test ( 'Creates a navigation transaction for browser-forward' ,  async  ( {  page } )  =>  { 
184+   const  navigationTransactionPromise  =  waitForTransaction ( 'nextjs-app-dir' ,  transactionEvent  =>  { 
185+     return  ( 
186+       transactionEvent ?. transaction  ===  `/navigation/42/router-push`  && 
187+       transactionEvent . contexts ?. trace ?. op  ===  'navigation'  && 
188+       transactionEvent . contexts . trace . data ?. [ 'navigation.type' ]  ===  'browser.popstate' 
189+     ) ; 
190+   } ) ; 
191+ 
192+   await  page . goto ( '/navigation' ) ; 
193+   await  page . getByText ( 'router.push()' ) . click ( ) ; 
194+   await  page . waitForTimeout ( 3000 ) ; 
195+   await  page . goBack ( ) ; 
196+   await  page . waitForTimeout ( 3000 ) ; 
197+   await  page . goForward ( ) ; 
198+ 
199+   expect ( await  navigationTransactionPromise ) . toBeDefined ( ) ; 
200+ } ) ; 
0 commit comments