deck images: resize Minchiate + RWS to 700px height + re-pngquant; drop orphan MySeaInviteAcceptanceLogTest — TDD
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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user