Introduce npm run smoke with automated build, test, lint, dist, and metadata-only compliance checks. Document manual Chrome steps in RELEASE_SMOKE.md and fix unused imports blocking lint.
3.7 KiB
Release Smoke Checklist
Repeatable verification before Chrome Web Store submission. Run after every release candidate build.
Quick start
npm run smoke
This runs all automated checks (build, test, lint, dist verification, metadata-only compliance) and prints the manual Chrome steps below.
Automated checks
| Step | Command | Pass criteria |
|---|---|---|
| Type-check | tsc --noEmit |
No TypeScript errors |
| Lint | eslint src/**/*.{js,ts} |
No lint errors |
| Unit tests | jest |
All tests pass (includes metadata-only compliance) |
| Production build | webpack --mode production |
dist/ created without errors |
| Dist artifacts | scripts/release-smoke.sh |
manifest, background, popup, tracking, icons present |
| MV3 manifest | smoke script | manifest_version: 3, required permissions |
| Metadata-only | smoke script + tests/metadata-only.test.ts |
No PDF bytes persisted to chrome.storage |
Manual Chrome verification
Requires Chrome desktop and Binect test credentials.
1. Load unpacked extension
- Run
npm run build(ornpm run smokewhich builds automatically). - Open
chrome://extensions/. - Enable Developer mode.
- Click Load unpacked and select the
dist/directory. - Confirm BinectChrome appears with version from
public/manifest.json. - Accept any new permission prompts.
Pass: Extension loads without service-worker registration errors. Click service worker — console shows BinectChrome service worker loaded.
2. Trigger PDF detection
Recommended (viewer detection):
- Open:
https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf - Click the BinectChrome toolbar icon.
Pass: Popup shows dummy.pdf, source domain, and Send PDF to Binect button.
Optional (download detection):
- Download:
https://www.africau.edu/images/default/sample.pdf - Check service worker console for
[PDF Detector] PDF detected! - Badge shows
1(when service worker is awake).
Pass: Popup finds the PDF (directly or via recent-downloads fallback).
3. Verify Binect upload (metadata-only path)
- Sign in with Binect credentials in the popup.
- Click Send PDF to Binect.
- Wait for Uploading… → Success! with a document ID.
Pass: Upload completes; popup shows document in basket (in_basket status).
4. Confirm zero-retention storage
- Right-click popup → Inspect → Application → Storage → Extension Storage.
- Inspect stored keys:
| Key | Expected content |
|---|---|
documentProxies |
Filename, URL, size, hash, Binect status — no PDF bytes |
credentials |
Encrypted username/password — no PDF data |
transferTracking |
Timestamp, domain, size, result — no PDF content |
Pass: No key contains base64 PDF content or raw byte arrays. Only metadata and encrypted credentials.
5. Tracking page
- Click ? in the popup footer.
- Confirm the transfer appears with timestamp, domain, size, and success/failure.
Pass: Transfer logged locally; CSV export works.
Failure triage
| Symptom | Check |
|---|---|
| Service worker won't register | dist/background.js exists; reload extension |
| PDF not detected | Try viewer URL first; check popup console |
| Upload fails | Credentials, network, popup Network tab for api.binect.de |
| Storage has PDF bytes | Blocker — violates zero-retention; do not ship |
Related docs
QUICK_TEST_GUIDE.md— detailed debug stepsDEVELOPMENT.md— dev workflow and Chrome URLsSCOPE.md— in-scope metadata-only proxy modeldev-helper.sh verify— quick dist check without full smoke