diff --git a/.github/workflows/coverage_browser_tests.yml b/.github/workflows/coverage_browser_tests.yml new file mode 100644 index 000000000..7cdee9103 --- /dev/null +++ b/.github/workflows/coverage_browser_tests.yml @@ -0,0 +1,99 @@ +name: Coverage (Browser tests) +on: + push: + paths: + - 'gulpfile.mjs' + - 'external/builder/**' + - 'src/**' + - 'test/images/**' + - 'test/pdfs/**' + - 'test/resources/**' + - 'test/*.css' + - 'test/driver.js' + - 'test/test.mjs' + - 'test/test_manifest.json' + - 'test/test_slave.html' + - 'web/**' + - '.github/workflows/coverage_browser_tests.yml' + branches: + - master + pull_request: + paths: + - 'gulpfile.mjs' + - 'external/builder/**' + - 'src/**' + - 'test/images/**' + - 'test/pdfs/**' + - 'test/resources/**' + - 'test/*.css' + - 'test/driver.js' + - 'test/test.mjs' + - 'test/test_manifest.json' + - 'test/test_slave.html' + - 'web/**' + - '.github/workflows/coverage_browser_tests.yml' + branches: + - master + workflow_dispatch: +permissions: + contents: read + +jobs: + test: + name: ${{ matrix.os }} / firefox + + strategy: + fail-fast: false + matrix: + node-version: [lts/*] + os: [ubuntu-latest] + + 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 + + - name: Run browser tests with code coverage + run: npx gulp botbrowsertest --headless -j$(nproc) --coverage --coverage-output build/coverage/browser --noChrome + + - 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@e79a6962e0d4c0c17b229090214935d2e33f8354 # v6.0.1 + with: + token: ${{ secrets.CODECOV_TOKEN }} + fail_ci_if_error: true + files: ./build/coverage/browser/lcov.info + flags: browsertest + name: codecov-umbrella + disable_search: true + disable_telem: true + verbose: true