@@ -2,15 +2,12 @@ import { expect, test } from '@playwright/test';
22import { waitForTransaction } from '@sentry-internal/test-utils' ;
33
44test ( 'captures a pageload transaction' , async ( { page } ) => {
5- // `pageload` transaction
65 const transactionPromise = waitForTransaction ( 'default-browser' , async transactionEvent => {
76 return ! ! transactionEvent ?. transaction && transactionEvent . contexts ?. trace ?. op === 'pageload' ;
87 } ) ;
98
109 await page . goto ( `/` ) ;
1110
12- // `waitForTransaction` hangs here because `transaction` (or `span`) event is not emitted,
13- // so the code past this line is never executed.
1411 const pageLoadTransaction = await transactionPromise ;
1512
1613 expect ( pageLoadTransaction ) . toEqual ( {
@@ -86,3 +83,36 @@ test('captures a pageload transaction', async ({ page }) => {
8683 type : 'transaction' ,
8784 } ) ;
8885} ) ;
86+
87+ test ( 'captures a navigation transaction' , async ( { page } ) => {
88+ page . on ( 'console' , msg => console . log ( msg . text ( ) ) ) ;
89+ const pageLoadTransactionPromise = waitForTransaction ( 'default-browser' , async transactionEvent => {
90+ return ! ! transactionEvent ?. transaction && transactionEvent . contexts ?. trace ?. op === 'pageload' ;
91+ } ) ;
92+
93+ const navigationTransactionPromise = waitForTransaction ( 'default-browser' , async transactionEvent => {
94+ return ! ! transactionEvent ?. transaction && transactionEvent . contexts ?. trace ?. op === 'navigation' ;
95+ } ) ;
96+
97+ await page . goto ( `/` ) ;
98+ await pageLoadTransactionPromise ;
99+
100+ const linkElement = page . locator ( 'id=navigation-link' ) ;
101+
102+ await linkElement . click ( ) ;
103+
104+ const navigationTransaction = await navigationTransactionPromise ;
105+
106+ expect ( navigationTransaction ) . toMatchObject ( {
107+ contexts : {
108+ trace : {
109+ op : 'navigation' ,
110+ origin : 'auto.navigation.browser' ,
111+ } ,
112+ } ,
113+ transaction : '/' ,
114+ transaction_info : {
115+ source : 'url' ,
116+ } ,
117+ } ) ;
118+ } ) ;
0 commit comments