Chrome (non-gating) #20
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: Chrome (non-gating) | |
| # Chrome on GitHub's Ubuntu runners intermittently drops clicks against this | |
| # application: WebDriver accepts the click, the page never receives it, and | |
| # three retries in a row fail. The same commit is green on Chrome locally | |
| # (repeatedly, headless and headed) and green on Firefox on this same runner. | |
| # | |
| # Four things were tried and did not fix it — fewer parallel threads, a | |
| # hit-test and layout-stability probe before each click, a verified-click retry | |
| # loop, and running headed under Xvfb. The verified-click retry stays in the | |
| # framework because it turns a silent wrong result into a clear failure message. | |
| # | |
| # Rather than leave a red badge on work that passes everywhere else, Chrome runs | |
| # here: scheduled and on demand, reported, and not gating. The README documents | |
| # the full investigation under "An open finding". | |
| on: | |
| schedule: | |
| # Nightly, an hour after the gating suite. | |
| - cron: '30 19 * * *' | |
| workflow_dispatch: | |
| inputs: | |
| suite: | |
| description: 'TestNG suite to run' | |
| type: choice | |
| default: testng.xml | |
| options: [testng.xml, testng-smoke.xml] | |
| headless: | |
| description: 'Run headless' | |
| type: boolean | |
| default: true | |
| permissions: | |
| contents: read | |
| jobs: | |
| chrome: | |
| name: Chrome | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: '17' | |
| cache: maven | |
| - name: Record the browser and driver versions | |
| run: | | |
| google-chrome --version || true | |
| # Selenium Manager resolves the driver, so the pair it actually picks | |
| # is worth recording: a patch-level drift between Chrome and | |
| # chromedriver was one of the hypotheses investigated. | |
| echo "Selenium Manager will resolve chromedriver at run time." | |
| - name: Run the suite | |
| run: | | |
| ./mvnw -B test \ | |
| -Dsuite=${{ inputs.suite || 'testng.xml' }} \ | |
| -Dbrowser=chrome \ | |
| -Dheadless=${{ inputs.headless == null && 'true' || inputs.headless }} \ | |
| -Dthreads=2 | |
| - name: Upload Allure results | |
| if: ${{ !cancelled() }} | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: allure-results-chrome | |
| path: target/allure-results | |
| retention-days: 7 | |
| - name: Upload Surefire reports | |
| if: failure() | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: surefire-reports-chrome | |
| path: target/surefire-reports | |
| retention-days: 7 |