GCP cost-table scrape can't select the billing-period dropdown ("Could not select invoice month")
Symptom¶
The gcp-cost-table scraper mode authenticates and opens the Cost Table page fine, but fails to
select the billing period from the period dropdown, so it never downloads or ingests a cost table.
Both repros on 2026-07-02 were AFTER the Google session was re-authed and the ingest URL was repointed
to eop.theestablishers.com β so neither the auth expiry nor the dead-p-eop host is the cause:
run-gcp-cost-table.sh "May 2026" 5600028348βfatal: No Cost Table invoice option found for "May 2026" invoice 5600028348run-gcp-cost-table.sh(defaults β "June 2026", current period) βinvoice options seen until June 2026: June 2026thenfatal: Could not select invoice month "June 2026"
The second is the tell: the option text "June 2026" is seen but the click/select doesn't take β
DOM drift in Google's cost-table period picker (a cfc-select Angular control) vs. the selection logic
in services/workspace-csv-scraper/gcp-cost-table.mjs. The sibling gcp-invoices mode works end-to-end
on the same profile (8/8 ingested β HTTP 200), so this is specific to the cost-table period picker.
Impact¶
Low urgency: the current-period (June 2026) running cost table isn't refreshing, but historical cost tables were already backfilled (T-033). Blocks routine cost-table updates until fixed.
Next¶
Debug the cfc-select selection in gcp-cost-table.mjs against the live DOM via noVNC. Tracked under
the T-147 scraper productionization.
Decision log¶
2026-07-03 β resolved (it was the current in-progress period having no invoice yet)¶
- β
Read AGENTS.md. Re-diagnosed: the picker couldn't select "June 2026" because June was then the current in-progress period with no invoice issued yet β the dropdown showed the month but had no selectable invoice under it. Once GCP issued June's invoice (
5626347939), the page defaults to "June 2026 - Invoice 5626347939" and selection works. Verified: two cost-table runs on 07-02 selected June + ingested cleanly (94 rows βgcp_billing_derived, HTTP 200). - So it was an edge (selecting a not-yet-invoiced in-progress period), not general DOM drift. The daily cost-table task defaults to "last month" (a complete, invoiced period), so it is unaffected. Low residual: a manual run targeting the current in-progress month before its invoice issues would still fail β acceptable.
- Status β fixed (operational flow works); reopen if the daily task ever hits a selection failure.
- Source: EOP Local Assistance (fork) Β· session edb0abc7-6373-449b-8e31-379fd38d391b