name: Mobile Test on: push: branches: [main, develop] pull_request: branches: [main, develop] workflow_dispatch: jobs: mobile-test-android: runs-on: macos-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '18' - name: Install pnpm uses: pnpm/action-setup@v2 with: version: 8 - name: Install dependencies run: pnpm install - name: Setup Android SDK uses: android-actions/setup-android@v3 - name: Create Android virtual device run: | echo "y" | sdkmanager "system-images;android-30;google_apis;x86_64" echo "no" | avdmanager create avd -n test_device -k "system-images;android-30;google_apis;x86_64" --force - name: Start Android emulator run: | emulator -avd test_device -no-audio -no-window -no-snapshot -gpu swiftshader_indirect & adb wait-for-device adb shell input keyevent 82 - name: Build Android app run: pnpm run build:app - name: Install Appium run: | npm install -g appium@2.11.3 appium driver install uiautomator2 - name: Start Appium server run: | appium --port 4723 --relaxed-security & sleep 10 - name: Run Android tests run: pnpm run test:mobile:android continue-on-error: true - name: Upload test results if: always() uses: actions/upload-artifact@v4 with: name: android-test-results path: test-results/mobile/ retention-days: 30 - name: Upload screenshots if: failure() uses: actions/upload-artifact@v4 with: name: android-screenshots path: test-results/mobile/screenshots/ retention-days: 30 mobile-test-ios: runs-on: macos-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '18' - name: Install pnpm uses: pnpm/action-setup@v2 with: version: 8 - name: Install dependencies run: pnpm install - name: Setup Xcode uses: maxim-lobanov/setup-xcode@v1 with: xcode-version: '15.0' - name: Start iOS simulator run: | xcrun simctl boot "iPhone 15" || true xcrun simctl list devices - name: Build iOS app run: pnpm run build:app - name: Install Appium run: | npm install -g appium@2.11.3 appium driver install xcuitest - name: Start Appium server run: | appium --port 4723 --relaxed-security & sleep 10 - name: Run iOS tests run: pnpm run test:mobile:ios continue-on-error: true - name: Upload test results if: always() uses: actions/upload-artifact@v4 with: name: ios-test-results path: test-results/mobile/ retention-days: 30 - name: Upload screenshots if: failure() uses: actions/upload-artifact@v4 with: name: ios-screenshots path: test-results/mobile/screenshots/ retention-days: 30