Quality Assurance

Tested Before You See It

Production-grade quality discipline

Every feature is tested before it reaches your device. The full Zovia codebase carries over 9,700 automated tests across 36 packages and 8 apps. We catch bugs so you do not have to.

9,700+

Automated tests

36 + 8

Packages and apps

Local

Pre-push test gate

Four Layers of Protection

Every line of code passes through multiple layers of automated testing before it reaches production.

Unit Testing

Every piece of code is tested in isolation. When we change a payment flow or update authentication, hundreds of automated tests verify that everything still works exactly as it should.

  • Data serialization and validation
  • Service initialization and configuration
  • Error handling and edge cases
  • State management and updates

Integration Testing

We test how different parts of our apps work together. Our IntegrationTestHarness provides timing control, navigation tracking, and snackbar verification for realistic async testing scenarios.

  • AsyncBehavior for timing simulation
  • NavigationTracker for route verification
  • SnackbarTracker for feedback testing
  • Real Navigator for panel push and pop

End-to-End Testing

Real user flows tested automatically. Sign in, create a counter, schedule a reminder, sign out: we simulate actual usage patterns to catch issues before you ever see them.

  • Complete authentication flows
  • Feature workflows start to finish
  • Navigation and state persistence
  • Data integrity across sessions

Discipline Over Automation

Tests run locally before every push, no exceptions. CI workflows are available on demand for full-suite runs and platform builds. The discipline lives with the developer, not in a YAML file that can be skipped.

  • Local flutter test gate before every push
  • Cloud schema validation before every deploy
  • On-demand full suite runs via workflow_dispatch
  • Build verification for iOS and Android before App Store and Play submissions

Run On Demand, Verified Locally

The discipline is local. The infrastructure is available when needed.

Local Pre-Push Gate

Every push

Developer runs flutter test (and cd zovia-cloud-code && npm run validate:schema for cloud changes) before every git push. The 'stone it' command bundles tests, commit, and push into one motion that fails fast on regressions.

Full Suite (workflow_dispatch)

On demand

A complete test suite across all 36 packages can be triggered from the GitHub Actions UI when needed: before a release, during an investigation, or to seed a coverage report.

Integration Test Pipeline

On demand

Full integration testing using our IntegrationTestHarness, catches bugs that unit tests miss: widget disposal during async, callback errors, double-tap prevention.

Our Quality Standards

Tiered, honest, and visible. These are the live numbers, not aspirations.

Tiered Coverage

85-95%

Critical packages like zovia_auth, zovia_sync, zovia_init, zovia_core_base, zovia_test_utils, and z_design carry 85 to 95 percent line coverage. UI surfaces and game-only packages run lower by design.

Cloud Coverage

Improving

Cloud function coverage is the active improvement front. Critical auth, IAP, and privacy flows are covered first. Less critical jobs are being brought up over time.

Test Execution Speed

Fast

Unit tests run quickly so the pre-push gate stays painless. Slow tests get refactored rather than skipped.

Regression Detection

Pre-push

The pre-push gate catches regressions before code leaves the developer's laptop. CI is the safety net, not the primary signal.

Tests by Package and App

Counts measured from the source tree on the most recent release. Coverage figures are from the most recent measured run; individual packages drift between formal coverage audits.

Tested Packages

z_design
668 tests 89%
zovia_spaces
584 tests 60%
zovia_auth
453 tests 95%
zovia_search
432 tests 60%
zovia_sync
420 tests 94%
zovia_intelligence
361 tests 72%
zovia_init
355 tests 90%
zovia_analytics
303 tests 60%
zovia_notifications
296 tests 70%
zovia_core_base
279 tests 92%
z_game_shell
267 tests 40%
zovia_permissions
263 tests 85%
zovia_game_events
189 tests 92%
zovia_maps
188 tests 68%
z_app_shell
185 tests 70%
zovia_test_utils
155 tests 95%
zovia_device_manager
153 tests 55%
zovia_daily_challenges
147 tests 75%
zovia_vision
141 tests 75%
zovia_payments
136 tests 85%
zyve
600 tests 65%
zots
568 tests 70%
zupply
282 tests 60%
  • 9,700+ automated tests across 36 packages and 8 apps
  • Tiered coverage with critical packages at 85 to 95 percent
  • Shared testing infrastructure via zovia_test_utils and zovia_test_harness
  • Integration testing with AsyncBehavior timing control
  • Pre-push local test gate enforced via the 'stone it' workflow

Our Commitment to Quality

Quality is not negotiable. Every feature is tested before you see it. Every update is verified before it ships. The discipline lives in the developer's workflow, not in a YAML file.

Test before you push, every time

No feature ships without comprehensive tests

Local gate first, CI as the safety net

Continuous improvement, coverage goals raised quarterly

Transparency, the numbers above are measured, not aspirational