name: CI - E2E - Mobile (webview) Browser on: workflow_dispatch: jobs: mobile-test: name: Test curriculum for mobile app runs-on: ubuntu-22.04 strategy: matrix: node-version: [20.x] steps: - name: Checkout Source Files uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Checkout mobile uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: repository: freeCodeCamp/mobile path: mobile - name: Setup pnpm uses: pnpm/action-setup@a3252b78c470c02df07e9d59298aecedc3ccdd6d #v3.0.0 with: version: 9 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: ${{ matrix.node-version }} cache: pnpm - name: Setup Flutter 3.22.x uses: subosito/flutter-action@2783a3f08e1baf891508463f8c6653c258246225 # v2 with: flutter-version: '3.22.x' channel: 'stable' cache: true cache-key: flutter-3.22.x cache-path: ${{ runner.tool_cache }}/flutter - name: Set freeCodeCamp Environment Variables run: cp sample.env .env - name: Install and Build run: | pnpm install pnpm run create:shared pnpm run build:curriculum - name: Generate mobile test files run: | cd mobile/mobile-app echo "DEVELOPMENTMODE=true" > .env echo "NEWSURL=https://www.freecodecamp.org/news/ghost/api/v3/content/" >> .env flutter pub get flutter test test/widget_test.dart - name: Install playwright dependencies run: npx playwright install --with-deps - name: Install serve run: npm install -g serve - name: Run playwright tests run: npx playwright test --config=playwright-mobile.config.ts - uses: actions/upload-artifact@v4 if: ${{ !cancelled() }} with: name: playwright-report-mobile path: playwright/reporter retention-days: 30