Skip to content

Commit

Permalink
Add Detox tests for React Native 0.62 (#185)
Browse files Browse the repository at this point in the history
* Initial 0.62 app

* Setup react-native-url-polyfill in it

* Setup Detox in rn-0.62

* Update CircleCI for RN 0.62

* Add --repo-update

* Revert "Add --repo-update"

This reverts commit bb4d52f.

* Revert "Revert "Add --repo-update""

This reverts commit 23e925c.
  • Loading branch information
charpeni authored Jun 2, 2020
1 parent eccffd9 commit 2c564dc
Show file tree
Hide file tree
Showing 67 changed files with 10,032 additions and 8 deletions.
30 changes: 23 additions & 7 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ version: 2.1
commands:
test-detox-ios:
steps:
- *attach-workspace
- *restore-cache-detox
- run:
name: Yarn version
command: yarn -v
Expand All @@ -79,12 +81,15 @@ commands:
name: Install Pods
command: |
curl https://cocoapods-specs.circleci.com/fetch-cocoapods-repo-from-s3.sh | bash -s cf
cd ios && pod install
cd ios && pod install --repo-update
- run:
name: Run Detox on iOS
command: yarn e2e:ios
- *save-cache-detox
test-hermes:
steps:
- *attach-workspace
- *restore-android-build-cache
- run:
name: Yarn version
command: yarn -v
Expand All @@ -98,6 +103,7 @@ commands:
- run:
name: Build APK
command: cd android && ./gradlew assembleRelease
- *save-android-build-cache

jobs:
checkout:
Expand Down Expand Up @@ -134,18 +140,22 @@ jobs:
<<: *ios
working_directory: ~/react-native-url-polyfill/detox/rn-0.61
steps:
- *attach-workspace
- *restore-cache-detox
- test-detox-ios
- *save-cache-detox
rn-0-61-test-hermes:
<<: *android
working_directory: ~/react-native-url-polyfill/detox/rn-0.61
steps:
- *attach-workspace
- *restore-android-build-cache
- test-hermes
- *save-android-build-cache
rn-0-62-test-ios:
<<: *ios
working_directory: ~/react-native-url-polyfill/detox/rn-0.62
steps:
- test-detox-ios
rn-0-62-test-hermes:
<<: *android
working_directory: ~/react-native-url-polyfill/detox/rn-0.62
steps:
- test-hermes

workflows:
tests:
Expand All @@ -163,3 +173,9 @@ workflows:
- rn-0-61-test-hermes:
requires:
- checkout
- rn-0-62-test-ios:
requires:
- checkout
- rn-0-62-test-hermes:
requires:
- checkout
2 changes: 1 addition & 1 deletion detox/rn-0.61/package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "detox",
"name": "detox-0.61",
"version": "0.0.1",
"private": true,
"scripts": {
Expand Down
6 changes: 6 additions & 0 deletions detox/rn-0.62/.buckconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@

[android]
target = Google Inc.:Google APIs:23

[maven_repositories]
central = https://repo1.maven.org/maven2
22 changes: 22 additions & 0 deletions detox/rn-0.62/.detoxrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"testRunner": "jest",
"runnerConfig": "e2e/config.json",
"configurations": {
"ios.sim.release": {
"type": "ios.simulator",
"binaryPath": "ios/build/Build/Products/Release-iphonesimulator/Detox.app",
"build": "xcodebuild -workspace ios/Detox.xcworkspace -scheme Detox -configuration Release -sdk iphonesimulator -derivedDataPath ios/build",
"device": {
"type": "iPhone 11 Pro"
}
},
"android.emu.release": {
"type": "android.emulator",
"binaryPath": "android/app/build/outputs/apk/release/app-release.apk",
"build": "cd android && ./gradlew assembleRelease assembleAndroidTest -DtestBuildType=release && cd ..",
"device": {
"avdName": "Pixel_2_API_29"
}
}
}
}
4 changes: 4 additions & 0 deletions detox/rn-0.62/.eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
module.exports = {
root: true,
extends: '@react-native-community',
};
74 changes: 74 additions & 0 deletions detox/rn-0.62/.flowconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
[ignore]
; We fork some components by platform
.*/*[.]android.js

; Ignore "BUCK" generated dirs
<PROJECT_ROOT>/\.buckd/

; Ignore polyfills
node_modules/react-native/Libraries/polyfills/.*

; These should not be required directly
; require from fbjs/lib instead: require('fbjs/lib/warning')
node_modules/warning/.*

; Flow doesn't support platforms
.*/Libraries/Utilities/LoadingView.js

[untyped]
.*/node_modules/@react-native-community/cli/.*/.*

[include]

[libs]
node_modules/react-native/interface.js
node_modules/react-native/flow/

[options]
emoji=true

esproposal.optional_chaining=enable
esproposal.nullish_coalescing=enable

module.file_ext=.js
module.file_ext=.json
module.file_ext=.ios.js

munge_underscores=true

module.name_mapper='^react-native/\(.*\)$' -> '<PROJECT_ROOT>/node_modules/react-native/\1'
module.name_mapper='^@?[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> '<PROJECT_ROOT>/node_modules/react-native/Libraries/Image/RelativeImageStub'

suppress_type=$FlowIssue
suppress_type=$FlowFixMe
suppress_type=$FlowFixMeProps
suppress_type=$FlowFixMeState

suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(<VERSION>\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\)
suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(<VERSION>\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\)?:? #[0-9]+
suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError

[lints]
sketchy-null-number=warn
sketchy-null-mixed=warn
sketchy-number=warn
untyped-type-import=warn
nonstrict-import=warn
deprecated-type=warn
unsafe-getters-setters=warn
inexact-spread=warn
unnecessary-invariant=warn
signature-verification-failure=warn
deprecated-utility=error

[strict]
deprecated-type
nonstrict-import
sketchy-null
unclear-type
unsafe-getters-setters
untyped-import
untyped-type-import

[version]
^0.113.0
1 change: 1 addition & 0 deletions detox/rn-0.62/.gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.pbxproj -text
59 changes: 59 additions & 0 deletions detox/rn-0.62/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# OSX
#
.DS_Store

# Xcode
#
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate

# Android/IntelliJ
#
build/
.idea
.gradle
local.properties
*.iml

# node.js
#
node_modules/
npm-debug.log
yarn-error.log

# BUCK
buck-out/
\.buckd/
*.keystore
!debug.keystore

# fastlane
#
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
# screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://docs.fastlane.tools/best-practices/source-control/

*/fastlane/report.xml
*/fastlane/Preview.html
*/fastlane/screenshots

# Bundle artifact
*.jsbundle

# CocoaPods
/ios/Pods/
6 changes: 6 additions & 0 deletions detox/rn-0.62/.prettierrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module.exports = {
bracketSpacing: false,
jsxBracketSameLine: true,
singleQuote: true,
trailingComma: 'all',
};
1 change: 1 addition & 0 deletions detox/rn-0.62/.watchmanconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
35 changes: 35 additions & 0 deletions detox/rn-0.62/App.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/**
* Sample React Native App
* https://github.com/facebook/react-native
*
* @format
* @flow strict-local
*/

import React from 'react';
import {SafeAreaView, Text, StatusBar} from 'react-native';

const App: () => React$Node = () => {
return (
<>
<StatusBar barStyle="dark-content" />
<SafeAreaView>
<Text testID="url-polyfill-version">
{global.REACT_NATIVE_URL_POLYFILL}
</Text>
<Text testID="url-test-1">
{new URL('dev', 'https://google.dev').href}
</Text>
<Text testID="url-test-2">
{
new URL(
'https://facebook.github.io/react-native/img/header_logo.png',
).href
}
</Text>
</SafeAreaView>
</>
);
};

export default App;
14 changes: 14 additions & 0 deletions detox/rn-0.62/__tests__/App-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/**
* @format
*/

import 'react-native';
import React from 'react';
import App from '../App';

// Note: test renderer must be required after react-native.
import renderer from 'react-test-renderer';

it('renders correctly', () => {
renderer.create(<App />);
});
55 changes: 55 additions & 0 deletions detox/rn-0.62/android/app/_BUCK
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# To learn about Buck see [Docs](https://buckbuild.com/).
# To run your application with Buck:
# - install Buck
# - `npm start` - to start the packager
# - `cd android`
# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"`
# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck
# - `buck install -r android/app` - compile, install and run application
#

load(":build_defs.bzl", "create_aar_targets", "create_jar_targets")

lib_deps = []

create_aar_targets(glob(["libs/*.aar"]))

create_jar_targets(glob(["libs/*.jar"]))

android_library(
name = "all-libs",
exported_deps = lib_deps,
)

android_library(
name = "app-code",
srcs = glob([
"src/main/java/**/*.java",
]),
deps = [
":all-libs",
":build_config",
":res",
],
)

android_build_config(
name = "build_config",
package = "com.detox",
)

android_resource(
name = "res",
package = "com.detox",
res = "src/main/res",
)

android_binary(
name = "app",
keystore = "//android/keystores:debug",
manifest = "src/main/AndroidManifest.xml",
package_type = "debug",
deps = [
":app-code",
],
)
Loading

0 comments on commit 2c564dc

Please sign in to comment.