rastrillo / aviso Public
iOS smoke test
The one check no automated test in this repository can make. The browser drive proves the module, the worker import and the handlers agree in Chromium with a subscription double; Chromium's own push subscription cannot be pointed at a test service, and iOS cannot be driven at all. So this is a person, a phone, and ten minutes, run before a release that touches the JS halves or the handlers.
Last run: not yet. Record the date, iOS version and outcome at the bottom when it is.
Setup
- Deploy the example (or any app wired per
SKILL.md) at an https origin the phone can reach.http://localhostis a secure context on the machine itself, not across a network; use a real origin or a tunnel that terminates TLS. - Provision the key once and keep it across restarts:
EXAMPLE_VAPID_PRIVATE_KEY="$(cat .vapid-key)". - iPhone or iPad on iOS/iPadOS 16.4 or later, in Safari.
Steps and expected outcomes
- Open the origin in Safari. The page loads; the coaching paragraph about the Home Screen is visible; the buttons are disabled (Safari-in-browser reports
push: falseon iOS, so the log says the browser cannot do push). - Share → Add to Home Screen. Open the installed copy. The coaching paragraph is hidden (
standalonetrue); after the worker activates, the buttons are enabled; the log showssubscribed: false. - Tap Enable. iOS shows its permission prompt (it must come from the tap — if no prompt appears, the gesture was lost). Allow. The log shows
enabled: https://web.push.apple.com/…. On the server, one row fordev. - Tap Notify me. A notification appears in the system tray with the title "Hello from aviso" while the app is in the foreground and again after backgrounding the app and tapping Notify from another device or a curl to
/notify. - Tap the notification. The installed app comes to the front at
/(the payload'surl). - Tap Disable. The log shows
disabled; the server has zero rows. Close the app fully and reopen it: the log showssubscribed: falseand the server still has zero rows — reconcile must not re-enrol after an opt-out. - Tap Enable again, then rotate the key on the server (new
EXAMPLE_VAPID_PRIVATE_KEY, restart). Reopen the app: reconcile re-subscribes under the new key without a prompt, and Notify delivers again. - Remove the app from the Home Screen. The next send reports 410 from Apple's push service and the row is pruned.
Recording a run
| Date | iOS | Device | Steps passed | Notes | |------|-----|--------|--------------|-------| | | | | | |