mirror of
https://github.com/element-hq/element-x-ios.git
synced 2025-03-10 13:37:11 +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:
parent
78df4abc7f
commit
142180b1f3
5
.github/workflows/danger.yml
vendored
5
.github/workflows/danger.yml
vendored
@ -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
|
||||
|
||||
|
8
.github/workflows/integration-tests.yml
vendored
8
.github/workflows/integration-tests.yml
vendored
@ -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
|
||||
|
@ -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
45
.github/workflows/unit_tests.yml
vendored
Normal 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
|
@ -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.")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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"
|
||||
|
@ -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,
|
||||
|
@ -21,6 +21,8 @@ schemes:
|
||||
disableMainThreadChecker: false
|
||||
captureScreenshotsAutomatically: false
|
||||
gatherCoverageData: true
|
||||
coverageTargets:
|
||||
- ElementX
|
||||
targets:
|
||||
- UnitTests
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
```
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user