Skip to content

Commit 87fbb7a

Browse files
authored
Merge pull request #5 from ashtanko/feature/integration_test_ci_job
Add CI job for integration tests
2 parents b656f71 + e44f484 commit 87fbb7a

File tree

2 files changed

+71
-29
lines changed

2 files changed

+71
-29
lines changed

.github/workflows/ci.yml

Lines changed: 70 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,15 @@ on:
88
pull_request:
99
branches: [ main ]
1010

11+
defaults:
12+
run:
13+
shell: bash
14+
1115
jobs:
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

integration_test/app_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,5 @@ void main() {
2424
await tester.pumpAndSettle();
2525

2626
expect(find.textContaining('Mission'), findsAtLeast(1));
27-
});
27+
}, timeout: Timeout.none);
2828
}

0 commit comments

Comments
 (0)