From b40acf9e5951b05b78b6f2322b2bdafd8091f94e Mon Sep 17 00:00:00 2001 From: "daniel.solis" Date: Fri, 22 May 2026 17:45:47 -0600 Subject: [PATCH 1/2] fix(postman): pass language_id on Experiments page-content endpoints (#35780) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Variants tests in Experiments_Resource fire POST /api/v1/page/{id}/content without a language query param. Server-side PageResourceHelper.getPage() resolves the lookup language via WebAPILocator.getLanguageWebAPI().getLanguage(request) which falls back to APILocator.getLanguageAPI().getDefaultLanguage() — the LANG__404 sentinel (id=-1) in fresh test environments. The page was created earlier in the flow with languageId=1, so the (id, -1) lookup misses and the server returns HTTPPageAssetNotFoundException -> 404. Failure observed in run 26312707306: ERROR page.PageResource - HTMLPageAssetNotFoundException on PageResource.addContent, pageId: f41ac5d4f5a2e854e1d79ea6ca39df27 ... inside "Variants / Keep Content after change Layout to a Specific Variant / Add contetlet into DEFAULT variant" Adds `?language_id=1` (or `&language_id=1` when a query already exists) to the 5 URLs that target page-content endpoints without specifying language. Matches the test data — all relevant pages are created with languageId=1. Co-Authored-By: Claude Opus 4.7 (1M context) --- ...periments_Resource.postman_collection.json | 38 ++++++++++++++++--- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/dotcms-postman/src/main/resources/postman/Experiments_Resource.postman_collection.json b/dotcms-postman/src/main/resources/postman/Experiments_Resource.postman_collection.json index de2bd90e0063..6b30b70fe048 100644 --- a/dotcms-postman/src/main/resources/postman/Experiments_Resource.postman_collection.json +++ b/dotcms-postman/src/main/resources/postman/Experiments_Resource.postman_collection.json @@ -1393,7 +1393,7 @@ } }, "url": { - "raw": "{{serverURL}}/api/v1/page/{{page_version_keep_contentlet}}/content", + "raw": "{{serverURL}}/api/v1/page/{{page_version_keep_contentlet}}/content?language_id=1", "host": ["{{serverURL}}"], "path": [ "api", @@ -1401,6 +1401,12 @@ "page", "{{page_version_keep_contentlet}}", "content" + ], + "query": [ + { + "key": "language_id", + "value": "1" + } ] } }, @@ -1640,7 +1646,7 @@ } }, "url": { - "raw": "{{serverURL}}/api/v1/page/{{page_version_keep_contentlet}}/content?variantName=dotexperiment-{{experimentShortId}}-variant-1", + "raw": "{{serverURL}}/api/v1/page/{{page_version_keep_contentlet}}/content?variantName=dotexperiment-{{experimentShortId}}-variant-1&language_id=1", "host": ["{{serverURL}}"], "path": [ "api", @@ -1653,6 +1659,10 @@ { "key": "variantName", "value": "dotexperiment-{{experimentShortId}}-variant-1" + }, + { + "key": "language_id", + "value": "1" } ] } @@ -2371,7 +2381,7 @@ } }, "url": { - "raw": "{{serverURL}}/api/v1/page/{{add_contentlet_default_specific_variant_page_id}}/content", + "raw": "{{serverURL}}/api/v1/page/{{add_contentlet_default_specific_variant_page_id}}/content?language_id=1", "host": ["{{serverURL}}"], "path": [ "api", @@ -2379,6 +2389,12 @@ "page", "{{add_contentlet_default_specific_variant_page_id}}", "content" + ], + "query": [ + { + "key": "language_id", + "value": "1" + } ] } }, @@ -2692,7 +2708,7 @@ } }, "url": { - "raw": "{{serverURL}}/api/v1/page/{{add_contentlet_default_specific_variant_page_id}}/content", + "raw": "{{serverURL}}/api/v1/page/{{add_contentlet_default_specific_variant_page_id}}/content?language_id=1", "host": ["{{serverURL}}"], "path": [ "api", @@ -2700,6 +2716,12 @@ "page", "{{add_contentlet_default_specific_variant_page_id}}", "content" + ], + "query": [ + { + "key": "language_id", + "value": "1" + } ] } }, @@ -12818,7 +12840,7 @@ } }, "url": { - "raw": "{{serverURL}}/api/v1/page/{{page_version_spanish_content}}/content", + "raw": "{{serverURL}}/api/v1/page/{{page_version_spanish_content}}/content?language_id=1", "host": ["{{serverURL}}"], "path": [ "api", @@ -12826,6 +12848,12 @@ "page", "{{page_version_spanish_content}}", "content" + ], + "query": [ + { + "key": "language_id", + "value": "1" + } ] } }, From ec2f5addc5fc8417b79017ca0d9d1ad9b02520d2 Mon Sep 17 00:00:00 2001 From: "daniel.solis" Date: Fri, 22 May 2026 19:04:24 -0600 Subject: [PATCH 2/2] fix(postman): add languageId=1 to PagesResourceTests Create Test Page body MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Same root cause as the Experiments fixes in this PR — PUT /api/v1/workflow/actions/default/fire/PUBLISH without a languageId in the body lets the server fall back to getDefaultLanguage() (LANG__404 sentinel id=-1 in fresh test envs), which then FK-fails on contentlet insert. Single failing test in CI: "Live page cache invalidation / Create Test Page". Co-Authored-By: Claude Opus 4.7 (1M context) --- .../src/main/resources/postman/PagesResourceTests.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotcms-postman/src/main/resources/postman/PagesResourceTests.json b/dotcms-postman/src/main/resources/postman/PagesResourceTests.json index 4c2ccf96bc44..d720987620d3 100644 --- a/dotcms-postman/src/main/resources/postman/PagesResourceTests.json +++ b/dotcms-postman/src/main/resources/postman/PagesResourceTests.json @@ -64,7 +64,7 @@ "header": [], "body": { "mode": "raw", - "raw": "{\n\t\n\t\"contentlet\": {\n\t\t\"contentType\":\"htmlpageasset\",\n \"title\":\"testPageInvalidation{{$timestamp}}\",\n \"url\":\"testPageInvalidation{{$timestamp}}\",\n \"hostFolder\":\"{{hostname}}\",\n \"template\":\"SYSTEM_TEMPLATE\",\n \"friendlyName\":\"testPageInvalidation{{$timestamp}}\",\n \"cachettl\":0\n\t\t\n\t}\n}", + "raw": "{\n\t\n\t\"contentlet\": {\n\t\t\"contentType\":\"htmlpageasset\",\n \"title\":\"testPageInvalidation{{$timestamp}}\",\n \"url\":\"testPageInvalidation{{$timestamp}}\",\n \"hostFolder\":\"{{hostname}}\",\n \"template\":\"SYSTEM_TEMPLATE\",\n \"friendlyName\":\"testPageInvalidation{{$timestamp}}\",\n \"cachettl\":0,\n \"languageId\":1\n\t\t\n\t}\n}", "options": { "raw": { "language": "json"