You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tooling.apache.org by ak...@apache.org on 2026/05/22 03:03:54 UTC

(tooling-trusted-releases) 04/05: Acknowledge concern groups in vote/announce e2e fixtures

This is an automated email from the ASF dual-hosted git repository.

andrewmusselman pushed a commit to branch fix-broken-e2e-tests
in repository https://gitbox.apache.org/repos/asf/tooling-trusted-releases.git

commit 495f2f2ea035b3588f513582beb10040dc33c4da
Author: Andrew Musselman <ak...@apache.org>
AuthorDate: Thu May 21 21:42:51 2026 +0000

    Acknowledge concern groups in vote/announce e2e fixtures
    
    The vote_context, announce_context, and auto_archive_context fixtures
    all build a release, navigate to /voting/<project>/<version>, and click
    "Send vote email" expecting a redirect to /vote/<project>/<version>.
    On main the redirect never arrives and Playwright times out after 30s,
    producing 28 fixture errors across e2e/vote/ and e2e/announce/.
    
    The handler (atr/post/voting.py::selected) requires every concern group
    raised by the configured checks to be acknowledged via the
    concerns_noted form field before it will start the vote:
    
        missing = util.missing_concern_groups(concern_groups,
                                              start_voting_form.concerns_noted)
        if missing:
            return await session.form_error(
                "concerns_noted",
                util.concern_acknowledgement_error(missing),
            )
    
    For the test project this currently produces:
    
        Error: Review and acknowledge every current concern group before
        starting the vote: Rat Check
    
    The handler returns form_error, which redirects back to the same
    /voting/ URL, so the test sees no navigation and the wait_for_url
    times out.
    
    Tick every concerns_noted checkbox (rendered by
    render.html_concerns_noted_checkboxes with name="concerns_noted")
    before clicking "Send vote email". This matches the manual flow a
    release manager would follow: review each concern, then acknowledge
    it. With no checks raising concerns the loop is a no-op, so the change
    is safe for releases that have no concerns.
    
    Applied to all three call sites that drive the vote-start form:
    - tests/e2e/vote/conftest.py::vote_context
    - tests/e2e/announce/conftest.py::announce_context
    - tests/e2e/announce/conftest.py::_run_release_to_finish (used by
      auto_archive_context)
---
 tests/e2e/announce/conftest.py | 8 ++++++++
 tests/e2e/vote/conftest.py     | 7 +++++++
 2 files changed, 15 insertions(+)

diff --git a/tests/e2e/announce/conftest.py b/tests/e2e/announce/conftest.py
index 4984b472..fccb35f0 100644
--- a/tests/e2e/announce/conftest.py
+++ b/tests/e2e/announce/conftest.py
@@ -80,6 +80,10 @@ def announce_context(browser: Browser) -> Generator[BrowserContext]:
     page.wait_for_load_state()
 
     page.locator("input#vote_duration").fill("0")
+    # Acknowledge every concern group raised by the checks (e.g. Rat Check)
+    # so the vote-start form accepts the submission.
+    for _box in page.locator('input[name="concerns_noted"]').all():
+        _box.check()
     page.get_by_role("button", name="Send vote email").click()
     page.wait_for_url(f"**/vote/{PROJECT_KEY}/{VERSION_KEY}")
 
@@ -219,6 +223,10 @@ def _run_release_to_finish(context: BrowserContext, page: Page, version: str, op
     page.wait_for_load_state()
 
     page.locator("input#vote_duration").fill("0")
+    # Acknowledge every concern group raised by the checks (e.g. Rat Check)
+    # so the vote-start form accepts the submission.
+    for _box in page.locator('input[name="concerns_noted"]').all():
+        _box.check()
     page.get_by_role("button", name="Send vote email").click()
     page.wait_for_url(f"**/vote/{PROJECT_KEY}/{version}")
 
diff --git a/tests/e2e/vote/conftest.py b/tests/e2e/vote/conftest.py
index 69383d0d..6626edb5 100644
--- a/tests/e2e/vote/conftest.py
+++ b/tests/e2e/vote/conftest.py
@@ -78,6 +78,13 @@ def vote_context(browser: Browser) -> Generator[BrowserContext]:
     page.locator('a[title="Start a vote on this draft"]').click()
     page.wait_for_load_state()
 
+    # Acknowledge every concern group raised by the checks (e.g. Rat Check)
+    # so the vote-start form accepts the submission. Without this, the
+    # handler returns to the form with an "acknowledge every current concern
+    # group" error and the redirect to /vote/... never happens.
+    for _box in page.locator('input[name="concerns_noted"]').all():
+        _box.check()
+
     page.get_by_role("button", name="Send vote email").click()
     page.wait_for_url(f"**/vote/{PROJECT_KEY}/{VERSION_KEY}")
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@tooling.apache.org
For additional commands, e-mail: commits-help@tooling.apache.org