cypress-splitio
v2.0.1
Published
Execute your tests based on Split.io splits and treatments
Downloads
4
Maintainers
Readme
cypress-splitio
This plugin stores your toggles with treatments from split.io as environment variables so you can access them via Cypress.env()
. Also it allows you to store splits with treatments as fixtures
Installation
npm install --save-dev cypress-splitio
or
yarn add --dev cypress-splitio
Configure
Since this is a plugin, you will need to modify your file ./cypress/plugins/index.js
to look something like this:
module.exports = (on, config) => {
config = splitioPlugin(config)
return config
}
Here is an example of splits.json
structure
{
'feature-one': 'on',
'feature-two': 'off',
'feature-three': 'custom'
}
If you want to turn off fixture creation set fixture = false
.
module.exports = (on, config) => {
config = splitioPlugin(config, fixture = false)
return config
}
Getting splits and current treatments
Once you update your plugins config, you can now get all current splits via Cypress.env('split-name')
or via splits.json
fixture. Just specify a valid split environment SDK key like this:
npx cypress run --env SPLITIO_CONFIG=YOUR_SDK_KEY_HERE
Getting splits based on custom attributes
Use the following syntax if you need to get your split configuration based on custom attributes
npx cypress run --env SPLITIO_CONFIG='{"KEY":"YOUR_SDK_KEY_HERE","license":"beta"}'
Running tests based on splits
You can now have a different behavior in your test based on split environment variable:
describe( 'Dashboard page', () => {
it( '...', () => {
if(Cypress.env('split-one') === 'on') {
...
} else {
...
}
} );
} );
Or you can do the same with a fixture
describe( 'Dashboard page', () => {
it( '...', () => {
cy.fixture( 'splits' ).then( ( json ) => {
if(json['feature-one'] === 'on') {
...
} else {
...
}
} );
} );
} );
You can also use cypress-skip-test plugin to define when to execute or skip a test
describe( 'Dashboard page', () => {
it( '...', () => {
cy.skipOn(Cypress.env('split-two') === 'on');
} );
} );
Or like this
onlyOn(Cypress.env('split-two') === 'on', () => {
describe('foo', () => {
it('works', () => {...})
})
});
Contribute
Want to help or have a suggestion? Open a new ticket and we can discuss it or submit a pull request.
License
MIT