Skip to content

Commit ba4fa49

Browse files
committed
chore: add Animated tests
1 parent 0305877 commit ba4fa49

File tree

4 files changed

+136
-68
lines changed

4 files changed

+136
-68
lines changed

jest.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
module.exports = {
22
preset: './jest-preset',
33
setupFilesAfterEnv: ['./jest-setup.ts'],
4-
testPathIgnorePatterns: ['timer-utils', 'examples/', 'experiments-app/', 'experiments-rtl/'],
4+
testPathIgnorePatterns: ['build/', 'examples/', 'experiments-app/', 'timer-utils'],
55
testTimeout: 60000,
66
transformIgnorePatterns: ['/node_modules/(?!(@react-native|react-native)/).*/'],
77
snapshotSerializers: ['@relmify/jest-serializer-strip-ansi/always'],

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@
8484
"jest": "^29.7.0",
8585
"prettier": "^2.8.8",
8686
"react": "18.3.1",
87-
"react-native": "0.76.0-rc.6",
87+
"react-native": "0.76.0",
8888
"react-test-renderer": "18.3.1",
8989
"release-it": "^17.6.0",
9090
"strip-ansi": "^6.0.1",
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
import * as React from 'react';
2+
import { Animated, ViewStyle } from 'react-native';
3+
import { act, render, screen } from '..';
4+
import '../matchers/extend-expect';
5+
6+
type AnimatedViewProps = {
7+
fadeInDuration?: number;
8+
style?: ViewStyle;
9+
children: React.ReactNode;
10+
useNativeDriver?: boolean;
11+
};
12+
13+
function AnimatedView(props: AnimatedViewProps) {
14+
const fadeAnim = React.useRef(new Animated.Value(0)).current; // Initial value for opacity: 0
15+
16+
React.useEffect(() => {
17+
Animated.timing(fadeAnim, {
18+
toValue: 1,
19+
duration: props.fadeInDuration ?? 250,
20+
useNativeDriver: props.useNativeDriver ?? true,
21+
}).start();
22+
}, [fadeAnim, props.fadeInDuration, props.useNativeDriver]);
23+
24+
return (
25+
<Animated.View
26+
style={{
27+
...props.style,
28+
opacity: fadeAnim,
29+
}}
30+
>
31+
{props.children}
32+
</Animated.View>
33+
);
34+
}
35+
36+
describe('AnimatedView', () => {
37+
beforeEach(() => {
38+
jest.useFakeTimers();
39+
});
40+
41+
afterEach(() => {
42+
jest.useRealTimers();
43+
});
44+
45+
it('should use native driver when useNativeDriver is true', async () => {
46+
render(
47+
<AnimatedView fadeInDuration={250} useNativeDriver={true}>
48+
Test
49+
</AnimatedView>,
50+
);
51+
expect(screen.root).toHaveStyle({ opacity: 0 });
52+
53+
await act(() => jest.advanceTimersByTime(250));
54+
expect(screen.root).toHaveStyle({ opacity: 1 });
55+
});
56+
57+
it('should not use native driver when useNativeDriver is false', async () => {
58+
render(
59+
<AnimatedView fadeInDuration={250} useNativeDriver={false}>
60+
Test
61+
</AnimatedView>,
62+
);
63+
expect(screen.root).toHaveStyle({ opacity: 0 });
64+
65+
await act(() => jest.advanceTimersByTime(250));
66+
expect(screen.root).toHaveStyle({ opacity: 1 });
67+
});
68+
});

yarn.lock

Lines changed: 66 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -2311,25 +2311,25 @@ __metadata:
23112311
languageName: node
23122312
linkType: hard
23132313

2314-
"@react-native/assets-registry@npm:0.76.0-rc.6":
2315-
version: 0.76.0-rc.6
2316-
resolution: "@react-native/assets-registry@npm:0.76.0-rc.6"
2317-
checksum: 10c0/1b56e945d826c30caa9392cf111086ffc88cd9dfe28058d1f85f570f5d8684336633170ad1b9181949c13c7e1b7c3bf8cb1b382219a5426d9988850a2740c709
2314+
"@react-native/assets-registry@npm:0.76.0":
2315+
version: 0.76.0
2316+
resolution: "@react-native/assets-registry@npm:0.76.0"
2317+
checksum: 10c0/a8543167afbd2a2d63ec8518f41efddbb3de39ad5905cb98002fdfad7441ade6ae05d86321aea43e366fa9b2336a9bca67d14c89f064e5c7064cd98334ba82c0
23182318
languageName: node
23192319
linkType: hard
23202320

2321-
"@react-native/babel-plugin-codegen@npm:0.76.0-rc.6":
2322-
version: 0.76.0-rc.6
2323-
resolution: "@react-native/babel-plugin-codegen@npm:0.76.0-rc.6"
2321+
"@react-native/babel-plugin-codegen@npm:0.76.0":
2322+
version: 0.76.0
2323+
resolution: "@react-native/babel-plugin-codegen@npm:0.76.0"
23242324
dependencies:
2325-
"@react-native/codegen": "npm:0.76.0-rc.6"
2326-
checksum: 10c0/78a3b9d17a3dfb7aace63a30e2fc7970f93f8439ebf4a97ee66058c54d336ace0a723b16edd8666c2f6bf88225b7c449c11934f9731f40b19ebb4657bcaf28ad
2325+
"@react-native/codegen": "npm:0.76.0"
2326+
checksum: 10c0/c1816b80c0cde1f48f91584f873ad5740669c6324c533239ccc7131fbbbc6b810ca2a0d7e8da21783e004a7dc2660b2501a868b4375ba835679eb05d1c239044
23272327
languageName: node
23282328
linkType: hard
23292329

2330-
"@react-native/babel-preset@npm:0.76.0-rc.6":
2331-
version: 0.76.0-rc.6
2332-
resolution: "@react-native/babel-preset@npm:0.76.0-rc.6"
2330+
"@react-native/babel-preset@npm:0.76.0":
2331+
version: 0.76.0
2332+
resolution: "@react-native/babel-preset@npm:0.76.0"
23332333
dependencies:
23342334
"@babel/core": "npm:^7.25.2"
23352335
"@babel/plugin-proposal-export-default-from": "npm:^7.24.7"
@@ -2372,19 +2372,19 @@ __metadata:
23722372
"@babel/plugin-transform-typescript": "npm:^7.25.2"
23732373
"@babel/plugin-transform-unicode-regex": "npm:^7.24.7"
23742374
"@babel/template": "npm:^7.25.0"
2375-
"@react-native/babel-plugin-codegen": "npm:0.76.0-rc.6"
2375+
"@react-native/babel-plugin-codegen": "npm:0.76.0"
23762376
babel-plugin-syntax-hermes-parser: "npm:^0.23.1"
23772377
babel-plugin-transform-flow-enums: "npm:^0.0.2"
23782378
react-refresh: "npm:^0.14.0"
23792379
peerDependencies:
23802380
"@babel/core": "*"
2381-
checksum: 10c0/8d7d0eaf9d44c7b797306f040200644e2bcb324b0256e07a859143b14398a3be8b75c79871def21e57d4628268d4adaec11a12cd5d37090f2ebe2897341232c8
2381+
checksum: 10c0/43074771fe1c74379d3fdefa54b15e60c08b7cbc4649e1c0ab53d3d86e3776ad4ca5627985b6e98bab9c5927cf1fcf820a66fb5397d5ffb4174de33ed8b8877b
23822382
languageName: node
23832383
linkType: hard
23842384

2385-
"@react-native/codegen@npm:0.76.0-rc.6":
2386-
version: 0.76.0-rc.6
2387-
resolution: "@react-native/codegen@npm:0.76.0-rc.6"
2385+
"@react-native/codegen@npm:0.76.0":
2386+
version: 0.76.0
2387+
resolution: "@react-native/codegen@npm:0.76.0"
23882388
dependencies:
23892389
"@babel/parser": "npm:^7.25.3"
23902390
glob: "npm:^7.1.1"
@@ -2396,16 +2396,16 @@ __metadata:
23962396
yargs: "npm:^17.6.2"
23972397
peerDependencies:
23982398
"@babel/preset-env": ^7.1.6
2399-
checksum: 10c0/4f806b77037758040894f88b4db78c6c1600e9e5cbfa7e87a5e369a9b33f10594840d800486ec23e4f93ff0a6ef168d391c85f7ed7e6fab8f6bccb65e1a636d3
2399+
checksum: 10c0/0cdad654b4f4b86ad526188f5adda59dd9f1b38057749580c72e21e58b1183d8e7593fc7b8614dd1330b101fd4418d2f96d4c0e5af70ad2f2fc1639b1832d76f
24002400
languageName: node
24012401
linkType: hard
24022402

2403-
"@react-native/community-cli-plugin@npm:0.76.0-rc.6":
2404-
version: 0.76.0-rc.6
2405-
resolution: "@react-native/community-cli-plugin@npm:0.76.0-rc.6"
2403+
"@react-native/community-cli-plugin@npm:0.76.0":
2404+
version: 0.76.0
2405+
resolution: "@react-native/community-cli-plugin@npm:0.76.0"
24062406
dependencies:
2407-
"@react-native/dev-middleware": "npm:0.76.0-rc.6"
2408-
"@react-native/metro-babel-transformer": "npm:0.76.0-rc.6"
2407+
"@react-native/dev-middleware": "npm:0.76.0"
2408+
"@react-native/metro-babel-transformer": "npm:0.76.0"
24092409
chalk: "npm:^4.0.0"
24102410
execa: "npm:^5.1.1"
24112411
invariant: "npm:^2.2.4"
@@ -2419,23 +2419,23 @@ __metadata:
24192419
peerDependenciesMeta:
24202420
"@react-native-community/cli-server-api":
24212421
optional: true
2422-
checksum: 10c0/f9282893c10a95ff770a57568d5ef56af8993ef93d1f1008423616f76f0ec486f784779db185619107883eb3d985085f22006478dd35704f097ea52c399288d9
2422+
checksum: 10c0/b7bf144542264e52bdc49e124a6613debc9c590283999e3e6ef420b36cbb77578f99f05a9ca57dd802e042108a6b5a46428014f9d1f6fe48c18a8b52f9697801
24232423
languageName: node
24242424
linkType: hard
24252425

2426-
"@react-native/debugger-frontend@npm:0.76.0-rc.6":
2427-
version: 0.76.0-rc.6
2428-
resolution: "@react-native/debugger-frontend@npm:0.76.0-rc.6"
2429-
checksum: 10c0/f7165edf061faa9cc4f70b5b537f84489f6cecfe6e11995a32fac1e699db0eaef9c6a8756596a2e0ee2d07269b3d5eaadc1e680b2d61a60162b2663e30c0cba6
2426+
"@react-native/debugger-frontend@npm:0.76.0":
2427+
version: 0.76.0
2428+
resolution: "@react-native/debugger-frontend@npm:0.76.0"
2429+
checksum: 10c0/115db2f3fab68791606bea674718fb96ed684754f346a4d3e12f44f2486cb0bb0935c6c7bce318bcf5be8010eca4e111e0ae74a591c8f845d0e106a5ecac2dbf
24302430
languageName: node
24312431
linkType: hard
24322432

2433-
"@react-native/dev-middleware@npm:0.76.0-rc.6":
2434-
version: 0.76.0-rc.6
2435-
resolution: "@react-native/dev-middleware@npm:0.76.0-rc.6"
2433+
"@react-native/dev-middleware@npm:0.76.0":
2434+
version: 0.76.0
2435+
resolution: "@react-native/dev-middleware@npm:0.76.0"
24362436
dependencies:
24372437
"@isaacs/ttlcache": "npm:^1.4.1"
2438-
"@react-native/debugger-frontend": "npm:0.76.0-rc.6"
2438+
"@react-native/debugger-frontend": "npm:0.76.0"
24392439
chrome-launcher: "npm:^0.15.2"
24402440
chromium-edge-launcher: "npm:^0.2.0"
24412441
connect: "npm:^3.6.5"
@@ -2445,7 +2445,7 @@ __metadata:
24452445
selfsigned: "npm:^2.4.1"
24462446
serve-static: "npm:^1.13.1"
24472447
ws: "npm:^6.2.3"
2448-
checksum: 10c0/e2e61b8bbfef3dd4e1d7e18019884c63e5880f208b43b365a17a8acd0e4787fb0cae47a925de41ff2f7d48fd577d44ec00f6262f854e67c769a8e55382a11db9
2448+
checksum: 10c0/b39deb0db79a2e8cc7b72417fdbbb3907dc7c178a8974cce928e7acf061e961793c9fa3ce2f1dfda53a6fcc5e5bcdf00bd37b291e0b0d860e6d6970159115362
24492449
languageName: node
24502450
linkType: hard
24512451

@@ -2456,44 +2456,44 @@ __metadata:
24562456
languageName: node
24572457
linkType: hard
24582458

2459-
"@react-native/gradle-plugin@npm:0.76.0-rc.6":
2460-
version: 0.76.0-rc.6
2461-
resolution: "@react-native/gradle-plugin@npm:0.76.0-rc.6"
2462-
checksum: 10c0/709fca442b5f361f17f4e11b6933d6ff3f2218068fd362f4dd869a6561b18a42d2fdc6697c5bdebd78481a03a5859b394f47256f89ffbc0ae3194fcc33b7f5c3
2459+
"@react-native/gradle-plugin@npm:0.76.0":
2460+
version: 0.76.0
2461+
resolution: "@react-native/gradle-plugin@npm:0.76.0"
2462+
checksum: 10c0/4d88a2df24356a4c9ea9438bb2ff623377d69276802e7a3dfa6e441cbc79a42f0ca216abec8a55d104e4146c72f8e4404c06cd7a4071bc91af9a733966689637
24632463
languageName: node
24642464
linkType: hard
24652465

2466-
"@react-native/js-polyfills@npm:0.76.0-rc.6":
2467-
version: 0.76.0-rc.6
2468-
resolution: "@react-native/js-polyfills@npm:0.76.0-rc.6"
2469-
checksum: 10c0/1f52ea386de0ee00bad058dd3036a7f7470518720bbc2d1d0041ecf48ace7b2906bd7611c448c433592866a3373b84a65f40457506c54d40a73a1e9e947c04da
2466+
"@react-native/js-polyfills@npm:0.76.0":
2467+
version: 0.76.0
2468+
resolution: "@react-native/js-polyfills@npm:0.76.0"
2469+
checksum: 10c0/ca9ed75a1920ae84ca393d22681fa7d99482ee627e6f6e30c83eb513554a905029d40ffb019c63b57b8548d8ffd3e1160c86f667b91c6ec21dd1d22aefad7215
24702470
languageName: node
24712471
linkType: hard
24722472

2473-
"@react-native/metro-babel-transformer@npm:0.76.0-rc.6":
2474-
version: 0.76.0-rc.6
2475-
resolution: "@react-native/metro-babel-transformer@npm:0.76.0-rc.6"
2473+
"@react-native/metro-babel-transformer@npm:0.76.0":
2474+
version: 0.76.0
2475+
resolution: "@react-native/metro-babel-transformer@npm:0.76.0"
24762476
dependencies:
24772477
"@babel/core": "npm:^7.25.2"
2478-
"@react-native/babel-preset": "npm:0.76.0-rc.6"
2478+
"@react-native/babel-preset": "npm:0.76.0"
24792479
hermes-parser: "npm:0.23.1"
24802480
nullthrows: "npm:^1.1.1"
24812481
peerDependencies:
24822482
"@babel/core": "*"
2483-
checksum: 10c0/1b3d927f5abc930851f11811a3204c450918cd7ae64b560c35c6015333e8b5b9d2f611d5deb1897c9c1b006103d9032bf13872b7885dd64786a6dd9419868e0a
2483+
checksum: 10c0/1d425615136e2f951dd153f8fd7d41e7fbf41fbbc6d205335d3863a67c0ab51f0e9e7804e506012bbd52dcb229bfeee6d6d6264eac3a9499439e7db823b4d708
24842484
languageName: node
24852485
linkType: hard
24862486

2487-
"@react-native/normalize-colors@npm:0.76.0-rc.6":
2488-
version: 0.76.0-rc.6
2489-
resolution: "@react-native/normalize-colors@npm:0.76.0-rc.6"
2490-
checksum: 10c0/648f1aef7ed9b3036f05664948bf0fc95aba11ba8412a188891427cc45a0198d523f1bdecbb41e195a1f2806d86eed62e3bd29a2aec288d94513c5e390d07e12
2487+
"@react-native/normalize-colors@npm:0.76.0":
2488+
version: 0.76.0
2489+
resolution: "@react-native/normalize-colors@npm:0.76.0"
2490+
checksum: 10c0/4218ef1f785ab5f4d9fe29a314abdce9e1ba5a193cb8b0f2c8fa821bb72c33c54548bda2128c6de488f055898e407e8553db1adecd6cbe34503f2b55e9e35c0f
24912491
languageName: node
24922492
linkType: hard
24932493

2494-
"@react-native/virtualized-lists@npm:0.76.0-rc.6":
2495-
version: 0.76.0-rc.6
2496-
resolution: "@react-native/virtualized-lists@npm:0.76.0-rc.6"
2494+
"@react-native/virtualized-lists@npm:0.76.0":
2495+
version: 0.76.0
2496+
resolution: "@react-native/virtualized-lists@npm:0.76.0"
24972497
dependencies:
24982498
invariant: "npm:^2.2.4"
24992499
nullthrows: "npm:^1.1.1"
@@ -2504,7 +2504,7 @@ __metadata:
25042504
peerDependenciesMeta:
25052505
"@types/react":
25062506
optional: true
2507-
checksum: 10c0/1e87281b87105d6d8198644dc7b0eefe9996dc9c29f4ae585e87a2e66344f3874115dd7ab1fe2625643529ecb43b4b1e8b0af5bcb69b878c227273147863e07c
2507+
checksum: 10c0/37979b170b9ac4768efb4306c05424613f7f7339b3496fd7eeac074b1439a3b16323d5cd91a94d81ee314c5841e238c49a25401a4e6cfbd06d9c87424796c79f
25082508
languageName: node
25092509
linkType: hard
25102510

@@ -2597,7 +2597,7 @@ __metadata:
25972597
prettier: "npm:^2.8.8"
25982598
pretty-format: "npm:^29.7.0"
25992599
react: "npm:18.3.1"
2600-
react-native: "npm:0.76.0-rc.6"
2600+
react-native: "npm:0.76.0"
26012601
react-test-renderer: "npm:18.3.1"
26022602
redent: "npm:^3.0.0"
26032603
release-it: "npm:^17.6.0"
@@ -8992,18 +8992,18 @@ __metadata:
89928992
languageName: node
89938993
linkType: hard
89948994

8995-
"react-native@npm:0.76.0-rc.6":
8996-
version: 0.76.0-rc.6
8997-
resolution: "react-native@npm:0.76.0-rc.6"
8995+
"react-native@npm:0.76.0":
8996+
version: 0.76.0
8997+
resolution: "react-native@npm:0.76.0"
89988998
dependencies:
89998999
"@jest/create-cache-key-function": "npm:^29.6.3"
9000-
"@react-native/assets-registry": "npm:0.76.0-rc.6"
9001-
"@react-native/codegen": "npm:0.76.0-rc.6"
9002-
"@react-native/community-cli-plugin": "npm:0.76.0-rc.6"
9003-
"@react-native/gradle-plugin": "npm:0.76.0-rc.6"
9004-
"@react-native/js-polyfills": "npm:0.76.0-rc.6"
9005-
"@react-native/normalize-colors": "npm:0.76.0-rc.6"
9006-
"@react-native/virtualized-lists": "npm:0.76.0-rc.6"
9000+
"@react-native/assets-registry": "npm:0.76.0"
9001+
"@react-native/codegen": "npm:0.76.0"
9002+
"@react-native/community-cli-plugin": "npm:0.76.0"
9003+
"@react-native/gradle-plugin": "npm:0.76.0"
9004+
"@react-native/js-polyfills": "npm:0.76.0"
9005+
"@react-native/normalize-colors": "npm:0.76.0"
9006+
"@react-native/virtualized-lists": "npm:0.76.0"
90079007
abort-controller: "npm:^3.0.0"
90089008
anser: "npm:^1.4.9"
90099009
ansi-regex: "npm:^5.0.0"
@@ -9042,7 +9042,7 @@ __metadata:
90429042
optional: true
90439043
bin:
90449044
react-native: cli.js
9045-
checksum: 10c0/98d260a1de63fc26c131571475e775608b1838a0ca2c637d6308b04595636fd31054392e8a6e822946a8e2e337e3b71c8c0802d9ac358828419f5dbd446303d5
9045+
checksum: 10c0/a24304cc08e3409a820704c4f45f47b994d72906835abb32e8b5289de2bcb6e1f029cba0238163fce88fb7dde6c1b8624934ec4ad937902dc08ee15e7db43503
90469046
languageName: node
90479047
linkType: hard
90489048

0 commit comments

Comments
 (0)