Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions docs/verification/issue-34/analyze.log
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
$ flutter analyze

Upgrading analysis_options.yaml to exclude build and platform directories.
Analyzing flutter-starter...
No issues found! (ran in 3.8s)
exit: 0
7 changes: 7 additions & 0 deletions docs/verification/issue-34/audit_template.log
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
│ 💡 Navigation: Route Pushed | Context: {"routeName":"login","routePath":"login"}
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
01:12 +2229 ~1: /Users/nguyenanhkiet/Playground/flutter-starter/test/main_test.dart: HomeScreen should create HomeScreen widget
01:12 +2230 ~1: /Users/nguyenanhkiet/Playground/flutter-starter/test/main_test.dart: HomeScreen should display welcome message
01:12 +2231 ~1: /Users/nguyenanhkiet/Playground/flutter-starter/test/main_test.dart: HomeScreen should have app bar with title
01:12 +2232 ~1: All tests passed!
exit: 0
26 changes: 26 additions & 0 deletions docs/verification/issue-34/criteria-1-4-flavor-removed.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Criterion 1: --flavor is gone; nothing references a nonexistent flavor

$ grep -rn -- '--flavor' .github/workflows/
.github/workflows/build.yml:20: # --flavor made `flutter build apk` fail with

The single remaining occurrence of the word is the explanatory comment in
build.yml recording why it must not come back:
# NOT a Gradle product flavor. This project configures itself through
# `.env` layering and --dart-define (see docs/guides/configuration.md and
# lib/core/config/app_config.dart, which reads ENVIRONMENT). No
# productFlavors are declared in android/app/build.gradle.kts, so passing
# --flavor made `flutter build apk` fail with
# "Task 'assembleDevelopmentRelease' not found".
environment:
description: 'Value passed as --dart-define=ENVIRONMENT'
required: true

# Criterion 4: the input and its description were renamed together
22: environment:
23- description: 'Value passed as --dart-define=ENVIRONMENT'
24- required: true

Project convention this now matches:
29: /// - .env file: `ENVIRONMENT=production`
30: /// - --dart-define: `--dart-define=ENVIRONMENT=production`
33: EnvConfig.get('ENVIRONMENT', defaultValue: 'development').toLowerCase();
18 changes: 18 additions & 0 deletions docs/verification/issue-34/criteria-2-3-dispatched.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Criteria 2 and 3: both platforms dispatched and verified

-- Criterion 2: platform=android (previously FAILED at Build APK) --
run 32971439671 workflow_dispatch completed/success
JOBS
✓ Build Android in 6m23s (ID 98185885895)
- Build Web (ID 98185890163)
- Build iOS (no codesign) (ID 98185890255)
artifact: android-apks-development 32223960 bytes

-- Criterion 3: platform=web (must not regress) --
run 32971452663 completed/success
artifact: web-build-development 14226706 bytes

BEFORE (run 32966668310, --flavor still present):
X Build APK
Task 'assembleDevelopmentRelease' not found in root project 'android'
[!] does not define any custom product flavors. You cannot use --flavor.
23 changes: 23 additions & 0 deletions docs/verification/issue-34/criterion-5-deploys.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Criterion 5: deploy workflows made consistent, and NOT dispatched

deploy-android.yml carried '--flavor "$ENV"' inside its commented-out build
template. Removed, so uncommenting it does not reproduce the bug:
# fi

# flutter build appbundle \
# --release \
# --dart-define=ENVIRONMENT="$ENV" \
# --dart-define=BASE_URL="$BASE_URL"


deploy-ios.yml turned out to have NO --flavor line. I asserted it did and the
assertion in the edit script caught the wrong assumption:
# fi

# flutter build ipa \
# --release \
# --dart-define=ENVIRONMENT="$ENV" \
# --dart-define=BASE_URL="$BASE_URL"

Neither deploy workflow was dispatched: they publish to the Play Store and
App Store Connect. Verifying them is out of scope and would risk a release.
4 changes: 4 additions & 0 deletions docs/verification/issue-34/format.log
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
$ dart format --set-exit-if-changed lib test integration_test tool examples

Formatted 333 files (0 changed) in 1.04 seconds.
exit: 0
124 changes: 124 additions & 0 deletions docs/verification/issue-34/tests.log
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
$ flutter test --timeout=5m --reporter compact

00:02 +50: /Users/nguyenanhkiet/Playground/flutter-starter/test/core/config/app_config_test.dart: AppConfig Debug utilities should have printConfig method
═══════════════════════════════════════════════════════════
📱 App Configuration
═══════════════════════════════════════════════════════════
Environment: development
Debug Mode: true
Release Mode: false

🌐 API Configuration:
Base URL: http://localhost:3000
Timeout: 30s
Connect Timeout: 10s
Receive Timeout: 30s
Send Timeout: 30s
SSL Pinning Enabled: false
SSL Fingerprints Configured: 0

🚩 Feature Flags:
Logging: true
Analytics: false
Crash Reporting: false
Performance Monitoring: false
Debug Features: true
HTTP Logging: true

📦 App Info:
Version: 1.0.0
Build Number: 1
═══════════════════════════════════════════════════════════
00:02 +78: /Users/nguyenanhkiet/Playground/flutter-starter/test/core/config/app_config_test.dart: AppConfig Edge Cases printConfig should not throw in debug mode
═══════════════════════════════════════════════════════════
📱 App Configuration
═══════════════════════════════════════════════════════════
Environment: development
Debug Mode: true
Release Mode: false

🌐 API Configuration:
Base URL: http://localhost:3000
Timeout: 30s
Connect Timeout: 10s
Receive Timeout: 30s
Send Timeout: 30s
SSL Pinning Enabled: false
SSL Fingerprints Configured: 0

🚩 Feature Flags:
Logging: true
Analytics: false
Crash Reporting: false
Performance Monitoring: false
Debug Features: true
HTTP Logging: true

📦 App Info:
Version: 1.0.0
Build Number: 1
═══════════════════════════════════════════════════════════

[... 686 lines elided by scripts/test/run_acceptance.sh.
Full output is reproducible by re-running the command above. ...]

└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
01:15 +2221 ~1: /Users/nguyenanhkiet/Playground/flutter-starter/test/main_test.dart: MyApp should use light theme by default
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
│ #0 LoggingService.info (package:flutter_starter/core/logging/logging_service.dart:123:13)
│ #1 NavigationLoggingObserver._logNavigation (package:flutter_starter/core/routing/navigation_logging.dart:73:21)
├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
│ 💡 Navigation: Route Pushed | Context: {"routeName":"login","routePath":"login"}
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
01:15 +2222 ~1: /Users/nguyenanhkiet/Playground/flutter-starter/test/main_test.dart: MyApp should have dark theme configured
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
│ #0 LoggingService.info (package:flutter_starter/core/logging/logging_service.dart:123:13)
│ #1 NavigationLoggingObserver._logNavigation (package:flutter_starter/core/routing/navigation_logging.dart:73:21)
├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
│ 💡 Navigation: Route Pushed | Context: {"routeName":"login","routePath":"login"}
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
01:15 +2223 ~1: /Users/nguyenanhkiet/Playground/flutter-starter/test/main_test.dart: MyApp should configure router correctly
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
│ #0 LoggingService.info (package:flutter_starter/core/logging/logging_service.dart:123:13)
│ #1 NavigationLoggingObserver._logNavigation (package:flutter_starter/core/routing/navigation_logging.dart:73:21)
├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
│ 💡 Navigation: Route Pushed | Context: {"routeName":"login","routePath":"login"}
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
01:15 +2224 ~1: /Users/nguyenanhkiet/Playground/flutter-starter/test/main_test.dart: MyApp should configure localization delegates
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
│ #0 LoggingService.info (package:flutter_starter/core/logging/logging_service.dart:123:13)
│ #1 NavigationLoggingObserver._logNavigation (package:flutter_starter/core/routing/navigation_logging.dart:73:21)
├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
│ 💡 Navigation: Route Pushed | Context: {"routeName":"login","routePath":"login"}
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
01:15 +2225 ~1: /Users/nguyenanhkiet/Playground/flutter-starter/test/main_test.dart: MyApp should configure supported locales
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
│ #0 LoggingService.info (package:flutter_starter/core/logging/logging_service.dart:123:13)
│ #1 NavigationLoggingObserver._logNavigation (package:flutter_starter/core/routing/navigation_logging.dart:73:21)
├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
│ 💡 Navigation: Route Pushed | Context: {"routeName":"login","routePath":"login"}
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
01:15 +2226 ~1: /Users/nguyenanhkiet/Playground/flutter-starter/test/main_test.dart: MyApp should use locale from provider
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
│ #0 LoggingService.info (package:flutter_starter/core/logging/logging_service.dart:123:13)
│ #1 NavigationLoggingObserver._logNavigation (package:flutter_starter/core/routing/navigation_logging.dart:73:21)
├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
│ 💡 Navigation: Route Pushed | Context: {"routeName":"login","routePath":"login"}
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
01:16 +2227 ~1: /Users/nguyenanhkiet/Playground/flutter-starter/test/main_test.dart: MyApp should configure text direction from provider
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
│ #0 LoggingService.info (package:flutter_starter/core/logging/logging_service.dart:123:13)
│ #1 NavigationLoggingObserver._logNavigation (package:flutter_starter/core/routing/navigation_logging.dart:73:21)
├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
│ 💡 Navigation: Route Pushed | Context: {"routeName":"login","routePath":"login"}
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
01:16 +2228 ~1: /Users/nguyenanhkiet/Playground/flutter-starter/test/main_test.dart: MyApp should wrap content in RepaintBoundary
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
│ #0 LoggingService.info (package:flutter_starter/core/logging/logging_service.dart:123:13)
│ #1 NavigationLoggingObserver._logNavigation (package:flutter_starter/core/routing/navigation_logging.dart:73:21)
├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
│ 💡 Navigation: Route Pushed | Context: {"routeName":"login","routePath":"login"}
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
01:16 +2232 ~1: 1 skipped test.
01:16 +2232 ~1: All other tests passed!
exit: 0
Loading