From 5504a4ea745b28dafda50cfdecebbc1a86145da2 Mon Sep 17 00:00:00 2001 From: allison-truhlar Date: Tue, 20 Jan 2026 11:11:03 -0500 Subject: [PATCH 1/5] ci(gh actions): streamline build workflow and add caching --- .github/workflows/build.yml | 90 +++++++++++++++++-------------------- 1 file changed, 40 insertions(+), 50 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d70171c1..ce890f2b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,10 +12,13 @@ concurrency: cancel-in-progress: true jobs: - build: - name: Build + build-and-test: + name: Build and Test runs-on: ubuntu-latest + env: + PLAYWRIGHT_BROWSERS_PATH: ${{ github.workspace }}/pw-browsers + steps: - name: Checkout uses: actions/checkout@v4 @@ -24,12 +27,33 @@ jobs: uses: prefix-dev/setup-pixi@v0.9.1 with: pixi-version: v0.55.0 - cache: false + cache: true manifest-path: pyproject.toml + - name: Cache node modules + uses: actions/cache@v4 + with: + path: | + frontend/node_modules + frontend/ui-tests/node_modules + key: ${{ runner.os }}-node-${{ hashFiles('frontend/package.json', 'frontend/ui-tests/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-node- + + - name: Cache Playwright browsers + uses: actions/cache@v4 + with: + path: ${{ github.workspace }}/pw-browsers + key: ${{ runner.os }}-playwright-${{ hashFiles('frontend/ui-tests/yarn.lock') }} + - name: Install dependencies run: | pixi run dev-install + pixi run node-install-ui-tests + + - name: Install Playwright browser + run: npx playwright install chromium + working-directory: frontend/ui-tests - name: Lint run: | @@ -46,6 +70,19 @@ jobs: set -eux pixi run test-backend + - name: Execute integration tests + run: | + pixi run test-ui + + - name: Upload Playwright Test report + if: ${{ !cancelled() }} + uses: actions/upload-artifact@v4 + with: + name: fileglancer-playwright-tests + path: | + frontend/ui-tests/test-results + frontend/ui-tests/playwright-report + - name: Build the frontend run: | set -eux @@ -63,53 +100,6 @@ jobs: path: dist/fileglancer* if-no-files-found: error - integration-tests: - name: Integration tests - runs-on: ubuntu-latest - - env: - PLAYWRIGHT_BROWSERS_PATH: ${{ github.workspace }}/pw-browsers - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Install pixi - uses: prefix-dev/setup-pixi@v0.9.1 - with: - pixi-version: v0.55.0 - cache: false - manifest-path: pyproject.toml - - - name: Install dependencies - run: | - pixi run dev-install - pixi run node-install-ui-tests - - - name: Install browser - run: npx playwright install chromium - working-directory: frontend/ui-tests - - - name: Set up browser cache - uses: actions/cache@v4 - with: - path: | - ${{ github.workspace }}/pw-browsers - key: ${{ runner.os }}-${{ hashFiles('frontend/ui-tests/yarn.lock') }} - - - name: Execute integration tests - run: | - pixi run test-ui - - - name: Upload Playwright Test report - if: ${{ !cancelled() }} - uses: actions/upload-artifact@v4 - with: - name: fileglancer-playwright-tests - path: | - frontend/ui-tests/test-results - frontend/ui-tests/playwright-report - check_links: name: Check README links runs-on: ubuntu-latest From 7c6bc87a2343a4769702009dc73cfa3239a57d32 Mon Sep 17 00:00:00 2001 From: allison-truhlar Date: Tue, 20 Jan 2026 11:21:36 -0500 Subject: [PATCH 2/5] chore: update pixi version --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ce890f2b..e9de897e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,7 +26,7 @@ jobs: - name: Install pixi uses: prefix-dev/setup-pixi@v0.9.1 with: - pixi-version: v0.55.0 + pixi-version: v0.63.2 cache: true manifest-path: pyproject.toml From 52cfbc8d60853f3b525f957d4e9279e504986b6d Mon Sep 17 00:00:00 2001 From: allison-truhlar Date: Tue, 20 Jan 2026 11:21:52 -0500 Subject: [PATCH 3/5] chore: prettier formatting --- .github/workflows/build.yml | 160 ++++++++++++++++++------------------ 1 file changed, 80 insertions(+), 80 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e9de897e..d796af20 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -5,7 +5,7 @@ on: push: branches: main pull_request: - branches: '*' + branches: "*" concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} @@ -20,85 +20,85 @@ jobs: PLAYWRIGHT_BROWSERS_PATH: ${{ github.workspace }}/pw-browsers steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Install pixi - uses: prefix-dev/setup-pixi@v0.9.1 - with: - pixi-version: v0.63.2 - cache: true - manifest-path: pyproject.toml - - - name: Cache node modules - uses: actions/cache@v4 - with: - path: | - frontend/node_modules - frontend/ui-tests/node_modules - key: ${{ runner.os }}-node-${{ hashFiles('frontend/package.json', 'frontend/ui-tests/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node- - - - name: Cache Playwright browsers - uses: actions/cache@v4 - with: - path: ${{ github.workspace }}/pw-browsers - key: ${{ runner.os }}-playwright-${{ hashFiles('frontend/ui-tests/yarn.lock') }} - - - name: Install dependencies - run: | - pixi run dev-install - pixi run node-install-ui-tests - - - name: Install Playwright browser - run: npx playwright install chromium - working-directory: frontend/ui-tests - - - name: Lint - run: | - set -eux - pixi run node-prettier-write && pixi run node-prettier-check && pixi run node-eslint-check - - - name: Test the frontend - run: | - set -eux - pixi run test-frontend - - - name: Test the backend - run: | - set -eux - pixi run test-backend - - - name: Execute integration tests - run: | - pixi run test-ui - - - name: Upload Playwright Test report - if: ${{ !cancelled() }} - uses: actions/upload-artifact@v4 - with: - name: fileglancer-playwright-tests - path: | - frontend/ui-tests/test-results - frontend/ui-tests/playwright-report - - - name: Build the frontend - run: | - set -eux - pixi run node-build - - - name: Package the app - run: | - set -eux - pixi run pypi-build - - - name: Upload package to GH - uses: actions/upload-artifact@v4 - with: - name: extension-artifacts - path: dist/fileglancer* - if-no-files-found: error + - name: Checkout + uses: actions/checkout@v4 + + - name: Install pixi + uses: prefix-dev/setup-pixi@v0.9.1 + with: + pixi-version: v0.63.2 + cache: true + manifest-path: pyproject.toml + + - name: Cache node modules + uses: actions/cache@v4 + with: + path: | + frontend/node_modules + frontend/ui-tests/node_modules + key: ${{ runner.os }}-node-${{ hashFiles('frontend/package.json', 'frontend/ui-tests/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-node- + + - name: Cache Playwright browsers + uses: actions/cache@v4 + with: + path: ${{ github.workspace }}/pw-browsers + key: ${{ runner.os }}-playwright-${{ hashFiles('frontend/ui-tests/yarn.lock') }} + + - name: Install dependencies + run: | + pixi run dev-install + pixi run node-install-ui-tests + + - name: Install Playwright browser + run: npx playwright install chromium + working-directory: frontend/ui-tests + + - name: Lint + run: | + set -eux + pixi run node-prettier-write && pixi run node-prettier-check && pixi run node-eslint-check + + - name: Test the frontend + run: | + set -eux + pixi run test-frontend + + - name: Test the backend + run: | + set -eux + pixi run test-backend + + - name: Execute integration tests + run: | + pixi run test-ui + + - name: Upload Playwright Test report + if: ${{ !cancelled() }} + uses: actions/upload-artifact@v4 + with: + name: fileglancer-playwright-tests + path: | + frontend/ui-tests/test-results + frontend/ui-tests/playwright-report + + - name: Build the frontend + run: | + set -eux + pixi run node-build + + - name: Package the app + run: | + set -eux + pixi run pypi-build + + - name: Upload package to GH + uses: actions/upload-artifact@v4 + with: + name: extension-artifacts + path: dist/fileglancer* + if-no-files-found: error check_links: name: Check README links From 9f44138da3ce2514894023947f88d30274073603 Mon Sep 17 00:00:00 2001 From: allison-truhlar Date: Tue, 20 Jan 2026 11:31:49 -0500 Subject: [PATCH 4/5] wip(ci): add caching but move back to parallel actions --- .github/workflows/build.yml | 93 ++++++++++++++++++++++++------------- 1 file changed, 60 insertions(+), 33 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d796af20..2189dcd0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,13 +12,10 @@ concurrency: cancel-in-progress: true jobs: - build-and-test: - name: Build and Test + build: + name: Build runs-on: ubuntu-latest - env: - PLAYWRIGHT_BROWSERS_PATH: ${{ github.workspace }}/pw-browsers - steps: - name: Checkout uses: actions/checkout@v4 @@ -33,27 +30,14 @@ jobs: - name: Cache node modules uses: actions/cache@v4 with: - path: | - frontend/node_modules - frontend/ui-tests/node_modules - key: ${{ runner.os }}-node-${{ hashFiles('frontend/package.json', 'frontend/ui-tests/yarn.lock') }} + path: frontend/node_modules + key: ${{ runner.os }}-node-${{ hashFiles('frontend/package.json', 'frontend/yarn.lock') }} restore-keys: | ${{ runner.os }}-node- - - name: Cache Playwright browsers - uses: actions/cache@v4 - with: - path: ${{ github.workspace }}/pw-browsers - key: ${{ runner.os }}-playwright-${{ hashFiles('frontend/ui-tests/yarn.lock') }} - - name: Install dependencies run: | pixi run dev-install - pixi run node-install-ui-tests - - - name: Install Playwright browser - run: npx playwright install chromium - working-directory: frontend/ui-tests - name: Lint run: | @@ -70,19 +54,6 @@ jobs: set -eux pixi run test-backend - - name: Execute integration tests - run: | - pixi run test-ui - - - name: Upload Playwright Test report - if: ${{ !cancelled() }} - uses: actions/upload-artifact@v4 - with: - name: fileglancer-playwright-tests - path: | - frontend/ui-tests/test-results - frontend/ui-tests/playwright-report - - name: Build the frontend run: | set -eux @@ -100,6 +71,62 @@ jobs: path: dist/fileglancer* if-no-files-found: error + integration-tests: + name: Integration tests + runs-on: ubuntu-latest + + env: + PLAYWRIGHT_BROWSERS_PATH: ${{ github.workspace }}/pw-browsers + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install pixi + uses: prefix-dev/setup-pixi@v0.9.1 + with: + pixi-version: v0.63.2 + cache: true + manifest-path: pyproject.toml + + - name: Cache node modules + uses: actions/cache@v4 + with: + path: | + frontend/node_modules + frontend/ui-tests/node_modules + key: ${{ runner.os }}-node-${{ hashFiles('frontend/package.json', 'frontend/ui-tests/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-node- + + - name: Cache Playwright browsers + uses: actions/cache@v4 + with: + path: ${{ github.workspace }}/pw-browsers + key: ${{ runner.os }}-playwright-${{ hashFiles('frontend/ui-tests/yarn.lock') }} + + - name: Install dependencies + run: | + pixi run dev-install + pixi run node-install-ui-tests + + - name: Install Playwright browser + run: npx playwright install chromium + working-directory: frontend/ui-tests + + - name: Execute integration tests + run: | + pixi run test-ui + + - name: Upload Playwright Test report + if: ${{ !cancelled() }} + uses: actions/upload-artifact@v4 + with: + name: fileglancer-playwright-tests + path: | + frontend/ui-tests/test-results + frontend/ui-tests/playwright-report + check_links: name: Check README links runs-on: ubuntu-latest From abd74e6fc418af5975ac0c1289fb9356fe329975 Mon Sep 17 00:00:00 2001 From: allison-truhlar Date: Tue, 20 Jan 2026 11:44:20 -0500 Subject: [PATCH 5/5] wip(ci): run frontend and backend tests in parallel --- .github/workflows/build.yml | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2189dcd0..66d62ea4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -44,15 +44,12 @@ jobs: set -eux pixi run node-prettier-write && pixi run node-prettier-check && pixi run node-eslint-check - - name: Test the frontend + - name: Test frontend and backend in parallel run: | set -eux - pixi run test-frontend - - - name: Test the backend - run: | - set -eux - pixi run test-backend + pixi run test-frontend & + pixi run test-backend & + wait - name: Build the frontend run: | @@ -72,7 +69,7 @@ jobs: if-no-files-found: error integration-tests: - name: Integration tests + name: Integration Tests runs-on: ubuntu-latest env: