get
and set
configuration options in your tests.
New to Cypress?
ScopeConfiguration set using
Cypress.config
is only in scope for the current spec file.Cypress runs each spec file in isolation: the browser is exited between specs. Configuration changed in one spec won’t be visible in other specs.
NoteNot all configuration values can be changed during runtime. See Notes below for details.
Syntax
Cypress.config() Cypress.config(name) Cypress.config(name, value) Cypress.config(object)
Arguments
name (String)
The name of the configuration to get or set.
value (String)
The value of the configuration to set.
object (Object)
Set multiple configuration options with an object literal.
Examples
No Arguments
Get all configuration options
{ "defaultCommandTimeout": 10000 }
Cypress.config() // => {defaultCommandTimeout: 10000, pageLoadTimeout: 30000, ...}
Name
Return just a single configuration option value
{ "pageLoadTimeout": 60000 }
Cypress.config('pageLoadTimeout') // => 60000
Name and Value
Change the values of your configuration options from within tests
ScopeRemember, any changes that you make to configuration using this API will only be in effect for the remainder of the tests in the same spec file.
{ "viewportWidth": 1280, "viewportHeight": 720 }
Cypress.config('viewportWidth', 800) Cypress.config('viewportWidth') // => 800
Object
Set multiple values by passing an object literal
{ "defaultCommandTimeout": 4000, "pageLoadTimeout": 30000, }
Cypress.config({ defaultCommandTimeout: 10000, viewportHeight: 900 }) Cypress.config() // => {defaultCommandTimeout: 10000, viewportHeight: 900, ...}
Notes
Not all config values can be changed at all times
Some configuration values cannot be changed while running a test. Anything that’s not directly under Cypress’s control - like timeouts, userAgent
, or environment variables - will be ignored at run-time.
Why is it Cypress.config
and not cy.config
?
As a rule of thumb anything you call from Cypress
affects global state. Anything you call from cy
affects local state.
Since the configuration added or changed by Cypress.config
is only in scope for the current spec file, you’d think that it should be cy.config
and not Cypress.config
…and you’d be right. The fact that Cypress.config
affects local state is an artifact of the API evolving over time: Cypress.config
used to affect global state—configuration added in one test spec file was available in other specs—but the Cypress team wisely made each spec run in isolation in 3.0.0
and by that time Cypress.config
was public API.
History
Version | Changes |
---|---|
0.12.6 |
Cypress.config added |
See also
- configuration
- The Environment Variable guide