M2: 오셀로 추가, 게임 공통 E2E, 접근성 검사(axe) 통과
- 오셀로: 8방향 뒤집기, 자동 패스, 종료·점수(빈칸 승자 몫 옵션), 한 수/피셔 시계·자동 착수, 무르기·무승부·기권, 놓을 곳 점·뒤집힐 돌 미리 보기·뒤집기 애니메이션 (테스트 31개) - 카탈로그에 오셀로·체스·장기·바둑 추가(엔진이 등록된 게임만 화면에 나옴) - e2e/games.e2e.ts: PC 방장 + 휴대폰 친구, 게임 소개→방 만들기→링크 입장→시작→차례대로 첫 수 - e2e/a11y.e2e.ts: 홈·게임 소개·대기실 × PC/휴대폰 × 밝게/어둡게, axe 위반 0건 (h1, 랜드마크, 제목 순서 정리) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -55,6 +55,7 @@ export function Home() {
|
||||
|
||||
return (
|
||||
<main className="page" style={{ gap: 28 }}>
|
||||
<h1 className="sr-only">{useSession.getState().siteName}</h1>
|
||||
{activeRoom && (
|
||||
<Link to={`/r/${activeRoom}`} className="btn btn-success btn-block" style={{ minHeight: 60, fontSize: '1.15rem' }}>
|
||||
▶ 하던 게임으로 돌아가기 (방 {formatRoomCode(activeRoom)})
|
||||
|
||||
@@ -144,7 +144,10 @@ function Room({ code, me }: { code: string; me: PublicUser }) {
|
||||
|
||||
return (
|
||||
<>
|
||||
<div className="room-bar">
|
||||
<nav className="room-bar" aria-label="방 메뉴">
|
||||
<h1 className="sr-only">
|
||||
{g.nameKo} 방 {formatRoomCode(code)}
|
||||
</h1>
|
||||
<div className="room-bar-inner">
|
||||
<button className="btn btn-ghost btn-sm" onClick={() => nav('/')} aria-label="홈으로">
|
||||
← 홈
|
||||
@@ -164,7 +167,7 @@ function Room({ code, me }: { code: string; me: PublicUser }) {
|
||||
⋯ 메뉴
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
{needsRefresh && (
|
||||
<div className="card row" style={{ margin: 12, justifyContent: 'space-between' }}>
|
||||
<span>새 버전이 있어요.</span>
|
||||
@@ -322,7 +325,7 @@ function Lobby({ room, ui, me }: { room: RoomView; ui: GameUI; me: PublicUser })
|
||||
<section className="card stack">
|
||||
<div className="row" style={{ justifyContent: 'space-between' }}>
|
||||
<div>
|
||||
<h3>게임 설정</h3>
|
||||
<h2>게임 설정</h2>
|
||||
<p className="muted">{ui.optionsSummary(room.options)}</p>
|
||||
</div>
|
||||
{isHost && !wide && (
|
||||
@@ -371,7 +374,7 @@ function Lobby({ room, ui, me }: { room: RoomView; ui: GameUI; me: PublicUser })
|
||||
{wide ? settingsCard : seats}
|
||||
{wide && (
|
||||
<section className="card stack">
|
||||
<h3>규칙 요약</h3>
|
||||
<h2>규칙 요약</h2>
|
||||
<ui.Rules options={room.options} />
|
||||
</section>
|
||||
)}
|
||||
@@ -516,7 +519,7 @@ function GameView({ room, ui, me, players, pending, slow }: { room: RoomView; ui
|
||||
};
|
||||
const status = (
|
||||
<div
|
||||
className="card"
|
||||
className="card turn-status"
|
||||
role="status"
|
||||
aria-live="polite"
|
||||
style={{
|
||||
|
||||
Reference in New Issue
Block a user