A development note from the Wordle Cup project, 17 September 2026.
The NFL Wordle game on Wordle Cup gives players six guesses and compares team, conference, position, age, height, jersey number and experience. Those fields look like a small data table. In practice, every field is a promise about what a green match or an arrow means.
This note describes a testing approach, not a claim that every test below already runs in our production code.
For categorical fields, compare stable identifiers rather than display strings. A team abbreviation, a translated name and a full team name should not create three different teams. A conference match should remain a conference match even when two players belong to different teams.
For numeric fields, define the direction from the player's perspective. If the guessed age is lower than the answer, an upward arrow means that the answer is older. The same convention should hold for height, jersey number and experience. Switching perspective between fields forces the player to relearn the interface halfway through a guess.
Unknown is not the same as zero. Missing experience should not become a rookie by accident, and an absent jersey number should not match a real number.
function compareNumber(guess, answer) {
if (!Number.isFinite(guess) || !Number.isFinite(answer)) {
return { kind: 'unknown' };
}
if (guess === answer) return { kind: 'match' };
return { kind: guess < answer ? 'higher' : 'lower' };
}
This is an illustrative helper, not a pasted copy of our game engine. Its useful feature is the explicit unknown state. A unit test can distinguish unavailable data from a real mismatch without looking at a colored tile.
Start with one pair of players on the same team, another pair in the same conference but on different teams, and a pair whose numeric values sit just above and below one another. Then add a player with a missing field.
Each fixture should name the exact expected output. An assertion that merely checks that a tile was rendered can pass even when the arrow points in the wrong direction.
Test repeated guesses and guesses after the sixth attempt as separate state transitions. A comparison helper can be perfectly correct while the game still increments the attempt counter twice.
On a narrow phone screen, confirm that the field label and its feedback stay associated. If a row wraps, the player should not mistake a conference hint for a position hint. Do not rely on color alone: use readable text or accessible labels for match, mismatch and direction.
Finally, open the public game in a fresh session. Development state can conceal an empty candidate list, a stale roster or a result that only works with yesterday's local storage. A screenshot proves the layout; a fresh, completed round proves much more of the interaction.
The practical goal is modest: after a wrong guess, the player should know what to try next. Clear comparison rules are a better starting point than adding another animation.