Five games uploaded; two landed version-less. Neither was the picker's
fault: paging is an AngularJS <ul class="pagination"> of anchors, not
buttons named "next", so the old guess found no control and quit after
page one — and BGG's API version names carry printing qualifiers the
picker omits ("English edition 2018-2" vs "(English edition) (2018)").
_select_version now scans the WHOLE list (verified selectors: rows are
<li>s with a thumbnail; a[title="Next Page"] advances; the parent <li>
disables at the end), collects every candidate, then decides: one exact
match wins; failing that, one match after stripping a trailing year
qualifier wins and says so; several matches are refused outright rather
than guessed, and the reason reaches upload_log.csv. Both call sites
carry the reason through.
docs/bgg-upload-flow.md records what the live site actually does —
including that every login-gate selector the doc called "verified" was
wrong, while the "unverified" dialog structure was right.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016jXZFSTZQKzAC8fqpWSz9g
1.5 KiB
1.5 KiB
| 1 | action | bgg_id | collid | name | version_id | second_copy | status | timestamp | error |
|---|---|---|---|---|---|---|---|---|---|
| 2 | add | 334011 | A Gentle Rain | 701315 | failed | 2026-08-06T02:15:34+00:00 | TimeoutError: Locator.wait_for: Timeout 15000ms exceeded. Call log: - waiting for get_by_role("dialog").get_by_role("heading", name=re.compile(r"A\ Gentle\ Rain", re.IGNORECASE)) to be visible | ||
| 3 | add | 589 | Wiz-War | 27352 | failed | 2026-08-06T02:20:33+00:00 | Error: Locator.check: Error: strict mode violation: get_by_role("dialog").get_by_label("Own") resolved to 2 elements: 1) <input type="checkbox" ng-model="item.status.own" class="ng-pristine ng-untouched ng-valid ng-empty"/> aka get_by_role("checkbox", name="Own", exact=True) 2) <input type="checkbox" ng-model="item.status.prevowned" class="ng-pristine ng-untouched ng-valid ng-empty"/> aka get_by_role("checkbox", name="Prev. Owned") Call log: - waiting for get_by_role("dialog").get_by_label("Own") | ||
| 4 | add | 334011 | A Gentle Rain | 701315 | added | 2026-08-06T02:21:32+00:00 | |||
| 5 | add | 125921 | Catan: Junior | 476263 | added | 2026-08-06T02:24:22+00:00 | |||
| 6 | add | 31260 | Agricola | 297589 | added | 2026-08-06T02:24:28+00:00 | |||
| 7 | add | 181304 | Mysterium | 536289 | added_no_version | 2026-08-06T02:24:34+00:00 | version 'English edition 2018-2' not in picker; added without version | ||
| 8 | add | 312786 | Poetry for Neanderthals | 514050 | added_no_version | 2026-08-06T02:24:40+00:00 | version 'English edition 2020' not in picker; added without version | ||
| 9 | add | 273240 | The Red Dragon Inn Smorgasbox | 446069 | added | 2026-08-06T02:24:46+00:00 |