Skip to content

Commit fb28908

Browse files
illuminati1911jokerttu
authored andcommitted
test: detox base config
1 parent 9d63424 commit fb28908

File tree

6 files changed

+177
-26
lines changed

6 files changed

+177
-26
lines changed

example/e2e/jest.config.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,9 @@ module.exports = {
2525
reporters: ['detox/runners/jest/reporter'],
2626
testEnvironment: 'detox/runners/jest/testEnvironment',
2727
verbose: true,
28+
globals: {
29+
detox: {
30+
configuration: process.env.DETOX_CONFIGURATION || 'ios.sim.debug',
31+
},
32+
},
2833
};
Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -14,29 +14,15 @@
1414
* limitations under the License.
1515
*/
1616

17-
describe('Example', () => {
18-
/*
19-
beforeAll(async () => {
20-
await device.launchApp();
21-
});
17+
import { initializeNavigationPage } from './shared.js';
18+
import { element, by } from 'detox';
2219

20+
describe('Initialization tests', () => {
2321
beforeEach(async () => {
24-
await device.reloadReactNative();
25-
});
26-
27-
it('should have welcome screen', async () => {
28-
await expect(element(by.id('welcome'))).toBeVisible();
29-
});
30-
31-
it('should show hello screen after tap', async () => {
32-
await element(by.id('hello_button')).tap();
33-
await expect(element(by.text('Hello!!!'))).toBeVisible();
22+
await initializeNavigationPage();
3423
});
3524

36-
it('should show world screen after tap', async () => {
37-
await element(by.id('world_button')).tap();
38-
await expect(element(by.text('World!!!'))).toBeVisible();
25+
it('should open a navigation page', async () => {
26+
await expect(element(by.text('Margin'))).toBeVisible();
3927
});
40-
*/
41-
it('placeholder test', async () => {});
4228
});

example/e2e/shared.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/**
2+
* Copyright 2024 Google LLC
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
import { device, element, system, waitFor, by } from 'detox';
18+
19+
export const initializeNavigationPage = async () => {
20+
await device.launchApp({ newInstance: true });
21+
await element(by.text('Navigation')).tap();
22+
if (device.getPlatform() === 'ios') {
23+
await system.element(by.system.label('Allow While Using App')).tap();
24+
await waitFor(element(by.text("YES, I'M IN")))
25+
.toBeVisible()
26+
.withTimeout(10000);
27+
await element(by.text("YES, I'M IN")).tap();
28+
} else if (device.getPlatform() === 'android') {
29+
await waitFor(element(by.text('GOT IT')))
30+
.toBeVisible()
31+
.withTimeout(10000);
32+
await element(by.text('GOT IT')).tap();
33+
}
34+
};

example/package.json

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99
"lint": "eslint .",
1010
"test": "jest",
1111
"build:android": "cd android && ./gradlew assembleDebug --no-daemon --console=plain -PreactNativeArchitectures=arm64-v8a",
12-
"build:ios": "cd ios && xcodebuild -workspace SampleApp.xcworkspace -scheme SampleApp -configuration Debug -sdk iphonesimulator CC=clang CPLUSPLUS=clang++ LD=clang LDPLUSPLUS=clang++ GCC_OPTIMIZATION_LEVEL=0 GCC_PRECOMPILE_PREFIX_HEADER=YES ASSETCATALOG_COMPILER_OPTIMIZATION=time DEBUG_INFORMATION_FORMAT=dwarf COMPILER_INDEX_STORE_ENABLE=NO"
12+
"build:ios": "cd ios && xcodebuild -workspace SampleApp.xcworkspace -scheme SampleApp -configuration Debug -sdk iphonesimulator CC=clang CPLUSPLUS=clang++ LD=clang LDPLUSPLUS=clang++ GCC_OPTIMIZATION_LEVEL=0 GCC_PRECOMPILE_PREFIX_HEADER=YES ASSETCATALOG_COMPILER_OPTIMIZATION=time DEBUG_INFORMATION_FORMAT=dwarf COMPILER_INDEX_STORE_ENABLE=NO",
13+
"test:android": "DETOX_CONFIGURATION=android.emu.debug npx jest --config e2e/jest.config.js",
14+
"test:ios": "DETOX_CONFIGURATION=ios.sim.debug npx jest --config e2e/jest.config.js"
1315
},
1416
"dependencies": {
1517
"@react-navigation/native": "^6.1.18",
@@ -33,8 +35,11 @@
3335
"@react-native/babel-preset": "0.76.2",
3436
"@react-native/metro-config": "0.76.2",
3537
"@react-native/typescript-config": "0.76.2",
38+
"@types/jest": "^29.5.14",
39+
"@types/node": "^22.9.0",
3640
"babel-plugin-module-resolver": "^5.0.0",
37-
"detox": "^20.27.6"
41+
"detox": "^20.27.6",
42+
"ts-jest": "^29.2.5"
3843
},
3944
"engines": {
4045
"node": ">=18"

lefthook.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ pre-commit:
3131
glob: '*.{js,ts, jsx, tsx}'
3232
run: npx tsc --noEmit
3333
test:
34-
run: npx jest --passWithNoTests
34+
run: yarn run example test:ios
3535
commit-msg:
3636
parallel: true
3737
commands:

yarn.lock

Lines changed: 124 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4655,6 +4655,16 @@ __metadata:
46554655
languageName: node
46564656
linkType: hard
46574657

4658+
"@types/jest@npm:^29.5.14":
4659+
version: 29.5.14
4660+
resolution: "@types/jest@npm:29.5.14"
4661+
dependencies:
4662+
expect: ^29.0.0
4663+
pretty-format: ^29.0.0
4664+
checksum: 18dba4623f26661641d757c63da2db45e9524c9be96a29ef713c703a9a53792df9ecee9f7365a0858ddbd6440d98fe6b65ca67895ca5884b73cbc7ffc11f3838
4665+
languageName: node
4666+
linkType: hard
4667+
46584668
"@types/jest@npm:^29.5.5":
46594669
version: 29.5.14
46604670
resolution: "@types/jest@npm:29.5.14"
@@ -4706,6 +4716,15 @@ __metadata:
47064716
languageName: node
47074717
linkType: hard
47084718

4719+
"@types/node@npm:^22.9.0":
4720+
version: 22.9.0
4721+
resolution: "@types/node@npm:22.9.0"
4722+
dependencies:
4723+
undici-types: ~6.19.8
4724+
checksum: c014eb3b8a110f1b87b614a40ef288d13e6b08ae9d5dafbd38951a2eebc24d352dc55330ed9d00c97ee9e64483c3cc14c4aa914c5df7ca7b9eaa1a30b2340dbd
4725+
languageName: node
4726+
linkType: hard
4727+
47094728
"@types/normalize-package-data@npm:^2.4.0":
47104729
version: 2.4.4
47114730
resolution: "@types/normalize-package-data@npm:2.4.4"
@@ -5334,6 +5353,13 @@ __metadata:
53345353
languageName: node
53355354
linkType: hard
53365355

5356+
"async@npm:^3.2.3":
5357+
version: 3.2.6
5358+
resolution: "async@npm:3.2.6"
5359+
checksum: ee6eb8cd8a0ab1b58bd2a3ed6c415e93e773573a91d31df9d5ef559baafa9dab37d3b096fa7993e84585cac3697b2af6ddb9086f45d3ac8cae821bb2aab65682
5360+
languageName: node
5361+
linkType: hard
5362+
53375363
"available-typed-arrays@npm:^1.0.7":
53385364
version: 1.0.7
53395365
resolution: "available-typed-arrays@npm:1.0.7"
@@ -5836,7 +5862,7 @@ __metadata:
58365862
languageName: node
58375863
linkType: hard
58385864

5839-
"chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.2":
5865+
"chalk@npm:^4.0.0, chalk@npm:^4.0.2, chalk@npm:^4.1.0, chalk@npm:^4.1.2":
58405866
version: 4.1.2
58415867
resolution: "chalk@npm:4.1.2"
58425868
dependencies:
@@ -6707,6 +6733,17 @@ __metadata:
67076733
languageName: node
67086734
linkType: hard
67096735

6736+
"ejs@npm:^3.1.10":
6737+
version: 3.1.10
6738+
resolution: "ejs@npm:3.1.10"
6739+
dependencies:
6740+
jake: ^10.8.5
6741+
bin:
6742+
ejs: bin/cli.js
6743+
checksum: ce90637e9c7538663ae023b8a7a380b2ef7cc4096de70be85abf5a3b9641912dde65353211d05e24d56b1f242d71185c6d00e02cb8860701d571786d92c71f05
6744+
languageName: node
6745+
linkType: hard
6746+
67106747
"electron-to-chromium@npm:^1.5.4":
67116748
version: 1.5.8
67126749
resolution: "electron-to-chromium@npm:1.5.8"
@@ -7449,7 +7486,7 @@ __metadata:
74497486
languageName: node
74507487
linkType: hard
74517488

7452-
"fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0":
7489+
"fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0":
74537490
version: 2.1.0
74547491
resolution: "fast-json-stable-stringify@npm:2.1.0"
74557492
checksum: b191531e36c607977e5b1c47811158733c34ccb3bfde92c44798929e9b4154884378536d26ad90dfecd32e1ffc09c545d23535ad91b3161a27ddbb8ebe0cbecb
@@ -7508,6 +7545,15 @@ __metadata:
75087545
languageName: node
75097546
linkType: hard
75107547

7548+
"filelist@npm:^1.0.4":
7549+
version: 1.0.4
7550+
resolution: "filelist@npm:1.0.4"
7551+
dependencies:
7552+
minimatch: ^5.0.1
7553+
checksum: a303573b0821e17f2d5e9783688ab6fbfce5d52aaac842790ae85e704a6f5e4e3538660a63183d6453834dedf1e0f19a9dadcebfa3e926c72397694ea11f5160
7554+
languageName: node
7555+
linkType: hard
7556+
75117557
"fill-range@npm:^7.1.1":
75127558
version: 7.1.1
75137559
resolution: "fill-range@npm:7.1.1"
@@ -8986,6 +9032,20 @@ __metadata:
89869032
languageName: node
89879033
linkType: hard
89889034

9035+
"jake@npm:^10.8.5":
9036+
version: 10.9.2
9037+
resolution: "jake@npm:10.9.2"
9038+
dependencies:
9039+
async: ^3.2.3
9040+
chalk: ^4.0.2
9041+
filelist: ^1.0.4
9042+
minimatch: ^3.1.2
9043+
bin:
9044+
jake: bin/cli.js
9045+
checksum: f2dc4a086b4f58446d02cb9be913c39710d9ea570218d7681bb861f7eeaecab7b458256c946aeaa7e548c5e0686cc293e6435501e4047174a3b6a504dcbfcaae
9046+
languageName: node
9047+
linkType: hard
9048+
89899049
"jest-changed-files@npm:^29.7.0":
89909050
version: 29.7.0
89919051
resolution: "jest-changed-files@npm:29.7.0"
@@ -9383,7 +9443,7 @@ __metadata:
93839443
languageName: node
93849444
linkType: hard
93859445

9386-
"jest-util@npm:^29.7.0":
9446+
"jest-util@npm:^29.0.0, jest-util@npm:^29.7.0":
93879447
version: 29.7.0
93889448
resolution: "jest-util@npm:29.7.0"
93899449
dependencies:
@@ -9836,6 +9896,13 @@ __metadata:
98369896
languageName: node
98379897
linkType: hard
98389898

9899+
"lodash.memoize@npm:^4.1.2":
9900+
version: 4.1.2
9901+
resolution: "lodash.memoize@npm:4.1.2"
9902+
checksum: 9ff3942feeccffa4f1fafa88d32f0d24fdc62fd15ded5a74a5f950ff5f0c6f61916157246744c620173dddf38d37095a92327d5fd3861e2063e736a5c207d089
9903+
languageName: node
9904+
linkType: hard
9905+
98399906
"lodash.merge@npm:^4.6.2":
98409907
version: 4.6.2
98419908
resolution: "lodash.merge@npm:4.6.2"
@@ -9980,6 +10047,13 @@ __metadata:
998010047
languageName: node
998110048
linkType: hard
998210049

10050+
"make-error@npm:^1.3.6":
10051+
version: 1.3.6
10052+
resolution: "make-error@npm:1.3.6"
10053+
checksum: b86e5e0e25f7f777b77fabd8e2cbf15737972869d852a22b7e73c17623928fccb826d8e46b9951501d3f20e51ad74ba8c59ed584f610526a48f8ccf88aaec402
10054+
languageName: node
10055+
linkType: hard
10056+
998310057
"make-fetch-happen@npm:^13.0.0":
998410058
version: 13.0.1
998510059
resolution: "make-fetch-happen@npm:13.0.1"
@@ -12050,6 +12124,8 @@ __metadata:
1205012124
"@react-native/typescript-config": 0.76.2
1205112125
"@react-navigation/native": ^6.1.18
1205212126
"@react-navigation/stack": ^6.4.1
12127+
"@types/jest": ^29.5.14
12128+
"@types/node": ^22.9.0
1205312129
babel-plugin-module-resolver: ^5.0.0
1205412130
detox: ^20.27.6
1205512131
react: 18.3.1
@@ -12060,6 +12136,7 @@ __metadata:
1206012136
react-native-screens: ^3.35.0
1206112137
react-native-select-dropdown: ^4.0.1
1206212138
react-native-snackbar: ^2.8.0
12139+
ts-jest: ^29.2.5
1206312140
languageName: unknown
1206412141
linkType: soft
1206512142

@@ -13624,6 +13701,43 @@ __metadata:
1362413701
languageName: node
1362513702
linkType: hard
1362613703

13704+
"ts-jest@npm:^29.2.5":
13705+
version: 29.2.5
13706+
resolution: "ts-jest@npm:29.2.5"
13707+
dependencies:
13708+
bs-logger: ^0.2.6
13709+
ejs: ^3.1.10
13710+
fast-json-stable-stringify: ^2.1.0
13711+
jest-util: ^29.0.0
13712+
json5: ^2.2.3
13713+
lodash.memoize: ^4.1.2
13714+
make-error: ^1.3.6
13715+
semver: ^7.6.3
13716+
yargs-parser: ^21.1.1
13717+
peerDependencies:
13718+
"@babel/core": ">=7.0.0-beta.0 <8"
13719+
"@jest/transform": ^29.0.0
13720+
"@jest/types": ^29.0.0
13721+
babel-jest: ^29.0.0
13722+
jest: ^29.0.0
13723+
typescript: ">=4.3 <6"
13724+
peerDependenciesMeta:
13725+
"@babel/core":
13726+
optional: true
13727+
"@jest/transform":
13728+
optional: true
13729+
"@jest/types":
13730+
optional: true
13731+
babel-jest:
13732+
optional: true
13733+
esbuild:
13734+
optional: true
13735+
bin:
13736+
ts-jest: cli.js
13737+
checksum: d60d1e1d80936f6002b1bb27f7e062408bc733141b9d666565503f023c340a3196d506c836a4316c5793af81a5f910ab49bb9c13f66e2dc66de4e0f03851dbca
13738+
languageName: node
13739+
linkType: hard
13740+
1362713741
"tslib@npm:^1.8.1":
1362813742
version: 1.14.1
1362913743
resolution: "tslib@npm:1.14.1"
@@ -13876,6 +13990,13 @@ __metadata:
1387613990
languageName: node
1387713991
linkType: hard
1387813992

13993+
"undici-types@npm:~6.19.8":
13994+
version: 6.19.8
13995+
resolution: "undici-types@npm:6.19.8"
13996+
checksum: de51f1b447d22571cf155dfe14ff6d12c5bdaec237c765085b439c38ca8518fc360e88c70f99469162bf2e14188a7b0bcb06e1ed2dc031042b984b0bb9544017
13997+
languageName: node
13998+
linkType: hard
13999+
1387914000
"unicode-canonical-property-names-ecmascript@npm:^2.0.0":
1388014001
version: 2.0.0
1388114002
resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0"

0 commit comments

Comments
 (0)