Skip to content

Commit 280ecde

Browse files
authored
Merge branch 'main' into feature/about-screen-feature-flags
2 parents 25ed855 + d76192c commit 280ecde

File tree

620 files changed

+12847
-20317
lines changed

Some content is hidden

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

620 files changed

+12847
-20317
lines changed

.github/workflows/build-rc-auto.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44
# It runs on every commit pushed to a release branch, but only when the release PR
55
# has the 'auto-rc-builds' label.
66
#
7+
# Rolling builds: when a new run starts for the same release branch, any queued or
8+
# in-progress run of this workflow for that branch is cancelled (same behavior as
9+
# Bitrise “Rolling builds” / “Abort running builds” for one branch + one workflow).
10+
#
711
# Builds are triggered via the Runway OTA/build pipeline (runway-ota-build-core.yml):
812
# - iOS runs first and performs the version bump.
913
# - Android runs after, skipping the version bump (already done by iOS).
@@ -16,6 +20,10 @@ on:
1620
branches:
1721
- 'release/*'
1822

23+
concurrency:
24+
group: ${{ github.workflow }}-${{ github.ref }}
25+
cancel-in-progress: true
26+
1927
permissions:
2028
contents: write
2129
pull-requests: write

.github/workflows/build.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,8 @@ jobs:
396396
# Build with retry logic. Timeouts: 55min per attempt, 115min total for step, 120min job
397397
- name: Build ${{ matrix.platform }}
398398
timeout-minutes: 115
399+
env:
400+
GIT_BRANCH: ${{ inputs.source_branch || github.ref_name }}
399401
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 #v3.0.2
400402
with:
401403
timeout_minutes: 55

.github/workflows/slack-rc-notification.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ jobs:
4040
- uses: actions/checkout@v4
4141
with:
4242
ref: ${{ inputs.source_branch }}
43-
fetch-depth: 1
43+
fetch-depth: 0
4444
- uses: actions/setup-node@v4
4545
with:
4646
node-version-file: '.nvmrc'

.yarn/patches/@braze-react-native-sdk-npm-19.1.0-076-reactmoduleinfo.patch

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,27 @@
77
# "None of the following functions can be called with the arguments supplied:
88
# public constructor ReactModuleInfo(...hasConstants...) / (...without...)"
99
# This patch adds the missing `hasConstants = true` argument.
10+
#
11+
# Braze lists Robolectric, JUnit, and androidx.test as debugImplementation. That leaks them
12+
# into every consumer's debug runtime; Robolectric pulls espresso-idling-resource 3.7.x and
13+
# breaks Detox (UiControllerImpl.eventInjector). Braze still compiles src/debug/kotlin into
14+
# the debug variant, so those deps must stay on the compile classpath: use debugCompileOnly
15+
# (compile-only for the library; not published to consumers' runtime classpaths).
16+
diff --git a/android/build.gradle b/android/build.gradle
17+
--- a/android/build.gradle
18+
+++ b/android/build.gradle
19+
@@ -69,8 +69,8 @@ dependencies {
20+
testImplementation "org.mockito:mockito-inline:5.2.0"
21+
testImplementation("org.jetbrains.kotlin:kotlin-reflect")
22+
23+
- debugImplementation 'androidx.test:core-ktx:1.7.0'
24+
- debugImplementation "junit:junit:4.13.2"
25+
- debugImplementation "org.robolectric:robolectric:4.16"
26+
+ debugCompileOnly 'androidx.test:core-ktx:1.7.0'
27+
+ debugCompileOnly "junit:junit:4.13.2"
28+
+ debugCompileOnly "org.robolectric:robolectric:4.16"
29+
30+
def wrapper_braze_sdk_version = "41.1.1"
1031
diff --git a/android/src/main/java/com/braze/reactbridge/BrazeReactBridgePackage.kt b/android/src/main/java/com/braze/reactbridge/BrazeReactBridgePackage.kt
1132
--- a/android/src/main/java/com/braze/reactbridge/BrazeReactBridgePackage.kt
1233
+++ b/android/src/main/java/com/braze/reactbridge/BrazeReactBridgePackage.kt

android/app/build.gradle

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -418,11 +418,17 @@ dependencies {
418418
} else {
419419
implementation jscFlavor
420420
}
421+
// Detox's AAR still reflects Espresso UiControllerImpl.eventInjector, but its POM pulls
422+
// espresso-* 3.6.x where that field was removed. Exclude Espresso from Detox and pin 3.5.1.
421423
androidTestImplementation('com.wix:detox:+') {
422-
exclude module: "protobuf-lite"
423-
}
424-
androidTestImplementation ('androidx.test.espresso:espresso-contrib:3.4.0')
425-
424+
exclude module: 'protobuf-lite'
425+
exclude group: 'androidx.test.espresso', module: 'espresso-core'
426+
exclude group: 'androidx.test.espresso', module: 'espresso-web'
427+
exclude group: 'androidx.test.espresso', module: 'espresso-contrib'
428+
}
429+
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
430+
androidTestImplementation 'androidx.test.espresso:espresso-web:3.5.1'
431+
androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.5.1'
426432
// Add these dependencies for androidTest
427433
androidTestImplementation "com.google.guava:guava:31.1-android"
428434
androidTestImplementation "org.ow2.asm:asm:9.4"

app/component-library/components-temp/HeaderRoot/HeaderRoot.test.tsx

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,6 @@ import { IconName } from '@metamask/design-system-react-native';
99
// Internal dependencies.
1010
import HeaderRoot from './HeaderRoot';
1111

12-
jest.mock('react-native-safe-area-context', () => ({
13-
useSafeAreaInsets: () => ({ top: 44, bottom: 34, left: 0, right: 0 }),
14-
}));
15-
1612
const CONTAINER_TEST_ID = 'header-root-container';
1713
const LEFT_CHILDREN_TEST_ID = 'header-root-left-children';
1814
const END_ACCESSORY_TEST_ID = 'header-root-end-accessory';
@@ -250,7 +246,7 @@ describe('HeaderRoot', () => {
250246
expect(container.props.style).toEqual(
251247
expect.arrayContaining([
252248
expect.anything(),
253-
expect.objectContaining({ marginTop: 44 }),
249+
expect.objectContaining({ marginTop: expect.any(Number) }),
254250
]),
255251
);
256252
});

app/component-library/components-temp/HeaderStandardAnimated/HeaderStandardAnimated.test.tsx

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,6 @@ jest.mock('react-native-reanimated', () => {
1818
return Reanimated;
1919
});
2020

21-
jest.mock('react-native-safe-area-context', () => ({
22-
useSafeAreaInsets: () => ({ top: 44, bottom: 34, left: 0, right: 0 }),
23-
}));
24-
2521
const CONTAINER_TEST_ID = 'header-standard-animated-container';
2622
const TITLE_TEST_ID = 'header-standard-animated-title';
2723
const SUBTITLE_TEST_ID = 'header-standard-animated-subtitle';

app/component-library/components-temp/MultichainAccounts/MultichainAddWalletActions/MultichainAddWalletActions.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Third party dependencies.
22
import React, { Fragment, useCallback, useMemo } from 'react';
3-
import { SafeAreaView } from 'react-native';
3+
import { SafeAreaView } from 'react-native-safe-area-context';
44
import { useNavigation } from '@react-navigation/native';
55

66
// External dependencies.
@@ -85,7 +85,7 @@ const MultichainAddWalletActions = ({
8585
);
8686

8787
return (
88-
<SafeAreaView>
88+
<SafeAreaView edges={['bottom']}>
8989
<Fragment>
9090
{actionConfigs.map(
9191
(config) =>

app/component-library/components/BottomSheets/BottomSheet/foundation/BottomSheetDialog/BottomSheetDialog.test.tsx

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,6 @@ jest.mock('react-native', () => {
2121
};
2222
});
2323

24-
jest.mock('react-native-safe-area-context', () => {
25-
// using disting digits for mock rects to make sure they are not mixed up
26-
const inset = { top: 1, right: 2, bottom: 3, left: 4 };
27-
const frame = { width: 5, height: 6, x: 7, y: 8 };
28-
return {
29-
SafeAreaProvider: jest.fn().mockImplementation(({ children }) => children),
30-
SafeAreaConsumer: jest
31-
.fn()
32-
.mockImplementation(({ children }) => children(inset)),
33-
useSafeAreaInsets: jest.fn().mockImplementation(() => inset),
34-
useSafeAreaFrame: jest.fn().mockImplementation(() => frame),
35-
};
36-
});
37-
3824
jest.mock('@react-navigation/native', () => {
3925
const actualNav = jest.requireActual('@react-navigation/native');
4026
return {

app/component-library/components/Toast/Toast.test.tsx

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,6 @@ jest.mock('react-native-reanimated', () => ({
2525
}));
2626

2727
// Mock safe area context
28-
jest.mock('react-native-safe-area-context', () => ({
29-
useSafeAreaInsets: () => ({ bottom: 0, top: 0, left: 0, right: 0 }),
30-
}));
31-
3228
describe('Toast', () => {
3329
let toastRef: React.RefObject<ToastRef>;
3430

0 commit comments

Comments
 (0)