Skip to content

Workflow for updating example screener #410

@prestoncabe

Description

@prestoncabe

Issues to overcome

  • codespaces has a configurable idle timeout that I don't understand fully (apparently click around the web app isn't considered activity... )
  • when the firebase emulators don't shut down gracefully, there is data loss even if you've configured them to export data when stopping.
  • Codespace run through the browser is flaky in terms of using the generated proxy URLs (*-5173.app.github.dev) to test the app

Proposed MVP workflow for editing example screener)

  • Open VS Code
    • make sure codespaces extension is installed
  • create new codespace (from main branch)
  • wait for codespace to spin up and open the web app (automatically, ~3-5 minutes)
  • create a fake google account to login
  • the new account should come with a copy of the latest version of the example screener
  • make edits to the screener/custom checks.
  • when finished editing, run the save example screener script (see Create way to export example screener from local emulator #396)
  • make a git commit
  • push
  • (optional) create a new user to verify that the changes are reflected in their copy of the example screener!
  • stop/delete codespace

Nice to have:

  • compress save/commit/push into one step

Todo

  • Work w/ Josh to merge Feat/account creation hook #363
  • Test workflow myself (Preston)
  • Draft documentation of the workflow
  • Extra credit: augment save script to also commit and push
  • Pair w/ @sierscse to test workflow with her

Older thoughts (before experiencing flakiness with the proxy URLs):
### Immediate ideas:

- [x] have a dedicated "tester" github account for codespace of this type (so it can be shared and therefore restarted by more than just me).
- [ ] is there a hook that can be run to do emulator export before shuthdown due to timeout?
- [ ] have a script automatically persist the data to disk at a set interval (so any data loss due to timeout or otherwise is minimal)
- [ ] share credentials

#### Other ideas:
- [ ] - set the default idle timeout for codespaces to something really long
- [ ] - more tightly manage/automate/control codespaces with github actions?


Longer term, might be better to just pay for a dedicated server somewhere, or, replicate the prod environment more closely (both of which would be higher effort and cost; codespaces is free from CfP)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions