diff --git a/actions/android/action.yml b/actions/android/action.yml index 5c4e5a4b..8970d951 100644 --- a/actions/android/action.yml +++ b/actions/android/action.yml @@ -102,6 +102,26 @@ runs: ~/.android/avd ~/.android/adb* key: ${{ steps.avd-key.outputs.key }} + - name: Detect Package Manager + id: detect-pm + shell: bash + run: | + if [ -f "pnpm-lock.yaml" ]; then + echo "manager=pnpm" >> $GITHUB_OUTPUT + echo "runner=pnpm exec " >> $GITHUB_OUTPUT + elif [ -f "yarn.lock" ]; then + echo "manager=yarn" >> $GITHUB_OUTPUT + echo "runner=yarn " >> $GITHUB_OUTPUT + elif [ -f "bun.lockb" ]; then + echo "manager=bun" >> $GITHUB_OUTPUT + echo "runner=bunx " >> $GITHUB_OUTPUT + elif [ -f "deno.lock" ]; then + echo "manager=deno" >> $GITHUB_OUTPUT + echo "runner=deno run -A npm:" >> $GITHUB_OUTPUT + else + echo "manager=npm" >> $GITHUB_OUTPUT + echo "runner=npx " >> $GITHUB_OUTPUT + fi - name: Run E2E tests id: run-tests uses: reactivecircus/android-emulator-runner@v2 @@ -116,7 +136,7 @@ runs: script: | echo $(pwd) adb install -r ${{ inputs.app }} - pnpm react-native-harness --harnessRunner ${{ inputs.runner }} + ${{ steps.detect-pm.outputs.runner }}react-native-harness --harnessRunner ${{ inputs.runner }} - name: Upload visual test artifacts if: always() && inputs.uploadVisualTestArtifacts == 'true' uses: actions/upload-artifact@v4 diff --git a/actions/ios/action.yml b/actions/ios/action.yml index 706d573a..6ac89d61 100644 --- a/actions/ios/action.yml +++ b/actions/ios/action.yml @@ -40,11 +40,30 @@ runs: working-directory: ${{ inputs.projectRoot }} run: | xcrun simctl install booted ${{ inputs.app }} + - name: Detect Package Manager + id: detect-pm + shell: bash + run: | + if [ -f "pnpm-lock.yaml" ]; then + echo "manager=pnpm" >> $GITHUB_OUTPUT + echo "runner=pnpm exec " >> $GITHUB_OUTPUT + elif [ -f "yarn.lock" ]; then + echo "manager=yarn" >> $GITHUB_OUTPUT + echo "runner=yarn " >> $GITHUB_OUTPUT + elif [ -f "bun.lockb" ]; then + echo "manager=bun" >> $GITHUB_OUTPUT + echo "runner=bunx " >> $GITHUB_OUTPUT + elif [ -f "deno.lock" ]; then + echo "manager=deno" >> $GITHUB_OUTPUT + echo "runner=deno run -A npm:" >> $GITHUB_OUTPUT + else + echo "manager=npm" >> $GITHUB_OUTPUT + echo "runner=npx " >> $GITHUB_OUTPUT + fi - name: Run E2E tests shell: bash working-directory: ${{ inputs.projectRoot }} - run: | - pnpm react-native-harness --harnessRunner ${{ inputs.runner }} + run: ${{ steps.detect-pm.outputs.runner }}react-native-harness --harnessRunner ${{ inputs.runner }} - name: Upload visual test artifacts if: always() && inputs.uploadVisualTestArtifacts == 'true' uses: actions/upload-artifact@v4 diff --git a/actions/web/action.yml b/actions/web/action.yml index 5cd40061..bb18c85c 100644 --- a/actions/web/action.yml +++ b/actions/web/action.yml @@ -28,11 +28,30 @@ runs: - name: Install Playwright Browsers shell: bash run: npx playwright install --with-deps chromium + - name: Detect Package Manager + id: detect-pm + shell: bash + run: | + if [ -f "pnpm-lock.yaml" ]; then + echo "manager=pnpm" >> $GITHUB_OUTPUT + echo "runner=pnpm exec " >> $GITHUB_OUTPUT + elif [ -f "yarn.lock" ]; then + echo "manager=yarn" >> $GITHUB_OUTPUT + echo "runner=yarn " >> $GITHUB_OUTPUT + elif [ -f "bun.lockb" ]; then + echo "manager=bun" >> $GITHUB_OUTPUT + echo "runner=bunx " >> $GITHUB_OUTPUT + elif [ -f "deno.lock" ]; then + echo "manager=deno" >> $GITHUB_OUTPUT + echo "runner=deno run -A npm:" >> $GITHUB_OUTPUT + else + echo "manager=npm" >> $GITHUB_OUTPUT + echo "runner=npx " >> $GITHUB_OUTPUT + fi - name: Run E2E tests shell: bash working-directory: ${{ inputs.projectRoot }} - run: | - pnpm react-native-harness --harnessRunner ${{ inputs.runner }} + run: ${{ steps.detect-pm.outputs.runner }}react-native-harness --harnessRunner ${{ inputs.runner }} - name: Upload visual test artifacts if: always() && inputs.uploadVisualTestArtifacts == 'true' uses: actions/upload-artifact@v4 diff --git a/packages/github-action/src/android/action.yml b/packages/github-action/src/android/action.yml index 5c4e5a4b..8970d951 100644 --- a/packages/github-action/src/android/action.yml +++ b/packages/github-action/src/android/action.yml @@ -102,6 +102,26 @@ runs: ~/.android/avd ~/.android/adb* key: ${{ steps.avd-key.outputs.key }} + - name: Detect Package Manager + id: detect-pm + shell: bash + run: | + if [ -f "pnpm-lock.yaml" ]; then + echo "manager=pnpm" >> $GITHUB_OUTPUT + echo "runner=pnpm exec " >> $GITHUB_OUTPUT + elif [ -f "yarn.lock" ]; then + echo "manager=yarn" >> $GITHUB_OUTPUT + echo "runner=yarn " >> $GITHUB_OUTPUT + elif [ -f "bun.lockb" ]; then + echo "manager=bun" >> $GITHUB_OUTPUT + echo "runner=bunx " >> $GITHUB_OUTPUT + elif [ -f "deno.lock" ]; then + echo "manager=deno" >> $GITHUB_OUTPUT + echo "runner=deno run -A npm:" >> $GITHUB_OUTPUT + else + echo "manager=npm" >> $GITHUB_OUTPUT + echo "runner=npx " >> $GITHUB_OUTPUT + fi - name: Run E2E tests id: run-tests uses: reactivecircus/android-emulator-runner@v2 @@ -116,7 +136,7 @@ runs: script: | echo $(pwd) adb install -r ${{ inputs.app }} - pnpm react-native-harness --harnessRunner ${{ inputs.runner }} + ${{ steps.detect-pm.outputs.runner }}react-native-harness --harnessRunner ${{ inputs.runner }} - name: Upload visual test artifacts if: always() && inputs.uploadVisualTestArtifacts == 'true' uses: actions/upload-artifact@v4 diff --git a/packages/github-action/src/ios/action.yml b/packages/github-action/src/ios/action.yml index 706d573a..6ac89d61 100644 --- a/packages/github-action/src/ios/action.yml +++ b/packages/github-action/src/ios/action.yml @@ -40,11 +40,30 @@ runs: working-directory: ${{ inputs.projectRoot }} run: | xcrun simctl install booted ${{ inputs.app }} + - name: Detect Package Manager + id: detect-pm + shell: bash + run: | + if [ -f "pnpm-lock.yaml" ]; then + echo "manager=pnpm" >> $GITHUB_OUTPUT + echo "runner=pnpm exec " >> $GITHUB_OUTPUT + elif [ -f "yarn.lock" ]; then + echo "manager=yarn" >> $GITHUB_OUTPUT + echo "runner=yarn " >> $GITHUB_OUTPUT + elif [ -f "bun.lockb" ]; then + echo "manager=bun" >> $GITHUB_OUTPUT + echo "runner=bunx " >> $GITHUB_OUTPUT + elif [ -f "deno.lock" ]; then + echo "manager=deno" >> $GITHUB_OUTPUT + echo "runner=deno run -A npm:" >> $GITHUB_OUTPUT + else + echo "manager=npm" >> $GITHUB_OUTPUT + echo "runner=npx " >> $GITHUB_OUTPUT + fi - name: Run E2E tests shell: bash working-directory: ${{ inputs.projectRoot }} - run: | - pnpm react-native-harness --harnessRunner ${{ inputs.runner }} + run: ${{ steps.detect-pm.outputs.runner }}react-native-harness --harnessRunner ${{ inputs.runner }} - name: Upload visual test artifacts if: always() && inputs.uploadVisualTestArtifacts == 'true' uses: actions/upload-artifact@v4 diff --git a/packages/github-action/src/web/action.yml b/packages/github-action/src/web/action.yml index 5cd40061..bb18c85c 100644 --- a/packages/github-action/src/web/action.yml +++ b/packages/github-action/src/web/action.yml @@ -28,11 +28,30 @@ runs: - name: Install Playwright Browsers shell: bash run: npx playwright install --with-deps chromium + - name: Detect Package Manager + id: detect-pm + shell: bash + run: | + if [ -f "pnpm-lock.yaml" ]; then + echo "manager=pnpm" >> $GITHUB_OUTPUT + echo "runner=pnpm exec " >> $GITHUB_OUTPUT + elif [ -f "yarn.lock" ]; then + echo "manager=yarn" >> $GITHUB_OUTPUT + echo "runner=yarn " >> $GITHUB_OUTPUT + elif [ -f "bun.lockb" ]; then + echo "manager=bun" >> $GITHUB_OUTPUT + echo "runner=bunx " >> $GITHUB_OUTPUT + elif [ -f "deno.lock" ]; then + echo "manager=deno" >> $GITHUB_OUTPUT + echo "runner=deno run -A npm:" >> $GITHUB_OUTPUT + else + echo "manager=npm" >> $GITHUB_OUTPUT + echo "runner=npx " >> $GITHUB_OUTPUT + fi - name: Run E2E tests shell: bash working-directory: ${{ inputs.projectRoot }} - run: | - pnpm react-native-harness --harnessRunner ${{ inputs.runner }} + run: ${{ steps.detect-pm.outputs.runner }}react-native-harness --harnessRunner ${{ inputs.runner }} - name: Upload visual test artifacts if: always() && inputs.uploadVisualTestArtifacts == 'true' uses: actions/upload-artifact@v4