Nightly Integration Tests #899
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: Nightly Integration Tests | |
| # The full Selenide UI integration suite (everything, incl. the sample-project clone/publish tests) | |
| # on both H2 and PostgreSQL. It is heavy (~2h of test time per DB), so it does not run on every PR - | |
| # PRs run the fast "smoke-tests" job (see pull-request.yml). Runs on a nightly schedule and on | |
| # demand; the same full suite also runs on every push to master (see build.yml). Like build.yml, the | |
| # suite is sharded into four tag-selected slices (api / ui / samples / slow) that run in parallel, | |
| # so the wall-clock time is the slowest shard (~35 min), not the whole suite. build.yml carries the | |
| # description of what each shard selects; keep the two matrices identical. | |
| on: | |
| schedule: | |
| - cron: '0 2 * * *' | |
| workflow_dispatch: | |
| concurrency: | |
| group: ${{ github.workflow }} | |
| cancel-in-progress: true | |
| jobs: | |
| integration-tests-h2: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| shard: | |
| - name: api | |
| groups: "!ui & !slow" | |
| - name: ui | |
| groups: "ui & !slow & !sample & !camel" | |
| - name: samples | |
| groups: "ui & !slow & (sample | camel)" | |
| - name: slow | |
| groups: "slow" | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Cache local Maven repository | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.m2/repository | |
| key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} | |
| restore-keys: ${{ runner.os }}-maven- | |
| - name: Set up JDK Corretto 24 | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: 'corretto' | |
| java-version: '24' | |
| architecture: x64 | |
| - name: Install NodeJS | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22.x | |
| - name: Install TypeScript and esbuild | |
| run: npm install -g typescript@5.9.3 esbuild | |
| - name: Install ttyd (prebuilt) | |
| run: | | |
| sudo apt update | |
| sudo apt install -y ttyd | |
| - name: Verify ttyd installation | |
| run: ttyd --version | |
| - name: Integration tests | |
| run: mvn clean install -P integration-tests -Dit.groups='${{ matrix.shard.groups }}' | |
| - name: Generate a random artifact name | |
| if: always() | |
| id: generate_name | |
| run: | | |
| TIMESTAMP=$(date +"%Y%m%d_%H%M%S") | |
| echo "ARTIFACT_NAME=selenide-screenshots-h2-${{ matrix.shard.name }}-${TIMESTAMP}.zip" >> $GITHUB_ENV | |
| - name: Upload selenide screenshots | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| retention-days: 3 | |
| name: ${{ env.ARTIFACT_NAME }} | |
| path: tests/tests-integrations/build/reports/tests | |
| integration-tests-postgresql: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| shard: | |
| - name: api | |
| groups: "!ui & !slow" | |
| - name: ui | |
| groups: "ui & !slow & !sample & !camel" | |
| - name: samples | |
| groups: "ui & !slow & (sample | camel)" | |
| - name: slow | |
| groups: "slow" | |
| timeout-minutes: 60 | |
| env: | |
| POSTGRES_DB: testdb | |
| POSTGRES_USER: testuser | |
| POSTGRES_PASS: testpass | |
| services: | |
| postgres: | |
| image: postgres:16 | |
| ports: | |
| - 5432:5432 | |
| env: | |
| POSTGRES_DB: ${{ env.POSTGRES_DB }} | |
| POSTGRES_USER: ${{ env.POSTGRES_USER }} | |
| POSTGRES_PASSWORD: ${{ env.POSTGRES_PASS }} | |
| options: >- | |
| --health-cmd pg_isready | |
| --health-interval 10s | |
| --health-timeout 5s | |
| --health-retries 5 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Cache local Maven repository | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.m2/repository | |
| key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} | |
| restore-keys: ${{ runner.os }}-maven- | |
| - name: Set up JDK Corretto 24 | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: 'corretto' | |
| java-version: '24' | |
| architecture: x64 | |
| - name: Install NodeJS | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22.x | |
| - name: Install TypeScript and esbuild | |
| run: npm install -g typescript@5.9.3 esbuild | |
| - name: Install ttyd (prebuilt) | |
| run: | | |
| sudo apt update | |
| sudo apt install -y ttyd | |
| - name: Verify ttyd installation | |
| run: ttyd --version | |
| - name: Integration tests | |
| run: mvn clean install -P integration-tests -Dit.groups='${{ matrix.shard.groups }}' | |
| env: | |
| DIRIGIBLE_DATASOURCE_DEFAULT_DRIVER: org.postgresql.Driver | |
| DIRIGIBLE_DATASOURCE_DEFAULT_URL: jdbc:postgresql://localhost:5432/${{ env.POSTGRES_DB }} | |
| DIRIGIBLE_DATASOURCE_DEFAULT_USERNAME: ${{ env.POSTGRES_USER }} | |
| DIRIGIBLE_DATASOURCE_DEFAULT_PASSWORD: ${{ env.POSTGRES_PASS }} | |
| - name: Generate a random artifact name | |
| if: always() | |
| id: generate_name | |
| run: | | |
| TIMESTAMP=$(date +"%Y%m%d_%H%M%S") | |
| echo "ARTIFACT_NAME=selenide-screenshots-postgresql-${{ matrix.shard.name }}-${TIMESTAMP}.zip" >> $GITHUB_ENV | |
| - name: Upload selenide screenshots | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| retention-days: 3 | |
| name: ${{ env.ARTIFACT_NAME }} | |
| path: tests/tests-integrations/build/reports/tests |