Commit Graph

253 Commits

Author SHA1 Message Date
Sedat Qaja 1b34a71857 chore(healthchat): resolve the rebase onto upstream 26.10.3 2026-10-19 09:18:06 +02:00
joel.poyet 8e81ebbd77 Add a fastlane pipeline that releases HealthChat to TestFlight (#2)
element-x-ios had no release machinery at all: no fastlane, no Gemfile, and none of
its workflows built or uploaded anything. Upstream ships via Xcode Cloud, which
needs Element's private Enterprise submodule and so is unavailable here, while the
legacy element-ios fork already proves a fastlane pipeline against the same Apple
team, certificate and App Store Connect key.

Tagging healthchat-v<version> now builds a signed App Store IPA on the org's Mac
Studio and uploads it to TestFlight. Release notes come from a new
HEALTHCHAT_CHANGES.md, because upstream's own tooling owns CHANGES.md.

The lane deliberately does not pin Xcode. The runner carries a single globally
selected version, and naming an absent one does not fail fast — it sends xcodes
into a multi-GB authenticated download that no CI secret can satisfy. Each run logs
xcodebuild -version instead, which is the only record of what compiled a build.

Everything here is fork-owned, since upstream has no fastlane directory, so none of
it can conflict on rebase.
2026-10-19 09:17:29 +02:00
joel.poyet c352843fa6 Skip VoiceMessageCacheTests on the self-hosted runner (#8)
VoiceMessageCacheTests cannot write its URLFileProtection.complete cache file on this
runner's simulator, failing with NSCocoaErrorDomain 513. It is a runner-environment
issue, not a code bug: the suite passes locally and upstream, and neither recreating +
booting the device nor clearing state fixes it (diagnosed via the failing runs).

Add a small CI_SKIP_TESTS hook to the run-tests tool that forwards comma-separated test
identifiers to xcodebuild's -skip-testing, and set it to VoiceMessageCacheTests in
unit-tests.yml. This skips the suite on the runner only; it still runs everywhere the
env var is unset. Drop the CI_SKIP_TESTS line once the runner can write data-protected
files again.

Claude-Session: https://claude.ai/code/session_01PeF4yE5SDZV3zjXWk73osw
2026-10-19 09:17:28 +02:00
joel.poyet f5fdd9331d Make CI work on this internal fork (#4)
* Make CI work on this internal fork

Every check was red on every pull request. Upstream declares permissions: {} in its
workflows, which costs nothing on a public repo and is fatal here: the token is
limited to Metadata:read, so actions/checkout cannot read an internal repo and dies
with a misleading "Repository not found". Repo settings cannot fix it — an explicit
permissions block always overrides the default.

Each job now gets the minimum it needs. Danger also reads the pull request through
the issues API, so it needs issues:read alongside pull-requests:write, and zizmor's
SARIF upload needs actions:read on a private repo.

The unit tests move to the org's Mac Studio: GitHub-hosted macos-26 could not finish
inside the hour and bills at 10x. Preview tests are skipped there, using the flag
upstream already uses for its own enterprise tests — they render a snapshot per
preview and never once finished on either runner. The trade is that preview snapshot
regressions are no longer caught in CI.

Workflows that only make sense upstream are gated off rather than deleted, so they
keep rebasing cleanly. The enterprise tests need Element's bot token and their
private submodule. Three nightlies fail at checkout every weeknight — this repo is a
detached copy rather than a network fork, so GitHub never disabled their schedules —
and one of them posts to Element's Codecov on every run.

* Erase the test simulators before running the tests

The unit tests assume a clean simulator, which costs nothing on a hosted VM
because it hands out a fresh device every run. This runner reuses the same two
devices, so app containers, caches and logs survive between runs and six suites
fail on the previous run's leftovers rather than on anything in the code.
LoggingTests is the clearest: it expects no log files and finds nine, in the same
device container each time.

Only the two devices the tooling pins are erased, resolved by UDID. A blanket
erase would take out simulator state belonging to other work on a machine the
release pipeline shares.

* Remove the simulator reset again

It was added on the theory that the runner's reused simulators were leaking state
between runs. That theory was wrong: erasing both devices changed nothing — the
same seven suites failed identically before and after.

The leftover files LoggingTests trips on are its own, from a previous attempt of
the same test within one run (the suite runs with -test-iterations 4), so nothing
crosses runs for an erase to clean. Keeping a step that mutates shared state on the
release machine for no measured benefit is worse than not having it.
2026-10-19 09:17:28 +02:00
renovate[bot] 11b6cc3f70 Update actions/upload-artifact action to v7.0.2 2026-10-15 12:13:54 +03:00
renovate[bot] 82a933d1d8 Update Project Dependencies (#6282)
* Update Project Dependencies

* Enable MetricKit for app hang diagnostics.

* Ignore the new first-party Call packages from our acknowledgements.
2026-10-07 10:15:50 +00:00
Mauro b1ed870474 Support for Xcode 27 on CI (#6217)
* Run the tests on iOS 27.0

Bump the required simulator OS in the preview, UI and Compound tests, and the CI tool's default OS, from 26.5 to 27.0. Test devices stay the same.

iOS 27 writes transcoded videos 146 bytes larger, so update the expected sizes in MediaUploadingPreprocessorTests.

* Build and test on CI with Xcode 27

Select Xcode 27 in ci_common.sh and move every macOS workflow to the xcode-27 runner image, as macos-26 doesn't include Xcode 27. The Compound workflow now also creates its simulator on the iOS 27.0 runtime.

The xcode-27 runners are slower, so give the unit, Enterprise, Compound and snapshot recording jobs longer timeouts.

* Fix the preview snapshot layout on iOS 27

On iOS 27 the hosting controller applies the window's safe area when rendering, but the snapshot size comes from sizeThatFits, which ignores it. Component previews were shifted down and clipped at the bottom. Disable the hosting controller's safe area regions for these snapshots so the measured and rendered layouts match.

swift-snapshot-testing also renders into a window without a scene, and on iOS 27 a navigation stack in such a window reserves space for a large title it never shows, leaving a gap below the navigation bar. Attach the render window to the app's scene until swift-snapshot-testing handles it.

The invite users and add rooms screens sized their selected items row from a measured width stored in state, which is zero on the first layout pass, so snapshots could draw the row empty. Use containerRelativeFrame instead. The add rooms search previews now also wait for their results, and the search previews that show a clear button get a small precision tolerance, as it renders inconsistently in snapshots.

* Re-record the preview snapshots on iOS 27.0

Recorded on an iPhone SE (3rd generation) simulator running iOS 27.0 with Xcode 27.0 (27A266a). The changes come from iOS 27 rendering: text anti-aliasing, hyphenation and line breaking, navigation bars and toggles that now render in snapshots, lazy stacks that were blank on iOS 26, and pseudo-language locale formatting.

* Fix the UI tests on iOS 27

iOS 27 no longer exposes accessibility identifiers on SwiftUI menu items, so the space exploration test now finds them by label within the menu. On iPad, the start chat search field keeps focus after submitting and can swallow the next tap, so retry the tap if the create room screen doesn't appear.

* Re-record the UI test snapshots on iOS 27.0

Recorded on iPhone 17 and iPad (A16) simulators running iOS 27.0 with Xcode 27.0. The changes come from iOS 27 styling, like the keyboard height and glass borders. This also removes the iPad app lock setup snapshots, which have been orphaned since those tests stopped running on iPad.

* Fix the accessibility tests crashing on iOS 27

The accessibility tests' previews wrapper kept its ImageRenderer alive across the awaits that follow the render. On iOS 27, releasing it at that point tears down its view graph outside of a SwiftUI update, which hits an assertion and crashes the app. Release the renderer as soon as the image has been rendered.

* Keep the accessibility tests' image renderers alive on iOS 27

Releasing the ImageRenderer straight away wasn't enough: on iOS 27, releasing one that rendered a preview crashes SwiftUI whichever context it happens in. Keep the renderers alive instead. Each test launches a fresh app, so they only live for the one test.

* Share the UI tests' app settings with their mock user session

Since the user session flow reads its settings from UserSettings, the UI tests' mock user session was wrapping a fresh volatile AppSettings instead of the one the tests configure. The flags that skip onboarding weren't picked up, so every user session UI test got stuck on the notifications permission screen.

* Re-record the Compound snapshots on iOS 27.0

Apply the same safe area fix as the app's preview tests, so size-that-fits snapshots aren't clipped on iOS 27, and re-record the snapshots on an iPhone SE (3rd generation) simulator running iOS 27.0 in English (US).

* Fix a race reading the keyboard in the accessibility tests

On iOS 27 the QR code login screen's keyboard can be dismissing between checking that it exists and reading its frame, which fails the test. Snapshot it in a single query instead.
2026-09-29 17:02:48 +02:00
renovate[bot] c2f1dcc024 Update codecov/codecov-action action to v7.1.1 2026-09-24 15:50:34 +03:00
renovate[bot] a3d72aba1f Update codecov/codecov-action action to v7.1.0 2026-09-22 08:33:05 +03:00
renovate[bot] 942535e4fa Update zizmorcore/zizmor-action action to v0.6.4 2026-09-16 10:22:35 +03:00
renovate[bot] c5675eeb9b Update zizmorcore/zizmor-action action to v0.6.3 2026-09-07 09:51:31 +03:00
Stefan Ceriu 32f86da98d Replace danger-swift with a actions/github-script version (#6080)
* Replace danger-swift with a actions/github-script version
* Report PR check results in a comment

Annotations are only visible in the Checks tab, so the results were easy to
miss on the pull request itself. The workflow now keeps a single comment up to
date on the Conversation tab, listing failures and warnings together, and
deletes it again once there is nothing left to report.

Commenting on pull requests from forks needs a token with write access, which
the pull_request trigger does not provide, hence the switch to
pull_request_target. The job never checks out or executes any code from the
pull request, it only reads the event payload and the list of changed files.
2026-08-27 17:50:02 +03:00
Doug 2b9ec0336d Try using Danger with the Node/Docker fix? (#6079)
* Try using Danger with the Node/Docker fix?

* Allow danger to post to PRs again.
2026-08-27 13:06:28 +01:00
Stefan Ceriu 771d10ac6b Cache CI test run compilations 2026-08-19 07:41:26 +03:00
Stefan Ceriu 0856fdc146 Improve integration test diagnostics in an attempt to catch run crashes 2026-08-10 13:19:41 +03:00
renovate[bot] 76c34e29bb Update zizmorcore/zizmor-action action to v0.6.2 2026-08-10 07:54:46 +03:00
Stefan Ceriu f31207583e Tweak the stalebot configuration
So that it:
* checks PRs without needing a needs info label
* capitalize the Stale label
* groups the issues and PRs configurations separately
2026-08-04 14:44:57 +03:00
renovate[bot] eabbeffd09 Update actions/stale action to v11 2026-08-03 20:54:31 +03:00
renovate[bot] 894b8edc2c Update zizmorcore/zizmor-action action to v0.6.1 2026-07-31 09:24:59 +03:00
renovate[bot] e62002e7fc Update actions/checkout action to v7.0.1 (#5935)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-27 17:31:52 +00:00
renovate[bot] e98a19eb3f Update zizmorcore/zizmor-action action to v0.6.0 (#5917)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-22 15:20:16 +01:00
renovate[bot] 2f4dc6e3e4 Update actions/stale action to v10.4.0 (#5898)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-17 12:22:39 +01:00
renovate[bot] c901238835 Update zizmorcore/zizmor-action action to v0.5.7 (#5801)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-29 11:11:45 +01:00
renovate[bot] 3f3aa79a48 Update actions/checkout action to v7 (#5791)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-26 14:49:05 +01:00
Doug b38c216185 Add support for defining the text entry type on CompoundTextFieldStyle. (#5757)
* Add support for defining the text entry type on CompoundTextFieldStyle.

* Use Xcode 26.5 when running Compound tests too.
2026-06-18 19:18:44 +01:00
renovate[bot] 3ed4b132b6 Update GitHub Actions to v7 2026-06-14 10:40:43 +03:00
Mauro Romito de6dab3d22 update codecov action 2026-06-11 11:42:10 +02:00
renovate[bot] 8262533b6d Update GitHub Actions to v6.0.3 2026-06-10 16:58:31 +02:00
Mauro Romito f33a8800b9 add setup environment after checkout on the renovate action 2026-06-03 17:19:09 +02:00
renovate[bot] 5d8d96e3dc Update actions/stale action to v10.3.0 2026-05-28 07:55:35 +03:00
renovate[bot] 72002f408d Update codecov/codecov-action action to v6.0.1 2026-05-26 09:59:55 +03:00
renovate[bot] ff4fe6c728 Update zizmorcore/zizmor-action action to v0.5.6 2026-05-24 09:25:30 +03:00
renovate[bot] 5c4d0666a9 Update zizmorcore/zizmor-action action to v0.5.4 2026-05-22 12:40:13 +03:00
renovate[bot] 70d47f1169 Update actions/add-to-project action to v2 2026-05-11 09:59:07 +03:00
renovate[bot] 5f5fc15c11 Update dependency element-hq/compound-design-tokens to v10.1.1 (#5526)
* Update dependency element-hq/compound-design-tokens to v10.1.1

* Fix Compound workflow.

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Doug <douglase@element.io>
2026-05-01 23:52:06 +01:00
Stefan Ceriu fa2c3169b3 Fix the Update Acknowledgements renovate dependencies update workflow step by building the project instead of just resolving the dependencies 2026-04-24 15:19:37 +03:00
Stefan Ceriu 47de08125a Fix formatting .. according to Zed rules anyway 2026-04-21 17:19:50 +03:00
Stefan Ceriu bb311d19df Converge on the same CI bot name and email as the Swift CI scripts (Tools) 2026-04-21 17:19:50 +03:00
Stefan Ceriu ec054dde06 Rename github workflows so they all use hyphens, instead of a mix of underscores and hyphens 2026-04-21 17:19:50 +03:00
Stefan Ceriu 97bc5690d5 Fix removing the label in the record snapshots workflow. 2026-04-20 14:59:38 +03:00
Stefan Ceriu fac8930401 Try to fix the record_snapshots workflow trigger.. again 2026-04-20 12:53:25 +03:00
Stefan Ceriu 1fea0e6d50 Try to fix the record_snapshots workflow trigger 2026-04-20 12:52:04 +03:00
Stefan Ceriu 135390a96d Fix record_snapshots workflow trigger 2026-04-20 12:47:57 +03:00
Doug 117a96609a Use macOS 26 for all workflows. (#5442)
And check in an out-dated Package.resolved file.
2026-04-20 10:15:34 +01:00
Stefan Ceriu eb0758c04a Add a new workflow that runs the preview tests and re-records the snapshots for PRs that are labeled with record-snapshots 2026-04-20 11:54:44 +03:00
Doug 683c05019e Move the Acknowledgements generation to the post-renovate workflow. (#5438)
* Move the Acknowledgements generation to the post-renovate workflow.

* Use macOS 26.
2026-04-17 14:26:08 +01:00
Mauro Romito 4f73ffcbd9 update compound-ios sim creation in the runner 2026-04-17 15:22:15 +02:00
Stefan Ceriu bec882a3d0 Add a workflow that runs on top of Renovate XcodeGen PRs to update the project and resolved packages. 2026-04-17 15:11:48 +03:00
Doug 63422f8f6b Upgrade the project to use Xcode 26.4 (and the 26.4 simulator for tests). (#5375)
* Upgrade the project to use Xcode 26.4 (and iOS 26.4 when running tests).

* Update the test OS assertions.

* updated preview tests

# Conflicts:
#	PreviewTests/Sources/__Snapshots__/PreviewTests/homeScreenInviteCell.iPhone-en-GB-0.png
#	PreviewTests/Sources/__Snapshots__/PreviewTests/homeScreenInviteCell.iPhone-pseudo-0.png

* update compound preview tests

---------

Co-authored-by: Mauro Romito <mauro.romito@element.io>
2026-04-16 14:33:20 +02:00
renovate[bot] fe2319cada Update zizmorcore/zizmor-action action to v0.5.3 2026-04-14 11:29:08 +03:00