Various CI fixes (#161)

* Update homebrew dependencies like on the other workflows. Fixes problems caused by buggy swiftformat prebundled on the github actions macos runner

* Removed UI tests from PR tests and running them on a schedule instead. Hopefuly fixed code coverage.

* Added back simulator versions as they need to match UI test snapshots

* Allow UI tests to run on this PR

* Added back skipped UI tests

* Fix danger sometimes not working on forks and disable integration tests on them
This commit is contained in:
Stefan Ceriu 2022-08-19 17:42:03 +03:00 committed by GitHub
parent 78df4abc7f
commit 142180b1f3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 113 additions and 27 deletions

View File

@ -4,10 +4,9 @@ on: [pull_request]
jobs:
build:
# Don't run for forks as secrets are unavailable.
if: github.event.pull_request.head.repo.full_name == github.repository
runs-on: ubuntu-latest
name: Danger
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

View File

@ -2,12 +2,14 @@ name: Integration tests
on:
schedule:
- cron: '0 3 * * 1-5'
- cron: '0 2 * * 1-5'
workflow_dispatch:
jobs:
integration_tests:
if: github.event.pull_request.head.repo.full_name == github.repository
name: Integration Tests
runs-on: macos-12
@ -19,6 +21,10 @@ jobs:
steps:
- uses: actions/checkout@v3
- name: Brew bundle
run:
brew update && brew bundle && brew upgrade
- uses: actions/cache@v3
with:
path: vendor/bundle

View File

@ -1,8 +1,11 @@
name: Tests
name: UI Tests
on:
push:
branches: [ develop ]
workflow_dispatch:
schedule:
- cron: '0 0 * * 1-5'
pull_request:
jobs:
@ -13,7 +16,7 @@ jobs:
concurrency:
# When running on develop, use the sha to allow all runs of this workflow to run concurrently.
# Otherwise only allow a single run of this workflow on each branch, automatically cancelling older runs.
group: ${{ github.ref == 'refs/heads/develop' && format('tests-develop-{0}', github.sha) || format('tests-{0}', github.ref) }}
group: ${{ github.ref == 'refs/heads/develop' && format('ui-tests-develop-{0}', github.sha) || format('ui-tests-{0}', github.ref) }}
cancel-in-progress: true
steps:
@ -26,6 +29,10 @@ jobs:
with:
lfs: true
- name: Brew bundle
run:
brew update && brew bundle && brew upgrade
- uses: actions/cache@v3
with:
path: vendor/bundle
@ -33,17 +40,13 @@ jobs:
restore-keys: |
${{ runner.os }}-gems-
- name: Brew bundle
run:
brew update && brew bundle && brew upgrade
- name: Bundle install
run: |
bundle config path vendor/bundle
bundle install --jobs 4 --retry 3
- name: Run tests
run: bundle exec fastlane tests
run: bundle exec fastlane ui_tests
- name: Archive artifacts
uses: actions/upload-artifact@v3

45
.github/workflows/unit_tests.yml vendored Normal file
View File

@ -0,0 +1,45 @@
name: Unit Tests
on:
workflow_dispatch:
push:
branches: [ develop ]
pull_request:
jobs:
tests:
name: Tests
runs-on: macos-12
concurrency:
# When running on develop, use the sha to allow all runs of this workflow to run concurrently.
# Otherwise only allow a single run of this workflow on each branch, automatically cancelling older runs.
group: ${{ github.ref == 'refs/heads/develop' && format('unit-tests-develop-{0}', github.sha) || format('unit-tests-{0}', github.ref) }}
cancel-in-progress: true
steps:
- uses: actions/checkout@v3
- name: Brew bundle
run:
brew update && brew bundle && brew upgrade
- uses: actions/cache@v3
with:
path: vendor/bundle
key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
restore-keys: |
${{ runner.os }}-gems-
- name: Bundle install
run: |
bundle config path vendor/bundle
bundle install --jobs 4 --retry 3
- name: Run tests
run: bundle exec fastlane unit_tests
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3

View File

@ -49,7 +49,6 @@ let allowList = ["stefanceriu",
"manuroe",
"gileluard",
"phlniji",
"MaximeEvrard42",
"aringenbach"]
let requiresSignOff = !allowList.contains(where: {
@ -64,7 +63,7 @@ if requiresSignOff {
}.isEmpty
if !hasPRBodySignOff, isMissingCommitsSignOff {
fail("Please add a sign-off to either the PR description or to the commits themselves.")
warn("Please add a sign-off to either the PR description or to the commits themselves.")
}
}

View File

@ -29,7 +29,7 @@
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
codeCoverageEnabled = "YES"
onlyGenerateCoverageForSpecifiedTargets = "NO"
onlyGenerateCoverageForSpecifiedTargets = "YES"
systemAttachmentLifetime = "keepNever">
<MacroExpansion>
<BuildableReference
@ -54,6 +54,15 @@
</Testables>
<CommandLineArguments>
</CommandLineArguments>
<CodeCoverageTargets>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C0FAEB81CFD9776CD78CE489"
BuildableName = "ElementX.app"
BlueprintName = "ElementX"
ReferencedContainer = "container:ElementX.xcodeproj">
</BuildableReference>
</CodeCoverageTargets>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"

View File

@ -29,6 +29,15 @@
"addressSanitizer" : {
"enabled" : true
},
"codeCoverage" : {
"targets" : [
{
"containerPath" : "container:ElementX.xcodeproj",
"identifier" : "C0FAEB81CFD9776CD78CE489",
"name" : "ElementX"
}
]
},
"environmentVariableEntries" : [
{
"key" : "SNAPSHOT_ARTIFACTS",
@ -41,8 +50,8 @@
},
"targetForVariableExpansion" : {
"containerPath" : "container:ElementX.xcodeproj",
"identifier" : "C0FAEB81CFD9776CD78CE489",
"name" : "ElementX"
"identifier" : "0E28CD62691FDBC63147D5E3",
"name" : "UITests"
},
"uiTestingScreenshotsLifetime" : "keepNever",
"undefinedBehaviorSanitizerEnabled" : true,

View File

@ -21,6 +21,8 @@ schemes:
disableMainThreadChecker: false
captureScreenshotsAutomatically: false
gatherCoverageData: true
coverageTargets:
- ElementX
targets:
- UnitTests

View File

@ -72,19 +72,25 @@ lane :adhoc do
)
end
lane :tests do
lane :unit_tests do
run_tests(
project: "ElementX.xcodeproj",
scheme: "UnitTests"
)
slather(
cobertura_xml: true,
output_directory: "./fastlane/test_output",
proj: "ElementX.xcodeproj",
scheme: "UnitTests",
)
end
lane :ui_tests do
run_tests(
project: "ElementX.xcodeproj",
scheme: "UITests",
devices: ["iPhone 13 Pro Max", "iPad (9th generation)"],
devices: ["iPhone 13 Pro Max (15.5)", "iPad (9th generation) (15.5)"],
ensure_devices_found: true,
prelaunch_simulator: true,
output_directory: "fastlane/test_output/",
result_bundle: true
)
@ -92,9 +98,9 @@ lane :tests do
cobertura_xml: true,
output_directory: "./fastlane/test_output",
proj: "ElementX.xcodeproj",
scheme: "ElementX",
scheme: "UITests",
binary_basename: "ElementX.app"
)
end
lane :integration_tests do

View File

@ -37,10 +37,18 @@ For _fastlane_ installation instructions, see [Installing _fastlane_](https://do
### tests
### unit_tests
```sh
[bundle exec] fastlane tests
[bundle exec] fastlane unit_tests
```
### ui_tests
```sh
[bundle exec] fastlane ui_tests
```