Skip to main content

Browser Support

TestFly runs on Chrome, Edge, Firefox and Safari. Most features use only WebDriver and JavaScript and behave the same everywhere. A few need the Chrome DevTools Protocol (CDP), which Selenium offers only when TestFly starts Chrome or Edge locally. On any other driver those features degrade, and each logs one warning per browser session that names what changed.

CDP is not available on remote drivers

A browser on Selenium Grid, BrowserStack or Sauce Labs is driven through a RemoteWebDriver, which has no DevTools connection in TestFly today. That is true even when the remote browser is Chrome.

What works where​

FeatureLocal Chrome / EdgeFirefox, SafariRemote (Grid, cloud)
Locators, actions, actionability, waitsFullFullFull
Assertions, ARIA snapshotsFullFullFull
Step traces, screenshotsFullFullFull
Accessibility scans (axe-core)FullFullFull
Network mocking, network.blockUrls, NetworkAssertFullNot available. Routes are ignored and requests reach the real network. NetworkAssert fails.Not available
Video recordingDevTools screencastPeriodic screenshots, so frames are less frequentPeriodic screenshots
DeviceEmulatorFull: viewport, pixel ratio, touch, user agent, kept across navigationResizes the window and overrides navigator.userAgent in the current page. Lost on navigation.Same as Firefox
GeoLocationFullOverridden in the current page only. Lost on navigation.Same as Firefox
Clock mockingSurvives refresh and navigationCurrent page onlyCurrent page only
Console errorsThe browser log: errors raised while a page loads and on pages reached by a link are caughtOnly console.error calls made after the test called open(). Errors raised while a page loads, uncaught exceptions and pages reached by a link are missed. With browser.bidi: true on Firefox they are caught; Safari has no BiDi.Not verified
Performance LCP and CLSFullReported as -1, assertions are skippedNot verified

"Full" for Chrome and Edge, and the console error row, were checked against a real browser in the project's integration tests. The Firefox, Safari and remote columns come from the source and have not been run against those browsers by the project, apart from the experimental Firefox job described below.

What this means for your tests​

  • If a test relies on a network mock, run it on local Chrome or Edge. On other browsers the mock is silently absent, so the test talks to the real backend.
  • On Firefox and Safari, failOnConsoleErrors can pass although the page raised errors while it loaded.
  • Where a feature falls back, a warning like this appears once per browser session:
[TestFly] NETWORK_MOCK is degraded on FirefoxDriver: Network mocking, URL blocking and network
assertions are not available; routes are ignored and requests reach the real network.

Testing on several browsers​

browser.matrix runs the suite once per listed browser. The project's own CI runs its browser integration tests on Chrome, and on Firefox as an experimental job: it can fail without failing the build, so you can see where Firefox differs. To reproduce it locally:

mvn verify -Preal-backends -Dtestfly.config=src/test/resources/testfly-real-backends-firefox.yml \
-Dit.test=ConsoleErrorIntegrationTest

Device emulation tip​

DeviceEmulator on Chrome sets a mobile viewport. A page without <meta name="viewport" content="width=device-width"> is laid out at 980 pixels, as on a real phone, so window.innerWidth is 980 rather than the device width.