Skip to content

ci: run Cypress against Chrome, Firefox, and Edge#215

Merged
d0x2f merged 5 commits into
masterfrom
ci/cypress-multi-browser
May 8, 2026
Merged

ci: run Cypress against Chrome, Firefox, and Edge#215
d0x2f merged 5 commits into
masterfrom
ci/cypress-multi-browser

Conversation

@d0x2f
Copy link
Copy Markdown
Owner

@d0x2f d0x2f commented May 5, 2026

Summary

  • Adds firefox and edge to the Cypress browser matrix (alongside the existing chrome), expanding CI from 2 jobs to 6 (3 browsers × 2 viewports)
  • Fixes a pre-existing artifact name collision: the hardcoded videos name would cause upload-artifact@v4 to error when multiple matrix jobs ran in parallel; each job now uploads to videos-{browser}-{job-index}

Test plan

  • CI passes on all 6 matrix jobs (chrome/firefox/edge × mobile/desktop)
  • Video artifacts are uploaded without collision errors
  • CD job still triggers correctly after all cypress jobs pass

🤖 Generated with Claude Code

d0x2f and others added 5 commits May 5, 2026 11:16
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>
@d0x2f d0x2f merged commit e68d530 into master May 8, 2026
8 checks passed
@d0x2f d0x2f deleted the ci/cypress-multi-browser branch May 8, 2026 22:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant