@@ -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