Skip to content

Commit 087b6b5

Browse files
Overhaul store scope communication (#2664)
* store 2 * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * check sharesStorage in == * wip * wip * fix crashes * wip * wip * wip * wip * clean up * wip * wip * wip * wip * rename * wip * wip * fix * stack * wip * wip * wip * wip * wip * wip * remove duplicates based on presentation storage * wip * wip * wip * wip * update log snapshots * bring back expected failure * wip * remove removeDuplicates * test for fast path of PresentationState * wip * Updated logs * wip * wip * wip * wip * Skip flakey CI test * bump timeout --------- Co-authored-by: Brandon Williams <[email protected]>
1 parent b091bd7 commit 087b6b5

28 files changed

+720
-1003
lines changed

Examples/CaseStudies/SwiftUICaseStudies/04-HigherOrderReducers-ReusableFavoriting.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ struct Episodes {
156156
}
157157

158158
struct EpisodesView: View {
159-
@State var store = Store(initialState: Episodes.State()) {
159+
@State var store = Store(initialState: Episodes.State(episodes: .mocks)) {
160160
Episodes(favorite: favorite(id:isFavorite:))
161161
}
162162

Examples/Integration/IntegrationUITests/BasicsTests.swift

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,17 @@ final class BasicsTests: BaseIntegrationTests {
1717
self.assertLogs {
1818
"""
1919
BasicsView.body
20-
StoreOf<BasicsView.Feature>.scope
21-
ViewStore<BasicsView.Feature.State, BasicsView.Feature.Action>.deinit
22-
ViewStore<BasicsView.Feature.State, BasicsView.Feature.Action>.init
20+
ViewStoreOf<BasicsView.Feature>.deinit
21+
ViewStoreOf<BasicsView.Feature>.init
2322
WithViewStoreOf<BasicsView.Feature>.body
2423
"""
2524
}
2625
self.app.buttons["Decrement"].tap()
2726
self.assertLogs {
2827
"""
2928
BasicsView.body
30-
StoreOf<BasicsView.Feature>.scope
31-
ViewStore<BasicsView.Feature.State, BasicsView.Feature.Action>.deinit
32-
ViewStore<BasicsView.Feature.State, BasicsView.Feature.Action>.init
29+
ViewStoreOf<BasicsView.Feature>.deinit
30+
ViewStoreOf<BasicsView.Feature>.init
3331
WithViewStoreOf<BasicsView.Feature>.body
3432
"""
3533
}

Examples/Integration/IntegrationUITests/EnumTests.swift

Lines changed: 25 additions & 124 deletions
Original file line numberDiff line numberDiff line change
@@ -19,31 +19,19 @@ final class EnumTests: BaseIntegrationTests {
1919
"""
2020
BasicsView.body
2121
EnumView.body
22-
PresentationStoreOf<EnumView.Feature.Destination>.scope
23-
StoreOf<BasicsView.Feature>.init
24-
StoreOf<BasicsView.Feature>.init
25-
StoreOf<BasicsView.Feature?>.init
26-
StoreOf<BasicsView.Feature?>.init
27-
StoreOf<BasicsView.Feature?>.init
28-
StoreOf<EnumView.Feature.Destination>.init
29-
StoreOf<EnumView.Feature.Destination>.init
30-
StoreOf<EnumView.Feature.Destination?>.scope
31-
StoreOf<EnumView.Feature.Destination?>.scope
32-
StoreOf<EnumView.Feature>.scope
33-
StoreOf<EnumView.Feature>.scope
34-
ViewStore<BasicsView.Feature.State, BasicsView.Feature.Action>.deinit
35-
ViewStore<BasicsView.Feature.State, BasicsView.Feature.Action>.init
36-
ViewStore<BasicsView.Feature.State?, BasicsView.Feature.Action>.deinit
37-
ViewStore<BasicsView.Feature.State?, BasicsView.Feature.Action>.init
38-
ViewStore<EnumView.Feature.Destination.State, EnumView.Feature.Destination.Action>.deinit
39-
ViewStore<EnumView.Feature.Destination.State, EnumView.Feature.Destination.Action>.init
40-
ViewStore<EnumView.Feature.Destination.State?, EnumView.Feature.Destination.Action>.deinit
41-
ViewStore<EnumView.Feature.Destination.State?, EnumView.Feature.Destination.Action>.init
4222
ViewStore<EnumView.ViewState, EnumView.Feature.Action>.deinit
4323
ViewStore<EnumView.ViewState, EnumView.Feature.Action>.init
24+
ViewStoreOf<BasicsView.Feature>.deinit
25+
ViewStoreOf<BasicsView.Feature>.init
4426
ViewStoreOf<BasicsView.Feature>.init
27+
ViewStoreOf<BasicsView.Feature?>.deinit
28+
ViewStoreOf<BasicsView.Feature?>.init
4529
ViewStoreOf<BasicsView.Feature?>.init
30+
ViewStoreOf<EnumView.Feature.Destination>.deinit
31+
ViewStoreOf<EnumView.Feature.Destination>.init
4632
ViewStoreOf<EnumView.Feature.Destination>.init
33+
ViewStoreOf<EnumView.Feature.Destination?>.deinit
34+
ViewStoreOf<EnumView.Feature.Destination?>.init
4735
WithViewStore<EnumView.ViewState, EnumView.Feature.Action>.body
4836
WithViewStoreOf<BasicsView.Feature>.body
4937
WithViewStoreOf<BasicsView.Feature?>.body
@@ -56,19 +44,8 @@ final class EnumTests: BaseIntegrationTests {
5644
self.assertLogs {
5745
"""
5846
BasicsView.body
59-
PresentationStoreOf<EnumView.Feature.Destination>.scope
60-
StoreOf<BasicsView.Feature>.scope
61-
StoreOf<BasicsView.Feature?>.scope
62-
StoreOf<BasicsView.Feature?>.scope
63-
StoreOf<EnumView.Feature.Destination>.scope
64-
StoreOf<EnumView.Feature.Destination>.scope
65-
StoreOf<EnumView.Feature.Destination?>.scope
66-
StoreOf<EnumView.Feature.Destination?>.scope
67-
StoreOf<EnumView.Feature.Destination?>.scope
68-
StoreOf<EnumView.Feature>.scope
69-
StoreOf<EnumView.Feature>.scope
70-
ViewStore<BasicsView.Feature.State, BasicsView.Feature.Action>.deinit
71-
ViewStore<BasicsView.Feature.State, BasicsView.Feature.Action>.init
47+
ViewStoreOf<BasicsView.Feature>.deinit
48+
ViewStoreOf<BasicsView.Feature>.init
7249
WithViewStoreOf<BasicsView.Feature>.body
7350
"""
7451
}
@@ -83,15 +60,10 @@ final class EnumTests: BaseIntegrationTests {
8360
self.assertLogs {
8461
"""
8562
EnumView.body
86-
PresentationStoreOf<EnumView.Feature.Destination>.scope
87-
StoreOf<EnumView.Feature.Destination?>.scope
88-
StoreOf<EnumView.Feature.Destination?>.scope
89-
StoreOf<EnumView.Feature>.scope
90-
StoreOf<EnumView.Feature>.scope
91-
ViewStore<EnumView.Feature.Destination.State?, EnumView.Feature.Destination.Action>.deinit
92-
ViewStore<EnumView.Feature.Destination.State?, EnumView.Feature.Destination.Action>.init
9363
ViewStore<EnumView.ViewState, EnumView.Feature.Action>.deinit
9464
ViewStore<EnumView.ViewState, EnumView.Feature.Action>.init
65+
ViewStoreOf<EnumView.Feature.Destination?>.deinit
66+
ViewStoreOf<EnumView.Feature.Destination?>.init
9567
WithViewStore<EnumView.ViewState, EnumView.Feature.Action>.body
9668
WithViewStoreOf<EnumView.Feature.Destination?>.body
9769
"""
@@ -108,39 +80,22 @@ final class EnumTests: BaseIntegrationTests {
10880
"""
10981
BasicsView.body
11082
EnumView.body
111-
PresentationStoreOf<EnumView.Feature.Destination>.scope
112-
StoreOf<BasicsView.Feature>.init
113-
StoreOf<BasicsView.Feature>.init
11483
StoreOf<BasicsView.Feature?>.deinit
115-
StoreOf<BasicsView.Feature?>.init
116-
StoreOf<BasicsView.Feature?>.init
117-
StoreOf<BasicsView.Feature?>.init
118-
StoreOf<BasicsView.Feature?>.init
119-
StoreOf<BasicsView.Feature?>.init
120-
StoreOf<BasicsView.Feature?>.init
121-
StoreOf<BasicsView.Feature?>.scope
122-
StoreOf<BasicsView.Feature?>.scope
123-
StoreOf<EnumView.Feature.Destination>.scope
124-
StoreOf<EnumView.Feature.Destination>.scope
125-
StoreOf<EnumView.Feature.Destination?>.scope
126-
StoreOf<EnumView.Feature.Destination?>.scope
127-
StoreOf<EnumView.Feature.Destination?>.scope
128-
StoreOf<EnumView.Feature>.scope
129-
StoreOf<EnumView.Feature>.scope
130-
ViewStore<BasicsView.Feature.State, BasicsView.Feature.Action>.deinit
131-
ViewStore<BasicsView.Feature.State, BasicsView.Feature.Action>.init
132-
ViewStore<BasicsView.Feature.State?, BasicsView.Feature.Action>.deinit
133-
ViewStore<BasicsView.Feature.State?, BasicsView.Feature.Action>.deinit
134-
ViewStore<BasicsView.Feature.State?, BasicsView.Feature.Action>.init
135-
ViewStore<BasicsView.Feature.State?, BasicsView.Feature.Action>.init
136-
ViewStore<EnumView.Feature.Destination.State, EnumView.Feature.Destination.Action>.deinit
137-
ViewStore<EnumView.Feature.Destination.State, EnumView.Feature.Destination.Action>.init
84+
StoreOf<BasicsView.Feature?>.deinit
13885
ViewStore<EnumView.ViewState, EnumView.Feature.Action>.deinit
13986
ViewStore<EnumView.ViewState, EnumView.Feature.Action>.init
87+
ViewStoreOf<BasicsView.Feature>.deinit
14088
ViewStoreOf<BasicsView.Feature>.init
89+
ViewStoreOf<BasicsView.Feature>.init
90+
ViewStoreOf<BasicsView.Feature?>.deinit
91+
ViewStoreOf<BasicsView.Feature?>.deinit
14192
ViewStoreOf<BasicsView.Feature?>.deinit
14293
ViewStoreOf<BasicsView.Feature?>.init
14394
ViewStoreOf<BasicsView.Feature?>.init
95+
ViewStoreOf<BasicsView.Feature?>.init
96+
ViewStoreOf<BasicsView.Feature?>.init
97+
ViewStoreOf<EnumView.Feature.Destination>.deinit
98+
ViewStoreOf<EnumView.Feature.Destination>.init
14499
WithViewStore<EnumView.ViewState, EnumView.Feature.Action>.body
145100
WithViewStoreOf<BasicsView.Feature>.body
146101
WithViewStoreOf<BasicsView.Feature?>.body
@@ -165,52 +120,14 @@ final class EnumTests: BaseIntegrationTests {
165120
"""
166121
BasicsView.body
167122
EnumView.body
168-
PresentationStoreOf<EnumView.Feature.Destination>.scope
169-
StoreOf<BasicsView.Feature>.deinit
170-
StoreOf<BasicsView.Feature>.deinit
171-
StoreOf<BasicsView.Feature>.init
172-
StoreOf<BasicsView.Feature>.init
173-
StoreOf<BasicsView.Feature>.scope
174-
StoreOf<BasicsView.Feature?>.deinit
175-
StoreOf<BasicsView.Feature?>.deinit
176-
StoreOf<BasicsView.Feature?>.deinit
177-
StoreOf<BasicsView.Feature?>.init
178-
StoreOf<BasicsView.Feature?>.init
179-
StoreOf<BasicsView.Feature?>.init
180-
StoreOf<BasicsView.Feature?>.scope
181-
StoreOf<BasicsView.Feature?>.scope
182-
StoreOf<BasicsView.Feature?>.scope
183-
StoreOf<EnumView.Feature.Destination>.deinit
184-
StoreOf<EnumView.Feature.Destination>.deinit
185-
StoreOf<EnumView.Feature.Destination>.init
186-
StoreOf<EnumView.Feature.Destination>.init
187-
StoreOf<EnumView.Feature.Destination>.scope
188-
StoreOf<EnumView.Feature.Destination>.scope
189-
StoreOf<EnumView.Feature.Destination?>.scope
190-
StoreOf<EnumView.Feature.Destination?>.scope
191-
StoreOf<EnumView.Feature.Destination?>.scope
192-
StoreOf<EnumView.Feature>.scope
193-
StoreOf<EnumView.Feature>.scope
194-
ViewStore<BasicsView.Feature.State, BasicsView.Feature.Action>.deinit
195-
ViewStore<BasicsView.Feature.State, BasicsView.Feature.Action>.init
196-
ViewStore<BasicsView.Feature.State?, BasicsView.Feature.Action>.deinit
197-
ViewStore<BasicsView.Feature.State?, BasicsView.Feature.Action>.init
198-
ViewStore<EnumView.Feature.Destination.State, EnumView.Feature.Destination.Action>.deinit
199-
ViewStore<EnumView.Feature.Destination.State, EnumView.Feature.Destination.Action>.init
200-
ViewStore<EnumView.Feature.Destination.State?, EnumView.Feature.Destination.Action>.deinit
201-
ViewStore<EnumView.Feature.Destination.State?, EnumView.Feature.Destination.Action>.init
202123
ViewStore<EnumView.ViewState, EnumView.Feature.Action>.deinit
203124
ViewStore<EnumView.ViewState, EnumView.Feature.Action>.init
204125
ViewStoreOf<BasicsView.Feature>.deinit
205126
ViewStoreOf<BasicsView.Feature>.init
206-
ViewStoreOf<BasicsView.Feature?>.deinit
207-
ViewStoreOf<BasicsView.Feature?>.init
208-
ViewStoreOf<EnumView.Feature.Destination>.deinit
209-
ViewStoreOf<EnumView.Feature.Destination>.init
127+
ViewStoreOf<EnumView.Feature.Destination?>.deinit
128+
ViewStoreOf<EnumView.Feature.Destination?>.init
210129
WithViewStore<EnumView.ViewState, EnumView.Feature.Action>.body
211130
WithViewStoreOf<BasicsView.Feature>.body
212-
WithViewStoreOf<BasicsView.Feature?>.body
213-
WithViewStoreOf<EnumView.Feature.Destination>.body
214131
WithViewStoreOf<EnumView.Feature.Destination?>.body
215132
"""
216133
}
@@ -225,26 +142,10 @@ final class EnumTests: BaseIntegrationTests {
225142
self.assertLogs {
226143
"""
227144
EnumView.body
228-
PresentationStoreOf<EnumView.Feature.Destination>.scope
229-
PresentationStoreOf<EnumView.Feature.Destination>.scope
230-
StoreOf<BasicsView.Feature>.scope
231-
StoreOf<BasicsView.Feature?>.scope
232-
StoreOf<BasicsView.Feature?>.scope
233-
StoreOf<EnumView.Feature.Destination>.scope
234-
StoreOf<EnumView.Feature.Destination>.scope
235-
StoreOf<EnumView.Feature.Destination?>.scope
236-
StoreOf<EnumView.Feature.Destination?>.scope
237-
StoreOf<EnumView.Feature.Destination?>.scope
238-
StoreOf<EnumView.Feature.Destination?>.scope
239-
StoreOf<EnumView.Feature.Destination?>.scope
240-
StoreOf<EnumView.Feature>.scope
241-
StoreOf<EnumView.Feature>.scope
242-
StoreOf<EnumView.Feature>.scope
243-
StoreOf<EnumView.Feature>.scope
244-
ViewStore<EnumView.Feature.Destination.State?, EnumView.Feature.Destination.Action>.deinit
245-
ViewStore<EnumView.Feature.Destination.State?, EnumView.Feature.Destination.Action>.init
246145
ViewStore<EnumView.ViewState, EnumView.Feature.Action>.deinit
247146
ViewStore<EnumView.ViewState, EnumView.Feature.Action>.init
147+
ViewStoreOf<EnumView.Feature.Destination?>.deinit
148+
ViewStoreOf<EnumView.Feature.Destination?>.init
248149
WithViewStore<EnumView.ViewState, EnumView.Feature.Action>.body
249150
WithViewStoreOf<EnumView.Feature.Destination?>.body
250151
"""

Examples/Integration/IntegrationUITests/IdentifiedListTests.swift

Lines changed: 15 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -21,29 +21,22 @@ final class IdentifiedListTests: BaseIntegrationTests {
2121
IdentifiedListView.body.ForEachStore
2222
IdentifiedListView.body.ForEachStore
2323
IdentifiedStoreOf<BasicsView.Feature>.deinit
24-
IdentifiedStoreOf<BasicsView.Feature>.init
25-
IdentifiedStoreOf<BasicsView.Feature>.scope
24+
IdentifiedStoreOf<BasicsView.Feature>.deinit
2625
Store<UUID, Action>
2726
Store<UUID, BasicsView.Feature.Action>.deinit
28-
Store<UUID, BasicsView.Feature.Action>.init
29-
Store<UUID, BasicsView.Feature.Action>.init
30-
Store<UUID, BasicsView.Feature.Action>.init
31-
StoreOf<BasicsView.Feature>.init
32-
StoreOf<BasicsView.Feature>.init
33-
StoreOf<IdentifiedListView.Feature>.scope
34-
StoreOf<IdentifiedListView.Feature>.scope
27+
Store<UUID, BasicsView.Feature.Action>.deinit
28+
ViewIdentifiedStoreOf<BasicsView.Feature>.deinit
3529
ViewIdentifiedStoreOf<BasicsView.Feature>.deinit
3630
ViewIdentifiedStoreOf<BasicsView.Feature>.init
37-
ViewStore<BasicsView.Feature.State, BasicsView.Feature.Action>.deinit
38-
ViewStore<BasicsView.Feature.State, BasicsView.Feature.Action>.init
39-
ViewStore<IdentifiedArray<UUID, BasicsView.Feature.State>, IdentifiedAction<UUID, BasicsView.Feature.Action>>.deinit
40-
ViewStore<IdentifiedArray<UUID, BasicsView.Feature.State>, IdentifiedAction<UUID, BasicsView.Feature.Action>>.init
31+
ViewIdentifiedStoreOf<BasicsView.Feature>.init
4132
ViewStore<IdentifiedListView.ViewState, IdentifiedListView.Feature.Action>.deinit
4233
ViewStore<IdentifiedListView.ViewState, IdentifiedListView.Feature.Action>.init
4334
ViewStore<UUID, BasicsView.Feature.Action>.deinit
4435
ViewStore<UUID, BasicsView.Feature.Action>.init
4536
ViewStore<UUID, BasicsView.Feature.Action>.init
4637
ViewStore<UUID, BasicsView.Feature.Action>.init
38+
ViewStoreOf<BasicsView.Feature>.deinit
39+
ViewStoreOf<BasicsView.Feature>.init
4740
ViewStoreOf<BasicsView.Feature>.init
4841
WithViewIdentifiedStoreOf<BasicsView.Feature>.body
4942
WithViewStore<IdentifiedListView.ViewState, IdentifiedListView.Feature.Action>.body
@@ -66,29 +59,17 @@ final class IdentifiedListTests: BaseIntegrationTests {
6659
IdentifiedListView.body.ForEachStore
6760
IdentifiedListView.body.ForEachStore
6861
IdentifiedStoreOf<BasicsView.Feature>.deinit
69-
IdentifiedStoreOf<BasicsView.Feature>.init
70-
IdentifiedStoreOf<BasicsView.Feature>.scope
71-
IdentifiedStoreOf<BasicsView.Feature>.scope
62+
IdentifiedStoreOf<BasicsView.Feature>.deinit
7263
Store<UUID, Action>
7364
Store<UUID, Action>
7465
Store<UUID, BasicsView.Feature.Action>.deinit
7566
Store<UUID, BasicsView.Feature.Action>.deinit
76-
Store<UUID, BasicsView.Feature.Action>.init
77-
Store<UUID, BasicsView.Feature.Action>.init
78-
Store<UUID, BasicsView.Feature.Action>.scope
79-
Store<UUID, BasicsView.Feature.Action>.scope
80-
StoreOf<BasicsView.Feature>.scope
81-
StoreOf<BasicsView.Feature>.scope
82-
StoreOf<BasicsView.Feature>.scope
83-
StoreOf<BasicsView.Feature>.scope
84-
StoreOf<IdentifiedListView.Feature>.scope
85-
StoreOf<IdentifiedListView.Feature>.scope
67+
Store<UUID, BasicsView.Feature.Action>.deinit
68+
Store<UUID, BasicsView.Feature.Action>.deinit
69+
ViewIdentifiedStoreOf<BasicsView.Feature>.deinit
8670
ViewIdentifiedStoreOf<BasicsView.Feature>.deinit
8771
ViewIdentifiedStoreOf<BasicsView.Feature>.init
88-
ViewStore<BasicsView.Feature.State, BasicsView.Feature.Action>.deinit
89-
ViewStore<BasicsView.Feature.State, BasicsView.Feature.Action>.init
90-
ViewStore<IdentifiedArray<UUID, BasicsView.Feature.State>, IdentifiedAction<UUID, BasicsView.Feature.Action>>.deinit
91-
ViewStore<IdentifiedArray<UUID, BasicsView.Feature.State>, IdentifiedAction<UUID, BasicsView.Feature.Action>>.init
72+
ViewIdentifiedStoreOf<BasicsView.Feature>.init
9273
ViewStore<IdentifiedListView.ViewState, IdentifiedListView.Feature.Action>.deinit
9374
ViewStore<IdentifiedListView.ViewState, IdentifiedListView.Feature.Action>.init
9475
ViewStore<UUID, BasicsView.Feature.Action>.deinit
@@ -99,6 +80,8 @@ final class IdentifiedListTests: BaseIntegrationTests {
9980
ViewStore<UUID, BasicsView.Feature.Action>.init
10081
ViewStore<UUID, BasicsView.Feature.Action>.init
10182
ViewStore<UUID, BasicsView.Feature.Action>.init
83+
ViewStoreOf<BasicsView.Feature>.deinit
84+
ViewStoreOf<BasicsView.Feature>.init
10285
WithViewIdentifiedStoreOf<BasicsView.Feature>.body
10386
WithViewStore<IdentifiedListView.ViewState, IdentifiedListView.Feature.Action>.body
10487
WithViewStore<UUID, BasicsView.Feature.Action>.body
@@ -117,18 +100,8 @@ final class IdentifiedListTests: BaseIntegrationTests {
117100
self.assertLogs {
118101
"""
119102
BasicsView.body
120-
IdentifiedStoreOf<BasicsView.Feature>.scope
121-
IdentifiedStoreOf<BasicsView.Feature>.scope
122-
Store<UUID, BasicsView.Feature.Action>.scope
123-
Store<UUID, BasicsView.Feature.Action>.scope
124-
StoreOf<BasicsView.Feature>.scope
125-
StoreOf<BasicsView.Feature>.scope
126-
StoreOf<BasicsView.Feature>.scope
127-
StoreOf<BasicsView.Feature>.scope
128-
StoreOf<IdentifiedListView.Feature>.scope
129-
StoreOf<IdentifiedListView.Feature>.scope
130-
ViewStore<BasicsView.Feature.State, BasicsView.Feature.Action>.deinit
131-
ViewStore<BasicsView.Feature.State, BasicsView.Feature.Action>.init
103+
ViewStoreOf<BasicsView.Feature>.deinit
104+
ViewStoreOf<BasicsView.Feature>.init
132105
WithViewStoreOf<BasicsView.Feature>.body
133106
"""
134107
}

Examples/Integration/IntegrationUITests/Legacy/ForEachBindingTests.swift

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,10 @@ final class ForEachBindingTests: BaseIntegrationTests {
1616
XCTAssertFalse(app.textFields["B"].exists)
1717
app.buttons["Remove last"].tap()
1818
XCTAssertFalse(app.textFields["A"].exists)
19-
2019
XCTExpectFailure(
2120
"""
22-
This ideally would not fail, but currently does. See this PR for more details:
23-
24-
https://github.com/pointfreeco/swift-composable-architecture/pull/1845
21+
This ideally would not fail, but currently does. See this PR for more details:
22+
https://github.com/pointfreeco/swift-composable-architecture/pull/1845
2523
"""
2624
) {
2725
XCTAssertFalse(app.staticTexts["🛑"].exists)

0 commit comments

Comments
 (0)