Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tools: add __scripts__/generate-example.js #68

Merged
merged 3 commits into from
Oct 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
111 changes: 36 additions & 75 deletions .github/workflows/tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,23 +9,36 @@ on:
schedule:
- cron: '0 0 * * 0' # https://crontab.guru/every-week

env:
TEST_APP_DEPS: react-native-modal react-native-webview
TEST_APP_DEV_DEPS: typescript @babel/preset-env react-shallow-renderer
RN_BUNDLE_ARGS: --entry-file index.js --platform android --dev false --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm install
- run: npm test
test-yarn:

test:
needs: build
runs-on: ubuntu-latest
runs-on: ${{ matrix.os }}
outputs:
rn-version: ${{ steps.rn-version.outputs.value }}
concurrency:
group: '${{ github.workflow }}-${{ matrix.platform }}-${{ matrix.pm }}-${{ github.head_ref || github.ref_name }}'
cancel-in-progress: true
strategy:
fail-fast: false
max-parallel: 5
matrix:
os: [ ubuntu-latest ]
platform: [ android ]
pm: [ npm, yarn ]
include:
- os: macos-latest
platform: ios
pm: npm
- os: macos-latest
platform: ios
pm: yarn
steps:
- uses: actions/checkout@v4
with:
Expand All @@ -34,85 +47,32 @@ jobs:
with:
java-version: 17
distribution: adopt
- run: npx react-native init rnexample
- run: |
# npm install -g ${{ matrix.pm }} react-native
npm run example -- --pm ${{ matrix.pm }}
working-directory: react-native-hcaptcha
- id: rn-version
working-directory: rnexample
working-directory: react-native-hcaptcha-example
run: |
RN_VERSION=$(cat package.json | jq ".dependencies.\"react-native\"" -r)
echo "value=${RN_VERSION}" >> $GITHUB_OUTPUT
- name: Run yarn add ...
working-directory: rnexample
run: |
yarn add @hcaptcha/react-native-hcaptcha@file:../react-native-hcaptcha
yarn add --dev ${{ env.TEST_APP_DEV_DEPS }}
yarn add ${{ env.TEST_APP_DEPS }}
cp ../react-native-hcaptcha/Example.App.js App.js
cp ../react-native-hcaptcha/Example.jest.config.js jest.config.js
- run: |
mkdir -p android/app/src/main/assets
mkdir -p android/app/src/main/res
yarn react-native bundle ${{ env.RN_BUNDLE_ARGS }}
working-directory: rnexample
- run: cat package.json
working-directory: rnexample
working-directory: react-native-hcaptcha-example
- run: yarn test --config ./jest.config.js
working-directory: rnexample
working-directory: react-native-hcaptcha-example
- run: npx react-native build-${{ matrix.platform }}
working-directory: react-native-hcaptcha-example
- run: npx --yes check-peer-dependencies --yarn --runOnlyOnRootDependencies
working-directory: rnexample
test-npm:
needs: build
runs-on: ubuntu-latest
outputs:
rn-version: ${{ steps.rn-version.outputs.value }}
steps:
- uses: actions/setup-java@v4
with:
java-version: 17
distribution: adopt
- run: npx react-native init rnexample
- id: rn-version
working-directory: rnexample
run: |
RN_VERSION=$(cat package.json | jq ".dependencies.\"react-native\"" -r)
echo "value=${RN_VERSION}" >> $GITHUB_OUTPUT
- uses: actions/checkout@v4
with:
path: rnexample/react-native-hcaptcha
- name: Run npm install ...
working-directory: rnexample
run: |
npm i --save file:./react-native-hcaptcha
npm i --save --include=dev ${{ env.TEST_APP_DEV_DEPS }}
npm i --save ${{ env.TEST_APP_DEPS }}
cp ./react-native-hcaptcha/Example.App.js App.js
cp ./react-native-hcaptcha/Example.jest.config.js jest.config.js
- run: |
mkdir -p android/app/src/main/assets
mkdir -p android/app/src/main/res
npx react-native bundle ${{ env.RN_BUNDLE_ARGS }}
working-directory: rnexample
- run: cat package.json
working-directory: rnexample
- run: npm run test -- --config ./jest.config.js
working-directory: rnexample
- run: npx --yes check-peer-dependencies --npm --runOnlyOnRootDependencies
working-directory: rnexample
- run: |
echo "org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=1024m" >> gradle.properties
./gradlew assemble
working-directory: rnexample/android
- uses: actions/upload-artifact@v4
with:
name: apks
path: rnexample/android/app/build/outputs/apk/release/app-release.apk
working-directory: react-native-hcaptcha-example

create-an-issue:
runs-on: ubuntu-latest
needs: [test-npm, test-yarn]
if: always() && github.event == 'schedule' && (needs.test-npm.result == 'failure' || needs.test-yarn.result == 'failure')
needs: test
if: always() && github.event == 'schedule' && needs.test.result == 'failure'
steps:
- uses: actions/checkout@v4
- run: |
RN_VERSION="${{ needs.test-npm.outputs.rn-version || needs.test-yarn.outputs.rn-version }}"
RN_VERSION="${{ needs.test.outputs.rn-version }}"
GHA_RUN_URL="${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
echo "RN_VERSION=${RN_VERSION}" >> $GITHUB_ENV
echo "GHA_RUN_URL=${GHA_RUN_URL}" >> $GITHUB_ENV
Expand All @@ -123,9 +83,10 @@ jobs:
assignees: CAMOBAP
update_existing: true
filename: .github/examples-issue-template.md

release:
if: github.event_name == 'release'
needs: [test-npm, test-yarn]
needs: test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
Expand Down
1 change: 1 addition & 0 deletions Example.jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,5 @@ module.exports = {
+ "|react-native-animatable"
+ ")/)",
],
setupFiles: ['./jest.setup.js'],
}
6 changes: 6 additions & 0 deletions Example.jest.setup.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
jest.mock('react-native-webview', () => {
return {
WebView: () => 'WebView',
};
});

54 changes: 32 additions & 22 deletions MAINTAINER.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,33 +23,20 @@ PATCH: bugfix only.

For `expo` test app

- `cd ..`
- `expo init expo-example -t blank`
- `cd expo-example`
- `yarn add file:../react-native-hcaptcha`
- `yarn add react-native-modal react-native-webview`
- `cp ../react-native-hcaptcha/Example.App.js App.js`
- `yarn android`
- `cd react-native-hcaptcha`
- `yarn example --expo
- `yarn android` or `npm run android`

For `react-native` test app

- `cd ..`
- `react-native init rnexample` or `react-native init rnexample --version 0.63.4` for specific version
- `cd rnexample`
- `yarn add file:../react-native-hcaptcha`
- `yarn add react-native-modal react-native-webview`
- `cp ../react-native-hcaptcha/Example.App.js App.js`
- `yarn android`
- `cd react-native-hcaptcha`
- `yarn example`
- `yarn android` or `npm run android`

For iOS instead the last step do:

- `pushd ios; pod install; popd`
- `yarn ios`

To quickly update `react-native-hcaptcha` locally just run:

`yarn upgrade file:../react-native-hcaptcha`

- `pushd ios; env USE_HERMES=0 pod install; popd`
- `yarn ios` or `npm run ios`

### Known issues

Expand Down Expand Up @@ -145,4 +132,27 @@ ERROR Invariant Violation: No callback found with cbID xxxxx and callID yyyyy

Solution: delete `node_modules` in `react-native-hcaptcha`.

This issue is related to mismatched `react-native` versions in the test app vs. `react-native-hcaptcha`
This issue is related to mismatched `react-native` versions in the test app vs. `react-native-hcaptcha`

---

Problem:

Xcode failed to build with:

> ...
> Framework 'hermes' not found

Solution: `env USE_HERMES=0 pod install` or add `:hermes_enabled => false` into `use_react_native!` call in `ios/Podfile`

---

Problem:
```
> yarn add file:../react-native-hcaptcha
Usage Error: The file:../react-native-hcaptcha string didn't match the required format (package-name@range). Did you perhaps forget to explicitly reference the package name?
```

Solution: `yarn add @hcaptcha/react-native-hcaptcha@file:../react-native-hcaptcha`

Yarn 2.10.x and above doesn't require `file:` scheme prefix https://stackoverflow.com/questions/40102686/how-to-install-package-with-local-path-by-yarn-it-couldnt-find-package
Loading
Loading