summaryrefslogtreecommitdiff
path: root/test/golden
Commit message (Collapse)AuthorAgeFilesLines
* chore(release): 1.0.0, with the Connect IQ Store listingv1.0.0cirakg31 hours1-0/+0
| | | | | | | | | | | | | | | | | The second real-watch round on the Forerunner 70 passed: codes from otpauth:// links, the 4-digit PIN, touch scrolling and Aegis JSON import. Version 1.0.0 ships the fixes of the 0.9.0 review. - docs/STORE_LISTING.md: title, description and What's New for the Garmin developer page, with measured character counts. - docs/store/: hero (1440x720), cover (500x500) and seven round screen images, built by tools/store_assets.py from the fr70 goldens. - CHANGELOG 1.0.0, README status, TESTING round 2 results, YOUR_STEPS marked done, fr70 about.png golden at 1.0.0. make ci green on fr70. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix(pin): the work after a PIN and the change queue run in stepscirakg2 days2-0/+0
| | | | | | | | | | | | | | | | | | | | | | | | After a correct or new PIN, promoting pending entries and applying waiting "Require PIN" changes ran in the event of the last PBKDF2 step; 16 waiting changes tripped the watchdog on the Forerunner 70. ChangeQueue.LockJob now does it in steps while the PIN screen shows "Checking...", saves what it did to the results and refreshes the glance after Set PIN too. The list title decrypted every waiting change at each start. Queue items are now [action, box] (aad OTPW-Q-2 + action code), so they are counted without decrypting; 0.9.0 items are still read. A replacement is checked when it arrives and its material is sealed apart (qm.<n>). Large buffers are wiped and UTF-8-checked in pieces (Jobs.Wiper, Bytes.utf8Prefix, SealedBox.openKeep/sealKeep). "Phone changes" reads behind "Reading...", and Confirm all / Reject all act only on the changes shown. Storage full no longer stops the app at the PIN. Found by the review of b8addc8/096b5a4 and a new make watchdog test; the diff was reviewed again and its findings fixed. fr70: make lint, make test (176), make watchdog (19 cases at two steps per event), make screenshots pass; list_locked and list_reset goldens show "Results ready (menu)". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* test(ui): second UI scenario, and the fixes it foundcirakg3 days187-0/+0
| | | | | | | | | | | | | | | | | | | A second UI-test build (uitest-extra.jungle) covers the legacy PIN and the forced new PIN, Change and Reset PIN, a queued Require PIN, UPC-A, Code 39, the code error screen, the encoding progress, auto-lock on a barcode, the light theme and the glance without a code; the main flow adds the Steam and Library details and the menu's text screens. Fixed from what it found: Entry IDs tripped the watchdog with 110 entries; auto-lock didn't close a locked barcode; a queued Require PIN showed "Confirm in menu"; locked barcodes lacked the padlock; the PIN keypad's bottom row, the Reset PIN question, text-screen bottoms, the glance title and the light-theme warning colour. Goldens approved on all seven watches; only the Forerunner 70 was re-verified after the version bump. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* test(build): add make watchdog, the glance memory budget and the glance ↵cirakg8 days12-0/+0
| | | | | | | | | | | | | | | screenshot - make watchdog (in make ci): a stress build encodes, packs, turns into runs and draws the largest code of every 2D symbology at two steps per event on the Forerunner 255S and 70; it fails on a watchdog trip, and the last code left on the screen must decode (bitmap path on the 70). - make memtest checks the glance (DIAG glance, budget 70 % of 64 KB). - screenshots.sh launches the app again after the flow and compares the glance with the favourite's code (glance_code.png on 7 watches); the About goldens show 0.8.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* test(settings): cover every form, symbology and Manage action; send the ↵cirakg9 days50-0/+0
| | | | | | | | | | | | forms end to end in the UI flow 34 Monkey C tests (154 per device): validation messages, idempotency, the queue, the About scan, "Encrypt names" and the properties contract. The UI-test build fills in Add OTP, Add code and Manage like the phone; the flow checks the new TOTP (309 848 at the frozen time), decodes the Code 128 card and confirms the queued change to the locked entry with the PIN. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* test(codes): compare Aztec with aztec_code_generator, decode it and its ↵cirakg9 days12-0/+0
| | | | | | screenshot Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* test(codes): compare Data Matrix and PDF417 with references and decode them, ↵cirakg9 days20-0/+0
| | | | | | also from screenshots Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* test(codes): compare QR with segno, decode QR dumps and the QR screenshotcirakg9 days19-0/+0
| | | | Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* test(codes): compare with zxing-cpp reference rows and decode encoder output ↵cirakg9 days7-0/+0
| | | | | | and screenshots Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* test(import): cover parsers, importer and a seeded fuzz corpus; import 100 ↵cirakg9 days12-0/+0
| | | | | | entries in the UI flow Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* test(ui): drive the simulator with a scripted flow and check every screencirakg9 days68-0/+0
| | | | | | | | | tools/ui_flow.py clicks buttons and taps from the device files, waits for DIAG shown lines and compares 10 screens per watch with goldens on four test and three spot-check devices. Adds the fixture-wrap generator, UI logic tests and driver tests; the launcher opens apps from their glance. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* perf(crypto): XOR PBKDF2 blocks as 32-bit words and step 100 iterationscirakg9 days4-0/+0
| | | | | | | | 200 byte-wise iterations in one event tripped the 120,000-bytecode watchdog on the Forerunner 255S profile. Word-wise XOR makes PBKDF2 2.3x faster (22 ms per 1000 iterations in the simulator). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* docs: document the storage format and record M3 results; bump to 0.3.0v0.3.0cirakg10 days4-0/+0
| | | | Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* test: add cross-checked crypto/OTP vectors, unit tests and stricter screenshotscirakg10 days4-0/+0
| | | | | | | | | | | | | - gen_vectors.py: RFC/FIPS/NIST vectors recomputed with Python's stdlib (openssl for AES) before use, plus seeded cases around SHA padding boundaries, 2038 and 2100; generates test/data/Vectors.mc. - 31 Monkey C tests (hashes, HMAC, PBKDF2, HKDF, AES, sealed records incl. every-byte tamper detection, Base32 errors, 100 OTP and 12 Steam vectors, clock, jobs) and a benchmark; pass on all four test devices. - Screenshot tolerance 0.01 %: one changed character no longer passes. - Golden images updated for version 0.2.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* test(tools): add screenshot, budget and product checks; enforce file headerscirakg10 days4-0/+0
- sim_screenshot.py finds the device drawing in the simulator window, crops the screen and compares it with approved golden images. - check_budgets.py reads key=value DIAG/HARNESS lines (the simulator console escapes quotes, so JSON was dropped). - ciq_test_report.py accepts SDK 9.2.0's real summary line `PASSED (passed=N, failed=N, errors=N)`; a captured log is a fixture. - gen_products.py checks all manifest products are watches with API 5.0+ and at least 512 KB for apps. - lint_project.py rule HDR001: every file carries the Author/Summary header (JSON keys, PNG text chunks; generated package-lock exempt). - make_icon.py --all draws one icon per launcher size in use. - Golden screenshots for fr255s, venusq2, fr70 and fr965. - 44 tests, warnings as errors, ruff and mypy --strict clean. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>