Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Cloud: E2E coverage and documentation

Aperta
#799 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
35/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
firebase, lua, typescript

Direzione di ricerca

Start with lua-learning-website/e2e/fixtures.ts and the existing fixture pattern, then review dependencies #795 and #796 before adding the signed-in and admin coverage. Read the requested cloud documentation files and record the 500-file scale results and preview-channel checks. Done means all listed emulator specs, documentation updates, build, duplicates, lint, and typecheck pass.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

enhancement

Summary

End-to-end coverage of the full cloud accounts flow against the Firebase emulators, plus user and
developer documentation. Closes out the Cloud Accounts & Storage milestone.

E2E

lua-learning-website/e2e/fixtures.ts currently provides editorPage, cleanEditorPage,
explorerPage, and shellPage, each hardcoding page.goto('/editor'). Add a signed-in
fixture
backed by the Auth emulator, plus an admin fixture, as siblings.

Specs to add:

  • Sign in with an allowlisted account -> /cloud mounts and appears in the explorer
  • Create, edit, and delete a file in /cloud; reload -> content persists
  • Run a Lua script from /cloud in the shell; require and io.open both resolve
  • Upload a binary asset -> stored in Cloud Storage, not Firestore
  • Sign in with a non-allowlisted email -> exactly "{EMAIL} is not authorized.", user signed out
  • Exceed quota -> clear error, existing files untouched, editor content not lost
  • Admin panel: add/remove an allowlist email, add/remove a domain, change quotaBytes and maxFiles
  • Admin panel is unreachable for a non-admin
  • Sign out -> /cloud unmounts; virtual and local workspaces still work
  • Guest (never signed in) experience is unchanged

Scale check

Create a workspace of ~500 small files and confirm hydration streams with visible progress and an
acceptable cold-start time. This is the assumption in the whole design most likely to be
wrong
— if manifest-first + paged streaming is not fast enough, the mount strategy in
#792 needs revisiting before rollout.

Documentation

  • docs/cloud-storage.md: architecture, the Firestore/Storage split and the 256 KB spill
    threshold, quota model, admin runbook (add a user, add a domain, change a quota, bootstrap
    the first admin), emulator workflow, and the stated residual gap around client-reported
    usage prior to #797
  • docs/architecture.md updated to describe the cloud workspace type
  • CLAUDE.md updated if the emulator step becomes part of the standard test command

Acceptance criteria

  • All specs above pass against the emulators
  • Signed-in and admin fixtures added to e2e/fixtures.ts following the existing pattern
  • 500-file scale check performed and results recorded in this issue
  • docs/cloud-storage.md and docs/architecture.md updated
  • Full manual pass on a Firebase Hosting preview channel (see below)
  • npm run build, npm run duplicates, lint, and typecheck all pass

Manual verification on a preview channel

The COOP/COEP headers and the signInWithRedirect flow cannot be reproduced under
vite dev
— they only exist on Firebase Hosting. In particular:

  • Assert window.crossOriginIsolated === true after completing sign-in, proving the auth
    flow did not cost us SharedArrayBuffer
  • Run a canvas/WASM demo post-sign-in to confirm the runtime still works
  • Confirm the Google account chooser appears even when already signed into Google
  • Sign in on a second device and confirm live sync

Depends on

  • #795
  • #796

Branching

This issue is part of the Cloud Accounts & Storage
milestone, which uses feat/cloud as its integration branch.

Branch from feat/cloud, and open the PR against feat/cloud. Never against main.

Create the branch (the --base flag also sets the default PR target for this branch):

gh issue develop <number> --base feat/cloud --checkout

Open the PR:

python3 scripts/issue-review.py <number> --base feat/cloud \
  --summary "<summary>" --test-plan "<test-plan>"

feat/cloud merges to main in a single PR once the milestone is complete.

Why both flags are required: gh issue develop without --base branches from the repository
default branch (main), and scripts/issue-review.py falls back to main when --base is
omitted — both for the gh pr create target and for the changed-file list in the PR body.

Lingua principale
TypeScript
Stelle
1
Fork
0
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di jcollard/LuaInTheWeb

Tutte le issue di jcollard/LuaInTheWeb

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.