diff --git a/src/components/Form.jsx b/src/components/Form.jsx index 0fbf47d97..85697e3c2 100644 --- a/src/components/Form.jsx +++ b/src/components/Form.jsx @@ -350,16 +350,18 @@ const Form = () => { ) : null; if (state.startingError) throw state.startingError; + + let startPageUrl = introductionPageContent ? 'introductie' : 'startpagina'; const extraStartUrlParams = {}; - if (initialDataReference) extraStartUrlParams.initial_data_reference = initialDataReference; + if (initialDataReference) { + extraStartUrlParams.initial_data_reference = initialDataReference; + startPageUrl = `${startPageUrl}?${new URLSearchParams(extraStartUrlParams).toString()}`; + } // Route the correct page based on URL const router = ( - } - /> + } /> { const requestBody = await startSubmissionRequest.json(); expect(requestBody.initialDataReference).toBe('foo'); }); + +// Regression test for https://github.com/open-formulieren/open-forms/issues/4918 +test.each([ + { + introductionPageContent: '', + buttonText: 'Login with DigiD', + expectedUrl: + 'http://mock-digid.nl/login?next=http%3A%2F%2Flocalhost%2F%3F_start%3D1%26initial_data_reference%3Dfoo', + }, + { + introductionPageContent: 'foo', + buttonText: 'Continue', + expectedUrl: '/startpagina?initial_data_reference=foo', + }, +])( + 'Redirect to start page or introduction page should preserve initial_data_reference param', + async ({introductionPageContent, buttonText, expectedUrl}) => { + mswServer.use(mockAnalyticsToolConfigGet(), mockSubmissionPost(), mockSubmissionStepGet()); + + render( + + ); + + const loginLink = await screen.findByRole('link', {name: buttonText}); + expect(loginLink).toHaveAttribute('href', expectedUrl); + } +);