Sleeping Gods failed where three siblings passed: the second-pass row click matched captured text with Playwright's has_text regex, which tests raw textContent — tabs and newlines included — against a capture that was whitespace-normalized. Rows whose markup happened to be tidy matched; that one didn't. The picker now re-finds the row by NORMALIZED text and clicks it by index, which also survives the list re-rendering in a different order between openings. And the UI's failure count only ever grew: upload_log.csv is an append-only audit trail, so a retry that succeeds leaves its old 'failed' line in place. outstanding_failures() counts the LAST status per job key — the same rule _plan_jobs already uses to decide what to skip — so a landed retry clears the badge. On Eric's log: 6 'failed' rows, 1 job actually outstanding. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016jXZFSTZQKzAC8fqpWSz9g
4.4 KiB
4.4 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 | |||
| 10 | add | 419687 | Munchkin Big Box | 711400 | failed | 2026-08-06T02:38:12+00:00 | TimeoutError: Locator.click: Timeout 30000ms exceeded. Call log: - waiting for get_by_role("dialog").locator("ul.pagination a[title=\"First Page\"]").first - locator resolved to <a href="" role="menuitem" title="First Page" class="pagination-pager" ng-click="selectPage(1)"> ⇆⇆⇆⇆First ⇆⇆⇆</a> - attempting click action 2 × waiting for element to be visible, enabled and stable - element is not visible - retrying click action - waiting 20ms 2 × waiting for element to be visible, enabled and stable - element is not visible - retrying click action - waiting 100ms 55 × waiting for element to be visible, enabled and stable - element is not visible - retrying click action - waiting 500ms | ||
| 11 | add | 252153 | Tang Garden | 404702 | failed | 2026-08-06T02:38:48+00:00 | TimeoutError: Locator.click: Timeout 30000ms exceeded. Call log: - waiting for get_by_role("dialog").locator("ul.pagination a[title=\"First Page\"]").first - locator resolved to <a href="" role="menuitem" title="First Page" class="pagination-pager" ng-click="selectPage(1)"> ⇆⇆⇆⇆First ⇆⇆⇆</a> - attempting click action 2 × waiting for element to be visible, enabled and stable - element is not visible - retrying click action - waiting 20ms 2 × waiting for element to be visible, enabled and stable - element is not visible - retrying click action - waiting 100ms 56 × waiting for element to be visible, enabled and stable - element is not visible - retrying click action - waiting 500ms | ||
| 12 | add | 255984 | Sleeping Gods | 701034 | failed | 2026-08-06T02:39:23+00:00 | TimeoutError: Locator.click: Timeout 30000ms exceeded. Call log: - waiting for get_by_role("dialog").locator("ul.pagination a[title=\"First Page\"]").first - locator resolved to <a href="" role="menuitem" title="First Page" class="pagination-pager" ng-click="selectPage(1)"> ⇆⇆⇆⇆First ⇆⇆⇆</a> - attempting click action 2 × waiting for element to be visible, enabled and stable - element is not visible - retrying click action - waiting 20ms 2 × waiting for element to be visible, enabled and stable - element is not visible - retrying click action - waiting 100ms 56 × waiting for element to be visible, enabled and stable - element is not visible - retrying click action - waiting 500ms | ||
| 13 | add | 589 | Wiz-War | 27352 | added | 2026-08-06T02:45:10+00:00 | |||
| 14 | add | 419687 | Munchkin Big Box | 711400 | added | 2026-08-06T02:45:16+00:00 | |||
| 15 | add | 252153 | Tang Garden | 404702 | added | 2026-08-06T02:45:23+00:00 | |||
| 16 | add | 255984 | Sleeping Gods | 701034 | failed | 2026-08-06T02:45:58+00:00 | TimeoutError: Locator.click: Timeout 30000ms exceeded. Call log: - waiting for get_by_role("dialog").locator("li:has(.summary-item-thumbnail)").filter(has_text=re.compile(r"Sleeping\ Gods\ \(English\ Gamefound\ edition\)\ \(2023\)", re.IGNORECASE)).first | ||
| 17 | add | 283766 | Sleeping Gods: Tides of Ruin | 463140 | added | 2026-08-06T02:46:07+00:00 |