Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Cloud: E2E coverage and documentation

Đang mở
#799 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
35/100
Loại issue
Tính năng
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
firebase, lua, typescript

Hướng nghiên cứu

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.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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.

Ngôn ngữ chính
TypeScript
Star
1
Fork
0
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của jcollard/LuaInTheWeb

Tất cả issue của jcollard/LuaInTheWeb

Issue tương tự

Thêm issue về TypeScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.