mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-04 01:20:12 +00:00
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:
@@ -4,10 +4,9 @@ on: [pull_request]
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
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
|
name: Danger
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
|||||||
@@ -2,12 +2,14 @@ name: Integration tests
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
schedule:
|
schedule:
|
||||||
- cron: '0 3 * * 1-5'
|
- cron: '0 2 * * 1-5'
|
||||||
|
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
integration_tests:
|
integration_tests:
|
||||||
|
if: github.event.pull_request.head.repo.full_name == github.repository
|
||||||
|
|
||||||
name: Integration Tests
|
name: Integration Tests
|
||||||
runs-on: macos-12
|
runs-on: macos-12
|
||||||
|
|
||||||
@@ -19,6 +21,10 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Brew bundle
|
||||||
|
run:
|
||||||
|
brew update && brew bundle && brew upgrade
|
||||||
|
|
||||||
- uses: actions/cache@v3
|
- uses: actions/cache@v3
|
||||||
with:
|
with:
|
||||||
path: vendor/bundle
|
path: vendor/bundle
|
||||||
|
|||||||
@@ -1,8 +1,11 @@
|
|||||||
name: Tests
|
name: UI Tests
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
workflow_dispatch:
|
||||||
branches: [ develop ]
|
|
||||||
|
schedule:
|
||||||
|
- cron: '0 0 * * 1-5'
|
||||||
|
|
||||||
pull_request:
|
pull_request:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
@@ -13,7 +16,7 @@ jobs:
|
|||||||
concurrency:
|
concurrency:
|
||||||
# When running on develop, use the sha to allow all runs of this workflow to run concurrently.
|
# 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.
|
# 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
|
cancel-in-progress: true
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
@@ -26,6 +29,10 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
lfs: true
|
lfs: true
|
||||||
|
|
||||||
|
- name: Brew bundle
|
||||||
|
run:
|
||||||
|
brew update && brew bundle && brew upgrade
|
||||||
|
|
||||||
- uses: actions/cache@v3
|
- uses: actions/cache@v3
|
||||||
with:
|
with:
|
||||||
path: vendor/bundle
|
path: vendor/bundle
|
||||||
@@ -33,17 +40,13 @@ jobs:
|
|||||||
restore-keys: |
|
restore-keys: |
|
||||||
${{ runner.os }}-gems-
|
${{ runner.os }}-gems-
|
||||||
|
|
||||||
- name: Brew bundle
|
|
||||||
run:
|
|
||||||
brew update && brew bundle && brew upgrade
|
|
||||||
|
|
||||||
- name: Bundle install
|
- name: Bundle install
|
||||||
run: |
|
run: |
|
||||||
bundle config path vendor/bundle
|
bundle config path vendor/bundle
|
||||||
bundle install --jobs 4 --retry 3
|
bundle install --jobs 4 --retry 3
|
||||||
|
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
run: bundle exec fastlane tests
|
run: bundle exec fastlane ui_tests
|
||||||
|
|
||||||
- name: Archive artifacts
|
- name: Archive artifacts
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v3
|
||||||
@@ -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
|
||||||
+1
-2
@@ -49,7 +49,6 @@ let allowList = ["stefanceriu",
|
|||||||
"manuroe",
|
"manuroe",
|
||||||
"gileluard",
|
"gileluard",
|
||||||
"phlniji",
|
"phlniji",
|
||||||
"MaximeEvrard42",
|
|
||||||
"aringenbach"]
|
"aringenbach"]
|
||||||
|
|
||||||
let requiresSignOff = !allowList.contains(where: {
|
let requiresSignOff = !allowList.contains(where: {
|
||||||
@@ -64,7 +63,7 @@ if requiresSignOff {
|
|||||||
}.isEmpty
|
}.isEmpty
|
||||||
|
|
||||||
if !hasPRBodySignOff, isMissingCommitsSignOff {
|
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.")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||||
codeCoverageEnabled = "YES"
|
codeCoverageEnabled = "YES"
|
||||||
onlyGenerateCoverageForSpecifiedTargets = "NO"
|
onlyGenerateCoverageForSpecifiedTargets = "YES"
|
||||||
systemAttachmentLifetime = "keepNever">
|
systemAttachmentLifetime = "keepNever">
|
||||||
<MacroExpansion>
|
<MacroExpansion>
|
||||||
<BuildableReference
|
<BuildableReference
|
||||||
@@ -54,6 +54,15 @@
|
|||||||
</Testables>
|
</Testables>
|
||||||
<CommandLineArguments>
|
<CommandLineArguments>
|
||||||
</CommandLineArguments>
|
</CommandLineArguments>
|
||||||
|
<CodeCoverageTargets>
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "C0FAEB81CFD9776CD78CE489"
|
||||||
|
BuildableName = "ElementX.app"
|
||||||
|
BlueprintName = "ElementX"
|
||||||
|
ReferencedContainer = "container:ElementX.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</CodeCoverageTargets>
|
||||||
</TestAction>
|
</TestAction>
|
||||||
<LaunchAction
|
<LaunchAction
|
||||||
buildConfiguration = "Debug"
|
buildConfiguration = "Debug"
|
||||||
|
|||||||
@@ -29,6 +29,15 @@
|
|||||||
"addressSanitizer" : {
|
"addressSanitizer" : {
|
||||||
"enabled" : true
|
"enabled" : true
|
||||||
},
|
},
|
||||||
|
"codeCoverage" : {
|
||||||
|
"targets" : [
|
||||||
|
{
|
||||||
|
"containerPath" : "container:ElementX.xcodeproj",
|
||||||
|
"identifier" : "C0FAEB81CFD9776CD78CE489",
|
||||||
|
"name" : "ElementX"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"environmentVariableEntries" : [
|
"environmentVariableEntries" : [
|
||||||
{
|
{
|
||||||
"key" : "SNAPSHOT_ARTIFACTS",
|
"key" : "SNAPSHOT_ARTIFACTS",
|
||||||
@@ -41,8 +50,8 @@
|
|||||||
},
|
},
|
||||||
"targetForVariableExpansion" : {
|
"targetForVariableExpansion" : {
|
||||||
"containerPath" : "container:ElementX.xcodeproj",
|
"containerPath" : "container:ElementX.xcodeproj",
|
||||||
"identifier" : "C0FAEB81CFD9776CD78CE489",
|
"identifier" : "0E28CD62691FDBC63147D5E3",
|
||||||
"name" : "ElementX"
|
"name" : "UITests"
|
||||||
},
|
},
|
||||||
"uiTestingScreenshotsLifetime" : "keepNever",
|
"uiTestingScreenshotsLifetime" : "keepNever",
|
||||||
"undefinedBehaviorSanitizerEnabled" : true,
|
"undefinedBehaviorSanitizerEnabled" : true,
|
||||||
|
|||||||
@@ -21,6 +21,8 @@ schemes:
|
|||||||
disableMainThreadChecker: false
|
disableMainThreadChecker: false
|
||||||
captureScreenshotsAutomatically: false
|
captureScreenshotsAutomatically: false
|
||||||
gatherCoverageData: true
|
gatherCoverageData: true
|
||||||
|
coverageTargets:
|
||||||
|
- ElementX
|
||||||
targets:
|
targets:
|
||||||
- UnitTests
|
- UnitTests
|
||||||
|
|
||||||
|
|||||||
+13
-7
@@ -72,19 +72,25 @@ lane :adhoc do
|
|||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
lane :tests do
|
lane :unit_tests do
|
||||||
run_tests(
|
run_tests(
|
||||||
project: "ElementX.xcodeproj",
|
|
||||||
scheme: "UnitTests"
|
scheme: "UnitTests"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
slather(
|
||||||
|
cobertura_xml: true,
|
||||||
|
output_directory: "./fastlane/test_output",
|
||||||
|
proj: "ElementX.xcodeproj",
|
||||||
|
scheme: "UnitTests",
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
lane :ui_tests do
|
||||||
run_tests(
|
run_tests(
|
||||||
project: "ElementX.xcodeproj",
|
|
||||||
scheme: "UITests",
|
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,
|
ensure_devices_found: true,
|
||||||
prelaunch_simulator: true,
|
prelaunch_simulator: true,
|
||||||
output_directory: "fastlane/test_output/",
|
|
||||||
result_bundle: true
|
result_bundle: true
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -92,9 +98,9 @@ lane :tests do
|
|||||||
cobertura_xml: true,
|
cobertura_xml: true,
|
||||||
output_directory: "./fastlane/test_output",
|
output_directory: "./fastlane/test_output",
|
||||||
proj: "ElementX.xcodeproj",
|
proj: "ElementX.xcodeproj",
|
||||||
scheme: "ElementX",
|
scheme: "UITests",
|
||||||
|
binary_basename: "ElementX.app"
|
||||||
)
|
)
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
lane :integration_tests do
|
lane :integration_tests do
|
||||||
|
|||||||
+10
-2
@@ -37,10 +37,18 @@ For _fastlane_ installation instructions, see [Installing _fastlane_](https://do
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
### tests
|
### unit_tests
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
[bundle exec] fastlane tests
|
[bundle exec] fastlane unit_tests
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### ui_tests
|
||||||
|
|
||||||
|
```sh
|
||||||
|
[bundle exec] fastlane ui_tests
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user