2.0.1 • Published 4 years ago

cypress-splitio v2.0.1

Weekly downloads
1
License
MIT
Repository
gitlab
Last release
4 years ago

cypress-splitio

npm Gitlab pipeline status

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

2.0.1

4 years ago

2.0.0

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago