name: verify-remote-site description: After coding changes, fully verify and test the remote site (findtorontoevents.ca) using Playwright and HTTP fallback—events load, no JS errors, key features present.
Verify Remote Site
Use this skill when the user asks to verify remote site, test the live site, confirm findtorontoevents.ca works, or run remote verification after coding changes.
Root cause: FavCreators path (/fc/ not /favcreators/)
On the host, any URL path containing the segment "favcreators" returns 500 Internal Server Error (including direct requests to static files). The cause is server-side handling (e.g. a global rule, handler, or filter for that folder name) that fails. We avoid it by deploying the FavCreators app under a different path: /fc/.
- FavCreators guest:
https://findtorontoevents.ca/fc/#/guestorhttps://findtorontoevents.ca/findevents/fc/#/guest - Main site (Toronto Events): Often at
https://findtorontoevents.ca/findevents/(or root). For verification, set REMOTE_BASE or VERIFY_REMOTE_URL to the base that serves the main index (e.g.https://findtorontoevents.ca/findevents). - Quick Nav / menu: FavCreators link points to /fc/#/guest (not /favcreators/#/guest).
1. Run verification
Run:
npm run verify:remote
This:
- Runs Playwright against
https://findtorontoevents.ca(orVERIFY_REMOTE_URL):- Homepage 200
- Events grid visible
- Events count > 0 (cards or "N EVENTS FOUND")
- Filter UI (GLOBAL FEED / search) visible
- No critical JS errors (SyntaxError, ChunkLoadError, ModSecurity)
- Main chunk returns JavaScript
- Quick Nav and key links (e.g. FavCreators → /fc/#/guest)
- If Playwright fails or is unavailable, runs the HTTP fallback (no browser):
- Index 200 and HTML has
#events-gridand chunk refs - Chunk 200 and body is JS (not HTML/ModSecurity)
events.json200 and non-empty events array
- Index 200 and HTML has
2. Report result
- PASS: All checks passed; report "Remote verification passed."
- FAIL: Report the first failing check or error and suggest fixes (e.g. chunk blocked → see fix-toronto-events skill, FIX_SUMMARY.md).
3. Optional: different URL
For staging or another base URL:
VERIFY_REMOTE_URL=https://staging.example.com npm run verify:remote
4. When local verified passed and ready to deploy: cross-comparison
Run a cross-comparison so remote vs local can be checked for missing or outdated content:
- Ensure the local server is running (
python tools/serve_local.py). - Run:
npm run compare:local-vs-remote
This compares:
- Index: Chunk script list (remote must have at least the same chunks as local).
- Main chunk: Content hash; if different, remote may be outdated.
- events.json: Event count; warns if remote has 0 and local has > 0.
- <title>: Warns if index.html is out of sync.
FAIL = remote missing chunk(s) or remote chunk not valid JS. WARN = remote may be outdated or missing data. OK = remote in sync. If FAIL or WARN, deploy then re-run npm run verify:remote.
Env: LOCAL_BASE (default http://localhost:9000), REMOTE_BASE or VERIFY_REMOTE_URL (default https://findtorontoevents.ca). If the main site is under findevents, set REMOTE_BASE=https://findtorontoevents.ca/findevents (or VERIFY_REMOTE_URL) so index/chunk/events checks hit the correct base.
5. FTP / deploy
Verification does not use FTP. To deploy first (using FTP env vars), use the project deploy tools and then run npm run verify:remote. See .cursor/rules/ftp-credentials.mdc for FTP env vars.
Files
- Tests:
tests/verify_remote_site.spec.ts - Runner:
tools/verify_remote_site.js(Playwright then fallback) - Fallback:
tools/verify_remote_site_fallback.js(HTTP-only) - Compare:
tools/compare_local_vs_remote.js(local vs remote when ready to deploy) - Rule:
.cursor/rules/verify-remote-site.mdc