Raw File
ci-privileged.yml
name: CI

on:
  pull_request_target:
    types: [opened, synchronize, reopened]

concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref }}
  cancel-in-progress: true

permissions: {}

defaults:
  run:
    shell: bash

jobs:
  saucelabs:
    runs-on: ubuntu-latest-4core
    env:
      SAUCE_TUNNEL_IDENTIFIER: angular-framework-${{ github.run_number }}
      SAUCE_USERNAME: ${{ vars.SAUCE_USERNAME }}
      SAUCE_ACCESS_KEY: ${{ secrets.SAUCE_ACCESS_KEY }}
    steps:
      - name: Initialize environment
        uses: angular/dev-infra/github-actions/npm/checkout-and-setup-node@ae9155d1083fd8390e98bfe09a5ccf89f0375b52
        with:
          cache-node-modules: true
          # Checking out the pull request commit is intended here as we need to run the changed code tests.
          ref: ${{ github.event.pull_request.head.sha }}
      - name: Install node modules
        run: yarn install --frozen-lockfile
      - name: Setup Bazel
        uses: angular/dev-infra/github-actions/bazel/setup@ae9155d1083fd8390e98bfe09a5ccf89f0375b52
      - name: Starting Saucelabs tunnel service
        run: ./tools/saucelabs/sauce-service.sh run &
      # Build test fixtures for a test that rely on Bazel-generated fixtures. Note that disabling
      # specific tests which are reliant on such generated fixtures is not an option as SystemJS
      # in the Saucelabs legacy job always fetches referenced files, even if the imports would be
      # guarded by an check to skip in the Saucelabs legacy job. We should be good running such
      # test in all supported browsers on Saucelabs anyway until this job can be removed.
      - name: Preparing Bazel-generated fixtures required in legacy tests
        run: |
          yarn bazel build //packages/core/test:downleveled_es5_fixture //packages/common/locales
          # Needed for the ES5 downlevel reflector test in `packages/core/test/reflection`.
          mkdir -p dist/legacy-test-out/core/test/reflection/
          cp dist/bin/packages/core/test/reflection/es5_downleveled_inheritance_fixture.js \
            dist/legacy-test-out/core/test/reflection/es5_downleveled_inheritance_fixture.js
          # Locale files are needed for i18n tests running within Saucelabs. These are added
          # directly as sources so that the TypeScript compilation of `/packages/tsconfig.json`
          # can succeed. Note that the base locale and currencies files are checked-in, so
          # we do not need to re-generate those through Bazel.
          mkdir -p packages/common/locales/extra
          cp dist/bin/packages/common/locales/*.ts packages/common/locales
          cp dist/bin/packages/common/locales/extra/*.ts packages/common/locales/extra
      - name: Build bundle of tests to run on Saucelabs
        run: node tools/legacy-saucelabs/build-saucelabs-test-bundle.mjs
      - name: Wait and confirm Saucelabs tunnel has connected
        run: ./tools/saucelabs/sauce-service.sh ready-wait
        timeout-minutes: 3
      - name: Running tests on Saucelabs.
        run: KARMA_WEB_TEST_MODE=SL_REQUIRED yarn karma start ./karma-js.conf.js --single-run
      - name: Stop Saucelabs tunnel service
        run: ./tools/saucelabs/sauce-service.sh stop
back to top