Repository navigation
Soft Launch Coverage
Issue #796. Line coverage comes from unit and widget tests, including headless Patrol widget tests. Maestro and device Patrol guard the critical path. They are not the line-coverage driver.
From the repository root, with Flutter on PATH:
dart run tool/run_soft_launch_coverage.dartThe same command is rps coverage.
What it does:
- Runs every file in
tool/ci_widget_test_manifest.txtwithflutter test --coverage. - Prints an overall percentage and soft-launch slices (auth, spaces, vote & feedback, home, reflections, appwrite, install links) via
tool/lcov_summary.dart. - Checks the 40% floor with
tool/check_line_coverage.dart.
The percentage is the share of lines loaded by that run, not every Dart line in the repository. Pull request CI runs the same manifest and the same floor.
charlatan 0.5.0 on pub.dev declares sdk: <3.0.0 and does not resolve on the Dart 3.13 pin. HTTP fixtures use nock plus JSON cassettes in test/fixtures/http/. Nock replaces dart:io HttpClient, which is what package:http and the Appwrite SDK use. The feedback-forward function and TablesDB reflection rows are covered that way. Tests must not call live Firebase or Appwrite.
Headless cases use patrolWidgetTest from patrol_finders and already sit in the manifest, so they are in coverage/lcov.info:
-
test/features/soft_launch/soft_launch_critical_path_patrol_test.dart— Home chrome, Spaces → Links → pending Community Guidelines, Vote & Feedback, and the unsigned sign-in wall. - Existing
patrolWidgetTestfiles that were already on the manifest (feed round trip, voting sheet, and others).
Device Patrol still needs a phone or emulator and is not part of the default percentage:
patrol test --target integration_test/patrol_ftl_home_shell_test.dartintegration_test/ also has patrolTest flows for Firebase Test Lab. Run those with dart run tool/run_firebase_test_lab.dart when a device or lab target is available.
Maestro does not write lcov.info. The soft-launch smoke set is:
| Flow | What it guards |
|---|---|
.maestro/sign_in_wall_unsigned.yaml |
Auth soft-gate. A signed-out launch stays on the sign-in wall. No saved account. |
.maestro/spaces_navigation_and_monogram_flow.yaml |
Spaces, the Links section (Community Guidelines, DFW Church, Android app), then the member directory. Does not tap links that leave the app. |
.maestro/feature_voting_flow.yaml |
Vote & Feedback opens. Read-only of the vote counts; it does not cast a vote. |
maestro test .maestro/sign_in_wall_unsigned.yaml \
.maestro/spaces_navigation_and_monogram_flow.yaml \
.maestro/feature_voting_flow.yamlThe spaces and vote flows sign in through .maestro/subflows/dev_saved_account_home.yaml. Credentials stay in the environment (BELONG_DEV_E2E_EMAIL, MAESTRO_TEST_PASSWORD). Do not commit them. Do not create extra production accounts or post into the live community from these flows.
Web smoke, when a local release server is up, is documented in Maestro-UI-Tests.md. feature_voting_web.yaml covers Vote & Feedback on the web build.
Belong on the Spectrum • Powered by Refuge
belongonthespectrum.com • Partnered with DFW Church • "Fearfully & Wonderfully Made" (Psalm 139:14)
- 🏠 Welcome
- 🤝 Business & Partnership Overview
- 🤝 How You Can Help
- 📅 After October 31 — solid 1.0
- 🏘️ Our Community Spaces
- ❓ Questions for Members and Organizers
- 📱 Why Belong Is Not in the App Stores Yet
- 📱 Get Belong on Your Phone
- 🤖 Android open beta & Google signup
- 📱 Put Belong on Your Phone
- 📱 More about Using Belong from the Web
- 🎥 Android Home-Screen Pictures
- 📣 Update the Welcome Message
- Ban a Member
- 📥 Bring Past Posts Over
- 🧪 Longer Testing Checklist
- 👤 Dev example accounts (David M. & Sarah K.)
- 🌿 Calm Design and Sensory Comfort
- 🌸 Gentle Notifications
- 🚪 Delete your account, and come back
- 🚌 Bus Protocol & Continuity
- 📋 Notes for First Meeting with Human Reviewer
- 🧭 Architecture Overview & ADRs (0001–0010)
- 🐛 Bug Reporting & In-App Feedback SDK Evaluation
- 🎨 Circle Post Creation Pattern & Calm Improvements
- ⚙️ Deep Technical Breakdown: Android APK vs. Web PWA
- ⚖️ Backend Strategy: Appwrite Core + Firebase Edge (ADR-0009)
- 🗄️ One Database Plus a Backup (ADR-0011)
- 🗄️ Leave-alone free backends
- 🗄️ Firestore to Appwrite backup (first pass)
- 🔌 Serverpod Deprecation & $0/Mo Teardown Guide
- 🔔 Calm Notifications Architecture (ADR-0010)
- 💬 Direct Message Alerts (ADR-0012)
- 💬 Direct Message Push Function
- 📝 Feedback Forward Function
- 🔔 Notifications Technical Architecture & State
- 🗄️ Backend & Database Architecture
- 📡 Dual Observability, Analytics & Crash Reporting
- ⏸️ Appwrite Free Pause and Session Audit
- 🧪 QA, Device Driving & Beta Testing
- 🎥 Maestro UI Tests
- 📱 Real Device Driving & Maestro Automation
- 📋 Comprehensive Test Cases & QA Matrix
- 🧪 Firebase Test Lab & Patrol Integration Guide
- 🤝 Contributor & Worktree Workflow
- 🤖 Local LLMs & Token Quota Preservation Strategy
- 🎓 Apprentice, Mentee & Token Optimization Guide
- 📿 Agent Harness 2.0 & Token Quota Preservation
- 🎓 Engineering Lessons Learned & Accomplishments
- 💬 Threaded Comments & Nested Discussion Architecture
- 🛠️ Refuge CLI Developer Tool
- 🧪 CI/CD FAQ and Troubleshooting
- 🚦 Ops / Deploy readiness (Blaze $0–$5)
- 🚌 Bus Protocol & Continuity
- 🏆 Engineering Showcase