ci: run Cypress against Chrome, Firefox, and Edge#215
Merged
Conversation
Uncomments Firefox and adds Edge to the browser matrix, expanding coverage from 2 matrix jobs to 6 (3 browsers × 2 viewports). Also fixes artifact name collision: the hardcoded "videos" name would cause upload-artifact@v4 to fail when multiple matrix jobs ran in parallel; now each job uploads to a unique name using browser + job index. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Two root causes: 1. Firefox doesn't auto-download files — it shows a Save dialog unless browser preferences are configured. Add a before:browser:launch hook in cypress.config.js that sets the Firefox download prefs to save directly to config.downloadsFolder. Fixes Menu CSV timestamp test and TemplateRoundTrip custom-column test. 2. In Firefox, cy.visit() causes the app to call /auth, which can issue a new anonymous-user token and overwrite __session with a different UID than the board owner. PATCH then fails with 403. Fix by capturing the owner's __session cookie via cy.getCookie() before the page visit and passing it explicitly as a Cookie header in the PATCH request. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Suppress Firefox's "NetworkError when attempting to fetch resource" uncaught exception, which fires for fetch calls aborted by navigation (Chrome drops these silently; they are not real test failures) - Delete stale download files before triggering a second download to the same path: Firefox deduplicates filenames (e.g. file (1).csv) rather than overwriting, so cy.readFile was always reading the old content Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Firefox sets navigator.onLine = false when the offline event is dispatched programmatically and does not reset it on page navigation. Without cleanup, Firebase auth fails in subsequent beforeEach / after hooks with auth/network-request-failed. Added afterEach to dispatch 'online', guarded the after hook the same way, and extended the uncaught:exception handler to suppress Firebase auth errors that escape during simulated-offline browser state. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Without this assertion the before hook completes as soon as the Enter keystroke fires, before the async createCard API call resolves. Any transient failure in card creation then cascades silently into all 5 tests failing with 'never found [data-name=card]:visible'. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
firefoxandedgeto the Cypress browser matrix (alongside the existingchrome), expanding CI from 2 jobs to 6 (3 browsers × 2 viewports)videosname would causeupload-artifact@v4to error when multiple matrix jobs ran in parallel; each job now uploads tovideos-{browser}-{job-index}Test plan
🤖 Generated with Claude Code