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@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3 - name: Checkout mobile uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3 with: repository: freeCodeCamp/mobile path: mobile - name: Setup pnpm uses: pnpm/action-setup@v2 with: version: 8 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@1a4442cacd436585916779262731d5b162bc6ec7 # v3 with: node-version: ${{ matrix.node-version }} # cypress-io/github-action caches the store, so we should not cache it # here. - name: Setup Flutter 3.13.x uses: subosito/flutter-action@2783a3f08e1baf891508463f8c6653c258246225 # v2 with: flutter-version: '3.13.x' channel: 'stable' cache: true cache-key: flutter-3.13.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 # This is a workaround for the fact that Cypress does not support # running in a sub-directory. # # In our cypress config, we default to the cypress/e2e/default directory. # We need to change this to cypress/e2e/ for the specific tests we are running # in this workflow. # - name: Adjust the Cypress Config run: | sed -i 's#cypress/e2e/default/#cypress/e2e/#g' cypress.config.js - name: Install serve run: npm install -g serve - name: Cypress run uses: cypress-io/github-action@v6 with: record: ${{ env.CYPRESS_RECORD_KEY != 0 }} start: npx serve --no-request-logging wait-on: http://localhost:3000 wait-on-timeout: 1200 config: retries=1,screenshotOnRunFailure=false,video=false,baseUrl=http://localhost:3000/mobile/mobile-app/generated-tests/ browser: chrome spec: cypress/e2e/mobile-learn/test-challenges.js env: CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}