diff --git a/data/upload_log.csv b/data/upload_log.csv index c4f96f6..820e676 100644 --- a/data/upload_log.csv +++ b/data/upload_log.csv @@ -2,3 +2,8 @@ action,bgg_id,collid,name,version_id,second_copy,status,timestamp,error 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" 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) aka get_by_role(""checkbox"", name=""Own"", exact=True) 2) aka get_by_role(""checkbox"", name=""Prev. Owned"") Call log: - waiting for get_by_role(""dialog"").get_by_label(""Own"")" add,334011,,A Gentle Rain,701315,,added,2026-08-06T02:21:32+00:00, +add,125921,,Catan: Junior,476263,,added,2026-08-06T02:24:22+00:00, +add,31260,,Agricola,297589,,added,2026-08-06T02:24:28+00:00, +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 +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 +add,273240,,The Red Dragon Inn Smorgasbox,446069,,added,2026-08-06T02:24:46+00:00, diff --git a/docs/bgg-upload-flow.md b/docs/bgg-upload-flow.md index d5a329b..2f7b4dd 100644 --- a/docs/bgg-upload-flow.md +++ b/docs/bgg-upload-flow.md @@ -100,3 +100,39 @@ the existing one). page but did not overlay the form in the probe. - Logged-in detection heuristic (unverified): the header shows a "Sign In" link only when logged out. + + +## Verified against the live site (2026-08-06, first real uploads) + +The add flow works end to end; every failure on the way was in code the +earlier walkthrough had marked *verified*, and the parts marked +*unverified* were mostly right. Corrections: + +- **Sign In is an `` with no `href`.** It therefore has no + implicit `link` role: `get_by_role("link", name="Sign In")` matches + nothing in any state. The header also hydrates after + `domcontentloaded`, so for a moment neither Sign In nor Sign Out + exists — a check resting on one absence silently concludes "signed in" + and browses anonymously. Poll until one control or the other proves the + state; treat "neither, after 30s" as an error. +- **`get_by_label("Own")` also matches "Prev. Owned."** Use + `get_by_role("checkbox", name="Own", exact=True)`. +- **Version rows** are the `
  • `s carrying a thumbnail: + `li:has(.summary-item-thumbnail)`. Plain `listitem` also catches the + paging `
  • `s ("First", "Prev", "1", "…"). +- **Paging is an AngularJS `