mirror of
https://github.com/mozilla/pdf.js.git
synced 2026-05-31 15:21:00 +02:00
Note that for the integration tests the coverage information ends up being processed in the Node.js context where `window` is not available, so we use `globalThis` instead for the function that merges individual test's coverage information into the global object because that is available in all contexts we support. For clarity we also rename said function since we're not exclusively dealing with `window` nor worker data anymore.
105 lines
3.3 KiB
YAML
105 lines
3.3 KiB
YAML
name: Integration tests
|
|
on:
|
|
push:
|
|
paths:
|
|
- 'gulpfile.mjs'
|
|
- 'src/**'
|
|
- 'test/test.mjs'
|
|
- 'test/integration/**'
|
|
- 'web/**'
|
|
- '.github/workflows/integration_tests.yml'
|
|
branches:
|
|
- master
|
|
pull_request:
|
|
paths:
|
|
- 'gulpfile.mjs'
|
|
- 'src/**'
|
|
- 'test/test.mjs'
|
|
- 'test/integration/**'
|
|
- 'web/**'
|
|
- '.github/workflows/integration_tests.yml'
|
|
branches:
|
|
- master
|
|
workflow_dispatch:
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
test:
|
|
name: ${{ matrix.os }} / ${{ matrix.browser }}
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
node-version: [lts/*]
|
|
os: [windows-latest, ubuntu-latest]
|
|
browser: [firefox, chrome]
|
|
include:
|
|
- browser: firefox
|
|
skip: --noChrome
|
|
- browser: chrome
|
|
skip: --noFirefox
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
environment: code-coverage
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
fetch-depth: 0
|
|
persist-credentials: false
|
|
|
|
- name: Use Node.js ${{ matrix.node-version }}
|
|
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
|
with:
|
|
node-version: ${{ matrix.node-version }}
|
|
cache: 'npm'
|
|
|
|
- name: Install dependencies
|
|
run: npm ci
|
|
|
|
- name: Restore cached PDF files
|
|
uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
|
with:
|
|
path: test/pdfs/*.pdf
|
|
key: cached-pdf-files-${{ hashFiles('test/pdfs/*.pdf') }}
|
|
restore-keys: |
|
|
cached-pdf-files-
|
|
enableCrossOsArchive: true
|
|
|
|
# Note that the integration tests can't run in headless mode until bug
|
|
# 1878643 (tracked in #20918), and possibly others, have been fixed
|
|
# upstream, so we can't run with the `--headless` flag and thus have to
|
|
# configure a standard resolution for the headful browser windows.
|
|
- name: Update resolution (Windows)
|
|
if: ${{ matrix.os == 'windows-latest' }}
|
|
run: Set-DisplayResolution -Width 1920 -Height 1080 -Force
|
|
|
|
- name: Run integration tests with code coverage (Windows)
|
|
if: ${{ matrix.os == 'windows-latest' }}
|
|
run: npx gulp integrationtest --coverage --coverage-output build/coverage/integration ${{ matrix.skip }}
|
|
|
|
- name: Run integration tests with code coverage (Linux)
|
|
if: ${{ matrix.os == 'ubuntu-latest' }}
|
|
run: xvfb-run -a --server-args="-screen 0, 1920x1080x24" npx gulp integrationtest --coverage --coverage-output build/coverage/integration ${{ matrix.skip }}
|
|
|
|
- name: Save cached PDF files
|
|
uses: actions/cache/save@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
|
with:
|
|
path: test/pdfs/*.pdf
|
|
key: cached-pdf-files-${{ hashFiles('test/pdfs/*.pdf') }}
|
|
enableCrossOsArchive: true
|
|
|
|
- name: Upload results to Codecov
|
|
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
|
|
with:
|
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
fail_ci_if_error: true
|
|
files: ./build/coverage/integration/lcov.info
|
|
flags: integrationtest
|
|
name: codecov-umbrella
|
|
disable_search: true
|
|
disable_telem: true
|
|
verbose: true
|