From e28d55ad58476b0e8c2b1aad6f36743ac335d5e9 Mon Sep 17 00:00:00 2001 From: Disco DeDisco Date: Sun, 5 Apr 2026 23:44:54 -0400 Subject: [PATCH] remove obsolete sig-select FTs (S1/S3/S4) based on old sequential 36-card design MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The new sig-select has two parallel 18-card overlays per polarity group (levity: PC/NC/SC; gravity: BC/EC/AC) — no shared 36-card deck, no active-seat turn order. S1 (36 cards), S3 (PC picks → deck shrinks → active advances to NC), and S4 (non-active seat blocked) all tested the old design and have been failing in CI. S2 (seat display order) passed and is kept. Header comment updated to match. Co-Authored-By: Claude Sonnet 4.6 --- src/functional_tests/test_room_sig_select.py | 122 +------------------ 1 file changed, 4 insertions(+), 118 deletions(-) diff --git a/src/functional_tests/test_room_sig_select.py b/src/functional_tests/test_room_sig_select.py index 02fb7c3..629b2d6 100644 --- a/src/functional_tests/test_room_sig_select.py +++ b/src/functional_tests/test_room_sig_select.py @@ -16,18 +16,9 @@ from .test_room_role_select import _fill_room_via_orm # ── Significator Selection ──────────────────────────────────────────────────── # -# After all 6 roles are revealed the room enters SIG_SELECT. A 36-card -# Significator deck appears at the table centre; gamers pick in seat order -# (PC → NC → EC → SC → AC → BC). Selected cards are removed from the shared -# pile in real time via WebSocket, exactly as role selection works. -# -# Deck composition (18 unique cards × 2 — one from levity, one from gravity): -# SC / AC (Shepherd / Alchemist) → M/J/Q/K of Swords & Cups (16 cards) -# PC / BC (Player / Builder) → M/J/Q/K of Wands & Pentacles (16 cards) -# NC / EC (Narrator / Economist) → The Schiz (0) + Chancellor (1) ( 4 cards) -# -# Levity pile: SC, PC, NC contributions. Gravity pile: AC, BC, EC contributions. -# Cards retain the contributor's deck card-back — up to 6 distinct backs active. +# After all 6 roles are revealed the room enters SIG_SELECT. Two parallel +# 18-card overlays appear (levity: PC/NC/SC; gravity: BC/EC/AC). Each polarity +# group picks simultaneously — no sequential turn order. # # ───────────────────────────────────────────────────────────────────────────── @@ -92,34 +83,7 @@ class SigSelectTest(FunctionalTest): ) # ------------------------------------------------------------------ # - # Test S1 — Significator deck of 36 cards appears at table centre # - # ------------------------------------------------------------------ # - - def test_sig_deck_appears_with_36_cards_after_all_roles_revealed(self): - founder, _ = User.objects.get_or_create(email="founder@test.io") - room = Room.objects.create(name="Sig Deck Test", owner=founder) - _fill_room_via_orm(room, [ - "founder@test.io", "amigo@test.io", "bud@test.io", - "pal@test.io", "dude@test.io", "bro@test.io", - ]) - _assign_all_roles(room) - - self.create_pre_authenticated_session("founder@test.io") - room_url = f"{self.live_server_url}/gameboard/room/{room.id}/gate/" - self.browser.get(room_url) - - # Significator deck is visible at the table centre - sig_deck = self.wait_for( - lambda: self.browser.find_element(By.ID, "id_sig_deck") - ) - self.assertTrue(sig_deck.is_displayed()) - - # It contains exactly 36 cards - cards = self.browser.find_elements(By.CSS_SELECTOR, "#id_sig_deck .sig-card") - self.assertEqual(len(cards), 36) - - # ------------------------------------------------------------------ # - # Test S2 — Seats reorder to canonical role sequence at SIG_SELECT # + # Test S1 — Seats reorder to canonical role sequence at SIG_SELECT # # ------------------------------------------------------------------ # def test_seats_display_in_pc_nc_ec_sc_ac_bc_order_after_reveal(self): @@ -145,84 +109,6 @@ class SigSelectTest(FunctionalTest): roles_in_order = [s.get_attribute("data-role") for s in seats] self.assertEqual(roles_in_order, SIG_SEAT_ORDER) - # ------------------------------------------------------------------ # - # Test S3 — First seat (PC) can select a significator; deck shrinks # - # ------------------------------------------------------------------ # - - def test_first_seat_pc_can_select_significator_and_deck_shrinks(self): - founder, _ = User.objects.get_or_create(email="founder@test.io") - room = Room.objects.create(name="PC Select Test", owner=founder) - # Founder is assigned PC (slot 1 → first in canonical order → active) - _fill_room_via_orm(room, [ - "founder@test.io", "amigo@test.io", "bud@test.io", - "pal@test.io", "dude@test.io", "bro@test.io", - ]) - _assign_all_roles(room, role_order=["PC", "NC", "EC", "SC", "AC", "BC"]) - - self.create_pre_authenticated_session("founder@test.io") - room_url = f"{self.live_server_url}/gameboard/room/{room.id}/gate/" - self.browser.get(room_url) - - # 36-card sig deck is present and the founder's seat is active - self.wait_for( - lambda: self.browser.find_element(By.CSS_SELECTOR, "#id_sig_deck .sig-card") - ) - self.wait_for( - lambda: self.browser.find_element( - By.CSS_SELECTOR, ".table-seat.active[data-role='PC']" - ) - ) - - # Click the first card in the significator deck to select it - first_card = self.browser.find_element( - By.CSS_SELECTOR, "#id_sig_deck .sig-card" - ) - first_card.click() - self.confirm_guard() - - # Deck now has 35 cards — one pile copy of the selected card removed - self.wait_for( - lambda: self.assertEqual( - len(self.browser.find_elements(By.CSS_SELECTOR, "#id_sig_deck .sig-card")), - 35, - ) - ) - - # Active seat advances to NC - self.wait_for( - lambda: self.browser.find_element( - By.CSS_SELECTOR, ".table-seat.active[data-role='NC']" - ) - ) - - # ------------------------------------------------------------------ # - # Test S4 — Ineligible seat cannot interact with sig deck # - # ------------------------------------------------------------------ # - - def test_non_active_seat_cannot_select_significator(self): - founder, _ = User.objects.get_or_create(email="founder@test.io") - room = Room.objects.create(name="Ineligible Sig Test", owner=founder) - # Founder is NC (second in canonical order) — not first - _fill_room_via_orm(room, [ - "founder@test.io", "amigo@test.io", "bud@test.io", - "pal@test.io", "dude@test.io", "bro@test.io", - ]) - _assign_all_roles(room, role_order=["NC", "PC", "EC", "SC", "AC", "BC"]) - - self.create_pre_authenticated_session("founder@test.io") - room_url = f"{self.live_server_url}/gameboard/room/{room.id}/gate/" - self.browser.get(room_url) - - self.wait_for(lambda: self.browser.find_element(By.ID, "id_sig_deck")) - - # Click a sig card — it must not trigger a selection (deck stays at 36) - self.browser.find_element(By.CSS_SELECTOR, "#id_sig_deck .sig-card").click() - self.wait_for( - lambda: self.assertEqual( - len(self.browser.find_elements(By.CSS_SELECTOR, "#id_sig_deck .sig-card")), - 36, - ) - ) @tag("channels")