# Copyright (c) HashiCorp, Inc. # SPDX-License-Identifier: MPL-2.0 name: Nightly Frontend Test 1.19.x on: schedule: - cron: '0 4 * * *' workflow_dispatch: {} env: EMBER_PARTITION_TOTAL: 4 # Has to be changed in tandem with the matrix.partition BRANCH: "release/1.19.x" BRANCH_NAME: "release-1.19.x" # Used for naming artifacts GOPRIVATE: github.com/hashicorp # Required for enterprise deps jobs: check-ent: runs-on: ubuntu-latest if: ${{ endsWith(github.repository, '-enterprise') }} steps: - run: echo "Building Enterprise" frontend-test-workspace-node: runs-on: ubuntu-latest needs: [ check-ent ] steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 with: ref: ${{ env.BRANCH }} # Not necessary to use yarn, but enables caching - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: 18 cache: 'yarn' cache-dependency-path: ./ui/yarn.lock - name: Install id: install working-directory: ./ui run: make deps - name: Workspace Tests id: workspace-test working-directory: ./ui run: make test-workspace - name: Node Tests id: node-test working-directory: ./ui/packages/consul-ui run: make test-node frontend-build-ce: runs-on: ubuntu-latest needs: [ check-ent ] env: JOBS: 2 CONSUL_NSPACES_ENABLED: 0 steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 with: ref: ${{ env.BRANCH }} # Not necessary to use yarn, but enables caching - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: 18 cache: 'yarn' cache-dependency-path: ./ui/yarn.lock - name: Install id: install working-directory: ./ui run: make deps - name: Ember Build CE id: build-ce working-directory: ./ui/packages/consul-ui run: make build-ci - name: Upload CE Frontend uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 with: name: frontend-ce-${{ env.BRANCH_NAME }} path: ./ui/packages/consul-ui/dist if-no-files-found: error frontend-test-ce: runs-on: ubuntu-latest needs: [frontend-build-ce] strategy: matrix: partition: [ 1, 2, 3, 4 ] env: CONSUL_NSPACES_ENABLED: 0 EMBER_TEST_REPORT: test-results/report-ce.xml #outputs test report for CI test summary EMBER_TEST_PARALLEL: true #enables test parallelization with ember-exam steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 with: ref: ${{ env.BRANCH }} # Not necessary to use yarn, but enables caching - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: 18 cache: 'yarn' cache-dependency-path: ./ui/yarn.lock - name: Install id: install working-directory: ./ui run: make deps - name: Download CE Frontend uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 with: name: frontend-ce-${{ env.BRANCH_NAME }} path: ./ui/packages/consul-ui/dist - name: Ember Test CE id: cache working-directory: ./ui/packages/consul-ui run: node_modules/.bin/ember exam --split=$EMBER_PARTITION_TOTAL --partition=${{ matrix.partition }} --path dist --silent -r xunit frontend-build-ent: runs-on: ubuntu-latest needs: [ check-ent ] env: JOBS: 2 CONSUL_NSPACES_ENABLED: 1 steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 with: ref: ${{ env.BRANCH }} # Not necessary to use yarn, but enables caching - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: 18 cache: 'yarn' cache-dependency-path: ./ui/yarn.lock - name: Install id: install working-directory: ./ui run: make deps - name: Ember Build ENT id: build-ce working-directory: ./ui/packages/consul-ui run: make build-ci - name: Upload ENT Frontend uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 with: name: frontend-ent-${{ env.BRANCH_NAME }} path: ./ui/packages/consul-ui/dist if-no-files-found: error frontend-test-ent: runs-on: ubuntu-latest needs: [frontend-build-ent] strategy: matrix: partition: [ 1, 2, 3, 4 ] env: CONSUL_NSPACES_ENABLED: 1 EMBER_TEST_REPORT: test-results/report-ce.xml #outputs test report for CI test summary EMBER_TEST_PARALLEL: true #enables test parallelization with ember-exam steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 with: ref: ${{ env.BRANCH }} # Not necessary to use yarn, but enables caching - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: 18 cache: 'yarn' cache-dependency-path: ./ui/yarn.lock - name: Install id: install working-directory: ./ui run: make deps - name: Download ENT Frontend uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 with: name: frontend-ent-${{ env.BRANCH_NAME }} path: ./ui/packages/consul-ui/dist - name: Ember Test ENT id: cache working-directory: ./ui/packages/consul-ui run: node_modules/.bin/ember exam --split=$EMBER_PARTITION_TOTAL --partition=${{ matrix.partition }} --path dist --silent -r xunit frontend-test-coverage-ent: runs-on: ubuntu-latest needs: [frontend-build-ent] steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 with: ref: ${{ env.BRANCH }} # Not necessary to use yarn, but enables caching - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: node-version: 18 cache: 'yarn' cache-dependency-path: ./ui/yarn.lock - name: Install id: install working-directory: ./ui run: make deps - name: Download ENT Frontend uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 with: name: frontend-ent-${{ env.BRANCH_NAME }} path: ./ui/packages/consul-ui/dist - name: Run ENT Code Coverage working-directory: ./ui/packages/consul-ui run: make test-coverage-ci slack-failure-notification: runs-on: ubuntu-latest needs: [frontend-test-ce, frontend-test-ent] if: ${{ failure() }} steps: - name: Slack Notification id: slack uses: slackapi/slack-github-action@70cd7be8e40a46e8b0eced40b0de447bdb42f68e # v1.26.0 with: payload: | { "message": "One or more nightly UI tests have failed on branch ${{ env.BRANCH }} for Consul. ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" } env: SLACK_WEBHOOK_URL: ${{ secrets.CONSUL_UI_SLACK_WEBHOOK }}