name: Mobile checks on: pull_request: push: branches: - main - master - develop jobs: mobile: name: Mobile lint + typecheck runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: "20" cache: "npm" cache-dependency-path: ee/mobile/package-lock.json - name: Install dependencies working-directory: ee/mobile run: npm ci --include=dev - name: Lint working-directory: ee/mobile run: npm run lint - name: Typecheck working-directory: ee/mobile run: npm run typecheck mobile-tests: name: Mobile unit tests runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: "20" cache: "npm" cache-dependency-path: ee/mobile/package-lock.json - name: Install dependencies working-directory: ee/mobile run: npm ci --include=dev - name: Test working-directory: ee/mobile run: npm run test env: NODE_OPTIONS: '--max-old-space-size=4096' mobile-audit: name: Mobile dependency audit (report) runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: "20" cache: "npm" cache-dependency-path: ee/mobile/package-lock.json - name: Install dependencies working-directory: ee/mobile run: npm ci --include=dev - name: Generate npm audit report working-directory: ee/mobile run: | npm audit --omit=dev --json > npm-audit.json || true - name: Upload audit report uses: actions/upload-artifact@v4 with: name: mobile-npm-audit path: ee/mobile/npm-audit.json mobile-repro: name: Mobile reproducibility checks runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: "20" cache: "npm" cache-dependency-path: ee/mobile/package-lock.json - name: Install dependencies (npm ci) working-directory: ee/mobile run: npm ci --include=dev - name: Ensure lockfile is unchanged run: git diff --exit-code -- ee/mobile/package-lock.json - name: Verify Expo config resolves working-directory: ee/mobile run: npx expo config --type public --json > /tmp/expo-config.json