deck images: resize Minchiate + RWS to 700px height + re-pngquant; drop orphan MySeaInviteAcceptanceLogTest — TDD
Some checks failed
ci/woodpecker/push/pyswiss Pipeline was successful
ci/woodpecker/push/main Pipeline failed

Card art was loading slowly enough on fast networks that animations were firing on empty <img> objects. Photoshop pass dropped both decks to 700px height (~50% linear from Minchiate's prior 1024px and ~57% from RWS's prior 1646px), then pngquant `--quality=65-85 --speed=1 --strip --skip-if-larger` reclaimed the per-pixel bit-rate cost of the fresh PSD save:

  Minchiate: 36.5 MB → 19.1 MB (avg 381 KB → 199 KB)  [-48%]
  RWS:       76.3 MB → 15.8 MB (avg 989 KB → 205 KB)  [-79%]
  Combined:  112.8 MB → 35 MB across 177 cards         [-69%]

RWS dropped the most because it was previously at 960×1646 vs Minchiate's 615×1024 — the higher source resolution had more room to give up. 700px height @ ~420px width is still 2× Retina coverage for the Sea Stage modal (the largest display surface at ~350px wide on desktop). No code change needed — `TarotCard.image_url` resolves the same filenames; the swap is purely on-disk.

Drop `MySeaInviteAcceptanceLogTest` (whole class, single test_invitee_sees_invite_line_with_ok_bye method) from functional_tests/test_game_my_sea.py — orphaned by the bud landing page sprint that removed `.invite-ok-btn` / `.invite-bye-btn` / `.invite-actions` from the @mailman invite Line unconditionally. The salvageable "invites you to" prose assertion is now covered by functional_tests/test_bill_mailman_invite_post.py::MailmanPostStructureTest plus apps/billboard/tests/integrated/test_mail.py::LogSeaInviteTest::test_prose_interpolates_owner_handle_and_default_possessive.

Code architected by Disco DeDisco <discodedisco@outlook.com>
Git commit message Co-Authored-By:
Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Disco DeDisco
2026-05-28 13:52:14 -04:00
parent 6cc11924e3
commit 1e1a0a5ab8
178 changed files with 0 additions and 32 deletions

View File

@@ -1862,38 +1862,6 @@ class MySeaBudBtnInviteTest(FunctionalTest):
)
class MySeaInviteAcceptanceLogTest(FunctionalTest):
"""Phase A of [[my-sea-invite-voice-blueprint]] — an invited bud opens
their @mailman "Acceptances & rejections" Post and sees the invite line
with interactive OK / BYE buttons."""
def setUp(self):
super().setUp()
self.email = "invited_bud@test.io"
self.invitee = User.objects.create(email=self.email)
def test_invitee_sees_invite_line_with_ok_bye(self):
from django.urls import reverse
from apps.billboard.mail import log_sea_invite
from apps.gameboard.models import SeaInvite
owner = User.objects.create(email="owner@test.io", username="discoman")
invite = SeaInvite.objects.create(
owner=owner, invitee=self.invitee, invitee_email=self.email,
)
post, _, _ = log_sea_invite(invite)
self.create_pre_authenticated_session(self.email)
self.browser.get(
self.live_server_url + reverse("billboard:view_post", args=[post.id])
)
body = self.browser.find_element(By.TAG_NAME, "body")
# @mailman prose + interactive OK/BYE both render on the invite line.
self.wait_for(lambda: self.assertIn("invites you to", body.text))
ok = self.browser.find_element(By.CSS_SELECTOR, ".invite-ok-btn")
bye = self.browser.find_element(By.CSS_SELECTOR, ".invite-bye-btn")
self.assertEqual(ok.text.upper(), "OK")
self.assertEqual(bye.text.upper(), "BYE")
class MySeaSpectatorFlowTest(FunctionalTest):
"""Phase B of [[my-sea-invite-voice-blueprint]] — an ACCEPTED invitee
visits the owner's my-sea, deposits a token at the visitor gate, and