You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: okf-bundle/ci-workflows/ios.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,7 +16,7 @@ On GHA macOS runners, `simctl list` can show `Booted` before the simulator is te
16
16
17
17
**Pre-boot step** (`.github/workflows/scripts/boot-simulator.sh`), run via `nick-fields/retry` before Detox:
18
18
19
-
> **Not for local operators.**`boot-simulator.sh` is **CI-only** (this workflow) or invoked **internally** by `tests/e2e/firebase.test.js` on iOS Jet-level retry. Local e2e uses only [running-e2e.md](../testing/running-e2e.md) — Detox boots the simulator via `yarn tests:ios:test-cover`; do not run `boot-simulator.sh` as operator prep.
19
+
> **Not for local operators.**`boot-simulator.sh` is **CI-only** (this workflow) or invoked **internally** by `tests/e2e/firebase.test.js` on iOS Jet-level retry. Local e2e uses only [running-e2e.md](../testing/running-e2e.md) — [host-clear probes](../testing/running-e2e.md#host-clear-probes) require zero booted simulators; Detox boots `iPhone 17` via `yarn tests:ios:test-cover`. Do not run `boot-simulator.sh` as operator prep.
Copy file name to clipboardExpand all lines: okf-bundle/packages/firestore/pipeline-implementation-workflow.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -103,7 +103,7 @@ If review fails, return to `implementation`, then repeat `independent-review`.
103
103
104
104
iOS guard probes/bridge fixes use the same split; stricter serial gate: [work queue runtime guard protocol](pipeline-coverage-work-queue.md#phase-j-iteration-protocol-strict) + [running-e2e serial policy](../../testing/running-e2e.md#serialized-e2e-dispatch).
105
105
106
-
Guard probes: one function per commit; no batching. [Pre-flight](../../testing/running-e2e.md#pre-flight-is-the-host-clear-to-start)includes services ready + harness tier. Commands: [running-e2e.md](../../testing/running-e2e.md).
106
+
Guard probes: one function per commit; no batching. [Pre-flight](../../testing/running-e2e.md#pre-flight-is-the-host-clear-to-start)(by reference). Commands: [running-e2e.md](../../testing/running-e2e.md).
107
107
108
108
**Live gate status:**[pipeline-coverage-work-queue](pipeline-coverage-work-queue.md) (ephemeral tracker — see [documentation policy](../../documentation-policy.md)).
109
109
@@ -158,7 +158,7 @@ Skip only when continuing immediately after same-worktree `after-<export>` snaps
158
158
**Retroactive baseline:** If implementation was already committed without baseline numbers, check out the parent commit, apply harness only if needed for e2e load, run full baseline, snapshot `before-<export>`, return to HEAD.
159
159
160
160
1. Revert leftover `.only`; area narrowing allowed for pipeline baseline.
161
-
2.Start [running e2e pre-flight](../../testing/running-e2e.md#pre-flight-is-the-host-clear-to-start)(services + harness tier) and prerequisites: emulators, packager, rebuild native if needed.
161
+
2.[Pre-flight](../../testing/running-e2e.md#pre-flight-is-the-host-clear-to-start) and prerequisites ([Rules §1–2](../../testing/running-e2e.md#rules)); rebuild native if needed.
162
162
3. Full pipeline e2e + coverage on **macOS, iOS, Android**; no reuse variants.
163
163
4.`bash scripts/snapshot-pipeline-coverage.sh before-<export-name>` — paste full stdout into the iteration report.
Copy file name to clipboardExpand all lines: okf-bundle/testing/iteration-vocabulary.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -64,7 +64,7 @@ See also: [running e2e rule 7](running-e2e.md#rules) and [host rule](running-e2e
64
64
On a shared dev host:
65
65
66
66
- One `:test-cover` at a time — never overlap focused-tier and area-tier runs.
67
-
-[Pre-flight](running-e2e.md#pre-flight-is-the-host-clear-to-start) before every run: hostclear, [services ready](running-e2e.md#2-services-ready), [harness matches `validation_tier`](running-e2e.md#3-harness-matches-validation-tier) ([narrowing gate](running-e2e.md#harness-narrowing-gate-blocking) for `focused` and `area`).
67
+
-[Pre-flight](running-e2e.md#pre-flight-is-the-host-clear-to-start) before every run: [host-clear probes](running-e2e.md#host-clear-probes), [services ready](running-e2e.md#2-services-ready), [harness matches `validation_tier`](running-e2e.md#3-harness-matches-validation-tier) ([narrowing gate](running-e2e.md#harness-narrowing-gate-blocking) for `focused` and `area`).
68
68
- Canonical commands only — [running e2e](running-e2e.md). Stalled runs → [stalled run detection](running-e2e.md#stalled-run-detection).
Run **all three** checks before every `:test-cover`.
106
+
**Canonical owner** for host-clear probes, recovery after abort, and service checks. Other OKF docs link here by reference — do not duplicate commands or probes elsewhere.
107
+
108
+
Run **all three** steps before every `:test-cover`. After an [interrupted run](#interrupted-run-abort-killed-terminal-eaddrinuse-on-8090), run [pre-flight recovery](#pre-flight-recovery) and re-run the probes.
107
109
108
110
#### 1. Host clear
109
111
110
112
No in-flight test run on the target platform:
111
113
112
-
| Platform |Active e2e signal |Clear to start|
113
-
|----------|-------------------|----------------|
114
-
|**Android**|`adb -s emulator-5554 shell pidof com.invertase.testing.test` returns a PID| command prints nothing / empty|
115
-
|**iOS**|`xcrun simctl spawn booted pgrep -x testing` returns a PID | no output|
116
-
|**macOS**|`pgrep -x io.invertase.testing`returns a PID | no output|
114
+
| Platform | Clear when|
115
+
|----------|------------|
116
+
|**Android**|[Host-clear probes](#host-clear-probes) pass (no instrumentation PID)|
117
+
|**iOS**|[Host-clear probes](#host-clear-probes) pass — **zero booted simulators** and no stray Jet on `:8090`. Detox boots `iPhone 17` from `tests/.detoxrc.js`; do not pre-boot or leave simulators running.|
118
+
|**macOS**|[Host-clear probes](#host-clear-probes) pass (no `io.invertase.testing`process)|
117
119
118
120
Also wait for any visible unfinished `yarn tests:*:test-cover`.
119
121
122
+
<aid="host-clear-probes"></a>
123
+
124
+
**Host-clear probes** — run the block for your platform; **exit 0 = clear** (chain with `&&`):
|**macOS**|`Jet client connected`|`✨ Tests Complete ✨`, Jest `N passing`|
154
190
|**iOS/Android**| Detox launch done, Jet connected | Same |
155
191
156
-
**If stalled** — no new markers for **5 minutes**, or past tier budget (~15m macOS, ~45–60m iOS/Android) without `Tests Complete`: treat as [interrupted run](#interrupted-run-abort-killed-terminal-eaddrinuse-on-8090). Re-check [services ready](#2-services-ready), diagnose (`curl` Metro `/status`, platform active-signal commands above, `lsof -nP -iTCP:8090`), retry. Do not keep watching flat tee output.
192
+
**If stalled** — no new markers for **5 minutes**, or past tier budget (~15m macOS, ~45–60m iOS/Android) without `Tests Complete`: treat as [interrupted run](#interrupted-run-abort-killed-terminal-eaddrinuse-on-8090). Run [pre-flight recovery](#pre-flight-recovery), confirm [host-clear probes](#host-clear-probes) and [services ready](#2-services-ready), retry. Do not keep watching flat tee output.
2. Edit e2e/spec; add `.only` if needed; never commit narrowing.
189
225
3. macOS first when TS-only: `yarn tests:macos:test-cover 2>&1 | tee /tmp/rnfb-e2e-macos.log` — wait for exit code ([stalled run](#stalled-run-detection) if markers stop).
190
226
4. If macOS green and native touched: `yarn tests:<platform>:build && yarn tests:<platform>:test-cover 2>&1 | tee /tmp/rnfb-e2e-<platform>.log`; one platform at a time.
@@ -199,7 +235,7 @@ Never overlap runs that use `:test-cover`. See [host rule](iteration-vocabulary.
199
235
|------|-------------|
200
236
|**One e2e run at a time**| Wait for prior shell exit code + short log summary |
201
237
|**No overlapping tiers**| Never run focused-tier and area-tier `:test-cover` concurrently on one host |
202
-
|**Clean pre-flight every run**|[Pre-flight](#pre-flight-is-the-host-clear-to-start) — host, services, harness tier |
Then rerun from repo root: `yarn tests:<platform>:build && yarn tests:<platform>:test-cover` (foreground; tee if logging).
251
+
Run [pre-flight recovery](#pre-flight-recovery), confirm [host-clear probes](#host-clear-probes) pass, then rerun from repo root: `yarn tests:<platform>:build && yarn tests:<platform>:test-cover` (foreground; tee if logging).
230
252
231
253
### What not to do
232
254
@@ -284,17 +306,17 @@ All tiers use [canonical commands](#rules), [host rule](iteration-vocabulary.md#
284
306
**Universal rules:**
285
307
286
308
- E2e is **always serial** — one `:test-cover` at a time on the host.
287
-
- Every run starts from **verified pre-flight** (hostclear + services ready + harness matches tier); if not, wait or follow [interrupted-run cleanup](#interrupted-run-abort-killed-terminal-eaddrinuse-on-8090) — do not start another run.
309
+
- Every run starts from **verified [pre-flight](#pre-flight-is-the-host-clear-to-start)**; if probes fail, [pre-flight recovery](#pre-flight-recovery) before another run.
288
310
- Use **only** canonical commands from this doc.
289
311
- Never overlap focused-tier and area-tier `:test-cover` on one host.
290
312
291
313
See also: [focused-tier loop](#focused-tier-iteration-loop), [dispatch](#serialized-e2e-dispatch), [pre-merge](#before-merge-pr-handoff).
-**Stale processes** — one Metro (`:8081`), one emulator set (`:8080`, `:9099`, `:9000`, `:4400`, …). Jet `:8090`is per-`:test-cover`, not background; listener after run usually means stray Jet. Check: `lsof -nP -iTCP -sTCP:LISTEN | rg ':8081|:8080|:9099|:4400'`. Kill Metro/emulators: `pkill -f "react-native start"`, `pkill -f "firebase emulators"`.
319
+
-**Stale processes** — one Metro (`:8081`), one emulator set (`:8080`, `:9099`, `:9000`, `:4400`, …). Stray Jet on `:8090` after a run → [pre-flight recovery](#pre-flight-recovery). Restart Metro/emulators: `pkill -f "react-native start"`, `pkill -f "firebase emulators"`, then [Rules §1–2](#rules).
298
320
299
321
## Diagnosing hangs
300
322
@@ -315,7 +337,7 @@ See also: [focused-tier loop](#focused-tier-iteration-loop), [dispatch](#seriali
315
337
Pre-merge applies once to the branch commit stream before merge/push intended for merge, not after every commit.
316
338
317
339
1. Revert all narrowing ([full tier](#e2e-validation-tiers-focused-area-full)): restore `tests/app.js` (`platformSupportedModules` + `require.context`), default `RNFBDebug` in `tests/globals.js`, remove all `.only`, remove native instrumentation.
318
-
2.[Pre-flight](#pre-flight-is-the-host-clear-to-start) — verified clean host before each platform run.
340
+
2.[Pre-flight](#pre-flight-is-the-host-clear-to-start) — [host-clear probes](#host-clear-probes) pass before each platform run.
319
341
3. Rebuild if needed (`tests:<platform>:build`; `yarn lerna:prepare` for `lib/**`).
320
342
4. Full unfocused suite with coverage on **iOS, Android, macOS** — one platform at a time, all green.
Copy file name to clipboardExpand all lines: okf-bundle/testing/validation-checklist.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -71,7 +71,7 @@ Native: `yarn lint:android`, `yarn lint:ios:check`. `lint:android` can flake; re
71
71
72
72
## E2e with coverage
73
73
74
-
[Pre-flight](running-e2e.md#pre-flight-is-the-host-clear-to-start) (host + services + harness tier) before every run. Match harness to work type — **focused**/**area** never use full app load ([running e2e § harness](running-e2e.md#3-harness-matches-validation-tier)).
74
+
[Pre-flight](running-e2e.md#pre-flight-is-the-host-clear-to-start) (host-clear probes + services + harness tier) before every run. Match harness to work type — **focused**/**area** never use full app load ([running e2e § harness](running-e2e.md#3-harness-matches-validation-tier)).
0 commit comments