From 8684b2c050b0d9f79f67d5ae709d69da4b3518cd Mon Sep 17 00:00:00 2001 From: mredig Date: Tue, 4 Aug 2026 16:29:42 -0500 Subject: [PATCH] review fixups --- CONTRIBUTING.md | 8 ++++++-- docs/PreviewTestsRegion.png | Bin 0 -> 15478 bytes 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 docs/PreviewTestsRegion.png diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 867807c82..cc4c981b6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -91,11 +91,15 @@ Git LFS is used to store UI and Preview test snapshots. `swift run tools setup-p git lfs install ``` -### Snapshot Tests +### Snapshot (Preview) Tests If you make changes to the UI you may cause existing UI and Preview test snapshots to fail. The UITests run user flows and record snapshots while doing so using the settings defined under [checkEnvironments](https://github.com/element-hq/element-x-ios/blob/c29175d1f924e58b9646a200dbab0301fce3c258/UITests/Sources/Application.swift#L35-L37) while the PreviewTests use the settings defined in [PreviewTests.swift](https://github.com/element-hq/element-x-ios/blob/c29175d1f924e58b9646a200dbab0301fce3c258/PreviewTests/Sources/PreviewTests.swift#L18-L20). The snapshots are stored under `Sources/__Snapshots__` in their respective target's folder. -To run snapshot tests, select the `PreviewTests` scheme with an iPhone SE running iOS 26.5 in xcode and run tests (` - U`). Newly created screens will automatically have their screenshots added based off their `TestablePreview` Swift previews. If you are modifying an existing screen, you will first need to delete the old snapshots for that screen before running the tests. +To run preview tests, select the `PreviewTests` scheme with an iPhone SE running iOS 26.5 in Xcode and run tests (` - U`). Language and region must be set to `en-US`. Newly created screens will automatically have their screenshots added based off their `TestablePreview` Swift previews. If you are modifying an existing screen, you will first need to delete the old snapshots for that screen before running the tests. Alternatively, if you enable `RECORD_FAILURES` in the preview test plans's environment variables (`PreviewTests/SupportingFiles/Previewtests.xctestplan`), it will overwrite snapshot failures with the updated screenshot. + +Language and region settings screenshot: + +![Language and region screenshot](docs/PreviewTestsRegion.png) ### Githooks diff --git a/docs/PreviewTestsRegion.png b/docs/PreviewTestsRegion.png new file mode 100644 index 0000000000000000000000000000000000000000..9ff17d22a635e3c40c7014cd29a675f81bb5a074 GIT binary patch literal 15478 zcmYLw1xy@F7wuxj9f~_eiWDubh2l`$wZ&Z*cXui7?i4AyxVyV7P}~-0@qOQ)mzS5^ zn~}`DlgUYLCg;pV{ZN*{L?cB5005YBvQlaQ037f?w?jerZw7#k`Wpa10Q^wYkiNNr zUSB_4UEN<^-re3l-rqk%p|6jRZx0VIH#ZL#7dN-J(5I*O&CT7>(W$|~vAMbBgM-t% zyQiU{@xsE=;^K;;qVlDsbujqf+S+zkSKr3QPF`NIj*dPpE$x3>iHV8(`1tko^g|%G zXJ=RU_b-Qs=jZ3wEiIt3vdW#EgQKJKfB%lArx#>oWEB(?H8eC=RyNw(yH!+vTwmW~ zV`DQhF&i0~%+Ifsm)8&x5wo+i=jImu{+-Fg!#h4cU0d7u{0wVr>#V4#ZE9)_4i2B3 zocr_VuauN@K|$&M{>l0Im8YklprDYSUvNi94-5wD?Ce=x-7+_~rl6p>y1ILLfz{Xl zO-@e#`?vk!;dNqSHb1}6)bwX|c0qc2PGn^4$q6JSCFAVuvZ<;0`1qo?cW`86B0M~% zp`rQh4Tgq>K0CWuRaN)&1iQSvb#`{i$jDt>Ty}79dwqq~)HL+>kA#IqUtCFM?C>^eF+ z!Pyy@n3y^`I@Zwv%F4<=K8E=C1eKN5{1*m+TrMxKtgmluZf^Y-FgQ50zkl!_DyOGs zXJ_Zn&o2)T(3_i^nVH$+;}bA=dv$f~^788N@NjZ+dUyBV`1r*A{r&az_5A$8I}Eme z4!gXE9pAu0D`9<0Fn}AZt{)cr2R6A5Yng@te!wIWVGl1bfIqBh7zVI{!QNqSFqn2G z%sC%M90Z#J!vJ2e%|jT#5w>y&b1H>}*22mLV0TY2&>XB`0(Nu-OKOH?fMB&_u*X-J zcLi+!5@wbQgAa#YKEMilU;usCz#0tj6Xst7Gf0Dl{DCn=!M09dv43H0co*x4oQ=mI98V(kS02yn_tNoaV&ov%gcZ)k0NxN?n;{}8Q< z%*5h^Fdu`8cy0p!7cr#3d9*+)JU99GZwyJDPu95~)kc(>w4vZLsyF(5rs2ma@9bWn z;iiF=jwq#=m_Lu=a)jv5(VmRjAAI^Z*_yeWQ4Ngaj$t>ivzA{i)g;_#S*nIB@5cA7 zRj1GBVPZu;{Ol_lYkMP#$9~u1ry(FM@+y5{XJ%tz{OrZcs}jb*G*vaB*W!Q(EH~f} zSj@$DOtp)5Qd8Bv*K?@)tbodB`;E7^KWj#4M<(88Up_Jh8J|1PAL>I|Tk~IQcd!h9SAs6*-SDEYr+qKl`y1E~p>BGdk zzg7QPsrBm=2+^uW;YD#S51?EW#x`9zHG+tgpPx0q8+X5+IbxV#(*>jVe+W8GRMa&g z_LG>d!Ns5!9ItWctmKk>pe=KN_o`aDG<_MCG)%xJ-57aTWZ{7txnMq!^~satWc_kc z{-j1wBFN`4fAM8FaJtSse}-qa2lFQynM%GVW{&l<({ zNNBuYuf*QnI#_{okiva9)YqPYj1b02@( zeS{92ZDM0%ZV6Lem2~c<9V(>J;L4p^QTkNxE=RQ*V-tI?cojBF4_3}z#7u>l74;?J zQNHGah|WH#i>(Otm81te%Qs6bj`LbALz+`vyDz?0X_lgmTn0qDQVeEE^S@Gmukq7? zWW7C_-di~L1aQS${d6db#Mb<~{W57;u0|b?P+3A*=RijN;1nX*wkIN&kVAAM`*=GP zqxHG1!0;?ZE5#&v({xd+%|D)UCud$85b$?pboNKee4Jp6f6ys3!{bzk4s0dWY?nJA zQdr@zWjheJsu@?PG`GF9IvB*X%;0VEucY~bHMN$fxr?NmDShV#Gc*<5hm|g}t!C=$ z{6j-!OLyhIlZKh@)29gd-l@R8&ETs)@NM)!!;mI2x~UPk^@Av2I5e`{EZMYh~9hl9fN3_IXRFY;RUF(tLj+QNQJj zNXp*x8WK3>3p$Lyth0-)%~m4S$|CZA=@Nc@He13CbG?6?2vsi) zSoHfc?VAx5HQk##N1B-&hrMJ&)iNaLif`-Fs#WZDuMEE-709rPD!s(>?PEAS^B_lL zOG!ZKXmknw6i1q`XZvAi!K4!Ql-!&`u*!IvJgRAEg&ZR@^gx|WPOCh}(^Zl!Y7ofgU(qaimxELxyiOr}fSrvjybyUSz|p3L0bPYB%KY|5U)Vf! zPA0~oqV-s%$@P0K$){{Ojf$XVRisZ(5Z3I_ee1Dv>GZEV^ z0d+M$jc-5-vpCyA|0?ZrhNwbu?}Vo3Kfb~a!6_5(I)<=oeIIsf-7&kIu=Yt6$pF@T z^z9}jSSKWGEyll5U9>|bf82KfZNRZzOdGBKjQwTi!GN-Z$d>)K82yi9A54XLvJPg( zc)RwN)tcIWr4O08%o}+R$@P`AubX`8DYHs`H?7c+x(R-b4MjC{+EBlGUbvl{+*9+p|ZME z%MA}yiv6YWso0)SFmkLWtTn9tgJ^^1)l6z9`<}*iYb8ALh1SuH-s7SQ#P3!}X(sK3 z+rqy63$l`_KGG_3!;ON?lzpbXg_FRa9lokL;gJ!=CkAKe_?9E2$6u^9UZhwQP^a&e zKZM=$%m)7QSk6Z}4fAs^vYsBqHl7ObLgL!=Gd@&{gtNJ zv+xKxw}vE3!R$Ta2v(fpp3lH6sse0}wyyhp9n72f2@`$-#ER(oE0#p9LD*?G8wshn zCp*Q;O?P%aTA!7n?iANiOjF8l-zBuQUzLnni$va+Wyqo_#Y8oq$pX7=hCo3`U^|S2 zIQRQ4j!++9+RHB>!IUN3<$g-<`l88-O4{__E?<-MzB*`nWv&&Yo<163X&4((JtJ#q&PjQ+@3 z(v+a=MeIX~@}1j<8W9y|s+kV;!i+Z%eOzL^M-=o6BCpMoIm&7O%*cDGH=Ll8 z>qagQOjk*#4M&W(zo12o9W2ombhGf{W6$jhtebkSmK=(W1mKk2k01HYgi%?UD&l3i% z#65@8ZmyB9-PQzcFG!9OE4b-GHP)up zNnc)zYJj~GHC6IrGj8tzMO3y8g1uSVu4KA0nbSfG(A3TyS?)Ip zAh!~#t;ciPfxWj!w`3mDdl#Xz>v4lUxvt$9lI@Aw|G~ER9e*tBr)K~PQ^P)Y+vnqI zps}|B$sc+`~O6FxN4cH;*iSdkXKrw4R?kc~x^5HyNc_ET& zC{1Cz4tmOx(9jKU4rI`Z9kzA9?qGT*l&|o_Oo}0H-dnZgTzTWty8Ui=L&Lsl$Kpq( zeiL%OU7raQ^dXaWs`UiK| zKm9^

uo}W6hcn=b9hul_j_RJ$(<_^T)*AKj3y+& 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 literal 0 HcmV?d00001