fix(web-app-docs): let the consumers wait for the build instead of the deploy

0dd8dbbb89 added a second task that polls /deployed/<lang>/ for 200 because the warm-up only queues the build and the deploy walked on while the sites were still building. Nothing depends on that wait: it is the last task of the role, no role declares a dependency on web-app-docs, the http_status healthcheck accepts any 2xx or 3xx so the 302 of / and the 202 building page both pass, and files/test/test.sh never touches the built site.

Its three real consumers each carry their own poll, and one of them, test-front-page.js, asserts the building page on purpose. The deploy-side budget was 120 retries at 30s while test-languages.js allows 5300s for the same URL, so the shorter ceiling was the one that broke, and it broke nine CI jobs at 3655 to 3714 seconds against 3600.

Two consumers were sized for a world where the deploy had already waited and only the remainder was theirs: test-yaml-page.js polled 2700s and the CLI extract.py 2400s, both under the 3249s a measured run needed for the English and German sites together (docs container log, 11:41:13 queued, 12:35:22 served). Both now get the budget the slowest consumer already had.

This restores the behaviour 0dd8dbbb89 set out to remove. That commit named no failure the walking-on caused, and a deploy that reports success while its own site still answers the building page is the documented design of server.py. The cost is that a production deploy no longer verifies its output; in CI the specs do.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
kevinveenbirkenbachandClaude Opus 5 committed 2026-10-13 22:35:35 +02:00
1 parent 6ce27c1aae
commit 63e9792747
3 files changed
+3 -15

No files matched your search

@@ -8,13 +8,13 @@ const LATER_KEY = "dns_opt";
exports.register = function (shared) {
test("a yaml source page shows the file as one highlighted block", async ({ page, request }) => {
test.setTimeout(resolveTimeout(3_000_000)); // the English Sphinx build of the deployed working tree
test.setTimeout(resolveTimeout(5_400_000)); // the English Sphinx build of the deployed working tree
await shared.pollStatus(
request,
`${shared.appBaseUrl}${YAML_PAGE}`,
200,
"Expected the deployed YAML page to finish building before it is asserted",
2_700_000,
5_300_000,
);
const response = await gotoOnion(page, `${shared.appBaseUrl}${YAML_PAGE}`);
-12
View File
@@ -70,15 +70,3 @@
retries: 12
delay: 10
changed_when: false
- name: "⏳ Wait for the preloaded sites of '{{ application_id }}'"
uri_retry:
url: "{{ DOCS_LOCAL_BASE_URL }}/deployed/{{ item }}"
status_code: [200]
timeout: "{{ lookup('timeout', 30) | int }}"
loop: "{{ DOCS_I18N_PRELOAD_PATHS }}"
register: docs_deployed_built
until: docs_deployed_built is not failed
retries: 120
delay: 30
changed_when: false
+1 -1
View File
@@ -4,4 +4,4 @@ DOCS_TEST_DOMAIN={{ DOMAIN_PRIMARY }}
DOCS_TEST_MODE={{ DEPLOYMENT_MODE }}
DOCS_TEST_ROLE={{ lookup('guide_role', application_id) }}
DOCS_TEST_SRC_DIR={{ lookup('path_absolute') }}
DOCS_TEST_TIMEOUT={{ lookup('timeout', 2400) | int }}
DOCS_TEST_TIMEOUT={{ lookup('timeout', 5400) | int }}