🎉 Introducing the Cypress Real World App—a new example app to learn, experiment, tinker, and practice application testing with Cypress.

Learn More

Cypress.isBrowser

Improve this doc

Cypress.isBrowser checks if the current browser matches the given name or filter.

Syntax

Cypress.isBrowser(matcher)
Cypress.isBrowser(matchers)
Cypress.isBrowser(filter)

Arguments

matcher (String)

The name of the browser (case-insensitive) you want to check against. Name can be prepended with a ! character to inverse the check.

matchers (Array)

An array of the names of the browsers (case-insensitive) you want to check against. Name can be prepended with a ! character to inverse the check.

filter (Object or Array)

Filter one or multiple browsers by the browser properties. You can inspect the current browser’s properties by using the Cypress.browser. Supported properties are:

Property Type Description
name string Machine-friendly name, like chrome, electron, or firefox.
family string Rendering engine being used. chromium or firefox.
channel string Release channel of the browser, such as stable, dev, or canary.
displayName string Human-readable display name for the browser.
version string Full version.
path string Path to the browser on disk. Blank for Electron.
majorVersion number The major version number of the browser.
isHeadless boolean Whether the browser is running headlessly.
isHeaded boolean Whether the browser displays headed.

Examples

Matcher

Only run command in Chrome

it('download extension link', () => {
  // true when running in Firefox
  if (Cypress.isBrowser('firefox')) {
    cy.get('#dl-extension')
      .should('contain', 'Download Firefox Extension')
  }

  // true when running in Chrome
  if (Cypress.isBrowser('chrome')) {
    cy.get('#dl-extension')
      .should('contain', 'Download Chrome Extension')
  }
})

Run command in all browsers except Chrome

it('warns to view page in Chrome browser', () => {
  // true when running in Firefox, etc...
  if (Cypress.isBrowser('!chrome')) {
    cy.get('.browser-warning')
      .should('contain', 'For optimal viewing, use Chrome browser')
  }
})

Matchers

Run commands in all specified browsers

it('colors rainbow', () => {
  // true when running in Electron or Chrome
  if (Cypress.isBrowser(['electron', 'chrome'])) {
    cy.get('.rainbox')
    .should('have.css', 'conic-gradient(red, orange, yellow, green, blue)')
  }
})

Run commands in all browsers except specified

// true when running in browser other than chrome and electron
it('does not run in Firefox and Chrome', () => {
  if (Cypress.isBrowser(['!electron', '!chrome'])) {
    cy.get('#h4')
    .should('have.css', 'font-size-adjust', '0.5')
  }
})

Filter

Only run commands in Chromium-based browser

it('has CSS reflections', () => {
  // if in Chromium-based browser (Chrome, Electron, etc...)
  // check css property was properly applied
  if (Cypress.isBrowser({ family: 'chromium' })) {
    cy.get('.header')
    .should('have.css', '-webkit-box-reflect', 'left')
  }
})

Only run on stable release in Chromium-based browser

it('test', () => {
  // true when in any stable release of a Chromium-based browser
  if (Cypress.isBrowser({ family: 'chromium', channel: 'stable' })) {
    // test some (hypothetical) scenario in chrome stable
  }
})

Only run on specific release channels of browsers

it('test', () => {
  // true when running in Chrome Canary
  // and dev releases of Firefox browser
  if (Cypress.isBrowser([
    { family: 'chromium', channel: 'canary' },
    { family: 'firefox', channel: 'dev' }
  ])) {
    // test some (hypothetical) scenario
  }
})

Notes

Test configuration: browser

If you want to target a test or suite to run or be excluded when run in a specific browser, we suggest passing the browser within the test configuration. The browser option accepts the same arguments as Cypress.isBrowser().

it('Download extension in Firefox', { browser: 'firefox' }, () => {
  cy.get('#dl-extension')
    .should('contain', 'Download Firefox Extension')
})
it('Show warning outside Chrome', {  browser: '!chrome' }, () => {
  cy.get('.browser-warning')
    .should('contain', 'For optimal viewing, use Chrome browser')
})

History

Version Changes
4.8.0 Expanded matcher and matchers arguments to assist in filtering browsers.
4.0.0 Added isBrowser command.

See also