# Webapp Deploy Smoke Test

> Run the Open StarTer Village external-network deploy smoke test after Fly.io alpha deployments or when verifying a fork. Use when checking public frontend availability, public game server health, multiplayer WebSocket behavior, reconnect behavior, latency, restart limitations, or UptimeRobot Discord alerting. Use when this capability is needed.

- Skill: `tomevault-io/webapp-deploy-smoke-test` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/webapp-deploy-smoke-test`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/webapp-deploy-smoke-test/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/webapp-deploy-smoke-test

---


# Webapp External-Network Deploy Smoke Test

## Overview

Use this workflow after deploying the Fly.io alpha from a real external network.
Do not rely only on localhost, a Fly private network, or logs from inside the
deployment environment.

## Inputs

Confirm these values before running the test:

- Public app origin, for example `https://open-star-ter-village.fly.dev`
- Public game server origin, usually the app origin on port `3001`
- GitHub issue or PR where the run should be recorded
- Whether the user authorizes alert tests or production restarts

## Public Probes

Run these checks from outside Fly.io:

- `GET https://<app>/` returns HTTP 200.
- `GET https://<app>/lobby` returns HTTP 200.
- `GET https://<app>:3001/health` returns HTTP 200 JSON.
- `GET https://<app>:3001/games/OpenStarTerVillage` returns HTTP 200 JSON.

If a check fails, collect the status code, response body, timestamp, and the
network used before moving on.

## Multiplayer Smoke Test

Use browsers or devices from real external networks when available. If three
distinct networks are not available, record the limitation instead of implying
full coverage.

- Phone on cellular opens `https://<app>/lobby` and the page loads.
- Three browsers from different networks create and join a 3-player match.
- Socket.IO handshake succeeds; DevTools Network shows WebSocket frames flowing.
- One client refreshes and reconnects within 5 seconds.
- Move latency is under 300 ms RTT.
- Server restart loses match state, and testers see or receive the documented
  alpha limitation.

Do not restart production or deliberately break a live match unless the user
explicitly authorizes that action.

## UptimeRobot Alert Test

Confirm the three UptimeRobot monitors cover:

- Frontend: `https://<app>/`
- Game server health: `https://<app>:3001/health`
- Game server lobby REST: `https://<app>:3001/games/OpenStarTerVillage`

When the user asks to test notifications, use UptimeRobot's test notification
flow and verify the Discord ops channel receives the alert. Do not expose
webhook URLs, API keys, or other secrets in reports.

## Report Format

Record the result as a GitHub issue or PR comment. Include:

- Run date and timezone
- App URL and game server URL
- Tester networks and browser/device mix
- Pass/fail status for each public probe and gameplay check
- Failures, screenshots, logs, and response snippets
- Whether UptimeRobot Discord notification was verified
- Any untested item and the reason it was skipped

---
> Source: [ocftw/open-star-ter-village](https://github.com/ocftw/open-star-ter-village) — distributed by [TomeVault](https://tomevault.io).
<!-- tomevault:4.0:skill_md:2026-06-21 -->

