Skip to content

Manual test: browser-extension AAQ fetch against 2026-07-01 #31

Description

@rtanglao

Live verification of the browser-extension stopgap (merged in #30, closed #29). This is the one check that can't be automated — it needs a human on a warm support.mozilla.org session, because that warm session is exactly what passes the Fastly challenge that blocks the automated browser (#26).

Test day: 2026-07-01, both products, questions + answers. We already have committed CSVs for that day to diff against:

  • 2026/questions-thunderbird-desktop-2026-07-01.csv
  • 2026/answers-thunderbird-desktop-2026-07-01.csv
  • 2026/questions-thunderbird-android-2026-07-01.csv
  • 2026/answers-thunderbird-android-2026-07-01.csv

Setup

  • Pull latest main (the extension lives in extension/, importer is import_json.py).
  • uv sync (import_json.py imports the existing modules).

Load the extension — Chromium:

  • chrome://extensions → enable Developer modeLoad unpacked → pick the extension/ folder.

Load the extension — Firefox (128+):

  • about:debugging#/runtime/this-firefoxLoad Temporary Add-on… → pick extension/manifest.json. (Unloads on restart; just re-load.)

Warm the session (critical):

  • Open https://support.mozilla.org/ and browse a page or two so the Fastly challenge clears for your session. If you see a challenge/interstitial, wait it out before continuing.

Run the fetch (repeat in BOTH browsers)

For Thunderbird Desktop:

  • Click the extension toolbar icon.
  • Product = Thunderbird Desktop, Start = 2026-07-01, End = 2026-07-01, Fetch answers too = checked.
  • Click Fetch & download → saves aaq-thunderbird-2026-07-01.json to Downloads.
  • Status line should read Done: N questions, M answers. If it instead shows non-JSON response (Fastly challenge / block?) or HTTP 429, the session wasn't warm / you're rate-limited — see Troubleshooting.

For Thunderbird Android:

  • Same, Product = Thunderbird Android → saves aaq-thunderbird-android-2026-07-01.json.

Import + diff (from the repo root)

# Desktop — write to a temp dir so committed CSVs are never clobbered
uv run python import_json.py ~/Downloads/aaq-thunderbird-2026-07-01.json \
  --questions-out /tmp/q-desktop.csv --answers-out /tmp/a-desktop.csv
diff /tmp/q-desktop.csv 2026/questions-thunderbird-desktop-2026-07-01.csv
diff /tmp/a-desktop.csv 2026/answers-thunderbird-desktop-2026-07-01.csv

# Android
uv run python import_json.py ~/Downloads/aaq-thunderbird-android-2026-07-01.json \
  --questions-out /tmp/q-android.csv --answers-out /tmp/a-android.csv
diff /tmp/q-android.csv 2026/questions-thunderbird-android-2026-07-01.csv
diff /tmp/a-android.csv 2026/answers-thunderbird-android-2026-07-01.csv

Pass criteria

  • Fingerprint bypass works — the fetch returns real JSON (a question/answer count), not the Fastly HTML challenge, in both Chrome and Firefox. This is the primary goal.
  • Determinism — the four diffs are empty or any differences are explainable as real data changes since the day was last scraped, not format bugs (see note).
  • Download filenames and the thunderbirdthunderbird-desktop filename mapping are correct.

Note on diffs: the committed 2026-07-01 data is frozen at ~2026-07-09 (the scraper has been blocked since). A fetch today may legitimately include edits / new answers / solved-flips made after the freeze, so a non-empty diff isn't necessarily a bug. Sanity-check any diff: new/changed rows = real updates (fine); reordered columns, changed escaping, altered joins, or wrong sort order = a format bug (not fine — comment here). git log --follow 2026/questions-thunderbird-desktop-2026-07-01.csv shows when it last changed.

Troubleshooting

  • non-JSON response (Fastly challenge / block?) → session not warm. Reload support.mozilla.org, clear the challenge, retry.
  • HTTP 429 → rate-limited; wait the Retry-After window and retry (the extension does not auto-wait).
  • Open a support.mozilla.org tab first → the active tab isn't on support.mozilla.org.

See extension/README.md for background.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions