From 29a5658b01e47f134a2cdad6269e135d914617c8 Mon Sep 17 00:00:00 2001 From: Disco DeDisco Date: Sun, 29 Mar 2026 22:08:59 -0400 Subject: [PATCH] 'channels' tag now also moved to sequential FT group in pipeline; role-select.js ensures Tray.close() before turn advances so as not to obstruct next gamer selection; RoleSelectSpec.js asserrts this functionality --- .woodpecker.yaml | 2 +- src/apps/epic/static/apps/epic/role-select.js | 3 +++ src/static_src/tests/RoleSelectSpec.js | 8 ++++++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/.woodpecker.yaml b/.woodpecker.yaml index c3fce45..f415fd8 100644 --- a/.woodpecker.yaml +++ b/.woodpecker.yaml @@ -38,6 +38,7 @@ steps: - cd ./src - python manage.py collectstatic --noinput - python manage.py test functional_tests --tag=two-browser + - python manage.py test functional_tests --tag=channels when: - event: push @@ -56,7 +57,6 @@ steps: - cd ./src - python manage.py collectstatic --noinput - python manage.py test functional_tests --parallel --exclude-tag=channels --exclude-tag=two-browser - - python manage.py test functional_tests --tag=channels when: - event: push diff --git a/src/apps/epic/static/apps/epic/role-select.js b/src/apps/epic/static/apps/epic/role-select.js index 5e1a9ad..56601b0 100644 --- a/src/apps/epic/static/apps/epic/role-select.js +++ b/src/apps/epic/static/apps/epic/role-select.js @@ -163,6 +163,9 @@ var RoleSelect = (function () { var invSlot = document.getElementById("id_inv_role_card"); if (invSlot) invSlot.innerHTML = ""; + // Close tray so it doesn't obscure the next player's card-stack + if (typeof Tray !== "undefined") Tray.close(); + var stack = document.querySelector(".card-stack[data-user-slots]"); if (stack) { // Sync starter-roles from server so the fan reflects actual DB state diff --git a/src/static_src/tests/RoleSelectSpec.js b/src/static_src/tests/RoleSelectSpec.js index f87ea7d..ee2db2a 100644 --- a/src/static_src/tests/RoleSelectSpec.js +++ b/src/static_src/tests/RoleSelectSpec.js @@ -188,6 +188,14 @@ describe("RoleSelect", () => { testDiv.appendChild(stack); }); + it("calls Tray.close() on turn change", () => { + spyOn(Tray, "close"); + window.dispatchEvent(new CustomEvent("room:turn_changed", { + detail: { active_slot: 2 } + })); + expect(Tray.close).toHaveBeenCalled(); + }); + it("moves .active to the newly active seat", () => { window.dispatchEvent(new CustomEvent("room:turn_changed", { detail: { active_slot: 2 }