JavaScript Tests #16842
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: JavaScript Tests | |
on: | |
# JavaScript testing was introduced in WordPress 3.8. | |
push: | |
branches: | |
- trunk | |
- '3.[89]' | |
- '[4-9].[0-9]' | |
tags: | |
- '[0-9]+.[0-9]' | |
- '[0-9]+.[0-9].[0-9]+' | |
- '!3.7.[0-9]+' | |
pull_request: | |
branches: | |
- trunk | |
- '3.[89]' | |
- '[4-9].[0-9]' | |
paths: | |
# Any change to a JavaScript file should run tests. | |
- '**.js' | |
# These files configure npm. Changes could affect the outcome. | |
- 'package*.json' | |
# This file configures ESLint. Changes could affect the outcome. | |
- '.eslintignore' | |
# This file configures JSHint. Changes could affect the outcome. | |
- '.jshintrc' | |
# Any change to the QUnit directory should run tests. | |
- 'tests/qunit/**' | |
# Changes to workflow files should always verify all workflows are successful. | |
- '.github/workflows/*.yml' | |
workflow_dispatch: | |
# Cancels all previous workflow runs for pull requests that have not completed. | |
concurrency: | |
# The concurrency group contains the workflow name and the branch name for pull requests | |
# or the commit hash for any other events. | |
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }} | |
cancel-in-progress: true | |
jobs: | |
# Runs the QUnit tests for WordPress. | |
# | |
# Performs the following steps: | |
# - Checks out the repository. | |
# - Logs debug information about the GitHub Action runner. | |
# - Installs Node.js. | |
# - Logs updated debug information. | |
# _ Installs npm dependencies. | |
# - Run the WordPress QUnit tests. | |
test-js: | |
name: QUnit Tests | |
runs-on: ubuntu-latest | |
timeout-minutes: 20 | |
if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 | |
- name: Log debug information | |
run: | | |
npm --version | |
node --version | |
git --version | |
svn --version | |
- name: Set up Node.js | |
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 | |
with: | |
node-version-file: '.nvmrc' | |
cache: npm | |
- name: Log debug information | |
run: | | |
npm --version | |
node --version | |
- name: Install Dependencies | |
run: npm ci | |
- name: Run QUnit tests | |
run: npm run grunt qunit:compiled | |
slack-notifications: | |
name: Slack Notifications | |
uses: WordPress/wordpress-develop/.github/workflows/slack-notifications.yml@trunk | |
needs: [ test-js ] | |
if: ${{ github.repository == 'WordPress/wordpress-develop' && github.event_name != 'pull_request' && always() }} | |
with: | |
calling_status: ${{ needs.test-js.result == 'success' && 'success' || needs.test-js.result == 'cancelled' && 'cancelled' || 'failure' }} | |
secrets: | |
SLACK_GHA_SUCCESS_WEBHOOK: ${{ secrets.SLACK_GHA_SUCCESS_WEBHOOK }} | |
SLACK_GHA_CANCELLED_WEBHOOK: ${{ secrets.SLACK_GHA_CANCELLED_WEBHOOK }} | |
SLACK_GHA_FIXED_WEBHOOK: ${{ secrets.SLACK_GHA_FIXED_WEBHOOK }} | |
SLACK_GHA_FAILURE_WEBHOOK: ${{ secrets.SLACK_GHA_FAILURE_WEBHOOK }} | |
failed-workflow: | |
name: Failed workflow tasks | |
runs-on: ubuntu-latest | |
needs: [ test-js, slack-notifications ] | |
if: | | |
always() && | |
github.repository == 'WordPress/wordpress-develop' && | |
github.event_name != 'pull_request' && | |
github.run_attempt < 2 && | |
( | |
needs.test-js.result == 'cancelled' || needs.test-js.result == 'failure' | |
) | |
steps: | |
- name: Dispatch workflow run | |
uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975 # v6.4.0 | |
with: | |
retries: 2 | |
retry-exempt-status-codes: 418 | |
script: | | |
github.rest.actions.createWorkflowDispatch({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
workflow_id: 'failed-workflow.yml', | |
ref: 'trunk', | |
inputs: { | |
run_id: '${{ github.run_id }}' | |
} | |
}); |