Skip to content

Commit a5bf096

Browse files
authored
Upgrade react-native-harness to 1.3.0 (#278)
Upgrades harness from 1.2.0 to 1.3.0. Key improvements from harness PRs #129 and #132: - Bridge RPC closes immediately on app disconnect instead of waiting for timeout - New internal RPC transport with heartbeat-based liveness detection - Dead app connections fail fast with `AppBridgeDisconnectedError` instead of ambiguous "device did not respond" after 90s Should reduce the intermittent CI flakiness we've been seeing on legacy iOS.
1 parent 2a2303f commit a5bf096

3 files changed

Lines changed: 96 additions & 96 deletions

File tree

example/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@
3434
"@react-native-community/cli": "19.1.2",
3535
"@react-native-community/cli-platform-android": "19.1.2",
3636
"@react-native-community/cli-platform-ios": "19.1.2",
37-
"@react-native-harness/platform-android": "1.2.0",
38-
"@react-native-harness/platform-apple": "1.2.0",
37+
"@react-native-harness/platform-android": "1.3.0",
38+
"@react-native-harness/platform-apple": "1.3.0",
3939
"@react-native/babel-preset": "0.80.3",
4040
"@react-native/metro-config": "0.80.3",
4141
"@react-native/typescript-config": "0.80.3",
@@ -44,7 +44,7 @@
4444
"babel-plugin-react-compiler": "^1.0.0",
4545
"deep-equal": "^2.2.3",
4646
"react-native-builder-bob": "^0.40.10",
47-
"react-native-harness": "1.2.0"
47+
"react-native-harness": "1.3.0"
4848
},
4949
"engines": {
5050
"node": ">=18"

example/src/tests/TestsPage.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ export default function TestsPage() {
144144
setTestStates((prev) => new Map(prev).set(key, { status: 'running' }));
145145

146146
try {
147-
await test.fn();
147+
await (test.fn as () => void | Promise<void>)();
148148
setTestStates((prev) => new Map(prev).set(key, { status: 'passed' }));
149149
} catch (e) {
150150
const errorMessage = e instanceof Error ? e.message : String(e);

yarn.lock

Lines changed: 92 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -4550,43 +4550,43 @@ __metadata:
45504550
languageName: node
45514551
linkType: hard
45524552

4553-
"@react-native-harness/babel-preset@npm:1.2.0":
4554-
version: 1.2.0
4555-
resolution: "@react-native-harness/babel-preset@npm:1.2.0"
4553+
"@react-native-harness/babel-preset@npm:1.3.0":
4554+
version: 1.3.0
4555+
resolution: "@react-native-harness/babel-preset@npm:1.3.0"
45564556
dependencies:
45574557
"@babel/plugin-transform-class-static-block": ^7.27.1
45584558
babel-plugin-istanbul: ^7.0.1
45594559
peerDependencies:
45604560
"@babel/core": ^7.22.0
45614561
"@babel/plugin-transform-react-jsx": "*"
4562-
checksum: f4b4a680289baa5f2f65261a6e6458b37a82b7d49b75b2d3e5c74f577eb34b474376d560b858fb39d3185342fc5e5f8de457f214d34e6cb1d71b07f33b4405ee
4562+
checksum: 96d39143a3b16d3e63324fb30498f9b4e308e4785b57c957e65a14ef78d11c745430df553429585de3a247a7d44560d42ce470e1a8307b63250c7a16bca8339c
45634563
languageName: node
45644564
linkType: hard
45654565

4566-
"@react-native-harness/bridge@npm:1.2.0":
4567-
version: 1.2.0
4568-
resolution: "@react-native-harness/bridge@npm:1.2.0"
4566+
"@react-native-harness/bridge@npm:1.3.0":
4567+
version: 1.3.0
4568+
resolution: "@react-native-harness/bridge@npm:1.3.0"
45694569
dependencies:
4570-
"@react-native-harness/platforms": 1.2.0
4571-
"@react-native-harness/tools": 1.2.0
4570+
"@react-native-harness/platforms": 1.3.0
4571+
"@react-native-harness/tools": 1.3.0
45724572
birpc: ^2.4.0
45734573
pixelmatch: ^7.1.0
45744574
pngjs: ^7.0.0
45754575
ssim.js: ^3.5.0
45764576
tslib: ^2.3.0
45774577
ws: ^8.18.2
4578-
checksum: 0cdf333e99b4362d48a9fe19675c3282308537814b691297221c8a6d65374a2e2e70567f44219ec9aece554deebb12f803d11c5c9a75ca8d22e94599bdac0ff4
4578+
checksum: 5da8c2912de3d425b3f14109b1be2f6ec04cb223b866504525d11dd6c272fbda1760b82c29b09f7fb7580110653bd74a46b9db5989e5b625fe38f6ba060524d5
45794579
languageName: node
45804580
linkType: hard
45814581

4582-
"@react-native-harness/bundler-metro@npm:1.2.0":
4583-
version: 1.2.0
4584-
resolution: "@react-native-harness/bundler-metro@npm:1.2.0"
4582+
"@react-native-harness/bundler-metro@npm:1.3.0":
4583+
version: 1.3.0
4584+
resolution: "@react-native-harness/bundler-metro@npm:1.3.0"
45854585
dependencies:
4586-
"@react-native-harness/babel-preset": 1.2.0
4587-
"@react-native-harness/config": 1.2.0
4588-
"@react-native-harness/runtime": 1.2.0
4589-
"@react-native-harness/tools": 1.2.0
4586+
"@react-native-harness/babel-preset": 1.3.0
4587+
"@react-native-harness/config": 1.3.0
4588+
"@react-native-harness/runtime": 1.3.0
4589+
"@react-native-harness/tools": 1.3.0
45904590
"@react-native/metro-config": "*"
45914591
connect: ^3.7.0
45924592
nocache: ^4.0.0
@@ -4596,123 +4596,123 @@ __metadata:
45964596
metro-cache: "*"
45974597
metro-config: "*"
45984598
metro-resolver: "*"
4599-
checksum: 12fe18c22e8892885e66d1f17b4fa5ca3059d92ed5c8a1a68971a5b31f5b5a309f0dbbe638b94c48ece870e36fd521bf096eaaeb3dec45d2d68b9f72cd2dcb2e
4599+
checksum: b3ca0b702c2caa0b5b24592defe077f5a2f028cf3c3f65ecf62c684403daf7f84d15e239851e363cc607446c078c9b608f33b505b404d513522da9166df7e9ee
46004600
languageName: node
46014601
linkType: hard
46024602

4603-
"@react-native-harness/cli@npm:1.2.0":
4604-
version: 1.2.0
4605-
resolution: "@react-native-harness/cli@npm:1.2.0"
4603+
"@react-native-harness/cli@npm:1.3.0":
4604+
version: 1.3.0
4605+
resolution: "@react-native-harness/cli@npm:1.3.0"
46064606
dependencies:
4607-
"@react-native-harness/bridge": 1.2.0
4608-
"@react-native-harness/config": 1.2.0
4609-
"@react-native-harness/platforms": 1.2.0
4610-
"@react-native-harness/tools": 1.2.0
4607+
"@react-native-harness/bridge": 1.3.0
4608+
"@react-native-harness/config": 1.3.0
4609+
"@react-native-harness/platforms": 1.3.0
4610+
"@react-native-harness/tools": 1.3.0
46114611
tslib: ^2.3.0
46124612
peerDependencies:
46134613
jest-cli: "*"
4614-
checksum: acc922d7d5afa3031d00dadf75c492e8c4caa0f6073a257067b1d11e916c8e5024ef8cfc12557d9d350abb6eea5df0c72c3a12ae34f3b79ad73fd3de2f02cb10
4614+
checksum: 41a90548da0c59be2ad7272e6d8f2686c43e253aaaf74fdc715a0403c4ec8e34e2ed88caf00336bc7ccfd956aa49a8087002c37d1f082f540044134677d464d9
46154615
languageName: node
46164616
linkType: hard
46174617

4618-
"@react-native-harness/config@npm:1.2.0":
4619-
version: 1.2.0
4620-
resolution: "@react-native-harness/config@npm:1.2.0"
4618+
"@react-native-harness/config@npm:1.3.0":
4619+
version: 1.3.0
4620+
resolution: "@react-native-harness/config@npm:1.3.0"
46214621
dependencies:
4622-
"@react-native-harness/plugins": 1.2.0
4623-
"@react-native-harness/tools": 1.2.0
4622+
"@react-native-harness/plugins": 1.3.0
4623+
"@react-native-harness/tools": 1.3.0
46244624
tslib: ^2.3.0
46254625
zod: ^3.25.67
4626-
checksum: b7e1c69d650577ad9c2052af05aa7e52fe4e7ed49ea47b407e2e049459eb046d59843af8068338abf8e361b1b40930053d741a54a12abdf23de1c7caa3019f97
4626+
checksum: 1f9c7db451fc7d8426af56a9c5cd4cc547890b4cf8c2bd73858324631a6f355254bb0c27c1bc4106f47692f75746ce33914194076dea219e97d492e069bb4bb8
46274627
languageName: node
46284628
linkType: hard
46294629

4630-
"@react-native-harness/jest@npm:1.2.0":
4631-
version: 1.2.0
4632-
resolution: "@react-native-harness/jest@npm:1.2.0"
4630+
"@react-native-harness/jest@npm:1.3.0":
4631+
version: 1.3.0
4632+
resolution: "@react-native-harness/jest@npm:1.3.0"
46334633
dependencies:
46344634
"@jest/test-result": ^30.2.0
4635-
"@react-native-harness/bridge": 1.2.0
4636-
"@react-native-harness/bundler-metro": 1.2.0
4637-
"@react-native-harness/config": 1.2.0
4638-
"@react-native-harness/platforms": 1.2.0
4639-
"@react-native-harness/plugins": 1.2.0
4640-
"@react-native-harness/tools": 1.2.0
4635+
"@react-native-harness/bridge": 1.3.0
4636+
"@react-native-harness/bundler-metro": 1.3.0
4637+
"@react-native-harness/config": 1.3.0
4638+
"@react-native-harness/platforms": 1.3.0
4639+
"@react-native-harness/plugins": 1.3.0
4640+
"@react-native-harness/tools": 1.3.0
46414641
chalk: ^4.1.2
46424642
jest-message-util: ^30.2.0
46434643
jest-util: ^30.2.0
46444644
tslib: ^2.3.0
46454645
yargs: ^17.7.2
4646-
checksum: c4bc649f7d3a9e7d12b4c4a87d9107998eb859190eba0b175b105e5d1e29f66d8271830f0ead8fe0997e961fea9b97a62bda7498483a703b0532c0b500a06d78
4646+
checksum: f8fd90f2784a326cf7b339236883ae55c05c58c2ad85cc1a8ae52b3985e1ab34f1f82114ad57cd605d235c44f7c7077ba940466a47555f8abd2d6cde8904bc9f
46474647
languageName: node
46484648
linkType: hard
46494649

4650-
"@react-native-harness/metro@npm:1.2.0":
4651-
version: 1.2.0
4652-
resolution: "@react-native-harness/metro@npm:1.2.0"
4650+
"@react-native-harness/metro@npm:1.3.0":
4651+
version: 1.3.0
4652+
resolution: "@react-native-harness/metro@npm:1.3.0"
46534653
dependencies:
46544654
tslib: ^2.3.0
46554655
peerDependencies:
46564656
metro: "*"
4657-
checksum: ce0be950ac1793325ecb70cb7f0fe65d0c71b6d5aaedfc3d502df6affb2577397d53cc8a95bbf3df4ef629634f0fb4895a9f7dfc304e2001c0a1ece24952952f
4657+
checksum: f3a92fef8a89ac1cc99465b86da7ab2f581c095b2fc3d9a636558f36815829601415b1cd96f1a533307a556d09fe238a7e54acd7bfeff317b032a5640c242f22
46584658
languageName: node
46594659
linkType: hard
46604660

4661-
"@react-native-harness/platform-android@npm:1.2.0":
4662-
version: 1.2.0
4663-
resolution: "@react-native-harness/platform-android@npm:1.2.0"
4661+
"@react-native-harness/platform-android@npm:1.3.0":
4662+
version: 1.3.0
4663+
resolution: "@react-native-harness/platform-android@npm:1.3.0"
46644664
dependencies:
4665-
"@react-native-harness/config": 1.2.0
4666-
"@react-native-harness/platforms": 1.2.0
4667-
"@react-native-harness/tools": 1.2.0
4665+
"@react-native-harness/config": 1.3.0
4666+
"@react-native-harness/platforms": 1.3.0
4667+
"@react-native-harness/tools": 1.3.0
46684668
tslib: ^2.3.0
46694669
vite: ^7.2.2
46704670
zod: ^3.25.67
4671-
checksum: fb2f4d78e200e4c1540787540e3ba27d5c23d8d2d3c545e4731dc95e85fb65bdc58bd74b1e1417577e592d0de3a11d43efc03003c26313a5d315b79af122f09e
4671+
checksum: 75dd5ebf7a726a612a1c35eba92f702a2d6b65cbf5b4f218f417da946c93e215df9a16b0083ad2515d7bea7b04a82e3b92b4a4b6321b2c94b56c38c08e648305
46724672
languageName: node
46734673
linkType: hard
46744674

4675-
"@react-native-harness/platform-apple@npm:1.2.0":
4676-
version: 1.2.0
4677-
resolution: "@react-native-harness/platform-apple@npm:1.2.0"
4675+
"@react-native-harness/platform-apple@npm:1.3.0":
4676+
version: 1.3.0
4677+
resolution: "@react-native-harness/platform-apple@npm:1.3.0"
46784678
dependencies:
4679-
"@react-native-harness/config": 1.2.0
4680-
"@react-native-harness/platforms": 1.2.0
4681-
"@react-native-harness/tools": 1.2.0
4679+
"@react-native-harness/config": 1.3.0
4680+
"@react-native-harness/platforms": 1.3.0
4681+
"@react-native-harness/tools": 1.3.0
46824682
tslib: ^2.3.0
46834683
yargs: ^17.7.2
46844684
zod: ^3.25.67
4685-
checksum: 4a41a7c6142d3936319e976ceb439ec9f0f39bd5ecb114a22021388de073f9f91d4fdb814fbea04ff43786ee2da5757badec99fbe5307ab2dfc355e474a7133d
4685+
checksum: 09b9530deb657c89786ab9d612ef2218804a6e1ea98d64b3a6d5e670793feb999be0ed7199e4a57459413c631285fb9c9f1596367d3255702409161388a76690
46864686
languageName: node
46874687
linkType: hard
46884688

4689-
"@react-native-harness/platforms@npm:1.2.0":
4690-
version: 1.2.0
4691-
resolution: "@react-native-harness/platforms@npm:1.2.0"
4689+
"@react-native-harness/platforms@npm:1.3.0":
4690+
version: 1.3.0
4691+
resolution: "@react-native-harness/platforms@npm:1.3.0"
46924692
dependencies:
46934693
tslib: ^2.3.0
4694-
checksum: cbd02b3c818a98c717d9dadd239a931ed49dd9114cbe795431592b01b4315d886ec0d3d46902410bdb6de3c8f331177fdcd53c954a2635c1b2717c9380fe3a92
4694+
checksum: 58e469a425d2b58fa9b2c5aeb814b4a8a59ae05f08ebfea00200601f96a6e501db8b77b5f5ce5227eeeaad017aaf9aa335c77714df866813a02d9681c29df823
46954695
languageName: node
46964696
linkType: hard
46974697

4698-
"@react-native-harness/plugins@npm:1.2.0":
4699-
version: 1.2.0
4700-
resolution: "@react-native-harness/plugins@npm:1.2.0"
4698+
"@react-native-harness/plugins@npm:1.3.0":
4699+
version: 1.3.0
4700+
resolution: "@react-native-harness/plugins@npm:1.3.0"
47014701
dependencies:
4702-
"@react-native-harness/bridge": 1.2.0
4703-
"@react-native-harness/platforms": 1.2.0
4704-
"@react-native-harness/tools": 1.2.0
4702+
"@react-native-harness/bridge": 1.3.0
4703+
"@react-native-harness/platforms": 1.3.0
4704+
"@react-native-harness/tools": 1.3.0
47054705
hookable: ^6.1.0
47064706
tslib: ^2.3.0
4707-
checksum: 70bd7a873f8e5a48838a264f8947f02fbddb2f377b7096915238eff10539a753dc3a1a491a2a986ed6f66ec90a939a1b4de8af8d02138cfc602c645add5a8bde
4707+
checksum: 5cdfbe3e6254eea9fcdc77ad238c07f65b5b8ad637732d486a8f82585a7cbbba5ef5333072783560e710ded748a21fdcc25179239524c72e691521298b8f66ce
47084708
languageName: node
47094709
linkType: hard
47104710

4711-
"@react-native-harness/runtime@npm:1.2.0":
4712-
version: 1.2.0
4713-
resolution: "@react-native-harness/runtime@npm:1.2.0"
4711+
"@react-native-harness/runtime@npm:1.3.0":
4712+
version: 1.3.0
4713+
resolution: "@react-native-harness/runtime@npm:1.3.0"
47144714
dependencies:
4715-
"@react-native-harness/bridge": 1.2.0
4715+
"@react-native-harness/bridge": 1.3.0
47164716
"@vitest/expect": 4.0.16
47174717
"@vitest/spy": 4.0.16
47184718
chai: ^6.2.2
@@ -4723,21 +4723,21 @@ __metadata:
47234723
peerDependencies:
47244724
react: "*"
47254725
react-native: "*"
4726-
checksum: d452ce16a7f7df65dd26ae0482c651388ef5c4f7bf8582686214a6763a85e6e5c61698f5761206a5cf99d5974c57c49bf5e32cc9860a26a8dc8ad837641444a2
4726+
checksum: 4e35a461066597b471a9f18250b21d9df3617037b67e632402213ec59ccb0aa7f617bc10aedf0f70b57e1551435dadac3b90f026d366bff4777323e710f7724e
47274727
languageName: node
47284728
linkType: hard
47294729

4730-
"@react-native-harness/tools@npm:1.2.0":
4731-
version: 1.2.0
4732-
resolution: "@react-native-harness/tools@npm:1.2.0"
4730+
"@react-native-harness/tools@npm:1.3.0":
4731+
version: 1.3.0
4732+
resolution: "@react-native-harness/tools@npm:1.3.0"
47334733
dependencies:
47344734
"@clack/prompts": 1.0.0-alpha.9
47354735
nano-spawn: ^1.0.2
47364736
picocolors: ^1.1.1
47374737
tslib: ^2.3.0
47384738
peerDependencies:
47394739
react-native: "*"
4740-
checksum: 2050884fdfbd6430fb62e421843881cc189ede7846c9aa8d3768847ed495f656542bf3dd0ccb54d2d4b3c2dfebef0cc9b6076fb8934f3e1537f70839d28e5fd4
4740+
checksum: 1fdfa442988949d04787270c2f9d65d4cdf6811f5b717cc6ac38d8e64c16c629f1156c71c4996dd77aa8bb02e8b151d373d1f8fd65d3729dbcdb22e057254153
47414741
languageName: node
47424742
linkType: hard
47434743

@@ -17264,20 +17264,20 @@ __metadata:
1726417264
languageName: node
1726517265
linkType: hard
1726617266

17267-
"react-native-harness@npm:1.2.0":
17268-
version: 1.2.0
17269-
resolution: "react-native-harness@npm:1.2.0"
17267+
"react-native-harness@npm:1.3.0":
17268+
version: 1.3.0
17269+
resolution: "react-native-harness@npm:1.3.0"
1727017270
dependencies:
17271-
"@react-native-harness/babel-preset": 1.2.0
17272-
"@react-native-harness/cli": 1.2.0
17273-
"@react-native-harness/jest": 1.2.0
17274-
"@react-native-harness/metro": 1.2.0
17275-
"@react-native-harness/runtime": 1.2.0
17271+
"@react-native-harness/babel-preset": 1.3.0
17272+
"@react-native-harness/cli": 1.3.0
17273+
"@react-native-harness/jest": 1.3.0
17274+
"@react-native-harness/metro": 1.3.0
17275+
"@react-native-harness/runtime": 1.3.0
1727617276
tslib: ^2.3.0
1727717277
bin:
1727817278
harness: bin.js
1727917279
react-native-harness: bin.js
17280-
checksum: 21f27f818cb11f88eaf2ce78da1719292cde18e75da209ce85babd654a0a842f8992b9339308482bd923a1a7e5ec39dccda7dfe8d1258d7a6adb11e3b53714b9
17280+
checksum: de27ab8ecd4049b0c93cd6bdd6d106a4053df5cbf3586ac5533f8077593669c97af6f73aa7de84ac1731ace8a5ae2401c7149499b8326a804b15f49c3172eadb
1728117281
languageName: node
1728217282
linkType: hard
1728317283

@@ -17361,8 +17361,8 @@ __metadata:
1736117361
"@react-native-community/cli": 19.1.2
1736217362
"@react-native-community/cli-platform-android": 19.1.2
1736317363
"@react-native-community/cli-platform-ios": 19.1.2
17364-
"@react-native-harness/platform-android": 1.2.0
17365-
"@react-native-harness/platform-apple": 1.2.0
17364+
"@react-native-harness/platform-android": 1.3.0
17365+
"@react-native-harness/platform-apple": 1.3.0
1736617366
"@react-native-picker/picker": ^2.11.4
1736717367
"@react-native/babel-preset": 0.80.3
1736817368
"@react-native/metro-config": 0.80.3
@@ -17377,7 +17377,7 @@ __metadata:
1737717377
react-native: 0.80.3
1737817378
react-native-builder-bob: ^0.40.10
1737917379
react-native-gesture-handler: 2.29.1
17380-
react-native-harness: 1.2.0
17380+
react-native-harness: 1.3.0
1738117381
react-native-nitro-modules: 0.35.0
1738217382
react-native-reanimated: 4.1.5
1738317383
react-native-safe-area-context: ^5.4.0

0 commit comments

Comments
 (0)