diff --git a/changelog/entries/unreleased/bug/3444_fix_urlresolution_query_param_null_check.json b/changelog/entries/unreleased/bug/3444_fix_urlresolution_query_param_null_check.json new file mode 100644 index 000000000..2afe28bb0 --- /dev/null +++ b/changelog/entries/unreleased/bug/3444_fix_urlresolution_query_param_null_check.json @@ -0,0 +1,7 @@ +{ + "type": "bug", + "message": "Fixed null check for query parameters in link URL generation", + "issue_number": 3444, + "bullet_points": [], + "created_at": "2025-02-17" +} diff --git a/e2e-tests/tests/builder/builderPage.spec.ts b/e2e-tests/tests/builder/builderPage.spec.ts index ce241c6c1..4785e6061 100644 --- a/e2e-tests/tests/builder/builderPage.spec.ts +++ b/e2e-tests/tests/builder/builderPage.spec.ts @@ -110,6 +110,7 @@ test.describe("Builder page test suite", () => { await expect(page.locator(".box__title").getByText("Page")).toBeHidden(); await page.getByText('Click to create an element').click(); await page.getByText('Link A link to page/URL').click(); + await page.getByLabel('my_param=').fill("foo") await page.getByRole('complementary').getByRole('textbox').click(); await page.getByRole('complementary').getByRole('textbox').locator('div').first().fill('linkim'); await page.locator('a').filter({hasText: 'Make a choice'}).click(); @@ -120,7 +121,7 @@ test.describe("Builder page test suite", () => { await page.getByText('my_param', { exact: true }).first().click(); await page.click('body') await expect(page.getByRole('link', {name: 'linkim'})).toHaveAttribute( - 'href', /\?my_param=null/); + 'href', /\?my_param=foo/); }); }); diff --git a/web-frontend/modules/builder/utils/urlResolution.js b/web-frontend/modules/builder/utils/urlResolution.js index 89b6b89c1..363aa2326 100644 --- a/web-frontend/modules/builder/utils/urlResolution.js +++ b/web-frontend/modules/builder/utils/urlResolution.js @@ -67,6 +67,7 @@ export default function resolveElementUrl( .map(({ name, value }) => { if (!value) return null const resolvedValue = resolveFormula(value) + if (!resolvedValue && String(resolvedValue) !== '0') return null return `${encodeURIComponent(name)}=${encodeURIComponent( resolvedValue )}`