name: Tests on: push: workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true defaults: run: shell: bash env: SDK_PAM_SUB_KEY: ${{ secrets.SDK_PAM_SUB_KEY }} SDK_PAM_PUB_KEY: ${{ secrets.SDK_PAM_PUB_KEY }} SDK_PAM_SEC_KEY: ${{ secrets.SDK_PAM_SEC_KEY }} SDK_SUB_KEY: ${{ secrets.SDK_SUB_KEY }} SDK_PUB_KEY: ${{ secrets.SDK_PUB_KEY }} jobs: tests: name: Integration and Unit tests runs-on: group: organization/Default env: NO_COVERAGE: true strategy: fail-fast: true matrix: ruby: [ 3.0.6, 3.1.4, 3.2.3 ] steps: - name: Checkout repository uses: actions/checkout@v4 with: token: ${{ secrets.GH_TOKEN }} - name: Checkout actions uses: actions/checkout@v4 with: repository: pubnub/client-engineering-deployment-tools ref: v1 token: ${{ secrets.GH_TOKEN }} path: .github/.release/actions - name: Setup Ruby ${{ matrix.ruby }} uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true - name: Build and run tests for Ruby ${{ matrix.ruby }} run: bundle exec rspec - name: Cancel workflow runs for commit on error if: failure() uses: ./.github/.release/actions/actions/utils/fast-jobs-failure acceptance-tests: name: Acceptance tests runs-on: group: organization/Default steps: - name: Checkout project uses: actions/checkout@v4 - name: Checkout mock-server action uses: actions/checkout@v4 with: repository: pubnub/client-engineering-deployment-tools ref: v1 token: ${{ secrets.GH_TOKEN }} path: .github/.release/actions - name: Run mock server action uses: ./.github/.release/actions/actions/mock-server with: token: ${{ secrets.GH_TOKEN }} - name: Setup Ruby 3.2.2 uses: ruby/setup-ruby@v1 with: ruby-version: 3.2.2 bundler-cache: true - name: Verify Ruby Version run: ruby -v - name: Check Ruby Version for Bundler run: bundle exec ruby -v - name: Run acceptance tests (optional) run: bundle exec cucumber sdk-specifications/features/ -p mock -p run_beta -p report_beta -f pretty continue-on-error: true - name: Run acceptance tests (required) run: bundle exec cucumber sdk-specifications/features/ -p mock -p run_main -p report_main -f pretty - name: Combine test results if: always() run: | sudo npm install -g junit-report-merger && jrm ./main.xml "./main/**/*.xml" && jrm ./beta.xml "./beta/**/*.xml" - name: Expose acceptance tests reports uses: actions/upload-artifact@v4 if: always() with: name: acceptance-test-reports path: | main.xml beta.xml retention-days: 7 - name: Cancel workflow runs for commit on error if: failure() uses: ./.github/.release/actions/actions/utils/fast-jobs-failure all-tests: name: Tests needs: [ tests, acceptance-tests ] runs-on: group: organization/Default steps: - name: Tests summary run: echo -e "\033[38;2;95;215;0m\033[1mAll tests successfully passed"