describe('Feature Flags', () => { beforeEach(() => { cy.visit('/feature_flags') }) it('Create feature flag', () => { cy.get('h1').should('contain', 'Feature Flags') cy.get('[data-attr=new-feature-flag]').click() cy.get('[data-attr=feature-flag-key]').type('beta-feature').should('have.value', 'beta-feature') cy.get('[data-attr=feature-flag-description]') .type('This is a new feature.') .should('have.value', 'This is a new feature.') // select "add filter" and "property" cy.get('[data-attr=new-prop-filter-feature-flag-null-0-1').click() // select the first property cy.get('[data-attr=property-filter-dropdown]').click() cy.get('[data-attr=prop-filter-person-0]').click({ force: true }) // selects the first value cy.get('[data-attr=prop-val]').click() cy.get('[data-attr=prop-val-0]').click({ force: true }) cy.get('[data-attr=feature-flag-submit]').click() cy.get('.Toastify__toast-body').click() // clicking the toast gets you back to the list cy.get('[data-attr=feature-flag-table]').should('contain', 'beta-feature') cy.get('[data-attr=feature-flag-table]').should('not.contain', '%') // By default it's released to everyone, if a % is not specified cy.get('[data-attr=feature-flag-table]').should('contain', 'is_demo') cy.get('[data-attr=feature-flag-table] tr:first-child td:first-child').click() cy.get('[data-attr=feature-flag-key]').type('-updated').should('have.value', 'beta-feature-updated') cy.get('[data-attr=feature-flag-submit]').click() cy.get('.Toastify__toast-body').click() // clicking the toast gets you back to the list cy.get('[data-attr=feature-flag-table]').should('contain', 'beta-feature-updated') cy.get('[data-attr=usage]').click() cy.location().should((loc) => { expect(loc.pathname.toString()).to.contain('/insight') }) }) it('Delete feature flag', () => { cy.get('h1').should('contain', 'Feature Flags') cy.get('[data-attr=new-feature-flag]').click() cy.get('[data-attr=feature-flag-key]').type('to-be-deleted').should('have.value', 'to-be-deleted') cy.get('[data-attr=feature-flag-submit]').click() cy.get('.Toastify__toast-body').click() // clicking the toast gets you back to the list cy.get('[data-attr=feature-flag-table]').should('contain', 'to-be-deleted') cy.get('[data-row-key="to-be-deleted"]').click() cy.get('[data-attr=delete-flag]').click() cy.contains('Click to undo').should('exist') }) })