fix: investigate 1 minute query timeout #71
Workflow file for this run
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: Quality Checks | |
| on: | |
| pull_request: | |
| branches: ['**'] | |
| push: | |
| branches: [main] | |
| jobs: | |
| e2e_tests: | |
| name: Playwright Tests (${{ matrix.shard }}) | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| shard: [1, 2, 3, 4] | |
| services: | |
| backend: | |
| image: ghcr.io/ydb-platform/local-ydb:nightly | |
| ports: | |
| - 2135:2135 | |
| - 8765:8765 | |
| options: --hostname localhost -e YDB_ALLOW_ORIGIN="http://localhost:3000" | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 18 | |
| cache: npm | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Install Playwright deps | |
| run: npm run test:e2e:install | |
| - name: Run Playwright tests | |
| id: run_tests | |
| run: npx playwright test --shard ${{ matrix.shard }}/4 | |
| env: | |
| CI: true | |
| PLAYWRIGHT_VIDEO: 'on' | |
| - name: Upload Playwright artifacts | |
| if: always() | |
| uses: actions/upload-artifact@v3 | |
| with: | |
| name: playwright-artifacts-${{ matrix.shard }} | |
| path: playwright-artifacts | |
| retention-days: 5 | |
| - name: Get test results | |
| if: always() | |
| id: test-results | |
| run: | | |
| echo "Current directory: $(pwd)" | |
| echo "Listing playwright-artifacts directory:" | |
| ls -R playwright-artifacts | |
| if [ -f "playwright-artifacts/test-results.json" ]; then | |
| echo "Parsing JSON file:" | |
| total=$(jq '.stats.expected + .stats.unexpected + .stats.flaky + .stats.skipped' playwright-artifacts/test-results.json) | |
| passed=$(jq '.stats.expected' playwright-artifacts/test-results.json) | |
| failed=$(jq '.stats.unexpected' playwright-artifacts/test-results.json) | |
| flaky=$(jq '.stats.flaky' playwright-artifacts/test-results.json) | |
| skipped=$(jq '.stats.skipped' playwright-artifacts/test-results.json) | |
| echo "Parsed values:" | |
| echo "Total: $total" | |
| echo "Passed: $passed" | |
| echo "Failed: $failed" | |
| echo "Flaky: $flaky" | |
| echo "Skipped: $skipped" | |
| else | |
| echo "test-results.json file not found" | |
| total=0 | |
| passed=0 | |
| failed=0 | |
| flaky=0 | |
| skipped=0 | |
| fi | |
| echo "total=$total" >> $GITHUB_OUTPUT | |
| echo "passed=$passed" >> $GITHUB_OUTPUT | |
| echo "failed=$failed" >> $GITHUB_OUTPUT | |
| echo "flaky=$flaky" >> $GITHUB_OUTPUT | |
| echo "skipped=$skipped" >> $GITHUB_OUTPUT | |
| merge_reports: | |
| name: Merge Test Reports | |
| if: always() | |
| needs: [e2e_tests] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Download all artifacts | |
| uses: actions/download-artifact@v3 | |
| with: | |
| path: all-artifacts | |
| - name: Merge reports | |
| run: | | |
| mkdir -p merged-artifacts/playwright-report | |
| # Merge HTML reports (just copy the last one as they can't be properly merged) | |
| cp -r all-artifacts/playwright-artifacts-*/playwright-report/* merged-artifacts/playwright-report/ | |
| # Create directory for merged results | |
| mkdir -p merged-artifacts | |
| - name: Upload merged artifacts | |
| uses: actions/upload-artifact@v3 | |
| with: | |
| name: playwright-artifacts | |
| path: merged-artifacts | |
| retention-days: 5 | |
| bundle_size: | |
| name: Check Bundle Size | |
| runs-on: ubuntu-latest | |
| if: github.event_name == 'pull_request' | |
| outputs: | |
| current_size: ${{ steps.current_size.outputs.size }} | |
| main_size: ${{ steps.main_size.outputs.size }} | |
| diff: ${{ steps.size_diff.outputs.diff }} | |
| percent: ${{ steps.size_diff.outputs.percent }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 18 | |
| cache: npm | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Build bundle (current branch) | |
| run: npm run build | |
| - name: Get current bundle size | |
| id: current_size | |
| run: | | |
| size=$(du -sb build | cut -f1) | |
| echo "size=$size" >> $GITHUB_OUTPUT | |
| - name: Checkout main branch | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: main | |
| - name: Install dependencies (main) | |
| run: npm ci | |
| - name: Build bundle (main branch) | |
| run: npm run build | |
| - name: Get main bundle size | |
| id: main_size | |
| run: | | |
| size=$(du -sb build | cut -f1) | |
| echo "size=$size" >> $GITHUB_OUTPUT | |
| - name: Calculate size difference | |
| id: size_diff | |
| run: | | |
| current=${{ steps.current_size.outputs.size }} | |
| main=${{ steps.main_size.outputs.size }} | |
| diff=$((current - main)) | |
| if [ "$main" -ne "0" ]; then | |
| percent=$(awk "BEGIN {printf \"%.2f\", ($diff/$main) * 100}") | |
| else | |
| percent="N/A" | |
| fi | |
| echo "diff=$diff" >> $GITHUB_OUTPUT | |
| echo "percent=$percent" >> $GITHUB_OUTPUT | |
| deploy_report: | |
| name: Deploy Test Report | |
| needs: [merge_reports] | |
| if: always() && (github.event_name == 'push' && github.ref == 'refs/heads/main' || (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository)) | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| pages: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Fetch gh-pages branch | |
| run: | | |
| git fetch origin gh-pages:gh-pages | |
| mkdir gh-pages | |
| git --work-tree=gh-pages checkout gh-pages -- . | |
| - name: Download merged artifacts | |
| uses: actions/download-artifact@v3 | |
| with: | |
| name: playwright-artifacts | |
| path: playwright-artifacts | |
| - name: Copy new report | |
| run: | | |
| if [ "${{ github.event_name }}" = "pull_request" ]; then | |
| REPORT_DIR="${{ github.event.pull_request.number }}" | |
| else | |
| REPORT_DIR="main" | |
| fi | |
| rm -rf gh-pages/$REPORT_DIR | |
| mkdir -p gh-pages/$REPORT_DIR | |
| cp -r playwright-artifacts/playwright-report/* gh-pages/$REPORT_DIR/ | |
| # Also copy test-results.json if it exists | |
| if [ -f "playwright-artifacts/test-results.json" ]; then | |
| cp playwright-artifacts/test-results.json gh-pages/$REPORT_DIR/ | |
| fi | |
| - name: Deploy report to GitHub Pages | |
| uses: peaceiris/actions-gh-pages@v3 | |
| with: | |
| github_token: ${{ secrets.GITHUB_TOKEN }} | |
| publish_dir: gh-pages | |
| destination_dir: . | |
| force_orphan: true | |
| update_pr: | |
| name: Update PR Description | |
| needs: [e2e_tests, bundle_size] | |
| if: always() && github.event_name == 'pull_request' | |
| runs-on: ubuntu-latest | |
| permissions: | |
| pull-requests: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Download merged artifacts | |
| uses: actions/download-artifact@v3 | |
| with: | |
| name: playwright-artifacts | |
| path: playwright-artifacts | |
| - name: Fetch gh-pages branch | |
| run: | | |
| git fetch origin gh-pages:gh-pages | |
| mkdir gh-pages | |
| git --work-tree=gh-pages checkout gh-pages -- . | |
| - name: Update PR description | |
| uses: actions/github-script@v6 | |
| env: | |
| CURRENT_SIZE: ${{ needs.bundle_size.outputs.current_size }} | |
| MAIN_SIZE: ${{ needs.bundle_size.outputs.main_size }} | |
| SIZE_DIFF: ${{ needs.bundle_size.outputs.diff }} | |
| SIZE_PERCENT: ${{ needs.bundle_size.outputs.percent }} | |
| with: | |
| github-token: ${{secrets.GITHUB_TOKEN}} | |
| script: | | |
| const updatePRDescription = require('./.github/workflows/scripts/update-pr-description.js'); | |
| await updatePRDescription(github, context); |