# Copyright 2026 Collate # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # http://www.apache.org/licenses/LICENSE-2.0 # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. name: playwright-search-nightly on: workflow_dispatch: permissions: contents: read concurrency: group: playwright-search-nightly-${{ github.ref }} cancel-in-progress: true jobs: playwright-search-nightly: runs-on: ubuntu-latest environment: test timeout-minutes: 45 steps: - name: Free Disk Space (Ubuntu) uses: jlumbroso/free-disk-space@main with: tool-cache: false android: true dotnet: true haskell: true large-packages: false swap-storage: true docker-images: false - name: Checkout uses: actions/checkout@v4 - name: Cache Maven Dependencies uses: actions/cache@v4 with: path: ~/.m2 key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} restore-keys: | ${{ runner.os }}-maven- - name: Setup OpenMetadata Test Environment uses: ./.github/actions/setup-openmetadata-test-environment with: python-version: '3.10' args: '-d postgresql -i false' ingestion_dependency: 'all' - name: Setup Node.js uses: actions/setup-node@v4 with: node-version-file: 'openmetadata-ui/src/main/resources/ui/.nvmrc' - name: Install dependencies working-directory: openmetadata-ui/src/main/resources/ui/ run: yarn --ignore-scripts --frozen-lockfile - name: Install Playwright Browsers run: npx playwright@1.57.0 install chromium --with-deps - name: Run Search Nightly working-directory: openmetadata-ui/src/main/resources/ui env: PLAYWRIGHT_IS_OSS: true run: | # All search tests live in playwright/e2e/Search/. The search-nightly # project in playwright.config.ts maps testMatch to **/Search/** so only # that folder is picked up. Add new search specs to that folder. npx playwright test --project=search-nightly --workers=1 - name: Upload HTML report if: always() uses: actions/upload-artifact@v4 with: name: search-nightly-html-report path: openmetadata-ui/src/main/resources/ui/playwright/output/playwright-report retention-days: 5 - name: Send Slack Notification if: always() working-directory: openmetadata-ui/src/main/resources/ui env: RUN_TITLE: "Playwright Search Nightly (${{ github.ref_name }})" RUN_URL: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" SLACK_BOT_USER_OAUTH_TOKEN: ${{ secrets.E2E_SLACK_BOT_OAUTH_TOKEN }} run: | npx playwright-slack-report -c playwright/slack-cli.config.json -j playwright/output/results.json > slack_report.json - name: Clean Up if: always() run: | cd ./docker/development docker compose down --remove-orphans sudo rm -rf ${PWD}/docker-volume