cypress-splitio v2.0.1
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-splitioor
yarn add --dev cypress-splitioConfigure
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_HEREGetting 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