Skip to content

Commit

Permalink
ci test
Browse files Browse the repository at this point in the history
  • Loading branch information
Bořek Leikep committed Oct 11, 2023
1 parent 0b6a312 commit fc5f8a7
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 48 deletions.
50 changes: 7 additions & 43 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ on:

jobs:
build:
runs-on: ubuntu-latest
runs-on: macos-latest
permissions:
contents: write
steps:
Expand All @@ -24,47 +24,11 @@ jobs:
distribution: 'zulu'
java-version: 18

- name: ktlint
run: ./gradlew lintKotlin
- name: Setup Android SDK
uses: android-actions/setup-android@v3

- name: Tests & Detekt & Android lint
run: ./gradlew :catalog:assembleDebug lintDebug :ui:detektAndroidDebug :ui:testDebugUnitTest :lint:test
# - name: Accept Licences
# run: echo y | sdkmanager --licenses

- name: Run Screenshot Tests
run: ./gradlew :ui:verifyPaparazziDebug

- uses: yutailang0119/[email protected]
name: App Lint errors to annotations
if: ${{ failure() }}
continue-on-error: true # lint may be ok
with:
xml_path: app/build/reports/lint-results-debug.xml
- uses: yutailang0119/[email protected]
name: Lib Lint errors to annotations
if: ${{ failure() }}
continue-on-error: true # lint may be ok
with:
xml_path: lib/build/reports/lint-results-debug.xml
- name: KTLint errors to annotations
if: ${{ failure() }}
run: |
jq --raw-output '[.[] | ({ f: .file } + ( .errors[] | { l: .line, c: .column, m: .message, r: .rule } )) | "::error file=catalog/\(.f),line=\(.l),col=\(.c)::\(.m) [\(.r)]" ] | join("\n")' catalog/build/reports/ktlint/main-lint.json || true
jq --raw-output '[.[] | ({ f: .file } + ( .errors[] | { l: .line, c: .column, m: .message, r: .rule } )) | "::error file=generator/\(.f),line=\(.l),col=\(.c)::\(.m) [\(.r)]" ] | join("\n")' generator/build/reports/ktlint/main-lint.json || true
jq --raw-output '[.[] | ({ f: .file } + ( .errors[] | { l: .line, c: .column, m: .message, r: .rule } )) | "::error file=icons/\(.f),line=\(.l),col=\(.c)::\(.m) [\(.r)]" ] | join("\n")' icons/build/reports/ktlint/main-lint.json || true
jq --raw-output '[.[] | ({ f: .file } + ( .errors[] | { l: .line, c: .column, m: .message, r: .rule } )) | "::error file=illustrations/\(.f),line=\(.l),col=\(.c)::\(.m) [\(.r)]" ] | join("\n")' illustrations/build/reports/ktlint/main-lint.json || true
jq --raw-output '[.[] | ({ f: .file } + ( .errors[] | { l: .line, c: .column, m: .message, r: .rule } )) | "::error file=ui/\(.f),line=\(.l),col=\(.c)::\(.m) [\(.r)]" ] | join("\n")' ui/build/reports/ktlint/main-lint.json || true
- uses: actions/upload-artifact@v3
if: ${{ failure() }}
with:
name: shots-results
path: ui/out/failures
- name: Build Dokka HTML
if: ${{ github.ref == 'refs/heads/main' }}
run: |
./gradlew :dokkaHtmlMultiModule --no-configuration-cache
- name: Deploy Dokka HTML
uses: peaceiris/actions-gh-pages@v3
if: ${{ github.ref == 'refs/heads/main' }}
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./build/dokka/htmlMultiModule
- name: Generate Baseline Profile
run: ./gradlew :catalog:generateReleaseBaselineProfile :icons:generateBaselineProfile :illustrations:generateBaselineProfile :ui:generateBaselineProfile -Pandroid.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=baselineprofile -Pandroid.testoptions.manageddevices.emulator.gpu=swiftshader_indirect --stacktrace
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ internal class BaselineProfileGenerator {

private companion object {
const val TIMEOUT = 5000L
const val TIMEOUT_LONG = 15000L
}

@get:Rule
Expand All @@ -53,11 +54,15 @@ internal class BaselineProfileGenerator {
rule.collect(
packageName = "kiwi.orbit.compose.catalog",
maxIterations = 5,
stableIterations = 2,
stableIterations = 5,
) {
pressHome()
startActivityAndWait()

if (!device.wait(Until.hasObject(By.res(MainScreenSemantics.Tag)), TIMEOUT_LONG)) {
error("Main screen not shown in time.")
}

profileSubScreen(MainScreenSemantics.ColorsItemTag)
profileSubScreen(MainScreenSemantics.IconsItemTag)
profileSubScreen(MainScreenSemantics.IllustrationsItemTag)
Expand Down Expand Up @@ -139,16 +144,26 @@ internal class BaselineProfileGenerator {
mainScreenItemTag: String,
profileContent: MacrobenchmarkScope.() -> Unit = {},
) {
if (!device.wait(Until.hasObject(By.scrollable(true)), TIMEOUT)) {
error("Scrollable not found in time. $mainScreenItemTag")
}
val mainScreenScrollable = UiScrollable(UiSelector().scrollable(true))
mainScreenScrollable.scrollIntoView(UiSelector().resourceId(mainScreenItemTag))
device.wait(Until.hasObject(By.res(mainScreenItemTag)), TIMEOUT)

mainScreenScrollable.scrollIntoView(UiSelector().resourceId(mainScreenItemTag))
if (!device.wait(Until.hasObject(By.res(mainScreenItemTag)), TIMEOUT)) {
error("Catalog item not found in time. $mainScreenItemTag")
}
device.findObject(By.res(mainScreenItemTag)).click()
device.wait(Until.hasObject(By.res(SubScreenSemantics.Tag)), TIMEOUT)

if (!device.wait(Until.hasObject(By.res(SubScreenSemantics.Tag)), TIMEOUT)) {
error("Sub-screen not shown in time. $mainScreenItemTag")
}

profileContent()

device.pressBack()
device.wait(Until.hasObject(By.res(MainScreenSemantics.Tag)), TIMEOUT)
if (!device.wait(Until.hasObject(By.res(MainScreenSemantics.Tag)), TIMEOUT)) {
error("Main screen not shown in time. $mainScreenItemTag")
}
}
}

0 comments on commit fc5f8a7

Please sign in to comment.