88 pull_request :
99 branches : [ main ]
1010
11+ defaults :
12+ run :
13+ shell : bash
14+
1115jobs :
1216 test-app :
1317 name : App
14-
1518 runs-on : ubuntu-latest
19+ timeout-minutes : 40
1620
1721 steps :
1822 - name : Checkout
@@ -29,55 +33,93 @@ jobs:
2933 - name : Cache pub dependencies
3034 uses : actions/cache@v4
3135 with :
32- path : ${{ env.FLUTTER_HOME }}/.pub-cache
36+ path : ${{ env.HOME }}/.pub-cache
3337 key : ${{ runner.os }}-pub-${{ hashFiles('**/pubspec.lock') }}
3438 restore-keys : ${{ runner.os }}-pub-
3539
3640 - name : Download pub dependencies
3741 run : flutter pub get
3842
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-
5143 - name : Run analyzer
5244 run : flutter analyze
5345
54- # - name: Run Dart code metrics
55- # run: flutter pub run dart_code_metrics:metrics analyze lib
56-
5746 - name : Run tests
5847 run : flutter test --coverage
5948
6049 - name : Install lcov
6150 run : sudo apt-get install -y lcov
6251
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
52+ - name : Upload test results
53+ if : always()
54+ uses : actions/upload-artifact@v4
55+ with :
56+ name : unit-test-results
57+ path : build/
58+
59+ - name : Clean coverage report
60+ run : |
61+ lcov --remove coverage/lcov.info \
62+ 'lib/**.gen.dart' \
63+ 'lib/generated/**' \
64+ 'lib/di/**' \
65+ 'lib/constants/**' \
66+ 'lib/routers/router.dart' \
67+ -o coverage/lcov.info \
68+ --ignore-errors unused
6869
6970 - name : Check Code Coverage
7071 uses :
VeryGoodOpenSource/[email protected] 7172 with :
7273 path : coverage/lcov.info
7374 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'
75-
76- - name : Upload coverage to codecov
75+ exclude : |
76+ **/*.g.dart
77+ **/*.gen.dart
78+ lib/di/**
79+ lib/generated/**
80+ lib/constants/**
81+ lib/routers/router.dart
82+
83+ - name : Upload coverage to Codecov
7784 uses : codecov/codecov-action@v5
7885
79- - name : Run codacy-coverage-reporter
86+ - name : Codacy Coverage Reporter
8087 uses : codacy/codacy-coverage-reporter-action@v1
8188 with :
82- project-token : ${{ secrets.CODACY_PROJECT_TOKEN }}
83- coverage-reports : ./coverage/lcov.info
89+ project-token : ${{ secrets.CODACY_PROJECT_TOKEN }}
90+ coverage-reports : ./coverage/lcov.info
91+
92+ integration-tests :
93+ name : Flutter Integration Tests
94+ runs-on : ubuntu-latest
95+ timeout-minutes : 60
96+ strategy :
97+ fail-fast : true
98+ matrix :
99+ api-level : [ 31 ]
100+
101+ steps :
102+ - name : Checkout
103+ uses : actions/checkout@v4
104+
105+ - name : Setup Flutter
106+ uses : subosito/flutter-action@v2
107+ with :
108+ channel : stable
109+
110+ - name : Enable KVM
111+ run : |
112+ echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
113+ sudo udevadm control --reload-rules
114+ sudo udevadm trigger --name-match=kvm
115+
116+ - name : Setup Android emulator and run integration tests
117+ uses : reactivecircus/android-emulator-runner@v2
118+ with :
119+ api-level : ${{ matrix.api-level }}
120+ arch : x86_64
121+ target : google_apis
122+ profile : Nexus 6
123+ script : |
124+ flutter pub get
125+ flutter test integration_test --flavor dev --timeout 1h
0 commit comments