88 pull_request :
99 branches : [ main ]
1010
11+ concurrency :
12+ group : ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
13+ cancel-in-progress : true
14+
15+ defaults :
16+ run :
17+ shell : bash
18+
1119jobs :
1220 test-app :
1321 name : App
14-
1522 runs-on : ubuntu-latest
23+ timeout-minutes : 40
1624
1725 steps :
1826 - name : Checkout
19- uses : actions/checkout@v3
27+ uses : actions/checkout@v5
2028
2129 - name : Setup Flutter
2230 uses : subosito/flutter-action@v2
@@ -29,55 +37,102 @@ jobs:
2937 - name : Cache pub dependencies
3038 uses : actions/cache@v4
3139 with :
32- path : ${{ env.FLUTTER_HOME }}/.pub-cache
40+ path : ${{ env.HOME }}/.pub-cache
3341 key : ${{ runner.os }}-pub-${{ hashFiles('**/pubspec.lock') }}
3442 restore-keys : ${{ runner.os }}-pub-
3543
3644 - name : Download pub dependencies
3745 run : flutter pub get
3846
39- # - name: Pub Global
40- # run: dart pub global activate flutter_gen
41-
42- # - name: Build runner
43- # run: flutter packages pub run build_runner build --delete-conflicting-outputs
44-
45- # - name: Generate intl
46- # run: flutter pub run intl_utils:generate
47-
48- # - name: Run fluttergen
49- # run: fluttergen -c pubspec.yaml
50-
5147 - name : Run analyzer
5248 run : flutter analyze
5349
54- # - name: Run Dart code metrics
55- # run: flutter pub run dart_code_metrics:metrics analyze lib
56-
5750 - name : Run tests
5851 run : flutter test --coverage
5952
6053 - name : Install lcov
6154 run : sudo apt-get install -y lcov
6255
63- - name : Remove generated files from code coverage report
64- run : lcov --remove coverage/lcov.info 'lib/*/*.gen.dart' 'lib/generated/*.dart' 'lib/generated/*/*.dart' 'lib/di/*.dart' '**/lib/constants/' 'lib/constants/*.dart' -o coverage/lcov.info --ignore-errors unused
65-
66- - name : Remove router from code coverage report
67- run : lcov --remove coverage/lcov.info 'lib/routers/router.dart' -o coverage/lcov.info --ignore-errors unused
56+ - name : Upload test results
57+ if : always()
58+ uses : actions/upload-artifact@v4
59+ with :
60+ name : unit-test-results
61+ path : build/
62+
63+ - name : Clean coverage report
64+ run : |
65+ lcov --remove coverage/lcov.info \
66+ 'lib/**.gen.dart' \
67+ 'lib/generated/**' \
68+ 'lib/di/**' \
69+ 'lib/constants/**' \
70+ 'lib/routers/router.dart' \
71+ -o coverage/lcov.info \
72+ --ignore-errors unused
6873
6974 - name : Check Code Coverage
70- uses : VeryGoodOpenSource/very_good_coverage@v1.2.1
75+ uses : VeryGoodOpenSource/very_good_coverage@v3.0.0
7176 with :
7277 path : coverage/lcov.info
7378 min_coverage : 59
74- exclude : ' **/*.g.dart **/*.gen.dart **/lib/di/ lib/generated/ **/lib/generated/ lib/di/*.dart **/lib/constants/ lib/constants/*.dart/ lib/routers/router.dart'
79+ exclude : |
80+ **/*.g.dart
81+ **/*.gen.dart
82+ lib/di/**
83+ lib/generated/**
84+ lib/constants/**
85+ lib/routers/router.dart
86+
87+ - name : Upload coverage to Codecov
88+ uses : codecov/codecov-action@v5
89+
90+ - name : Codacy Coverage Reporter
91+ uses : codacy/codacy-coverage-reporter-action@v1
92+ with :
93+ project-token : ${{ secrets.CODACY_PROJECT_TOKEN }}
94+ coverage-reports : ./coverage/lcov.info
7595
76- - name : Upload coverage to codecov
77- uses : codecov/codecov-action@v3
96+ integration-tests :
97+ name : Flutter Integration Tests
98+ runs-on : ubuntu-latest
99+ timeout-minutes : 60
100+ strategy :
101+ fail-fast : true
102+ matrix :
103+ api-level : [ 31 ]
78104
79- - name : Run codacy-coverage-reporter
80- uses : codacy/codacy-coverage-reporter-action@v1
105+ steps :
106+ - name : Checkout
107+ uses : actions/checkout@v5
108+
109+ - name : Setup Flutter
110+ uses : subosito/flutter-action@v2
111+ with :
112+ channel : stable
113+
114+ - name : Enable KVM
115+ run : |
116+ echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
117+ sudo udevadm control --reload-rules
118+ sudo udevadm trigger --name-match=kvm
119+
120+ - name : Setup Android emulator and run integration tests
121+ uses : reactivecircus/android-emulator-runner@v2
81122 with :
82- project-token : ${{ secrets.CODACY_PROJECT_TOKEN }}
83- coverage-reports : ./coverage/lcov.info
123+ api-level : ${{ matrix.api-level }}
124+ arch : x86_64
125+ target : google_apis
126+ profile : Nexus 6
127+ script : |
128+ flutter pub get
129+ flutter test integration_test/app_test.dart --flavor dev
130+ flutter test integration_test/appearance_test.dart --flavor dev
131+ flutter test integration_test/launch_navigation_test.dart --flavor dev
132+ flutter test integration_test/launch_test.dart --flavor dev
133+ flutter test integration_test/launches_mock_test.dart --flavor dev
134+ flutter test integration_test/launches_test.dart --flavor dev
135+ flutter test integration_test/settings_test.dart --flavor dev
136+ flutter test integration_test/rockets_screen_integration_test.dart --flavor dev
137+ flutter test integration_test/rocket_screen_test.dart --flavor dev
138+ flutter test integration_test/rockets_integration_live_test.dart --flavor dev
0 commit comments