Skip to content

Commit

Permalink
Add clientside getInitialProps integration test
Browse files Browse the repository at this point in the history
  • Loading branch information
lforst committed Aug 31, 2022
1 parent 3f192f7 commit 5a76709
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 2 deletions.
7 changes: 7 additions & 0 deletions packages/nextjs/test/integration/pages/withInitialProps.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
const WithInitialPropsPage = ({ data }: { data: string }) => <h1>WithInitialPropsPage {data}</h1>;

WithInitialPropsPage.getInitialProps = () => {
return { data: '[some getInitialProps data]' };
};

export default WithInitialPropsPage;
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const WithServerSidePropsPage = ({ data }: { data: string }) => <h1>WithServerSidePropsPage {data}</h1>;

export async function getServerSideProps() {
return { props: { data: '[some serverSidePropsData data]' } };
return { props: { data: '[some getServerSideProps data]' } };
}

export default WithServerSidePropsPage;
Original file line number Diff line number Diff line change
@@ -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 });
};
Original file line number Diff line number Diff line change
Expand Up @@ -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.',
);

Expand Down

0 comments on commit 5a76709

Please sign in to comment.