Validate skip guard #3
This file contains hidden or 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: Windows | |
| on: | |
| push: | |
| branches: [master] | |
| pull_request: | |
| workflow_dispatch: | |
| jobs: | |
| build: | |
| name: Build | |
| runs-on: windows-latest | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| - uses: actions/setup-node@3235b876344d2a9aa001b8d1453c930bba69e610 # v3.9.1 | |
| with: | |
| node-version: 14 | |
| - uses: actions/cache@f4b3439a656ba812b8cb417d2d49f9c810103092 # v3.4.0 | |
| with: | |
| path: | | |
| node_modules | |
| packages/*/node_modules | |
| packages/core/.local-chromium | |
| key: > | |
| ${{ runner.os }}/node-14/ | |
| ${{ hashFiles('.github/.cache-key') }}/ | |
| ${{ hashFiles('**/yarn.lock') }} | |
| restore-keys: > | |
| ${{ runner.os }}/node-14/ | |
| ${{ hashFiles('.github/.cache-key') }}/ | |
| - run: yarn | |
| - run: yarn build | |
| - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 | |
| with: | |
| name: dist | |
| path: packages/*/dist | |
| test: | |
| name: Test ${{ matrix.package }} | |
| needs: [build] | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| package: | |
| - '@percy/env' | |
| - '@percy/client' | |
| - '@percy/dom' | |
| - '@percy/logger' | |
| - '@percy/config' | |
| - '@percy/core' | |
| - '@percy/cli' | |
| - '@percy/cli-command' | |
| - '@percy/cli-exec' | |
| - '@percy/cli-snapshot' | |
| - '@percy/cli-upload' | |
| - '@percy/cli-build' | |
| - '@percy/cli-config' | |
| - '@percy/sdk-utils' | |
| - '@percy/webdriver-utils' | |
| - '@percy/monitoring' | |
| - '@percy/cli-doctor' | |
| runs-on: windows-latest | |
| # Collect failed node-test spec names here so retries can re-run only the | |
| # specs that flaked instead of the whole ~60-min suite. See PER-9011. | |
| # Name is deliberately non-PERCY_ so it doesn't trip env-audit tests. | |
| env: | |
| CLI_TEST_FAILURES_FILE: ${{ github.workspace }}/.cli-test-failures.json | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| - uses: actions/setup-node@3235b876344d2a9aa001b8d1453c930bba69e610 # v3.9.1 | |
| with: | |
| node-version: 14 | |
| - uses: actions/cache@f4b3439a656ba812b8cb417d2d49f9c810103092 # v3.4.0 | |
| with: | |
| path: | | |
| node_modules | |
| packages/*/node_modules | |
| packages/core/.local-chromium | |
| key: > | |
| ${{ runner.os }}/node-14/ | |
| ${{ hashFiles('.github/.cache-key') }}/ | |
| ${{ hashFiles('**/yarn.lock') }} | |
| restore-keys: > | |
| ${{ runner.os }}/node-14/ | |
| ${{ hashFiles('.github/.cache-key') }}/ | |
| - uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0 | |
| with: | |
| name: dist | |
| path: packages | |
| - run: yarn | |
| # First attempt runs the full suite and records any failed specs. | |
| - name: Run tests | |
| continue-on-error: true | |
| id: retry0 | |
| run: yarn workspace ${{ matrix.package }} test --colors | |
| # Retries re-run ONLY the specs that failed in the previous attempt | |
| # (CLI_TEST_ONLY_FAILED), so a flaky spec costs seconds, not ~60 min. | |
| - name: Run tests Retry (1/4) | |
| continue-on-error: true | |
| id: retry1 | |
| if: steps.retry0.outcome=='failure' | |
| env: | |
| CLI_TEST_ONLY_FAILED: '1' | |
| run: yarn workspace ${{ matrix.package }} test --colors | |
| - name: Run tests Retry (2/4) | |
| continue-on-error: true | |
| id: retry2 | |
| if: steps.retry1.outcome=='failure' | |
| env: | |
| CLI_TEST_ONLY_FAILED: '1' | |
| run: yarn workspace ${{ matrix.package }} test --colors | |
| - name: Run tests Retry (3/4) | |
| continue-on-error: true | |
| id: retry3 | |
| if: steps.retry2.outcome=='failure' | |
| env: | |
| CLI_TEST_ONLY_FAILED: '1' | |
| run: yarn workspace ${{ matrix.package }} test --colors | |
| - name: Run tests Retry (4/4) | |
| id: retry4 | |
| if: steps.retry3.outcome=='failure' | |
| env: | |
| CLI_TEST_ONLY_FAILED: '1' | |
| run: yarn workspace ${{ matrix.package }} test --colors | |
| # Keep "green via retry" honest: surface a warning whenever the first | |
| # attempt failed and a retry recovered it, so flakiness stays visible. | |
| - name: Flag flaky tests | |
| if: steps.retry0.outcome=='failure' | |
| run: echo "::warning title=Flaky Windows tests::${{ matrix.package }} flaked on the first attempt and was recovered by a spec-level retry (tracked in PER-9011)." |