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. |