Skip to content

Commit 808601a

Browse files
committed
Merge remote-tracking branch 'origin/main' into chris/native-component-tests
# Conflicts: # .github/workflows/mobile-e2e.yml
2 parents 3848bcd + 888a68c commit 808601a

58 files changed

Lines changed: 395 additions & 114 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.changeset/expo-mobile-485-cold-start-activity.md

Lines changed: 0 additions & 7 deletions
This file was deleted.

.changeset/four-wombats-clean.md

Lines changed: 0 additions & 6 deletions
This file was deleted.

.changeset/improve-auth-middleware-error-message.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

.changeset/lucky-tables-learn.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

.changeset/pink-taxes-do.md

Lines changed: 0 additions & 7 deletions
This file was deleted.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
---
2+
---

.changeset/wild-insects-design.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@clerk/ui": patch
3+
---
4+
5+
Fixed unhandled TypeError when `unsafeMetadata` is passed to `<SignUp />`

.github/workflows/mobile-e2e.yml

Lines changed: 13 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,13 @@
33
# and runs Maestro flows on iOS simulator and Android emulator.
44
#
55
# Secrets:
6-
# INTEGRATION_INSTANCE_KEYS — JSON map of named test instances
6+
# INTEGRATION_STAGING_INSTANCE_KEYS — JSON map of named staging test instances
77
# ({ "<name>": { "pk": "pk_test_...", "sk": "sk_test_..." } }).
8-
# Same secret used by /integration (Playwright). We read the entry named
9-
# EXPO_INSTANCE_NAME (set in env: below).
8+
# Same secret used by /integration (Playwright) staging jobs. We read the
9+
# entry named EXPO_INSTANCE_NAME (set in env: below).
1010
#
1111
# Test users are provisioned per-run via Clerk Backend API and deleted at
1212
# teardown — same pattern as /integration's createBapiUser.
13-
#
14-
# TODO(SDK team): confirm the instance-name slot to add inside
15-
# INTEGRATION_INSTANCE_KEYS for this workflow (placeholder: "expo-native").
1613
name: "Mobile e2e (@clerk/expo)"
1714

1815
on:
@@ -28,8 +25,7 @@ on:
2825
default: "manual,skip"
2926

3027
env:
31-
# TODO(SDK team): replace with the canonical mobile-e2e instance name once confirmed.
32-
EXPO_INSTANCE_NAME: expo-native
28+
EXPO_INSTANCE_NAME: clerkstage-with-native-components
3329

3430
concurrency:
3531
group: mobile-e2e-${{ github.ref }}
@@ -38,7 +34,7 @@ concurrency:
3834
jobs:
3935
android:
4036
name: Android
41-
runs-on: ubuntu-latest
37+
runs-on: 'blacksmith-8vcpu-ubuntu-2204'
4238
timeout-minutes: 45
4339
defaults:
4440
run:
@@ -73,20 +69,8 @@ jobs:
7369
- name: Resolve Clerk instance keys
7470
id: keys
7571
env:
76-
INTEGRATION_INSTANCE_KEYS: ${{ secrets.INTEGRATION_INSTANCE_KEYS }}
77-
run: |
78-
if [ -z "$INTEGRATION_INSTANCE_KEYS" ]; then
79-
echo "::error::INTEGRATION_INSTANCE_KEYS secret is not set"
80-
exit 1
81-
fi
82-
pk=$(echo "$INTEGRATION_INSTANCE_KEYS" | jq -er ".[\"$EXPO_INSTANCE_NAME\"].pk") || {
83-
echo "::error::No entry '$EXPO_INSTANCE_NAME' found in INTEGRATION_INSTANCE_KEYS"
84-
exit 1
85-
}
86-
sk=$(echo "$INTEGRATION_INSTANCE_KEYS" | jq -er ".[\"$EXPO_INSTANCE_NAME\"].sk")
87-
echo "::add-mask::$sk"
88-
echo "pk=$pk" >> "$GITHUB_OUTPUT"
89-
echo "sk=$sk" >> "$GITHUB_OUTPUT"
72+
INTEGRATION_STAGING_INSTANCE_KEYS: ${{ secrets.INTEGRATION_STAGING_INSTANCE_KEYS }}
73+
run: node scripts/resolve-instance-keys.mjs INTEGRATION_STAGING_INSTANCE_KEYS "$EXPO_INSTANCE_NAME"
9074

9175
- name: Write quickstart .env
9276
working-directory: clerk-expo-quickstart/NativeComponentQuickstart
@@ -126,6 +110,7 @@ jobs:
126110
env:
127111
CLERK_TEST_EMAIL: ${{ steps.user.outputs.email }}
128112
CLERK_TEST_PASSWORD: ${{ steps.user.outputs.password }}
113+
EXCLUDE_TAGS: ${{ inputs.exclude_tags }}
129114
with:
130115
api-level: 34
131116
target: google_apis
@@ -137,7 +122,7 @@ jobs:
137122
cd ../../integration-mobile
138123
# Maestro doesn't auto-recurse into subdirectories; pass each flow explicitly.
139124
find flows -type f -name "*.yaml" ! -path "*/common/*" -print0 | \
140-
xargs -0 maestro test --exclude-tags "${{ inputs.exclude_tags }}"
125+
xargs -0 maestro test --exclude-tags "$EXCLUDE_TAGS"
141126
142127
- name: Upload Maestro artifacts on failure
143128
if: failure()
@@ -189,20 +174,8 @@ jobs:
189174
- name: Resolve Clerk instance keys
190175
id: keys
191176
env:
192-
INTEGRATION_INSTANCE_KEYS: ${{ secrets.INTEGRATION_INSTANCE_KEYS }}
193-
run: |
194-
if [ -z "$INTEGRATION_INSTANCE_KEYS" ]; then
195-
echo "::error::INTEGRATION_INSTANCE_KEYS secret is not set"
196-
exit 1
197-
fi
198-
pk=$(echo "$INTEGRATION_INSTANCE_KEYS" | jq -er ".[\"$EXPO_INSTANCE_NAME\"].pk") || {
199-
echo "::error::No entry '$EXPO_INSTANCE_NAME' found in INTEGRATION_INSTANCE_KEYS"
200-
exit 1
201-
}
202-
sk=$(echo "$INTEGRATION_INSTANCE_KEYS" | jq -er ".[\"$EXPO_INSTANCE_NAME\"].sk")
203-
echo "::add-mask::$sk"
204-
echo "pk=$pk" >> "$GITHUB_OUTPUT"
205-
echo "sk=$sk" >> "$GITHUB_OUTPUT"
177+
INTEGRATION_STAGING_INSTANCE_KEYS: ${{ secrets.INTEGRATION_STAGING_INSTANCE_KEYS }}
178+
run: node scripts/resolve-instance-keys.mjs INTEGRATION_STAGING_INSTANCE_KEYS "$EXPO_INSTANCE_NAME"
206179

207180
- name: Write quickstart .env
208181
working-directory: clerk-expo-quickstart/NativeComponentQuickstart
@@ -241,14 +214,15 @@ jobs:
241214
env:
242215
CLERK_TEST_EMAIL: ${{ steps.user.outputs.email }}
243216
CLERK_TEST_PASSWORD: ${{ steps.user.outputs.password }}
217+
EXCLUDE_TAGS: ${{ inputs.exclude_tags }}
244218
run: |
245219
cd clerk-expo-quickstart/NativeComponentQuickstart
246220
npx expo prebuild --clean
247221
npx expo run:ios --configuration Release --no-bundler
248222
cd ../../integration-mobile
249223
# Maestro doesn't auto-recurse into subdirectories; pass each flow explicitly.
250224
find flows -type f -name "*.yaml" ! -path "*/common/*" -print0 | \
251-
xargs -0 maestro test --exclude-tags "${{ inputs.exclude_tags }},androidOnly"
225+
xargs -0 maestro test --exclude-tags "$EXCLUDE_TAGS,androidOnly"
252226
253227
- name: Upload Maestro artifacts on failure
254228
if: failure()

.github/workflows/release.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,11 @@ jobs:
4646
with:
4747
fetch-depth: 0
4848
show-progress: false
49+
# Use the PAT so pushes from `changesets/action` are authored by
50+
# clerk-cookie. With the default GITHUB_TOKEN, GitHub suppresses
51+
# the resulting `synchronize` events and CI never runs on Release
52+
# PR updates — forcing a manual close/reopen to re-trigger.
53+
token: ${{ secrets.CLERK_COOKIE_PAT }}
4954

5055
- name: Setup
5156
id: config

.typedoc/custom-plugin.mjs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ const FILES_WITHOUT_HEADINGS = [
3636
'payment-element-props.mdx',
3737
'use-organization-creation-defaults-return.mdx',
3838
'use-organization-creation-defaults-params.mdx',
39+
'use-o-auth-consent-params.mdx',
40+
'use-o-auth-consent-return.mdx',
3941
];
4042

4143
/**
@@ -66,6 +68,8 @@ const LINK_REPLACEMENTS = [
6668
['organization-domain-resource', '/docs/reference/types/organization-domain-resource'],
6769
['organization-invitation-resource', '/docs/reference/types/organization-invitation'],
6870
['organization-membership-request-resource', '/docs/reference/types/organization-membership-request'],
71+
['o-auth-consent-info', '/docs/reference/types/oauth-consent-info'],
72+
['o-auth-consent-scope', '/docs/reference/types/oauth-consent-scope'],
6973
['session', '/docs/reference/backend/types/backend-session'],
7074
['session-activity', '/docs/reference/backend/types/backend-session-activity'],
7175
['organization', '/docs/reference/backend/types/backend-organization'],
@@ -76,6 +80,12 @@ const LINK_REPLACEMENTS = [
7680
['email-address', '/docs/reference/backend/types/backend-email-address'],
7781
['enterprise-account', '/docs/reference/backend/types/backend-enterprise-account'],
7882
['enterprise-account-connection', '/docs/reference/backend/types/backend-enterprise-account-connection'],
83+
['enterprise-connection', '/docs/reference/backend/types/backend-enterprise-connection'],
84+
['enterprise-connection-oauth-config', '/docs/reference/backend/types/backend-enterprise-connection-oauth-config'],
85+
[
86+
'enterprise-connection-saml-connection',
87+
'/docs/reference/backend/types/backend-enterprise-connection-saml-connection',
88+
],
7989
['external-account', '/docs/reference/backend/types/backend-external-account'],
8090
['phone-number', '/docs/reference/backend/types/backend-phone-number'],
8191
['saml-account', '/docs/reference/backend/types/backend-saml-account'],
@@ -101,6 +111,7 @@ const LINK_REPLACEMENTS = [
101111
['billing-statement-resource', '/docs/reference/types/billing-statement-resource'],
102112
['billing-subscription-resource', '/docs/reference/types/billing-subscription-resource'],
103113
['clerk-api-response-error', '/docs/reference/types/clerk-api-response-error'],
114+
['clerk-api-error', '/docs/reference/types/clerk-api-error'],
104115
['billing-statement-totals', '/docs/reference/types/billing-statement-totals'],
105116
['billing-payment-resource', '/docs/reference/types/billing-payment-resource'],
106117
['deleted-object-resource', '/docs/reference/types/deleted-object-resource'],
@@ -134,6 +145,10 @@ function getRelativeLinkReplacements() {
134145

135146
function getCatchAllReplacements() {
136147
return [
148+
{
149+
pattern: /(?<![`[\]])\bClerkAPIResponseError\b(?![\]\(])/g,
150+
replace: '[ClerkAPIResponseError](/docs/reference/types/clerk-api-response-error)',
151+
},
137152
{
138153
pattern: /(?<![\[\w`])`Appearance`\\<`Theme`\\>/g,
139154
replace: '[`Appearance<Theme>`](/docs/guides/customizing-clerk/appearance-prop/overview)',

0 commit comments

Comments
 (0)