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
{{ message }}
Repository navigation
Commit ac24c87
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: .claude/skills/verify-clerk-expo/SKILL.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,7 @@ description: Drive @clerk/expo and @clerk/expo-native-components in the expo-nat
5
5
6
6
# verify-clerk-expo
7
7
8
-
`integration/expo-native/bin/control-clerk-expo` is a control CLI over [e2e](https://github.com/tester-army/e2e) 0.18.0 and `@e2e-dev/mobile` 0.10.0. It builds the `expo-native` test app in `integration/templates/expo-native`, leases a simulator or emulator, creates one Clerk application for the worktree, seeds `+clerk_test` users, runs specs, and keeps the evidence. On a Mac the device is local, the test app is a Debug dev client, and Metro serves your working tree to it. On a machine that cannot run the device, the CLI leases one on a GitHub Actions runner, and the runner builds your pushed commit as a Release app with the JS embedded. The verbs, specs, and evidence are the same.
8
+
`integration/expo-native/bin/control-clerk-expo` is a control CLI over [e2e](https://github.com/tester-army/e2e) 0.22.0 and `@e2e-dev/mobile` 0.10.0. It builds the `expo-native` test app in `integration/templates/expo-native`, leases a simulator or emulator, creates one Clerk application for the worktree, seeds `+clerk_test` users, runs specs, and keeps the evidence. On a Mac the device is local, the test app is a Debug dev client, and Metro serves your working tree to it. On a machine that cannot run the device, the CLI leases one on a GitHub Actions runner, and the runner builds your pushed commit as a Release app with the JS embedded. The verbs, specs, and evidence are the same.
9
9
10
10
The tests are an ordinary e2e project. `e2e.config.ts` and `specs/` run under `npx e2e run` when the environment names a device, a build of the test app, and a development instance's keys. The CLI sits on top: it makes those three for a run and keeps the evidence. [The package README](../../../integration/expo-native/README.md) has the commands for a run by hand and what such a run leaves out.
11
11
@@ -225,7 +225,7 @@ await host.evidence('sign in with an email code', async () => {
225
225
226
226
`attach --video` posts each marked block with a second before it and half a second after it, and shortens every stretch of more than a second where the screen does not change to one second, keeping two seconds of the result at the end of a block. It refuses a run with no marked block. A before run that failed before its block posts its whole video with the same shortening. It draws a short blue pulse where each `host.tap`, `host.back`, and `host.fill` tapped. The pulse starts 0.2 seconds before the video first shows the tapped control change, so it shows on the control before the screen moves. When the video shows no change near the tapped point, or the screen there is already moving when the tap is sent, the pulse starts when the tap was sent. The cut never removes a still stretch across a pulse. `attach` prints how long the video was, how long the posted part is, and how many taps it marked. The cut needs ffmpeg on `PATH`: without it `attach` posts the whole video and says so, and `doctor` has a `video-cut` line.
227
227
228
-
A run that names its specs and records a video is paced for a reviewer. Before each `host.tap`, `host.back`, and `host.fill` it waits for the target to show and then 0.6 seconds more, and at the end of each `host.evidence` block it holds the result for two seconds. Nothing else is slowed. A tap made any other way, such as the locator's own `tap`, gets no pause and no pulse, and so does `device.back()`. So inside a `host.evidence` block, tap with `host.tap`, and go back with `host.back()`. It taps the middle of the screen's back control, as a user does: the navigation bar's back button, `BackButton`, on iOS, and the top bar's back arrow, labelled `Back`, on Android. It fails when the screen shows neither. `run --all`, which PR CI uses, and `run --no-video` keep full speed, so pass `--no-video` while you iterate on a spec. Neither `simctl io recordVideo` nor the emulator's `screenrecord` records a touch indicator, so the pulses are the only sign of a tap. After the tests, `run` reads the size of the screen to place them. When it cannot, it says so, and `attach` draws no pulses for that run.
228
+
A run that names its specs and records a video is paced for a reviewer. Before each `host.tap`, `host.back`, and `host.fill` it waits for the target to show and then 0.6 seconds more, and at the end of each `host.evidence` block it holds the result for two seconds. Nothing else is slowed. A tap made any other way, such as the locator's own `tap`, gets no pause and no pulse, and so does `device.back()`. So inside a `host.evidence` block, tap with `host.tap`, and go back with `host.back()`. It taps the middle of the screen's back control, as a user does: the navigation bar's back button, `BackButton`, on iOS, and the top bar's back arrow, labelled `Back`, on Android. It fails when the screen shows neither. `run --all`, which the release workflow uses, and `run --no-video` keep full speed, so pass `--no-video` while you iterate on a spec. Neither `simctl io recordVideo` nor the emulator's `screenrecord` records a touch indicator, so the pulses are the only sign of a tap. After the tests, `run` reads the size of the screen to place them. When it cannot, it says so, and `attach` draws no pulses for that run.
229
229
230
230
Choose before and after, or after only, by whether the thing existed. A change to something that exists shows what it replaced, so add `--before <run-id>`. Something new has no before, so leave the flag out.
231
231
@@ -279,7 +279,7 @@ $ integration/expo-native/bin/control-clerk-expo down
Attach the run of your own change. Run your new or changed spec on its own and attach that run, so the screenshots or the video show only what the change is about. A run of `--all` marks nothing, so `attach --video` refuses it. You do not owe a regression run: PR CI (`.github/workflows/verify-e2e.yml`) runs every committed spec on the pull request and reports them there. If you ran other committed specs anyway, cite that run's id in the PR and leave its video in `.verify/runs/`.
282
+
Attach the run of your own change. Run your new or changed spec on its own and attach that run, so the screenshots or the video show only what the change is about. A run of `--all` marks nothing, so `attach --video` refuses it. No CI job runs the committed specs on your pull request, because `.github/workflows/verify-e2e.yml` runs them only on the Version packages pull request, so run the specs of each feature your change shares code with yourself, as [Check your work](#check-your-work) says. If you ran other committed specs, cite that run's id in the PR and leave its video in `.verify/runs/`.
0 commit comments