diff --git a/packages/nextjs/test/integration/pages/withInitialProps.tsx b/packages/nextjs/test/integration/pages/withInitialProps.tsx new file mode 100644 index 000000000000..01b557bdd09f --- /dev/null +++ b/packages/nextjs/test/integration/pages/withInitialProps.tsx @@ -0,0 +1,7 @@ +const WithInitialPropsPage = ({ data }: { data: string }) =>

WithInitialPropsPage {data}

; + +WithInitialPropsPage.getInitialProps = () => { + return { data: '[some getInitialProps data]' }; +}; + +export default WithInitialPropsPage; diff --git a/packages/nextjs/test/integration/pages/withServerSideProps.tsx b/packages/nextjs/test/integration/pages/withServerSideProps.tsx index e0220a577586..486313a9b9c3 100644 --- a/packages/nextjs/test/integration/pages/withServerSideProps.tsx +++ b/packages/nextjs/test/integration/pages/withServerSideProps.tsx @@ -1,7 +1,7 @@ const WithServerSidePropsPage = ({ data }: { data: string }) =>

WithServerSidePropsPage {data}

; export async function getServerSideProps() { - return { props: { data: '[some serverSidePropsData data]' } }; + return { props: { data: '[some getServerSideProps data]' } }; } export default WithServerSidePropsPage; diff --git a/packages/nextjs/test/integration/test/client/tracingClientGetInitialProps.js b/packages/nextjs/test/integration/test/client/tracingClientGetInitialProps.js new file mode 100644 index 000000000000..90d7eeceef4a --- /dev/null +++ b/packages/nextjs/test/integration/test/client/tracingClientGetInitialProps.js @@ -0,0 +1,45 @@ +const { + expectRequestCount, + isTransactionRequest, + expectTransaction, + extractEnvelopeFromRequest, +} = require('../utils/client'); +const assert = require('assert').strict; + +module.exports = async ({ page, url, requests }) => { + await page.goto(`${url}/withInitialProps`); + await page.waitForRequest(isTransactionRequest); + + const transactionEnvelope = extractEnvelopeFromRequest(requests.transactions[0]); + + expectTransaction(requests.transactions[0], { + contexts: { + trace: { + op: 'pageload', + }, + }, + }); + + const nextDataTag = await page.waitForSelector('#__NEXT_DATA__'); + const nextDataTagValue = JSON.parse(await nextDataTag.evaluate(tag => tag.innerText)); + + assert.strictEqual( + nextDataTagValue.props.pageProps.data, + '[some getInitialProps data]', + 'Returned data must contain original data returned from getInitialProps.', + ); + + assert.strictEqual( + nextDataTagValue.props.pageProps._sentryTraceData.split('-')[0], + transactionEnvelope.envelopeHeader.trace.trace_id, + 'Trace id in envelope header must be the same as in trace parent data returned from getInitialProps', + ); + + assert.strictEqual( + nextDataTagValue.props.pageProps._sentryBaggage.match(/sentry-trace_id=([a-f0-9]*),/)[1], + transactionEnvelope.envelopeHeader.trace.trace_id, + 'Trace id in envelope header must be the same as in baggage returned from getInitialProps', + ); + + await expectRequestCount(requests, { transactions: 1 }); +}; diff --git a/packages/nextjs/test/integration/test/client/tracingClientGetServerSideProps.js b/packages/nextjs/test/integration/test/client/tracingClientGetServerSideProps.js index 4b3f4a5b8337..0f9ae8e07bac 100644 --- a/packages/nextjs/test/integration/test/client/tracingClientGetServerSideProps.js +++ b/packages/nextjs/test/integration/test/client/tracingClientGetServerSideProps.js @@ -25,7 +25,7 @@ module.exports = async ({ page, url, requests }) => { assert.strictEqual( nextDataTagValue.props.pageProps.data, - '[some serverSidePropsData data]', + '[some getServerSideProps data]', 'Returned data must contain original data returned from getServerSideProps.', );