Skip to content

[pull] main from google:main #3458

[pull] main from google:main

[pull] main from google:main #3458

name: Editor Integration Tests
on:
push:
# Only run if editor-related files changed.
paths:
- 'babel.config.cjs'
- 'karma-story-editor.config.cjs'
- 'webpack.config.cjs'
- 'webpack.config.test.cjs'
- 'packages/**/*.js'
- 'packages/**/*.cjs'
- 'packages/**/*.ts'
- 'packages/**/*.tsx'
- '**/package.json'
- 'package-lock.json'
- '__static__/**'
- '.github/workflows/tests-karma-editor.yml'
branches:
- main
- release/*
pull_request:
# Only run if editor-related files changed.
paths:
- 'babel.config.cjs'
- 'karma-story-editor.config.cjs'
- 'webpack.config.cjs'
- 'webpack.config.test.cjs'
- 'packages/**/*.js'
- 'packages/**/*.cjs'
- 'packages/**/*.ts'
- 'packages/**/*.tsx'
- '**/package.json'
- 'package-lock.json'
- '__static__/**'
- '.github/workflows/tests-karma-editor.yml'
types:
- opened
- reopened
- synchronize
- ready_for_review
permissions:
contents: read
# Cancels all previous workflow runs for pull requests that have not completed.
concurrency:
# The concurrency group contains the workflow name and the (target) branch name.
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
cancel-in-progress: true
jobs:
karma:
name: Karma (${{ matrix.shard }})
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
# We want to split up the tests into 20 parts running in parallel.
shard:
[
'1/20',
'2/20',
'3/20',
'4/20',
'5/20',
'6/20',
'7/20',
'8/20',
'9/20',
'10/20',
'11/20',
'12/20',
'13/20',
'14/20',
'15/20',
'16/20',
'17/20',
'18/20',
'19/20',
'20/20',
]
steps:
- name: Harden Runner
uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f
with:
disable-file-monitoring: true
egress-policy: block
allowed-endpoints: >
api.github.com:443
codecov.io:443
fonts.googleapis.com:443
fonts.gstatic.com:443
github.com:443
registry.npmjs.org:443
storage.googleapis.com:443
uploader.codecov.io:443
wp.stories.google:443
media3p.googleapis.com:443
stories.local:80
54.185.253.63:443
34.104.35.123:443
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- name: Setup Node
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af
with:
node-version-file: '.nvmrc'
cache: npm
# TODO: Remove need for `npm install puppeteer`.
- name: Install dependencies
run: |
npm ci
npm install puppeteer
env:
PUPPETEER_PRODUCT: chrome
# FIXME: https://github.com/googleforcreators/web-stories-wp/issues/4364
- name: Increase max number of file watchers
run: echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
- name: Get Chromium executable path
id: chromium_path
run: |
CHROMIUM=$(node -p "const puppeteer = require('puppeteer'); puppeteer.executablePath();")
echo "chromium_path=${CHROMIUM}" >> $GITHUB_ENV
- name: Run integration tests
run: |
npm run test:karma:story-editor -- --headless --viewport=1600:1000 --coverage --shard=$SHARD || \
npm run test:karma:story-editor:retry-failed -- --headless --viewport=1600:1000 --shard=$SHARD
env:
DISABLE_ERROR_BOUNDARIES: true
SHARD: ${{ matrix.shard }}
- name: Upload code coverage report
uses: codecov/codecov-action@015f24e6818733317a2da2edd6290ab26238649a
with:
file: build/logs/karma-coverage/story-editor/lcov.info
flags: karmatests
token: ${{ secrets.CODECOV_TOKEN }}