Conversation
Code Coverage - Backend unit tests
Test suite run success3063 tests passing in 292 suites. Report generated by 🧪jest coverage report action from 8209d44 |
Code Coverage - Integration Tests
|
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
|
||
| # Nightly schedule (0 AM UTC) | ||
| schedule: | ||
| - cron: '0 0 * * *' |
There was a problem hiding this comment.
IMO, we can postpone this until we have a valuable suite, to prevent wasting resources
| uses: actions/cache@v4 | ||
| with: | ||
| path: ${{ inputs.working-directory }}/node_modules | ||
| key: e2e-node-modules-${{ runner.os }}-${{ hashFiles('tests/e2e-playwright/yarn.lock') }} |
There was a problem hiding this comment.
Cache keys ignore configurable working-directory input
Medium Severity
The cache keys for both node_modules and Playwright browsers hardcode tests/e2e-playwright/yarn.lock instead of using ${{ inputs.working-directory }}. The action accepts a configurable working-directory input and correctly uses it for the cache path and working-directory of commands, but the cache key still references the hardcoded path. If the input is ever set to a different directory, the cache would be keyed against the wrong yarn.lock file, potentially causing stale dependencies to be restored or cache misses when hits are expected.
Additional Locations (1)
| }, | ||
|
|
||
| apiHelper: async ({ apiUrl, electronApp }, use) => { | ||
| void electronApp; // Ensure Electron app is ready before making API calls |
There was a problem hiding this comment.
Electron app process leaks if initialization fails
Medium Severity
The electronApp fixture launches an Electron process at line 56, but the cleanup code at line 106 (electronApp.close()) only runs after use() completes. If any initialization code between lines 72-95 throws an exception (e.g., windowId not available, API health check fails, or timeout), the use() call is never reached and the teardown code never executes. This leaves orphaned Electron processes running. The launch and cleanup need to be wrapped in try/finally to ensure the app is closed even when initialization fails.


What
Introduces a new GitHub Actions workflow for running E2E Playwright tests across multiple environments:
The workflow is modular, using reusable workflows for each test type:
tests-e2e-playwright-v2.yml- Main orchestrationtests-e2e-playwright-chromium.yml- Chromium (Dev) teststests-e2e-playwright-docker.yml- Docker teststests-e2e-playwright-electron.yml- Electron teststests-e2e-playwright-lint.yml- Lint & type check/actions/setup-e2e-playwright/action.yml- Install and cache dependenciesTriggers:
e2e-testslabel addedOptimizations:
node_modulesand Playwright browsers via composite actionTesting
e2e-testslabel to trigger the workflow on a PRNote
Medium Risk
Mostly CI/workflow and test-harness changes, but it adds new scheduled/PR-triggered jobs and touches Electron test authentication setup, which could cause flaky runs or unexpected CI load if misconfigured.
Overview
Adds a new modular GitHub Actions Playwright E2E pipeline (
tests-e2e-playwright-v2.yml) that can run on manual dispatch, nightly schedule, or when ane2e-testslabel is added to a PR, orchestrating lint/type-check plus Chromium (dev server), Docker-image, and Linux Electron/AppImage test runs.Introduces a composite action (
setup-e2e-playwright) to install Node/Yarn deps and Playwright browsers with caching, and updates Playwright test fixtures/helpers to support Electron API auth via anX-Window-Idheader (extracted from the first Electron window) while also skipping onboarding via localStorage; updates one browser-page locator to use a stabledata-testid.Written by Cursor Bugbot for commit 8209d44. This will update automatically on new commits. Configure here.