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

feat: refactor and add e2e tests #651

Merged
merged 20 commits into from
Sep 14, 2024
Merged
Show file tree
Hide file tree
Changes from 16 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
14 changes: 0 additions & 14 deletions .eslintrc

This file was deleted.

11 changes: 11 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
module.exports = {
extends: ['plugin:@typescript-eslint/recommended', '@react-native'],
root: true,
parser: '@typescript-eslint/parser',
plugins: ['@typescript-eslint'],
rules: {
'prettier/prettier': 'error',
'@typescript-eslint/no-var-requires': 'off',
'comma-dangle': 'off', // prettier already detects this
},
};
66 changes: 0 additions & 66 deletions .flowconfig

This file was deleted.

14 changes: 9 additions & 5 deletions .github/workflows/deploy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,18 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v2
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '14.x'
node-version-file: .nvmrc
registry-url: 'https://registry.npmjs.org'
- name: Enable corepack
run: corepack enable
- name: Install dependencies
run: yarn --frozen-lockfile --non-interactive --silent
run: yarn install --immutable
- name: Preapre for release
run: yarn prepare
- name: Publish to NPM
run: npm publish
env:
Expand Down
206 changes: 206 additions & 0 deletions .github/workflows/e2e_tests.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,206 @@
name: 'E2E Tests'

on:
push:
branches:
- master
pull_request:
branches:
- master

jobs:
build-android:
name: Build Android
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: .nvmrc

- name: Enable corepack
run: corepack enable

- name: Install dependencies
run: yarn install --immutable

- name: Setup java
uses: actions/setup-java@v4
with:
distribution: 'temurin' # See 'Supported distributions' for available options
java-version: '19'

- name: Cache Gradle
uses: actions/cache@v4
with:
path: |
~/.gradle/wrapper
~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('KeychainExample/android/gradle/wrapper/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-

- name: Downloading Gradle Dependencies
run: |
cd KeychainExample/android
chmod +x gradlew
./gradlew --max-workers 2 dependencies

- name: Build Android Release
env:
JAVA_OPTS: '-XX:MaxHeapSize=6g'
working-directory: ./KeychainExample
run: |
yarn build:android
yarn test:android:build

- name: Upload Test APKs
uses: actions/upload-artifact@v4
with:
name: test-apk
path: KeychainExample/android/app/build/outputs/apk
retention-days: 1

test-android:
runs-on: ubuntu-latest
needs: build-android
strategy:
fail-fast: false
matrix:
api-level:
- 31
- 32
- 33

steps:
- name: Enable KVM group perms
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
ls /dev/kvm

- uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: .nvmrc

- name: Enable corepack
run: corepack enable

- name: Install dependencies
run: yarn install --immutable

- name: Setup java
uses: actions/setup-java@v4
with:
distribution: 'temurin' # See 'Supported distributions' for available options
java-version: '19'

- uses: actions/download-artifact@v4
with:
name: test-apk
path: KeychainExample/android/app/build/outputs/apk

- name: Display structure of downloaded files
run: ls -R KeychainExample/android/app/build/outputs/apk

- name: Run Tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: ${{ matrix.api-level }}
arch: x86_64
profile: pixel_6
disable-animations: true
avd-name: TestingAVD
script: |
cd KeychainExample
yarn test:android:run
env:
API_LEVEL: ${{ matrix.api-level }}
- name: Upload test artifacts
if: ${{ failure() }}
uses: actions/upload-artifact@v4
with:
name: android-test-artifacts
path: KeychainExample/artifacts

build-ios:
name: Build and Test iOS
runs-on: macos-13

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: .nvmrc

- name: Enable corepack
run: corepack enable
- name: Install dependencies
run: yarn install --immutable

- name: setup-cocoapods
uses: maxim-lobanov/setup-cocoapods@v1
with:
podfile-path: KeychainExample/ios/Podfile.lock

- name: Cache cocoapods
id: cocoapods-cache
uses: actions/cache@v4
with:
path: |
**/ios/Pods
**/vendor/bundle
key: ${{ runner.os }}-cocoapods-${{ hashFiles('KeychainExample/ios/Podfile.lock') }}
restore-keys: |
${{ runner.os }}-cocoapods-

- name: Install Bundle
if: steps.cocoapods-cache.outputs.cache-hit != 'true'
run: |
cd KeychainExample
bundle install

- name: Install Detox dependencies
run: |
cd KeychainExample
brew tap wix/brew
brew install applesimutils
yarn detox clean-framework-cache
yarn detox build-framework-cache

- name: Xcode Version
run: |
xcodebuild -version
xcrun simctl list

- name: Build iOS Release
working-directory: ./KeychainExample
run: |
yarn build:ios
cd ios && pod install && cd -
yarn test:ios:build
env:
RCT_NEW_ARCH_ENABLED: 0
USE_HERMES: 1

- name: Test iOS Release
run: |
cd KeychainExample
yarn test:ios:run

- name: Upload test artifacts
if: ${{ failure() }}
uses: actions/upload-artifact@v4
with:
name: ios-test-artifacts
path: KeychainExample/artifacts
43 changes: 43 additions & 0 deletions .github/workflows/lint_and_types.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Lint and types

on:
push:
branches:
- master
pull_request:
branches:
- master

jobs:
lint:
name: Lint
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: .nvmrc
- name: Enable corepack
run: corepack enable
- name: Install dependencies
run: yarn install --immutable
- name: Lint files
run: yarn lint
typescript:
name: Typescript
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: .nvmrc
- name: Enable corepack
run: corepack enable
- name: Install dependencies
run: yarn install --immutable
- name: Check flow types
DorianMazur marked this conversation as resolved.
Show resolved Hide resolved
run: yarn typecheck
Loading
Loading