Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Firefox support #1359

Merged
merged 474 commits into from
Feb 6, 2020
Merged

Add Firefox support #1359

merged 474 commits into from
Feb 6, 2020

Conversation

chrisbreiding
Copy link
Contributor

@chrisbreiding chrisbreiding commented Feb 21, 2018

User facing changelog

Cypress now support running tests in Firefox.

Additional details

Tasks

  • fix memory issues causing certain specs to crash firefox in CI
  • fix cross-origin object errors when printing window objects
  • fix not setting selected broswer with browser launch arg not a bug, only sets default browser when setting custom browser
  • wait until merge Fix async timeouts #5097
  • add video codecs to docker image to play mp4s (failing e2e/video_spec)
  • wait on fix for handling chrome76+ page load events handle navigation events throughout page lifecycle #5595
  • add video recording, so we can run e2e tests
  • find cause of size increase in final binary, fix it, unbump max size in zip.coffee
  • fix firefox icon in desktop gui
  • add warning message for chromeWebSecurity: false when running firefox (desktop gui, terminal reporter)
  • merge Cypress.isBrowser and Cypress.isBrowserType
    • update docs for Cypress.isBrowser
  • add firefox headless Firefox headless #6336

How has the user experience changed?

beta flag for initial release:

beta-label
beta-info

chromeWebSecurity warning (desktop-gui):

chromewebsecurity-warn

before:browser:launch warning (desktop-gui):

desktopgui-plugin-event warning

warnings in run mode:

terminal-plugin-and-websecurity warning

forced GC warning

TODO: add screenshot of forced GC warning

PR Tasks

Additional testing @bahmutov

later can add

@chrisbreiding chrisbreiding self-assigned this Feb 21, 2018
@jennifer-shehane jennifer-shehane changed the title Add Firefox support WIP: Add Firefox support May 15, 2018
@kuceb

This comment has been minimized.

@DevSide

This comment has been minimized.

@kuceb

This comment has been minimized.

@cypress
Copy link

cypress bot commented Aug 29, 2019



Test summary

6863 0 97 0


Run details

Project cypress
Status Passed
Commit 90f9fe0
Started Feb 6, 2020 4:15 AM
Ended Feb 6, 2020 4:21 AM
Duration 06:13 💡
OS Linux Debian - 9.11
Browser Multiple

View run in Cypress Dashboard ➡️


This comment has been generated by cypress-bot as a result of this project's GitHub integration settings. You can manage this integration in this project's settings in the Cypress Dashboard

@kuceb kuceb force-pushed the issue-1096-firefox-support branch from edbb977 to 38338d8 Compare August 30, 2019 15:11
@kuceb kuceb mentioned this pull request Sep 3, 2019
@digitarald
Copy link

@bkucera I got new from Twitter that this work picked up again, amazing to see it 🤩! Developers I talk to love Cypress and keep apologizing to me in conversations for not testing Firefox.

Since I work on Developer Experiences team at Firefox I be would be happy to chat and to help with any questions, bugs or feature requests.

@kuceb kuceb self-assigned this Sep 26, 2019
@kuceb kuceb mentioned this pull request Sep 27, 2019
8 tasks
@flotwig flotwig mentioned this pull request Oct 4, 2019
4 tasks
@holsted
Copy link

holsted commented Oct 10, 2019

Is this still a priority @chrisbreiding @bkucera? last commit is pretty old...

@joshsleeper
Copy link

the last commit is pretty old

They seem to have been working on it in bursts, but even still September 24th hardly feels "pretty old".
¯\_(ツ)_/¯

image

@kuceb
Copy link
Contributor

kuceb commented Oct 10, 2019

@joshsleeper @andrewholsted 2 weeks is 6 months in javascript-years, but yes I have been busy with 3.5 release. This PR is very close

@kuceb kuceb changed the title WIP: Add Firefox support [WIP] Add Firefox support Oct 18, 2019
@digitarald digitarald mentioned this pull request Oct 20, 2019
11 tasks
@@ -64,6 +64,7 @@ declare namespace Cypress {
path: string
isHeaded: boolean
isHeadless: boolean
family: string
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

don't we already define this interface inside of packages/launcher? or somewhere else?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

probably because there is no clean way to share code between packages and this - a lot of types are duplicated because of that. it would be nice to revisit how we do types to untangle this mess.

Copy link
Member

@brian-mann brian-mann left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

overall pretty damn good.

i didn't leave comments on a lot of uncommented code since i know it's still WIP

packages/driver/src/dom/elements.ts Outdated Show resolved Hide resolved
Comment on lines +1 to +5
{
"globals": {
"Cypress": true
}
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is code smell needing to pull in globals - i get the challenge - you want DOM utils to be stateless, and avoid DI or instantiation but there's probably a middle ground here we can facilitate

@@ -36,6 +36,15 @@ const attachMouseDblclickListeners = attachListeners(['dblclick'])
const attachContextmenuListeners = attachListeners(['contextmenu'])
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why are there so many lines changed in this file... ?

packages/driver/test/cypress/integration/cy/timers_spec.js Outdated Show resolved Hide resolved
.should('have.focus')

if (Cypress.browser.family === 'firefox') {
cy.wait(0).get('@selectionchange').should('be.called')
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

whys this necessary?

all of these conditionals need a comment else its completely unclear and opaque why its being done

packages/extension/app/background.coffee Outdated Show resolved Hide resolved
packages/server/lib/browsers/index.coffee Outdated Show resolved Hide resolved
packages/server/package.json Outdated Show resolved Hide resolved
packages/server/package.json Outdated Show resolved Hide resolved
packages/driver/src/cy/chai/inspect.js Outdated Show resolved Hide resolved
@serdaryesilmurat

This comment has been minimized.

@digitarald
Copy link

❤️ the commit velocity in this pull request. I saw that you are working around a few issues already. If you hit any blockers in Firefox, let me know and I can help solve them.

flotwig and others added 4 commits February 5, 2020 16:25
@jennifer-shehane
Copy link
Member

@JenniferFuBook We're working overtime to get this out, as can be seen by our commits in this branch. So, please be patient, fixing a few remaining bugs. 🙏

@cypress-io cypress-io locked as off-topic and limited conversation to collaborators Feb 6, 2020
Copy link
Contributor

@flotwig flotwig left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🥇

@kuceb kuceb merged commit d76123b into v4.0-release Feb 6, 2020
@flotwig flotwig deleted the issue-1096-firefox-support branch January 24, 2022 18:16
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.