Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
9f0d0de
:green_heart: Add documentation github actions
MaxMichel2 Mar 16, 2026
251b7bd
:green_heart: Add release github actions
MaxMichel2 Mar 16, 2026
6b7e1a6
:green_heart: Add close issues github actions
MaxMichel2 Mar 16, 2026
573103f
:green_heart: Add build github actions
MaxMichel2 Mar 16, 2026
0fc543c
:sparkles: Update gradle properties
MaxMichel2 Mar 17, 2026
1673d88
:green_heart: Improve jobs
MaxMichel2 Mar 19, 2026
407a987
:white_check_mark: Add Konsist tests
MaxMichel2 Mar 19, 2026
17c00d6
:white_check_mark: Add test structure
MaxMichel2 Mar 20, 2026
0fe389e
:white_check_mark: Add DevView module tests
MaxMichel2 Mar 20, 2026
c561eb9
:white_check_mark: Add Analytics module tests
MaxMichel2 Mar 20, 2026
cf60f83
:white_check_mark: Add FeatureFlip module tests
MaxMichel2 Mar 20, 2026
41662d7
:white_check_mark: Add Utils module tests
MaxMichel2 Mar 20, 2026
43fd15a
:white_check_mark: Add NetworkMock module tests
MaxMichel2 Mar 20, 2026
ed997d7
:white_check_mark: Add Kover and tests to GitHub actions
MaxMichel2 Mar 23, 2026
908b711
:white_check_mark: Add better coverage for tests
MaxMichel2 Mar 23, 2026
860ab80
:white_check_mark: Fix Konsist test issues
MaxMichel2 Mar 27, 2026
b386e02
:memo: Add Dokka documentation
MaxMichel2 Mar 27, 2026
46c4d99
:bug: Make scripts executable
MaxMichel2 Mar 27, 2026
a5b7758
:bug: Fix incorrect emulator test setup
MaxMichel2 Mar 27, 2026
c3ea3d0
:sparkles: Add CHANGELOG file
MaxMichel2 Mar 27, 2026
21a2f70
:green_heart: Update CI workflow
MaxMichel2 Mar 27, 2026
30857ee
:white_check_mark: Add test configurations to project
MaxMichel2 Mar 27, 2026
9e9be01
:bug: Fix test issues
MaxMichel2 Mar 27, 2026
09a8330
:memo: Update documentation issues
MaxMichel2 Mar 27, 2026
fe03e27
:white_check_mark: Add log for coverage
MaxMichel2 Mar 27, 2026
8057aee
:white_check_mark: Fix rebase issues
MaxMichel2 Apr 14, 2026
f4e0ed2
:bug: Possible fix for UI tests
Apr 14, 2026
4025751
:bug: Try to fix UI tests job
MaxMichel2 May 20, 2026
e5e1851
:bug: Update target Device tests versions
MaxMichel2 May 20, 2026
d78a51f
:bug: Remove additional config for emulator
MaxMichel2 May 20, 2026
a6f8192
:bug: Fix device test issues
MaxMichel2 May 20, 2026
696ef41
:sparkles: Enable animations for tests
MaxMichel2 May 20, 2026
eb76d0c
:bug: Update tests for API 26 and 29
MaxMichel2 May 20, 2026
d2faba8
:bug: Try scroll before assertion for UI tests on API 26 and 29
MaxMichel2 May 20, 2026
c9638ef
:sparkles: Add test module for helper functions
MaxMichel2 May 20, 2026
8592731
:white_check_mark: Update tests to use common module
MaxMichel2 May 20, 2026
848d534
:bug: Fix API 26 test failures
MaxMichel2 May 21, 2026
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
254 changes: 254 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,254 @@
name: Build

on:
push:
branches:
- main
paths-ignore:
- '**.md'
- 'docs/**'
pull_request:
paths-ignore:
- '**.md'
- 'docs/**'

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build:
# Skip build if head commit contains 'skip ci'
if: "!contains(github.event.head_commit.message, 'skip ci')"

runs-on: macos-26
timeout-minutes: 60

steps:
- uses: actions/checkout@v6

- name: Validate Gradle wrapper
uses: gradle/actions/wrapper-validation@v5

- name: Setup JDK
uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: 21

- uses: gradle/actions/setup-gradle@v5

- name: Assemble
run: ./gradlew assembleDebug -Pandroidx.baselineprofile.skipgeneration

unit-and-host-tests:
# Skip if head commit contains 'skip ci'
if: "!contains(github.event.head_commit.message, 'skip ci')"

runs-on: ubuntu-latest
timeout-minutes: 60

steps:
- uses: actions/checkout@v6

- name: Validate Gradle wrapper
uses: gradle/actions/wrapper-validation@v5

- name: Setup JDK
uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: 21

- uses: gradle/actions/setup-gradle@v5

- name: Run unit + androidHostTest tests
run: ./gradlew cleanTestAndroidHostTest testAndroidHostTest -Pandroidx.baselineprofile.skipgeneration

- name: Upload unit + androidHostTest reports
if: failure()
uses: actions/upload-artifact@v7
with:
name: unit-and-host-test-reports
path: |
**/build/reports/tests/**
**/test-results/**

detekt:
# Skip if head commit contains 'skip ci'
if: "!contains(github.event.head_commit.message, 'skip ci')"

runs-on: ubuntu-latest
timeout-minutes: 20

steps:
- uses: actions/checkout@v6

- name: Validate Gradle wrapper
uses: gradle/actions/wrapper-validation@v5

- name: Setup JDK
uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: 21

- uses: gradle/actions/setup-gradle@v5

- name: Run Detekt
run: ./gradlew detektFull

- name: Upload Detekt reports
if: failure()
uses: actions/upload-artifact@v7
with:
name: detekt-reports
path: '**/build/reports/detekt/**'

konsist:
# Skip if head commit contains 'skip ci'
if: "!contains(github.event.head_commit.message, 'skip ci')"

runs-on: ubuntu-latest
timeout-minutes: 20

steps:
- uses: actions/checkout@v6

- name: Validate Gradle wrapper
uses: gradle/actions/wrapper-validation@v5

- name: Setup JDK
uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: 21

- uses: gradle/actions/setup-gradle@v5

- name: Run Konsist tests
run: ./gradlew :konsist:test

- name: Upload Konsist reports
if: failure()
uses: actions/upload-artifact@v7
with:
name: konsist-reports
path: 'konsist/build/reports/tests/**'

device-tests:
# Skip if head commit contains 'skip ci'
if: "!contains(github.event.head_commit.message, 'skip ci')"

runs-on: ubuntu-latest
timeout-minutes: 60

strategy:
fail-fast: false
matrix:
include:
- api-level: 26
target: default
arch: x86
force-avd-creation: true
test-emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
- api-level: 29
target: default
arch: x86
force-avd-creation: false
test-emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
- api-level: 35
target: google_apis
arch: x86_64
force-avd-creation: false
test-emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none

steps:
- uses: actions/checkout@v6

- name: Validate Gradle wrapper
uses: gradle/actions/wrapper-validation@v5

- name: Setup JDK
uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: 21

- uses: gradle/actions/setup-gradle@v5

- name: Enable KVM for emulator
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm

- name: AVD cache
uses: actions/cache@v5
id: avd-cache
with:
path: |
~/.android/avd/*
~/.android/adb*
key: avd-v3-${{ runner.os }}-${{ matrix.api-level }}-${{ matrix.target }}-${{ matrix.arch }}-anim-on-${{ hashFiles('.github/workflows/build.yml') }}

- name: Create AVD and generate snapshot for caching
if: steps.avd-cache.outputs.cache-hit != 'true'
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: ${{ matrix.api-level }}
target: ${{ matrix.target }}
arch: ${{ matrix.arch }}
force-avd-creation: ${{ matrix.force-avd-creation }}
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
disable-animations: false
script: echo "Generated AVD snapshot for caching."

- name: Run Android Device Tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: ${{ matrix.api-level }}
target: ${{ matrix.target }}
arch: ${{ matrix.arch }}
force-avd-creation: ${{ matrix.force-avd-creation }}
emulator-options: ${{ matrix.test-emulator-options }}
disable-animations: false
script: ./gradlew connectedAndroidDeviceTest -Pandroidx.baselineprofile.skipgeneration

- name: Upload device test reports
if: failure()
uses: actions/upload-artifact@v7
with:
name: device-test-reports
path: |
**/build/reports/**
**/build/outputs/androidTest-results/**

coverage:
# Skip if head commit contains 'skip ci'
if: "!contains(github.event.head_commit.message, 'skip ci')"

runs-on: ubuntu-latest
needs: [ build, unit-and-host-tests ]
timeout-minutes: 30

steps:
- uses: actions/checkout@v6

- name: Setup JDK
uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: 21

- uses: gradle/actions/setup-gradle@v5

- name: Generate Kover coverage report
run: ./gradlew :devview:koverXmlReport :devview:koverLog

- name: Upload coverage report
if: success()
uses: actions/upload-artifact@v7
with:
name: coverage-report
path: '**/build/reports/kover/**'
26 changes: 26 additions & 0 deletions .github/workflows/close-issues.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Close inactive issues
on:
schedule:
- cron: "30 1 * * *"
workflow_dispatch:

jobs:
close-issues:
runs-on: ubuntu-latest

permissions:
issues: write
pull-requests: write

steps:
- uses: actions/stale@v10
with:
days-before-issue-stale: 21
days-before-issue-close: 7
stale-issue-label: "stale"
stale-issue-message: "This issue is stale because it has been open for 21 days with no activity."
close-issue-message: "This issue was closed because it has been inactive for 7 days since being marked as stale."
days-before-pr-stale: -1
days-before-pr-close: -1
exempt-issue-assignees: 'MaxMichel2,matthiaslao'
exempt-pr-assignees: 'MaxMichel2,matthiaslao'
31 changes: 31 additions & 0 deletions .github/workflows/pr-hygiene.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: PR Hygiene

on:
pull_request:
types: [ opened, edited, synchronize, reopened ]

jobs:
semantic-title:
runs-on: ubuntu-latest

permissions:
pull-requests: read

steps:
- uses: amannn/action-semantic-pull-request@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
# Enforce conventional commit types matching the project's Renovate prefix conventions
types: |
feat
fix
docs
chore
refactor
test
ci
perf
build
revert
requireScope: false
Loading
Loading