dice_board — Acceptance Tests (Gherkin)
Feature: dice_board basic placement
Scenario: Place token on empty cell
Given a game "dice_board" with 2 players
And it is player 1 turn in phase "RollDice"
When player 1 rolls dice and gets 3 and 5
And player 1 chooses cell (3, 5)
Then cell (3, 5) contains player 1 token
And it is player 2 turn
Feature: dice_board capture
Scenario: Capture opponent token
Given cell (2, 4) is occupied by player 2
And dice show 2 and 4
When player 1 chooses cell (2, 4)
Then cell (2, 4) contains player 1 token
And cell (2, 4) does not contain player 2 token
Feature: dice_board own cell rule
Scenario: Must choose free candidate if own cell occupied
Given cell (3, 3) is occupied by player 1
And cell (5, 1) is empty
And dice show 3 and 5
When player 1 attempts to choose cell (3, 5)
Then the action is rejected with error "OWN_CELL_BLOCKED"
When player 1 chooses cell (5, 3)
Then the action succeeds
Feature: dice_board doubles reroll
Scenario: Doubles trigger reroll in same turn
Given dice show 3 and 3
And cell (3, 3) is empty
When player 1 chooses cell (3, 3)
Then phase is "RollDice"
And reroll_count is 1
When player 1 rolls again and gets 1 and 6
And player 1 chooses cell (1, 6)
Then it is player 2 turn
Feature: dice_board no reroll without doubles
Scenario: Center cell without doubles does not reroll
Given dice show 3 and 4
When player 1 chooses cell (3, 4)
Then it is player 2 turn
Feature: dice_board win
Scenario: Three in a row wins
Given player 1 has tokens at (1,1) and (1,2)
And dice allow placing at (1, 3)
When player 1 chooses cell (1, 3)
Then game status is "finished"
And winner is player 1
Feature: cross-client sync
Scenario: Move from Telegram appears on web
Given player 1 is connected via Telegram
And player 2 is connected via web
When player 1 chooses a valid cell
Then web client receives state update within 1 second
And board on web shows the new token
Test IDs (traceability)
| Scenario |
FR |
TC |
| Place token |
FR-013 |
TC-011 |
| Capture |
FR-014 |
TC-012 |
| Own cell rule |
FR-016 |
TC-016 |
| Doubles reroll |
FR-015 |
TC-013 |
| No reroll without doubles |
FR-015 |
TC-013b |
| Win |
FR-017 |
TC-014 |
| Cross-client |
FR-026, NFR-002 |
TC-008 |