Files
048-the-coockie-factory/docs/milestones/mil-002-bot-core-open-and-click.md
2026-10-28 16:23:33 +08:00

2.9 KiB

Bot core: open the game and click the cookie

Metadata

Key Value
ID MIL-002
CrossReference BC-001
Language en
Domain it

Version History

Date Status Author Reviewer Change Commit
2026-10-28 Accepted Jens Tirsvad Nielsen AI as stand-in for S01 Initial version (reviewed in RC-005) 96a9a78

Purpose

Decide whether the bot can start the game, choose the language, click the big cookie and read the cookie count (lecture steps 1 to 3) with the logic tested without a browser.

Deliverable

A GamePort interface, a Selenium adapter and the functions open_game, select_language, click_cookie and get_cookie_count, with Doxygen comments and pytest tests that use a fake game.

Go / No-Go Criteria

# Criterion (objectively checkable) Go No-Go
1 python -m pytest passes with tests for the click and count logic using a fake game Met Not met
2 All element ids, the URL and timings are defined in constants.py and nowhere else Met Not met
3 Every public function has a Doxygen comment Met Not met
4 Source follows qc-programming-python and the review record says Go Met Not met

Dependencies

Depends on Reason
MIL-001 Needs the skeleton, configuration and plan gate

Traceability

Business Case objective / KPI / user story Reference
O1, O2, O3 in BC-001

Ownership

Role Stakeholder ID (SA)
Owner S01
Approving reviewer S01

Target Date

2026-10-30 - within the one-week limit of BC-001

Tasks

# Task Summary Needs its own Use Case/User Story? Reference
1 Define the game port and constants Create constants.py (URL, language selector, big cookie id, cookie counter id) and a GamePort protocol so the rules do not import Selenium. No
2 Implement open_game and select_language Open https://ozh.github.io/cookieclicker/ with Selenium, wait for the language chooser and pick English, so every later step starts from a playable game. No
3 Implement click_cookie Click the big cookie a given number of times through the port; this is lecture step 2 and the base of the cookies-per-second (CPS) race. No
4 Implement get_cookie_count Read and parse the cookie counter text into an integer, handling thousands separators and the word forms the game prints. No
5 Unit tests with a fake game Test the functions above with a FakeGame in tests/, so they run in the venv without any browser. No