diff --git a/site/assets/theme.css b/site/assets/theme.css index c67586a..c459599 100644 --- a/site/assets/theme.css +++ b/site/assets/theme.css @@ -4,5 +4,5 @@ .ready-archive-page .application-page{max-width:46rem;padding-bottom:4rem}.ready-archive-page .application-intro{padding-bottom:2.25rem}.ready-archive-page .application-record{border:1px solid var(--line);background:var(--panel);padding:clamp(1.25rem,4vw,2rem)}.ready-archive-page .application-record__head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.ready-archive-page .application-record__head h2{color:var(--link);font:1.35rem/1.2 var(--font-name);margin:.2rem 0 0}.ready-archive-page .application-record__head>code{color:var(--muted);font-size:.7rem}.ready-archive-page .record-label{color:var(--status);font:.7rem/1.4 var(--font-data);margin:0}.ready-archive-page .application-steps{list-style:decimal-leading-zero;margin:2rem 0 0;padding-left:3.2rem}.ready-archive-page .application-step{border-left:1px dotted var(--line);padding:0 0 2.25rem 1.25rem}.ready-archive-page .application-step:last-child{padding-bottom:0}.ready-archive-page .application-step::marker{color:var(--link);font:700 .68rem/1 var(--font-data)}.ready-archive-page .application-step h3{color:var(--ink);font:.85rem/1.3 var(--font-data);margin:0 0 .5rem}.ready-archive-page .application-step>p{margin:.5rem 0 0}.ready-archive-page .application-step .ready-status{margin-top:1rem}.ready-archive-page .application-step .field:first-child{margin-top:1rem}@media (width<=44rem){.ready-archive-page .application-record{padding:1.25rem 1rem}.ready-archive-page .application-record__head{align-items:flex-start;flex-direction:column}.ready-archive-page .application-steps{padding-left:2rem}.ready-archive-page .application-step{padding-left:1rem}} .ready-archive-page .competition-records{max-width:46rem;gap:1rem;margin-bottom:.75rem;display:grid}.ready-archive-page .competition-records .archive-record h3{color:var(--link);font:1.25rem/1.25 var(--font-name);margin:.2rem 0 0}.ready-archive-page .ready-reissue{border-top:1px dotted var(--line);margin-top:1rem;padding-top:.8rem}.ready-archive-page .ready-reissue p{margin:.3rem 0}.ready-archive-page .ready-reissue__status{min-height:1.2rem;color:var(--status);font:.72rem/1.5 var(--font-data)} .ready-archive-page .crew-nav a,.ready-archive-page .crew-nav button{align-items:center;display:inline-flex}.ready-archive-page .discord-login{gap:.45rem}.ready-archive-page .discord-login img{width:1.25rem;height:auto;flex:none} -.ready-archive-page .roster{max-width:46rem;grid-template-columns:repeat(auto-fill,minmax(19rem,1fr));gap:1rem;margin:1rem 0 0;padding:0;list-style:none;display:grid}.ready-archive-page .roster-member{border:1px solid var(--line);background:var(--panel);grid-template-columns:auto minmax(0,1fr);align-items:start;gap:1rem;padding:1rem;display:grid}.ready-archive-page .roster-avatar{border:1px solid var(--line);width:3rem;height:3rem;object-fit:cover;background:#050505;flex:none;display:block}.ready-archive-page .roster-identity{min-width:0}.ready-archive-page .roster-member h3{color:var(--link);font:.95rem/1.25 var(--font-name);overflow-wrap:anywhere;margin:0}.ready-archive-page .roster-handle{color:var(--muted);font:.72rem/1.4 var(--font-data);overflow-wrap:anywhere;margin:.3rem 0 0}.ready-archive-page .roster-events{border-top:1px dotted var(--line);color:var(--status);font:.72rem/1.5 var(--font-data);gap:.2rem;margin:.65rem 0 0;padding:.6rem 0 0;list-style:none;display:grid}@media (width<=44rem){.ready-archive-page .roster{grid-template-columns:1fr}} +.ready-archive-page .roster{max-width:46rem;grid-template-columns:repeat(auto-fill,minmax(19rem,1fr));gap:1rem;margin:1rem 0 0;padding:0;list-style:none;display:grid}.ready-archive-page .roster-member{border:1px solid var(--line);background:var(--panel);grid-template-columns:auto minmax(0,1fr);align-items:start;gap:1rem;padding:1rem;display:grid}.ready-archive-page .roster-avatar{border:1px solid var(--line);width:3rem;height:3rem;object-fit:cover;background:#050505;flex:none;display:block}.ready-archive-page .roster-identity{min-width:0}.ready-archive-page .roster-member h3{color:var(--link);font:.95rem/1.25 var(--font-name);overflow-wrap:anywhere;margin:0}.ready-archive-page .roster-events{border-top:1px dotted var(--line);color:var(--status);font:.72rem/1.5 var(--font-data);gap:.2rem;margin:.65rem 0 0;padding:.6rem 0 0;list-style:none;display:grid}@media (width<=44rem){.ready-archive-page .roster{grid-template-columns:1fr}} .ready-archive-page .placement-extra{color:var(--score);margin-top:.2rem;display:block} diff --git a/site/index.html b/site/index.html index 986745a..129273b 100644 --- a/site/index.html +++ b/site/index.html @@ -81,7 +81,6 @@

Team

SHOOTTHEMESSENGER/Moo

-

spookymoo

@@ -89,7 +88,6 @@

SHOOTTHEMESSENGER/Moo

Hoxed

-

hoxed

@@ -97,7 +95,6 @@

Hoxed

romil0xsec

-

romil1998

@@ -105,7 +102,6 @@

romil0xsec

Deva_RP

-

deva_rp

@@ -113,7 +109,6 @@

Deva_RP

Antsy

-

antsyy_

diff --git a/site/team/index.html b/site/team/index.html index 2fb5a8f..cc0ba45 100644 --- a/site/team/index.html +++ b/site/team/index.html @@ -37,7 +37,6 @@

Roster

SHOOTTHEMESSENGER/Moo

-

spookymoo

@@ -45,7 +44,6 @@

SHOOTTHEMESSENGER/Moo

Hoxed

-

hoxed

@@ -53,7 +51,6 @@

Hoxed

romil0xsec

-

romil1998

@@ -61,7 +58,6 @@

romil0xsec

Deva_RP

-

deva_rp

@@ -69,7 +65,6 @@

Deva_RP

Antsy

-

antsyy_

diff --git a/tests/site-contract.test.mjs b/tests/site-contract.test.mjs index 53b91cb..33708b1 100644 --- a/tests/site-contract.test.mjs +++ b/tests/site-contract.test.mjs @@ -226,9 +226,8 @@ test("the roster is published on the homepage and the team page", () => { for (const [index, [file, name, played]] of members.entries()) { assert.ok(html.includes(`src="/brand/team/${file}.png"`), `${page} is missing the ${file} avatar`); assert.ok(html.includes(`

${name}

`), `${page} is missing the name ${name}`); - assert.ok(html.includes(`

${file}

`), `${page} is missing the handle ${file}`); const card = cards[index]; - assert.ok(card.includes(file), `${page} card order drifted at ${file}`); + assert.ok(card.includes(`/brand/team/${file}.png`), `${page} card order drifted at ${file}`); assert.deepEqual( [...card.matchAll(/
  • ([^<]+)<\/li>/g)].map((m) => m[1]), played, @@ -240,6 +239,14 @@ test("the roster is published on the homepage and the team page", () => { assert.match(match[0], /width="128"[^>]*height="128"/, "avatars need intrinsic dimensions"); } assert.equal(html.includes("Romil Patel"), false, `${page} must not publish a real name`); + assert.equal(html.includes("roster-handle"), false, `${page} must not publish Discord usernames`); + for (const [file] of members) { + assert.equal( + new RegExp(`>[^<]*\b${file}\b[^<]*<`).test(html), + false, + `${page} still shows the Discord username ${file} as visible text`, + ); + } assert.equal(html.includes("sp4reparts"), false, `${page} lists only the five players`); assert.equal(html.includes("cdn.discordapp.com"), false, `${page} must self-host avatars`); } @@ -279,6 +286,7 @@ test("the canonical stylesheet contains the current archive theme", () => { assert.match(css, /\.ready-archive-page \.crew-nav a,\.ready-archive-page \.crew-nav button\{[^}]*display:inline-flex/); assert.match(css, /\.ready-archive-page \.roster\{[^}]*display:grid/); assert.match(css, /\.ready-archive-page \.roster-avatar\{[^}]*object-fit:cover/); + assert.equal(css.includes("roster-handle"), false, "the Discord username style is retired"); for (const marker of forbiddenThemeMarkers) { assert.equal(css.includes(marker), false, `theme.css contains retired marker ${marker}`); }